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

{
  int iVar1;
  d_print_template *pdVar2;
  d_print_mod *pdVar3;
  void *pvVar4;
  ulong uVar5;
  demangle_component_type dVar6;
  uint uVar7;
  uint uVar8;
  size_t sVar9;
  size_t sVar10;
  uint *puVar11;
  uint *puVar12;
  char *pcVar13;
  uint *__s;
  demangle_component *pdVar14;
  char cVar15;
  bool bVar16;
  undefined1 auStack_5b [3];
  char buf [25];
  
  if (mods == (d_print_mod *)0x0) {
    return;
  }
  iVar1 = dpi->demangle_failure;
joined_r0x004923f2:
  if (iVar1 != 0) {
    return;
  }
  if (mods->printed == 0) {
    pdVar14 = mods->mod;
    dVar6 = pdVar14->type;
    if (suffix == 0) {
      if (dVar6 - DEMANGLE_COMPONENT_RESTRICT_THIS < 0x34) {
        if ((0xd00000000001fU >> ((ulong)(dVar6 - DEMANGLE_COMPONENT_RESTRICT_THIS) & 0x3f) & 1) !=
            0) goto LAB_00492458;
        goto LAB_00492416;
      }
      mods->printed = 1;
      pdVar2 = dpi->templates;
      dpi->templates = mods->templates;
    }
    else {
LAB_00492416:
      mods->printed = 1;
      pdVar2 = dpi->templates;
      dpi->templates = mods->templates;
      if (dVar6 == DEMANGLE_COMPONENT_FUNCTION_TYPE) {
        d_print_function_type(dpi,options,(demangle_component *)((long)&pdVar14->u + 8),mods->next);
        dpi->templates = pdVar2;
        return;
      }
    }
    if (dVar6 == DEMANGLE_COMPONENT_ARRAY_TYPE) {
      d_print_array_type(dpi,options,(demangle_component *)&(pdVar14->u).s_name,mods->next);
      dpi->templates = pdVar2;
      return;
    }
    if (dVar6 == DEMANGLE_COMPONENT_LOCAL_NAME) {
      pdVar3 = dpi->modifiers;
      pdVar14 = (pdVar14->u).s_fixed.length;
      dpi->modifiers = (d_print_mod *)0x0;
      d_print_comp(dpi,options,pdVar14);
      dpi->modifiers = pdVar3;
      sVar9 = dpi->len;
      if ((options & 4U) == 0) {
        pcVar13 = "::";
        cVar15 = ':';
        while( true ) {
          if (sVar9 == 0xff) {
            pvVar4 = dpi->opaque;
            dpi->buf[0xff] = '\0';
            (*dpi->callback)(dpi->buf,0xff,pvVar4);
            dpi->flush_count = dpi->flush_count + 1;
            sVar9 = 0;
            sVar10 = 1;
          }
          else {
            sVar10 = sVar9 + 1;
          }
          pcVar13 = pcVar13 + 1;
          dpi->len = sVar10;
          dpi->buf[sVar9] = cVar15;
          dpi->last_char = cVar15;
          if (pcVar13 == "") break;
          cVar15 = *pcVar13;
          sVar9 = sVar10;
        }
      }
      else {
        sVar10 = sVar9 + 1;
        if (sVar9 == 0xff) {
          pvVar4 = dpi->opaque;
          dpi->buf[0xff] = '\0';
          (*dpi->callback)(dpi->buf,0xff,pvVar4);
          dpi->flush_count = dpi->flush_count + 1;
          sVar10 = 1;
          sVar9 = 0;
        }
        dpi->len = sVar10;
        dpi->buf[sVar9] = '.';
        dpi->last_char = '.';
      }
      pdVar14 = (mods->mod->u).s_extended_operator.name;
      dVar6 = pdVar14->type;
      if (dVar6 == DEMANGLE_COMPONENT_DEFAULT_ARG) {
        pcVar13 = "{default arg#";
        cVar15 = '{';
        sVar9 = dpi->len;
        while( true ) {
          pcVar13 = pcVar13 + 1;
          if (sVar9 == 0xff) {
            pvVar4 = dpi->opaque;
            dpi->buf[0xff] = '\0';
            (*dpi->callback)(dpi->buf,0xff,pvVar4);
            dpi->flush_count = dpi->flush_count + 1;
            sVar9 = 0;
            sVar10 = 1;
          }
          else {
            sVar10 = sVar9 + 1;
          }
          dpi->len = sVar10;
          dpi->buf[sVar9] = cVar15;
          dpi->last_char = cVar15;
          if (pcVar13 == "") break;
          cVar15 = *pcVar13;
          sVar9 = sVar10;
        }
        __s = (uint *)buf;
        sprintf((char *)__s,"%d",(ulong)((pdVar14->u).s_name.len + 1));
        puVar12 = __s;
        do {
          puVar11 = puVar12;
          uVar7 = *puVar11 + 0xfefefeff & ~*puVar11;
          uVar8 = uVar7 & 0x80808080;
          puVar12 = puVar11 + 1;
        } while (uVar8 == 0);
        bVar16 = (uVar7 & 0x8080) == 0;
        if (bVar16) {
          uVar8 = uVar8 >> 0x10;
        }
        if (bVar16) {
          puVar12 = (uint *)((long)puVar11 + 6);
        }
        sVar9 = dpi->len;
        pcVar13 = (char *)((long)puVar12 +
                          ((-3 - (ulong)CARRY1((byte)uVar8,(byte)uVar8)) - (long)__s));
        if (pcVar13 != (char *)0x0) {
          puVar12 = (uint *)((long)__s + (long)pcVar13);
          sVar10 = sVar9;
          do {
            cVar15 = (char)*__s;
            if (sVar10 == 0xff) {
              pvVar4 = dpi->opaque;
              dpi->buf[0xff] = '\0';
              auStack_5b[2] = cVar15;
              (*dpi->callback)(dpi->buf,0xff,pvVar4);
              dpi->flush_count = dpi->flush_count + 1;
              sVar9 = 1;
              sVar10 = 0;
              cVar15 = auStack_5b[2];
            }
            else {
              sVar9 = sVar10 + 1;
            }
            __s = (uint *)((long)__s + 1);
            dpi->len = sVar9;
            dpi->buf[sVar10] = cVar15;
            dpi->last_char = cVar15;
            sVar10 = sVar9;
          } while (puVar12 != __s);
        }
        pcVar13 = "}::";
        cVar15 = '}';
        while( true ) {
          if (sVar9 == 0xff) {
            pvVar4 = dpi->opaque;
            dpi->buf[0xff] = '\0';
            (*dpi->callback)(dpi->buf,0xff,pvVar4);
            dpi->flush_count = dpi->flush_count + 1;
            sVar9 = 0;
            sVar10 = 1;
          }
          else {
            sVar10 = sVar9 + 1;
          }
          pcVar13 = pcVar13 + 1;
          dpi->len = sVar10;
          dpi->buf[sVar9] = cVar15;
          dpi->last_char = cVar15;
          if (pcVar13 == "") break;
          cVar15 = *pcVar13;
          sVar9 = sVar10;
        }
        pdVar14 = (pdVar14->u).s_fixed.length;
        dVar6 = pdVar14->type;
      }
      if (dVar6 - DEMANGLE_COMPONENT_RESTRICT_THIS < 0x34) {
        uVar5 = 0xd00000000001fU >> ((ulong)(dVar6 - DEMANGLE_COMPONENT_RESTRICT_THIS) & 0x3f) & 1;
        while (uVar5 != 0) {
          pdVar14 = (pdVar14->u).s_fixed.length;
          uVar8 = pdVar14->type - DEMANGLE_COMPONENT_RESTRICT_THIS;
          if (0x33 < uVar8) break;
          uVar5 = 1L << ((byte)uVar8 & 0x3f) & 0xd00000000001f;
        }
      }
      d_print_comp(dpi,options,pdVar14);
      dpi->templates = pdVar2;
      return;
    }
    d_print_mod(dpi,options,pdVar14);
    dpi->templates = pdVar2;
  }
LAB_00492458:
  mods = mods->next;
  if (mods == (d_print_mod *)0x0) {
    return;
  }
  iVar1 = dpi->demangle_failure;
  goto joined_r0x004923f2;
}



void FUN_004923d0(long param_1,uint param_2,long *param_3,int param_4)

{
  undefined8 uVar1;
  undefined8 uVar2;
  undefined8 uVar3;
  ulong uVar4;
  int iVar5;
  uint uVar6;
  uint uVar7;
  long lVar8;
  long lVar9;
  uint *puVar10;
  uint *puVar11;
  char *pcVar12;
  uint *__s;
  undefined *puVar13;
  int *piVar14;
  undefined1 *puVar15;
  undefined1 uVar16;
  char cVar17;
  bool bVar18;
  undefined1 auStack_5b [43];
  
  if (param_3 == (long *)0x0) {
    return;
  }
  iVar5 = *(int *)(param_1 + 0x130);
joined_r0x004923f2:
  if (iVar5 != 0) {
    return;
  }
  if ((int)param_3[2] == 0) {
    piVar14 = (int *)param_3[1];
    iVar5 = *piVar14;
    if (param_4 == 0) {
      if (iVar5 - 0x1cU < 0x34) {
        if ((0xd00000000001fU >> ((ulong)(iVar5 - 0x1cU) & 0x3f) & 1) != 0) goto LAB_00492458;
        goto LAB_00492416;
      }
      *(undefined4 *)(param_3 + 2) = 1;
      uVar1 = *(undefined8 *)(param_1 + 0x120);
      *(long *)(param_1 + 0x120) = param_3[3];
    }
    else {
LAB_00492416:
      *(undefined4 *)(param_3 + 2) = 1;
      uVar1 = *(undefined8 *)(param_1 + 0x120);
      *(long *)(param_1 + 0x120) = param_3[3];
      if (iVar5 == 0x29) {
        FUN_004920b0(param_1,param_2,piVar14 + 4,*param_3);
        *(undefined8 *)(param_1 + 0x120) = uVar1;
        return;
      }
    }
    if (iVar5 == 0x2a) {
      FUN_00492840(param_1,param_2,piVar14 + 2,*param_3);
      *(undefined8 *)(param_1 + 0x120) = uVar1;
      return;
    }
    if (iVar5 == 2) {
      uVar2 = *(undefined8 *)(param_1 + 0x128);
      uVar3 = *(undefined8 *)(piVar14 + 2);
      *(undefined8 *)(param_1 + 0x128) = 0;
      FUN_004916e0(param_1,param_2,uVar3);
      *(undefined8 *)(param_1 + 0x128) = uVar2;
      lVar8 = *(long *)(param_1 + 0x100);
      if ((param_2 & 4) == 0) {
        puVar15 = &DAT_00589519;
        uVar16 = 0x3a;
        while( true ) {
          if (lVar8 == 0xff) {
            *(undefined1 *)(param_1 + 0xff) = 0;
            (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118));
            *(long *)(param_1 + 0x140) = *(long *)(param_1 + 0x140) + 1;
            lVar8 = 0;
            lVar9 = 1;
          }
          else {
            lVar9 = lVar8 + 1;
          }
          puVar15 = puVar15 + 1;
          *(long *)(param_1 + 0x100) = lVar9;
          *(undefined1 *)(param_1 + lVar8) = uVar16;
          *(undefined1 *)(param_1 + 0x108) = uVar16;
          if (puVar15 == &DAT_0058951b) break;
          uVar16 = *puVar15;
          lVar8 = lVar9;
        }
      }
      else {
        lVar9 = lVar8 + 1;
        if (lVar8 == 0xff) {
          *(undefined1 *)(param_1 + 0xff) = 0;
          (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118));
          *(long *)(param_1 + 0x140) = *(long *)(param_1 + 0x140) + 1;
          lVar9 = 1;
          lVar8 = 0;
        }
        *(long *)(param_1 + 0x100) = lVar9;
        *(undefined1 *)(param_1 + lVar8) = 0x2e;
        *(undefined1 *)(param_1 + 0x108) = 0x2e;
      }
      piVar14 = *(int **)(param_3[1] + 0x10);
      iVar5 = *piVar14;
      if (iVar5 == 0x46) {
        pcVar12 = "{default arg#";
        cVar17 = '{';
        lVar8 = *(long *)(param_1 + 0x100);
        while( true ) {
          pcVar12 = pcVar12 + 1;
          if (lVar8 == 0xff) {
            *(undefined1 *)(param_1 + 0xff) = 0;
            (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118));
            *(long *)(param_1 + 0x140) = *(long *)(param_1 + 0x140) + 1;
            lVar8 = 0;
            lVar9 = 1;
          }
          else {
            lVar9 = lVar8 + 1;
          }
          *(long *)(param_1 + 0x100) = lVar9;
          *(char *)(param_1 + lVar8) = cVar17;
          *(char *)(param_1 + 0x108) = cVar17;
          if (pcVar12 == "") break;
          cVar17 = *pcVar12;
          lVar8 = lVar9;
        }
        __s = (uint *)(auStack_5b + 3);
        sprintf((char *)__s,"%d",(ulong)(piVar14[4] + 1));
        puVar11 = __s;
        do {
          puVar10 = puVar11;
          uVar6 = *puVar10 + 0xfefefeff & ~*puVar10;
          uVar7 = uVar6 & 0x80808080;
          puVar11 = puVar10 + 1;
        } while (uVar7 == 0);
        bVar18 = (uVar6 & 0x8080) == 0;
        if (bVar18) {
          uVar7 = uVar7 >> 0x10;
        }
        if (bVar18) {
          puVar11 = (uint *)((long)puVar10 + 6);
        }
        lVar8 = *(long *)(param_1 + 0x100);
        pcVar12 = (char *)((long)puVar11 +
                          ((-3 - (ulong)CARRY1((byte)uVar7,(byte)uVar7)) - (long)__s));
        if (pcVar12 != (char *)0x0) {
          puVar11 = (uint *)((long)__s + (long)pcVar12);
          lVar9 = lVar8;
          do {
            cVar17 = (char)*__s;
            if (lVar9 == 0xff) {
              *(undefined1 *)(param_1 + 0xff) = 0;
              auStack_5b[2] = cVar17;
              (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118));
              *(long *)(param_1 + 0x140) = *(long *)(param_1 + 0x140) + 1;
              lVar8 = 1;
              lVar9 = 0;
              cVar17 = auStack_5b[2];
            }
            else {
              lVar8 = lVar9 + 1;
            }
            __s = (uint *)((long)__s + 1);
            *(long *)(param_1 + 0x100) = lVar8;
            *(char *)(param_1 + lVar9) = cVar17;
            *(char *)(param_1 + 0x108) = cVar17;
            lVar9 = lVar8;
          } while (puVar11 != __s);
        }
        puVar13 = &DAT_00589518;
        uVar16 = 0x7d;
        while( true ) {
          if (lVar8 == 0xff) {
            *(undefined1 *)(param_1 + 0xff) = 0;
            (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118));
            *(long *)(param_1 + 0x140) = *(long *)(param_1 + 0x140) + 1;
            lVar8 = 0;
            lVar9 = 1;
          }
          else {
            lVar9 = lVar8 + 1;
          }
          puVar13 = puVar13 + 1;
          *(long *)(param_1 + 0x100) = lVar9;
          *(undefined1 *)(param_1 + lVar8) = uVar16;
          *(undefined1 *)(param_1 + 0x108) = uVar16;
          if (puVar13 == &DAT_0058951b) break;
          uVar16 = *puVar13;
          lVar8 = lVar9;
        }
        piVar14 = *(int **)(piVar14 + 2);
        iVar5 = *piVar14;
      }
      if (iVar5 - 0x1cU < 0x34) {
        uVar4 = 0xd00000000001fU >> ((ulong)(iVar5 - 0x1cU) & 0x3f) & 1;
        while (uVar4 != 0) {
          piVar14 = *(int **)(piVar14 + 2);
          if (0x33 < *piVar14 - 0x1cU) break;
          uVar4 = 1L << ((byte)(*piVar14 - 0x1cU) & 0x3f) & 0xd00000000001f;
        }
      }
      FUN_004916e0(param_1,param_2,piVar14);
      *(undefined8 *)(param_1 + 0x120) = uVar1;
      return;
    }
    FUN_00491770(param_1,param_2);
    *(undefined8 *)(param_1 + 0x120) = uVar1;
  }
LAB_00492458:
  param_3 = (long *)*param_3;
  if (param_3 == (long *)0x0) {
    return;
  }
  iVar5 = *(int *)(param_1 + 0x130);
  goto joined_r0x004923f2;
}


TEST RDX,RDX
JZ 0x00492831
PUSH R15
PUSH R14
PUSH R13
PUSH R12
PUSH RBP
MOV RBP,RDI
PUSH RBX
SUB RSP,0x38
MOV EDI,dword ptr [RDI + 0x130]
TEST EDI,EDI
JNZ 0x004924bb
MOV R14D,ESI
MOV RBX,RDX
MOV R13D,ECX
MOV R15,0xd00000000001f
JMP 0x0049246a
BT R15,RCX
JC 0x00492458
MOV RCX,qword ptr [RBX + 0x18]
MOV dword ptr [RBX + 0x10],0x1
MOV R12,qword ptr [RBP + 0x120]
MOV qword ptr [RBP + 0x120],RCX
CMP EAX,0x29
JZ 0x004924ca
CMP EAX,0x2a
JZ 0x004924a2
CMP EAX,0x2
JZ 0x004924f2
MOV ESI,R14D
MOV RDI,RBP
CALL 0x00491770
MOV qword ptr [RBP + 0x120],R12
MOV RBX,qword ptr [RBX]
TEST RBX,RBX
JZ 0x004924bb
MOV EDX,dword ptr [RBP + 0x130]
TEST EDX,EDX
JNZ 0x004924bb
MOV EAX,dword ptr [RBX + 0x10]
TEST EAX,EAX
JNZ 0x00492458
MOV RDX,qword ptr [RBX + 0x8]
MOV EAX,dword ptr [RDX]
TEST R13D,R13D
JNZ 0x00492416
LEA ECX,[RAX + -0x1c]
CMP ECX,0x33
JBE 0x00492410
MOV RCX,qword ptr [RBX + 0x18]
MOV dword ptr [RBX + 0x10],0x1
MOV R12,qword ptr [RBP + 0x120]
MOV qword ptr [RBP + 0x120],RCX
CMP EAX,0x2a
JNZ 0x0049243d
MOV RCX,qword ptr [RBX]
ADD RDX,0x8
MOV ESI,R14D
MOV RDI,RBP
CALL 0x00492840
MOV qword ptr [RBP + 0x120],R12
ADD RSP,0x38
POP RBX
POP RBP
POP R12
POP R13
POP R14
POP R15
RET
MOV RCX,qword ptr [RBX]
MOV ESI,R14D
MOV RDI,RBP
ADD RDX,0x10
CALL 0x004920b0
MOV qword ptr [RBP + 0x120],R12
ADD RSP,0x38
POP RBX
POP RBP
POP R12
POP R13
POP R14
POP R15
RET
MOV R13,qword ptr [RBP + 0x128]
MOV RDX,qword ptr [RDX + 0x8]
MOV ESI,R14D
MOV RDI,RBP
MOV qword ptr [RBP + 0x128],0x0
CALL 0x004916e0
MOV qword ptr [RBP + 0x128],R13
MOV RAX,qword ptr [RBP + 0x100]
TEST R14B,0x4
JZ 0x004925e6
LEA RDX,[RAX + 0x1]
CMP RAX,0xff
JNZ 0x00492562
MOV RDX,qword ptr [RBP + 0x118]
MOV byte ptr [RBP + 0xff],0x0
MOV ESI,0xff
MOV RDI,RBP
CALL qword ptr [RBP + 0x110]
ADD qword ptr [RBP + 0x140],0x1
MOV EDX,0x1
XOR EAX,EAX
MOV qword ptr [RBP + 0x100],RDX
MOV byte ptr [RBP + RAX*0x1],0x2e
MOV byte ptr [RBP + 0x108],0x2e
MOV RAX,qword ptr [RBX + 0x8]
MOV R13,qword ptr [RAX + 0x10]
MOV EAX,dword ptr [R13]
CMP EAX,0x46
JZ 0x00492668
SUB EAX,0x1c
CMP EAX,0x33
JA 0x004925c2
MOV RDX,0xd00000000001f
BT RDX,RAX
JNC 0x004925c2
MOV EAX,0x1
MOV R13,qword ptr [R13 + 0x8]
MOV EDI,dword ptr [R13]
LEA ECX,[RDI + -0x1c]
CMP ECX,0x33
JA 0x004925c2
MOV RSI,RAX
SHL RSI,CL
TEST RSI,RDX
JNZ 0x004925a7
MOV RDX,R13
MOV ESI,R14D
MOV RDI,RBP
CALL 0x004916e0
MOV qword ptr [RBP + 0x120],R12
ADD RSP,0x38
POP RBX
POP RBP
POP R12
POP R13
POP R14
POP R15
RET
LEA R13,[0x589519]
MOV R15D,0x3a
LEA RCX,[R13 + 0x2]
JMP 0x0049262c
MOV RDX,RAX
ADD RAX,0x1
ADD R13,0x1
MOV qword ptr [RBP + 0x100],RAX
MOV byte ptr [RBP + RDX*0x1],R15B
MOV byte ptr [RBP + 0x108],R15B
CMP RCX,R13
JZ 0x00492575
MOVZX R15D,byte ptr [R13]
CMP RAX,0xff
JNZ 0x00492600
MOV RDX,qword ptr [RBP + 0x118]
MOV byte ptr [RBP + 0xff],0x0
MOV ESI,0xff
MOV RDI,RBP
CALL qword ptr [RBP + 0x110]
ADD qword ptr [RBP + 0x140],0x1
XOR EDX,EDX
MOV EAX,0x1
LEA RCX,[0x58951b]
JMP 0x00492607
LEA RBX,[0x58950b]
MOV RAX,qword ptr [RBP + 0x100]
MOV R15D,0x7b
LEA RCX,[RBX + 0xc]
JMP 0x004926a9
MOV RDX,RAX
ADD RAX,0x1
MOV qword ptr [RBP + 0x100],RAX
MOV byte ptr [RBP + RDX*0x1],R15B
MOV byte ptr [RBP + 0x108],R15B
CMP RCX,RBX
JZ 0x004926e5
MOVZX R15D,byte ptr [RBX]
ADD RBX,0x1
CMP RAX,0xff
JNZ 0x00492682
MOV RDX,qword ptr [RBP + 0x118]
MOV byte ptr [RBP + 0xff],0x0
MOV ESI,0xff
MOV RDI,RBP
CALL qword ptr [RBP + 0x110]
ADD qword ptr [RBP + 0x140],0x1
XOR EDX,EDX
MOV EAX,0x1
LEA RCX,[0x589517]
JMP 0x00492689
MOV EAX,dword ptr [R13 + 0x10]
LEA RBX,[RSP + 0x10]
LEA RSI,[0x57e9d1]
MOV RDI,RBX
LEA EDX,[RAX + 0x1]
XOR EAX,EAX
CALL 0x00177590
MOV RDX,RBX
MOV ECX,dword ptr [RDX]
ADD RDX,0x4
LEA EAX,[RCX + -0x1010101]
NOT ECX
AND EAX,ECX
AND EAX,0x80808080
JZ 0x00492705
MOV ECX,EAX
SHR ECX,0x10
TEST EAX,0x8080
CMOVZ EAX,ECX
LEA RCX,[RDX + 0x2]
CMOVZ RDX,RCX
MOV ESI,EAX
ADD SIL,AL
MOV RAX,qword ptr [RBP + 0x100]
SBB RDX,0x3
SUB RDX,RBX
JZ 0x004927ae
LEA R15,[RBX + RDX*0x1]
JMP 0x0049276d
MOV RDX,RAX
ADD RAX,0x1
ADD RBX,0x1
MOV qword ptr [RBP + 0x100],RAX
MOV byte ptr [RBP + RDX*0x1],CL
MOV byte ptr [RBP + 0x108],CL
CMP R15,RBX
JZ 0x004927ae
MOVZX ECX,byte ptr [RBX]
CMP RAX,0xff
JNZ 0x0049274c
MOV byte ptr [RSP + 0xf],CL
MOV RDX,qword ptr [RBP + 0x118]
MOV ESI,0xff
MOV RDI,RBP
MOV byte ptr [RBP + 0xff],0x0
CALL qword ptr [RBP + 0x110]
ADD qword ptr [RBP + 0x140],0x1
MOV EAX,0x1
XOR EDX,EDX
MOVZX ECX,byte ptr [RSP + 0xf]
JMP 0x00492753
LEA RBX,[0x589518]
MOV R15D,0x7d
LEA RCX,[RBX + 0x3]
JMP 0x004927e8
MOV RDX,RAX
ADD RAX,0x1
ADD RBX,0x1
MOV qword ptr [RBP + 0x100],RAX
MOV byte ptr [RBP + RDX*0x1],R15B
MOV byte ptr [RBP + 0x108],R15B
CMP RCX,RBX
JZ 0x00492824
MOVZX R15D,byte ptr [RBX]
CMP RAX,0xff
JNZ 0x004927c1
MOV RDX,qword ptr [RBP + 0x118]
MOV byte ptr [RBP + 0xff],0x0
MOV ESI,0xff
MOV RDI,RBP
CALL qword ptr [RBP + 0x110]
ADD qword ptr [RBP + 0x140],0x1
XOR EDX,EDX
MOV EAX,0x1
LEA RCX,[0x58951b]
JMP 0x004927c8
MOV R13,qword ptr [R13 + 0x8]
MOV EAX,dword ptr [R13]
JMP 0x0049258a
RET
(translation_unit "void FUN_004923d0(long param_1,uint param_2,long *param_3,int param_4)\n\n{\n  undefined8 uVar1;\n  undefined8 uVar2;\n  undefined8 uVar3;\n  ulong uVar4;\n  int iVar5;\n  uint uVar6;\n  uint uVar7;\n  long lVar8;\n  long lVar9;\n  uint *puVar10;\n  uint *puVar11;\n  char *pcVar12;\n  uint *__s;\n  undefined *puVar13;\n  int *piVar14;\n  undefined1 *puVar15;\n  undefined1 uVar16;\n  char cVar17;\n  bool bVar18;\n  undefined1 auStack_5b [43];\n  \n  if (param_3 == (long *)0x0) {\n    return;\n  }\n  iVar5 = *(int *)(param_1 + 0x130);\njoined_r0x004923f2:\n  if (iVar5 != 0) {\n    return;\n  }\n  if ((int)param_3[2] == 0) {\n    piVar14 = (int *)param_3[1];\n    iVar5 = *piVar14;\n    if (param_4 == 0) {\n      if (iVar5 - 0x1cU < 0x34) {\n        if ((0xd00000000001fU >> ((ulong)(iVar5 - 0x1cU) & 0x3f) & 1) != 0) goto LAB_00492458;\n        goto LAB_00492416;\n      }\n      *(undefined4 *)(param_3 + 2) = 1;\n      uVar1 = *(undefined8 *)(param_1 + 0x120);\n      *(long *)(param_1 + 0x120) = param_3[3];\n    }\n    else {\nLAB_00492416:\n      *(undefined4 *)(param_3 + 2) = 1;\n      uVar1 = *(undefined8 *)(param_1 + 0x120);\n      *(long *)(param_1 + 0x120) = param_3[3];\n      if (iVar5 == 0x29) {\n        FUN_004920b0(param_1,param_2,piVar14 + 4,*param_3);\n        *(undefined8 *)(param_1 + 0x120) = uVar1;\n        return;\n      }\n    }\n    if (iVar5 == 0x2a) {\n      FUN_00492840(param_1,param_2,piVar14 + 2,*param_3);\n      *(undefined8 *)(param_1 + 0x120) = uVar1;\n      return;\n    }\n    if (iVar5 == 2) {\n      uVar2 = *(undefined8 *)(param_1 + 0x128);\n      uVar3 = *(undefined8 *)(piVar14 + 2);\n      *(undefined8 *)(param_1 + 0x128) = 0;\n      FUN_004916e0(param_1,param_2,uVar3);\n      *(undefined8 *)(param_1 + 0x128) = uVar2;\n      lVar8 = *(long *)(param_1 + 0x100);\n      if ((param_2 & 4) == 0) {\n        puVar15 = &DAT_00589519;\n        uVar16 = 0x3a;\n        while( true ) {\n          if (lVar8 == 0xff) {\n            *(undefined1 *)(param_1 + 0xff) = 0;\n            (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118));\n            *(long *)(param_1 + 0x140) = *(long *)(param_1 + 0x140) + 1;\n            lVar8 = 0;\n            lVar9 = 1;\n          }\n          else {\n            lVar9 = lVar8 + 1;\n          }\n          puVar15 = puVar15 + 1;\n          *(long *)(param_1 + 0x100) = lVar9;\n          *(undefined1 *)(param_1 + lVar8) = uVar16;\n          *(undefined1 *)(param_1 + 0x108) = uVar16;\n          if (puVar15 == &DAT_0058951b) break;\n          uVar16 = *puVar15;\n          lVar8 = lVar9;\n        }\n      }\n      else {\n        lVar9 = lVar8 + 1;\n        if (lVar8 == 0xff) {\n          *(undefined1 *)(param_1 + 0xff) = 0;\n          (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118));\n          *(long *)(param_1 + 0x140) = *(long *)(param_1 + 0x140) + 1;\n          lVar9 = 1;\n          lVar8 = 0;\n        }\n        *(long *)(param_1 + 0x100) = lVar9;\n        *(undefined1 *)(param_1 + lVar8) = 0x2e;\n        *(undefined1 *)(param_1 + 0x108) = 0x2e;\n      }\n      piVar14 = *(int **)(param_3[1] + 0x10);\n      iVar5 = *piVar14;\n      if (iVar5 == 0x46) {\n        pcVar12 = "{default arg#";\n        cVar17 = '{';\n        lVar8 = *(long *)(param_1 + 0x100);\n        while( true ) {\n          pcVar12 = pcVar12 + 1;\n          if (lVar8 == 0xff) {\n            *(undefined1 *)(param_1 + 0xff) = 0;\n            (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118));\n            *(long *)(param_1 + 0x140) = *(long *)(param_1 + 0x140) + 1;\n            lVar8 = 0;\n            lVar9 = 1;\n          }\n          else {\n            lVar9 = lVar8 + 1;\n          }\n          *(long *)(param_1 + 0x100) = lVar9;\n          *(char *)(param_1 + lVar8) = cVar17;\n          *(char *)(param_1 + 0x108) = cVar17;\n          if (pcVar12 == "") break;\n          cVar17 = *pcVar12;\n          lVar8 = lVar9;\n        }\n        __s = (uint *)(auStack_5b + 3);\n        sprintf((char *)__s,"%d",(ulong)(piVar14[4] + 1));\n        puVar11 = __s;\n        do {\n          puVar10 = puVar11;\n          uVar6 = *puVar10 + 0xfefefeff & ~*puVar10;\n          uVar7 = uVar6 & 0x80808080;\n          puVar11 = puVar10 + 1;\n        } while (uVar7 == 0);\n        bVar18 = (uVar6 & 0x8080) == 0;\n        if (bVar18) {\n          uVar7 = uVar7 >> 0x10;\n        }\n        if (bVar18) {\n          puVar11 = (uint *)((long)puVar10 + 6);\n        }\n        lVar8 = *(long *)(param_1 + 0x100);\n        pcVar12 = (char *)((long)puVar11 +\n                          ((-3 - (ulong)CARRY1((byte)uVar7,(byte)uVar7)) - (long)__s));\n        if (pcVar12 != (char *)0x0) {\n          puVar11 = (uint *)((long)__s + (long)pcVar12);\n          lVar9 = lVar8;\n          do {\n            cVar17 = (char)*__s;\n            if (lVar9 == 0xff) {\n              *(undefined1 *)(param_1 + 0xff) = 0;\n              auStack_5b[2] = cVar17;\n              (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118));\n              *(long *)(param_1 + 0x140) = *(long *)(param_1 + 0x140) + 1;\n              lVar8 = 1;\n              lVar9 = 0;\n              cVar17 = auStack_5b[2];\n            }\n            else {\n              lVar8 = lVar9 + 1;\n            }\n            __s = (uint *)((long)__s + 1);\n            *(long *)(param_1 + 0x100) = lVar8;\n            *(char *)(param_1 + lVar9) = cVar17;\n            *(char *)(param_1 + 0x108) = cVar17;\n            lVar9 = lVar8;\n          } while (puVar11 != __s);\n        }\n        puVar13 = &DAT_00589518;\n        uVar16 = 0x7d;\n        while( true ) {\n          if (lVar8 == 0xff) {\n            *(undefined1 *)(param_1 + 0xff) = 0;\n            (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118));\n            *(long *)(param_1 + 0x140) = *(long *)(param_1 + 0x140) + 1;\n            lVar8 = 0;\n            lVar9 = 1;\n          }\n          else {\n            lVar9 = lVar8 + 1;\n          }\n          puVar13 = puVar13 + 1;\n          *(long *)(param_1 + 0x100) = lVar9;\n          *(undefined1 *)(param_1 + lVar8) = uVar16;\n          *(undefined1 *)(param_1 + 0x108) = uVar16;\n          if (puVar13 == &DAT_0058951b) break;\n          uVar16 = *puVar13;\n          lVar8 = lVar9;\n        }\n        piVar14 = *(int **)(piVar14 + 2);\n        iVar5 = *piVar14;\n      }\n      if (iVar5 - 0x1cU < 0x34) {\n        uVar4 = 0xd00000000001fU >> ((ulong)(iVar5 - 0x1cU) & 0x3f) & 1;\n        while (uVar4 != 0) {\n          piVar14 = *(int **)(piVar14 + 2);\n          if (0x33 < *piVar14 - 0x1cU) break;\n          uVar4 = 1L << ((byte)(*piVar14 - 0x1cU) & 0x3f) & 0xd00000000001f;\n        }\n      }\n      FUN_004916e0(param_1,param_2,piVar14);\n      *(undefined8 *)(param_1 + 0x120) = uVar1;\n      return;\n    }\n    FUN_00491770(param_1,param_2);\n    *(undefined8 *)(param_1 + 0x120) = uVar1;\n  }\nLAB_00492458:\n  param_3 = (long *)*param_3;\n  if (param_3 == (long *)0x0) {\n    return;\n  }\n  iVar5 = *(int *)(param_1 + 0x130);\n  goto joined_r0x004923f2;\n}\n\n" (function_definition "void FUN_004923d0(long param_1,uint param_2,long *param_3,int param_4)\n\n{\n  undefined8 uVar1;\n  undefined8 uVar2;\n  undefined8 uVar3;\n  ulong uVar4;\n  int iVar5;\n  uint uVar6;\n  uint uVar7;\n  long lVar8;\n  long lVar9;\n  uint *puVar10;\n  uint *puVar11;\n  char *pcVar12;\n  uint *__s;\n  undefined *puVar13;\n  int *piVar14;\n  undefined1 *puVar15;\n  undefined1 uVar16;\n  char cVar17;\n  bool bVar18;\n  undefined1 auStack_5b [43];\n  \n  if (param_3 == (long *)0x0) {\n    return;\n  }\n  iVar5 = *(int *)(param_1 + 0x130);\njoined_r0x004923f2:\n  if (iVar5 != 0) {\n    return;\n  }\n  if ((int)param_3[2] == 0) {\n    piVar14 = (int *)param_3[1];\n    iVar5 = *piVar14;\n    if (param_4 == 0) {\n      if (iVar5 - 0x1cU < 0x34) {\n        if ((0xd00000000001fU >> ((ulong)(iVar5 - 0x1cU) & 0x3f) & 1) != 0) goto LAB_00492458;\n        goto LAB_00492416;\n      }\n      *(undefined4 *)(param_3 + 2) = 1;\n      uVar1 = *(undefined8 *)(param_1 + 0x120);\n      *(long *)(param_1 + 0x120) = param_3[3];\n    }\n    else {\nLAB_00492416:\n      *(undefined4 *)(param_3 + 2) = 1;\n      uVar1 = *(undefined8 *)(param_1 + 0x120);\n      *(long *)(param_1 + 0x120) = param_3[3];\n      if (iVar5 == 0x29) {\n        FUN_004920b0(param_1,param_2,piVar14 + 4,*param_3);\n        *(undefined8 *)(param_1 + 0x120) = uVar1;\n        return;\n      }\n    }\n    if (iVar5 == 0x2a) {\n      FUN_00492840(param_1,param_2,piVar14 + 2,*param_3);\n      *(undefined8 *)(param_1 + 0x120) = uVar1;\n      return;\n    }\n    if (iVar5 == 2) {\n      uVar2 = *(undefined8 *)(param_1 + 0x128);\n      uVar3 = *(undefined8 *)(piVar14 + 2);\n      *(undefined8 *)(param_1 + 0x128) = 0;\n      FUN_004916e0(param_1,param_2,uVar3);\n      *(undefined8 *)(param_1 + 0x128) = uVar2;\n      lVar8 = *(long *)(param_1 + 0x100);\n      if ((param_2 & 4) == 0) {\n        puVar15 = &DAT_00589519;\n        uVar16 = 0x3a;\n        while( true ) {\n          if (lVar8 == 0xff) {\n            *(undefined1 *)(param_1 + 0xff) = 0;\n            (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118));\n            *(long *)(param_1 + 0x140) = *(long *)(param_1 + 0x140) + 1;\n            lVar8 = 0;\n            lVar9 = 1;\n          }\n          else {\n            lVar9 = lVar8 + 1;\n          }\n          puVar15 = puVar15 + 1;\n          *(long *)(param_1 + 0x100) = lVar9;\n          *(undefined1 *)(param_1 + lVar8) = uVar16;\n          *(undefined1 *)(param_1 + 0x108) = uVar16;\n          if (puVar15 == &DAT_0058951b) break;\n          uVar16 = *puVar15;\n          lVar8 = lVar9;\n        }\n      }\n      else {\n        lVar9 = lVar8 + 1;\n        if (lVar8 == 0xff) {\n          *(undefined1 *)(param_1 + 0xff) = 0;\n          (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118));\n          *(long *)(param_1 + 0x140) = *(long *)(param_1 + 0x140) + 1;\n          lVar9 = 1;\n          lVar8 = 0;\n        }\n        *(long *)(param_1 + 0x100) = lVar9;\n        *(undefined1 *)(param_1 + lVar8) = 0x2e;\n        *(undefined1 *)(param_1 + 0x108) = 0x2e;\n      }\n      piVar14 = *(int **)(param_3[1] + 0x10);\n      iVar5 = *piVar14;\n      if (iVar5 == 0x46) {\n        pcVar12 = "{default arg#";\n        cVar17 = '{';\n        lVar8 = *(long *)(param_1 + 0x100);\n        while( true ) {\n          pcVar12 = pcVar12 + 1;\n          if (lVar8 == 0xff) {\n            *(undefined1 *)(param_1 + 0xff) = 0;\n            (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118));\n            *(long *)(param_1 + 0x140) = *(long *)(param_1 + 0x140) + 1;\n            lVar8 = 0;\n            lVar9 = 1;\n          }\n          else {\n            lVar9 = lVar8 + 1;\n          }\n          *(long *)(param_1 + 0x100) = lVar9;\n          *(char *)(param_1 + lVar8) = cVar17;\n          *(char *)(param_1 + 0x108) = cVar17;\n          if (pcVar12 == "") break;\n          cVar17 = *pcVar12;\n          lVar8 = lVar9;\n        }\n        __s = (uint *)(auStack_5b + 3);\n        sprintf((char *)__s,"%d",(ulong)(piVar14[4] + 1));\n        puVar11 = __s;\n        do {\n          puVar10 = puVar11;\n          uVar6 = *puVar10 + 0xfefefeff & ~*puVar10;\n          uVar7 = uVar6 & 0x80808080;\n          puVar11 = puVar10 + 1;\n        } while (uVar7 == 0);\n        bVar18 = (uVar6 & 0x8080) == 0;\n        if (bVar18) {\n          uVar7 = uVar7 >> 0x10;\n        }\n        if (bVar18) {\n          puVar11 = (uint *)((long)puVar10 + 6);\n        }\n        lVar8 = *(long *)(param_1 + 0x100);\n        pcVar12 = (char *)((long)puVar11 +\n                          ((-3 - (ulong)CARRY1((byte)uVar7,(byte)uVar7)) - (long)__s));\n        if (pcVar12 != (char *)0x0) {\n          puVar11 = (uint *)((long)__s + (long)pcVar12);\n          lVar9 = lVar8;\n          do {\n            cVar17 = (char)*__s;\n            if (lVar9 == 0xff) {\n              *(undefined1 *)(param_1 + 0xff) = 0;\n              auStack_5b[2] = cVar17;\n              (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118));\n              *(long *)(param_1 + 0x140) = *(long *)(param_1 + 0x140) + 1;\n              lVar8 = 1;\n              lVar9 = 0;\n              cVar17 = auStack_5b[2];\n            }\n            else {\n              lVar8 = lVar9 + 1;\n            }\n            __s = (uint *)((long)__s + 1);\n            *(long *)(param_1 + 0x100) = lVar8;\n            *(char *)(param_1 + lVar9) = cVar17;\n            *(char *)(param_1 + 0x108) = cVar17;\n            lVar9 = lVar8;\n          } while (puVar11 != __s);\n        }\n        puVar13 = &DAT_00589518;\n        uVar16 = 0x7d;\n        while( true ) {\n          if (lVar8 == 0xff) {\n            *(undefined1 *)(param_1 + 0xff) = 0;\n            (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118));\n            *(long *)(param_1 + 0x140) = *(long *)(param_1 + 0x140) + 1;\n            lVar8 = 0;\n            lVar9 = 1;\n          }\n          else {\n            lVar9 = lVar8 + 1;\n          }\n          puVar13 = puVar13 + 1;\n          *(long *)(param_1 + 0x100) = lVar9;\n          *(undefined1 *)(param_1 + lVar8) = uVar16;\n          *(undefined1 *)(param_1 + 0x108) = uVar16;\n          if (puVar13 == &DAT_0058951b) break;\n          uVar16 = *puVar13;\n          lVar8 = lVar9;\n        }\n        piVar14 = *(int **)(piVar14 + 2);\n        iVar5 = *piVar14;\n      }\n      if (iVar5 - 0x1cU < 0x34) {\n        uVar4 = 0xd00000000001fU >> ((ulong)(iVar5 - 0x1cU) & 0x3f) & 1;\n        while (uVar4 != 0) {\n          piVar14 = *(int **)(piVar14 + 2);\n          if (0x33 < *piVar14 - 0x1cU) break;\n          uVar4 = 1L << ((byte)(*piVar14 - 0x1cU) & 0x3f) & 0xd00000000001f;\n        }\n      }\n      FUN_004916e0(param_1,param_2,piVar14);\n      *(undefined8 *)(param_1 + 0x120) = uVar1;\n      return;\n    }\n    FUN_00491770(param_1,param_2);\n    *(undefined8 *)(param_1 + 0x120) = uVar1;\n  }\nLAB_00492458:\n  param_3 = (long *)*param_3;\n  if (param_3 == (long *)0x0) {\n    return;\n  }\n  iVar5 = *(int *)(param_1 + 0x130);\n  goto joined_r0x004923f2;\n}" primitive_type (function_declarator "FUN_004923d0(long param_1,uint param_2,long *param_3,int param_4)" identifier (parameter_list "(long param_1,uint param_2,long *param_3,int param_4)" ( (parameter_declaration "long param_1" (sized_type_specifier "long" long) identifier) , (parameter_declaration "uint param_2" type_identifier identifier) , (parameter_declaration "long *param_3" (sized_type_specifier "long" long) (pointer_declarator "*param_3" * identifier)) , (parameter_declaration "int param_4" primitive_type identifier) ))) (compound_statement "{\n  undefined8 uVar1;\n  undefined8 uVar2;\n  undefined8 uVar3;\n  ulong uVar4;\n  int iVar5;\n  uint uVar6;\n  uint uVar7;\n  long lVar8;\n  long lVar9;\n  uint *puVar10;\n  uint *puVar11;\n  char *pcVar12;\n  uint *__s;\n  undefined *puVar13;\n  int *piVar14;\n  undefined1 *puVar15;\n  undefined1 uVar16;\n  char cVar17;\n  bool bVar18;\n  undefined1 auStack_5b [43];\n  \n  if (param_3 == (long *)0x0) {\n    return;\n  }\n  iVar5 = *(int *)(param_1 + 0x130);\njoined_r0x004923f2:\n  if (iVar5 != 0) {\n    return;\n  }\n  if ((int)param_3[2] == 0) {\n    piVar14 = (int *)param_3[1];\n    iVar5 = *piVar14;\n    if (param_4 == 0) {\n      if (iVar5 - 0x1cU < 0x34) {\n        if ((0xd00000000001fU >> ((ulong)(iVar5 - 0x1cU) & 0x3f) & 1) != 0) goto LAB_00492458;\n        goto LAB_00492416;\n      }\n      *(undefined4 *)(param_3 + 2) = 1;\n      uVar1 = *(undefined8 *)(param_1 + 0x120);\n      *(long *)(param_1 + 0x120) = param_3[3];\n    }\n    else {\nLAB_00492416:\n      *(undefined4 *)(param_3 + 2) = 1;\n      uVar1 = *(undefined8 *)(param_1 + 0x120);\n      *(long *)(param_1 + 0x120) = param_3[3];\n      if (iVar5 == 0x29) {\n        FUN_004920b0(param_1,param_2,piVar14 + 4,*param_3);\n        *(undefined8 *)(param_1 + 0x120) = uVar1;\n        return;\n      }\n    }\n    if (iVar5 == 0x2a) {\n      FUN_00492840(param_1,param_2,piVar14 + 2,*param_3);\n      *(undefined8 *)(param_1 + 0x120) = uVar1;\n      return;\n    }\n    if (iVar5 == 2) {\n      uVar2 = *(undefined8 *)(param_1 + 0x128);\n      uVar3 = *(undefined8 *)(piVar14 + 2);\n      *(undefined8 *)(param_1 + 0x128) = 0;\n      FUN_004916e0(param_1,param_2,uVar3);\n      *(undefined8 *)(param_1 + 0x128) = uVar2;\n      lVar8 = *(long *)(param_1 + 0x100);\n      if ((param_2 & 4) == 0) {\n        puVar15 = &DAT_00589519;\n        uVar16 = 0x3a;\n        while( true ) {\n          if (lVar8 == 0xff) {\n            *(undefined1 *)(param_1 + 0xff) = 0;\n            (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118));\n            *(long *)(param_1 + 0x140) = *(long *)(param_1 + 0x140) + 1;\n            lVar8 = 0;\n            lVar9 = 1;\n          }\n          else {\n            lVar9 = lVar8 + 1;\n          }\n          puVar15 = puVar15 + 1;\n          *(long *)(param_1 + 0x100) = lVar9;\n          *(undefined1 *)(param_1 + lVar8) = uVar16;\n          *(undefined1 *)(param_1 + 0x108) = uVar16;\n          if (puVar15 == &DAT_0058951b) break;\n          uVar16 = *puVar15;\n          lVar8 = lVar9;\n        }\n      }\n      else {\n        lVar9 = lVar8 + 1;\n        if (lVar8 == 0xff) {\n          *(undefined1 *)(param_1 + 0xff) = 0;\n          (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118));\n          *(long *)(param_1 + 0x140) = *(long *)(param_1 + 0x140) + 1;\n          lVar9 = 1;\n          lVar8 = 0;\n        }\n        *(long *)(param_1 + 0x100) = lVar9;\n        *(undefined1 *)(param_1 + lVar8) = 0x2e;\n        *(undefined1 *)(param_1 + 0x108) = 0x2e;\n      }\n      piVar14 = *(int **)(param_3[1] + 0x10);\n      iVar5 = *piVar14;\n      if (iVar5 == 0x46) {\n        pcVar12 = "{default arg#";\n        cVar17 = '{';\n        lVar8 = *(long *)(param_1 + 0x100);\n        while( true ) {\n          pcVar12 = pcVar12 + 1;\n          if (lVar8 == 0xff) {\n            *(undefined1 *)(param_1 + 0xff) = 0;\n            (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118));\n            *(long *)(param_1 + 0x140) = *(long *)(param_1 + 0x140) + 1;\n            lVar8 = 0;\n            lVar9 = 1;\n          }\n          else {\n            lVar9 = lVar8 + 1;\n          }\n          *(long *)(param_1 + 0x100) = lVar9;\n          *(char *)(param_1 + lVar8) = cVar17;\n          *(char *)(param_1 + 0x108) = cVar17;\n          if (pcVar12 == "") break;\n          cVar17 = *pcVar12;\n          lVar8 = lVar9;\n        }\n        __s = (uint *)(auStack_5b + 3);\n        sprintf((char *)__s,"%d",(ulong)(piVar14[4] + 1));\n        puVar11 = __s;\n        do {\n          puVar10 = puVar11;\n          uVar6 = *puVar10 + 0xfefefeff & ~*puVar10;\n          uVar7 = uVar6 & 0x80808080;\n          puVar11 = puVar10 + 1;\n        } while (uVar7 == 0);\n        bVar18 = (uVar6 & 0x8080) == 0;\n        if (bVar18) {\n          uVar7 = uVar7 >> 0x10;\n        }\n        if (bVar18) {\n          puVar11 = (uint *)((long)puVar10 + 6);\n        }\n        lVar8 = *(long *)(param_1 + 0x100);\n        pcVar12 = (char *)((long)puVar11 +\n                          ((-3 - (ulong)CARRY1((byte)uVar7,(byte)uVar7)) - (long)__s));\n        if (pcVar12 != (char *)0x0) {\n          puVar11 = (uint *)((long)__s + (long)pcVar12);\n          lVar9 = lVar8;\n          do {\n            cVar17 = (char)*__s;\n            if (lVar9 == 0xff) {\n              *(undefined1 *)(param_1 + 0xff) = 0;\n              auStack_5b[2] = cVar17;\n              (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118));\n              *(long *)(param_1 + 0x140) = *(long *)(param_1 + 0x140) + 1;\n              lVar8 = 1;\n              lVar9 = 0;\n              cVar17 = auStack_5b[2];\n            }\n            else {\n              lVar8 = lVar9 + 1;\n            }\n            __s = (uint *)((long)__s + 1);\n            *(long *)(param_1 + 0x100) = lVar8;\n            *(char *)(param_1 + lVar9) = cVar17;\n            *(char *)(param_1 + 0x108) = cVar17;\n            lVar9 = lVar8;\n          } while (puVar11 != __s);\n        }\n        puVar13 = &DAT_00589518;\n        uVar16 = 0x7d;\n        while( true ) {\n          if (lVar8 == 0xff) {\n            *(undefined1 *)(param_1 + 0xff) = 0;\n            (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118));\n            *(long *)(param_1 + 0x140) = *(long *)(param_1 + 0x140) + 1;\n            lVar8 = 0;\n            lVar9 = 1;\n          }\n          else {\n            lVar9 = lVar8 + 1;\n          }\n          puVar13 = puVar13 + 1;\n          *(long *)(param_1 + 0x100) = lVar9;\n          *(undefined1 *)(param_1 + lVar8) = uVar16;\n          *(undefined1 *)(param_1 + 0x108) = uVar16;\n          if (puVar13 == &DAT_0058951b) break;\n          uVar16 = *puVar13;\n          lVar8 = lVar9;\n        }\n        piVar14 = *(int **)(piVar14 + 2);\n        iVar5 = *piVar14;\n      }\n      if (iVar5 - 0x1cU < 0x34) {\n        uVar4 = 0xd00000000001fU >> ((ulong)(iVar5 - 0x1cU) & 0x3f) & 1;\n        while (uVar4 != 0) {\n          piVar14 = *(int **)(piVar14 + 2);\n          if (0x33 < *piVar14 - 0x1cU) break;\n          uVar4 = 1L << ((byte)(*piVar14 - 0x1cU) & 0x3f) & 0xd00000000001f;\n        }\n      }\n      FUN_004916e0(param_1,param_2,piVar14);\n      *(undefined8 *)(param_1 + 0x120) = uVar1;\n      return;\n    }\n    FUN_00491770(param_1,param_2);\n    *(undefined8 *)(param_1 + 0x120) = uVar1;\n  }\nLAB_00492458:\n  param_3 = (long *)*param_3;\n  if (param_3 == (long *)0x0) {\n    return;\n  }\n  iVar5 = *(int *)(param_1 + 0x130);\n  goto joined_r0x004923f2;\n}" { (declaration "undefined8 uVar1;" type_identifier identifier ;) (declaration "undefined8 uVar2;" type_identifier identifier ;) (declaration "undefined8 uVar3;" type_identifier identifier ;) (declaration "ulong uVar4;" type_identifier identifier ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "uint uVar6;" type_identifier identifier ;) (declaration "uint uVar7;" type_identifier identifier ;) (declaration "long lVar8;" (sized_type_specifier "long" long) identifier ;) (declaration "long lVar9;" (sized_type_specifier "long" long) identifier ;) (declaration "uint *puVar10;" type_identifier (pointer_declarator "*puVar10" * identifier) ;) (declaration "uint *puVar11;" type_identifier (pointer_declarator "*puVar11" * identifier) ;) (declaration "char *pcVar12;" primitive_type (pointer_declarator "*pcVar12" * identifier) ;) (declaration "uint *__s;" type_identifier (pointer_declarator "*__s" * identifier) ;) (declaration "undefined *puVar13;" type_identifier (pointer_declarator "*puVar13" * identifier) ;) (declaration "int *piVar14;" primitive_type (pointer_declarator "*piVar14" * identifier) ;) (declaration "undefined1 *puVar15;" type_identifier (pointer_declarator "*puVar15" * identifier) ;) (declaration "undefined1 uVar16;" type_identifier identifier ;) (declaration "char cVar17;" primitive_type identifier ;) (declaration "bool bVar18;" primitive_type identifier ;) (declaration "undefined1 auStack_5b [43];" type_identifier (array_declarator "auStack_5b [43]" identifier [ number_literal ]) ;) (if_statement "if (param_3 == (long *)0x0) {\n    return;\n  }" if (parenthesized_expression "(param_3 == (long *)0x0)" ( (binary_expression "param_3 == (long *)0x0" identifier == (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    return;\n  }" { (return_statement "return;" return ;) })) (expression_statement "iVar5 = *(int *)(param_1 + 0x130);" (assignment_expression "iVar5 = *(int *)(param_1 + 0x130)" identifier = (pointer_expression "*(int *)(param_1 + 0x130)" * (cast_expression "(int *)(param_1 + 0x130)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x130)" ( (binary_expression "param_1 + 0x130" identifier + number_literal) ))))) ;) (labeled_statement "joined_r0x004923f2:\n  if (iVar5 != 0) {\n    return;\n  }" statement_identifier : (if_statement "if (iVar5 != 0) {\n    return;\n  }" if (parenthesized_expression "(iVar5 != 0)" ( (binary_expression "iVar5 != 0" identifier != number_literal) )) (compound_statement "{\n    return;\n  }" { (return_statement "return;" return ;) }))) (if_statement "if ((int)param_3[2] == 0) {\n    piVar14 = (int *)param_3[1];\n    iVar5 = *piVar14;\n    if (param_4 == 0) {\n      if (iVar5 - 0x1cU < 0x34) {\n        if ((0xd00000000001fU >> ((ulong)(iVar5 - 0x1cU) & 0x3f) & 1) != 0) goto LAB_00492458;\n        goto LAB_00492416;\n      }\n      *(undefined4 *)(param_3 + 2) = 1;\n      uVar1 = *(undefined8 *)(param_1 + 0x120);\n      *(long *)(param_1 + 0x120) = param_3[3];\n    }\n    else {\nLAB_00492416:\n      *(undefined4 *)(param_3 + 2) = 1;\n      uVar1 = *(undefined8 *)(param_1 + 0x120);\n      *(long *)(param_1 + 0x120) = param_3[3];\n      if (iVar5 == 0x29) {\n        FUN_004920b0(param_1,param_2,piVar14 + 4,*param_3);\n        *(undefined8 *)(param_1 + 0x120) = uVar1;\n        return;\n      }\n    }\n    if (iVar5 == 0x2a) {\n      FUN_00492840(param_1,param_2,piVar14 + 2,*param_3);\n      *(undefined8 *)(param_1 + 0x120) = uVar1;\n      return;\n    }\n    if (iVar5 == 2) {\n      uVar2 = *(undefined8 *)(param_1 + 0x128);\n      uVar3 = *(undefined8 *)(piVar14 + 2);\n      *(undefined8 *)(param_1 + 0x128) = 0;\n      FUN_004916e0(param_1,param_2,uVar3);\n      *(undefined8 *)(param_1 + 0x128) = uVar2;\n      lVar8 = *(long *)(param_1 + 0x100);\n      if ((param_2 & 4) == 0) {\n        puVar15 = &DAT_00589519;\n        uVar16 = 0x3a;\n        while( true ) {\n          if (lVar8 == 0xff) {\n            *(undefined1 *)(param_1 + 0xff) = 0;\n            (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118));\n            *(long *)(param_1 + 0x140) = *(long *)(param_1 + 0x140) + 1;\n            lVar8 = 0;\n            lVar9 = 1;\n          }\n          else {\n            lVar9 = lVar8 + 1;\n          }\n          puVar15 = puVar15 + 1;\n          *(long *)(param_1 + 0x100) = lVar9;\n          *(undefined1 *)(param_1 + lVar8) = uVar16;\n          *(undefined1 *)(param_1 + 0x108) = uVar16;\n          if (puVar15 == &DAT_0058951b) break;\n          uVar16 = *puVar15;\n          lVar8 = lVar9;\n        }\n      }\n      else {\n        lVar9 = lVar8 + 1;\n        if (lVar8 == 0xff) {\n          *(undefined1 *)(param_1 + 0xff) = 0;\n          (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118));\n          *(long *)(param_1 + 0x140) = *(long *)(param_1 + 0x140) + 1;\n          lVar9 = 1;\n          lVar8 = 0;\n        }\n        *(long *)(param_1 + 0x100) = lVar9;\n        *(undefined1 *)(param_1 + lVar8) = 0x2e;\n        *(undefined1 *)(param_1 + 0x108) = 0x2e;\n      }\n      piVar14 = *(int **)(param_3[1] + 0x10);\n      iVar5 = *piVar14;\n      if (iVar5 == 0x46) {\n        pcVar12 = "{default arg#";\n        cVar17 = '{';\n        lVar8 = *(long *)(param_1 + 0x100);\n        while( true ) {\n          pcVar12 = pcVar12 + 1;\n          if (lVar8 == 0xff) {\n            *(undefined1 *)(param_1 + 0xff) = 0;\n            (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118));\n            *(long *)(param_1 + 0x140) = *(long *)(param_1 + 0x140) + 1;\n            lVar8 = 0;\n            lVar9 = 1;\n          }\n          else {\n            lVar9 = lVar8 + 1;\n          }\n          *(long *)(param_1 + 0x100) = lVar9;\n          *(char *)(param_1 + lVar8) = cVar17;\n          *(char *)(param_1 + 0x108) = cVar17;\n          if (pcVar12 == "") break;\n          cVar17 = *pcVar12;\n          lVar8 = lVar9;\n        }\n        __s = (uint *)(auStack_5b + 3);\n        sprintf((char *)__s,"%d",(ulong)(piVar14[4] + 1));\n        puVar11 = __s;\n        do {\n          puVar10 = puVar11;\n          uVar6 = *puVar10 + 0xfefefeff & ~*puVar10;\n          uVar7 = uVar6 & 0x80808080;\n          puVar11 = puVar10 + 1;\n        } while (uVar7 == 0);\n        bVar18 = (uVar6 & 0x8080) == 0;\n        if (bVar18) {\n          uVar7 = uVar7 >> 0x10;\n        }\n        if (bVar18) {\n          puVar11 = (uint *)((long)puVar10 + 6);\n        }\n        lVar8 = *(long *)(param_1 + 0x100);\n        pcVar12 = (char *)((long)puVar11 +\n                          ((-3 - (ulong)CARRY1((byte)uVar7,(byte)uVar7)) - (long)__s));\n        if (pcVar12 != (char *)0x0) {\n          puVar11 = (uint *)((long)__s + (long)pcVar12);\n          lVar9 = lVar8;\n          do {\n            cVar17 = (char)*__s;\n            if (lVar9 == 0xff) {\n              *(undefined1 *)(param_1 + 0xff) = 0;\n              auStack_5b[2] = cVar17;\n              (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118));\n              *(long *)(param_1 + 0x140) = *(long *)(param_1 + 0x140) + 1;\n              lVar8 = 1;\n              lVar9 = 0;\n              cVar17 = auStack_5b[2];\n            }\n            else {\n              lVar8 = lVar9 + 1;\n            }\n            __s = (uint *)((long)__s + 1);\n            *(long *)(param_1 + 0x100) = lVar8;\n            *(char *)(param_1 + lVar9) = cVar17;\n            *(char *)(param_1 + 0x108) = cVar17;\n            lVar9 = lVar8;\n          } while (puVar11 != __s);\n        }\n        puVar13 = &DAT_00589518;\n        uVar16 = 0x7d;\n        while( true ) {\n          if (lVar8 == 0xff) {\n            *(undefined1 *)(param_1 + 0xff) = 0;\n            (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118));\n            *(long *)(param_1 + 0x140) = *(long *)(param_1 + 0x140) + 1;\n            lVar8 = 0;\n            lVar9 = 1;\n          }\n          else {\n            lVar9 = lVar8 + 1;\n          }\n          puVar13 = puVar13 + 1;\n          *(long *)(param_1 + 0x100) = lVar9;\n          *(undefined1 *)(param_1 + lVar8) = uVar16;\n          *(undefined1 *)(param_1 + 0x108) = uVar16;\n          if (puVar13 == &DAT_0058951b) break;\n          uVar16 = *puVar13;\n          lVar8 = lVar9;\n        }\n        piVar14 = *(int **)(piVar14 + 2);\n        iVar5 = *piVar14;\n      }\n      if (iVar5 - 0x1cU < 0x34) {\n        uVar4 = 0xd00000000001fU >> ((ulong)(iVar5 - 0x1cU) & 0x3f) & 1;\n        while (uVar4 != 0) {\n          piVar14 = *(int **)(piVar14 + 2);\n          if (0x33 < *piVar14 - 0x1cU) break;\n          uVar4 = 1L << ((byte)(*piVar14 - 0x1cU) & 0x3f) & 0xd00000000001f;\n        }\n      }\n      FUN_004916e0(param_1,param_2,piVar14);\n      *(undefined8 *)(param_1 + 0x120) = uVar1;\n      return;\n    }\n    FUN_00491770(param_1,param_2);\n    *(undefined8 *)(param_1 + 0x120) = uVar1;\n  }" if (parenthesized_expression "((int)param_3[2] == 0)" ( (binary_expression "(int)param_3[2] == 0" (cast_expression "(int)param_3[2]" ( (type_descriptor "int" primitive_type) ) (subscript_expression "param_3[2]" identifier [ number_literal ])) == number_literal) )) (compound_statement "{\n    piVar14 = (int *)param_3[1];\n    iVar5 = *piVar14;\n    if (param_4 == 0) {\n      if (iVar5 - 0x1cU < 0x34) {\n        if ((0xd00000000001fU >> ((ulong)(iVar5 - 0x1cU) & 0x3f) & 1) != 0) goto LAB_00492458;\n        goto LAB_00492416;\n      }\n      *(undefined4 *)(param_3 + 2) = 1;\n      uVar1 = *(undefined8 *)(param_1 + 0x120);\n      *(long *)(param_1 + 0x120) = param_3[3];\n    }\n    else {\nLAB_00492416:\n      *(undefined4 *)(param_3 + 2) = 1;\n      uVar1 = *(undefined8 *)(param_1 + 0x120);\n      *(long *)(param_1 + 0x120) = param_3[3];\n      if (iVar5 == 0x29) {\n        FUN_004920b0(param_1,param_2,piVar14 + 4,*param_3);\n        *(undefined8 *)(param_1 + 0x120) = uVar1;\n        return;\n      }\n    }\n    if (iVar5 == 0x2a) {\n      FUN_00492840(param_1,param_2,piVar14 + 2,*param_3);\n      *(undefined8 *)(param_1 + 0x120) = uVar1;\n      return;\n    }\n    if (iVar5 == 2) {\n      uVar2 = *(undefined8 *)(param_1 + 0x128);\n      uVar3 = *(undefined8 *)(piVar14 + 2);\n      *(undefined8 *)(param_1 + 0x128) = 0;\n      FUN_004916e0(param_1,param_2,uVar3);\n      *(undefined8 *)(param_1 + 0x128) = uVar2;\n      lVar8 = *(long *)(param_1 + 0x100);\n      if ((param_2 & 4) == 0) {\n        puVar15 = &DAT_00589519;\n        uVar16 = 0x3a;\n        while( true ) {\n          if (lVar8 == 0xff) {\n            *(undefined1 *)(param_1 + 0xff) = 0;\n            (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118));\n            *(long *)(param_1 + 0x140) = *(long *)(param_1 + 0x140) + 1;\n            lVar8 = 0;\n            lVar9 = 1;\n          }\n          else {\n            lVar9 = lVar8 + 1;\n          }\n          puVar15 = puVar15 + 1;\n          *(long *)(param_1 + 0x100) = lVar9;\n          *(undefined1 *)(param_1 + lVar8) = uVar16;\n          *(undefined1 *)(param_1 + 0x108) = uVar16;\n          if (puVar15 == &DAT_0058951b) break;\n          uVar16 = *puVar15;\n          lVar8 = lVar9;\n        }\n      }\n      else {\n        lVar9 = lVar8 + 1;\n        if (lVar8 == 0xff) {\n          *(undefined1 *)(param_1 + 0xff) = 0;\n          (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118));\n          *(long *)(param_1 + 0x140) = *(long *)(param_1 + 0x140) + 1;\n          lVar9 = 1;\n          lVar8 = 0;\n        }\n        *(long *)(param_1 + 0x100) = lVar9;\n        *(undefined1 *)(param_1 + lVar8) = 0x2e;\n        *(undefined1 *)(param_1 + 0x108) = 0x2e;\n      }\n      piVar14 = *(int **)(param_3[1] + 0x10);\n      iVar5 = *piVar14;\n      if (iVar5 == 0x46) {\n        pcVar12 = "{default arg#";\n        cVar17 = '{';\n        lVar8 = *(long *)(param_1 + 0x100);\n        while( true ) {\n          pcVar12 = pcVar12 + 1;\n          if (lVar8 == 0xff) {\n            *(undefined1 *)(param_1 + 0xff) = 0;\n            (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118));\n            *(long *)(param_1 + 0x140) = *(long *)(param_1 + 0x140) + 1;\n            lVar8 = 0;\n            lVar9 = 1;\n          }\n          else {\n            lVar9 = lVar8 + 1;\n          }\n          *(long *)(param_1 + 0x100) = lVar9;\n          *(char *)(param_1 + lVar8) = cVar17;\n          *(char *)(param_1 + 0x108) = cVar17;\n          if (pcVar12 == "") break;\n          cVar17 = *pcVar12;\n          lVar8 = lVar9;\n        }\n        __s = (uint *)(auStack_5b + 3);\n        sprintf((char *)__s,"%d",(ulong)(piVar14[4] + 1));\n        puVar11 = __s;\n        do {\n          puVar10 = puVar11;\n          uVar6 = *puVar10 + 0xfefefeff & ~*puVar10;\n          uVar7 = uVar6 & 0x80808080;\n          puVar11 = puVar10 + 1;\n        } while (uVar7 == 0);\n        bVar18 = (uVar6 & 0x8080) == 0;\n        if (bVar18) {\n          uVar7 = uVar7 >> 0x10;\n        }\n        if (bVar18) {\n          puVar11 = (uint *)((long)puVar10 + 6);\n        }\n        lVar8 = *(long *)(param_1 + 0x100);\n        pcVar12 = (char *)((long)puVar11 +\n                          ((-3 - (ulong)CARRY1((byte)uVar7,(byte)uVar7)) - (long)__s));\n        if (pcVar12 != (char *)0x0) {\n          puVar11 = (uint *)((long)__s + (long)pcVar12);\n          lVar9 = lVar8;\n          do {\n            cVar17 = (char)*__s;\n            if (lVar9 == 0xff) {\n              *(undefined1 *)(param_1 + 0xff) = 0;\n              auStack_5b[2] = cVar17;\n              (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118));\n              *(long *)(param_1 + 0x140) = *(long *)(param_1 + 0x140) + 1;\n              lVar8 = 1;\n              lVar9 = 0;\n              cVar17 = auStack_5b[2];\n            }\n            else {\n              lVar8 = lVar9 + 1;\n            }\n            __s = (uint *)((long)__s + 1);\n            *(long *)(param_1 + 0x100) = lVar8;\n            *(char *)(param_1 + lVar9) = cVar17;\n            *(char *)(param_1 + 0x108) = cVar17;\n            lVar9 = lVar8;\n          } while (puVar11 != __s);\n        }\n        puVar13 = &DAT_00589518;\n        uVar16 = 0x7d;\n        while( true ) {\n          if (lVar8 == 0xff) {\n            *(undefined1 *)(param_1 + 0xff) = 0;\n            (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118));\n            *(long *)(param_1 + 0x140) = *(long *)(param_1 + 0x140) + 1;\n            lVar8 = 0;\n            lVar9 = 1;\n          }\n          else {\n            lVar9 = lVar8 + 1;\n          }\n          puVar13 = puVar13 + 1;\n          *(long *)(param_1 + 0x100) = lVar9;\n          *(undefined1 *)(param_1 + lVar8) = uVar16;\n          *(undefined1 *)(param_1 + 0x108) = uVar16;\n          if (puVar13 == &DAT_0058951b) break;\n          uVar16 = *puVar13;\n          lVar8 = lVar9;\n        }\n        piVar14 = *(int **)(piVar14 + 2);\n        iVar5 = *piVar14;\n      }\n      if (iVar5 - 0x1cU < 0x34) {\n        uVar4 = 0xd00000000001fU >> ((ulong)(iVar5 - 0x1cU) & 0x3f) & 1;\n        while (uVar4 != 0) {\n          piVar14 = *(int **)(piVar14 + 2);\n          if (0x33 < *piVar14 - 0x1cU) break;\n          uVar4 = 1L << ((byte)(*piVar14 - 0x1cU) & 0x3f) & 0xd00000000001f;\n        }\n      }\n      FUN_004916e0(param_1,param_2,piVar14);\n      *(undefined8 *)(param_1 + 0x120) = uVar1;\n      return;\n    }\n    FUN_00491770(param_1,param_2);\n    *(undefined8 *)(param_1 + 0x120) = uVar1;\n  }" { (expression_statement "piVar14 = (int *)param_3[1];" (assignment_expression "piVar14 = (int *)param_3[1]" identifier = (cast_expression "(int *)param_3[1]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_3[1]" identifier [ number_literal ]))) ;) (expression_statement "iVar5 = *piVar14;" (assignment_expression "iVar5 = *piVar14" identifier = (pointer_expression "*piVar14" * identifier)) ;) (if_statement "if (param_4 == 0) {\n      if (iVar5 - 0x1cU < 0x34) {\n        if ((0xd00000000001fU >> ((ulong)(iVar5 - 0x1cU) & 0x3f) & 1) != 0) goto LAB_00492458;\n        goto LAB_00492416;\n      }\n      *(undefined4 *)(param_3 + 2) = 1;\n      uVar1 = *(undefined8 *)(param_1 + 0x120);\n      *(long *)(param_1 + 0x120) = param_3[3];\n    }\n    else {\nLAB_00492416:\n      *(undefined4 *)(param_3 + 2) = 1;\n      uVar1 = *(undefined8 *)(param_1 + 0x120);\n      *(long *)(param_1 + 0x120) = param_3[3];\n      if (iVar5 == 0x29) {\n        FUN_004920b0(param_1,param_2,piVar14 + 4,*param_3);\n        *(undefined8 *)(param_1 + 0x120) = uVar1;\n        return;\n      }\n    }" if (parenthesized_expression "(param_4 == 0)" ( (binary_expression "param_4 == 0" identifier == number_literal) )) (compound_statement "{\n      if (iVar5 - 0x1cU < 0x34) {\n        if ((0xd00000000001fU >> ((ulong)(iVar5 - 0x1cU) & 0x3f) & 1) != 0) goto LAB_00492458;\n        goto LAB_00492416;\n      }\n      *(undefined4 *)(param_3 + 2) = 1;\n      uVar1 = *(undefined8 *)(param_1 + 0x120);\n      *(long *)(param_1 + 0x120) = param_3[3];\n    }" { (if_statement "if (iVar5 - 0x1cU < 0x34) {\n        if ((0xd00000000001fU >> ((ulong)(iVar5 - 0x1cU) & 0x3f) & 1) != 0) goto LAB_00492458;\n        goto LAB_00492416;\n      }" if (parenthesized_expression "(iVar5 - 0x1cU < 0x34)" ( (binary_expression "iVar5 - 0x1cU < 0x34" (binary_expression "iVar5 - 0x1cU" identifier - number_literal) < number_literal) )) (compound_statement "{\n        if ((0xd00000000001fU >> ((ulong)(iVar5 - 0x1cU) & 0x3f) & 1) != 0) goto LAB_00492458;\n        goto LAB_00492416;\n      }" { (if_statement "if ((0xd00000000001fU >> ((ulong)(iVar5 - 0x1cU) & 0x3f) & 1) != 0) goto LAB_00492458;" if (parenthesized_expression "((0xd00000000001fU >> ((ulong)(iVar5 - 0x1cU) & 0x3f) & 1) != 0)" ( (binary_expression "(0xd00000000001fU >> ((ulong)(iVar5 - 0x1cU) & 0x3f) & 1) != 0" (parenthesized_expression "(0xd00000000001fU >> ((ulong)(iVar5 - 0x1cU) & 0x3f) & 1)" ( (binary_expression "0xd00000000001fU >> ((ulong)(iVar5 - 0x1cU) & 0x3f) & 1" (binary_expression "0xd00000000001fU >> ((ulong)(iVar5 - 0x1cU) & 0x3f)" number_literal >> (parenthesized_expression "((ulong)(iVar5 - 0x1cU) & 0x3f)" ( (binary_expression "(ulong)(iVar5 - 0x1cU) & 0x3f" (call_expression "(ulong)(iVar5 - 0x1cU)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(iVar5 - 0x1cU)" ( (binary_expression "iVar5 - 0x1cU" identifier - number_literal) ))) & number_literal) ))) & number_literal) )) != number_literal) )) (goto_statement "goto LAB_00492458;" goto statement_identifier ;)) (goto_statement "goto LAB_00492416;" goto statement_identifier ;) })) (expression_statement "*(undefined4 *)(param_3 + 2) = 1;" (assignment_expression "*(undefined4 *)(param_3 + 2) = 1" (pointer_expression "*(undefined4 *)(param_3 + 2)" * (cast_expression "(undefined4 *)(param_3 + 2)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 2)" ( (binary_expression "param_3 + 2" identifier + number_literal) )))) = number_literal) ;) (expression_statement "uVar1 = *(undefined8 *)(param_1 + 0x120);" (assignment_expression "uVar1 = *(undefined8 *)(param_1 + 0x120)" identifier = (pointer_expression "*(undefined8 *)(param_1 + 0x120)" * (cast_expression "(undefined8 *)(param_1 + 0x120)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x120)" ( (binary_expression "param_1 + 0x120" identifier + number_literal) ))))) ;) (expression_statement "*(long *)(param_1 + 0x120) = param_3[3];" (assignment_expression "*(long *)(param_1 + 0x120) = param_3[3]" (pointer_expression "*(long *)(param_1 + 0x120)" * (cast_expression "(long *)(param_1 + 0x120)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x120)" ( (binary_expression "param_1 + 0x120" identifier + number_literal) )))) = (subscript_expression "param_3[3]" identifier [ number_literal ])) ;) }) (else_clause "else {\nLAB_00492416:\n      *(undefined4 *)(param_3 + 2) = 1;\n      uVar1 = *(undefined8 *)(param_1 + 0x120);\n      *(long *)(param_1 + 0x120) = param_3[3];\n      if (iVar5 == 0x29) {\n        FUN_004920b0(param_1,param_2,piVar14 + 4,*param_3);\n        *(undefined8 *)(param_1 + 0x120) = uVar1;\n        return;\n      }\n    }" else (compound_statement "{\nLAB_00492416:\n      *(undefined4 *)(param_3 + 2) = 1;\n      uVar1 = *(undefined8 *)(param_1 + 0x120);\n      *(long *)(param_1 + 0x120) = param_3[3];\n      if (iVar5 == 0x29) {\n        FUN_004920b0(param_1,param_2,piVar14 + 4,*param_3);\n        *(undefined8 *)(param_1 + 0x120) = uVar1;\n        return;\n      }\n    }" { (labeled_statement "LAB_00492416:\n      *(undefined4 *)(param_3 + 2) = 1;" statement_identifier : (expression_statement "*(undefined4 *)(param_3 + 2) = 1;" (assignment_expression "*(undefined4 *)(param_3 + 2) = 1" (pointer_expression "*(undefined4 *)(param_3 + 2)" * (cast_expression "(undefined4 *)(param_3 + 2)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 2)" ( (binary_expression "param_3 + 2" identifier + number_literal) )))) = number_literal) ;)) (expression_statement "uVar1 = *(undefined8 *)(param_1 + 0x120);" (assignment_expression "uVar1 = *(undefined8 *)(param_1 + 0x120)" identifier = (pointer_expression "*(undefined8 *)(param_1 + 0x120)" * (cast_expression "(undefined8 *)(param_1 + 0x120)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x120)" ( (binary_expression "param_1 + 0x120" identifier + number_literal) ))))) ;) (expression_statement "*(long *)(param_1 + 0x120) = param_3[3];" (assignment_expression "*(long *)(param_1 + 0x120) = param_3[3]" (pointer_expression "*(long *)(param_1 + 0x120)" * (cast_expression "(long *)(param_1 + 0x120)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x120)" ( (binary_expression "param_1 + 0x120" identifier + number_literal) )))) = (subscript_expression "param_3[3]" identifier [ number_literal ])) ;) (if_statement "if (iVar5 == 0x29) {\n        FUN_004920b0(param_1,param_2,piVar14 + 4,*param_3);\n        *(undefined8 *)(param_1 + 0x120) = uVar1;\n        return;\n      }" if (parenthesized_expression "(iVar5 == 0x29)" ( (binary_expression "iVar5 == 0x29" identifier == number_literal) )) (compound_statement "{\n        FUN_004920b0(param_1,param_2,piVar14 + 4,*param_3);\n        *(undefined8 *)(param_1 + 0x120) = uVar1;\n        return;\n      }" { (expression_statement "FUN_004920b0(param_1,param_2,piVar14 + 4,*param_3);" (call_expression "FUN_004920b0(param_1,param_2,piVar14 + 4,*param_3)" identifier (argument_list "(param_1,param_2,piVar14 + 4,*param_3)" ( identifier , identifier , (binary_expression "piVar14 + 4" identifier + number_literal) , (pointer_expression "*param_3" * identifier) ))) ;) (expression_statement "*(undefined8 *)(param_1 + 0x120) = uVar1;" (assignment_expression "*(undefined8 *)(param_1 + 0x120) = uVar1" (pointer_expression "*(undefined8 *)(param_1 + 0x120)" * (cast_expression "(undefined8 *)(param_1 + 0x120)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x120)" ( (binary_expression "param_1 + 0x120" identifier + number_literal) )))) = identifier) ;) (return_statement "return;" return ;) })) }))) (if_statement "if (iVar5 == 0x2a) {\n      FUN_00492840(param_1,param_2,piVar14 + 2,*param_3);\n      *(undefined8 *)(param_1 + 0x120) = uVar1;\n      return;\n    }" if (parenthesized_expression "(iVar5 == 0x2a)" ( (binary_expression "iVar5 == 0x2a" identifier == number_literal) )) (compound_statement "{\n      FUN_00492840(param_1,param_2,piVar14 + 2,*param_3);\n      *(undefined8 *)(param_1 + 0x120) = uVar1;\n      return;\n    }" { (expression_statement "FUN_00492840(param_1,param_2,piVar14 + 2,*param_3);" (call_expression "FUN_00492840(param_1,param_2,piVar14 + 2,*param_3)" identifier (argument_list "(param_1,param_2,piVar14 + 2,*param_3)" ( identifier , identifier , (binary_expression "piVar14 + 2" identifier + number_literal) , (pointer_expression "*param_3" * identifier) ))) ;) (expression_statement "*(undefined8 *)(param_1 + 0x120) = uVar1;" (assignment_expression "*(undefined8 *)(param_1 + 0x120) = uVar1" (pointer_expression "*(undefined8 *)(param_1 + 0x120)" * (cast_expression "(undefined8 *)(param_1 + 0x120)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x120)" ( (binary_expression "param_1 + 0x120" identifier + number_literal) )))) = identifier) ;) (return_statement "return;" return ;) })) (if_statement "if (iVar5 == 2) {\n      uVar2 = *(undefined8 *)(param_1 + 0x128);\n      uVar3 = *(undefined8 *)(piVar14 + 2);\n      *(undefined8 *)(param_1 + 0x128) = 0;\n      FUN_004916e0(param_1,param_2,uVar3);\n      *(undefined8 *)(param_1 + 0x128) = uVar2;\n      lVar8 = *(long *)(param_1 + 0x100);\n      if ((param_2 & 4) == 0) {\n        puVar15 = &DAT_00589519;\n        uVar16 = 0x3a;\n        while( true ) {\n          if (lVar8 == 0xff) {\n            *(undefined1 *)(param_1 + 0xff) = 0;\n            (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118));\n            *(long *)(param_1 + 0x140) = *(long *)(param_1 + 0x140) + 1;\n            lVar8 = 0;\n            lVar9 = 1;\n          }\n          else {\n            lVar9 = lVar8 + 1;\n          }\n          puVar15 = puVar15 + 1;\n          *(long *)(param_1 + 0x100) = lVar9;\n          *(undefined1 *)(param_1 + lVar8) = uVar16;\n          *(undefined1 *)(param_1 + 0x108) = uVar16;\n          if (puVar15 == &DAT_0058951b) break;\n          uVar16 = *puVar15;\n          lVar8 = lVar9;\n        }\n      }\n      else {\n        lVar9 = lVar8 + 1;\n        if (lVar8 == 0xff) {\n          *(undefined1 *)(param_1 + 0xff) = 0;\n          (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118));\n          *(long *)(param_1 + 0x140) = *(long *)(param_1 + 0x140) + 1;\n          lVar9 = 1;\n          lVar8 = 0;\n        }\n        *(long *)(param_1 + 0x100) = lVar9;\n        *(undefined1 *)(param_1 + lVar8) = 0x2e;\n        *(undefined1 *)(param_1 + 0x108) = 0x2e;\n      }\n      piVar14 = *(int **)(param_3[1] + 0x10);\n      iVar5 = *piVar14;\n      if (iVar5 == 0x46) {\n        pcVar12 = "{default arg#";\n        cVar17 = '{';\n        lVar8 = *(long *)(param_1 + 0x100);\n        while( true ) {\n          pcVar12 = pcVar12 + 1;\n          if (lVar8 == 0xff) {\n            *(undefined1 *)(param_1 + 0xff) = 0;\n            (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118));\n            *(long *)(param_1 + 0x140) = *(long *)(param_1 + 0x140) + 1;\n            lVar8 = 0;\n            lVar9 = 1;\n          }\n          else {\n            lVar9 = lVar8 + 1;\n          }\n          *(long *)(param_1 + 0x100) = lVar9;\n          *(char *)(param_1 + lVar8) = cVar17;\n          *(char *)(param_1 + 0x108) = cVar17;\n          if (pcVar12 == "") break;\n          cVar17 = *pcVar12;\n          lVar8 = lVar9;\n        }\n        __s = (uint *)(auStack_5b + 3);\n        sprintf((char *)__s,"%d",(ulong)(piVar14[4] + 1));\n        puVar11 = __s;\n        do {\n          puVar10 = puVar11;\n          uVar6 = *puVar10 + 0xfefefeff & ~*puVar10;\n          uVar7 = uVar6 & 0x80808080;\n          puVar11 = puVar10 + 1;\n        } while (uVar7 == 0);\n        bVar18 = (uVar6 & 0x8080) == 0;\n        if (bVar18) {\n          uVar7 = uVar7 >> 0x10;\n        }\n        if (bVar18) {\n          puVar11 = (uint *)((long)puVar10 + 6);\n        }\n        lVar8 = *(long *)(param_1 + 0x100);\n        pcVar12 = (char *)((long)puVar11 +\n                          ((-3 - (ulong)CARRY1((byte)uVar7,(byte)uVar7)) - (long)__s));\n        if (pcVar12 != (char *)0x0) {\n          puVar11 = (uint *)((long)__s + (long)pcVar12);\n          lVar9 = lVar8;\n          do {\n            cVar17 = (char)*__s;\n            if (lVar9 == 0xff) {\n              *(undefined1 *)(param_1 + 0xff) = 0;\n              auStack_5b[2] = cVar17;\n              (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118));\n              *(long *)(param_1 + 0x140) = *(long *)(param_1 + 0x140) + 1;\n              lVar8 = 1;\n              lVar9 = 0;\n              cVar17 = auStack_5b[2];\n            }\n            else {\n              lVar8 = lVar9 + 1;\n            }\n            __s = (uint *)((long)__s + 1);\n            *(long *)(param_1 + 0x100) = lVar8;\n            *(char *)(param_1 + lVar9) = cVar17;\n            *(char *)(param_1 + 0x108) = cVar17;\n            lVar9 = lVar8;\n          } while (puVar11 != __s);\n        }\n        puVar13 = &DAT_00589518;\n        uVar16 = 0x7d;\n        while( true ) {\n          if (lVar8 == 0xff) {\n            *(undefined1 *)(param_1 + 0xff) = 0;\n            (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118));\n            *(long *)(param_1 + 0x140) = *(long *)(param_1 + 0x140) + 1;\n            lVar8 = 0;\n            lVar9 = 1;\n          }\n          else {\n            lVar9 = lVar8 + 1;\n          }\n          puVar13 = puVar13 + 1;\n          *(long *)(param_1 + 0x100) = lVar9;\n          *(undefined1 *)(param_1 + lVar8) = uVar16;\n          *(undefined1 *)(param_1 + 0x108) = uVar16;\n          if (puVar13 == &DAT_0058951b) break;\n          uVar16 = *puVar13;\n          lVar8 = lVar9;\n        }\n        piVar14 = *(int **)(piVar14 + 2);\n        iVar5 = *piVar14;\n      }\n      if (iVar5 - 0x1cU < 0x34) {\n        uVar4 = 0xd00000000001fU >> ((ulong)(iVar5 - 0x1cU) & 0x3f) & 1;\n        while (uVar4 != 0) {\n          piVar14 = *(int **)(piVar14 + 2);\n          if (0x33 < *piVar14 - 0x1cU) break;\n          uVar4 = 1L << ((byte)(*piVar14 - 0x1cU) & 0x3f) & 0xd00000000001f;\n        }\n      }\n      FUN_004916e0(param_1,param_2,piVar14);\n      *(undefined8 *)(param_1 + 0x120) = uVar1;\n      return;\n    }" if (parenthesized_expression "(iVar5 == 2)" ( (binary_expression "iVar5 == 2" identifier == number_literal) )) (compound_statement "{\n      uVar2 = *(undefined8 *)(param_1 + 0x128);\n      uVar3 = *(undefined8 *)(piVar14 + 2);\n      *(undefined8 *)(param_1 + 0x128) = 0;\n      FUN_004916e0(param_1,param_2,uVar3);\n      *(undefined8 *)(param_1 + 0x128) = uVar2;\n      lVar8 = *(long *)(param_1 + 0x100);\n      if ((param_2 & 4) == 0) {\n        puVar15 = &DAT_00589519;\n        uVar16 = 0x3a;\n        while( true ) {\n          if (lVar8 == 0xff) {\n            *(undefined1 *)(param_1 + 0xff) = 0;\n            (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118));\n            *(long *)(param_1 + 0x140) = *(long *)(param_1 + 0x140) + 1;\n            lVar8 = 0;\n            lVar9 = 1;\n          }\n          else {\n            lVar9 = lVar8 + 1;\n          }\n          puVar15 = puVar15 + 1;\n          *(long *)(param_1 + 0x100) = lVar9;\n          *(undefined1 *)(param_1 + lVar8) = uVar16;\n          *(undefined1 *)(param_1 + 0x108) = uVar16;\n          if (puVar15 == &DAT_0058951b) break;\n          uVar16 = *puVar15;\n          lVar8 = lVar9;\n        }\n      }\n      else {\n        lVar9 = lVar8 + 1;\n        if (lVar8 == 0xff) {\n          *(undefined1 *)(param_1 + 0xff) = 0;\n          (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118));\n          *(long *)(param_1 + 0x140) = *(long *)(param_1 + 0x140) + 1;\n          lVar9 = 1;\n          lVar8 = 0;\n        }\n        *(long *)(param_1 + 0x100) = lVar9;\n        *(undefined1 *)(param_1 + lVar8) = 0x2e;\n        *(undefined1 *)(param_1 + 0x108) = 0x2e;\n      }\n      piVar14 = *(int **)(param_3[1] + 0x10);\n      iVar5 = *piVar14;\n      if (iVar5 == 0x46) {\n        pcVar12 = "{default arg#";\n        cVar17 = '{';\n        lVar8 = *(long *)(param_1 + 0x100);\n        while( true ) {\n          pcVar12 = pcVar12 + 1;\n          if (lVar8 == 0xff) {\n            *(undefined1 *)(param_1 + 0xff) = 0;\n            (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118));\n            *(long *)(param_1 + 0x140) = *(long *)(param_1 + 0x140) + 1;\n            lVar8 = 0;\n            lVar9 = 1;\n          }\n          else {\n            lVar9 = lVar8 + 1;\n          }\n          *(long *)(param_1 + 0x100) = lVar9;\n          *(char *)(param_1 + lVar8) = cVar17;\n          *(char *)(param_1 + 0x108) = cVar17;\n          if (pcVar12 == "") break;\n          cVar17 = *pcVar12;\n          lVar8 = lVar9;\n        }\n        __s = (uint *)(auStack_5b + 3);\n        sprintf((char *)__s,"%d",(ulong)(piVar14[4] + 1));\n        puVar11 = __s;\n        do {\n          puVar10 = puVar11;\n          uVar6 = *puVar10 + 0xfefefeff & ~*puVar10;\n          uVar7 = uVar6 & 0x80808080;\n          puVar11 = puVar10 + 1;\n        } while (uVar7 == 0);\n        bVar18 = (uVar6 & 0x8080) == 0;\n        if (bVar18) {\n          uVar7 = uVar7 >> 0x10;\n        }\n        if (bVar18) {\n          puVar11 = (uint *)((long)puVar10 + 6);\n        }\n        lVar8 = *(long *)(param_1 + 0x100);\n        pcVar12 = (char *)((long)puVar11 +\n                          ((-3 - (ulong)CARRY1((byte)uVar7,(byte)uVar7)) - (long)__s));\n        if (pcVar12 != (char *)0x0) {\n          puVar11 = (uint *)((long)__s + (long)pcVar12);\n          lVar9 = lVar8;\n          do {\n            cVar17 = (char)*__s;\n            if (lVar9 == 0xff) {\n              *(undefined1 *)(param_1 + 0xff) = 0;\n              auStack_5b[2] = cVar17;\n              (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118));\n              *(long *)(param_1 + 0x140) = *(long *)(param_1 + 0x140) + 1;\n              lVar8 = 1;\n              lVar9 = 0;\n              cVar17 = auStack_5b[2];\n            }\n            else {\n              lVar8 = lVar9 + 1;\n            }\n            __s = (uint *)((long)__s + 1);\n            *(long *)(param_1 + 0x100) = lVar8;\n            *(char *)(param_1 + lVar9) = cVar17;\n            *(char *)(param_1 + 0x108) = cVar17;\n            lVar9 = lVar8;\n          } while (puVar11 != __s);\n        }\n        puVar13 = &DAT_00589518;\n        uVar16 = 0x7d;\n        while( true ) {\n          if (lVar8 == 0xff) {\n            *(undefined1 *)(param_1 + 0xff) = 0;\n            (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118));\n            *(long *)(param_1 + 0x140) = *(long *)(param_1 + 0x140) + 1;\n            lVar8 = 0;\n            lVar9 = 1;\n          }\n          else {\n            lVar9 = lVar8 + 1;\n          }\n          puVar13 = puVar13 + 1;\n          *(long *)(param_1 + 0x100) = lVar9;\n          *(undefined1 *)(param_1 + lVar8) = uVar16;\n          *(undefined1 *)(param_1 + 0x108) = uVar16;\n          if (puVar13 == &DAT_0058951b) break;\n          uVar16 = *puVar13;\n          lVar8 = lVar9;\n        }\n        piVar14 = *(int **)(piVar14 + 2);\n        iVar5 = *piVar14;\n      }\n      if (iVar5 - 0x1cU < 0x34) {\n        uVar4 = 0xd00000000001fU >> ((ulong)(iVar5 - 0x1cU) & 0x3f) & 1;\n        while (uVar4 != 0) {\n          piVar14 = *(int **)(piVar14 + 2);\n          if (0x33 < *piVar14 - 0x1cU) break;\n          uVar4 = 1L << ((byte)(*piVar14 - 0x1cU) & 0x3f) & 0xd00000000001f;\n        }\n      }\n      FUN_004916e0(param_1,param_2,piVar14);\n      *(undefined8 *)(param_1 + 0x120) = uVar1;\n      return;\n    }" { (expression_statement "uVar2 = *(undefined8 *)(param_1 + 0x128);" (assignment_expression "uVar2 = *(undefined8 *)(param_1 + 0x128)" identifier = (pointer_expression "*(undefined8 *)(param_1 + 0x128)" * (cast_expression "(undefined8 *)(param_1 + 0x128)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x128)" ( (binary_expression "param_1 + 0x128" identifier + number_literal) ))))) ;) (expression_statement "uVar3 = *(undefined8 *)(piVar14 + 2);" (assignment_expression "uVar3 = *(undefined8 *)(piVar14 + 2)" identifier = (pointer_expression "*(undefined8 *)(piVar14 + 2)" * (cast_expression "(undefined8 *)(piVar14 + 2)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar14 + 2)" ( (binary_expression "piVar14 + 2" identifier + number_literal) ))))) ;) (expression_statement "*(undefined8 *)(param_1 + 0x128) = 0;" (assignment_expression "*(undefined8 *)(param_1 + 0x128) = 0" (pointer_expression "*(undefined8 *)(param_1 + 0x128)" * (cast_expression "(undefined8 *)(param_1 + 0x128)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x128)" ( (binary_expression "param_1 + 0x128" identifier + number_literal) )))) = number_literal) ;) (expression_statement "FUN_004916e0(param_1,param_2,uVar3);" (call_expression "FUN_004916e0(param_1,param_2,uVar3)" identifier (argument_list "(param_1,param_2,uVar3)" ( identifier , identifier , identifier ))) ;) (expression_statement "*(undefined8 *)(param_1 + 0x128) = uVar2;" (assignment_expression "*(undefined8 *)(param_1 + 0x128) = uVar2" (pointer_expression "*(undefined8 *)(param_1 + 0x128)" * (cast_expression "(undefined8 *)(param_1 + 0x128)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x128)" ( (binary_expression "param_1 + 0x128" identifier + number_literal) )))) = identifier) ;) (expression_statement "lVar8 = *(long *)(param_1 + 0x100);" (assignment_expression "lVar8 = *(long *)(param_1 + 0x100)" identifier = (pointer_expression "*(long *)(param_1 + 0x100)" * (cast_expression "(long *)(param_1 + 0x100)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x100)" ( (binary_expression "param_1 + 0x100" identifier + number_literal) ))))) ;) (if_statement "if ((param_2 & 4) == 0) {\n        puVar15 = &DAT_00589519;\n        uVar16 = 0x3a;\n        while( true ) {\n          if (lVar8 == 0xff) {\n            *(undefined1 *)(param_1 + 0xff) = 0;\n            (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118));\n            *(long *)(param_1 + 0x140) = *(long *)(param_1 + 0x140) + 1;\n            lVar8 = 0;\n            lVar9 = 1;\n          }\n          else {\n            lVar9 = lVar8 + 1;\n          }\n          puVar15 = puVar15 + 1;\n          *(long *)(param_1 + 0x100) = lVar9;\n          *(undefined1 *)(param_1 + lVar8) = uVar16;\n          *(undefined1 *)(param_1 + 0x108) = uVar16;\n          if (puVar15 == &DAT_0058951b) break;\n          uVar16 = *puVar15;\n          lVar8 = lVar9;\n        }\n      }\n      else {\n        lVar9 = lVar8 + 1;\n        if (lVar8 == 0xff) {\n          *(undefined1 *)(param_1 + 0xff) = 0;\n          (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118));\n          *(long *)(param_1 + 0x140) = *(long *)(param_1 + 0x140) + 1;\n          lVar9 = 1;\n          lVar8 = 0;\n        }\n        *(long *)(param_1 + 0x100) = lVar9;\n        *(undefined1 *)(param_1 + lVar8) = 0x2e;\n        *(undefined1 *)(param_1 + 0x108) = 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        puVar15 = &DAT_00589519;\n        uVar16 = 0x3a;\n        while( true ) {\n          if (lVar8 == 0xff) {\n            *(undefined1 *)(param_1 + 0xff) = 0;\n            (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118));\n            *(long *)(param_1 + 0x140) = *(long *)(param_1 + 0x140) + 1;\n            lVar8 = 0;\n            lVar9 = 1;\n          }\n          else {\n            lVar9 = lVar8 + 1;\n          }\n          puVar15 = puVar15 + 1;\n          *(long *)(param_1 + 0x100) = lVar9;\n          *(undefined1 *)(param_1 + lVar8) = uVar16;\n          *(undefined1 *)(param_1 + 0x108) = uVar16;\n          if (puVar15 == &DAT_0058951b) break;\n          uVar16 = *puVar15;\n          lVar8 = lVar9;\n        }\n      }" { (expression_statement "puVar15 = &DAT_00589519;" (assignment_expression "puVar15 = &DAT_00589519" identifier = (pointer_expression "&DAT_00589519" & identifier)) ;) (expression_statement "uVar16 = 0x3a;" (assignment_expression "uVar16 = 0x3a" identifier = number_literal) ;) (while_statement "while( true ) {\n          if (lVar8 == 0xff) {\n            *(undefined1 *)(param_1 + 0xff) = 0;\n            (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118));\n            *(long *)(param_1 + 0x140) = *(long *)(param_1 + 0x140) + 1;\n            lVar8 = 0;\n            lVar9 = 1;\n          }\n          else {\n            lVar9 = lVar8 + 1;\n          }\n          puVar15 = puVar15 + 1;\n          *(long *)(param_1 + 0x100) = lVar9;\n          *(undefined1 *)(param_1 + lVar8) = uVar16;\n          *(undefined1 *)(param_1 + 0x108) = uVar16;\n          if (puVar15 == &DAT_0058951b) break;\n          uVar16 = *puVar15;\n          lVar8 = lVar9;\n        }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n          if (lVar8 == 0xff) {\n            *(undefined1 *)(param_1 + 0xff) = 0;\n            (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118));\n            *(long *)(param_1 + 0x140) = *(long *)(param_1 + 0x140) + 1;\n            lVar8 = 0;\n            lVar9 = 1;\n          }\n          else {\n            lVar9 = lVar8 + 1;\n          }\n          puVar15 = puVar15 + 1;\n          *(long *)(param_1 + 0x100) = lVar9;\n          *(undefined1 *)(param_1 + lVar8) = uVar16;\n          *(undefined1 *)(param_1 + 0x108) = uVar16;\n          if (puVar15 == &DAT_0058951b) break;\n          uVar16 = *puVar15;\n          lVar8 = lVar9;\n        }" { (if_statement "if (lVar8 == 0xff) {\n            *(undefined1 *)(param_1 + 0xff) = 0;\n            (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118));\n            *(long *)(param_1 + 0x140) = *(long *)(param_1 + 0x140) + 1;\n            lVar8 = 0;\n            lVar9 = 1;\n          }\n          else {\n            lVar9 = lVar8 + 1;\n          }" if (parenthesized_expression "(lVar8 == 0xff)" ( (binary_expression "lVar8 == 0xff" identifier == number_literal) )) (compound_statement "{\n            *(undefined1 *)(param_1 + 0xff) = 0;\n            (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118));\n            *(long *)(param_1 + 0x140) = *(long *)(param_1 + 0x140) + 1;\n            lVar8 = 0;\n            lVar9 = 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 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118));" (call_expression "(**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118))" (parenthesized_expression "(**(code **)(param_1 + 0x110))" ( (pointer_expression "**(code **)(param_1 + 0x110)" * (pointer_expression "*(code **)(param_1 + 0x110)" * (cast_expression "(code **)(param_1 + 0x110)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x110)" ( (binary_expression "param_1 + 0x110" identifier + number_literal) ))))) )) (argument_list "(param_1,0xff,*(undefined8 *)(param_1 + 0x118))" ( identifier , number_literal , (pointer_expression "*(undefined8 *)(param_1 + 0x118)" * (cast_expression "(undefined8 *)(param_1 + 0x118)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x118)" ( (binary_expression "param_1 + 0x118" identifier + number_literal) )))) ))) ;) (expression_statement "*(long *)(param_1 + 0x140) = *(long *)(param_1 + 0x140) + 1;" (assignment_expression "*(long *)(param_1 + 0x140) = *(long *)(param_1 + 0x140) + 1" (pointer_expression "*(long *)(param_1 + 0x140)" * (cast_expression "(long *)(param_1 + 0x140)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x140)" ( (binary_expression "param_1 + 0x140" identifier + number_literal) )))) = (binary_expression "*(long *)(param_1 + 0x140) + 1" (pointer_expression "*(long *)(param_1 + 0x140)" * (cast_expression "(long *)(param_1 + 0x140)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x140)" ( (binary_expression "param_1 + 0x140" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "lVar8 = 0;" (assignment_expression "lVar8 = 0" identifier = number_literal) ;) (expression_statement "lVar9 = 1;" (assignment_expression "lVar9 = 1" identifier = number_literal) ;) }) (else_clause "else {\n            lVar9 = lVar8 + 1;\n          }" else (compound_statement "{\n            lVar9 = lVar8 + 1;\n          }" { (expression_statement "lVar9 = lVar8 + 1;" (assignment_expression "lVar9 = lVar8 + 1" identifier = (binary_expression "lVar8 + 1" identifier + number_literal)) ;) }))) (expression_statement "puVar15 = puVar15 + 1;" (assignment_expression "puVar15 = puVar15 + 1" identifier = (binary_expression "puVar15 + 1" identifier + number_literal)) ;) (expression_statement "*(long *)(param_1 + 0x100) = lVar9;" (assignment_expression "*(long *)(param_1 + 0x100) = lVar9" (pointer_expression "*(long *)(param_1 + 0x100)" * (cast_expression "(long *)(param_1 + 0x100)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x100)" ( (binary_expression "param_1 + 0x100" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined1 *)(param_1 + lVar8) = uVar16;" (assignment_expression "*(undefined1 *)(param_1 + lVar8) = uVar16" (pointer_expression "*(undefined1 *)(param_1 + lVar8)" * (cast_expression "(undefined1 *)(param_1 + lVar8)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + lVar8)" ( (binary_expression "param_1 + lVar8" identifier + identifier) )))) = identifier) ;) (expression_statement "*(undefined1 *)(param_1 + 0x108) = uVar16;" (assignment_expression "*(undefined1 *)(param_1 + 0x108) = uVar16" (pointer_expression "*(undefined1 *)(param_1 + 0x108)" * (cast_expression "(undefined1 *)(param_1 + 0x108)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x108)" ( (binary_expression "param_1 + 0x108" identifier + number_literal) )))) = identifier) ;) (if_statement "if (puVar15 == &DAT_0058951b) break;" if (parenthesized_expression "(puVar15 == &DAT_0058951b)" ( (binary_expression "puVar15 == &DAT_0058951b" identifier == (pointer_expression "&DAT_0058951b" & identifier)) )) (break_statement "break;" break ;)) (expression_statement "uVar16 = *puVar15;" (assignment_expression "uVar16 = *puVar15" identifier = (pointer_expression "*puVar15" * identifier)) ;) (expression_statement "lVar8 = lVar9;" (assignment_expression "lVar8 = lVar9" identifier = identifier) ;) })) }) (else_clause "else {\n        lVar9 = lVar8 + 1;\n        if (lVar8 == 0xff) {\n          *(undefined1 *)(param_1 + 0xff) = 0;\n          (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118));\n          *(long *)(param_1 + 0x140) = *(long *)(param_1 + 0x140) + 1;\n          lVar9 = 1;\n          lVar8 = 0;\n        }\n        *(long *)(param_1 + 0x100) = lVar9;\n        *(undefined1 *)(param_1 + lVar8) = 0x2e;\n        *(undefined1 *)(param_1 + 0x108) = 0x2e;\n      }" else (compound_statement "{\n        lVar9 = lVar8 + 1;\n        if (lVar8 == 0xff) {\n          *(undefined1 *)(param_1 + 0xff) = 0;\n          (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118));\n          *(long *)(param_1 + 0x140) = *(long *)(param_1 + 0x140) + 1;\n          lVar9 = 1;\n          lVar8 = 0;\n        }\n        *(long *)(param_1 + 0x100) = lVar9;\n        *(undefined1 *)(param_1 + lVar8) = 0x2e;\n        *(undefined1 *)(param_1 + 0x108) = 0x2e;\n      }" { (expression_statement "lVar9 = lVar8 + 1;" (assignment_expression "lVar9 = lVar8 + 1" identifier = (binary_expression "lVar8 + 1" identifier + number_literal)) ;) (if_statement "if (lVar8 == 0xff) {\n          *(undefined1 *)(param_1 + 0xff) = 0;\n          (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118));\n          *(long *)(param_1 + 0x140) = *(long *)(param_1 + 0x140) + 1;\n          lVar9 = 1;\n          lVar8 = 0;\n        }" if (parenthesized_expression "(lVar8 == 0xff)" ( (binary_expression "lVar8 == 0xff" identifier == number_literal) )) (compound_statement "{\n          *(undefined1 *)(param_1 + 0xff) = 0;\n          (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118));\n          *(long *)(param_1 + 0x140) = *(long *)(param_1 + 0x140) + 1;\n          lVar9 = 1;\n          lVar8 = 0;\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 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118));" (call_expression "(**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118))" (parenthesized_expression "(**(code **)(param_1 + 0x110))" ( (pointer_expression "**(code **)(param_1 + 0x110)" * (pointer_expression "*(code **)(param_1 + 0x110)" * (cast_expression "(code **)(param_1 + 0x110)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x110)" ( (binary_expression "param_1 + 0x110" identifier + number_literal) ))))) )) (argument_list "(param_1,0xff,*(undefined8 *)(param_1 + 0x118))" ( identifier , number_literal , (pointer_expression "*(undefined8 *)(param_1 + 0x118)" * (cast_expression "(undefined8 *)(param_1 + 0x118)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x118)" ( (binary_expression "param_1 + 0x118" identifier + number_literal) )))) ))) ;) (expression_statement "*(long *)(param_1 + 0x140) = *(long *)(param_1 + 0x140) + 1;" (assignment_expression "*(long *)(param_1 + 0x140) = *(long *)(param_1 + 0x140) + 1" (pointer_expression "*(long *)(param_1 + 0x140)" * (cast_expression "(long *)(param_1 + 0x140)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x140)" ( (binary_expression "param_1 + 0x140" identifier + number_literal) )))) = (binary_expression "*(long *)(param_1 + 0x140) + 1" (pointer_expression "*(long *)(param_1 + 0x140)" * (cast_expression "(long *)(param_1 + 0x140)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x140)" ( (binary_expression "param_1 + 0x140" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "lVar9 = 1;" (assignment_expression "lVar9 = 1" identifier = number_literal) ;) (expression_statement "lVar8 = 0;" (assignment_expression "lVar8 = 0" identifier = number_literal) ;) })) (expression_statement "*(long *)(param_1 + 0x100) = lVar9;" (assignment_expression "*(long *)(param_1 + 0x100) = lVar9" (pointer_expression "*(long *)(param_1 + 0x100)" * (cast_expression "(long *)(param_1 + 0x100)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x100)" ( (binary_expression "param_1 + 0x100" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined1 *)(param_1 + lVar8) = 0x2e;" (assignment_expression "*(undefined1 *)(param_1 + lVar8) = 0x2e" (pointer_expression "*(undefined1 *)(param_1 + lVar8)" * (cast_expression "(undefined1 *)(param_1 + lVar8)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + lVar8)" ( (binary_expression "param_1 + lVar8" identifier + identifier) )))) = number_literal) ;) (expression_statement "*(undefined1 *)(param_1 + 0x108) = 0x2e;" (assignment_expression "*(undefined1 *)(param_1 + 0x108) = 0x2e" (pointer_expression "*(undefined1 *)(param_1 + 0x108)" * (cast_expression "(undefined1 *)(param_1 + 0x108)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x108)" ( (binary_expression "param_1 + 0x108" identifier + number_literal) )))) = number_literal) ;) }))) (expression_statement "piVar14 = *(int **)(param_3[1] + 0x10);" (assignment_expression "piVar14 = *(int **)(param_3[1] + 0x10)" identifier = (pointer_expression "*(int **)(param_3[1] + 0x10)" * (cast_expression "(int **)(param_3[1] + 0x10)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_3[1] + 0x10)" ( (binary_expression "param_3[1] + 0x10" (subscript_expression "param_3[1]" identifier [ number_literal ]) + number_literal) ))))) ;) (expression_statement "iVar5 = *piVar14;" (assignment_expression "iVar5 = *piVar14" identifier = (pointer_expression "*piVar14" * identifier)) ;) (if_statement "if (iVar5 == 0x46) {\n        pcVar12 = "{default arg#";\n        cVar17 = '{';\n        lVar8 = *(long *)(param_1 + 0x100);\n        while( true ) {\n          pcVar12 = pcVar12 + 1;\n          if (lVar8 == 0xff) {\n            *(undefined1 *)(param_1 + 0xff) = 0;\n            (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118));\n            *(long *)(param_1 + 0x140) = *(long *)(param_1 + 0x140) + 1;\n            lVar8 = 0;\n            lVar9 = 1;\n          }\n          else {\n            lVar9 = lVar8 + 1;\n          }\n          *(long *)(param_1 + 0x100) = lVar9;\n          *(char *)(param_1 + lVar8) = cVar17;\n          *(char *)(param_1 + 0x108) = cVar17;\n          if (pcVar12 == "") break;\n          cVar17 = *pcVar12;\n          lVar8 = lVar9;\n        }\n        __s = (uint *)(auStack_5b + 3);\n        sprintf((char *)__s,"%d",(ulong)(piVar14[4] + 1));\n        puVar11 = __s;\n        do {\n          puVar10 = puVar11;\n          uVar6 = *puVar10 + 0xfefefeff & ~*puVar10;\n          uVar7 = uVar6 & 0x80808080;\n          puVar11 = puVar10 + 1;\n        } while (uVar7 == 0);\n        bVar18 = (uVar6 & 0x8080) == 0;\n        if (bVar18) {\n          uVar7 = uVar7 >> 0x10;\n        }\n        if (bVar18) {\n          puVar11 = (uint *)((long)puVar10 + 6);\n        }\n        lVar8 = *(long *)(param_1 + 0x100);\n        pcVar12 = (char *)((long)puVar11 +\n                          ((-3 - (ulong)CARRY1((byte)uVar7,(byte)uVar7)) - (long)__s));\n        if (pcVar12 != (char *)0x0) {\n          puVar11 = (uint *)((long)__s + (long)pcVar12);\n          lVar9 = lVar8;\n          do {\n            cVar17 = (char)*__s;\n            if (lVar9 == 0xff) {\n              *(undefined1 *)(param_1 + 0xff) = 0;\n              auStack_5b[2] = cVar17;\n              (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118));\n              *(long *)(param_1 + 0x140) = *(long *)(param_1 + 0x140) + 1;\n              lVar8 = 1;\n              lVar9 = 0;\n              cVar17 = auStack_5b[2];\n            }\n            else {\n              lVar8 = lVar9 + 1;\n            }\n            __s = (uint *)((long)__s + 1);\n            *(long *)(param_1 + 0x100) = lVar8;\n            *(char *)(param_1 + lVar9) = cVar17;\n            *(char *)(param_1 + 0x108) = cVar17;\n            lVar9 = lVar8;\n          } while (puVar11 != __s);\n        }\n        puVar13 = &DAT_00589518;\n        uVar16 = 0x7d;\n        while( true ) {\n          if (lVar8 == 0xff) {\n            *(undefined1 *)(param_1 + 0xff) = 0;\n            (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118));\n            *(long *)(param_1 + 0x140) = *(long *)(param_1 + 0x140) + 1;\n            lVar8 = 0;\n            lVar9 = 1;\n          }\n          else {\n            lVar9 = lVar8 + 1;\n          }\n          puVar13 = puVar13 + 1;\n          *(long *)(param_1 + 0x100) = lVar9;\n          *(undefined1 *)(param_1 + lVar8) = uVar16;\n          *(undefined1 *)(param_1 + 0x108) = uVar16;\n          if (puVar13 == &DAT_0058951b) break;\n          uVar16 = *puVar13;\n          lVar8 = lVar9;\n        }\n        piVar14 = *(int **)(piVar14 + 2);\n        iVar5 = *piVar14;\n      }" if (parenthesized_expression "(iVar5 == 0x46)" ( (binary_expression "iVar5 == 0x46" identifier == number_literal) )) (compound_statement "{\n        pcVar12 = "{default arg#";\n        cVar17 = '{';\n        lVar8 = *(long *)(param_1 + 0x100);\n        while( true ) {\n          pcVar12 = pcVar12 + 1;\n          if (lVar8 == 0xff) {\n            *(undefined1 *)(param_1 + 0xff) = 0;\n            (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118));\n            *(long *)(param_1 + 0x140) = *(long *)(param_1 + 0x140) + 1;\n            lVar8 = 0;\n            lVar9 = 1;\n          }\n          else {\n            lVar9 = lVar8 + 1;\n          }\n          *(long *)(param_1 + 0x100) = lVar9;\n          *(char *)(param_1 + lVar8) = cVar17;\n          *(char *)(param_1 + 0x108) = cVar17;\n          if (pcVar12 == "") break;\n          cVar17 = *pcVar12;\n          lVar8 = lVar9;\n        }\n        __s = (uint *)(auStack_5b + 3);\n        sprintf((char *)__s,"%d",(ulong)(piVar14[4] + 1));\n        puVar11 = __s;\n        do {\n          puVar10 = puVar11;\n          uVar6 = *puVar10 + 0xfefefeff & ~*puVar10;\n          uVar7 = uVar6 & 0x80808080;\n          puVar11 = puVar10 + 1;\n        } while (uVar7 == 0);\n        bVar18 = (uVar6 & 0x8080) == 0;\n        if (bVar18) {\n          uVar7 = uVar7 >> 0x10;\n        }\n        if (bVar18) {\n          puVar11 = (uint *)((long)puVar10 + 6);\n        }\n        lVar8 = *(long *)(param_1 + 0x100);\n        pcVar12 = (char *)((long)puVar11 +\n                          ((-3 - (ulong)CARRY1((byte)uVar7,(byte)uVar7)) - (long)__s));\n        if (pcVar12 != (char *)0x0) {\n          puVar11 = (uint *)((long)__s + (long)pcVar12);\n          lVar9 = lVar8;\n          do {\n            cVar17 = (char)*__s;\n            if (lVar9 == 0xff) {\n              *(undefined1 *)(param_1 + 0xff) = 0;\n              auStack_5b[2] = cVar17;\n              (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118));\n              *(long *)(param_1 + 0x140) = *(long *)(param_1 + 0x140) + 1;\n              lVar8 = 1;\n              lVar9 = 0;\n              cVar17 = auStack_5b[2];\n            }\n            else {\n              lVar8 = lVar9 + 1;\n            }\n            __s = (uint *)((long)__s + 1);\n            *(long *)(param_1 + 0x100) = lVar8;\n            *(char *)(param_1 + lVar9) = cVar17;\n            *(char *)(param_1 + 0x108) = cVar17;\n            lVar9 = lVar8;\n          } while (puVar11 != __s);\n        }\n        puVar13 = &DAT_00589518;\n        uVar16 = 0x7d;\n        while( true ) {\n          if (lVar8 == 0xff) {\n            *(undefined1 *)(param_1 + 0xff) = 0;\n            (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118));\n            *(long *)(param_1 + 0x140) = *(long *)(param_1 + 0x140) + 1;\n            lVar8 = 0;\n            lVar9 = 1;\n          }\n          else {\n            lVar9 = lVar8 + 1;\n          }\n          puVar13 = puVar13 + 1;\n          *(long *)(param_1 + 0x100) = lVar9;\n          *(undefined1 *)(param_1 + lVar8) = uVar16;\n          *(undefined1 *)(param_1 + 0x108) = uVar16;\n          if (puVar13 == &DAT_0058951b) break;\n          uVar16 = *puVar13;\n          lVar8 = lVar9;\n        }\n        piVar14 = *(int **)(piVar14 + 2);\n        iVar5 = *piVar14;\n      }" { (expression_statement "pcVar12 = "{default arg#";" (assignment_expression "pcVar12 = "{default arg#"" identifier = (string_literal ""{default arg#"" " string_content ")) ;) (expression_statement "cVar17 = '{';" (assignment_expression "cVar17 = '{'" identifier = (char_literal "'{'" ' character ')) ;) (expression_statement "lVar8 = *(long *)(param_1 + 0x100);" (assignment_expression "lVar8 = *(long *)(param_1 + 0x100)" identifier = (pointer_expression "*(long *)(param_1 + 0x100)" * (cast_expression "(long *)(param_1 + 0x100)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x100)" ( (binary_expression "param_1 + 0x100" identifier + number_literal) ))))) ;) (while_statement "while( true ) {\n          pcVar12 = pcVar12 + 1;\n          if (lVar8 == 0xff) {\n            *(undefined1 *)(param_1 + 0xff) = 0;\n            (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118));\n            *(long *)(param_1 + 0x140) = *(long *)(param_1 + 0x140) + 1;\n            lVar8 = 0;\n            lVar9 = 1;\n          }\n          else {\n            lVar9 = lVar8 + 1;\n          }\n          *(long *)(param_1 + 0x100) = lVar9;\n          *(char *)(param_1 + lVar8) = cVar17;\n          *(char *)(param_1 + 0x108) = cVar17;\n          if (pcVar12 == "") break;\n          cVar17 = *pcVar12;\n          lVar8 = lVar9;\n        }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n          pcVar12 = pcVar12 + 1;\n          if (lVar8 == 0xff) {\n            *(undefined1 *)(param_1 + 0xff) = 0;\n            (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118));\n            *(long *)(param_1 + 0x140) = *(long *)(param_1 + 0x140) + 1;\n            lVar8 = 0;\n            lVar9 = 1;\n          }\n          else {\n            lVar9 = lVar8 + 1;\n          }\n          *(long *)(param_1 + 0x100) = lVar9;\n          *(char *)(param_1 + lVar8) = cVar17;\n          *(char *)(param_1 + 0x108) = cVar17;\n          if (pcVar12 == "") break;\n          cVar17 = *pcVar12;\n          lVar8 = lVar9;\n        }" { (expression_statement "pcVar12 = pcVar12 + 1;" (assignment_expression "pcVar12 = pcVar12 + 1" identifier = (binary_expression "pcVar12 + 1" identifier + number_literal)) ;) (if_statement "if (lVar8 == 0xff) {\n            *(undefined1 *)(param_1 + 0xff) = 0;\n            (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118));\n            *(long *)(param_1 + 0x140) = *(long *)(param_1 + 0x140) + 1;\n            lVar8 = 0;\n            lVar9 = 1;\n          }\n          else {\n            lVar9 = lVar8 + 1;\n          }" if (parenthesized_expression "(lVar8 == 0xff)" ( (binary_expression "lVar8 == 0xff" identifier == number_literal) )) (compound_statement "{\n            *(undefined1 *)(param_1 + 0xff) = 0;\n            (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118));\n            *(long *)(param_1 + 0x140) = *(long *)(param_1 + 0x140) + 1;\n            lVar8 = 0;\n            lVar9 = 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 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118));" (call_expression "(**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118))" (parenthesized_expression "(**(code **)(param_1 + 0x110))" ( (pointer_expression "**(code **)(param_1 + 0x110)" * (pointer_expression "*(code **)(param_1 + 0x110)" * (cast_expression "(code **)(param_1 + 0x110)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x110)" ( (binary_expression "param_1 + 0x110" identifier + number_literal) ))))) )) (argument_list "(param_1,0xff,*(undefined8 *)(param_1 + 0x118))" ( identifier , number_literal , (pointer_expression "*(undefined8 *)(param_1 + 0x118)" * (cast_expression "(undefined8 *)(param_1 + 0x118)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x118)" ( (binary_expression "param_1 + 0x118" identifier + number_literal) )))) ))) ;) (expression_statement "*(long *)(param_1 + 0x140) = *(long *)(param_1 + 0x140) + 1;" (assignment_expression "*(long *)(param_1 + 0x140) = *(long *)(param_1 + 0x140) + 1" (pointer_expression "*(long *)(param_1 + 0x140)" * (cast_expression "(long *)(param_1 + 0x140)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x140)" ( (binary_expression "param_1 + 0x140" identifier + number_literal) )))) = (binary_expression "*(long *)(param_1 + 0x140) + 1" (pointer_expression "*(long *)(param_1 + 0x140)" * (cast_expression "(long *)(param_1 + 0x140)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x140)" ( (binary_expression "param_1 + 0x140" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "lVar8 = 0;" (assignment_expression "lVar8 = 0" identifier = number_literal) ;) (expression_statement "lVar9 = 1;" (assignment_expression "lVar9 = 1" identifier = number_literal) ;) }) (else_clause "else {\n            lVar9 = lVar8 + 1;\n          }" else (compound_statement "{\n            lVar9 = lVar8 + 1;\n          }" { (expression_statement "lVar9 = lVar8 + 1;" (assignment_expression "lVar9 = lVar8 + 1" identifier = (binary_expression "lVar8 + 1" identifier + number_literal)) ;) }))) (expression_statement "*(long *)(param_1 + 0x100) = lVar9;" (assignment_expression "*(long *)(param_1 + 0x100) = lVar9" (pointer_expression "*(long *)(param_1 + 0x100)" * (cast_expression "(long *)(param_1 + 0x100)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x100)" ( (binary_expression "param_1 + 0x100" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(char *)(param_1 + lVar8) = cVar17;" (assignment_expression "*(char *)(param_1 + lVar8) = cVar17" (pointer_expression "*(char *)(param_1 + lVar8)" * (cast_expression "(char *)(param_1 + lVar8)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + lVar8)" ( (binary_expression "param_1 + lVar8" identifier + identifier) )))) = identifier) ;) (expression_statement "*(char *)(param_1 + 0x108) = cVar17;" (assignment_expression "*(char *)(param_1 + 0x108) = cVar17" (pointer_expression "*(char *)(param_1 + 0x108)" * (cast_expression "(char *)(param_1 + 0x108)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x108)" ( (binary_expression "param_1 + 0x108" identifier + number_literal) )))) = identifier) ;) (if_statement "if (pcVar12 == "") break;" if (parenthesized_expression "(pcVar12 == "")" ( (binary_expression "pcVar12 == """ identifier == (string_literal """" " ")) )) (break_statement "break;" break ;)) (expression_statement "cVar17 = *pcVar12;" (assignment_expression "cVar17 = *pcVar12" identifier = (pointer_expression "*pcVar12" * identifier)) ;) (expression_statement "lVar8 = lVar9;" (assignment_expression "lVar8 = lVar9" identifier = identifier) ;) })) (expression_statement "__s = (uint *)(auStack_5b + 3);" (assignment_expression "__s = (uint *)(auStack_5b + 3)" identifier = (cast_expression "(uint *)(auStack_5b + 3)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(auStack_5b + 3)" ( (binary_expression "auStack_5b + 3" identifier + number_literal) )))) ;) (expression_statement "sprintf((char *)__s,"%d",(ulong)(piVar14[4] + 1));" (call_expression "sprintf((char *)__s,"%d",(ulong)(piVar14[4] + 1))" identifier (argument_list "((char *)__s,"%d",(ulong)(piVar14[4] + 1))" ( (cast_expression "(char *)__s" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) , (string_literal ""%d"" " string_content ") , (call_expression "(ulong)(piVar14[4] + 1)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(piVar14[4] + 1)" ( (binary_expression "piVar14[4] + 1" (subscript_expression "piVar14[4]" identifier [ number_literal ]) + number_literal) ))) ))) ;) (expression_statement "puVar11 = __s;" (assignment_expression "puVar11 = __s" identifier = identifier) ;) (do_statement "do {\n          puVar10 = puVar11;\n          uVar6 = *puVar10 + 0xfefefeff & ~*puVar10;\n          uVar7 = uVar6 & 0x80808080;\n          puVar11 = puVar10 + 1;\n        } while (uVar7 == 0);" do (compound_statement "{\n          puVar10 = puVar11;\n          uVar6 = *puVar10 + 0xfefefeff & ~*puVar10;\n          uVar7 = uVar6 & 0x80808080;\n          puVar11 = puVar10 + 1;\n        }" { (expression_statement "puVar10 = puVar11;" (assignment_expression "puVar10 = puVar11" identifier = identifier) ;) (expression_statement "uVar6 = *puVar10 + 0xfefefeff & ~*puVar10;" (assignment_expression "uVar6 = *puVar10 + 0xfefefeff & ~*puVar10" identifier = (binary_expression "*puVar10 + 0xfefefeff & ~*puVar10" (binary_expression "*puVar10 + 0xfefefeff" (pointer_expression "*puVar10" * identifier) + number_literal) & (unary_expression "~*puVar10" ~ (pointer_expression "*puVar10" * identifier)))) ;) (expression_statement "uVar7 = uVar6 & 0x80808080;" (assignment_expression "uVar7 = uVar6 & 0x80808080" identifier = (binary_expression "uVar6 & 0x80808080" identifier & number_literal)) ;) (expression_statement "puVar11 = puVar10 + 1;" (assignment_expression "puVar11 = puVar10 + 1" identifier = (binary_expression "puVar10 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar7 == 0)" ( (binary_expression "uVar7 == 0" identifier == number_literal) )) ;) (expression_statement "bVar18 = (uVar6 & 0x8080) == 0;" (assignment_expression "bVar18 = (uVar6 & 0x8080) == 0" identifier = (binary_expression "(uVar6 & 0x8080) == 0" (parenthesized_expression "(uVar6 & 0x8080)" ( (binary_expression "uVar6 & 0x8080" identifier & number_literal) )) == number_literal)) ;) (if_statement "if (bVar18) {\n          uVar7 = uVar7 >> 0x10;\n        }" if (parenthesized_expression "(bVar18)" ( identifier )) (compound_statement "{\n          uVar7 = uVar7 >> 0x10;\n        }" { (expression_statement "uVar7 = uVar7 >> 0x10;" (assignment_expression "uVar7 = uVar7 >> 0x10" identifier = (binary_expression "uVar7 >> 0x10" identifier >> number_literal)) ;) })) (if_statement "if (bVar18) {\n          puVar11 = (uint *)((long)puVar10 + 6);\n        }" if (parenthesized_expression "(bVar18)" ( identifier )) (compound_statement "{\n          puVar11 = (uint *)((long)puVar10 + 6);\n        }" { (expression_statement "puVar11 = (uint *)((long)puVar10 + 6);" (assignment_expression "puVar11 = (uint *)((long)puVar10 + 6)" identifier = (cast_expression "(uint *)((long)puVar10 + 6)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)puVar10 + 6)" ( (binary_expression "(long)puVar10 + 6" (cast_expression "(long)puVar10" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) ;) })) (expression_statement "lVar8 = *(long *)(param_1 + 0x100);" (assignment_expression "lVar8 = *(long *)(param_1 + 0x100)" identifier = (pointer_expression "*(long *)(param_1 + 0x100)" * (cast_expression "(long *)(param_1 + 0x100)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x100)" ( (binary_expression "param_1 + 0x100" identifier + number_literal) ))))) ;) (expression_statement "pcVar12 = (char *)((long)puVar11 +\n                          ((-3 - (ulong)CARRY1((byte)uVar7,(byte)uVar7)) - (long)__s));" (assignment_expression "pcVar12 = (char *)((long)puVar11 +\n                          ((-3 - (ulong)CARRY1((byte)uVar7,(byte)uVar7)) - (long)__s))" identifier = (cast_expression "(char *)((long)puVar11 +\n                          ((-3 - (ulong)CARRY1((byte)uVar7,(byte)uVar7)) - (long)__s))" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)puVar11 +\n                          ((-3 - (ulong)CARRY1((byte)uVar7,(byte)uVar7)) - (long)__s))" ( (binary_expression "(long)puVar11 +\n                          ((-3 - (ulong)CARRY1((byte)uVar7,(byte)uVar7)) - (long)__s)" (cast_expression "(long)puVar11" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + (parenthesized_expression "((-3 - (ulong)CARRY1((byte)uVar7,(byte)uVar7)) - (long)__s)" ( (binary_expression "(-3 - (ulong)CARRY1((byte)uVar7,(byte)uVar7)) - (long)__s" (parenthesized_expression "(-3 - (ulong)CARRY1((byte)uVar7,(byte)uVar7))" ( (binary_expression "-3 - (ulong)CARRY1((byte)uVar7,(byte)uVar7)" number_literal - (cast_expression "(ulong)CARRY1((byte)uVar7,(byte)uVar7)" ( (type_descriptor "ulong" type_identifier) ) (call_expression "CARRY1((byte)uVar7,(byte)uVar7)" identifier (argument_list "((byte)uVar7,(byte)uVar7)" ( (cast_expression "(byte)uVar7" ( (type_descriptor "byte" type_identifier) ) identifier) , (cast_expression "(byte)uVar7" ( (type_descriptor "byte" type_identifier) ) identifier) ))))) )) - (cast_expression "(long)__s" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) ))) )))) ;) (if_statement "if (pcVar12 != (char *)0x0) {\n          puVar11 = (uint *)((long)__s + (long)pcVar12);\n          lVar9 = lVar8;\n          do {\n            cVar17 = (char)*__s;\n            if (lVar9 == 0xff) {\n              *(undefined1 *)(param_1 + 0xff) = 0;\n              auStack_5b[2] = cVar17;\n              (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118));\n              *(long *)(param_1 + 0x140) = *(long *)(param_1 + 0x140) + 1;\n              lVar8 = 1;\n              lVar9 = 0;\n              cVar17 = auStack_5b[2];\n            }\n            else {\n              lVar8 = lVar9 + 1;\n            }\n            __s = (uint *)((long)__s + 1);\n            *(long *)(param_1 + 0x100) = lVar8;\n            *(char *)(param_1 + lVar9) = cVar17;\n            *(char *)(param_1 + 0x108) = cVar17;\n            lVar9 = lVar8;\n          } while (puVar11 != __s);\n        }" if (parenthesized_expression "(pcVar12 != (char *)0x0)" ( (binary_expression "pcVar12 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          puVar11 = (uint *)((long)__s + (long)pcVar12);\n          lVar9 = lVar8;\n          do {\n            cVar17 = (char)*__s;\n            if (lVar9 == 0xff) {\n              *(undefined1 *)(param_1 + 0xff) = 0;\n              auStack_5b[2] = cVar17;\n              (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118));\n              *(long *)(param_1 + 0x140) = *(long *)(param_1 + 0x140) + 1;\n              lVar8 = 1;\n              lVar9 = 0;\n              cVar17 = auStack_5b[2];\n            }\n            else {\n              lVar8 = lVar9 + 1;\n            }\n            __s = (uint *)((long)__s + 1);\n            *(long *)(param_1 + 0x100) = lVar8;\n            *(char *)(param_1 + lVar9) = cVar17;\n            *(char *)(param_1 + 0x108) = cVar17;\n            lVar9 = lVar8;\n          } while (puVar11 != __s);\n        }" { (expression_statement "puVar11 = (uint *)((long)__s + (long)pcVar12);" (assignment_expression "puVar11 = (uint *)((long)__s + (long)pcVar12)" identifier = (cast_expression "(uint *)((long)__s + (long)pcVar12)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)__s + (long)pcVar12)" ( (binary_expression "(long)__s + (long)pcVar12" (cast_expression "(long)__s" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + (cast_expression "(long)pcVar12" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) )))) ;) (expression_statement "lVar9 = lVar8;" (assignment_expression "lVar9 = lVar8" identifier = identifier) ;) (do_statement "do {\n            cVar17 = (char)*__s;\n            if (lVar9 == 0xff) {\n              *(undefined1 *)(param_1 + 0xff) = 0;\n              auStack_5b[2] = cVar17;\n              (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118));\n              *(long *)(param_1 + 0x140) = *(long *)(param_1 + 0x140) + 1;\n              lVar8 = 1;\n              lVar9 = 0;\n              cVar17 = auStack_5b[2];\n            }\n            else {\n              lVar8 = lVar9 + 1;\n            }\n            __s = (uint *)((long)__s + 1);\n            *(long *)(param_1 + 0x100) = lVar8;\n            *(char *)(param_1 + lVar9) = cVar17;\n            *(char *)(param_1 + 0x108) = cVar17;\n            lVar9 = lVar8;\n          } while (puVar11 != __s);" do (compound_statement "{\n            cVar17 = (char)*__s;\n            if (lVar9 == 0xff) {\n              *(undefined1 *)(param_1 + 0xff) = 0;\n              auStack_5b[2] = cVar17;\n              (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118));\n              *(long *)(param_1 + 0x140) = *(long *)(param_1 + 0x140) + 1;\n              lVar8 = 1;\n              lVar9 = 0;\n              cVar17 = auStack_5b[2];\n            }\n            else {\n              lVar8 = lVar9 + 1;\n            }\n            __s = (uint *)((long)__s + 1);\n            *(long *)(param_1 + 0x100) = lVar8;\n            *(char *)(param_1 + lVar9) = cVar17;\n            *(char *)(param_1 + 0x108) = cVar17;\n            lVar9 = lVar8;\n          }" { (expression_statement "cVar17 = (char)*__s;" (assignment_expression "cVar17 = (char)*__s" identifier = (cast_expression "(char)*__s" ( (type_descriptor "char" primitive_type) ) (pointer_expression "*__s" * identifier))) ;) (if_statement "if (lVar9 == 0xff) {\n              *(undefined1 *)(param_1 + 0xff) = 0;\n              auStack_5b[2] = cVar17;\n              (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118));\n              *(long *)(param_1 + 0x140) = *(long *)(param_1 + 0x140) + 1;\n              lVar8 = 1;\n              lVar9 = 0;\n              cVar17 = auStack_5b[2];\n            }\n            else {\n              lVar8 = lVar9 + 1;\n            }" if (parenthesized_expression "(lVar9 == 0xff)" ( (binary_expression "lVar9 == 0xff" identifier == number_literal) )) (compound_statement "{\n              *(undefined1 *)(param_1 + 0xff) = 0;\n              auStack_5b[2] = cVar17;\n              (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118));\n              *(long *)(param_1 + 0x140) = *(long *)(param_1 + 0x140) + 1;\n              lVar8 = 1;\n              lVar9 = 0;\n              cVar17 = auStack_5b[2];\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 "auStack_5b[2] = cVar17;" (assignment_expression "auStack_5b[2] = cVar17" (subscript_expression "auStack_5b[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "(**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118));" (call_expression "(**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118))" (parenthesized_expression "(**(code **)(param_1 + 0x110))" ( (pointer_expression "**(code **)(param_1 + 0x110)" * (pointer_expression "*(code **)(param_1 + 0x110)" * (cast_expression "(code **)(param_1 + 0x110)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x110)" ( (binary_expression "param_1 + 0x110" identifier + number_literal) ))))) )) (argument_list "(param_1,0xff,*(undefined8 *)(param_1 + 0x118))" ( identifier , number_literal , (pointer_expression "*(undefined8 *)(param_1 + 0x118)" * (cast_expression "(undefined8 *)(param_1 + 0x118)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x118)" ( (binary_expression "param_1 + 0x118" identifier + number_literal) )))) ))) ;) (expression_statement "*(long *)(param_1 + 0x140) = *(long *)(param_1 + 0x140) + 1;" (assignment_expression "*(long *)(param_1 + 0x140) = *(long *)(param_1 + 0x140) + 1" (pointer_expression "*(long *)(param_1 + 0x140)" * (cast_expression "(long *)(param_1 + 0x140)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x140)" ( (binary_expression "param_1 + 0x140" identifier + number_literal) )))) = (binary_expression "*(long *)(param_1 + 0x140) + 1" (pointer_expression "*(long *)(param_1 + 0x140)" * (cast_expression "(long *)(param_1 + 0x140)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x140)" ( (binary_expression "param_1 + 0x140" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "lVar8 = 1;" (assignment_expression "lVar8 = 1" identifier = number_literal) ;) (expression_statement "lVar9 = 0;" (assignment_expression "lVar9 = 0" identifier = number_literal) ;) (expression_statement "cVar17 = auStack_5b[2];" (assignment_expression "cVar17 = auStack_5b[2]" identifier = (subscript_expression "auStack_5b[2]" identifier [ number_literal ])) ;) }) (else_clause "else {\n              lVar8 = lVar9 + 1;\n            }" else (compound_statement "{\n              lVar8 = lVar9 + 1;\n            }" { (expression_statement "lVar8 = lVar9 + 1;" (assignment_expression "lVar8 = lVar9 + 1" identifier = (binary_expression "lVar9 + 1" identifier + number_literal)) ;) }))) (expression_statement "__s = (uint *)((long)__s + 1);" (assignment_expression "__s = (uint *)((long)__s + 1)" identifier = (cast_expression "(uint *)((long)__s + 1)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)__s + 1)" ( (binary_expression "(long)__s + 1" (cast_expression "(long)__s" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) ;) (expression_statement "*(long *)(param_1 + 0x100) = lVar8;" (assignment_expression "*(long *)(param_1 + 0x100) = lVar8" (pointer_expression "*(long *)(param_1 + 0x100)" * (cast_expression "(long *)(param_1 + 0x100)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x100)" ( (binary_expression "param_1 + 0x100" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(char *)(param_1 + lVar9) = cVar17;" (assignment_expression "*(char *)(param_1 + lVar9) = cVar17" (pointer_expression "*(char *)(param_1 + lVar9)" * (cast_expression "(char *)(param_1 + lVar9)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + lVar9)" ( (binary_expression "param_1 + lVar9" identifier + identifier) )))) = identifier) ;) (expression_statement "*(char *)(param_1 + 0x108) = cVar17;" (assignment_expression "*(char *)(param_1 + 0x108) = cVar17" (pointer_expression "*(char *)(param_1 + 0x108)" * (cast_expression "(char *)(param_1 + 0x108)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x108)" ( (binary_expression "param_1 + 0x108" identifier + number_literal) )))) = identifier) ;) (expression_statement "lVar9 = lVar8;" (assignment_expression "lVar9 = lVar8" identifier = identifier) ;) }) while (parenthesized_expression "(puVar11 != __s)" ( (binary_expression "puVar11 != __s" identifier != identifier) )) ;) })) (expression_statement "puVar13 = &DAT_00589518;" (assignment_expression "puVar13 = &DAT_00589518" identifier = (pointer_expression "&DAT_00589518" & identifier)) ;) (expression_statement "uVar16 = 0x7d;" (assignment_expression "uVar16 = 0x7d" identifier = number_literal) ;) (while_statement "while( true ) {\n          if (lVar8 == 0xff) {\n            *(undefined1 *)(param_1 + 0xff) = 0;\n            (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118));\n            *(long *)(param_1 + 0x140) = *(long *)(param_1 + 0x140) + 1;\n            lVar8 = 0;\n            lVar9 = 1;\n          }\n          else {\n            lVar9 = lVar8 + 1;\n          }\n          puVar13 = puVar13 + 1;\n          *(long *)(param_1 + 0x100) = lVar9;\n          *(undefined1 *)(param_1 + lVar8) = uVar16;\n          *(undefined1 *)(param_1 + 0x108) = uVar16;\n          if (puVar13 == &DAT_0058951b) break;\n          uVar16 = *puVar13;\n          lVar8 = lVar9;\n        }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n          if (lVar8 == 0xff) {\n            *(undefined1 *)(param_1 + 0xff) = 0;\n            (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118));\n            *(long *)(param_1 + 0x140) = *(long *)(param_1 + 0x140) + 1;\n            lVar8 = 0;\n            lVar9 = 1;\n          }\n          else {\n            lVar9 = lVar8 + 1;\n          }\n          puVar13 = puVar13 + 1;\n          *(long *)(param_1 + 0x100) = lVar9;\n          *(undefined1 *)(param_1 + lVar8) = uVar16;\n          *(undefined1 *)(param_1 + 0x108) = uVar16;\n          if (puVar13 == &DAT_0058951b) break;\n          uVar16 = *puVar13;\n          lVar8 = lVar9;\n        }" { (if_statement "if (lVar8 == 0xff) {\n            *(undefined1 *)(param_1 + 0xff) = 0;\n            (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118));\n            *(long *)(param_1 + 0x140) = *(long *)(param_1 + 0x140) + 1;\n            lVar8 = 0;\n            lVar9 = 1;\n          }\n          else {\n            lVar9 = lVar8 + 1;\n          }" if (parenthesized_expression "(lVar8 == 0xff)" ( (binary_expression "lVar8 == 0xff" identifier == number_literal) )) (compound_statement "{\n            *(undefined1 *)(param_1 + 0xff) = 0;\n            (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118));\n            *(long *)(param_1 + 0x140) = *(long *)(param_1 + 0x140) + 1;\n            lVar8 = 0;\n            lVar9 = 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 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118));" (call_expression "(**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118))" (parenthesized_expression "(**(code **)(param_1 + 0x110))" ( (pointer_expression "**(code **)(param_1 + 0x110)" * (pointer_expression "*(code **)(param_1 + 0x110)" * (cast_expression "(code **)(param_1 + 0x110)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x110)" ( (binary_expression "param_1 + 0x110" identifier + number_literal) ))))) )) (argument_list "(param_1,0xff,*(undefined8 *)(param_1 + 0x118))" ( identifier , number_literal , (pointer_expression "*(undefined8 *)(param_1 + 0x118)" * (cast_expression "(undefined8 *)(param_1 + 0x118)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x118)" ( (binary_expression "param_1 + 0x118" identifier + number_literal) )))) ))) ;) (expression_statement "*(long *)(param_1 + 0x140) = *(long *)(param_1 + 0x140) + 1;" (assignment_expression "*(long *)(param_1 + 0x140) = *(long *)(param_1 + 0x140) + 1" (pointer_expression "*(long *)(param_1 + 0x140)" * (cast_expression "(long *)(param_1 + 0x140)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x140)" ( (binary_expression "param_1 + 0x140" identifier + number_literal) )))) = (binary_expression "*(long *)(param_1 + 0x140) + 1" (pointer_expression "*(long *)(param_1 + 0x140)" * (cast_expression "(long *)(param_1 + 0x140)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x140)" ( (binary_expression "param_1 + 0x140" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "lVar8 = 0;" (assignment_expression "lVar8 = 0" identifier = number_literal) ;) (expression_statement "lVar9 = 1;" (assignment_expression "lVar9 = 1" identifier = number_literal) ;) }) (else_clause "else {\n            lVar9 = lVar8 + 1;\n          }" else (compound_statement "{\n            lVar9 = lVar8 + 1;\n          }" { (expression_statement "lVar9 = lVar8 + 1;" (assignment_expression "lVar9 = lVar8 + 1" identifier = (binary_expression "lVar8 + 1" identifier + number_literal)) ;) }))) (expression_statement "puVar13 = puVar13 + 1;" (assignment_expression "puVar13 = puVar13 + 1" identifier = (binary_expression "puVar13 + 1" identifier + number_literal)) ;) (expression_statement "*(long *)(param_1 + 0x100) = lVar9;" (assignment_expression "*(long *)(param_1 + 0x100) = lVar9" (pointer_expression "*(long *)(param_1 + 0x100)" * (cast_expression "(long *)(param_1 + 0x100)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x100)" ( (binary_expression "param_1 + 0x100" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined1 *)(param_1 + lVar8) = uVar16;" (assignment_expression "*(undefined1 *)(param_1 + lVar8) = uVar16" (pointer_expression "*(undefined1 *)(param_1 + lVar8)" * (cast_expression "(undefined1 *)(param_1 + lVar8)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + lVar8)" ( (binary_expression "param_1 + lVar8" identifier + identifier) )))) = identifier) ;) (expression_statement "*(undefined1 *)(param_1 + 0x108) = uVar16;" (assignment_expression "*(undefined1 *)(param_1 + 0x108) = uVar16" (pointer_expression "*(undefined1 *)(param_1 + 0x108)" * (cast_expression "(undefined1 *)(param_1 + 0x108)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x108)" ( (binary_expression "param_1 + 0x108" identifier + number_literal) )))) = identifier) ;) (if_statement "if (puVar13 == &DAT_0058951b) break;" if (parenthesized_expression "(puVar13 == &DAT_0058951b)" ( (binary_expression "puVar13 == &DAT_0058951b" identifier == (pointer_expression "&DAT_0058951b" & identifier)) )) (break_statement "break;" break ;)) (expression_statement "uVar16 = *puVar13;" (assignment_expression "uVar16 = *puVar13" identifier = (pointer_expression "*puVar13" * identifier)) ;) (expression_statement "lVar8 = lVar9;" (assignment_expression "lVar8 = lVar9" identifier = identifier) ;) })) (expression_statement "piVar14 = *(int **)(piVar14 + 2);" (assignment_expression "piVar14 = *(int **)(piVar14 + 2)" identifier = (pointer_expression "*(int **)(piVar14 + 2)" * (cast_expression "(int **)(piVar14 + 2)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(piVar14 + 2)" ( (binary_expression "piVar14 + 2" identifier + number_literal) ))))) ;) (expression_statement "iVar5 = *piVar14;" (assignment_expression "iVar5 = *piVar14" identifier = (pointer_expression "*piVar14" * identifier)) ;) })) (if_statement "if (iVar5 - 0x1cU < 0x34) {\n        uVar4 = 0xd00000000001fU >> ((ulong)(iVar5 - 0x1cU) & 0x3f) & 1;\n        while (uVar4 != 0) {\n          piVar14 = *(int **)(piVar14 + 2);\n          if (0x33 < *piVar14 - 0x1cU) break;\n          uVar4 = 1L << ((byte)(*piVar14 - 0x1cU) & 0x3f) & 0xd00000000001f;\n        }\n      }" if (parenthesized_expression "(iVar5 - 0x1cU < 0x34)" ( (binary_expression "iVar5 - 0x1cU < 0x34" (binary_expression "iVar5 - 0x1cU" identifier - number_literal) < number_literal) )) (compound_statement "{\n        uVar4 = 0xd00000000001fU >> ((ulong)(iVar5 - 0x1cU) & 0x3f) & 1;\n        while (uVar4 != 0) {\n          piVar14 = *(int **)(piVar14 + 2);\n          if (0x33 < *piVar14 - 0x1cU) break;\n          uVar4 = 1L << ((byte)(*piVar14 - 0x1cU) & 0x3f) & 0xd00000000001f;\n        }\n      }" { (expression_statement "uVar4 = 0xd00000000001fU >> ((ulong)(iVar5 - 0x1cU) & 0x3f) & 1;" (assignment_expression "uVar4 = 0xd00000000001fU >> ((ulong)(iVar5 - 0x1cU) & 0x3f) & 1" identifier = (binary_expression "0xd00000000001fU >> ((ulong)(iVar5 - 0x1cU) & 0x3f) & 1" (binary_expression "0xd00000000001fU >> ((ulong)(iVar5 - 0x1cU) & 0x3f)" number_literal >> (parenthesized_expression "((ulong)(iVar5 - 0x1cU) & 0x3f)" ( (binary_expression "(ulong)(iVar5 - 0x1cU) & 0x3f" (call_expression "(ulong)(iVar5 - 0x1cU)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(iVar5 - 0x1cU)" ( (binary_expression "iVar5 - 0x1cU" identifier - number_literal) ))) & number_literal) ))) & number_literal)) ;) (while_statement "while (uVar4 != 0) {\n          piVar14 = *(int **)(piVar14 + 2);\n          if (0x33 < *piVar14 - 0x1cU) break;\n          uVar4 = 1L << ((byte)(*piVar14 - 0x1cU) & 0x3f) & 0xd00000000001f;\n        }" while (parenthesized_expression "(uVar4 != 0)" ( (binary_expression "uVar4 != 0" identifier != number_literal) )) (compound_statement "{\n          piVar14 = *(int **)(piVar14 + 2);\n          if (0x33 < *piVar14 - 0x1cU) break;\n          uVar4 = 1L << ((byte)(*piVar14 - 0x1cU) & 0x3f) & 0xd00000000001f;\n        }" { (expression_statement "piVar14 = *(int **)(piVar14 + 2);" (assignment_expression "piVar14 = *(int **)(piVar14 + 2)" identifier = (pointer_expression "*(int **)(piVar14 + 2)" * (cast_expression "(int **)(piVar14 + 2)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(piVar14 + 2)" ( (binary_expression "piVar14 + 2" identifier + number_literal) ))))) ;) (if_statement "if (0x33 < *piVar14 - 0x1cU) break;" if (parenthesized_expression "(0x33 < *piVar14 - 0x1cU)" ( (binary_expression "0x33 < *piVar14 - 0x1cU" number_literal < (binary_expression "*piVar14 - 0x1cU" (pointer_expression "*piVar14" * identifier) - number_literal)) )) (break_statement "break;" break ;)) (expression_statement "uVar4 = 1L << ((byte)(*piVar14 - 0x1cU) & 0x3f) & 0xd00000000001f;" (assignment_expression "uVar4 = 1L << ((byte)(*piVar14 - 0x1cU) & 0x3f) & 0xd00000000001f" identifier = (binary_expression "1L << ((byte)(*piVar14 - 0x1cU) & 0x3f) & 0xd00000000001f" (binary_expression "1L << ((byte)(*piVar14 - 0x1cU) & 0x3f)" number_literal << (parenthesized_expression "((byte)(*piVar14 - 0x1cU) & 0x3f)" ( (binary_expression "(byte)(*piVar14 - 0x1cU) & 0x3f" (call_expression "(byte)(*piVar14 - 0x1cU)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(*piVar14 - 0x1cU)" ( (binary_expression "*piVar14 - 0x1cU" (pointer_expression "*piVar14" * identifier) - number_literal) ))) & number_literal) ))) & number_literal)) ;) })) })) (expression_statement "FUN_004916e0(param_1,param_2,piVar14);" (call_expression "FUN_004916e0(param_1,param_2,piVar14)" identifier (argument_list "(param_1,param_2,piVar14)" ( identifier , identifier , identifier ))) ;) (expression_statement "*(undefined8 *)(param_1 + 0x120) = uVar1;" (assignment_expression "*(undefined8 *)(param_1 + 0x120) = uVar1" (pointer_expression "*(undefined8 *)(param_1 + 0x120)" * (cast_expression "(undefined8 *)(param_1 + 0x120)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x120)" ( (binary_expression "param_1 + 0x120" identifier + number_literal) )))) = identifier) ;) (return_statement "return;" return ;) })) (expression_statement "FUN_00491770(param_1,param_2);" (call_expression "FUN_00491770(param_1,param_2)" identifier (argument_list "(param_1,param_2)" ( identifier , identifier ))) ;) (expression_statement "*(undefined8 *)(param_1 + 0x120) = uVar1;" (assignment_expression "*(undefined8 *)(param_1 + 0x120) = uVar1" (pointer_expression "*(undefined8 *)(param_1 + 0x120)" * (cast_expression "(undefined8 *)(param_1 + 0x120)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x120)" ( (binary_expression "param_1 + 0x120" identifier + number_literal) )))) = identifier) ;) })) (labeled_statement "LAB_00492458:\n  param_3 = (long *)*param_3;" statement_identifier : (expression_statement "param_3 = (long *)*param_3;" (assignment_expression "param_3 = (long *)*param_3" identifier = (cast_expression "(long *)*param_3" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_3" * identifier))) ;)) (if_statement "if (param_3 == (long *)0x0) {\n    return;\n  }" if (parenthesized_expression "(param_3 == (long *)0x0)" ( (binary_expression "param_3 == (long *)0x0" identifier == (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    return;\n  }" { (return_statement "return;" return ;) })) (expression_statement "iVar5 = *(int *)(param_1 + 0x130);" (assignment_expression "iVar5 = *(int *)(param_1 + 0x130)" identifier = (pointer_expression "*(int *)(param_1 + 0x130)" * (cast_expression "(int *)(param_1 + 0x130)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x130)" ( (binary_expression "param_1 + 0x130" identifier + number_literal) ))))) ;) (goto_statement "goto joined_r0x004923f2;" goto statement_identifier ;) })))
(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  d_print_template *pdVar2;\n  d_print_mod *pdVar3;\n  void *pvVar4;\n  ulong uVar5;\n  demangle_component_type dVar6;\n  uint uVar7;\n  uint uVar8;\n  size_t sVar9;\n  size_t sVar10;\n  uint *puVar11;\n  uint *puVar12;\n  char *pcVar13;\n  uint *__s;\n  demangle_component *pdVar14;\n  char cVar15;\n  bool bVar16;\n  undefined1 auStack_5b [3];\n  char buf [25];\n  \n  if (mods == (d_print_mod *)0x0) {\n    return;\n  }\n  iVar1 = dpi->demangle_failure;\njoined_r0x004923f2:\n  if (iVar1 != 0) {\n    return;\n  }\n  if (mods->printed == 0) {\n    pdVar14 = mods->mod;\n    dVar6 = pdVar14->type;\n    if (suffix == 0) {\n      if (dVar6 - DEMANGLE_COMPONENT_RESTRICT_THIS < 0x34) {\n        if ((0xd00000000001fU >> ((ulong)(dVar6 - DEMANGLE_COMPONENT_RESTRICT_THIS) & 0x3f) & 1) !=\n            0) goto LAB_00492458;\n        goto LAB_00492416;\n      }\n      mods->printed = 1;\n      pdVar2 = dpi->templates;\n      dpi->templates = mods->templates;\n    }\n    else {\nLAB_00492416:\n      mods->printed = 1;\n      pdVar2 = dpi->templates;\n      dpi->templates = mods->templates;\n      if (dVar6 == DEMANGLE_COMPONENT_FUNCTION_TYPE) {\n        d_print_function_type(dpi,options,(demangle_component *)((long)&pdVar14->u + 8),mods->next);\n        dpi->templates = pdVar2;\n        return;\n      }\n    }\n    if (dVar6 == DEMANGLE_COMPONENT_ARRAY_TYPE) {\n      d_print_array_type(dpi,options,(demangle_component *)&(pdVar14->u).s_name,mods->next);\n      dpi->templates = pdVar2;\n      return;\n    }\n    if (dVar6 == DEMANGLE_COMPONENT_LOCAL_NAME) {\n      pdVar3 = dpi->modifiers;\n      pdVar14 = (pdVar14->u).s_fixed.length;\n      dpi->modifiers = (d_print_mod *)0x0;\n      d_print_comp(dpi,options,pdVar14);\n      dpi->modifiers = pdVar3;\n      sVar9 = dpi->len;\n      if ((options & 4U) == 0) {\n        pcVar13 = "::";\n        cVar15 = ':';\n        while( true ) {\n          if (sVar9 == 0xff) {\n            pvVar4 = dpi->opaque;\n            dpi->buf[0xff] = '\0';\n            (*dpi->callback)(dpi->buf,0xff,pvVar4);\n            dpi->flush_count = dpi->flush_count + 1;\n            sVar9 = 0;\n            sVar10 = 1;\n          }\n          else {\n            sVar10 = sVar9 + 1;\n          }\n          pcVar13 = pcVar13 + 1;\n          dpi->len = sVar10;\n          dpi->buf[sVar9] = cVar15;\n          dpi->last_char = cVar15;\n          if (pcVar13 == "") break;\n          cVar15 = *pcVar13;\n          sVar9 = sVar10;\n        }\n      }\n      else {\n        sVar10 = sVar9 + 1;\n        if (sVar9 == 0xff) {\n          pvVar4 = dpi->opaque;\n          dpi->buf[0xff] = '\0';\n          (*dpi->callback)(dpi->buf,0xff,pvVar4);\n          dpi->flush_count = dpi->flush_count + 1;\n          sVar10 = 1;\n          sVar9 = 0;\n        }\n        dpi->len = sVar10;\n        dpi->buf[sVar9] = '.';\n        dpi->last_char = '.';\n      }\n      pdVar14 = (mods->mod->u).s_extended_operator.name;\n      dVar6 = pdVar14->type;\n      if (dVar6 == DEMANGLE_COMPONENT_DEFAULT_ARG) {\n        pcVar13 = "{default arg#";\n        cVar15 = '{';\n        sVar9 = dpi->len;\n        while( true ) {\n          pcVar13 = pcVar13 + 1;\n          if (sVar9 == 0xff) {\n            pvVar4 = dpi->opaque;\n            dpi->buf[0xff] = '\0';\n            (*dpi->callback)(dpi->buf,0xff,pvVar4);\n            dpi->flush_count = dpi->flush_count + 1;\n            sVar9 = 0;\n            sVar10 = 1;\n          }\n          else {\n            sVar10 = sVar9 + 1;\n          }\n          dpi->len = sVar10;\n          dpi->buf[sVar9] = cVar15;\n          dpi->last_char = cVar15;\n          if (pcVar13 == "") break;\n          cVar15 = *pcVar13;\n          sVar9 = sVar10;\n        }\n        __s = (uint *)buf;\n        sprintf((char *)__s,"%d",(ulong)((pdVar14->u).s_name.len + 1));\n        puVar12 = __s;\n        do {\n          puVar11 = puVar12;\n          uVar7 = *puVar11 + 0xfefefeff & ~*puVar11;\n          uVar8 = uVar7 & 0x80808080;\n          puVar12 = puVar11 + 1;\n        } while (uVar8 == 0);\n        bVar16 = (uVar7 & 0x8080) == 0;\n        if (bVar16) {\n          uVar8 = uVar8 >> 0x10;\n        }\n        if (bVar16) {\n          puVar12 = (uint *)((long)puVar11 + 6);\n        }\n        sVar9 = dpi->len;\n        pcVar13 = (char *)((long)puVar12 +\n                          ((-3 - (ulong)CARRY1((byte)uVar8,(byte)uVar8)) - (long)__s));\n        if (pcVar13 != (char *)0x0) {\n          puVar12 = (uint *)((long)__s + (long)pcVar13);\n          sVar10 = sVar9;\n          do {\n            cVar15 = (char)*__s;\n            if (sVar10 == 0xff) {\n              pvVar4 = dpi->opaque;\n              dpi->buf[0xff] = '\0';\n              auStack_5b[2] = cVar15;\n              (*dpi->callback)(dpi->buf,0xff,pvVar4);\n              dpi->flush_count = dpi->flush_count + 1;\n              sVar9 = 1;\n              sVar10 = 0;\n              cVar15 = auStack_5b[2];\n            }\n            else {\n              sVar9 = sVar10 + 1;\n            }\n            __s = (uint *)((long)__s + 1);\n            dpi->len = sVar9;\n            dpi->buf[sVar10] = cVar15;\n            dpi->last_char = cVar15;\n            sVar10 = sVar9;\n          } while (puVar12 != __s);\n        }\n        pcVar13 = "}::";\n        cVar15 = '}';\n        while( true ) {\n          if (sVar9 == 0xff) {\n            pvVar4 = dpi->opaque;\n            dpi->buf[0xff] = '\0';\n            (*dpi->callback)(dpi->buf,0xff,pvVar4);\n            dpi->flush_count = dpi->flush_count + 1;\n            sVar9 = 0;\n            sVar10 = 1;\n          }\n          else {\n            sVar10 = sVar9 + 1;\n          }\n          pcVar13 = pcVar13 + 1;\n          dpi->len = sVar10;\n          dpi->buf[sVar9] = cVar15;\n          dpi->last_char = cVar15;\n          if (pcVar13 == "") break;\n          cVar15 = *pcVar13;\n          sVar9 = sVar10;\n        }\n        pdVar14 = (pdVar14->u).s_fixed.length;\n        dVar6 = pdVar14->type;\n      }\n      if (dVar6 - DEMANGLE_COMPONENT_RESTRICT_THIS < 0x34) {\n        uVar5 = 0xd00000000001fU >> ((ulong)(dVar6 - DEMANGLE_COMPONENT_RESTRICT_THIS) & 0x3f) & 1;\n        while (uVar5 != 0) {\n          pdVar14 = (pdVar14->u).s_fixed.length;\n          uVar8 = pdVar14->type - DEMANGLE_COMPONENT_RESTRICT_THIS;\n          if (0x33 < uVar8) break;\n          uVar5 = 1L << ((byte)uVar8 & 0x3f) & 0xd00000000001f;\n        }\n      }\n      d_print_comp(dpi,options,pdVar14);\n      dpi->templates = pdVar2;\n      return;\n    }\n    d_print_mod(dpi,options,pdVar14);\n    dpi->templates = pdVar2;\n  }\nLAB_00492458:\n  mods = mods->next;\n  if (mods == (d_print_mod *)0x0) {\n    return;\n  }\n  iVar1 = dpi->demangle_failure;\n  goto joined_r0x004923f2;\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  d_print_template *pdVar2;\n  d_print_mod *pdVar3;\n  void *pvVar4;\n  ulong uVar5;\n  demangle_component_type dVar6;\n  uint uVar7;\n  uint uVar8;\n  size_t sVar9;\n  size_t sVar10;\n  uint *puVar11;\n  uint *puVar12;\n  char *pcVar13;\n  uint *__s;\n  demangle_component *pdVar14;\n  char cVar15;\n  bool bVar16;\n  undefined1 auStack_5b [3];\n  char buf [25];\n  \n  if (mods == (d_print_mod *)0x0) {\n    return;\n  }\n  iVar1 = dpi->demangle_failure;\njoined_r0x004923f2:\n  if (iVar1 != 0) {\n    return;\n  }\n  if (mods->printed == 0) {\n    pdVar14 = mods->mod;\n    dVar6 = pdVar14->type;\n    if (suffix == 0) {\n      if (dVar6 - DEMANGLE_COMPONENT_RESTRICT_THIS < 0x34) {\n        if ((0xd00000000001fU >> ((ulong)(dVar6 - DEMANGLE_COMPONENT_RESTRICT_THIS) & 0x3f) & 1) !=\n            0) goto LAB_00492458;\n        goto LAB_00492416;\n      }\n      mods->printed = 1;\n      pdVar2 = dpi->templates;\n      dpi->templates = mods->templates;\n    }\n    else {\nLAB_00492416:\n      mods->printed = 1;\n      pdVar2 = dpi->templates;\n      dpi->templates = mods->templates;\n      if (dVar6 == DEMANGLE_COMPONENT_FUNCTION_TYPE) {\n        d_print_function_type(dpi,options,(demangle_component *)((long)&pdVar14->u + 8),mods->next);\n        dpi->templates = pdVar2;\n        return;\n      }\n    }\n    if (dVar6 == DEMANGLE_COMPONENT_ARRAY_TYPE) {\n      d_print_array_type(dpi,options,(demangle_component *)&(pdVar14->u).s_name,mods->next);\n      dpi->templates = pdVar2;\n      return;\n    }\n    if (dVar6 == DEMANGLE_COMPONENT_LOCAL_NAME) {\n      pdVar3 = dpi->modifiers;\n      pdVar14 = (pdVar14->u).s_fixed.length;\n      dpi->modifiers = (d_print_mod *)0x0;\n      d_print_comp(dpi,options,pdVar14);\n      dpi->modifiers = pdVar3;\n      sVar9 = dpi->len;\n      if ((options & 4U) == 0) {\n        pcVar13 = "::";\n        cVar15 = ':';\n        while( true ) {\n          if (sVar9 == 0xff) {\n            pvVar4 = dpi->opaque;\n            dpi->buf[0xff] = '\0';\n            (*dpi->callback)(dpi->buf,0xff,pvVar4);\n            dpi->flush_count = dpi->flush_count + 1;\n            sVar9 = 0;\n            sVar10 = 1;\n          }\n          else {\n            sVar10 = sVar9 + 1;\n          }\n          pcVar13 = pcVar13 + 1;\n          dpi->len = sVar10;\n          dpi->buf[sVar9] = cVar15;\n          dpi->last_char = cVar15;\n          if (pcVar13 == "") break;\n          cVar15 = *pcVar13;\n          sVar9 = sVar10;\n        }\n      }\n      else {\n        sVar10 = sVar9 + 1;\n        if (sVar9 == 0xff) {\n          pvVar4 = dpi->opaque;\n          dpi->buf[0xff] = '\0';\n          (*dpi->callback)(dpi->buf,0xff,pvVar4);\n          dpi->flush_count = dpi->flush_count + 1;\n          sVar10 = 1;\n          sVar9 = 0;\n        }\n        dpi->len = sVar10;\n        dpi->buf[sVar9] = '.';\n        dpi->last_char = '.';\n      }\n      pdVar14 = (mods->mod->u).s_extended_operator.name;\n      dVar6 = pdVar14->type;\n      if (dVar6 == DEMANGLE_COMPONENT_DEFAULT_ARG) {\n        pcVar13 = "{default arg#";\n        cVar15 = '{';\n        sVar9 = dpi->len;\n        while( true ) {\n          pcVar13 = pcVar13 + 1;\n          if (sVar9 == 0xff) {\n            pvVar4 = dpi->opaque;\n            dpi->buf[0xff] = '\0';\n            (*dpi->callback)(dpi->buf,0xff,pvVar4);\n            dpi->flush_count = dpi->flush_count + 1;\n            sVar9 = 0;\n            sVar10 = 1;\n          }\n          else {\n            sVar10 = sVar9 + 1;\n          }\n          dpi->len = sVar10;\n          dpi->buf[sVar9] = cVar15;\n          dpi->last_char = cVar15;\n          if (pcVar13 == "") break;\n          cVar15 = *pcVar13;\n          sVar9 = sVar10;\n        }\n        __s = (uint *)buf;\n        sprintf((char *)__s,"%d",(ulong)((pdVar14->u).s_name.len + 1));\n        puVar12 = __s;\n        do {\n          puVar11 = puVar12;\n          uVar7 = *puVar11 + 0xfefefeff & ~*puVar11;\n          uVar8 = uVar7 & 0x80808080;\n          puVar12 = puVar11 + 1;\n        } while (uVar8 == 0);\n        bVar16 = (uVar7 & 0x8080) == 0;\n        if (bVar16) {\n          uVar8 = uVar8 >> 0x10;\n        }\n        if (bVar16) {\n          puVar12 = (uint *)((long)puVar11 + 6);\n        }\n        sVar9 = dpi->len;\n        pcVar13 = (char *)((long)puVar12 +\n                          ((-3 - (ulong)CARRY1((byte)uVar8,(byte)uVar8)) - (long)__s));\n        if (pcVar13 != (char *)0x0) {\n          puVar12 = (uint *)((long)__s + (long)pcVar13);\n          sVar10 = sVar9;\n          do {\n            cVar15 = (char)*__s;\n            if (sVar10 == 0xff) {\n              pvVar4 = dpi->opaque;\n              dpi->buf[0xff] = '\0';\n              auStack_5b[2] = cVar15;\n              (*dpi->callback)(dpi->buf,0xff,pvVar4);\n              dpi->flush_count = dpi->flush_count + 1;\n              sVar9 = 1;\n              sVar10 = 0;\n              cVar15 = auStack_5b[2];\n            }\n            else {\n              sVar9 = sVar10 + 1;\n            }\n            __s = (uint *)((long)__s + 1);\n            dpi->len = sVar9;\n            dpi->buf[sVar10] = cVar15;\n            dpi->last_char = cVar15;\n            sVar10 = sVar9;\n          } while (puVar12 != __s);\n        }\n        pcVar13 = "}::";\n        cVar15 = '}';\n        while( true ) {\n          if (sVar9 == 0xff) {\n            pvVar4 = dpi->opaque;\n            dpi->buf[0xff] = '\0';\n            (*dpi->callback)(dpi->buf,0xff,pvVar4);\n            dpi->flush_count = dpi->flush_count + 1;\n            sVar9 = 0;\n            sVar10 = 1;\n          }\n          else {\n            sVar10 = sVar9 + 1;\n          }\n          pcVar13 = pcVar13 + 1;\n          dpi->len = sVar10;\n          dpi->buf[sVar9] = cVar15;\n          dpi->last_char = cVar15;\n          if (pcVar13 == "") break;\n          cVar15 = *pcVar13;\n          sVar9 = sVar10;\n        }\n        pdVar14 = (pdVar14->u).s_fixed.length;\n        dVar6 = pdVar14->type;\n      }\n      if (dVar6 - DEMANGLE_COMPONENT_RESTRICT_THIS < 0x34) {\n        uVar5 = 0xd00000000001fU >> ((ulong)(dVar6 - DEMANGLE_COMPONENT_RESTRICT_THIS) & 0x3f) & 1;\n        while (uVar5 != 0) {\n          pdVar14 = (pdVar14->u).s_fixed.length;\n          uVar8 = pdVar14->type - DEMANGLE_COMPONENT_RESTRICT_THIS;\n          if (0x33 < uVar8) break;\n          uVar5 = 1L << ((byte)uVar8 & 0x3f) & 0xd00000000001f;\n        }\n      }\n      d_print_comp(dpi,options,pdVar14);\n      dpi->templates = pdVar2;\n      return;\n    }\n    d_print_mod(dpi,options,pdVar14);\n    dpi->templates = pdVar2;\n  }\nLAB_00492458:\n  mods = mods->next;\n  if (mods == (d_print_mod *)0x0) {\n    return;\n  }\n  iVar1 = dpi->demangle_failure;\n  goto joined_r0x004923f2;\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  d_print_template *pdVar2;\n  d_print_mod *pdVar3;\n  void *pvVar4;\n  ulong uVar5;\n  demangle_component_type dVar6;\n  uint uVar7;\n  uint uVar8;\n  size_t sVar9;\n  size_t sVar10;\n  uint *puVar11;\n  uint *puVar12;\n  char *pcVar13;\n  uint *__s;\n  demangle_component *pdVar14;\n  char cVar15;\n  bool bVar16;\n  undefined1 auStack_5b [3];\n  char buf [25];\n  \n  if (mods == (d_print_mod *)0x0) {\n    return;\n  }\n  iVar1 = dpi->demangle_failure;\njoined_r0x004923f2:\n  if (iVar1 != 0) {\n    return;\n  }\n  if (mods->printed == 0) {\n    pdVar14 = mods->mod;\n    dVar6 = pdVar14->type;\n    if (suffix == 0) {\n      if (dVar6 - DEMANGLE_COMPONENT_RESTRICT_THIS < 0x34) {\n        if ((0xd00000000001fU >> ((ulong)(dVar6 - DEMANGLE_COMPONENT_RESTRICT_THIS) & 0x3f) & 1) !=\n            0) goto LAB_00492458;\n        goto LAB_00492416;\n      }\n      mods->printed = 1;\n      pdVar2 = dpi->templates;\n      dpi->templates = mods->templates;\n    }\n    else {\nLAB_00492416:\n      mods->printed = 1;\n      pdVar2 = dpi->templates;\n      dpi->templates = mods->templates;\n      if (dVar6 == DEMANGLE_COMPONENT_FUNCTION_TYPE) {\n        d_print_function_type(dpi,options,(demangle_component *)((long)&pdVar14->u + 8),mods->next);\n        dpi->templates = pdVar2;\n        return;\n      }\n    }\n    if (dVar6 == DEMANGLE_COMPONENT_ARRAY_TYPE) {\n      d_print_array_type(dpi,options,(demangle_component *)&(pdVar14->u).s_name,mods->next);\n      dpi->templates = pdVar2;\n      return;\n    }\n    if (dVar6 == DEMANGLE_COMPONENT_LOCAL_NAME) {\n      pdVar3 = dpi->modifiers;\n      pdVar14 = (pdVar14->u).s_fixed.length;\n      dpi->modifiers = (d_print_mod *)0x0;\n      d_print_comp(dpi,options,pdVar14);\n      dpi->modifiers = pdVar3;\n      sVar9 = dpi->len;\n      if ((options & 4U) == 0) {\n        pcVar13 = "::";\n        cVar15 = ':';\n        while( true ) {\n          if (sVar9 == 0xff) {\n            pvVar4 = dpi->opaque;\n            dpi->buf[0xff] = '\0';\n            (*dpi->callback)(dpi->buf,0xff,pvVar4);\n            dpi->flush_count = dpi->flush_count + 1;\n            sVar9 = 0;\n            sVar10 = 1;\n          }\n          else {\n            sVar10 = sVar9 + 1;\n          }\n          pcVar13 = pcVar13 + 1;\n          dpi->len = sVar10;\n          dpi->buf[sVar9] = cVar15;\n          dpi->last_char = cVar15;\n          if (pcVar13 == "") break;\n          cVar15 = *pcVar13;\n          sVar9 = sVar10;\n        }\n      }\n      else {\n        sVar10 = sVar9 + 1;\n        if (sVar9 == 0xff) {\n          pvVar4 = dpi->opaque;\n          dpi->buf[0xff] = '\0';\n          (*dpi->callback)(dpi->buf,0xff,pvVar4);\n          dpi->flush_count = dpi->flush_count + 1;\n          sVar10 = 1;\n          sVar9 = 0;\n        }\n        dpi->len = sVar10;\n        dpi->buf[sVar9] = '.';\n        dpi->last_char = '.';\n      }\n      pdVar14 = (mods->mod->u).s_extended_operator.name;\n      dVar6 = pdVar14->type;\n      if (dVar6 == DEMANGLE_COMPONENT_DEFAULT_ARG) {\n        pcVar13 = "{default arg#";\n        cVar15 = '{';\n        sVar9 = dpi->len;\n        while( true ) {\n          pcVar13 = pcVar13 + 1;\n          if (sVar9 == 0xff) {\n            pvVar4 = dpi->opaque;\n            dpi->buf[0xff] = '\0';\n            (*dpi->callback)(dpi->buf,0xff,pvVar4);\n            dpi->flush_count = dpi->flush_count + 1;\n            sVar9 = 0;\n            sVar10 = 1;\n          }\n          else {\n            sVar10 = sVar9 + 1;\n          }\n          dpi->len = sVar10;\n          dpi->buf[sVar9] = cVar15;\n          dpi->last_char = cVar15;\n          if (pcVar13 == "") break;\n          cVar15 = *pcVar13;\n          sVar9 = sVar10;\n        }\n        __s = (uint *)buf;\n        sprintf((char *)__s,"%d",(ulong)((pdVar14->u).s_name.len + 1));\n        puVar12 = __s;\n        do {\n          puVar11 = puVar12;\n          uVar7 = *puVar11 + 0xfefefeff & ~*puVar11;\n          uVar8 = uVar7 & 0x80808080;\n          puVar12 = puVar11 + 1;\n        } while (uVar8 == 0);\n        bVar16 = (uVar7 & 0x8080) == 0;\n        if (bVar16) {\n          uVar8 = uVar8 >> 0x10;\n        }\n        if (bVar16) {\n          puVar12 = (uint *)((long)puVar11 + 6);\n        }\n        sVar9 = dpi->len;\n        pcVar13 = (char *)((long)puVar12 +\n                          ((-3 - (ulong)CARRY1((byte)uVar8,(byte)uVar8)) - (long)__s));\n        if (pcVar13 != (char *)0x0) {\n          puVar12 = (uint *)((long)__s + (long)pcVar13);\n          sVar10 = sVar9;\n          do {\n            cVar15 = (char)*__s;\n            if (sVar10 == 0xff) {\n              pvVar4 = dpi->opaque;\n              dpi->buf[0xff] = '\0';\n              auStack_5b[2] = cVar15;\n              (*dpi->callback)(dpi->buf,0xff,pvVar4);\n              dpi->flush_count = dpi->flush_count + 1;\n              sVar9 = 1;\n              sVar10 = 0;\n              cVar15 = auStack_5b[2];\n            }\n            else {\n              sVar9 = sVar10 + 1;\n            }\n            __s = (uint *)((long)__s + 1);\n            dpi->len = sVar9;\n            dpi->buf[sVar10] = cVar15;\n            dpi->last_char = cVar15;\n            sVar10 = sVar9;\n          } while (puVar12 != __s);\n        }\n        pcVar13 = "}::";\n        cVar15 = '}';\n        while( true ) {\n          if (sVar9 == 0xff) {\n            pvVar4 = dpi->opaque;\n            dpi->buf[0xff] = '\0';\n            (*dpi->callback)(dpi->buf,0xff,pvVar4);\n            dpi->flush_count = dpi->flush_count + 1;\n            sVar9 = 0;\n            sVar10 = 1;\n          }\n          else {\n            sVar10 = sVar9 + 1;\n          }\n          pcVar13 = pcVar13 + 1;\n          dpi->len = sVar10;\n          dpi->buf[sVar9] = cVar15;\n          dpi->last_char = cVar15;\n          if (pcVar13 == "") break;\n          cVar15 = *pcVar13;\n          sVar9 = sVar10;\n        }\n        pdVar14 = (pdVar14->u).s_fixed.length;\n        dVar6 = pdVar14->type;\n      }\n      if (dVar6 - DEMANGLE_COMPONENT_RESTRICT_THIS < 0x34) {\n        uVar5 = 0xd00000000001fU >> ((ulong)(dVar6 - DEMANGLE_COMPONENT_RESTRICT_THIS) & 0x3f) & 1;\n        while (uVar5 != 0) {\n          pdVar14 = (pdVar14->u).s_fixed.length;\n          uVar8 = pdVar14->type - DEMANGLE_COMPONENT_RESTRICT_THIS;\n          if (0x33 < uVar8) break;\n          uVar5 = 1L << ((byte)uVar8 & 0x3f) & 0xd00000000001f;\n        }\n      }\n      d_print_comp(dpi,options,pdVar14);\n      dpi->templates = pdVar2;\n      return;\n    }\n    d_print_mod(dpi,options,pdVar14);\n    dpi->templates = pdVar2;\n  }\nLAB_00492458:\n  mods = mods->next;\n  if (mods == (d_print_mod *)0x0) {\n    return;\n  }\n  iVar1 = dpi->demangle_failure;\n  goto joined_r0x004923f2;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "d_print_template *pdVar2;" type_identifier (pointer_declarator "*pdVar2" * identifier) ;) (declaration "d_print_mod *pdVar3;" type_identifier (pointer_declarator "*pdVar3" * identifier) ;) (declaration "void *pvVar4;" primitive_type (pointer_declarator "*pvVar4" * identifier) ;) (declaration "ulong uVar5;" type_identifier identifier ;) (declaration "demangle_component_type dVar6;" type_identifier identifier ;) (declaration "uint uVar7;" type_identifier identifier ;) (declaration "uint uVar8;" type_identifier identifier ;) (declaration "size_t sVar9;" primitive_type identifier ;) (declaration "size_t sVar10;" primitive_type identifier ;) (declaration "uint *puVar11;" type_identifier (pointer_declarator "*puVar11" * identifier) ;) (declaration "uint *puVar12;" type_identifier (pointer_declarator "*puVar12" * identifier) ;) (declaration "char *pcVar13;" primitive_type (pointer_declarator "*pcVar13" * identifier) ;) (declaration "uint *__s;" type_identifier (pointer_declarator "*__s" * identifier) ;) (declaration "demangle_component *pdVar14;" type_identifier (pointer_declarator "*pdVar14" * identifier) ;) (declaration "char cVar15;" primitive_type identifier ;) (declaration "bool bVar16;" primitive_type identifier ;) (declaration "undefined1 auStack_5b [3];" type_identifier (array_declarator "auStack_5b [3]" identifier [ number_literal ]) ;) (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)) ;) (labeled_statement "joined_r0x004923f2:\n  if (iVar1 != 0) {\n    return;\n  }" statement_identifier : (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    pdVar14 = mods->mod;\n    dVar6 = pdVar14->type;\n    if (suffix == 0) {\n      if (dVar6 - DEMANGLE_COMPONENT_RESTRICT_THIS < 0x34) {\n        if ((0xd00000000001fU >> ((ulong)(dVar6 - DEMANGLE_COMPONENT_RESTRICT_THIS) & 0x3f) & 1) !=\n            0) goto LAB_00492458;\n        goto LAB_00492416;\n      }\n      mods->printed = 1;\n      pdVar2 = dpi->templates;\n      dpi->templates = mods->templates;\n    }\n    else {\nLAB_00492416:\n      mods->printed = 1;\n      pdVar2 = dpi->templates;\n      dpi->templates = mods->templates;\n      if (dVar6 == DEMANGLE_COMPONENT_FUNCTION_TYPE) {\n        d_print_function_type(dpi,options,(demangle_component *)((long)&pdVar14->u + 8),mods->next);\n        dpi->templates = pdVar2;\n        return;\n      }\n    }\n    if (dVar6 == DEMANGLE_COMPONENT_ARRAY_TYPE) {\n      d_print_array_type(dpi,options,(demangle_component *)&(pdVar14->u).s_name,mods->next);\n      dpi->templates = pdVar2;\n      return;\n    }\n    if (dVar6 == DEMANGLE_COMPONENT_LOCAL_NAME) {\n      pdVar3 = dpi->modifiers;\n      pdVar14 = (pdVar14->u).s_fixed.length;\n      dpi->modifiers = (d_print_mod *)0x0;\n      d_print_comp(dpi,options,pdVar14);\n      dpi->modifiers = pdVar3;\n      sVar9 = dpi->len;\n      if ((options & 4U) == 0) {\n        pcVar13 = "::";\n        cVar15 = ':';\n        while( true ) {\n          if (sVar9 == 0xff) {\n            pvVar4 = dpi->opaque;\n            dpi->buf[0xff] = '\0';\n            (*dpi->callback)(dpi->buf,0xff,pvVar4);\n            dpi->flush_count = dpi->flush_count + 1;\n            sVar9 = 0;\n            sVar10 = 1;\n          }\n          else {\n            sVar10 = sVar9 + 1;\n          }\n          pcVar13 = pcVar13 + 1;\n          dpi->len = sVar10;\n          dpi->buf[sVar9] = cVar15;\n          dpi->last_char = cVar15;\n          if (pcVar13 == "") break;\n          cVar15 = *pcVar13;\n          sVar9 = sVar10;\n        }\n      }\n      else {\n        sVar10 = sVar9 + 1;\n        if (sVar9 == 0xff) {\n          pvVar4 = dpi->opaque;\n          dpi->buf[0xff] = '\0';\n          (*dpi->callback)(dpi->buf,0xff,pvVar4);\n          dpi->flush_count = dpi->flush_count + 1;\n          sVar10 = 1;\n          sVar9 = 0;\n        }\n        dpi->len = sVar10;\n        dpi->buf[sVar9] = '.';\n        dpi->last_char = '.';\n      }\n      pdVar14 = (mods->mod->u).s_extended_operator.name;\n      dVar6 = pdVar14->type;\n      if (dVar6 == DEMANGLE_COMPONENT_DEFAULT_ARG) {\n        pcVar13 = "{default arg#";\n        cVar15 = '{';\n        sVar9 = dpi->len;\n        while( true ) {\n          pcVar13 = pcVar13 + 1;\n          if (sVar9 == 0xff) {\n            pvVar4 = dpi->opaque;\n            dpi->buf[0xff] = '\0';\n            (*dpi->callback)(dpi->buf,0xff,pvVar4);\n            dpi->flush_count = dpi->flush_count + 1;\n            sVar9 = 0;\n            sVar10 = 1;\n          }\n          else {\n            sVar10 = sVar9 + 1;\n          }\n          dpi->len = sVar10;\n          dpi->buf[sVar9] = cVar15;\n          dpi->last_char = cVar15;\n          if (pcVar13 == "") break;\n          cVar15 = *pcVar13;\n          sVar9 = sVar10;\n        }\n        __s = (uint *)buf;\n        sprintf((char *)__s,"%d",(ulong)((pdVar14->u).s_name.len + 1));\n        puVar12 = __s;\n        do {\n          puVar11 = puVar12;\n          uVar7 = *puVar11 + 0xfefefeff & ~*puVar11;\n          uVar8 = uVar7 & 0x80808080;\n          puVar12 = puVar11 + 1;\n        } while (uVar8 == 0);\n        bVar16 = (uVar7 & 0x8080) == 0;\n        if (bVar16) {\n          uVar8 = uVar8 >> 0x10;\n        }\n        if (bVar16) {\n          puVar12 = (uint *)((long)puVar11 + 6);\n        }\n        sVar9 = dpi->len;\n        pcVar13 = (char *)((long)puVar12 +\n                          ((-3 - (ulong)CARRY1((byte)uVar8,(byte)uVar8)) - (long)__s));\n        if (pcVar13 != (char *)0x0) {\n          puVar12 = (uint *)((long)__s + (long)pcVar13);\n          sVar10 = sVar9;\n          do {\n            cVar15 = (char)*__s;\n            if (sVar10 == 0xff) {\n              pvVar4 = dpi->opaque;\n              dpi->buf[0xff] = '\0';\n              auStack_5b[2] = cVar15;\n              (*dpi->callback)(dpi->buf,0xff,pvVar4);\n              dpi->flush_count = dpi->flush_count + 1;\n              sVar9 = 1;\n              sVar10 = 0;\n              cVar15 = auStack_5b[2];\n            }\n            else {\n              sVar9 = sVar10 + 1;\n            }\n            __s = (uint *)((long)__s + 1);\n            dpi->len = sVar9;\n            dpi->buf[sVar10] = cVar15;\n            dpi->last_char = cVar15;\n            sVar10 = sVar9;\n          } while (puVar12 != __s);\n        }\n        pcVar13 = "}::";\n        cVar15 = '}';\n        while( true ) {\n          if (sVar9 == 0xff) {\n            pvVar4 = dpi->opaque;\n            dpi->buf[0xff] = '\0';\n            (*dpi->callback)(dpi->buf,0xff,pvVar4);\n            dpi->flush_count = dpi->flush_count + 1;\n            sVar9 = 0;\n            sVar10 = 1;\n          }\n          else {\n            sVar10 = sVar9 + 1;\n          }\n          pcVar13 = pcVar13 + 1;\n          dpi->len = sVar10;\n          dpi->buf[sVar9] = cVar15;\n          dpi->last_char = cVar15;\n          if (pcVar13 == "") break;\n          cVar15 = *pcVar13;\n          sVar9 = sVar10;\n        }\n        pdVar14 = (pdVar14->u).s_fixed.length;\n        dVar6 = pdVar14->type;\n      }\n      if (dVar6 - DEMANGLE_COMPONENT_RESTRICT_THIS < 0x34) {\n        uVar5 = 0xd00000000001fU >> ((ulong)(dVar6 - DEMANGLE_COMPONENT_RESTRICT_THIS) & 0x3f) & 1;\n        while (uVar5 != 0) {\n          pdVar14 = (pdVar14->u).s_fixed.length;\n          uVar8 = pdVar14->type - DEMANGLE_COMPONENT_RESTRICT_THIS;\n          if (0x33 < uVar8) break;\n          uVar5 = 1L << ((byte)uVar8 & 0x3f) & 0xd00000000001f;\n        }\n      }\n      d_print_comp(dpi,options,pdVar14);\n      dpi->templates = pdVar2;\n      return;\n    }\n    d_print_mod(dpi,options,pdVar14);\n    dpi->templates = pdVar2;\n  }" if (parenthesized_expression "(mods->printed == 0)" ( (binary_expression "mods->printed == 0" (field_expression "mods->printed" identifier -> field_identifier) == number_literal) )) (compound_statement "{\n    pdVar14 = mods->mod;\n    dVar6 = pdVar14->type;\n    if (suffix == 0) {\n      if (dVar6 - DEMANGLE_COMPONENT_RESTRICT_THIS < 0x34) {\n        if ((0xd00000000001fU >> ((ulong)(dVar6 - DEMANGLE_COMPONENT_RESTRICT_THIS) & 0x3f) & 1) !=\n            0) goto LAB_00492458;\n        goto LAB_00492416;\n      }\n      mods->printed = 1;\n      pdVar2 = dpi->templates;\n      dpi->templates = mods->templates;\n    }\n    else {\nLAB_00492416:\n      mods->printed = 1;\n      pdVar2 = dpi->templates;\n      dpi->templates = mods->templates;\n      if (dVar6 == DEMANGLE_COMPONENT_FUNCTION_TYPE) {\n        d_print_function_type(dpi,options,(demangle_component *)((long)&pdVar14->u + 8),mods->next);\n        dpi->templates = pdVar2;\n        return;\n      }\n    }\n    if (dVar6 == DEMANGLE_COMPONENT_ARRAY_TYPE) {\n      d_print_array_type(dpi,options,(demangle_component *)&(pdVar14->u).s_name,mods->next);\n      dpi->templates = pdVar2;\n      return;\n    }\n    if (dVar6 == DEMANGLE_COMPONENT_LOCAL_NAME) {\n      pdVar3 = dpi->modifiers;\n      pdVar14 = (pdVar14->u).s_fixed.length;\n      dpi->modifiers = (d_print_mod *)0x0;\n      d_print_comp(dpi,options,pdVar14);\n      dpi->modifiers = pdVar3;\n      sVar9 = dpi->len;\n      if ((options & 4U) == 0) {\n        pcVar13 = "::";\n        cVar15 = ':';\n        while( true ) {\n          if (sVar9 == 0xff) {\n            pvVar4 = dpi->opaque;\n            dpi->buf[0xff] = '\0';\n            (*dpi->callback)(dpi->buf,0xff,pvVar4);\n            dpi->flush_count = dpi->flush_count + 1;\n            sVar9 = 0;\n            sVar10 = 1;\n          }\n          else {\n            sVar10 = sVar9 + 1;\n          }\n          pcVar13 = pcVar13 + 1;\n          dpi->len = sVar10;\n          dpi->buf[sVar9] = cVar15;\n          dpi->last_char = cVar15;\n          if (pcVar13 == "") break;\n          cVar15 = *pcVar13;\n          sVar9 = sVar10;\n        }\n      }\n      else {\n        sVar10 = sVar9 + 1;\n        if (sVar9 == 0xff) {\n          pvVar4 = dpi->opaque;\n          dpi->buf[0xff] = '\0';\n          (*dpi->callback)(dpi->buf,0xff,pvVar4);\n          dpi->flush_count = dpi->flush_count + 1;\n          sVar10 = 1;\n          sVar9 = 0;\n        }\n        dpi->len = sVar10;\n        dpi->buf[sVar9] = '.';\n        dpi->last_char = '.';\n      }\n      pdVar14 = (mods->mod->u).s_extended_operator.name;\n      dVar6 = pdVar14->type;\n      if (dVar6 == DEMANGLE_COMPONENT_DEFAULT_ARG) {\n        pcVar13 = "{default arg#";\n        cVar15 = '{';\n        sVar9 = dpi->len;\n        while( true ) {\n          pcVar13 = pcVar13 + 1;\n          if (sVar9 == 0xff) {\n            pvVar4 = dpi->opaque;\n            dpi->buf[0xff] = '\0';\n            (*dpi->callback)(dpi->buf,0xff,pvVar4);\n            dpi->flush_count = dpi->flush_count + 1;\n            sVar9 = 0;\n            sVar10 = 1;\n          }\n          else {\n            sVar10 = sVar9 + 1;\n          }\n          dpi->len = sVar10;\n          dpi->buf[sVar9] = cVar15;\n          dpi->last_char = cVar15;\n          if (pcVar13 == "") break;\n          cVar15 = *pcVar13;\n          sVar9 = sVar10;\n        }\n        __s = (uint *)buf;\n        sprintf((char *)__s,"%d",(ulong)((pdVar14->u).s_name.len + 1));\n        puVar12 = __s;\n        do {\n          puVar11 = puVar12;\n          uVar7 = *puVar11 + 0xfefefeff & ~*puVar11;\n          uVar8 = uVar7 & 0x80808080;\n          puVar12 = puVar11 + 1;\n        } while (uVar8 == 0);\n        bVar16 = (uVar7 & 0x8080) == 0;\n        if (bVar16) {\n          uVar8 = uVar8 >> 0x10;\n        }\n        if (bVar16) {\n          puVar12 = (uint *)((long)puVar11 + 6);\n        }\n        sVar9 = dpi->len;\n        pcVar13 = (char *)((long)puVar12 +\n                          ((-3 - (ulong)CARRY1((byte)uVar8,(byte)uVar8)) - (long)__s));\n        if (pcVar13 != (char *)0x0) {\n          puVar12 = (uint *)((long)__s + (long)pcVar13);\n          sVar10 = sVar9;\n          do {\n            cVar15 = (char)*__s;\n            if (sVar10 == 0xff) {\n              pvVar4 = dpi->opaque;\n              dpi->buf[0xff] = '\0';\n              auStack_5b[2] = cVar15;\n              (*dpi->callback)(dpi->buf,0xff,pvVar4);\n              dpi->flush_count = dpi->flush_count + 1;\n              sVar9 = 1;\n              sVar10 = 0;\n              cVar15 = auStack_5b[2];\n            }\n            else {\n              sVar9 = sVar10 + 1;\n            }\n            __s = (uint *)((long)__s + 1);\n            dpi->len = sVar9;\n            dpi->buf[sVar10] = cVar15;\n            dpi->last_char = cVar15;\n            sVar10 = sVar9;\n          } while (puVar12 != __s);\n        }\n        pcVar13 = "}::";\n        cVar15 = '}';\n        while( true ) {\n          if (sVar9 == 0xff) {\n            pvVar4 = dpi->opaque;\n            dpi->buf[0xff] = '\0';\n            (*dpi->callback)(dpi->buf,0xff,pvVar4);\n            dpi->flush_count = dpi->flush_count + 1;\n            sVar9 = 0;\n            sVar10 = 1;\n          }\n          else {\n            sVar10 = sVar9 + 1;\n          }\n          pcVar13 = pcVar13 + 1;\n          dpi->len = sVar10;\n          dpi->buf[sVar9] = cVar15;\n          dpi->last_char = cVar15;\n          if (pcVar13 == "") break;\n          cVar15 = *pcVar13;\n          sVar9 = sVar10;\n        }\n        pdVar14 = (pdVar14->u).s_fixed.length;\n        dVar6 = pdVar14->type;\n      }\n      if (dVar6 - DEMANGLE_COMPONENT_RESTRICT_THIS < 0x34) {\n        uVar5 = 0xd00000000001fU >> ((ulong)(dVar6 - DEMANGLE_COMPONENT_RESTRICT_THIS) & 0x3f) & 1;\n        while (uVar5 != 0) {\n          pdVar14 = (pdVar14->u).s_fixed.length;\n          uVar8 = pdVar14->type - DEMANGLE_COMPONENT_RESTRICT_THIS;\n          if (0x33 < uVar8) break;\n          uVar5 = 1L << ((byte)uVar8 & 0x3f) & 0xd00000000001f;\n        }\n      }\n      d_print_comp(dpi,options,pdVar14);\n      dpi->templates = pdVar2;\n      return;\n    }\n    d_print_mod(dpi,options,pdVar14);\n    dpi->templates = pdVar2;\n  }" { (expression_statement "pdVar14 = mods->mod;" (assignment_expression "pdVar14 = mods->mod" identifier = (field_expression "mods->mod" identifier -> field_identifier)) ;) (expression_statement "dVar6 = pdVar14->type;" (assignment_expression "dVar6 = pdVar14->type" identifier = (field_expression "pdVar14->type" identifier -> field_identifier)) ;) (if_statement "if (suffix == 0) {\n      if (dVar6 - DEMANGLE_COMPONENT_RESTRICT_THIS < 0x34) {\n        if ((0xd00000000001fU >> ((ulong)(dVar6 - DEMANGLE_COMPONENT_RESTRICT_THIS) & 0x3f) & 1) !=\n            0) goto LAB_00492458;\n        goto LAB_00492416;\n      }\n      mods->printed = 1;\n      pdVar2 = dpi->templates;\n      dpi->templates = mods->templates;\n    }\n    else {\nLAB_00492416:\n      mods->printed = 1;\n      pdVar2 = dpi->templates;\n      dpi->templates = mods->templates;\n      if (dVar6 == DEMANGLE_COMPONENT_FUNCTION_TYPE) {\n        d_print_function_type(dpi,options,(demangle_component *)((long)&pdVar14->u + 8),mods->next);\n        dpi->templates = pdVar2;\n        return;\n      }\n    }" if (parenthesized_expression "(suffix == 0)" ( (binary_expression "suffix == 0" identifier == number_literal) )) (compound_statement "{\n      if (dVar6 - DEMANGLE_COMPONENT_RESTRICT_THIS < 0x34) {\n        if ((0xd00000000001fU >> ((ulong)(dVar6 - DEMANGLE_COMPONENT_RESTRICT_THIS) & 0x3f) & 1) !=\n            0) goto LAB_00492458;\n        goto LAB_00492416;\n      }\n      mods->printed = 1;\n      pdVar2 = dpi->templates;\n      dpi->templates = mods->templates;\n    }" { (if_statement "if (dVar6 - DEMANGLE_COMPONENT_RESTRICT_THIS < 0x34) {\n        if ((0xd00000000001fU >> ((ulong)(dVar6 - DEMANGLE_COMPONENT_RESTRICT_THIS) & 0x3f) & 1) !=\n            0) goto LAB_00492458;\n        goto LAB_00492416;\n      }" if (parenthesized_expression "(dVar6 - DEMANGLE_COMPONENT_RESTRICT_THIS < 0x34)" ( (binary_expression "dVar6 - DEMANGLE_COMPONENT_RESTRICT_THIS < 0x34" (binary_expression "dVar6 - DEMANGLE_COMPONENT_RESTRICT_THIS" identifier - identifier) < number_literal) )) (compound_statement "{\n        if ((0xd00000000001fU >> ((ulong)(dVar6 - DEMANGLE_COMPONENT_RESTRICT_THIS) & 0x3f) & 1) !=\n            0) goto LAB_00492458;\n        goto LAB_00492416;\n      }" { (if_statement "if ((0xd00000000001fU >> ((ulong)(dVar6 - DEMANGLE_COMPONENT_RESTRICT_THIS) & 0x3f) & 1) !=\n            0) goto LAB_00492458;" if (parenthesized_expression "((0xd00000000001fU >> ((ulong)(dVar6 - DEMANGLE_COMPONENT_RESTRICT_THIS) & 0x3f) & 1) !=\n            0)" ( (binary_expression "(0xd00000000001fU >> ((ulong)(dVar6 - DEMANGLE_COMPONENT_RESTRICT_THIS) & 0x3f) & 1) !=\n            0" (parenthesized_expression "(0xd00000000001fU >> ((ulong)(dVar6 - DEMANGLE_COMPONENT_RESTRICT_THIS) & 0x3f) & 1)" ( (binary_expression "0xd00000000001fU >> ((ulong)(dVar6 - DEMANGLE_COMPONENT_RESTRICT_THIS) & 0x3f) & 1" (binary_expression "0xd00000000001fU >> ((ulong)(dVar6 - DEMANGLE_COMPONENT_RESTRICT_THIS) & 0x3f)" number_literal >> (parenthesized_expression "((ulong)(dVar6 - DEMANGLE_COMPONENT_RESTRICT_THIS) & 0x3f)" ( (binary_expression "(ulong)(dVar6 - DEMANGLE_COMPONENT_RESTRICT_THIS) & 0x3f" (call_expression "(ulong)(dVar6 - DEMANGLE_COMPONENT_RESTRICT_THIS)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(dVar6 - DEMANGLE_COMPONENT_RESTRICT_THIS)" ( (binary_expression "dVar6 - DEMANGLE_COMPONENT_RESTRICT_THIS" identifier - identifier) ))) & number_literal) ))) & number_literal) )) != number_literal) )) (goto_statement "goto LAB_00492458;" goto statement_identifier ;)) (goto_statement "goto LAB_00492416;" goto statement_identifier ;) })) (expression_statement "mods->printed = 1;" (assignment_expression "mods->printed = 1" (field_expression "mods->printed" identifier -> field_identifier) = number_literal) ;) (expression_statement "pdVar2 = dpi->templates;" (assignment_expression "pdVar2 = dpi->templates" identifier = (field_expression "dpi->templates" identifier -> field_identifier)) ;) (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)) ;) }) (else_clause "else {\nLAB_00492416:\n      mods->printed = 1;\n      pdVar2 = dpi->templates;\n      dpi->templates = mods->templates;\n      if (dVar6 == DEMANGLE_COMPONENT_FUNCTION_TYPE) {\n        d_print_function_type(dpi,options,(demangle_component *)((long)&pdVar14->u + 8),mods->next);\n        dpi->templates = pdVar2;\n        return;\n      }\n    }" else (compound_statement "{\nLAB_00492416:\n      mods->printed = 1;\n      pdVar2 = dpi->templates;\n      dpi->templates = mods->templates;\n      if (dVar6 == DEMANGLE_COMPONENT_FUNCTION_TYPE) {\n        d_print_function_type(dpi,options,(demangle_component *)((long)&pdVar14->u + 8),mods->next);\n        dpi->templates = pdVar2;\n        return;\n      }\n    }" { (labeled_statement "LAB_00492416:\n      mods->printed = 1;" statement_identifier : (expression_statement "mods->printed = 1;" (assignment_expression "mods->printed = 1" (field_expression "mods->printed" identifier -> field_identifier) = number_literal) ;)) (expression_statement "pdVar2 = dpi->templates;" (assignment_expression "pdVar2 = dpi->templates" identifier = (field_expression "dpi->templates" identifier -> field_identifier)) ;) (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)) ;) (if_statement "if (dVar6 == DEMANGLE_COMPONENT_FUNCTION_TYPE) {\n        d_print_function_type(dpi,options,(demangle_component *)((long)&pdVar14->u + 8),mods->next);\n        dpi->templates = pdVar2;\n        return;\n      }" if (parenthesized_expression "(dVar6 == DEMANGLE_COMPONENT_FUNCTION_TYPE)" ( (binary_expression "dVar6 == DEMANGLE_COMPONENT_FUNCTION_TYPE" identifier == identifier) )) (compound_statement "{\n        d_print_function_type(dpi,options,(demangle_component *)((long)&pdVar14->u + 8),mods->next);\n        dpi->templates = pdVar2;\n        return;\n      }" { (expression_statement "d_print_function_type(dpi,options,(demangle_component *)((long)&pdVar14->u + 8),mods->next);" (call_expression "d_print_function_type(dpi,options,(demangle_component *)((long)&pdVar14->u + 8),mods->next)" identifier (argument_list "(dpi,options,(demangle_component *)((long)&pdVar14->u + 8),mods->next)" ( identifier , identifier , (cast_expression "(demangle_component *)((long)&pdVar14->u + 8)" ( (type_descriptor "demangle_component *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)&pdVar14->u + 8)" ( (binary_expression "(long)&pdVar14->u + 8" (cast_expression "(long)&pdVar14->u" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (pointer_expression "&pdVar14->u" & (field_expression "pdVar14->u" identifier -> field_identifier))) + number_literal) ))) , (field_expression "mods->next" identifier -> field_identifier) ))) ;) (expression_statement "dpi->templates = pdVar2;" (assignment_expression "dpi->templates = pdVar2" (field_expression "dpi->templates" identifier -> field_identifier) = identifier) ;) (return_statement "return;" return ;) })) }))) (if_statement "if (dVar6 == DEMANGLE_COMPONENT_ARRAY_TYPE) {\n      d_print_array_type(dpi,options,(demangle_component *)&(pdVar14->u).s_name,mods->next);\n      dpi->templates = pdVar2;\n      return;\n    }" if (parenthesized_expression "(dVar6 == DEMANGLE_COMPONENT_ARRAY_TYPE)" ( (binary_expression "dVar6 == DEMANGLE_COMPONENT_ARRAY_TYPE" identifier == identifier) )) (compound_statement "{\n      d_print_array_type(dpi,options,(demangle_component *)&(pdVar14->u).s_name,mods->next);\n      dpi->templates = pdVar2;\n      return;\n    }" { (expression_statement "d_print_array_type(dpi,options,(demangle_component *)&(pdVar14->u).s_name,mods->next);" (call_expression "d_print_array_type(dpi,options,(demangle_component *)&(pdVar14->u).s_name,mods->next)" identifier (argument_list "(dpi,options,(demangle_component *)&(pdVar14->u).s_name,mods->next)" ( identifier , identifier , (cast_expression "(demangle_component *)&(pdVar14->u).s_name" ( (type_descriptor "demangle_component *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&(pdVar14->u).s_name" & (field_expression "(pdVar14->u).s_name" (parenthesized_expression "(pdVar14->u)" ( (field_expression "pdVar14->u" identifier -> field_identifier) )) . field_identifier))) , (field_expression "mods->next" identifier -> field_identifier) ))) ;) (expression_statement "dpi->templates = pdVar2;" (assignment_expression "dpi->templates = pdVar2" (field_expression "dpi->templates" identifier -> field_identifier) = identifier) ;) (return_statement "return;" return ;) })) (if_statement "if (dVar6 == DEMANGLE_COMPONENT_LOCAL_NAME) {\n      pdVar3 = dpi->modifiers;\n      pdVar14 = (pdVar14->u).s_fixed.length;\n      dpi->modifiers = (d_print_mod *)0x0;\n      d_print_comp(dpi,options,pdVar14);\n      dpi->modifiers = pdVar3;\n      sVar9 = dpi->len;\n      if ((options & 4U) == 0) {\n        pcVar13 = "::";\n        cVar15 = ':';\n        while( true ) {\n          if (sVar9 == 0xff) {\n            pvVar4 = dpi->opaque;\n            dpi->buf[0xff] = '\0';\n            (*dpi->callback)(dpi->buf,0xff,pvVar4);\n            dpi->flush_count = dpi->flush_count + 1;\n            sVar9 = 0;\n            sVar10 = 1;\n          }\n          else {\n            sVar10 = sVar9 + 1;\n          }\n          pcVar13 = pcVar13 + 1;\n          dpi->len = sVar10;\n          dpi->buf[sVar9] = cVar15;\n          dpi->last_char = cVar15;\n          if (pcVar13 == "") break;\n          cVar15 = *pcVar13;\n          sVar9 = sVar10;\n        }\n      }\n      else {\n        sVar10 = sVar9 + 1;\n        if (sVar9 == 0xff) {\n          pvVar4 = dpi->opaque;\n          dpi->buf[0xff] = '\0';\n          (*dpi->callback)(dpi->buf,0xff,pvVar4);\n          dpi->flush_count = dpi->flush_count + 1;\n          sVar10 = 1;\n          sVar9 = 0;\n        }\n        dpi->len = sVar10;\n        dpi->buf[sVar9] = '.';\n        dpi->last_char = '.';\n      }\n      pdVar14 = (mods->mod->u).s_extended_operator.name;\n      dVar6 = pdVar14->type;\n      if (dVar6 == DEMANGLE_COMPONENT_DEFAULT_ARG) {\n        pcVar13 = "{default arg#";\n        cVar15 = '{';\n        sVar9 = dpi->len;\n        while( true ) {\n          pcVar13 = pcVar13 + 1;\n          if (sVar9 == 0xff) {\n            pvVar4 = dpi->opaque;\n            dpi->buf[0xff] = '\0';\n            (*dpi->callback)(dpi->buf,0xff,pvVar4);\n            dpi->flush_count = dpi->flush_count + 1;\n            sVar9 = 0;\n            sVar10 = 1;\n          }\n          else {\n            sVar10 = sVar9 + 1;\n          }\n          dpi->len = sVar10;\n          dpi->buf[sVar9] = cVar15;\n          dpi->last_char = cVar15;\n          if (pcVar13 == "") break;\n          cVar15 = *pcVar13;\n          sVar9 = sVar10;\n        }\n        __s = (uint *)buf;\n        sprintf((char *)__s,"%d",(ulong)((pdVar14->u).s_name.len + 1));\n        puVar12 = __s;\n        do {\n          puVar11 = puVar12;\n          uVar7 = *puVar11 + 0xfefefeff & ~*puVar11;\n          uVar8 = uVar7 & 0x80808080;\n          puVar12 = puVar11 + 1;\n        } while (uVar8 == 0);\n        bVar16 = (uVar7 & 0x8080) == 0;\n        if (bVar16) {\n          uVar8 = uVar8 >> 0x10;\n        }\n        if (bVar16) {\n          puVar12 = (uint *)((long)puVar11 + 6);\n        }\n        sVar9 = dpi->len;\n        pcVar13 = (char *)((long)puVar12 +\n                          ((-3 - (ulong)CARRY1((byte)uVar8,(byte)uVar8)) - (long)__s));\n        if (pcVar13 != (char *)0x0) {\n          puVar12 = (uint *)((long)__s + (long)pcVar13);\n          sVar10 = sVar9;\n          do {\n            cVar15 = (char)*__s;\n            if (sVar10 == 0xff) {\n              pvVar4 = dpi->opaque;\n              dpi->buf[0xff] = '\0';\n              auStack_5b[2] = cVar15;\n              (*dpi->callback)(dpi->buf,0xff,pvVar4);\n              dpi->flush_count = dpi->flush_count + 1;\n              sVar9 = 1;\n              sVar10 = 0;\n              cVar15 = auStack_5b[2];\n            }\n            else {\n              sVar9 = sVar10 + 1;\n            }\n            __s = (uint *)((long)__s + 1);\n            dpi->len = sVar9;\n            dpi->buf[sVar10] = cVar15;\n            dpi->last_char = cVar15;\n            sVar10 = sVar9;\n          } while (puVar12 != __s);\n        }\n        pcVar13 = "}::";\n        cVar15 = '}';\n        while( true ) {\n          if (sVar9 == 0xff) {\n            pvVar4 = dpi->opaque;\n            dpi->buf[0xff] = '\0';\n            (*dpi->callback)(dpi->buf,0xff,pvVar4);\n            dpi->flush_count = dpi->flush_count + 1;\n            sVar9 = 0;\n            sVar10 = 1;\n          }\n          else {\n            sVar10 = sVar9 + 1;\n          }\n          pcVar13 = pcVar13 + 1;\n          dpi->len = sVar10;\n          dpi->buf[sVar9] = cVar15;\n          dpi->last_char = cVar15;\n          if (pcVar13 == "") break;\n          cVar15 = *pcVar13;\n          sVar9 = sVar10;\n        }\n        pdVar14 = (pdVar14->u).s_fixed.length;\n        dVar6 = pdVar14->type;\n      }\n      if (dVar6 - DEMANGLE_COMPONENT_RESTRICT_THIS < 0x34) {\n        uVar5 = 0xd00000000001fU >> ((ulong)(dVar6 - DEMANGLE_COMPONENT_RESTRICT_THIS) & 0x3f) & 1;\n        while (uVar5 != 0) {\n          pdVar14 = (pdVar14->u).s_fixed.length;\n          uVar8 = pdVar14->type - DEMANGLE_COMPONENT_RESTRICT_THIS;\n          if (0x33 < uVar8) break;\n          uVar5 = 1L << ((byte)uVar8 & 0x3f) & 0xd00000000001f;\n        }\n      }\n      d_print_comp(dpi,options,pdVar14);\n      dpi->templates = pdVar2;\n      return;\n    }" if (parenthesized_expression "(dVar6 == DEMANGLE_COMPONENT_LOCAL_NAME)" ( (binary_expression "dVar6 == DEMANGLE_COMPONENT_LOCAL_NAME" identifier == identifier) )) (compound_statement "{\n      pdVar3 = dpi->modifiers;\n      pdVar14 = (pdVar14->u).s_fixed.length;\n      dpi->modifiers = (d_print_mod *)0x0;\n      d_print_comp(dpi,options,pdVar14);\n      dpi->modifiers = pdVar3;\n      sVar9 = dpi->len;\n      if ((options & 4U) == 0) {\n        pcVar13 = "::";\n        cVar15 = ':';\n        while( true ) {\n          if (sVar9 == 0xff) {\n            pvVar4 = dpi->opaque;\n            dpi->buf[0xff] = '\0';\n            (*dpi->callback)(dpi->buf,0xff,pvVar4);\n            dpi->flush_count = dpi->flush_count + 1;\n            sVar9 = 0;\n            sVar10 = 1;\n          }\n          else {\n            sVar10 = sVar9 + 1;\n          }\n          pcVar13 = pcVar13 + 1;\n          dpi->len = sVar10;\n          dpi->buf[sVar9] = cVar15;\n          dpi->last_char = cVar15;\n          if (pcVar13 == "") break;\n          cVar15 = *pcVar13;\n          sVar9 = sVar10;\n        }\n      }\n      else {\n        sVar10 = sVar9 + 1;\n        if (sVar9 == 0xff) {\n          pvVar4 = dpi->opaque;\n          dpi->buf[0xff] = '\0';\n          (*dpi->callback)(dpi->buf,0xff,pvVar4);\n          dpi->flush_count = dpi->flush_count + 1;\n          sVar10 = 1;\n          sVar9 = 0;\n        }\n        dpi->len = sVar10;\n        dpi->buf[sVar9] = '.';\n        dpi->last_char = '.';\n      }\n      pdVar14 = (mods->mod->u).s_extended_operator.name;\n      dVar6 = pdVar14->type;\n      if (dVar6 == DEMANGLE_COMPONENT_DEFAULT_ARG) {\n        pcVar13 = "{default arg#";\n        cVar15 = '{';\n        sVar9 = dpi->len;\n        while( true ) {\n          pcVar13 = pcVar13 + 1;\n          if (sVar9 == 0xff) {\n            pvVar4 = dpi->opaque;\n            dpi->buf[0xff] = '\0';\n            (*dpi->callback)(dpi->buf,0xff,pvVar4);\n            dpi->flush_count = dpi->flush_count + 1;\n            sVar9 = 0;\n            sVar10 = 1;\n          }\n          else {\n            sVar10 = sVar9 + 1;\n          }\n          dpi->len = sVar10;\n          dpi->buf[sVar9] = cVar15;\n          dpi->last_char = cVar15;\n          if (pcVar13 == "") break;\n          cVar15 = *pcVar13;\n          sVar9 = sVar10;\n        }\n        __s = (uint *)buf;\n        sprintf((char *)__s,"%d",(ulong)((pdVar14->u).s_name.len + 1));\n        puVar12 = __s;\n        do {\n          puVar11 = puVar12;\n          uVar7 = *puVar11 + 0xfefefeff & ~*puVar11;\n          uVar8 = uVar7 & 0x80808080;\n          puVar12 = puVar11 + 1;\n        } while (uVar8 == 0);\n        bVar16 = (uVar7 & 0x8080) == 0;\n        if (bVar16) {\n          uVar8 = uVar8 >> 0x10;\n        }\n        if (bVar16) {\n          puVar12 = (uint *)((long)puVar11 + 6);\n        }\n        sVar9 = dpi->len;\n        pcVar13 = (char *)((long)puVar12 +\n                          ((-3 - (ulong)CARRY1((byte)uVar8,(byte)uVar8)) - (long)__s));\n        if (pcVar13 != (char *)0x0) {\n          puVar12 = (uint *)((long)__s + (long)pcVar13);\n          sVar10 = sVar9;\n          do {\n            cVar15 = (char)*__s;\n            if (sVar10 == 0xff) {\n              pvVar4 = dpi->opaque;\n              dpi->buf[0xff] = '\0';\n              auStack_5b[2] = cVar15;\n              (*dpi->callback)(dpi->buf,0xff,pvVar4);\n              dpi->flush_count = dpi->flush_count + 1;\n              sVar9 = 1;\n              sVar10 = 0;\n              cVar15 = auStack_5b[2];\n            }\n            else {\n              sVar9 = sVar10 + 1;\n            }\n            __s = (uint *)((long)__s + 1);\n            dpi->len = sVar9;\n            dpi->buf[sVar10] = cVar15;\n            dpi->last_char = cVar15;\n            sVar10 = sVar9;\n          } while (puVar12 != __s);\n        }\n        pcVar13 = "}::";\n        cVar15 = '}';\n        while( true ) {\n          if (sVar9 == 0xff) {\n            pvVar4 = dpi->opaque;\n            dpi->buf[0xff] = '\0';\n            (*dpi->callback)(dpi->buf,0xff,pvVar4);\n            dpi->flush_count = dpi->flush_count + 1;\n            sVar9 = 0;\n            sVar10 = 1;\n          }\n          else {\n            sVar10 = sVar9 + 1;\n          }\n          pcVar13 = pcVar13 + 1;\n          dpi->len = sVar10;\n          dpi->buf[sVar9] = cVar15;\n          dpi->last_char = cVar15;\n          if (pcVar13 == "") break;\n          cVar15 = *pcVar13;\n          sVar9 = sVar10;\n        }\n        pdVar14 = (pdVar14->u).s_fixed.length;\n        dVar6 = pdVar14->type;\n      }\n      if (dVar6 - DEMANGLE_COMPONENT_RESTRICT_THIS < 0x34) {\n        uVar5 = 0xd00000000001fU >> ((ulong)(dVar6 - DEMANGLE_COMPONENT_RESTRICT_THIS) & 0x3f) & 1;\n        while (uVar5 != 0) {\n          pdVar14 = (pdVar14->u).s_fixed.length;\n          uVar8 = pdVar14->type - DEMANGLE_COMPONENT_RESTRICT_THIS;\n          if (0x33 < uVar8) break;\n          uVar5 = 1L << ((byte)uVar8 & 0x3f) & 0xd00000000001f;\n        }\n      }\n      d_print_comp(dpi,options,pdVar14);\n      dpi->templates = pdVar2;\n      return;\n    }" { (expression_statement "pdVar3 = dpi->modifiers;" (assignment_expression "pdVar3 = dpi->modifiers" identifier = (field_expression "dpi->modifiers" identifier -> field_identifier)) ;) (expression_statement "pdVar14 = (pdVar14->u).s_fixed.length;" (assignment_expression "pdVar14 = (pdVar14->u).s_fixed.length" identifier = (field_expression "(pdVar14->u).s_fixed.length" (field_expression "(pdVar14->u).s_fixed" (parenthesized_expression "(pdVar14->u)" ( (field_expression "pdVar14->u" identifier -> field_identifier) )) . field_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,pdVar14);" (call_expression "d_print_comp(dpi,options,pdVar14)" identifier (argument_list "(dpi,options,pdVar14)" ( identifier , identifier , identifier ))) ;) (expression_statement "dpi->modifiers = pdVar3;" (assignment_expression "dpi->modifiers = pdVar3" (field_expression "dpi->modifiers" identifier -> field_identifier) = identifier) ;) (expression_statement "sVar9 = dpi->len;" (assignment_expression "sVar9 = dpi->len" identifier = (field_expression "dpi->len" identifier -> field_identifier)) ;) (if_statement "if ((options & 4U) == 0) {\n        pcVar13 = "::";\n        cVar15 = ':';\n        while( true ) {\n          if (sVar9 == 0xff) {\n            pvVar4 = dpi->opaque;\n            dpi->buf[0xff] = '\0';\n            (*dpi->callback)(dpi->buf,0xff,pvVar4);\n            dpi->flush_count = dpi->flush_count + 1;\n            sVar9 = 0;\n            sVar10 = 1;\n          }\n          else {\n            sVar10 = sVar9 + 1;\n          }\n          pcVar13 = pcVar13 + 1;\n          dpi->len = sVar10;\n          dpi->buf[sVar9] = cVar15;\n          dpi->last_char = cVar15;\n          if (pcVar13 == "") break;\n          cVar15 = *pcVar13;\n          sVar9 = sVar10;\n        }\n      }\n      else {\n        sVar10 = sVar9 + 1;\n        if (sVar9 == 0xff) {\n          pvVar4 = dpi->opaque;\n          dpi->buf[0xff] = '\0';\n          (*dpi->callback)(dpi->buf,0xff,pvVar4);\n          dpi->flush_count = dpi->flush_count + 1;\n          sVar10 = 1;\n          sVar9 = 0;\n        }\n        dpi->len = sVar10;\n        dpi->buf[sVar9] = '.';\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        pcVar13 = "::";\n        cVar15 = ':';\n        while( true ) {\n          if (sVar9 == 0xff) {\n            pvVar4 = dpi->opaque;\n            dpi->buf[0xff] = '\0';\n            (*dpi->callback)(dpi->buf,0xff,pvVar4);\n            dpi->flush_count = dpi->flush_count + 1;\n            sVar9 = 0;\n            sVar10 = 1;\n          }\n          else {\n            sVar10 = sVar9 + 1;\n          }\n          pcVar13 = pcVar13 + 1;\n          dpi->len = sVar10;\n          dpi->buf[sVar9] = cVar15;\n          dpi->last_char = cVar15;\n          if (pcVar13 == "") break;\n          cVar15 = *pcVar13;\n          sVar9 = sVar10;\n        }\n      }" { (expression_statement "pcVar13 = "::";" (assignment_expression "pcVar13 = "::"" identifier = (string_literal ""::"" " string_content ")) ;) (expression_statement "cVar15 = ':';" (assignment_expression "cVar15 = ':'" identifier = (char_literal "':'" ' character ')) ;) (while_statement "while( true ) {\n          if (sVar9 == 0xff) {\n            pvVar4 = dpi->opaque;\n            dpi->buf[0xff] = '\0';\n            (*dpi->callback)(dpi->buf,0xff,pvVar4);\n            dpi->flush_count = dpi->flush_count + 1;\n            sVar9 = 0;\n            sVar10 = 1;\n          }\n          else {\n            sVar10 = sVar9 + 1;\n          }\n          pcVar13 = pcVar13 + 1;\n          dpi->len = sVar10;\n          dpi->buf[sVar9] = cVar15;\n          dpi->last_char = cVar15;\n          if (pcVar13 == "") break;\n          cVar15 = *pcVar13;\n          sVar9 = sVar10;\n        }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n          if (sVar9 == 0xff) {\n            pvVar4 = dpi->opaque;\n            dpi->buf[0xff] = '\0';\n            (*dpi->callback)(dpi->buf,0xff,pvVar4);\n            dpi->flush_count = dpi->flush_count + 1;\n            sVar9 = 0;\n            sVar10 = 1;\n          }\n          else {\n            sVar10 = sVar9 + 1;\n          }\n          pcVar13 = pcVar13 + 1;\n          dpi->len = sVar10;\n          dpi->buf[sVar9] = cVar15;\n          dpi->last_char = cVar15;\n          if (pcVar13 == "") break;\n          cVar15 = *pcVar13;\n          sVar9 = sVar10;\n        }" { (if_statement "if (sVar9 == 0xff) {\n            pvVar4 = dpi->opaque;\n            dpi->buf[0xff] = '\0';\n            (*dpi->callback)(dpi->buf,0xff,pvVar4);\n            dpi->flush_count = dpi->flush_count + 1;\n            sVar9 = 0;\n            sVar10 = 1;\n          }\n          else {\n            sVar10 = sVar9 + 1;\n          }" if (parenthesized_expression "(sVar9 == 0xff)" ( (binary_expression "sVar9 == 0xff" identifier == number_literal) )) (compound_statement "{\n            pvVar4 = dpi->opaque;\n            dpi->buf[0xff] = '\0';\n            (*dpi->callback)(dpi->buf,0xff,pvVar4);\n            dpi->flush_count = dpi->flush_count + 1;\n            sVar9 = 0;\n            sVar10 = 1;\n          }" { (expression_statement "pvVar4 = dpi->opaque;" (assignment_expression "pvVar4 = 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 "(*dpi->callback)(dpi->buf,0xff,pvVar4);" (call_expression "(*dpi->callback)(dpi->buf,0xff,pvVar4)" (parenthesized_expression "(*dpi->callback)" ( (pointer_expression "*dpi->callback" * (field_expression "dpi->callback" identifier -> field_identifier)) )) (argument_list "(dpi->buf,0xff,pvVar4)" ( (field_expression "dpi->buf" identifier -> field_identifier) , number_literal , identifier ))) ;) (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)) ;) (expression_statement "sVar9 = 0;" (assignment_expression "sVar9 = 0" identifier = number_literal) ;) (expression_statement "sVar10 = 1;" (assignment_expression "sVar10 = 1" identifier = number_literal) ;) }) (else_clause "else {\n            sVar10 = sVar9 + 1;\n          }" else (compound_statement "{\n            sVar10 = sVar9 + 1;\n          }" { (expression_statement "sVar10 = sVar9 + 1;" (assignment_expression "sVar10 = sVar9 + 1" identifier = (binary_expression "sVar9 + 1" identifier + number_literal)) ;) }))) (expression_statement "pcVar13 = pcVar13 + 1;" (assignment_expression "pcVar13 = pcVar13 + 1" identifier = (binary_expression "pcVar13 + 1" identifier + number_literal)) ;) (expression_statement "dpi->len = sVar10;" (assignment_expression "dpi->len = sVar10" (field_expression "dpi->len" identifier -> field_identifier) = identifier) ;) (expression_statement "dpi->buf[sVar9] = cVar15;" (assignment_expression "dpi->buf[sVar9] = cVar15" (subscript_expression "dpi->buf[sVar9]" (field_expression "dpi->buf" identifier -> field_identifier) [ identifier ]) = identifier) ;) (expression_statement "dpi->last_char = cVar15;" (assignment_expression "dpi->last_char = cVar15" (field_expression "dpi->last_char" identifier -> field_identifier) = identifier) ;) (if_statement "if (pcVar13 == "") break;" if (parenthesized_expression "(pcVar13 == "")" ( (binary_expression "pcVar13 == """ identifier == (string_literal """" " ")) )) (break_statement "break;" break ;)) (expression_statement "cVar15 = *pcVar13;" (assignment_expression "cVar15 = *pcVar13" identifier = (pointer_expression "*pcVar13" * identifier)) ;) (expression_statement "sVar9 = sVar10;" (assignment_expression "sVar9 = sVar10" identifier = identifier) ;) })) }) (else_clause "else {\n        sVar10 = sVar9 + 1;\n        if (sVar9 == 0xff) {\n          pvVar4 = dpi->opaque;\n          dpi->buf[0xff] = '\0';\n          (*dpi->callback)(dpi->buf,0xff,pvVar4);\n          dpi->flush_count = dpi->flush_count + 1;\n          sVar10 = 1;\n          sVar9 = 0;\n        }\n        dpi->len = sVar10;\n        dpi->buf[sVar9] = '.';\n        dpi->last_char = '.';\n      }" else (compound_statement "{\n        sVar10 = sVar9 + 1;\n        if (sVar9 == 0xff) {\n          pvVar4 = dpi->opaque;\n          dpi->buf[0xff] = '\0';\n          (*dpi->callback)(dpi->buf,0xff,pvVar4);\n          dpi->flush_count = dpi->flush_count + 1;\n          sVar10 = 1;\n          sVar9 = 0;\n        }\n        dpi->len = sVar10;\n        dpi->buf[sVar9] = '.';\n        dpi->last_char = '.';\n      }" { (expression_statement "sVar10 = sVar9 + 1;" (assignment_expression "sVar10 = sVar9 + 1" identifier = (binary_expression "sVar9 + 1" identifier + number_literal)) ;) (if_statement "if (sVar9 == 0xff) {\n          pvVar4 = dpi->opaque;\n          dpi->buf[0xff] = '\0';\n          (*dpi->callback)(dpi->buf,0xff,pvVar4);\n          dpi->flush_count = dpi->flush_count + 1;\n          sVar10 = 1;\n          sVar9 = 0;\n        }" if (parenthesized_expression "(sVar9 == 0xff)" ( (binary_expression "sVar9 == 0xff" identifier == number_literal) )) (compound_statement "{\n          pvVar4 = dpi->opaque;\n          dpi->buf[0xff] = '\0';\n          (*dpi->callback)(dpi->buf,0xff,pvVar4);\n          dpi->flush_count = dpi->flush_count + 1;\n          sVar10 = 1;\n          sVar9 = 0;\n        }" { (expression_statement "pvVar4 = dpi->opaque;" (assignment_expression "pvVar4 = 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 "(*dpi->callback)(dpi->buf,0xff,pvVar4);" (call_expression "(*dpi->callback)(dpi->buf,0xff,pvVar4)" (parenthesized_expression "(*dpi->callback)" ( (pointer_expression "*dpi->callback" * (field_expression "dpi->callback" identifier -> field_identifier)) )) (argument_list "(dpi->buf,0xff,pvVar4)" ( (field_expression "dpi->buf" identifier -> field_identifier) , number_literal , identifier ))) ;) (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)) ;) (expression_statement "sVar10 = 1;" (assignment_expression "sVar10 = 1" identifier = number_literal) ;) (expression_statement "sVar9 = 0;" (assignment_expression "sVar9 = 0" identifier = number_literal) ;) })) (expression_statement "dpi->len = sVar10;" (assignment_expression "dpi->len = sVar10" (field_expression "dpi->len" identifier -> field_identifier) = identifier) ;) (expression_statement "dpi->buf[sVar9] = '.';" (assignment_expression "dpi->buf[sVar9] = '.'" (subscript_expression "dpi->buf[sVar9]" (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 "pdVar14 = (mods->mod->u).s_extended_operator.name;" (assignment_expression "pdVar14 = (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 "dVar6 = pdVar14->type;" (assignment_expression "dVar6 = pdVar14->type" identifier = (field_expression "pdVar14->type" identifier -> field_identifier)) ;) (if_statement "if (dVar6 == DEMANGLE_COMPONENT_DEFAULT_ARG) {\n        pcVar13 = "{default arg#";\n        cVar15 = '{';\n        sVar9 = dpi->len;\n        while( true ) {\n          pcVar13 = pcVar13 + 1;\n          if (sVar9 == 0xff) {\n            pvVar4 = dpi->opaque;\n            dpi->buf[0xff] = '\0';\n            (*dpi->callback)(dpi->buf,0xff,pvVar4);\n            dpi->flush_count = dpi->flush_count + 1;\n            sVar9 = 0;\n            sVar10 = 1;\n          }\n          else {\n            sVar10 = sVar9 + 1;\n          }\n          dpi->len = sVar10;\n          dpi->buf[sVar9] = cVar15;\n          dpi->last_char = cVar15;\n          if (pcVar13 == "") break;\n          cVar15 = *pcVar13;\n          sVar9 = sVar10;\n        }\n        __s = (uint *)buf;\n        sprintf((char *)__s,"%d",(ulong)((pdVar14->u).s_name.len + 1));\n        puVar12 = __s;\n        do {\n          puVar11 = puVar12;\n          uVar7 = *puVar11 + 0xfefefeff & ~*puVar11;\n          uVar8 = uVar7 & 0x80808080;\n          puVar12 = puVar11 + 1;\n        } while (uVar8 == 0);\n        bVar16 = (uVar7 & 0x8080) == 0;\n        if (bVar16) {\n          uVar8 = uVar8 >> 0x10;\n        }\n        if (bVar16) {\n          puVar12 = (uint *)((long)puVar11 + 6);\n        }\n        sVar9 = dpi->len;\n        pcVar13 = (char *)((long)puVar12 +\n                          ((-3 - (ulong)CARRY1((byte)uVar8,(byte)uVar8)) - (long)__s));\n        if (pcVar13 != (char *)0x0) {\n          puVar12 = (uint *)((long)__s + (long)pcVar13);\n          sVar10 = sVar9;\n          do {\n            cVar15 = (char)*__s;\n            if (sVar10 == 0xff) {\n              pvVar4 = dpi->opaque;\n              dpi->buf[0xff] = '\0';\n              auStack_5b[2] = cVar15;\n              (*dpi->callback)(dpi->buf,0xff,pvVar4);\n              dpi->flush_count = dpi->flush_count + 1;\n              sVar9 = 1;\n              sVar10 = 0;\n              cVar15 = auStack_5b[2];\n            }\n            else {\n              sVar9 = sVar10 + 1;\n            }\n            __s = (uint *)((long)__s + 1);\n            dpi->len = sVar9;\n            dpi->buf[sVar10] = cVar15;\n            dpi->last_char = cVar15;\n            sVar10 = sVar9;\n          } while (puVar12 != __s);\n        }\n        pcVar13 = "}::";\n        cVar15 = '}';\n        while( true ) {\n          if (sVar9 == 0xff) {\n            pvVar4 = dpi->opaque;\n            dpi->buf[0xff] = '\0';\n            (*dpi->callback)(dpi->buf,0xff,pvVar4);\n            dpi->flush_count = dpi->flush_count + 1;\n            sVar9 = 0;\n            sVar10 = 1;\n          }\n          else {\n            sVar10 = sVar9 + 1;\n          }\n          pcVar13 = pcVar13 + 1;\n          dpi->len = sVar10;\n          dpi->buf[sVar9] = cVar15;\n          dpi->last_char = cVar15;\n          if (pcVar13 == "") break;\n          cVar15 = *pcVar13;\n          sVar9 = sVar10;\n        }\n        pdVar14 = (pdVar14->u).s_fixed.length;\n        dVar6 = pdVar14->type;\n      }" if (parenthesized_expression "(dVar6 == DEMANGLE_COMPONENT_DEFAULT_ARG)" ( (binary_expression "dVar6 == DEMANGLE_COMPONENT_DEFAULT_ARG" identifier == identifier) )) (compound_statement "{\n        pcVar13 = "{default arg#";\n        cVar15 = '{';\n        sVar9 = dpi->len;\n        while( true ) {\n          pcVar13 = pcVar13 + 1;\n          if (sVar9 == 0xff) {\n            pvVar4 = dpi->opaque;\n            dpi->buf[0xff] = '\0';\n            (*dpi->callback)(dpi->buf,0xff,pvVar4);\n            dpi->flush_count = dpi->flush_count + 1;\n            sVar9 = 0;\n            sVar10 = 1;\n          }\n          else {\n            sVar10 = sVar9 + 1;\n          }\n          dpi->len = sVar10;\n          dpi->buf[sVar9] = cVar15;\n          dpi->last_char = cVar15;\n          if (pcVar13 == "") break;\n          cVar15 = *pcVar13;\n          sVar9 = sVar10;\n        }\n        __s = (uint *)buf;\n        sprintf((char *)__s,"%d",(ulong)((pdVar14->u).s_name.len + 1));\n        puVar12 = __s;\n        do {\n          puVar11 = puVar12;\n          uVar7 = *puVar11 + 0xfefefeff & ~*puVar11;\n          uVar8 = uVar7 & 0x80808080;\n          puVar12 = puVar11 + 1;\n        } while (uVar8 == 0);\n        bVar16 = (uVar7 & 0x8080) == 0;\n        if (bVar16) {\n          uVar8 = uVar8 >> 0x10;\n        }\n        if (bVar16) {\n          puVar12 = (uint *)((long)puVar11 + 6);\n        }\n        sVar9 = dpi->len;\n        pcVar13 = (char *)((long)puVar12 +\n                          ((-3 - (ulong)CARRY1((byte)uVar8,(byte)uVar8)) - (long)__s));\n        if (pcVar13 != (char *)0x0) {\n          puVar12 = (uint *)((long)__s + (long)pcVar13);\n          sVar10 = sVar9;\n          do {\n            cVar15 = (char)*__s;\n            if (sVar10 == 0xff) {\n              pvVar4 = dpi->opaque;\n              dpi->buf[0xff] = '\0';\n              auStack_5b[2] = cVar15;\n              (*dpi->callback)(dpi->buf,0xff,pvVar4);\n              dpi->flush_count = dpi->flush_count + 1;\n              sVar9 = 1;\n              sVar10 = 0;\n              cVar15 = auStack_5b[2];\n            }\n            else {\n              sVar9 = sVar10 + 1;\n            }\n            __s = (uint *)((long)__s + 1);\n            dpi->len = sVar9;\n            dpi->buf[sVar10] = cVar15;\n            dpi->last_char = cVar15;\n            sVar10 = sVar9;\n          } while (puVar12 != __s);\n        }\n        pcVar13 = "}::";\n        cVar15 = '}';\n        while( true ) {\n          if (sVar9 == 0xff) {\n            pvVar4 = dpi->opaque;\n            dpi->buf[0xff] = '\0';\n            (*dpi->callback)(dpi->buf,0xff,pvVar4);\n            dpi->flush_count = dpi->flush_count + 1;\n            sVar9 = 0;\n            sVar10 = 1;\n          }\n          else {\n            sVar10 = sVar9 + 1;\n          }\n          pcVar13 = pcVar13 + 1;\n          dpi->len = sVar10;\n          dpi->buf[sVar9] = cVar15;\n          dpi->last_char = cVar15;\n          if (pcVar13 == "") break;\n          cVar15 = *pcVar13;\n          sVar9 = sVar10;\n        }\n        pdVar14 = (pdVar14->u).s_fixed.length;\n        dVar6 = pdVar14->type;\n      }" { (expression_statement "pcVar13 = "{default arg#";" (assignment_expression "pcVar13 = "{default arg#"" identifier = (string_literal ""{default arg#"" " string_content ")) ;) (expression_statement "cVar15 = '{';" (assignment_expression "cVar15 = '{'" identifier = (char_literal "'{'" ' character ')) ;) (expression_statement "sVar9 = dpi->len;" (assignment_expression "sVar9 = dpi->len" identifier = (field_expression "dpi->len" identifier -> field_identifier)) ;) (while_statement "while( true ) {\n          pcVar13 = pcVar13 + 1;\n          if (sVar9 == 0xff) {\n            pvVar4 = dpi->opaque;\n            dpi->buf[0xff] = '\0';\n            (*dpi->callback)(dpi->buf,0xff,pvVar4);\n            dpi->flush_count = dpi->flush_count + 1;\n            sVar9 = 0;\n            sVar10 = 1;\n          }\n          else {\n            sVar10 = sVar9 + 1;\n          }\n          dpi->len = sVar10;\n          dpi->buf[sVar9] = cVar15;\n          dpi->last_char = cVar15;\n          if (pcVar13 == "") break;\n          cVar15 = *pcVar13;\n          sVar9 = sVar10;\n        }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n          pcVar13 = pcVar13 + 1;\n          if (sVar9 == 0xff) {\n            pvVar4 = dpi->opaque;\n            dpi->buf[0xff] = '\0';\n            (*dpi->callback)(dpi->buf,0xff,pvVar4);\n            dpi->flush_count = dpi->flush_count + 1;\n            sVar9 = 0;\n            sVar10 = 1;\n          }\n          else {\n            sVar10 = sVar9 + 1;\n          }\n          dpi->len = sVar10;\n          dpi->buf[sVar9] = cVar15;\n          dpi->last_char = cVar15;\n          if (pcVar13 == "") break;\n          cVar15 = *pcVar13;\n          sVar9 = sVar10;\n        }" { (expression_statement "pcVar13 = pcVar13 + 1;" (assignment_expression "pcVar13 = pcVar13 + 1" identifier = (binary_expression "pcVar13 + 1" identifier + number_literal)) ;) (if_statement "if (sVar9 == 0xff) {\n            pvVar4 = dpi->opaque;\n            dpi->buf[0xff] = '\0';\n            (*dpi->callback)(dpi->buf,0xff,pvVar4);\n            dpi->flush_count = dpi->flush_count + 1;\n            sVar9 = 0;\n            sVar10 = 1;\n          }\n          else {\n            sVar10 = sVar9 + 1;\n          }" if (parenthesized_expression "(sVar9 == 0xff)" ( (binary_expression "sVar9 == 0xff" identifier == number_literal) )) (compound_statement "{\n            pvVar4 = dpi->opaque;\n            dpi->buf[0xff] = '\0';\n            (*dpi->callback)(dpi->buf,0xff,pvVar4);\n            dpi->flush_count = dpi->flush_count + 1;\n            sVar9 = 0;\n            sVar10 = 1;\n          }" { (expression_statement "pvVar4 = dpi->opaque;" (assignment_expression "pvVar4 = 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 "(*dpi->callback)(dpi->buf,0xff,pvVar4);" (call_expression "(*dpi->callback)(dpi->buf,0xff,pvVar4)" (parenthesized_expression "(*dpi->callback)" ( (pointer_expression "*dpi->callback" * (field_expression "dpi->callback" identifier -> field_identifier)) )) (argument_list "(dpi->buf,0xff,pvVar4)" ( (field_expression "dpi->buf" identifier -> field_identifier) , number_literal , identifier ))) ;) (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)) ;) (expression_statement "sVar9 = 0;" (assignment_expression "sVar9 = 0" identifier = number_literal) ;) (expression_statement "sVar10 = 1;" (assignment_expression "sVar10 = 1" identifier = number_literal) ;) }) (else_clause "else {\n            sVar10 = sVar9 + 1;\n          }" else (compound_statement "{\n            sVar10 = sVar9 + 1;\n          }" { (expression_statement "sVar10 = sVar9 + 1;" (assignment_expression "sVar10 = sVar9 + 1" identifier = (binary_expression "sVar9 + 1" identifier + number_literal)) ;) }))) (expression_statement "dpi->len = sVar10;" (assignment_expression "dpi->len = sVar10" (field_expression "dpi->len" identifier -> field_identifier) = identifier) ;) (expression_statement "dpi->buf[sVar9] = cVar15;" (assignment_expression "dpi->buf[sVar9] = cVar15" (subscript_expression "dpi->buf[sVar9]" (field_expression "dpi->buf" identifier -> field_identifier) [ identifier ]) = identifier) ;) (expression_statement "dpi->last_char = cVar15;" (assignment_expression "dpi->last_char = cVar15" (field_expression "dpi->last_char" identifier -> field_identifier) = identifier) ;) (if_statement "if (pcVar13 == "") break;" if (parenthesized_expression "(pcVar13 == "")" ( (binary_expression "pcVar13 == """ identifier == (string_literal """" " ")) )) (break_statement "break;" break ;)) (expression_statement "cVar15 = *pcVar13;" (assignment_expression "cVar15 = *pcVar13" identifier = (pointer_expression "*pcVar13" * identifier)) ;) (expression_statement "sVar9 = sVar10;" (assignment_expression "sVar9 = sVar10" identifier = identifier) ;) })) (expression_statement "__s = (uint *)buf;" (assignment_expression "__s = (uint *)buf" identifier = (cast_expression "(uint *)buf" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "sprintf((char *)__s,"%d",(ulong)((pdVar14->u).s_name.len + 1));" (call_expression "sprintf((char *)__s,"%d",(ulong)((pdVar14->u).s_name.len + 1))" identifier (argument_list "((char *)__s,"%d",(ulong)((pdVar14->u).s_name.len + 1))" ( (cast_expression "(char *)__s" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) , (string_literal ""%d"" " string_content ") , (call_expression "(ulong)((pdVar14->u).s_name.len + 1)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "((pdVar14->u).s_name.len + 1)" ( (binary_expression "(pdVar14->u).s_name.len + 1" (field_expression "(pdVar14->u).s_name.len" (field_expression "(pdVar14->u).s_name" (parenthesized_expression "(pdVar14->u)" ( (field_expression "pdVar14->u" identifier -> field_identifier) )) . field_identifier) . field_identifier) + number_literal) ))) ))) ;) (expression_statement "puVar12 = __s;" (assignment_expression "puVar12 = __s" identifier = identifier) ;) (do_statement "do {\n          puVar11 = puVar12;\n          uVar7 = *puVar11 + 0xfefefeff & ~*puVar11;\n          uVar8 = uVar7 & 0x80808080;\n          puVar12 = puVar11 + 1;\n        } while (uVar8 == 0);" do (compound_statement "{\n          puVar11 = puVar12;\n          uVar7 = *puVar11 + 0xfefefeff & ~*puVar11;\n          uVar8 = uVar7 & 0x80808080;\n          puVar12 = puVar11 + 1;\n        }" { (expression_statement "puVar11 = puVar12;" (assignment_expression "puVar11 = puVar12" identifier = identifier) ;) (expression_statement "uVar7 = *puVar11 + 0xfefefeff & ~*puVar11;" (assignment_expression "uVar7 = *puVar11 + 0xfefefeff & ~*puVar11" identifier = (binary_expression "*puVar11 + 0xfefefeff & ~*puVar11" (binary_expression "*puVar11 + 0xfefefeff" (pointer_expression "*puVar11" * identifier) + number_literal) & (unary_expression "~*puVar11" ~ (pointer_expression "*puVar11" * identifier)))) ;) (expression_statement "uVar8 = uVar7 & 0x80808080;" (assignment_expression "uVar8 = uVar7 & 0x80808080" identifier = (binary_expression "uVar7 & 0x80808080" identifier & number_literal)) ;) (expression_statement "puVar12 = puVar11 + 1;" (assignment_expression "puVar12 = puVar11 + 1" identifier = (binary_expression "puVar11 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar8 == 0)" ( (binary_expression "uVar8 == 0" identifier == number_literal) )) ;) (expression_statement "bVar16 = (uVar7 & 0x8080) == 0;" (assignment_expression "bVar16 = (uVar7 & 0x8080) == 0" identifier = (binary_expression "(uVar7 & 0x8080) == 0" (parenthesized_expression "(uVar7 & 0x8080)" ( (binary_expression "uVar7 & 0x8080" identifier & number_literal) )) == number_literal)) ;) (if_statement "if (bVar16) {\n          uVar8 = uVar8 >> 0x10;\n        }" if (parenthesized_expression "(bVar16)" ( identifier )) (compound_statement "{\n          uVar8 = uVar8 >> 0x10;\n        }" { (expression_statement "uVar8 = uVar8 >> 0x10;" (assignment_expression "uVar8 = uVar8 >> 0x10" identifier = (binary_expression "uVar8 >> 0x10" identifier >> number_literal)) ;) })) (if_statement "if (bVar16) {\n          puVar12 = (uint *)((long)puVar11 + 6);\n        }" if (parenthesized_expression "(bVar16)" ( identifier )) (compound_statement "{\n          puVar12 = (uint *)((long)puVar11 + 6);\n        }" { (expression_statement "puVar12 = (uint *)((long)puVar11 + 6);" (assignment_expression "puVar12 = (uint *)((long)puVar11 + 6)" identifier = (cast_expression "(uint *)((long)puVar11 + 6)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)puVar11 + 6)" ( (binary_expression "(long)puVar11 + 6" (cast_expression "(long)puVar11" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) ;) })) (expression_statement "sVar9 = dpi->len;" (assignment_expression "sVar9 = dpi->len" identifier = (field_expression "dpi->len" identifier -> field_identifier)) ;) (expression_statement "pcVar13 = (char *)((long)puVar12 +\n                          ((-3 - (ulong)CARRY1((byte)uVar8,(byte)uVar8)) - (long)__s));" (assignment_expression "pcVar13 = (char *)((long)puVar12 +\n                          ((-3 - (ulong)CARRY1((byte)uVar8,(byte)uVar8)) - (long)__s))" identifier = (cast_expression "(char *)((long)puVar12 +\n                          ((-3 - (ulong)CARRY1((byte)uVar8,(byte)uVar8)) - (long)__s))" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)puVar12 +\n                          ((-3 - (ulong)CARRY1((byte)uVar8,(byte)uVar8)) - (long)__s))" ( (binary_expression "(long)puVar12 +\n                          ((-3 - (ulong)CARRY1((byte)uVar8,(byte)uVar8)) - (long)__s)" (cast_expression "(long)puVar12" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + (parenthesized_expression "((-3 - (ulong)CARRY1((byte)uVar8,(byte)uVar8)) - (long)__s)" ( (binary_expression "(-3 - (ulong)CARRY1((byte)uVar8,(byte)uVar8)) - (long)__s" (parenthesized_expression "(-3 - (ulong)CARRY1((byte)uVar8,(byte)uVar8))" ( (binary_expression "-3 - (ulong)CARRY1((byte)uVar8,(byte)uVar8)" number_literal - (cast_expression "(ulong)CARRY1((byte)uVar8,(byte)uVar8)" ( (type_descriptor "ulong" type_identifier) ) (call_expression "CARRY1((byte)uVar8,(byte)uVar8)" identifier (argument_list "((byte)uVar8,(byte)uVar8)" ( (cast_expression "(byte)uVar8" ( (type_descriptor "byte" type_identifier) ) identifier) , (cast_expression "(byte)uVar8" ( (type_descriptor "byte" type_identifier) ) identifier) ))))) )) - (cast_expression "(long)__s" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) ))) )))) ;) (if_statement "if (pcVar13 != (char *)0x0) {\n          puVar12 = (uint *)((long)__s + (long)pcVar13);\n          sVar10 = sVar9;\n          do {\n            cVar15 = (char)*__s;\n            if (sVar10 == 0xff) {\n              pvVar4 = dpi->opaque;\n              dpi->buf[0xff] = '\0';\n              auStack_5b[2] = cVar15;\n              (*dpi->callback)(dpi->buf,0xff,pvVar4);\n              dpi->flush_count = dpi->flush_count + 1;\n              sVar9 = 1;\n              sVar10 = 0;\n              cVar15 = auStack_5b[2];\n            }\n            else {\n              sVar9 = sVar10 + 1;\n            }\n            __s = (uint *)((long)__s + 1);\n            dpi->len = sVar9;\n            dpi->buf[sVar10] = cVar15;\n            dpi->last_char = cVar15;\n            sVar10 = sVar9;\n          } while (puVar12 != __s);\n        }" if (parenthesized_expression "(pcVar13 != (char *)0x0)" ( (binary_expression "pcVar13 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          puVar12 = (uint *)((long)__s + (long)pcVar13);\n          sVar10 = sVar9;\n          do {\n            cVar15 = (char)*__s;\n            if (sVar10 == 0xff) {\n              pvVar4 = dpi->opaque;\n              dpi->buf[0xff] = '\0';\n              auStack_5b[2] = cVar15;\n              (*dpi->callback)(dpi->buf,0xff,pvVar4);\n              dpi->flush_count = dpi->flush_count + 1;\n              sVar9 = 1;\n              sVar10 = 0;\n              cVar15 = auStack_5b[2];\n            }\n            else {\n              sVar9 = sVar10 + 1;\n            }\n            __s = (uint *)((long)__s + 1);\n            dpi->len = sVar9;\n            dpi->buf[sVar10] = cVar15;\n            dpi->last_char = cVar15;\n            sVar10 = sVar9;\n          } while (puVar12 != __s);\n        }" { (expression_statement "puVar12 = (uint *)((long)__s + (long)pcVar13);" (assignment_expression "puVar12 = (uint *)((long)__s + (long)pcVar13)" identifier = (cast_expression "(uint *)((long)__s + (long)pcVar13)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)__s + (long)pcVar13)" ( (binary_expression "(long)__s + (long)pcVar13" (cast_expression "(long)__s" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + (cast_expression "(long)pcVar13" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) )))) ;) (expression_statement "sVar10 = sVar9;" (assignment_expression "sVar10 = sVar9" identifier = identifier) ;) (do_statement "do {\n            cVar15 = (char)*__s;\n            if (sVar10 == 0xff) {\n              pvVar4 = dpi->opaque;\n              dpi->buf[0xff] = '\0';\n              auStack_5b[2] = cVar15;\n              (*dpi->callback)(dpi->buf,0xff,pvVar4);\n              dpi->flush_count = dpi->flush_count + 1;\n              sVar9 = 1;\n              sVar10 = 0;\n              cVar15 = auStack_5b[2];\n            }\n            else {\n              sVar9 = sVar10 + 1;\n            }\n            __s = (uint *)((long)__s + 1);\n            dpi->len = sVar9;\n            dpi->buf[sVar10] = cVar15;\n            dpi->last_char = cVar15;\n            sVar10 = sVar9;\n          } while (puVar12 != __s);" do (compound_statement "{\n            cVar15 = (char)*__s;\n            if (sVar10 == 0xff) {\n              pvVar4 = dpi->opaque;\n              dpi->buf[0xff] = '\0';\n              auStack_5b[2] = cVar15;\n              (*dpi->callback)(dpi->buf,0xff,pvVar4);\n              dpi->flush_count = dpi->flush_count + 1;\n              sVar9 = 1;\n              sVar10 = 0;\n              cVar15 = auStack_5b[2];\n            }\n            else {\n              sVar9 = sVar10 + 1;\n            }\n            __s = (uint *)((long)__s + 1);\n            dpi->len = sVar9;\n            dpi->buf[sVar10] = cVar15;\n            dpi->last_char = cVar15;\n            sVar10 = sVar9;\n          }" { (expression_statement "cVar15 = (char)*__s;" (assignment_expression "cVar15 = (char)*__s" identifier = (cast_expression "(char)*__s" ( (type_descriptor "char" primitive_type) ) (pointer_expression "*__s" * identifier))) ;) (if_statement "if (sVar10 == 0xff) {\n              pvVar4 = dpi->opaque;\n              dpi->buf[0xff] = '\0';\n              auStack_5b[2] = cVar15;\n              (*dpi->callback)(dpi->buf,0xff,pvVar4);\n              dpi->flush_count = dpi->flush_count + 1;\n              sVar9 = 1;\n              sVar10 = 0;\n              cVar15 = auStack_5b[2];\n            }\n            else {\n              sVar9 = sVar10 + 1;\n            }" if (parenthesized_expression "(sVar10 == 0xff)" ( (binary_expression "sVar10 == 0xff" identifier == number_literal) )) (compound_statement "{\n              pvVar4 = dpi->opaque;\n              dpi->buf[0xff] = '\0';\n              auStack_5b[2] = cVar15;\n              (*dpi->callback)(dpi->buf,0xff,pvVar4);\n              dpi->flush_count = dpi->flush_count + 1;\n              sVar9 = 1;\n              sVar10 = 0;\n              cVar15 = auStack_5b[2];\n            }" { (expression_statement "pvVar4 = dpi->opaque;" (assignment_expression "pvVar4 = 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 "auStack_5b[2] = cVar15;" (assignment_expression "auStack_5b[2] = cVar15" (subscript_expression "auStack_5b[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "(*dpi->callback)(dpi->buf,0xff,pvVar4);" (call_expression "(*dpi->callback)(dpi->buf,0xff,pvVar4)" (parenthesized_expression "(*dpi->callback)" ( (pointer_expression "*dpi->callback" * (field_expression "dpi->callback" identifier -> field_identifier)) )) (argument_list "(dpi->buf,0xff,pvVar4)" ( (field_expression "dpi->buf" identifier -> field_identifier) , number_literal , identifier ))) ;) (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)) ;) (expression_statement "sVar9 = 1;" (assignment_expression "sVar9 = 1" identifier = number_literal) ;) (expression_statement "sVar10 = 0;" (assignment_expression "sVar10 = 0" identifier = number_literal) ;) (expression_statement "cVar15 = auStack_5b[2];" (assignment_expression "cVar15 = auStack_5b[2]" identifier = (subscript_expression "auStack_5b[2]" identifier [ number_literal ])) ;) }) (else_clause "else {\n              sVar9 = sVar10 + 1;\n            }" else (compound_statement "{\n              sVar9 = sVar10 + 1;\n            }" { (expression_statement "sVar9 = sVar10 + 1;" (assignment_expression "sVar9 = sVar10 + 1" identifier = (binary_expression "sVar10 + 1" identifier + number_literal)) ;) }))) (expression_statement "__s = (uint *)((long)__s + 1);" (assignment_expression "__s = (uint *)((long)__s + 1)" identifier = (cast_expression "(uint *)((long)__s + 1)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)__s + 1)" ( (binary_expression "(long)__s + 1" (cast_expression "(long)__s" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) ;) (expression_statement "dpi->len = sVar9;" (assignment_expression "dpi->len = sVar9" (field_expression "dpi->len" identifier -> field_identifier) = identifier) ;) (expression_statement "dpi->buf[sVar10] = cVar15;" (assignment_expression "dpi->buf[sVar10] = cVar15" (subscript_expression "dpi->buf[sVar10]" (field_expression "dpi->buf" identifier -> field_identifier) [ identifier ]) = identifier) ;) (expression_statement "dpi->last_char = cVar15;" (assignment_expression "dpi->last_char = cVar15" (field_expression "dpi->last_char" identifier -> field_identifier) = identifier) ;) (expression_statement "sVar10 = sVar9;" (assignment_expression "sVar10 = sVar9" identifier = identifier) ;) }) while (parenthesized_expression "(puVar12 != __s)" ( (binary_expression "puVar12 != __s" identifier != identifier) )) ;) })) (expression_statement "pcVar13 = "}::";" (assignment_expression "pcVar13 = "}::"" identifier = (string_literal ""}::"" " string_content ")) ;) (expression_statement "cVar15 = '}';" (assignment_expression "cVar15 = '}'" identifier = (char_literal "'}'" ' character ')) ;) (while_statement "while( true ) {\n          if (sVar9 == 0xff) {\n            pvVar4 = dpi->opaque;\n            dpi->buf[0xff] = '\0';\n            (*dpi->callback)(dpi->buf,0xff,pvVar4);\n            dpi->flush_count = dpi->flush_count + 1;\n            sVar9 = 0;\n            sVar10 = 1;\n          }\n          else {\n            sVar10 = sVar9 + 1;\n          }\n          pcVar13 = pcVar13 + 1;\n          dpi->len = sVar10;\n          dpi->buf[sVar9] = cVar15;\n          dpi->last_char = cVar15;\n          if (pcVar13 == "") break;\n          cVar15 = *pcVar13;\n          sVar9 = sVar10;\n        }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n          if (sVar9 == 0xff) {\n            pvVar4 = dpi->opaque;\n            dpi->buf[0xff] = '\0';\n            (*dpi->callback)(dpi->buf,0xff,pvVar4);\n            dpi->flush_count = dpi->flush_count + 1;\n            sVar9 = 0;\n            sVar10 = 1;\n          }\n          else {\n            sVar10 = sVar9 + 1;\n          }\n          pcVar13 = pcVar13 + 1;\n          dpi->len = sVar10;\n          dpi->buf[sVar9] = cVar15;\n          dpi->last_char = cVar15;\n          if (pcVar13 == "") break;\n          cVar15 = *pcVar13;\n          sVar9 = sVar10;\n        }" { (if_statement "if (sVar9 == 0xff) {\n            pvVar4 = dpi->opaque;\n            dpi->buf[0xff] = '\0';\n            (*dpi->callback)(dpi->buf,0xff,pvVar4);\n            dpi->flush_count = dpi->flush_count + 1;\n            sVar9 = 0;\n            sVar10 = 1;\n          }\n          else {\n            sVar10 = sVar9 + 1;\n          }" if (parenthesized_expression "(sVar9 == 0xff)" ( (binary_expression "sVar9 == 0xff" identifier == number_literal) )) (compound_statement "{\n            pvVar4 = dpi->opaque;\n            dpi->buf[0xff] = '\0';\n            (*dpi->callback)(dpi->buf,0xff,pvVar4);\n            dpi->flush_count = dpi->flush_count + 1;\n            sVar9 = 0;\n            sVar10 = 1;\n          }" { (expression_statement "pvVar4 = dpi->opaque;" (assignment_expression "pvVar4 = 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 "(*dpi->callback)(dpi->buf,0xff,pvVar4);" (call_expression "(*dpi->callback)(dpi->buf,0xff,pvVar4)" (parenthesized_expression "(*dpi->callback)" ( (pointer_expression "*dpi->callback" * (field_expression "dpi->callback" identifier -> field_identifier)) )) (argument_list "(dpi->buf,0xff,pvVar4)" ( (field_expression "dpi->buf" identifier -> field_identifier) , number_literal , identifier ))) ;) (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)) ;) (expression_statement "sVar9 = 0;" (assignment_expression "sVar9 = 0" identifier = number_literal) ;) (expression_statement "sVar10 = 1;" (assignment_expression "sVar10 = 1" identifier = number_literal) ;) }) (else_clause "else {\n            sVar10 = sVar9 + 1;\n          }" else (compound_statement "{\n            sVar10 = sVar9 + 1;\n          }" { (expression_statement "sVar10 = sVar9 + 1;" (assignment_expression "sVar10 = sVar9 + 1" identifier = (binary_expression "sVar9 + 1" identifier + number_literal)) ;) }))) (expression_statement "pcVar13 = pcVar13 + 1;" (assignment_expression "pcVar13 = pcVar13 + 1" identifier = (binary_expression "pcVar13 + 1" identifier + number_literal)) ;) (expression_statement "dpi->len = sVar10;" (assignment_expression "dpi->len = sVar10" (field_expression "dpi->len" identifier -> field_identifier) = identifier) ;) (expression_statement "dpi->buf[sVar9] = cVar15;" (assignment_expression "dpi->buf[sVar9] = cVar15" (subscript_expression "dpi->buf[sVar9]" (field_expression "dpi->buf" identifier -> field_identifier) [ identifier ]) = identifier) ;) (expression_statement "dpi->last_char = cVar15;" (assignment_expression "dpi->last_char = cVar15" (field_expression "dpi->last_char" identifier -> field_identifier) = identifier) ;) (if_statement "if (pcVar13 == "") break;" if (parenthesized_expression "(pcVar13 == "")" ( (binary_expression "pcVar13 == """ identifier == (string_literal """" " ")) )) (break_statement "break;" break ;)) (expression_statement "cVar15 = *pcVar13;" (assignment_expression "cVar15 = *pcVar13" identifier = (pointer_expression "*pcVar13" * identifier)) ;) (expression_statement "sVar9 = sVar10;" (assignment_expression "sVar9 = sVar10" identifier = identifier) ;) })) (expression_statement "pdVar14 = (pdVar14->u).s_fixed.length;" (assignment_expression "pdVar14 = (pdVar14->u).s_fixed.length" identifier = (field_expression "(pdVar14->u).s_fixed.length" (field_expression "(pdVar14->u).s_fixed" (parenthesized_expression "(pdVar14->u)" ( (field_expression "pdVar14->u" identifier -> field_identifier) )) . field_identifier) . field_identifier)) ;) (expression_statement "dVar6 = pdVar14->type;" (assignment_expression "dVar6 = pdVar14->type" identifier = (field_expression "pdVar14->type" identifier -> field_identifier)) ;) })) (if_statement "if (dVar6 - DEMANGLE_COMPONENT_RESTRICT_THIS < 0x34) {\n        uVar5 = 0xd00000000001fU >> ((ulong)(dVar6 - DEMANGLE_COMPONENT_RESTRICT_THIS) & 0x3f) & 1;\n        while (uVar5 != 0) {\n          pdVar14 = (pdVar14->u).s_fixed.length;\n          uVar8 = pdVar14->type - DEMANGLE_COMPONENT_RESTRICT_THIS;\n          if (0x33 < uVar8) break;\n          uVar5 = 1L << ((byte)uVar8 & 0x3f) & 0xd00000000001f;\n        }\n      }" if (parenthesized_expression "(dVar6 - DEMANGLE_COMPONENT_RESTRICT_THIS < 0x34)" ( (binary_expression "dVar6 - DEMANGLE_COMPONENT_RESTRICT_THIS < 0x34" (binary_expression "dVar6 - DEMANGLE_COMPONENT_RESTRICT_THIS" identifier - identifier) < number_literal) )) (compound_statement "{\n        uVar5 = 0xd00000000001fU >> ((ulong)(dVar6 - DEMANGLE_COMPONENT_RESTRICT_THIS) & 0x3f) & 1;\n        while (uVar5 != 0) {\n          pdVar14 = (pdVar14->u).s_fixed.length;\n          uVar8 = pdVar14->type - DEMANGLE_COMPONENT_RESTRICT_THIS;\n          if (0x33 < uVar8) break;\n          uVar5 = 1L << ((byte)uVar8 & 0x3f) & 0xd00000000001f;\n        }\n      }" { (expression_statement "uVar5 = 0xd00000000001fU >> ((ulong)(dVar6 - DEMANGLE_COMPONENT_RESTRICT_THIS) & 0x3f) & 1;" (assignment_expression "uVar5 = 0xd00000000001fU >> ((ulong)(dVar6 - DEMANGLE_COMPONENT_RESTRICT_THIS) & 0x3f) & 1" identifier = (binary_expression "0xd00000000001fU >> ((ulong)(dVar6 - DEMANGLE_COMPONENT_RESTRICT_THIS) & 0x3f) & 1" (binary_expression "0xd00000000001fU >> ((ulong)(dVar6 - DEMANGLE_COMPONENT_RESTRICT_THIS) & 0x3f)" number_literal >> (parenthesized_expression "((ulong)(dVar6 - DEMANGLE_COMPONENT_RESTRICT_THIS) & 0x3f)" ( (binary_expression "(ulong)(dVar6 - DEMANGLE_COMPONENT_RESTRICT_THIS) & 0x3f" (call_expression "(ulong)(dVar6 - DEMANGLE_COMPONENT_RESTRICT_THIS)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(dVar6 - DEMANGLE_COMPONENT_RESTRICT_THIS)" ( (binary_expression "dVar6 - DEMANGLE_COMPONENT_RESTRICT_THIS" identifier - identifier) ))) & number_literal) ))) & number_literal)) ;) (while_statement "while (uVar5 != 0) {\n          pdVar14 = (pdVar14->u).s_fixed.length;\n          uVar8 = pdVar14->type - DEMANGLE_COMPONENT_RESTRICT_THIS;\n          if (0x33 < uVar8) break;\n          uVar5 = 1L << ((byte)uVar8 & 0x3f) & 0xd00000000001f;\n        }" while (parenthesized_expression "(uVar5 != 0)" ( (binary_expression "uVar5 != 0" identifier != number_literal) )) (compound_statement "{\n          pdVar14 = (pdVar14->u).s_fixed.length;\n          uVar8 = pdVar14->type - DEMANGLE_COMPONENT_RESTRICT_THIS;\n          if (0x33 < uVar8) break;\n          uVar5 = 1L << ((byte)uVar8 & 0x3f) & 0xd00000000001f;\n        }" { (expression_statement "pdVar14 = (pdVar14->u).s_fixed.length;" (assignment_expression "pdVar14 = (pdVar14->u).s_fixed.length" identifier = (field_expression "(pdVar14->u).s_fixed.length" (field_expression "(pdVar14->u).s_fixed" (parenthesized_expression "(pdVar14->u)" ( (field_expression "pdVar14->u" identifier -> field_identifier) )) . field_identifier) . field_identifier)) ;) (expression_statement "uVar8 = pdVar14->type - DEMANGLE_COMPONENT_RESTRICT_THIS;" (assignment_expression "uVar8 = pdVar14->type - DEMANGLE_COMPONENT_RESTRICT_THIS" identifier = (binary_expression "pdVar14->type - DEMANGLE_COMPONENT_RESTRICT_THIS" (field_expression "pdVar14->type" identifier -> field_identifier) - identifier)) ;) (if_statement "if (0x33 < uVar8) break;" if (parenthesized_expression "(0x33 < uVar8)" ( (binary_expression "0x33 < uVar8" number_literal < identifier) )) (break_statement "break;" break ;)) (expression_statement "uVar5 = 1L << ((byte)uVar8 & 0x3f) & 0xd00000000001f;" (assignment_expression "uVar5 = 1L << ((byte)uVar8 & 0x3f) & 0xd00000000001f" identifier = (binary_expression "1L << ((byte)uVar8 & 0x3f) & 0xd00000000001f" (binary_expression "1L << ((byte)uVar8 & 0x3f)" number_literal << (parenthesized_expression "((byte)uVar8 & 0x3f)" ( (binary_expression "(byte)uVar8 & 0x3f" (cast_expression "(byte)uVar8" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) ))) & number_literal)) ;) })) })) (expression_statement "d_print_comp(dpi,options,pdVar14);" (call_expression "d_print_comp(dpi,options,pdVar14)" identifier (argument_list "(dpi,options,pdVar14)" ( identifier , identifier , identifier ))) ;) (expression_statement "dpi->templates = pdVar2;" (assignment_expression "dpi->templates = pdVar2" (field_expression "dpi->templates" identifier -> field_identifier) = identifier) ;) (return_statement "return;" return ;) })) (expression_statement "d_print_mod(dpi,options,pdVar14);" (call_expression "d_print_mod(dpi,options,pdVar14)" identifier (argument_list "(dpi,options,pdVar14)" ( identifier , identifier , identifier ))) ;) (expression_statement "dpi->templates = pdVar2;" (assignment_expression "dpi->templates = pdVar2" (field_expression "dpi->templates" identifier -> field_identifier) = identifier) ;) })) (labeled_statement "LAB_00492458:\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)) ;) (goto_statement "goto joined_r0x004923f2;" goto statement_identifier ;) })))
(translation_unit "void FUN_004923d0(long param_1,uint param_2,long *param_3,int param_4)\n\n{\n  undefined8 uVar1;\n  undefined8 uVar2;\n  undefined8 uVar3;\n  ulong uVar4;\n  int iVar5;\n  uint uVar6;\n  uint uVar7;\n  long lVar8;\n  long lVar9;\n  uint *puVar10;\n  uint *puVar11;\n  char *pcVar12;\n  uint *__s;\n  undefined *puVar13;\n  int *piVar14;\n  undefined1 *puVar15;\n  undefined1 uVar16;\n  char cVar17;\n  bool bVar18;\n  undefined1 auStack_5b [43];\n  \n  if (param_3 == (long *)0x0) {\n    return;\n  }\n  iVar5 = *(int *)(param_1 + 0x130);\njoined_r0x004923f2:\n  if (iVar5 != 0) {\n    return;\n  }\n  if ((int)param_3[2] == 0) {\n    piVar14 = (int *)param_3[1];\n    iVar5 = *piVar14;\n    if (param_4 == 0) {\n      if (iVar5 - 0x1cU < 0x34) {\n        if ((0xd00000000001fU >> ((ulong)(iVar5 - 0x1cU) & 0x3f) & 1) != 0) goto LAB_00492458;\n        goto LAB_00492416;\n      }\n      *(undefined4 *)(param_3 + 2) = 1;\n      uVar1 = *(undefined8 *)(param_1 + 0x120);\n      *(long *)(param_1 + 0x120) = param_3[3];\n    }\n    else {\nLAB_00492416:\n      *(undefined4 *)(param_3 + 2) = 1;\n      uVar1 = *(undefined8 *)(param_1 + 0x120);\n      *(long *)(param_1 + 0x120) = param_3[3];\n      if (iVar5 == 0x29) {\n        FUN_004920b0(param_1,param_2,piVar14 + 4,*param_3);\n        *(undefined8 *)(param_1 + 0x120) = uVar1;\n        return;\n      }\n    }\n    if (iVar5 == 0x2a) {\n      FUN_00492840(param_1,param_2,piVar14 + 2,*param_3);\n      *(undefined8 *)(param_1 + 0x120) = uVar1;\n      return;\n    }\n    if (iVar5 == 2) {\n      uVar2 = *(undefined8 *)(param_1 + 0x128);\n      uVar3 = *(undefined8 *)(piVar14 + 2);\n      *(undefined8 *)(param_1 + 0x128) = 0;\n      FUN_004916e0(param_1,param_2,uVar3);\n      *(undefined8 *)(param_1 + 0x128) = uVar2;\n      lVar8 = *(long *)(param_1 + 0x100);\n      if ((param_2 & 4) == 0) {\n        puVar15 = &DAT_00589519;\n        uVar16 = 0x3a;\n        while( true ) {\n          if (lVar8 == 0xff) {\n            *(undefined1 *)(param_1 + 0xff) = 0;\n            (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118));\n            *(long *)(param_1 + 0x140) = *(long *)(param_1 + 0x140) + 1;\n            lVar8 = 0;\n            lVar9 = 1;\n          }\n          else {\n            lVar9 = lVar8 + 1;\n          }\n          puVar15 = puVar15 + 1;\n          *(long *)(param_1 + 0x100) = lVar9;\n          *(undefined1 *)(param_1 + lVar8) = uVar16;\n          *(undefined1 *)(param_1 + 0x108) = uVar16;\n          if (puVar15 == &DAT_0058951b) break;\n          uVar16 = *puVar15;\n          lVar8 = lVar9;\n        }\n      }\n      else {\n        lVar9 = lVar8 + 1;\n        if (lVar8 == 0xff) {\n          *(undefined1 *)(param_1 + 0xff) = 0;\n          (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118));\n          *(long *)(param_1 + 0x140) = *(long *)(param_1 + 0x140) + 1;\n          lVar9 = 1;\n          lVar8 = 0;\n        }\n        *(long *)(param_1 + 0x100) = lVar9;\n        *(undefined1 *)(param_1 + lVar8) = 0x2e;\n        *(undefined1 *)(param_1 + 0x108) = 0x2e;\n      }\n      piVar14 = *(int **)(param_3[1] + 0x10);\n      iVar5 = *piVar14;\n      if (iVar5 == 0x46) {\n        pcVar12 = "{default arg#";\n        cVar17 = '{';\n        lVar8 = *(long *)(param_1 + 0x100);\n        while( true ) {\n          pcVar12 = pcVar12 + 1;\n          if (lVar8 == 0xff) {\n            *(undefined1 *)(param_1 + 0xff) = 0;\n            (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118));\n            *(long *)(param_1 + 0x140) = *(long *)(param_1 + 0x140) + 1;\n            lVar8 = 0;\n            lVar9 = 1;\n          }\n          else {\n            lVar9 = lVar8 + 1;\n          }\n          *(long *)(param_1 + 0x100) = lVar9;\n          *(char *)(param_1 + lVar8) = cVar17;\n          *(char *)(param_1 + 0x108) = cVar17;\n          if (pcVar12 == "") break;\n          cVar17 = *pcVar12;\n          lVar8 = lVar9;\n        }\n        __s = (uint *)(auStack_5b + 3);\n        sprintf((char *)__s,"%d",(ulong)(piVar14[4] + 1));\n        puVar11 = __s;\n        do {\n          puVar10 = puVar11;\n          uVar6 = *puVar10 + 0xfefefeff & ~*puVar10;\n          uVar7 = uVar6 & 0x80808080;\n          puVar11 = puVar10 + 1;\n        } while (uVar7 == 0);\n        bVar18 = (uVar6 & 0x8080) == 0;\n        if (bVar18) {\n          uVar7 = uVar7 >> 0x10;\n        }\n        if (bVar18) {\n          puVar11 = (uint *)((long)puVar10 + 6);\n        }\n        lVar8 = *(long *)(param_1 + 0x100);\n        pcVar12 = (char *)((long)puVar11 +\n                          ((-3 - (ulong)CARRY1((byte)uVar7,(byte)uVar7)) - (long)__s));\n        if (pcVar12 != (char *)0x0) {\n          puVar11 = (uint *)((long)__s + (long)pcVar12);\n          lVar9 = lVar8;\n          do {\n            cVar17 = (char)*__s;\n            if (lVar9 == 0xff) {\n              *(undefined1 *)(param_1 + 0xff) = 0;\n              auStack_5b[2] = cVar17;\n              (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118));\n              *(long *)(param_1 + 0x140) = *(long *)(param_1 + 0x140) + 1;\n              lVar8 = 1;\n              lVar9 = 0;\n              cVar17 = auStack_5b[2];\n            }\n            else {\n              lVar8 = lVar9 + 1;\n            }\n            __s = (uint *)((long)__s + 1);\n            *(long *)(param_1 + 0x100) = lVar8;\n            *(char *)(param_1 + lVar9) = cVar17;\n            *(char *)(param_1 + 0x108) = cVar17;\n            lVar9 = lVar8;\n          } while (puVar11 != __s);\n        }\n        puVar13 = &DAT_00589518;\n        uVar16 = 0x7d;\n        while( true ) {\n          if (lVar8 == 0xff) {\n            *(undefined1 *)(param_1 + 0xff) = 0;\n            (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118));\n            *(long *)(param_1 + 0x140) = *(long *)(param_1 + 0x140) + 1;\n            lVar8 = 0;\n            lVar9 = 1;\n          }\n          else {\n            lVar9 = lVar8 + 1;\n          }\n          puVar13 = puVar13 + 1;\n          *(long *)(param_1 + 0x100) = lVar9;\n          *(undefined1 *)(param_1 + lVar8) = uVar16;\n          *(undefined1 *)(param_1 + 0x108) = uVar16;\n          if (puVar13 == &DAT_0058951b) break;\n          uVar16 = *puVar13;\n          lVar8 = lVar9;\n        }\n        piVar14 = *(int **)(piVar14 + 2);\n        iVar5 = *piVar14;\n      }\n      if (iVar5 - 0x1cU < 0x34) {\n        uVar4 = 0xd00000000001fU >> ((ulong)(iVar5 - 0x1cU) & 0x3f) & 1;\n        while (uVar4 != 0) {\n          piVar14 = *(int **)(piVar14 + 2);\n          if (0x33 < *piVar14 - 0x1cU) break;\n          uVar4 = 1L << ((byte)(*piVar14 - 0x1cU) & 0x3f) & 0xd00000000001f;\n        }\n      }\n      FUN_004916e0(param_1,param_2,piVar14);\n      *(undefined8 *)(param_1 + 0x120) = uVar1;\n      return;\n    }\n    FUN_00491770(param_1,param_2);\n    *(undefined8 *)(param_1 + 0x120) = uVar1;\n  }\nLAB_00492458:\n  param_3 = (long *)*param_3;\n  if (param_3 == (long *)0x0) {\n    return;\n  }\n  iVar5 = *(int *)(param_1 + 0x130);\n  goto joined_r0x004923f2;\n}\n\n" (function_definition "void FUN_004923d0(long param_1,uint param_2,long *param_3,int param_4)\n\n{\n  undefined8 uVar1;\n  undefined8 uVar2;\n  undefined8 uVar3;\n  ulong uVar4;\n  int iVar5;\n  uint uVar6;\n  uint uVar7;\n  long lVar8;\n  long lVar9;\n  uint *puVar10;\n  uint *puVar11;\n  char *pcVar12;\n  uint *__s;\n  undefined *puVar13;\n  int *piVar14;\n  undefined1 *puVar15;\n  undefined1 uVar16;\n  char cVar17;\n  bool bVar18;\n  undefined1 auStack_5b [43];\n  \n  if (param_3 == (long *)0x0) {\n    return;\n  }\n  iVar5 = *(int *)(param_1 + 0x130);\njoined_r0x004923f2:\n  if (iVar5 != 0) {\n    return;\n  }\n  if ((int)param_3[2] == 0) {\n    piVar14 = (int *)param_3[1];\n    iVar5 = *piVar14;\n    if (param_4 == 0) {\n      if (iVar5 - 0x1cU < 0x34) {\n        if ((0xd00000000001fU >> ((ulong)(iVar5 - 0x1cU) & 0x3f) & 1) != 0) goto LAB_00492458;\n        goto LAB_00492416;\n      }\n      *(undefined4 *)(param_3 + 2) = 1;\n      uVar1 = *(undefined8 *)(param_1 + 0x120);\n      *(long *)(param_1 + 0x120) = param_3[3];\n    }\n    else {\nLAB_00492416:\n      *(undefined4 *)(param_3 + 2) = 1;\n      uVar1 = *(undefined8 *)(param_1 + 0x120);\n      *(long *)(param_1 + 0x120) = param_3[3];\n      if (iVar5 == 0x29) {\n        FUN_004920b0(param_1,param_2,piVar14 + 4,*param_3);\n        *(undefined8 *)(param_1 + 0x120) = uVar1;\n        return;\n      }\n    }\n    if (iVar5 == 0x2a) {\n      FUN_00492840(param_1,param_2,piVar14 + 2,*param_3);\n      *(undefined8 *)(param_1 + 0x120) = uVar1;\n      return;\n    }\n    if (iVar5 == 2) {\n      uVar2 = *(undefined8 *)(param_1 + 0x128);\n      uVar3 = *(undefined8 *)(piVar14 + 2);\n      *(undefined8 *)(param_1 + 0x128) = 0;\n      FUN_004916e0(param_1,param_2,uVar3);\n      *(undefined8 *)(param_1 + 0x128) = uVar2;\n      lVar8 = *(long *)(param_1 + 0x100);\n      if ((param_2 & 4) == 0) {\n        puVar15 = &DAT_00589519;\n        uVar16 = 0x3a;\n        while( true ) {\n          if (lVar8 == 0xff) {\n            *(undefined1 *)(param_1 + 0xff) = 0;\n            (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118));\n            *(long *)(param_1 + 0x140) = *(long *)(param_1 + 0x140) + 1;\n            lVar8 = 0;\n            lVar9 = 1;\n          }\n          else {\n            lVar9 = lVar8 + 1;\n          }\n          puVar15 = puVar15 + 1;\n          *(long *)(param_1 + 0x100) = lVar9;\n          *(undefined1 *)(param_1 + lVar8) = uVar16;\n          *(undefined1 *)(param_1 + 0x108) = uVar16;\n          if (puVar15 == &DAT_0058951b) break;\n          uVar16 = *puVar15;\n          lVar8 = lVar9;\n        }\n      }\n      else {\n        lVar9 = lVar8 + 1;\n        if (lVar8 == 0xff) {\n          *(undefined1 *)(param_1 + 0xff) = 0;\n          (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118));\n          *(long *)(param_1 + 0x140) = *(long *)(param_1 + 0x140) + 1;\n          lVar9 = 1;\n          lVar8 = 0;\n        }\n        *(long *)(param_1 + 0x100) = lVar9;\n        *(undefined1 *)(param_1 + lVar8) = 0x2e;\n        *(undefined1 *)(param_1 + 0x108) = 0x2e;\n      }\n      piVar14 = *(int **)(param_3[1] + 0x10);\n      iVar5 = *piVar14;\n      if (iVar5 == 0x46) {\n        pcVar12 = "{default arg#";\n        cVar17 = '{';\n        lVar8 = *(long *)(param_1 + 0x100);\n        while( true ) {\n          pcVar12 = pcVar12 + 1;\n          if (lVar8 == 0xff) {\n            *(undefined1 *)(param_1 + 0xff) = 0;\n            (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118));\n            *(long *)(param_1 + 0x140) = *(long *)(param_1 + 0x140) + 1;\n            lVar8 = 0;\n            lVar9 = 1;\n          }\n          else {\n            lVar9 = lVar8 + 1;\n          }\n          *(long *)(param_1 + 0x100) = lVar9;\n          *(char *)(param_1 + lVar8) = cVar17;\n          *(char *)(param_1 + 0x108) = cVar17;\n          if (pcVar12 == "") break;\n          cVar17 = *pcVar12;\n          lVar8 = lVar9;\n        }\n        __s = (uint *)(auStack_5b + 3);\n        sprintf((char *)__s,"%d",(ulong)(piVar14[4] + 1));\n        puVar11 = __s;\n        do {\n          puVar10 = puVar11;\n          uVar6 = *puVar10 + 0xfefefeff & ~*puVar10;\n          uVar7 = uVar6 & 0x80808080;\n          puVar11 = puVar10 + 1;\n        } while (uVar7 == 0);\n        bVar18 = (uVar6 & 0x8080) == 0;\n        if (bVar18) {\n          uVar7 = uVar7 >> 0x10;\n        }\n        if (bVar18) {\n          puVar11 = (uint *)((long)puVar10 + 6);\n        }\n        lVar8 = *(long *)(param_1 + 0x100);\n        pcVar12 = (char *)((long)puVar11 +\n                          ((-3 - (ulong)CARRY1((byte)uVar7,(byte)uVar7)) - (long)__s));\n        if (pcVar12 != (char *)0x0) {\n          puVar11 = (uint *)((long)__s + (long)pcVar12);\n          lVar9 = lVar8;\n          do {\n            cVar17 = (char)*__s;\n            if (lVar9 == 0xff) {\n              *(undefined1 *)(param_1 + 0xff) = 0;\n              auStack_5b[2] = cVar17;\n              (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118));\n              *(long *)(param_1 + 0x140) = *(long *)(param_1 + 0x140) + 1;\n              lVar8 = 1;\n              lVar9 = 0;\n              cVar17 = auStack_5b[2];\n            }\n            else {\n              lVar8 = lVar9 + 1;\n            }\n            __s = (uint *)((long)__s + 1);\n            *(long *)(param_1 + 0x100) = lVar8;\n            *(char *)(param_1 + lVar9) = cVar17;\n            *(char *)(param_1 + 0x108) = cVar17;\n            lVar9 = lVar8;\n          } while (puVar11 != __s);\n        }\n        puVar13 = &DAT_00589518;\n        uVar16 = 0x7d;\n        while( true ) {\n          if (lVar8 == 0xff) {\n            *(undefined1 *)(param_1 + 0xff) = 0;\n            (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118));\n            *(long *)(param_1 + 0x140) = *(long *)(param_1 + 0x140) + 1;\n            lVar8 = 0;\n            lVar9 = 1;\n          }\n          else {\n            lVar9 = lVar8 + 1;\n          }\n          puVar13 = puVar13 + 1;\n          *(long *)(param_1 + 0x100) = lVar9;\n          *(undefined1 *)(param_1 + lVar8) = uVar16;\n          *(undefined1 *)(param_1 + 0x108) = uVar16;\n          if (puVar13 == &DAT_0058951b) break;\n          uVar16 = *puVar13;\n          lVar8 = lVar9;\n        }\n        piVar14 = *(int **)(piVar14 + 2);\n        iVar5 = *piVar14;\n      }\n      if (iVar5 - 0x1cU < 0x34) {\n        uVar4 = 0xd00000000001fU >> ((ulong)(iVar5 - 0x1cU) & 0x3f) & 1;\n        while (uVar4 != 0) {\n          piVar14 = *(int **)(piVar14 + 2);\n          if (0x33 < *piVar14 - 0x1cU) break;\n          uVar4 = 1L << ((byte)(*piVar14 - 0x1cU) & 0x3f) & 0xd00000000001f;\n        }\n      }\n      FUN_004916e0(param_1,param_2,piVar14);\n      *(undefined8 *)(param_1 + 0x120) = uVar1;\n      return;\n    }\n    FUN_00491770(param_1,param_2);\n    *(undefined8 *)(param_1 + 0x120) = uVar1;\n  }\nLAB_00492458:\n  param_3 = (long *)*param_3;\n  if (param_3 == (long *)0x0) {\n    return;\n  }\n  iVar5 = *(int *)(param_1 + 0x130);\n  goto joined_r0x004923f2;\n}" primitive_type (function_declarator "FUN_004923d0(long param_1,uint param_2,long *param_3,int param_4)" identifier (parameter_list "(long param_1,uint param_2,long *param_3,int param_4)" ( (parameter_declaration "long param_1" (sized_type_specifier "long" long) identifier) , (parameter_declaration "uint param_2" type_identifier identifier) , (parameter_declaration "long *param_3" (sized_type_specifier "long" long) (pointer_declarator "*param_3" * identifier)) , (parameter_declaration "int param_4" primitive_type identifier) ))) (compound_statement "{\n  undefined8 uVar1;\n  undefined8 uVar2;\n  undefined8 uVar3;\n  ulong uVar4;\n  int iVar5;\n  uint uVar6;\n  uint uVar7;\n  long lVar8;\n  long lVar9;\n  uint *puVar10;\n  uint *puVar11;\n  char *pcVar12;\n  uint *__s;\n  undefined *puVar13;\n  int *piVar14;\n  undefined1 *puVar15;\n  undefined1 uVar16;\n  char cVar17;\n  bool bVar18;\n  undefined1 auStack_5b [43];\n  \n  if (param_3 == (long *)0x0) {\n    return;\n  }\n  iVar5 = *(int *)(param_1 + 0x130);\njoined_r0x004923f2:\n  if (iVar5 != 0) {\n    return;\n  }\n  if ((int)param_3[2] == 0) {\n    piVar14 = (int *)param_3[1];\n    iVar5 = *piVar14;\n    if (param_4 == 0) {\n      if (iVar5 - 0x1cU < 0x34) {\n        if ((0xd00000000001fU >> ((ulong)(iVar5 - 0x1cU) & 0x3f) & 1) != 0) goto LAB_00492458;\n        goto LAB_00492416;\n      }\n      *(undefined4 *)(param_3 + 2) = 1;\n      uVar1 = *(undefined8 *)(param_1 + 0x120);\n      *(long *)(param_1 + 0x120) = param_3[3];\n    }\n    else {\nLAB_00492416:\n      *(undefined4 *)(param_3 + 2) = 1;\n      uVar1 = *(undefined8 *)(param_1 + 0x120);\n      *(long *)(param_1 + 0x120) = param_3[3];\n      if (iVar5 == 0x29) {\n        FUN_004920b0(param_1,param_2,piVar14 + 4,*param_3);\n        *(undefined8 *)(param_1 + 0x120) = uVar1;\n        return;\n      }\n    }\n    if (iVar5 == 0x2a) {\n      FUN_00492840(param_1,param_2,piVar14 + 2,*param_3);\n      *(undefined8 *)(param_1 + 0x120) = uVar1;\n      return;\n    }\n    if (iVar5 == 2) {\n      uVar2 = *(undefined8 *)(param_1 + 0x128);\n      uVar3 = *(undefined8 *)(piVar14 + 2);\n      *(undefined8 *)(param_1 + 0x128) = 0;\n      FUN_004916e0(param_1,param_2,uVar3);\n      *(undefined8 *)(param_1 + 0x128) = uVar2;\n      lVar8 = *(long *)(param_1 + 0x100);\n      if ((param_2 & 4) == 0) {\n        puVar15 = &DAT_00589519;\n        uVar16 = 0x3a;\n        while( true ) {\n          if (lVar8 == 0xff) {\n            *(undefined1 *)(param_1 + 0xff) = 0;\n            (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118));\n            *(long *)(param_1 + 0x140) = *(long *)(param_1 + 0x140) + 1;\n            lVar8 = 0;\n            lVar9 = 1;\n          }\n          else {\n            lVar9 = lVar8 + 1;\n          }\n          puVar15 = puVar15 + 1;\n          *(long *)(param_1 + 0x100) = lVar9;\n          *(undefined1 *)(param_1 + lVar8) = uVar16;\n          *(undefined1 *)(param_1 + 0x108) = uVar16;\n          if (puVar15 == &DAT_0058951b) break;\n          uVar16 = *puVar15;\n          lVar8 = lVar9;\n        }\n      }\n      else {\n        lVar9 = lVar8 + 1;\n        if (lVar8 == 0xff) {\n          *(undefined1 *)(param_1 + 0xff) = 0;\n          (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118));\n          *(long *)(param_1 + 0x140) = *(long *)(param_1 + 0x140) + 1;\n          lVar9 = 1;\n          lVar8 = 0;\n        }\n        *(long *)(param_1 + 0x100) = lVar9;\n        *(undefined1 *)(param_1 + lVar8) = 0x2e;\n        *(undefined1 *)(param_1 + 0x108) = 0x2e;\n      }\n      piVar14 = *(int **)(param_3[1] + 0x10);\n      iVar5 = *piVar14;\n      if (iVar5 == 0x46) {\n        pcVar12 = "{default arg#";\n        cVar17 = '{';\n        lVar8 = *(long *)(param_1 + 0x100);\n        while( true ) {\n          pcVar12 = pcVar12 + 1;\n          if (lVar8 == 0xff) {\n            *(undefined1 *)(param_1 + 0xff) = 0;\n            (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118));\n            *(long *)(param_1 + 0x140) = *(long *)(param_1 + 0x140) + 1;\n            lVar8 = 0;\n            lVar9 = 1;\n          }\n          else {\n            lVar9 = lVar8 + 1;\n          }\n          *(long *)(param_1 + 0x100) = lVar9;\n          *(char *)(param_1 + lVar8) = cVar17;\n          *(char *)(param_1 + 0x108) = cVar17;\n          if (pcVar12 == "") break;\n          cVar17 = *pcVar12;\n          lVar8 = lVar9;\n        }\n        __s = (uint *)(auStack_5b + 3);\n        sprintf((char *)__s,"%d",(ulong)(piVar14[4] + 1));\n        puVar11 = __s;\n        do {\n          puVar10 = puVar11;\n          uVar6 = *puVar10 + 0xfefefeff & ~*puVar10;\n          uVar7 = uVar6 & 0x80808080;\n          puVar11 = puVar10 + 1;\n        } while (uVar7 == 0);\n        bVar18 = (uVar6 & 0x8080) == 0;\n        if (bVar18) {\n          uVar7 = uVar7 >> 0x10;\n        }\n        if (bVar18) {\n          puVar11 = (uint *)((long)puVar10 + 6);\n        }\n        lVar8 = *(long *)(param_1 + 0x100);\n        pcVar12 = (char *)((long)puVar11 +\n                          ((-3 - (ulong)CARRY1((byte)uVar7,(byte)uVar7)) - (long)__s));\n        if (pcVar12 != (char *)0x0) {\n          puVar11 = (uint *)((long)__s + (long)pcVar12);\n          lVar9 = lVar8;\n          do {\n            cVar17 = (char)*__s;\n            if (lVar9 == 0xff) {\n              *(undefined1 *)(param_1 + 0xff) = 0;\n              auStack_5b[2] = cVar17;\n              (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118));\n              *(long *)(param_1 + 0x140) = *(long *)(param_1 + 0x140) + 1;\n              lVar8 = 1;\n              lVar9 = 0;\n              cVar17 = auStack_5b[2];\n            }\n            else {\n              lVar8 = lVar9 + 1;\n            }\n            __s = (uint *)((long)__s + 1);\n            *(long *)(param_1 + 0x100) = lVar8;\n            *(char *)(param_1 + lVar9) = cVar17;\n            *(char *)(param_1 + 0x108) = cVar17;\n            lVar9 = lVar8;\n          } while (puVar11 != __s);\n        }\n        puVar13 = &DAT_00589518;\n        uVar16 = 0x7d;\n        while( true ) {\n          if (lVar8 == 0xff) {\n            *(undefined1 *)(param_1 + 0xff) = 0;\n            (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118));\n            *(long *)(param_1 + 0x140) = *(long *)(param_1 + 0x140) + 1;\n            lVar8 = 0;\n            lVar9 = 1;\n          }\n          else {\n            lVar9 = lVar8 + 1;\n          }\n          puVar13 = puVar13 + 1;\n          *(long *)(param_1 + 0x100) = lVar9;\n          *(undefined1 *)(param_1 + lVar8) = uVar16;\n          *(undefined1 *)(param_1 + 0x108) = uVar16;\n          if (puVar13 == &DAT_0058951b) break;\n          uVar16 = *puVar13;\n          lVar8 = lVar9;\n        }\n        piVar14 = *(int **)(piVar14 + 2);\n        iVar5 = *piVar14;\n      }\n      if (iVar5 - 0x1cU < 0x34) {\n        uVar4 = 0xd00000000001fU >> ((ulong)(iVar5 - 0x1cU) & 0x3f) & 1;\n        while (uVar4 != 0) {\n          piVar14 = *(int **)(piVar14 + 2);\n          if (0x33 < *piVar14 - 0x1cU) break;\n          uVar4 = 1L << ((byte)(*piVar14 - 0x1cU) & 0x3f) & 0xd00000000001f;\n        }\n      }\n      FUN_004916e0(param_1,param_2,piVar14);\n      *(undefined8 *)(param_1 + 0x120) = uVar1;\n      return;\n    }\n    FUN_00491770(param_1,param_2);\n    *(undefined8 *)(param_1 + 0x120) = uVar1;\n  }\nLAB_00492458:\n  param_3 = (long *)*param_3;\n  if (param_3 == (long *)0x0) {\n    return;\n  }\n  iVar5 = *(int *)(param_1 + 0x130);\n  goto joined_r0x004923f2;\n}" { (declaration "undefined8 uVar1;" type_identifier identifier ;) (declaration "undefined8 uVar2;" type_identifier identifier ;) (declaration "undefined8 uVar3;" type_identifier identifier ;) (declaration "ulong uVar4;" type_identifier identifier ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "uint uVar6;" type_identifier identifier ;) (declaration "uint uVar7;" type_identifier identifier ;) (declaration "long lVar8;" (sized_type_specifier "long" long) identifier ;) (declaration "long lVar9;" (sized_type_specifier "long" long) identifier ;) (declaration "uint *puVar10;" type_identifier (pointer_declarator "*puVar10" * identifier) ;) (declaration "uint *puVar11;" type_identifier (pointer_declarator "*puVar11" * identifier) ;) (declaration "char *pcVar12;" primitive_type (pointer_declarator "*pcVar12" * identifier) ;) (declaration "uint *__s;" type_identifier (pointer_declarator "*__s" * identifier) ;) (declaration "undefined *puVar13;" type_identifier (pointer_declarator "*puVar13" * identifier) ;) (declaration "int *piVar14;" primitive_type (pointer_declarator "*piVar14" * identifier) ;) (declaration "undefined1 *puVar15;" type_identifier (pointer_declarator "*puVar15" * identifier) ;) (declaration "undefined1 uVar16;" type_identifier identifier ;) (declaration "char cVar17;" primitive_type identifier ;) (declaration "bool bVar18;" primitive_type identifier ;) (declaration "undefined1 auStack_5b [43];" type_identifier (array_declarator "auStack_5b [43]" identifier [ number_literal ]) ;) (if_statement "if (param_3 == (long *)0x0) {\n    return;\n  }" if (parenthesized_expression "(param_3 == (long *)0x0)" ( (binary_expression "param_3 == (long *)0x0" identifier == (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    return;\n  }" { (return_statement "return;" return ;) })) (expression_statement "iVar5 = *(int *)(param_1 + 0x130);" (assignment_expression "iVar5 = *(int *)(param_1 + 0x130)" identifier = (pointer_expression "*(int *)(param_1 + 0x130)" * (cast_expression "(int *)(param_1 + 0x130)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x130)" ( (binary_expression "param_1 + 0x130" identifier + number_literal) ))))) ;) (labeled_statement "joined_r0x004923f2:\n  if (iVar5 != 0) {\n    return;\n  }" statement_identifier : (if_statement "if (iVar5 != 0) {\n    return;\n  }" if (parenthesized_expression "(iVar5 != 0)" ( (binary_expression "iVar5 != 0" identifier != number_literal) )) (compound_statement "{\n    return;\n  }" { (return_statement "return;" return ;) }))) (if_statement "if ((int)param_3[2] == 0) {\n    piVar14 = (int *)param_3[1];\n    iVar5 = *piVar14;\n    if (param_4 == 0) {\n      if (iVar5 - 0x1cU < 0x34) {\n        if ((0xd00000000001fU >> ((ulong)(iVar5 - 0x1cU) & 0x3f) & 1) != 0) goto LAB_00492458;\n        goto LAB_00492416;\n      }\n      *(undefined4 *)(param_3 + 2) = 1;\n      uVar1 = *(undefined8 *)(param_1 + 0x120);\n      *(long *)(param_1 + 0x120) = param_3[3];\n    }\n    else {\nLAB_00492416:\n      *(undefined4 *)(param_3 + 2) = 1;\n      uVar1 = *(undefined8 *)(param_1 + 0x120);\n      *(long *)(param_1 + 0x120) = param_3[3];\n      if (iVar5 == 0x29) {\n        FUN_004920b0(param_1,param_2,piVar14 + 4,*param_3);\n        *(undefined8 *)(param_1 + 0x120) = uVar1;\n        return;\n      }\n    }\n    if (iVar5 == 0x2a) {\n      FUN_00492840(param_1,param_2,piVar14 + 2,*param_3);\n      *(undefined8 *)(param_1 + 0x120) = uVar1;\n      return;\n    }\n    if (iVar5 == 2) {\n      uVar2 = *(undefined8 *)(param_1 + 0x128);\n      uVar3 = *(undefined8 *)(piVar14 + 2);\n      *(undefined8 *)(param_1 + 0x128) = 0;\n      FUN_004916e0(param_1,param_2,uVar3);\n      *(undefined8 *)(param_1 + 0x128) = uVar2;\n      lVar8 = *(long *)(param_1 + 0x100);\n      if ((param_2 & 4) == 0) {\n        puVar15 = &DAT_00589519;\n        uVar16 = 0x3a;\n        while( true ) {\n          if (lVar8 == 0xff) {\n            *(undefined1 *)(param_1 + 0xff) = 0;\n            (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118));\n            *(long *)(param_1 + 0x140) = *(long *)(param_1 + 0x140) + 1;\n            lVar8 = 0;\n            lVar9 = 1;\n          }\n          else {\n            lVar9 = lVar8 + 1;\n          }\n          puVar15 = puVar15 + 1;\n          *(long *)(param_1 + 0x100) = lVar9;\n          *(undefined1 *)(param_1 + lVar8) = uVar16;\n          *(undefined1 *)(param_1 + 0x108) = uVar16;\n          if (puVar15 == &DAT_0058951b) break;\n          uVar16 = *puVar15;\n          lVar8 = lVar9;\n        }\n      }\n      else {\n        lVar9 = lVar8 + 1;\n        if (lVar8 == 0xff) {\n          *(undefined1 *)(param_1 + 0xff) = 0;\n          (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118));\n          *(long *)(param_1 + 0x140) = *(long *)(param_1 + 0x140) + 1;\n          lVar9 = 1;\n          lVar8 = 0;\n        }\n        *(long *)(param_1 + 0x100) = lVar9;\n        *(undefined1 *)(param_1 + lVar8) = 0x2e;\n        *(undefined1 *)(param_1 + 0x108) = 0x2e;\n      }\n      piVar14 = *(int **)(param_3[1] + 0x10);\n      iVar5 = *piVar14;\n      if (iVar5 == 0x46) {\n        pcVar12 = "{default arg#";\n        cVar17 = '{';\n        lVar8 = *(long *)(param_1 + 0x100);\n        while( true ) {\n          pcVar12 = pcVar12 + 1;\n          if (lVar8 == 0xff) {\n            *(undefined1 *)(param_1 + 0xff) = 0;\n            (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118));\n            *(long *)(param_1 + 0x140) = *(long *)(param_1 + 0x140) + 1;\n            lVar8 = 0;\n            lVar9 = 1;\n          }\n          else {\n            lVar9 = lVar8 + 1;\n          }\n          *(long *)(param_1 + 0x100) = lVar9;\n          *(char *)(param_1 + lVar8) = cVar17;\n          *(char *)(param_1 + 0x108) = cVar17;\n          if (pcVar12 == "") break;\n          cVar17 = *pcVar12;\n          lVar8 = lVar9;\n        }\n        __s = (uint *)(auStack_5b + 3);\n        sprintf((char *)__s,"%d",(ulong)(piVar14[4] + 1));\n        puVar11 = __s;\n        do {\n          puVar10 = puVar11;\n          uVar6 = *puVar10 + 0xfefefeff & ~*puVar10;\n          uVar7 = uVar6 & 0x80808080;\n          puVar11 = puVar10 + 1;\n        } while (uVar7 == 0);\n        bVar18 = (uVar6 & 0x8080) == 0;\n        if (bVar18) {\n          uVar7 = uVar7 >> 0x10;\n        }\n        if (bVar18) {\n          puVar11 = (uint *)((long)puVar10 + 6);\n        }\n        lVar8 = *(long *)(param_1 + 0x100);\n        pcVar12 = (char *)((long)puVar11 +\n                          ((-3 - (ulong)CARRY1((byte)uVar7,(byte)uVar7)) - (long)__s));\n        if (pcVar12 != (char *)0x0) {\n          puVar11 = (uint *)((long)__s + (long)pcVar12);\n          lVar9 = lVar8;\n          do {\n            cVar17 = (char)*__s;\n            if (lVar9 == 0xff) {\n              *(undefined1 *)(param_1 + 0xff) = 0;\n              auStack_5b[2] = cVar17;\n              (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118));\n              *(long *)(param_1 + 0x140) = *(long *)(param_1 + 0x140) + 1;\n              lVar8 = 1;\n              lVar9 = 0;\n              cVar17 = auStack_5b[2];\n            }\n            else {\n              lVar8 = lVar9 + 1;\n            }\n            __s = (uint *)((long)__s + 1);\n            *(long *)(param_1 + 0x100) = lVar8;\n            *(char *)(param_1 + lVar9) = cVar17;\n            *(char *)(param_1 + 0x108) = cVar17;\n            lVar9 = lVar8;\n          } while (puVar11 != __s);\n        }\n        puVar13 = &DAT_00589518;\n        uVar16 = 0x7d;\n        while( true ) {\n          if (lVar8 == 0xff) {\n            *(undefined1 *)(param_1 + 0xff) = 0;\n            (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118));\n            *(long *)(param_1 + 0x140) = *(long *)(param_1 + 0x140) + 1;\n            lVar8 = 0;\n            lVar9 = 1;\n          }\n          else {\n            lVar9 = lVar8 + 1;\n          }\n          puVar13 = puVar13 + 1;\n          *(long *)(param_1 + 0x100) = lVar9;\n          *(undefined1 *)(param_1 + lVar8) = uVar16;\n          *(undefined1 *)(param_1 + 0x108) = uVar16;\n          if (puVar13 == &DAT_0058951b) break;\n          uVar16 = *puVar13;\n          lVar8 = lVar9;\n        }\n        piVar14 = *(int **)(piVar14 + 2);\n        iVar5 = *piVar14;\n      }\n      if (iVar5 - 0x1cU < 0x34) {\n        uVar4 = 0xd00000000001fU >> ((ulong)(iVar5 - 0x1cU) & 0x3f) & 1;\n        while (uVar4 != 0) {\n          piVar14 = *(int **)(piVar14 + 2);\n          if (0x33 < *piVar14 - 0x1cU) break;\n          uVar4 = 1L << ((byte)(*piVar14 - 0x1cU) & 0x3f) & 0xd00000000001f;\n        }\n      }\n      FUN_004916e0(param_1,param_2,piVar14);\n      *(undefined8 *)(param_1 + 0x120) = uVar1;\n      return;\n    }\n    FUN_00491770(param_1,param_2);\n    *(undefined8 *)(param_1 + 0x120) = uVar1;\n  }" if (parenthesized_expression "((int)param_3[2] == 0)" ( (binary_expression "(int)param_3[2] == 0" (cast_expression "(int)param_3[2]" ( (type_descriptor "int" primitive_type) ) (subscript_expression "param_3[2]" identifier [ number_literal ])) == number_literal) )) (compound_statement "{\n    piVar14 = (int *)param_3[1];\n    iVar5 = *piVar14;\n    if (param_4 == 0) {\n      if (iVar5 - 0x1cU < 0x34) {\n        if ((0xd00000000001fU >> ((ulong)(iVar5 - 0x1cU) & 0x3f) & 1) != 0) goto LAB_00492458;\n        goto LAB_00492416;\n      }\n      *(undefined4 *)(param_3 + 2) = 1;\n      uVar1 = *(undefined8 *)(param_1 + 0x120);\n      *(long *)(param_1 + 0x120) = param_3[3];\n    }\n    else {\nLAB_00492416:\n      *(undefined4 *)(param_3 + 2) = 1;\n      uVar1 = *(undefined8 *)(param_1 + 0x120);\n      *(long *)(param_1 + 0x120) = param_3[3];\n      if (iVar5 == 0x29) {\n        FUN_004920b0(param_1,param_2,piVar14 + 4,*param_3);\n        *(undefined8 *)(param_1 + 0x120) = uVar1;\n        return;\n      }\n    }\n    if (iVar5 == 0x2a) {\n      FUN_00492840(param_1,param_2,piVar14 + 2,*param_3);\n      *(undefined8 *)(param_1 + 0x120) = uVar1;\n      return;\n    }\n    if (iVar5 == 2) {\n      uVar2 = *(undefined8 *)(param_1 + 0x128);\n      uVar3 = *(undefined8 *)(piVar14 + 2);\n      *(undefined8 *)(param_1 + 0x128) = 0;\n      FUN_004916e0(param_1,param_2,uVar3);\n      *(undefined8 *)(param_1 + 0x128) = uVar2;\n      lVar8 = *(long *)(param_1 + 0x100);\n      if ((param_2 & 4) == 0) {\n        puVar15 = &DAT_00589519;\n        uVar16 = 0x3a;\n        while( true ) {\n          if (lVar8 == 0xff) {\n            *(undefined1 *)(param_1 + 0xff) = 0;\n            (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118));\n            *(long *)(param_1 + 0x140) = *(long *)(param_1 + 0x140) + 1;\n            lVar8 = 0;\n            lVar9 = 1;\n          }\n          else {\n            lVar9 = lVar8 + 1;\n          }\n          puVar15 = puVar15 + 1;\n          *(long *)(param_1 + 0x100) = lVar9;\n          *(undefined1 *)(param_1 + lVar8) = uVar16;\n          *(undefined1 *)(param_1 + 0x108) = uVar16;\n          if (puVar15 == &DAT_0058951b) break;\n          uVar16 = *puVar15;\n          lVar8 = lVar9;\n        }\n      }\n      else {\n        lVar9 = lVar8 + 1;\n        if (lVar8 == 0xff) {\n          *(undefined1 *)(param_1 + 0xff) = 0;\n          (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118));\n          *(long *)(param_1 + 0x140) = *(long *)(param_1 + 0x140) + 1;\n          lVar9 = 1;\n          lVar8 = 0;\n        }\n        *(long *)(param_1 + 0x100) = lVar9;\n        *(undefined1 *)(param_1 + lVar8) = 0x2e;\n        *(undefined1 *)(param_1 + 0x108) = 0x2e;\n      }\n      piVar14 = *(int **)(param_3[1] + 0x10);\n      iVar5 = *piVar14;\n      if (iVar5 == 0x46) {\n        pcVar12 = "{default arg#";\n        cVar17 = '{';\n        lVar8 = *(long *)(param_1 + 0x100);\n        while( true ) {\n          pcVar12 = pcVar12 + 1;\n          if (lVar8 == 0xff) {\n            *(undefined1 *)(param_1 + 0xff) = 0;\n            (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118));\n            *(long *)(param_1 + 0x140) = *(long *)(param_1 + 0x140) + 1;\n            lVar8 = 0;\n            lVar9 = 1;\n          }\n          else {\n            lVar9 = lVar8 + 1;\n          }\n          *(long *)(param_1 + 0x100) = lVar9;\n          *(char *)(param_1 + lVar8) = cVar17;\n          *(char *)(param_1 + 0x108) = cVar17;\n          if (pcVar12 == "") break;\n          cVar17 = *pcVar12;\n          lVar8 = lVar9;\n        }\n        __s = (uint *)(auStack_5b + 3);\n        sprintf((char *)__s,"%d",(ulong)(piVar14[4] + 1));\n        puVar11 = __s;\n        do {\n          puVar10 = puVar11;\n          uVar6 = *puVar10 + 0xfefefeff & ~*puVar10;\n          uVar7 = uVar6 & 0x80808080;\n          puVar11 = puVar10 + 1;\n        } while (uVar7 == 0);\n        bVar18 = (uVar6 & 0x8080) == 0;\n        if (bVar18) {\n          uVar7 = uVar7 >> 0x10;\n        }\n        if (bVar18) {\n          puVar11 = (uint *)((long)puVar10 + 6);\n        }\n        lVar8 = *(long *)(param_1 + 0x100);\n        pcVar12 = (char *)((long)puVar11 +\n                          ((-3 - (ulong)CARRY1((byte)uVar7,(byte)uVar7)) - (long)__s));\n        if (pcVar12 != (char *)0x0) {\n          puVar11 = (uint *)((long)__s + (long)pcVar12);\n          lVar9 = lVar8;\n          do {\n            cVar17 = (char)*__s;\n            if (lVar9 == 0xff) {\n              *(undefined1 *)(param_1 + 0xff) = 0;\n              auStack_5b[2] = cVar17;\n              (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118));\n              *(long *)(param_1 + 0x140) = *(long *)(param_1 + 0x140) + 1;\n              lVar8 = 1;\n              lVar9 = 0;\n              cVar17 = auStack_5b[2];\n            }\n            else {\n              lVar8 = lVar9 + 1;\n            }\n            __s = (uint *)((long)__s + 1);\n            *(long *)(param_1 + 0x100) = lVar8;\n            *(char *)(param_1 + lVar9) = cVar17;\n            *(char *)(param_1 + 0x108) = cVar17;\n            lVar9 = lVar8;\n          } while (puVar11 != __s);\n        }\n        puVar13 = &DAT_00589518;\n        uVar16 = 0x7d;\n        while( true ) {\n          if (lVar8 == 0xff) {\n            *(undefined1 *)(param_1 + 0xff) = 0;\n            (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118));\n            *(long *)(param_1 + 0x140) = *(long *)(param_1 + 0x140) + 1;\n            lVar8 = 0;\n            lVar9 = 1;\n          }\n          else {\n            lVar9 = lVar8 + 1;\n          }\n          puVar13 = puVar13 + 1;\n          *(long *)(param_1 + 0x100) = lVar9;\n          *(undefined1 *)(param_1 + lVar8) = uVar16;\n          *(undefined1 *)(param_1 + 0x108) = uVar16;\n          if (puVar13 == &DAT_0058951b) break;\n          uVar16 = *puVar13;\n          lVar8 = lVar9;\n        }\n        piVar14 = *(int **)(piVar14 + 2);\n        iVar5 = *piVar14;\n      }\n      if (iVar5 - 0x1cU < 0x34) {\n        uVar4 = 0xd00000000001fU >> ((ulong)(iVar5 - 0x1cU) & 0x3f) & 1;\n        while (uVar4 != 0) {\n          piVar14 = *(int **)(piVar14 + 2);\n          if (0x33 < *piVar14 - 0x1cU) break;\n          uVar4 = 1L << ((byte)(*piVar14 - 0x1cU) & 0x3f) & 0xd00000000001f;\n        }\n      }\n      FUN_004916e0(param_1,param_2,piVar14);\n      *(undefined8 *)(param_1 + 0x120) = uVar1;\n      return;\n    }\n    FUN_00491770(param_1,param_2);\n    *(undefined8 *)(param_1 + 0x120) = uVar1;\n  }" { (expression_statement "piVar14 = (int *)param_3[1];" (assignment_expression "piVar14 = (int *)param_3[1]" identifier = (cast_expression "(int *)param_3[1]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_3[1]" identifier [ number_literal ]))) ;) (expression_statement "iVar5 = *piVar14;" (assignment_expression "iVar5 = *piVar14" identifier = (pointer_expression "*piVar14" * identifier)) ;) (if_statement "if (param_4 == 0) {\n      if (iVar5 - 0x1cU < 0x34) {\n        if ((0xd00000000001fU >> ((ulong)(iVar5 - 0x1cU) & 0x3f) & 1) != 0) goto LAB_00492458;\n        goto LAB_00492416;\n      }\n      *(undefined4 *)(param_3 + 2) = 1;\n      uVar1 = *(undefined8 *)(param_1 + 0x120);\n      *(long *)(param_1 + 0x120) = param_3[3];\n    }\n    else {\nLAB_00492416:\n      *(undefined4 *)(param_3 + 2) = 1;\n      uVar1 = *(undefined8 *)(param_1 + 0x120);\n      *(long *)(param_1 + 0x120) = param_3[3];\n      if (iVar5 == 0x29) {\n        FUN_004920b0(param_1,param_2,piVar14 + 4,*param_3);\n        *(undefined8 *)(param_1 + 0x120) = uVar1;\n        return;\n      }\n    }" if (parenthesized_expression "(param_4 == 0)" ( (binary_expression "param_4 == 0" identifier == number_literal) )) (compound_statement "{\n      if (iVar5 - 0x1cU < 0x34) {\n        if ((0xd00000000001fU >> ((ulong)(iVar5 - 0x1cU) & 0x3f) & 1) != 0) goto LAB_00492458;\n        goto LAB_00492416;\n      }\n      *(undefined4 *)(param_3 + 2) = 1;\n      uVar1 = *(undefined8 *)(param_1 + 0x120);\n      *(long *)(param_1 + 0x120) = param_3[3];\n    }" { (if_statement "if (iVar5 - 0x1cU < 0x34) {\n        if ((0xd00000000001fU >> ((ulong)(iVar5 - 0x1cU) & 0x3f) & 1) != 0) goto LAB_00492458;\n        goto LAB_00492416;\n      }" if (parenthesized_expression "(iVar5 - 0x1cU < 0x34)" ( (binary_expression "iVar5 - 0x1cU < 0x34" (binary_expression "iVar5 - 0x1cU" identifier - number_literal) < number_literal) )) (compound_statement "{\n        if ((0xd00000000001fU >> ((ulong)(iVar5 - 0x1cU) & 0x3f) & 1) != 0) goto LAB_00492458;\n        goto LAB_00492416;\n      }" { (if_statement "if ((0xd00000000001fU >> ((ulong)(iVar5 - 0x1cU) & 0x3f) & 1) != 0) goto LAB_00492458;" if (parenthesized_expression "((0xd00000000001fU >> ((ulong)(iVar5 - 0x1cU) & 0x3f) & 1) != 0)" ( (binary_expression "(0xd00000000001fU >> ((ulong)(iVar5 - 0x1cU) & 0x3f) & 1) != 0" (parenthesized_expression "(0xd00000000001fU >> ((ulong)(iVar5 - 0x1cU) & 0x3f) & 1)" ( (binary_expression "0xd00000000001fU >> ((ulong)(iVar5 - 0x1cU) & 0x3f) & 1" (binary_expression "0xd00000000001fU >> ((ulong)(iVar5 - 0x1cU) & 0x3f)" number_literal >> (parenthesized_expression "((ulong)(iVar5 - 0x1cU) & 0x3f)" ( (binary_expression "(ulong)(iVar5 - 0x1cU) & 0x3f" (call_expression "(ulong)(iVar5 - 0x1cU)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(iVar5 - 0x1cU)" ( (binary_expression "iVar5 - 0x1cU" identifier - number_literal) ))) & number_literal) ))) & number_literal) )) != number_literal) )) (goto_statement "goto LAB_00492458;" goto statement_identifier ;)) (goto_statement "goto LAB_00492416;" goto statement_identifier ;) })) (expression_statement "*(undefined4 *)(param_3 + 2) = 1;" (assignment_expression "*(undefined4 *)(param_3 + 2) = 1" (pointer_expression "*(undefined4 *)(param_3 + 2)" * (cast_expression "(undefined4 *)(param_3 + 2)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 2)" ( (binary_expression "param_3 + 2" identifier + number_literal) )))) = number_literal) ;) (expression_statement "uVar1 = *(undefined8 *)(param_1 + 0x120);" (assignment_expression "uVar1 = *(undefined8 *)(param_1 + 0x120)" identifier = (pointer_expression "*(undefined8 *)(param_1 + 0x120)" * (cast_expression "(undefined8 *)(param_1 + 0x120)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x120)" ( (binary_expression "param_1 + 0x120" identifier + number_literal) ))))) ;) (expression_statement "*(long *)(param_1 + 0x120) = param_3[3];" (assignment_expression "*(long *)(param_1 + 0x120) = param_3[3]" (pointer_expression "*(long *)(param_1 + 0x120)" * (cast_expression "(long *)(param_1 + 0x120)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x120)" ( (binary_expression "param_1 + 0x120" identifier + number_literal) )))) = (subscript_expression "param_3[3]" identifier [ number_literal ])) ;) }) (else_clause "else {\nLAB_00492416:\n      *(undefined4 *)(param_3 + 2) = 1;\n      uVar1 = *(undefined8 *)(param_1 + 0x120);\n      *(long *)(param_1 + 0x120) = param_3[3];\n      if (iVar5 == 0x29) {\n        FUN_004920b0(param_1,param_2,piVar14 + 4,*param_3);\n        *(undefined8 *)(param_1 + 0x120) = uVar1;\n        return;\n      }\n    }" else (compound_statement "{\nLAB_00492416:\n      *(undefined4 *)(param_3 + 2) = 1;\n      uVar1 = *(undefined8 *)(param_1 + 0x120);\n      *(long *)(param_1 + 0x120) = param_3[3];\n      if (iVar5 == 0x29) {\n        FUN_004920b0(param_1,param_2,piVar14 + 4,*param_3);\n        *(undefined8 *)(param_1 + 0x120) = uVar1;\n        return;\n      }\n    }" { (labeled_statement "LAB_00492416:\n      *(undefined4 *)(param_3 + 2) = 1;" statement_identifier : (expression_statement "*(undefined4 *)(param_3 + 2) = 1;" (assignment_expression "*(undefined4 *)(param_3 + 2) = 1" (pointer_expression "*(undefined4 *)(param_3 + 2)" * (cast_expression "(undefined4 *)(param_3 + 2)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 2)" ( (binary_expression "param_3 + 2" identifier + number_literal) )))) = number_literal) ;)) (expression_statement "uVar1 = *(undefined8 *)(param_1 + 0x120);" (assignment_expression "uVar1 = *(undefined8 *)(param_1 + 0x120)" identifier = (pointer_expression "*(undefined8 *)(param_1 + 0x120)" * (cast_expression "(undefined8 *)(param_1 + 0x120)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x120)" ( (binary_expression "param_1 + 0x120" identifier + number_literal) ))))) ;) (expression_statement "*(long *)(param_1 + 0x120) = param_3[3];" (assignment_expression "*(long *)(param_1 + 0x120) = param_3[3]" (pointer_expression "*(long *)(param_1 + 0x120)" * (cast_expression "(long *)(param_1 + 0x120)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x120)" ( (binary_expression "param_1 + 0x120" identifier + number_literal) )))) = (subscript_expression "param_3[3]" identifier [ number_literal ])) ;) (if_statement "if (iVar5 == 0x29) {\n        FUN_004920b0(param_1,param_2,piVar14 + 4,*param_3);\n        *(undefined8 *)(param_1 + 0x120) = uVar1;\n        return;\n      }" if (parenthesized_expression "(iVar5 == 0x29)" ( (binary_expression "iVar5 == 0x29" identifier == number_literal) )) (compound_statement "{\n        FUN_004920b0(param_1,param_2,piVar14 + 4,*param_3);\n        *(undefined8 *)(param_1 + 0x120) = uVar1;\n        return;\n      }" { (expression_statement "FUN_004920b0(param_1,param_2,piVar14 + 4,*param_3);" (call_expression "FUN_004920b0(param_1,param_2,piVar14 + 4,*param_3)" identifier (argument_list "(param_1,param_2,piVar14 + 4,*param_3)" ( identifier , identifier , (binary_expression "piVar14 + 4" identifier + number_literal) , (pointer_expression "*param_3" * identifier) ))) ;) (expression_statement "*(undefined8 *)(param_1 + 0x120) = uVar1;" (assignment_expression "*(undefined8 *)(param_1 + 0x120) = uVar1" (pointer_expression "*(undefined8 *)(param_1 + 0x120)" * (cast_expression "(undefined8 *)(param_1 + 0x120)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x120)" ( (binary_expression "param_1 + 0x120" identifier + number_literal) )))) = identifier) ;) (return_statement "return;" return ;) })) }))) (if_statement "if (iVar5 == 0x2a) {\n      FUN_00492840(param_1,param_2,piVar14 + 2,*param_3);\n      *(undefined8 *)(param_1 + 0x120) = uVar1;\n      return;\n    }" if (parenthesized_expression "(iVar5 == 0x2a)" ( (binary_expression "iVar5 == 0x2a" identifier == number_literal) )) (compound_statement "{\n      FUN_00492840(param_1,param_2,piVar14 + 2,*param_3);\n      *(undefined8 *)(param_1 + 0x120) = uVar1;\n      return;\n    }" { (expression_statement "FUN_00492840(param_1,param_2,piVar14 + 2,*param_3);" (call_expression "FUN_00492840(param_1,param_2,piVar14 + 2,*param_3)" identifier (argument_list "(param_1,param_2,piVar14 + 2,*param_3)" ( identifier , identifier , (binary_expression "piVar14 + 2" identifier + number_literal) , (pointer_expression "*param_3" * identifier) ))) ;) (expression_statement "*(undefined8 *)(param_1 + 0x120) = uVar1;" (assignment_expression "*(undefined8 *)(param_1 + 0x120) = uVar1" (pointer_expression "*(undefined8 *)(param_1 + 0x120)" * (cast_expression "(undefined8 *)(param_1 + 0x120)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x120)" ( (binary_expression "param_1 + 0x120" identifier + number_literal) )))) = identifier) ;) (return_statement "return;" return ;) })) (if_statement "if (iVar5 == 2) {\n      uVar2 = *(undefined8 *)(param_1 + 0x128);\n      uVar3 = *(undefined8 *)(piVar14 + 2);\n      *(undefined8 *)(param_1 + 0x128) = 0;\n      FUN_004916e0(param_1,param_2,uVar3);\n      *(undefined8 *)(param_1 + 0x128) = uVar2;\n      lVar8 = *(long *)(param_1 + 0x100);\n      if ((param_2 & 4) == 0) {\n        puVar15 = &DAT_00589519;\n        uVar16 = 0x3a;\n        while( true ) {\n          if (lVar8 == 0xff) {\n            *(undefined1 *)(param_1 + 0xff) = 0;\n            (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118));\n            *(long *)(param_1 + 0x140) = *(long *)(param_1 + 0x140) + 1;\n            lVar8 = 0;\n            lVar9 = 1;\n          }\n          else {\n            lVar9 = lVar8 + 1;\n          }\n          puVar15 = puVar15 + 1;\n          *(long *)(param_1 + 0x100) = lVar9;\n          *(undefined1 *)(param_1 + lVar8) = uVar16;\n          *(undefined1 *)(param_1 + 0x108) = uVar16;\n          if (puVar15 == &DAT_0058951b) break;\n          uVar16 = *puVar15;\n          lVar8 = lVar9;\n        }\n      }\n      else {\n        lVar9 = lVar8 + 1;\n        if (lVar8 == 0xff) {\n          *(undefined1 *)(param_1 + 0xff) = 0;\n          (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118));\n          *(long *)(param_1 + 0x140) = *(long *)(param_1 + 0x140) + 1;\n          lVar9 = 1;\n          lVar8 = 0;\n        }\n        *(long *)(param_1 + 0x100) = lVar9;\n        *(undefined1 *)(param_1 + lVar8) = 0x2e;\n        *(undefined1 *)(param_1 + 0x108) = 0x2e;\n      }\n      piVar14 = *(int **)(param_3[1] + 0x10);\n      iVar5 = *piVar14;\n      if (iVar5 == 0x46) {\n        pcVar12 = "{default arg#";\n        cVar17 = '{';\n        lVar8 = *(long *)(param_1 + 0x100);\n        while( true ) {\n          pcVar12 = pcVar12 + 1;\n          if (lVar8 == 0xff) {\n            *(undefined1 *)(param_1 + 0xff) = 0;\n            (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118));\n            *(long *)(param_1 + 0x140) = *(long *)(param_1 + 0x140) + 1;\n            lVar8 = 0;\n            lVar9 = 1;\n          }\n          else {\n            lVar9 = lVar8 + 1;\n          }\n          *(long *)(param_1 + 0x100) = lVar9;\n          *(char *)(param_1 + lVar8) = cVar17;\n          *(char *)(param_1 + 0x108) = cVar17;\n          if (pcVar12 == "") break;\n          cVar17 = *pcVar12;\n          lVar8 = lVar9;\n        }\n        __s = (uint *)(auStack_5b + 3);\n        sprintf((char *)__s,"%d",(ulong)(piVar14[4] + 1));\n        puVar11 = __s;\n        do {\n          puVar10 = puVar11;\n          uVar6 = *puVar10 + 0xfefefeff & ~*puVar10;\n          uVar7 = uVar6 & 0x80808080;\n          puVar11 = puVar10 + 1;\n        } while (uVar7 == 0);\n        bVar18 = (uVar6 & 0x8080) == 0;\n        if (bVar18) {\n          uVar7 = uVar7 >> 0x10;\n        }\n        if (bVar18) {\n          puVar11 = (uint *)((long)puVar10 + 6);\n        }\n        lVar8 = *(long *)(param_1 + 0x100);\n        pcVar12 = (char *)((long)puVar11 +\n                          ((-3 - (ulong)CARRY1((byte)uVar7,(byte)uVar7)) - (long)__s));\n        if (pcVar12 != (char *)0x0) {\n          puVar11 = (uint *)((long)__s + (long)pcVar12);\n          lVar9 = lVar8;\n          do {\n            cVar17 = (char)*__s;\n            if (lVar9 == 0xff) {\n              *(undefined1 *)(param_1 + 0xff) = 0;\n              auStack_5b[2] = cVar17;\n              (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118));\n              *(long *)(param_1 + 0x140) = *(long *)(param_1 + 0x140) + 1;\n              lVar8 = 1;\n              lVar9 = 0;\n              cVar17 = auStack_5b[2];\n            }\n            else {\n              lVar8 = lVar9 + 1;\n            }\n            __s = (uint *)((long)__s + 1);\n            *(long *)(param_1 + 0x100) = lVar8;\n            *(char *)(param_1 + lVar9) = cVar17;\n            *(char *)(param_1 + 0x108) = cVar17;\n            lVar9 = lVar8;\n          } while (puVar11 != __s);\n        }\n        puVar13 = &DAT_00589518;\n        uVar16 = 0x7d;\n        while( true ) {\n          if (lVar8 == 0xff) {\n            *(undefined1 *)(param_1 + 0xff) = 0;\n            (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118));\n            *(long *)(param_1 + 0x140) = *(long *)(param_1 + 0x140) + 1;\n            lVar8 = 0;\n            lVar9 = 1;\n          }\n          else {\n            lVar9 = lVar8 + 1;\n          }\n          puVar13 = puVar13 + 1;\n          *(long *)(param_1 + 0x100) = lVar9;\n          *(undefined1 *)(param_1 + lVar8) = uVar16;\n          *(undefined1 *)(param_1 + 0x108) = uVar16;\n          if (puVar13 == &DAT_0058951b) break;\n          uVar16 = *puVar13;\n          lVar8 = lVar9;\n        }\n        piVar14 = *(int **)(piVar14 + 2);\n        iVar5 = *piVar14;\n      }\n      if (iVar5 - 0x1cU < 0x34) {\n        uVar4 = 0xd00000000001fU >> ((ulong)(iVar5 - 0x1cU) & 0x3f) & 1;\n        while (uVar4 != 0) {\n          piVar14 = *(int **)(piVar14 + 2);\n          if (0x33 < *piVar14 - 0x1cU) break;\n          uVar4 = 1L << ((byte)(*piVar14 - 0x1cU) & 0x3f) & 0xd00000000001f;\n        }\n      }\n      FUN_004916e0(param_1,param_2,piVar14);\n      *(undefined8 *)(param_1 + 0x120) = uVar1;\n      return;\n    }" if (parenthesized_expression "(iVar5 == 2)" ( (binary_expression "iVar5 == 2" identifier == number_literal) )) (compound_statement "{\n      uVar2 = *(undefined8 *)(param_1 + 0x128);\n      uVar3 = *(undefined8 *)(piVar14 + 2);\n      *(undefined8 *)(param_1 + 0x128) = 0;\n      FUN_004916e0(param_1,param_2,uVar3);\n      *(undefined8 *)(param_1 + 0x128) = uVar2;\n      lVar8 = *(long *)(param_1 + 0x100);\n      if ((param_2 & 4) == 0) {\n        puVar15 = &DAT_00589519;\n        uVar16 = 0x3a;\n        while( true ) {\n          if (lVar8 == 0xff) {\n            *(undefined1 *)(param_1 + 0xff) = 0;\n            (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118));\n            *(long *)(param_1 + 0x140) = *(long *)(param_1 + 0x140) + 1;\n            lVar8 = 0;\n            lVar9 = 1;\n          }\n          else {\n            lVar9 = lVar8 + 1;\n          }\n          puVar15 = puVar15 + 1;\n          *(long *)(param_1 + 0x100) = lVar9;\n          *(undefined1 *)(param_1 + lVar8) = uVar16;\n          *(undefined1 *)(param_1 + 0x108) = uVar16;\n          if (puVar15 == &DAT_0058951b) break;\n          uVar16 = *puVar15;\n          lVar8 = lVar9;\n        }\n      }\n      else {\n        lVar9 = lVar8 + 1;\n        if (lVar8 == 0xff) {\n          *(undefined1 *)(param_1 + 0xff) = 0;\n          (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118));\n          *(long *)(param_1 + 0x140) = *(long *)(param_1 + 0x140) + 1;\n          lVar9 = 1;\n          lVar8 = 0;\n        }\n        *(long *)(param_1 + 0x100) = lVar9;\n        *(undefined1 *)(param_1 + lVar8) = 0x2e;\n        *(undefined1 *)(param_1 + 0x108) = 0x2e;\n      }\n      piVar14 = *(int **)(param_3[1] + 0x10);\n      iVar5 = *piVar14;\n      if (iVar5 == 0x46) {\n        pcVar12 = "{default arg#";\n        cVar17 = '{';\n        lVar8 = *(long *)(param_1 + 0x100);\n        while( true ) {\n          pcVar12 = pcVar12 + 1;\n          if (lVar8 == 0xff) {\n            *(undefined1 *)(param_1 + 0xff) = 0;\n            (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118));\n            *(long *)(param_1 + 0x140) = *(long *)(param_1 + 0x140) + 1;\n            lVar8 = 0;\n            lVar9 = 1;\n          }\n          else {\n            lVar9 = lVar8 + 1;\n          }\n          *(long *)(param_1 + 0x100) = lVar9;\n          *(char *)(param_1 + lVar8) = cVar17;\n          *(char *)(param_1 + 0x108) = cVar17;\n          if (pcVar12 == "") break;\n          cVar17 = *pcVar12;\n          lVar8 = lVar9;\n        }\n        __s = (uint *)(auStack_5b + 3);\n        sprintf((char *)__s,"%d",(ulong)(piVar14[4] + 1));\n        puVar11 = __s;\n        do {\n          puVar10 = puVar11;\n          uVar6 = *puVar10 + 0xfefefeff & ~*puVar10;\n          uVar7 = uVar6 & 0x80808080;\n          puVar11 = puVar10 + 1;\n        } while (uVar7 == 0);\n        bVar18 = (uVar6 & 0x8080) == 0;\n        if (bVar18) {\n          uVar7 = uVar7 >> 0x10;\n        }\n        if (bVar18) {\n          puVar11 = (uint *)((long)puVar10 + 6);\n        }\n        lVar8 = *(long *)(param_1 + 0x100);\n        pcVar12 = (char *)((long)puVar11 +\n                          ((-3 - (ulong)CARRY1((byte)uVar7,(byte)uVar7)) - (long)__s));\n        if (pcVar12 != (char *)0x0) {\n          puVar11 = (uint *)((long)__s + (long)pcVar12);\n          lVar9 = lVar8;\n          do {\n            cVar17 = (char)*__s;\n            if (lVar9 == 0xff) {\n              *(undefined1 *)(param_1 + 0xff) = 0;\n              auStack_5b[2] = cVar17;\n              (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118));\n              *(long *)(param_1 + 0x140) = *(long *)(param_1 + 0x140) + 1;\n              lVar8 = 1;\n              lVar9 = 0;\n              cVar17 = auStack_5b[2];\n            }\n            else {\n              lVar8 = lVar9 + 1;\n            }\n            __s = (uint *)((long)__s + 1);\n            *(long *)(param_1 + 0x100) = lVar8;\n            *(char *)(param_1 + lVar9) = cVar17;\n            *(char *)(param_1 + 0x108) = cVar17;\n            lVar9 = lVar8;\n          } while (puVar11 != __s);\n        }\n        puVar13 = &DAT_00589518;\n        uVar16 = 0x7d;\n        while( true ) {\n          if (lVar8 == 0xff) {\n            *(undefined1 *)(param_1 + 0xff) = 0;\n            (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118));\n            *(long *)(param_1 + 0x140) = *(long *)(param_1 + 0x140) + 1;\n            lVar8 = 0;\n            lVar9 = 1;\n          }\n          else {\n            lVar9 = lVar8 + 1;\n          }\n          puVar13 = puVar13 + 1;\n          *(long *)(param_1 + 0x100) = lVar9;\n          *(undefined1 *)(param_1 + lVar8) = uVar16;\n          *(undefined1 *)(param_1 + 0x108) = uVar16;\n          if (puVar13 == &DAT_0058951b) break;\n          uVar16 = *puVar13;\n          lVar8 = lVar9;\n        }\n        piVar14 = *(int **)(piVar14 + 2);\n        iVar5 = *piVar14;\n      }\n      if (iVar5 - 0x1cU < 0x34) {\n        uVar4 = 0xd00000000001fU >> ((ulong)(iVar5 - 0x1cU) & 0x3f) & 1;\n        while (uVar4 != 0) {\n          piVar14 = *(int **)(piVar14 + 2);\n          if (0x33 < *piVar14 - 0x1cU) break;\n          uVar4 = 1L << ((byte)(*piVar14 - 0x1cU) & 0x3f) & 0xd00000000001f;\n        }\n      }\n      FUN_004916e0(param_1,param_2,piVar14);\n      *(undefined8 *)(param_1 + 0x120) = uVar1;\n      return;\n    }" { (expression_statement "uVar2 = *(undefined8 *)(param_1 + 0x128);" (assignment_expression "uVar2 = *(undefined8 *)(param_1 + 0x128)" identifier = (pointer_expression "*(undefined8 *)(param_1 + 0x128)" * (cast_expression "(undefined8 *)(param_1 + 0x128)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x128)" ( (binary_expression "param_1 + 0x128" identifier + number_literal) ))))) ;) (expression_statement "uVar3 = *(undefined8 *)(piVar14 + 2);" (assignment_expression "uVar3 = *(undefined8 *)(piVar14 + 2)" identifier = (pointer_expression "*(undefined8 *)(piVar14 + 2)" * (cast_expression "(undefined8 *)(piVar14 + 2)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar14 + 2)" ( (binary_expression "piVar14 + 2" identifier + number_literal) ))))) ;) (expression_statement "*(undefined8 *)(param_1 + 0x128) = 0;" (assignment_expression "*(undefined8 *)(param_1 + 0x128) = 0" (pointer_expression "*(undefined8 *)(param_1 + 0x128)" * (cast_expression "(undefined8 *)(param_1 + 0x128)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x128)" ( (binary_expression "param_1 + 0x128" identifier + number_literal) )))) = number_literal) ;) (expression_statement "FUN_004916e0(param_1,param_2,uVar3);" (call_expression "FUN_004916e0(param_1,param_2,uVar3)" identifier (argument_list "(param_1,param_2,uVar3)" ( identifier , identifier , identifier ))) ;) (expression_statement "*(undefined8 *)(param_1 + 0x128) = uVar2;" (assignment_expression "*(undefined8 *)(param_1 + 0x128) = uVar2" (pointer_expression "*(undefined8 *)(param_1 + 0x128)" * (cast_expression "(undefined8 *)(param_1 + 0x128)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x128)" ( (binary_expression "param_1 + 0x128" identifier + number_literal) )))) = identifier) ;) (expression_statement "lVar8 = *(long *)(param_1 + 0x100);" (assignment_expression "lVar8 = *(long *)(param_1 + 0x100)" identifier = (pointer_expression "*(long *)(param_1 + 0x100)" * (cast_expression "(long *)(param_1 + 0x100)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x100)" ( (binary_expression "param_1 + 0x100" identifier + number_literal) ))))) ;) (if_statement "if ((param_2 & 4) == 0) {\n        puVar15 = &DAT_00589519;\n        uVar16 = 0x3a;\n        while( true ) {\n          if (lVar8 == 0xff) {\n            *(undefined1 *)(param_1 + 0xff) = 0;\n            (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118));\n            *(long *)(param_1 + 0x140) = *(long *)(param_1 + 0x140) + 1;\n            lVar8 = 0;\n            lVar9 = 1;\n          }\n          else {\n            lVar9 = lVar8 + 1;\n          }\n          puVar15 = puVar15 + 1;\n          *(long *)(param_1 + 0x100) = lVar9;\n          *(undefined1 *)(param_1 + lVar8) = uVar16;\n          *(undefined1 *)(param_1 + 0x108) = uVar16;\n          if (puVar15 == &DAT_0058951b) break;\n          uVar16 = *puVar15;\n          lVar8 = lVar9;\n        }\n      }\n      else {\n        lVar9 = lVar8 + 1;\n        if (lVar8 == 0xff) {\n          *(undefined1 *)(param_1 + 0xff) = 0;\n          (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118));\n          *(long *)(param_1 + 0x140) = *(long *)(param_1 + 0x140) + 1;\n          lVar9 = 1;\n          lVar8 = 0;\n        }\n        *(long *)(param_1 + 0x100) = lVar9;\n        *(undefined1 *)(param_1 + lVar8) = 0x2e;\n        *(undefined1 *)(param_1 + 0x108) = 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        puVar15 = &DAT_00589519;\n        uVar16 = 0x3a;\n        while( true ) {\n          if (lVar8 == 0xff) {\n            *(undefined1 *)(param_1 + 0xff) = 0;\n            (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118));\n            *(long *)(param_1 + 0x140) = *(long *)(param_1 + 0x140) + 1;\n            lVar8 = 0;\n            lVar9 = 1;\n          }\n          else {\n            lVar9 = lVar8 + 1;\n          }\n          puVar15 = puVar15 + 1;\n          *(long *)(param_1 + 0x100) = lVar9;\n          *(undefined1 *)(param_1 + lVar8) = uVar16;\n          *(undefined1 *)(param_1 + 0x108) = uVar16;\n          if (puVar15 == &DAT_0058951b) break;\n          uVar16 = *puVar15;\n          lVar8 = lVar9;\n        }\n      }" { (expression_statement "puVar15 = &DAT_00589519;" (assignment_expression "puVar15 = &DAT_00589519" identifier = (pointer_expression "&DAT_00589519" & identifier)) ;) (expression_statement "uVar16 = 0x3a;" (assignment_expression "uVar16 = 0x3a" identifier = number_literal) ;) (while_statement "while( true ) {\n          if (lVar8 == 0xff) {\n            *(undefined1 *)(param_1 + 0xff) = 0;\n            (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118));\n            *(long *)(param_1 + 0x140) = *(long *)(param_1 + 0x140) + 1;\n            lVar8 = 0;\n            lVar9 = 1;\n          }\n          else {\n            lVar9 = lVar8 + 1;\n          }\n          puVar15 = puVar15 + 1;\n          *(long *)(param_1 + 0x100) = lVar9;\n          *(undefined1 *)(param_1 + lVar8) = uVar16;\n          *(undefined1 *)(param_1 + 0x108) = uVar16;\n          if (puVar15 == &DAT_0058951b) break;\n          uVar16 = *puVar15;\n          lVar8 = lVar9;\n        }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n          if (lVar8 == 0xff) {\n            *(undefined1 *)(param_1 + 0xff) = 0;\n            (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118));\n            *(long *)(param_1 + 0x140) = *(long *)(param_1 + 0x140) + 1;\n            lVar8 = 0;\n            lVar9 = 1;\n          }\n          else {\n            lVar9 = lVar8 + 1;\n          }\n          puVar15 = puVar15 + 1;\n          *(long *)(param_1 + 0x100) = lVar9;\n          *(undefined1 *)(param_1 + lVar8) = uVar16;\n          *(undefined1 *)(param_1 + 0x108) = uVar16;\n          if (puVar15 == &DAT_0058951b) break;\n          uVar16 = *puVar15;\n          lVar8 = lVar9;\n        }" { (if_statement "if (lVar8 == 0xff) {\n            *(undefined1 *)(param_1 + 0xff) = 0;\n            (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118));\n            *(long *)(param_1 + 0x140) = *(long *)(param_1 + 0x140) + 1;\n            lVar8 = 0;\n            lVar9 = 1;\n          }\n          else {\n            lVar9 = lVar8 + 1;\n          }" if (parenthesized_expression "(lVar8 == 0xff)" ( (binary_expression "lVar8 == 0xff" identifier == number_literal) )) (compound_statement "{\n            *(undefined1 *)(param_1 + 0xff) = 0;\n            (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118));\n            *(long *)(param_1 + 0x140) = *(long *)(param_1 + 0x140) + 1;\n            lVar8 = 0;\n            lVar9 = 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 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118));" (call_expression "(**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118))" (parenthesized_expression "(**(code **)(param_1 + 0x110))" ( (pointer_expression "**(code **)(param_1 + 0x110)" * (pointer_expression "*(code **)(param_1 + 0x110)" * (cast_expression "(code **)(param_1 + 0x110)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x110)" ( (binary_expression "param_1 + 0x110" identifier + number_literal) ))))) )) (argument_list "(param_1,0xff,*(undefined8 *)(param_1 + 0x118))" ( identifier , number_literal , (pointer_expression "*(undefined8 *)(param_1 + 0x118)" * (cast_expression "(undefined8 *)(param_1 + 0x118)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x118)" ( (binary_expression "param_1 + 0x118" identifier + number_literal) )))) ))) ;) (expression_statement "*(long *)(param_1 + 0x140) = *(long *)(param_1 + 0x140) + 1;" (assignment_expression "*(long *)(param_1 + 0x140) = *(long *)(param_1 + 0x140) + 1" (pointer_expression "*(long *)(param_1 + 0x140)" * (cast_expression "(long *)(param_1 + 0x140)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x140)" ( (binary_expression "param_1 + 0x140" identifier + number_literal) )))) = (binary_expression "*(long *)(param_1 + 0x140) + 1" (pointer_expression "*(long *)(param_1 + 0x140)" * (cast_expression "(long *)(param_1 + 0x140)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x140)" ( (binary_expression "param_1 + 0x140" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "lVar8 = 0;" (assignment_expression "lVar8 = 0" identifier = number_literal) ;) (expression_statement "lVar9 = 1;" (assignment_expression "lVar9 = 1" identifier = number_literal) ;) }) (else_clause "else {\n            lVar9 = lVar8 + 1;\n          }" else (compound_statement "{\n            lVar9 = lVar8 + 1;\n          }" { (expression_statement "lVar9 = lVar8 + 1;" (assignment_expression "lVar9 = lVar8 + 1" identifier = (binary_expression "lVar8 + 1" identifier + number_literal)) ;) }))) (expression_statement "puVar15 = puVar15 + 1;" (assignment_expression "puVar15 = puVar15 + 1" identifier = (binary_expression "puVar15 + 1" identifier + number_literal)) ;) (expression_statement "*(long *)(param_1 + 0x100) = lVar9;" (assignment_expression "*(long *)(param_1 + 0x100) = lVar9" (pointer_expression "*(long *)(param_1 + 0x100)" * (cast_expression "(long *)(param_1 + 0x100)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x100)" ( (binary_expression "param_1 + 0x100" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined1 *)(param_1 + lVar8) = uVar16;" (assignment_expression "*(undefined1 *)(param_1 + lVar8) = uVar16" (pointer_expression "*(undefined1 *)(param_1 + lVar8)" * (cast_expression "(undefined1 *)(param_1 + lVar8)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + lVar8)" ( (binary_expression "param_1 + lVar8" identifier + identifier) )))) = identifier) ;) (expression_statement "*(undefined1 *)(param_1 + 0x108) = uVar16;" (assignment_expression "*(undefined1 *)(param_1 + 0x108) = uVar16" (pointer_expression "*(undefined1 *)(param_1 + 0x108)" * (cast_expression "(undefined1 *)(param_1 + 0x108)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x108)" ( (binary_expression "param_1 + 0x108" identifier + number_literal) )))) = identifier) ;) (if_statement "if (puVar15 == &DAT_0058951b) break;" if (parenthesized_expression "(puVar15 == &DAT_0058951b)" ( (binary_expression "puVar15 == &DAT_0058951b" identifier == (pointer_expression "&DAT_0058951b" & identifier)) )) (break_statement "break;" break ;)) (expression_statement "uVar16 = *puVar15;" (assignment_expression "uVar16 = *puVar15" identifier = (pointer_expression "*puVar15" * identifier)) ;) (expression_statement "lVar8 = lVar9;" (assignment_expression "lVar8 = lVar9" identifier = identifier) ;) })) }) (else_clause "else {\n        lVar9 = lVar8 + 1;\n        if (lVar8 == 0xff) {\n          *(undefined1 *)(param_1 + 0xff) = 0;\n          (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118));\n          *(long *)(param_1 + 0x140) = *(long *)(param_1 + 0x140) + 1;\n          lVar9 = 1;\n          lVar8 = 0;\n        }\n        *(long *)(param_1 + 0x100) = lVar9;\n        *(undefined1 *)(param_1 + lVar8) = 0x2e;\n        *(undefined1 *)(param_1 + 0x108) = 0x2e;\n      }" else (compound_statement "{\n        lVar9 = lVar8 + 1;\n        if (lVar8 == 0xff) {\n          *(undefined1 *)(param_1 + 0xff) = 0;\n          (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118));\n          *(long *)(param_1 + 0x140) = *(long *)(param_1 + 0x140) + 1;\n          lVar9 = 1;\n          lVar8 = 0;\n        }\n        *(long *)(param_1 + 0x100) = lVar9;\n        *(undefined1 *)(param_1 + lVar8) = 0x2e;\n        *(undefined1 *)(param_1 + 0x108) = 0x2e;\n      }" { (expression_statement "lVar9 = lVar8 + 1;" (assignment_expression "lVar9 = lVar8 + 1" identifier = (binary_expression "lVar8 + 1" identifier + number_literal)) ;) (if_statement "if (lVar8 == 0xff) {\n          *(undefined1 *)(param_1 + 0xff) = 0;\n          (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118));\n          *(long *)(param_1 + 0x140) = *(long *)(param_1 + 0x140) + 1;\n          lVar9 = 1;\n          lVar8 = 0;\n        }" if (parenthesized_expression "(lVar8 == 0xff)" ( (binary_expression "lVar8 == 0xff" identifier == number_literal) )) (compound_statement "{\n          *(undefined1 *)(param_1 + 0xff) = 0;\n          (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118));\n          *(long *)(param_1 + 0x140) = *(long *)(param_1 + 0x140) + 1;\n          lVar9 = 1;\n          lVar8 = 0;\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 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118));" (call_expression "(**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118))" (parenthesized_expression "(**(code **)(param_1 + 0x110))" ( (pointer_expression "**(code **)(param_1 + 0x110)" * (pointer_expression "*(code **)(param_1 + 0x110)" * (cast_expression "(code **)(param_1 + 0x110)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x110)" ( (binary_expression "param_1 + 0x110" identifier + number_literal) ))))) )) (argument_list "(param_1,0xff,*(undefined8 *)(param_1 + 0x118))" ( identifier , number_literal , (pointer_expression "*(undefined8 *)(param_1 + 0x118)" * (cast_expression "(undefined8 *)(param_1 + 0x118)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x118)" ( (binary_expression "param_1 + 0x118" identifier + number_literal) )))) ))) ;) (expression_statement "*(long *)(param_1 + 0x140) = *(long *)(param_1 + 0x140) + 1;" (assignment_expression "*(long *)(param_1 + 0x140) = *(long *)(param_1 + 0x140) + 1" (pointer_expression "*(long *)(param_1 + 0x140)" * (cast_expression "(long *)(param_1 + 0x140)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x140)" ( (binary_expression "param_1 + 0x140" identifier + number_literal) )))) = (binary_expression "*(long *)(param_1 + 0x140) + 1" (pointer_expression "*(long *)(param_1 + 0x140)" * (cast_expression "(long *)(param_1 + 0x140)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x140)" ( (binary_expression "param_1 + 0x140" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "lVar9 = 1;" (assignment_expression "lVar9 = 1" identifier = number_literal) ;) (expression_statement "lVar8 = 0;" (assignment_expression "lVar8 = 0" identifier = number_literal) ;) })) (expression_statement "*(long *)(param_1 + 0x100) = lVar9;" (assignment_expression "*(long *)(param_1 + 0x100) = lVar9" (pointer_expression "*(long *)(param_1 + 0x100)" * (cast_expression "(long *)(param_1 + 0x100)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x100)" ( (binary_expression "param_1 + 0x100" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined1 *)(param_1 + lVar8) = 0x2e;" (assignment_expression "*(undefined1 *)(param_1 + lVar8) = 0x2e" (pointer_expression "*(undefined1 *)(param_1 + lVar8)" * (cast_expression "(undefined1 *)(param_1 + lVar8)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + lVar8)" ( (binary_expression "param_1 + lVar8" identifier + identifier) )))) = number_literal) ;) (expression_statement "*(undefined1 *)(param_1 + 0x108) = 0x2e;" (assignment_expression "*(undefined1 *)(param_1 + 0x108) = 0x2e" (pointer_expression "*(undefined1 *)(param_1 + 0x108)" * (cast_expression "(undefined1 *)(param_1 + 0x108)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x108)" ( (binary_expression "param_1 + 0x108" identifier + number_literal) )))) = number_literal) ;) }))) (expression_statement "piVar14 = *(int **)(param_3[1] + 0x10);" (assignment_expression "piVar14 = *(int **)(param_3[1] + 0x10)" identifier = (pointer_expression "*(int **)(param_3[1] + 0x10)" * (cast_expression "(int **)(param_3[1] + 0x10)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_3[1] + 0x10)" ( (binary_expression "param_3[1] + 0x10" (subscript_expression "param_3[1]" identifier [ number_literal ]) + number_literal) ))))) ;) (expression_statement "iVar5 = *piVar14;" (assignment_expression "iVar5 = *piVar14" identifier = (pointer_expression "*piVar14" * identifier)) ;) (if_statement "if (iVar5 == 0x46) {\n        pcVar12 = "{default arg#";\n        cVar17 = '{';\n        lVar8 = *(long *)(param_1 + 0x100);\n        while( true ) {\n          pcVar12 = pcVar12 + 1;\n          if (lVar8 == 0xff) {\n            *(undefined1 *)(param_1 + 0xff) = 0;\n            (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118));\n            *(long *)(param_1 + 0x140) = *(long *)(param_1 + 0x140) + 1;\n            lVar8 = 0;\n            lVar9 = 1;\n          }\n          else {\n            lVar9 = lVar8 + 1;\n          }\n          *(long *)(param_1 + 0x100) = lVar9;\n          *(char *)(param_1 + lVar8) = cVar17;\n          *(char *)(param_1 + 0x108) = cVar17;\n          if (pcVar12 == "") break;\n          cVar17 = *pcVar12;\n          lVar8 = lVar9;\n        }\n        __s = (uint *)(auStack_5b + 3);\n        sprintf((char *)__s,"%d",(ulong)(piVar14[4] + 1));\n        puVar11 = __s;\n        do {\n          puVar10 = puVar11;\n          uVar6 = *puVar10 + 0xfefefeff & ~*puVar10;\n          uVar7 = uVar6 & 0x80808080;\n          puVar11 = puVar10 + 1;\n        } while (uVar7 == 0);\n        bVar18 = (uVar6 & 0x8080) == 0;\n        if (bVar18) {\n          uVar7 = uVar7 >> 0x10;\n        }\n        if (bVar18) {\n          puVar11 = (uint *)((long)puVar10 + 6);\n        }\n        lVar8 = *(long *)(param_1 + 0x100);\n        pcVar12 = (char *)((long)puVar11 +\n                          ((-3 - (ulong)CARRY1((byte)uVar7,(byte)uVar7)) - (long)__s));\n        if (pcVar12 != (char *)0x0) {\n          puVar11 = (uint *)((long)__s + (long)pcVar12);\n          lVar9 = lVar8;\n          do {\n            cVar17 = (char)*__s;\n            if (lVar9 == 0xff) {\n              *(undefined1 *)(param_1 + 0xff) = 0;\n              auStack_5b[2] = cVar17;\n              (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118));\n              *(long *)(param_1 + 0x140) = *(long *)(param_1 + 0x140) + 1;\n              lVar8 = 1;\n              lVar9 = 0;\n              cVar17 = auStack_5b[2];\n            }\n            else {\n              lVar8 = lVar9 + 1;\n            }\n            __s = (uint *)((long)__s + 1);\n            *(long *)(param_1 + 0x100) = lVar8;\n            *(char *)(param_1 + lVar9) = cVar17;\n            *(char *)(param_1 + 0x108) = cVar17;\n            lVar9 = lVar8;\n          } while (puVar11 != __s);\n        }\n        puVar13 = &DAT_00589518;\n        uVar16 = 0x7d;\n        while( true ) {\n          if (lVar8 == 0xff) {\n            *(undefined1 *)(param_1 + 0xff) = 0;\n            (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118));\n            *(long *)(param_1 + 0x140) = *(long *)(param_1 + 0x140) + 1;\n            lVar8 = 0;\n            lVar9 = 1;\n          }\n          else {\n            lVar9 = lVar8 + 1;\n          }\n          puVar13 = puVar13 + 1;\n          *(long *)(param_1 + 0x100) = lVar9;\n          *(undefined1 *)(param_1 + lVar8) = uVar16;\n          *(undefined1 *)(param_1 + 0x108) = uVar16;\n          if (puVar13 == &DAT_0058951b) break;\n          uVar16 = *puVar13;\n          lVar8 = lVar9;\n        }\n        piVar14 = *(int **)(piVar14 + 2);\n        iVar5 = *piVar14;\n      }" if (parenthesized_expression "(iVar5 == 0x46)" ( (binary_expression "iVar5 == 0x46" identifier == number_literal) )) (compound_statement "{\n        pcVar12 = "{default arg#";\n        cVar17 = '{';\n        lVar8 = *(long *)(param_1 + 0x100);\n        while( true ) {\n          pcVar12 = pcVar12 + 1;\n          if (lVar8 == 0xff) {\n            *(undefined1 *)(param_1 + 0xff) = 0;\n            (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118));\n            *(long *)(param_1 + 0x140) = *(long *)(param_1 + 0x140) + 1;\n            lVar8 = 0;\n            lVar9 = 1;\n          }\n          else {\n            lVar9 = lVar8 + 1;\n          }\n          *(long *)(param_1 + 0x100) = lVar9;\n          *(char *)(param_1 + lVar8) = cVar17;\n          *(char *)(param_1 + 0x108) = cVar17;\n          if (pcVar12 == "") break;\n          cVar17 = *pcVar12;\n          lVar8 = lVar9;\n        }\n        __s = (uint *)(auStack_5b + 3);\n        sprintf((char *)__s,"%d",(ulong)(piVar14[4] + 1));\n        puVar11 = __s;\n        do {\n          puVar10 = puVar11;\n          uVar6 = *puVar10 + 0xfefefeff & ~*puVar10;\n          uVar7 = uVar6 & 0x80808080;\n          puVar11 = puVar10 + 1;\n        } while (uVar7 == 0);\n        bVar18 = (uVar6 & 0x8080) == 0;\n        if (bVar18) {\n          uVar7 = uVar7 >> 0x10;\n        }\n        if (bVar18) {\n          puVar11 = (uint *)((long)puVar10 + 6);\n        }\n        lVar8 = *(long *)(param_1 + 0x100);\n        pcVar12 = (char *)((long)puVar11 +\n                          ((-3 - (ulong)CARRY1((byte)uVar7,(byte)uVar7)) - (long)__s));\n        if (pcVar12 != (char *)0x0) {\n          puVar11 = (uint *)((long)__s + (long)pcVar12);\n          lVar9 = lVar8;\n          do {\n            cVar17 = (char)*__s;\n            if (lVar9 == 0xff) {\n              *(undefined1 *)(param_1 + 0xff) = 0;\n              auStack_5b[2] = cVar17;\n              (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118));\n              *(long *)(param_1 + 0x140) = *(long *)(param_1 + 0x140) + 1;\n              lVar8 = 1;\n              lVar9 = 0;\n              cVar17 = auStack_5b[2];\n            }\n            else {\n              lVar8 = lVar9 + 1;\n            }\n            __s = (uint *)((long)__s + 1);\n            *(long *)(param_1 + 0x100) = lVar8;\n            *(char *)(param_1 + lVar9) = cVar17;\n            *(char *)(param_1 + 0x108) = cVar17;\n            lVar9 = lVar8;\n          } while (puVar11 != __s);\n        }\n        puVar13 = &DAT_00589518;\n        uVar16 = 0x7d;\n        while( true ) {\n          if (lVar8 == 0xff) {\n            *(undefined1 *)(param_1 + 0xff) = 0;\n            (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118));\n            *(long *)(param_1 + 0x140) = *(long *)(param_1 + 0x140) + 1;\n            lVar8 = 0;\n            lVar9 = 1;\n          }\n          else {\n            lVar9 = lVar8 + 1;\n          }\n          puVar13 = puVar13 + 1;\n          *(long *)(param_1 + 0x100) = lVar9;\n          *(undefined1 *)(param_1 + lVar8) = uVar16;\n          *(undefined1 *)(param_1 + 0x108) = uVar16;\n          if (puVar13 == &DAT_0058951b) break;\n          uVar16 = *puVar13;\n          lVar8 = lVar9;\n        }\n        piVar14 = *(int **)(piVar14 + 2);\n        iVar5 = *piVar14;\n      }" { (expression_statement "pcVar12 = "{default arg#";" (assignment_expression "pcVar12 = "{default arg#"" identifier = (string_literal ""{default arg#"" " string_content ")) ;) (expression_statement "cVar17 = '{';" (assignment_expression "cVar17 = '{'" identifier = (char_literal "'{'" ' character ')) ;) (expression_statement "lVar8 = *(long *)(param_1 + 0x100);" (assignment_expression "lVar8 = *(long *)(param_1 + 0x100)" identifier = (pointer_expression "*(long *)(param_1 + 0x100)" * (cast_expression "(long *)(param_1 + 0x100)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x100)" ( (binary_expression "param_1 + 0x100" identifier + number_literal) ))))) ;) (while_statement "while( true ) {\n          pcVar12 = pcVar12 + 1;\n          if (lVar8 == 0xff) {\n            *(undefined1 *)(param_1 + 0xff) = 0;\n            (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118));\n            *(long *)(param_1 + 0x140) = *(long *)(param_1 + 0x140) + 1;\n            lVar8 = 0;\n            lVar9 = 1;\n          }\n          else {\n            lVar9 = lVar8 + 1;\n          }\n          *(long *)(param_1 + 0x100) = lVar9;\n          *(char *)(param_1 + lVar8) = cVar17;\n          *(char *)(param_1 + 0x108) = cVar17;\n          if (pcVar12 == "") break;\n          cVar17 = *pcVar12;\n          lVar8 = lVar9;\n        }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n          pcVar12 = pcVar12 + 1;\n          if (lVar8 == 0xff) {\n            *(undefined1 *)(param_1 + 0xff) = 0;\n            (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118));\n            *(long *)(param_1 + 0x140) = *(long *)(param_1 + 0x140) + 1;\n            lVar8 = 0;\n            lVar9 = 1;\n          }\n          else {\n            lVar9 = lVar8 + 1;\n          }\n          *(long *)(param_1 + 0x100) = lVar9;\n          *(char *)(param_1 + lVar8) = cVar17;\n          *(char *)(param_1 + 0x108) = cVar17;\n          if (pcVar12 == "") break;\n          cVar17 = *pcVar12;\n          lVar8 = lVar9;\n        }" { (expression_statement "pcVar12 = pcVar12 + 1;" (assignment_expression "pcVar12 = pcVar12 + 1" identifier = (binary_expression "pcVar12 + 1" identifier + number_literal)) ;) (if_statement "if (lVar8 == 0xff) {\n            *(undefined1 *)(param_1 + 0xff) = 0;\n            (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118));\n            *(long *)(param_1 + 0x140) = *(long *)(param_1 + 0x140) + 1;\n            lVar8 = 0;\n            lVar9 = 1;\n          }\n          else {\n            lVar9 = lVar8 + 1;\n          }" if (parenthesized_expression "(lVar8 == 0xff)" ( (binary_expression "lVar8 == 0xff" identifier == number_literal) )) (compound_statement "{\n            *(undefined1 *)(param_1 + 0xff) = 0;\n            (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118));\n            *(long *)(param_1 + 0x140) = *(long *)(param_1 + 0x140) + 1;\n            lVar8 = 0;\n            lVar9 = 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 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118));" (call_expression "(**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118))" (parenthesized_expression "(**(code **)(param_1 + 0x110))" ( (pointer_expression "**(code **)(param_1 + 0x110)" * (pointer_expression "*(code **)(param_1 + 0x110)" * (cast_expression "(code **)(param_1 + 0x110)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x110)" ( (binary_expression "param_1 + 0x110" identifier + number_literal) ))))) )) (argument_list "(param_1,0xff,*(undefined8 *)(param_1 + 0x118))" ( identifier , number_literal , (pointer_expression "*(undefined8 *)(param_1 + 0x118)" * (cast_expression "(undefined8 *)(param_1 + 0x118)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x118)" ( (binary_expression "param_1 + 0x118" identifier + number_literal) )))) ))) ;) (expression_statement "*(long *)(param_1 + 0x140) = *(long *)(param_1 + 0x140) + 1;" (assignment_expression "*(long *)(param_1 + 0x140) = *(long *)(param_1 + 0x140) + 1" (pointer_expression "*(long *)(param_1 + 0x140)" * (cast_expression "(long *)(param_1 + 0x140)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x140)" ( (binary_expression "param_1 + 0x140" identifier + number_literal) )))) = (binary_expression "*(long *)(param_1 + 0x140) + 1" (pointer_expression "*(long *)(param_1 + 0x140)" * (cast_expression "(long *)(param_1 + 0x140)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x140)" ( (binary_expression "param_1 + 0x140" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "lVar8 = 0;" (assignment_expression "lVar8 = 0" identifier = number_literal) ;) (expression_statement "lVar9 = 1;" (assignment_expression "lVar9 = 1" identifier = number_literal) ;) }) (else_clause "else {\n            lVar9 = lVar8 + 1;\n          }" else (compound_statement "{\n            lVar9 = lVar8 + 1;\n          }" { (expression_statement "lVar9 = lVar8 + 1;" (assignment_expression "lVar9 = lVar8 + 1" identifier = (binary_expression "lVar8 + 1" identifier + number_literal)) ;) }))) (expression_statement "*(long *)(param_1 + 0x100) = lVar9;" (assignment_expression "*(long *)(param_1 + 0x100) = lVar9" (pointer_expression "*(long *)(param_1 + 0x100)" * (cast_expression "(long *)(param_1 + 0x100)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x100)" ( (binary_expression "param_1 + 0x100" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(char *)(param_1 + lVar8) = cVar17;" (assignment_expression "*(char *)(param_1 + lVar8) = cVar17" (pointer_expression "*(char *)(param_1 + lVar8)" * (cast_expression "(char *)(param_1 + lVar8)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + lVar8)" ( (binary_expression "param_1 + lVar8" identifier + identifier) )))) = identifier) ;) (expression_statement "*(char *)(param_1 + 0x108) = cVar17;" (assignment_expression "*(char *)(param_1 + 0x108) = cVar17" (pointer_expression "*(char *)(param_1 + 0x108)" * (cast_expression "(char *)(param_1 + 0x108)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x108)" ( (binary_expression "param_1 + 0x108" identifier + number_literal) )))) = identifier) ;) (if_statement "if (pcVar12 == "") break;" if (parenthesized_expression "(pcVar12 == "")" ( (binary_expression "pcVar12 == """ identifier == (string_literal """" " ")) )) (break_statement "break;" break ;)) (expression_statement "cVar17 = *pcVar12;" (assignment_expression "cVar17 = *pcVar12" identifier = (pointer_expression "*pcVar12" * identifier)) ;) (expression_statement "lVar8 = lVar9;" (assignment_expression "lVar8 = lVar9" identifier = identifier) ;) })) (expression_statement "__s = (uint *)(auStack_5b + 3);" (assignment_expression "__s = (uint *)(auStack_5b + 3)" identifier = (cast_expression "(uint *)(auStack_5b + 3)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(auStack_5b + 3)" ( (binary_expression "auStack_5b + 3" identifier + number_literal) )))) ;) (expression_statement "sprintf((char *)__s,"%d",(ulong)(piVar14[4] + 1));" (call_expression "sprintf((char *)__s,"%d",(ulong)(piVar14[4] + 1))" identifier (argument_list "((char *)__s,"%d",(ulong)(piVar14[4] + 1))" ( (cast_expression "(char *)__s" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) , (string_literal ""%d"" " string_content ") , (call_expression "(ulong)(piVar14[4] + 1)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(piVar14[4] + 1)" ( (binary_expression "piVar14[4] + 1" (subscript_expression "piVar14[4]" identifier [ number_literal ]) + number_literal) ))) ))) ;) (expression_statement "puVar11 = __s;" (assignment_expression "puVar11 = __s" identifier = identifier) ;) (do_statement "do {\n          puVar10 = puVar11;\n          uVar6 = *puVar10 + 0xfefefeff & ~*puVar10;\n          uVar7 = uVar6 & 0x80808080;\n          puVar11 = puVar10 + 1;\n        } while (uVar7 == 0);" do (compound_statement "{\n          puVar10 = puVar11;\n          uVar6 = *puVar10 + 0xfefefeff & ~*puVar10;\n          uVar7 = uVar6 & 0x80808080;\n          puVar11 = puVar10 + 1;\n        }" { (expression_statement "puVar10 = puVar11;" (assignment_expression "puVar10 = puVar11" identifier = identifier) ;) (expression_statement "uVar6 = *puVar10 + 0xfefefeff & ~*puVar10;" (assignment_expression "uVar6 = *puVar10 + 0xfefefeff & ~*puVar10" identifier = (binary_expression "*puVar10 + 0xfefefeff & ~*puVar10" (binary_expression "*puVar10 + 0xfefefeff" (pointer_expression "*puVar10" * identifier) + number_literal) & (unary_expression "~*puVar10" ~ (pointer_expression "*puVar10" * identifier)))) ;) (expression_statement "uVar7 = uVar6 & 0x80808080;" (assignment_expression "uVar7 = uVar6 & 0x80808080" identifier = (binary_expression "uVar6 & 0x80808080" identifier & number_literal)) ;) (expression_statement "puVar11 = puVar10 + 1;" (assignment_expression "puVar11 = puVar10 + 1" identifier = (binary_expression "puVar10 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar7 == 0)" ( (binary_expression "uVar7 == 0" identifier == number_literal) )) ;) (expression_statement "bVar18 = (uVar6 & 0x8080) == 0;" (assignment_expression "bVar18 = (uVar6 & 0x8080) == 0" identifier = (binary_expression "(uVar6 & 0x8080) == 0" (parenthesized_expression "(uVar6 & 0x8080)" ( (binary_expression "uVar6 & 0x8080" identifier & number_literal) )) == number_literal)) ;) (if_statement "if (bVar18) {\n          uVar7 = uVar7 >> 0x10;\n        }" if (parenthesized_expression "(bVar18)" ( identifier )) (compound_statement "{\n          uVar7 = uVar7 >> 0x10;\n        }" { (expression_statement "uVar7 = uVar7 >> 0x10;" (assignment_expression "uVar7 = uVar7 >> 0x10" identifier = (binary_expression "uVar7 >> 0x10" identifier >> number_literal)) ;) })) (if_statement "if (bVar18) {\n          puVar11 = (uint *)((long)puVar10 + 6);\n        }" if (parenthesized_expression "(bVar18)" ( identifier )) (compound_statement "{\n          puVar11 = (uint *)((long)puVar10 + 6);\n        }" { (expression_statement "puVar11 = (uint *)((long)puVar10 + 6);" (assignment_expression "puVar11 = (uint *)((long)puVar10 + 6)" identifier = (cast_expression "(uint *)((long)puVar10 + 6)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)puVar10 + 6)" ( (binary_expression "(long)puVar10 + 6" (cast_expression "(long)puVar10" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) ;) })) (expression_statement "lVar8 = *(long *)(param_1 + 0x100);" (assignment_expression "lVar8 = *(long *)(param_1 + 0x100)" identifier = (pointer_expression "*(long *)(param_1 + 0x100)" * (cast_expression "(long *)(param_1 + 0x100)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x100)" ( (binary_expression "param_1 + 0x100" identifier + number_literal) ))))) ;) (expression_statement "pcVar12 = (char *)((long)puVar11 +\n                          ((-3 - (ulong)CARRY1((byte)uVar7,(byte)uVar7)) - (long)__s));" (assignment_expression "pcVar12 = (char *)((long)puVar11 +\n                          ((-3 - (ulong)CARRY1((byte)uVar7,(byte)uVar7)) - (long)__s))" identifier = (cast_expression "(char *)((long)puVar11 +\n                          ((-3 - (ulong)CARRY1((byte)uVar7,(byte)uVar7)) - (long)__s))" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)puVar11 +\n                          ((-3 - (ulong)CARRY1((byte)uVar7,(byte)uVar7)) - (long)__s))" ( (binary_expression "(long)puVar11 +\n                          ((-3 - (ulong)CARRY1((byte)uVar7,(byte)uVar7)) - (long)__s)" (cast_expression "(long)puVar11" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + (parenthesized_expression "((-3 - (ulong)CARRY1((byte)uVar7,(byte)uVar7)) - (long)__s)" ( (binary_expression "(-3 - (ulong)CARRY1((byte)uVar7,(byte)uVar7)) - (long)__s" (parenthesized_expression "(-3 - (ulong)CARRY1((byte)uVar7,(byte)uVar7))" ( (binary_expression "-3 - (ulong)CARRY1((byte)uVar7,(byte)uVar7)" number_literal - (cast_expression "(ulong)CARRY1((byte)uVar7,(byte)uVar7)" ( (type_descriptor "ulong" type_identifier) ) (call_expression "CARRY1((byte)uVar7,(byte)uVar7)" identifier (argument_list "((byte)uVar7,(byte)uVar7)" ( (cast_expression "(byte)uVar7" ( (type_descriptor "byte" type_identifier) ) identifier) , (cast_expression "(byte)uVar7" ( (type_descriptor "byte" type_identifier) ) identifier) ))))) )) - (cast_expression "(long)__s" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) ))) )))) ;) (if_statement "if (pcVar12 != (char *)0x0) {\n          puVar11 = (uint *)((long)__s + (long)pcVar12);\n          lVar9 = lVar8;\n          do {\n            cVar17 = (char)*__s;\n            if (lVar9 == 0xff) {\n              *(undefined1 *)(param_1 + 0xff) = 0;\n              auStack_5b[2] = cVar17;\n              (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118));\n              *(long *)(param_1 + 0x140) = *(long *)(param_1 + 0x140) + 1;\n              lVar8 = 1;\n              lVar9 = 0;\n              cVar17 = auStack_5b[2];\n            }\n            else {\n              lVar8 = lVar9 + 1;\n            }\n            __s = (uint *)((long)__s + 1);\n            *(long *)(param_1 + 0x100) = lVar8;\n            *(char *)(param_1 + lVar9) = cVar17;\n            *(char *)(param_1 + 0x108) = cVar17;\n            lVar9 = lVar8;\n          } while (puVar11 != __s);\n        }" if (parenthesized_expression "(pcVar12 != (char *)0x0)" ( (binary_expression "pcVar12 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          puVar11 = (uint *)((long)__s + (long)pcVar12);\n          lVar9 = lVar8;\n          do {\n            cVar17 = (char)*__s;\n            if (lVar9 == 0xff) {\n              *(undefined1 *)(param_1 + 0xff) = 0;\n              auStack_5b[2] = cVar17;\n              (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118));\n              *(long *)(param_1 + 0x140) = *(long *)(param_1 + 0x140) + 1;\n              lVar8 = 1;\n              lVar9 = 0;\n              cVar17 = auStack_5b[2];\n            }\n            else {\n              lVar8 = lVar9 + 1;\n            }\n            __s = (uint *)((long)__s + 1);\n            *(long *)(param_1 + 0x100) = lVar8;\n            *(char *)(param_1 + lVar9) = cVar17;\n            *(char *)(param_1 + 0x108) = cVar17;\n            lVar9 = lVar8;\n          } while (puVar11 != __s);\n        }" { (expression_statement "puVar11 = (uint *)((long)__s + (long)pcVar12);" (assignment_expression "puVar11 = (uint *)((long)__s + (long)pcVar12)" identifier = (cast_expression "(uint *)((long)__s + (long)pcVar12)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)__s + (long)pcVar12)" ( (binary_expression "(long)__s + (long)pcVar12" (cast_expression "(long)__s" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + (cast_expression "(long)pcVar12" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) )))) ;) (expression_statement "lVar9 = lVar8;" (assignment_expression "lVar9 = lVar8" identifier = identifier) ;) (do_statement "do {\n            cVar17 = (char)*__s;\n            if (lVar9 == 0xff) {\n              *(undefined1 *)(param_1 + 0xff) = 0;\n              auStack_5b[2] = cVar17;\n              (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118));\n              *(long *)(param_1 + 0x140) = *(long *)(param_1 + 0x140) + 1;\n              lVar8 = 1;\n              lVar9 = 0;\n              cVar17 = auStack_5b[2];\n            }\n            else {\n              lVar8 = lVar9 + 1;\n            }\n            __s = (uint *)((long)__s + 1);\n            *(long *)(param_1 + 0x100) = lVar8;\n            *(char *)(param_1 + lVar9) = cVar17;\n            *(char *)(param_1 + 0x108) = cVar17;\n            lVar9 = lVar8;\n          } while (puVar11 != __s);" do (compound_statement "{\n            cVar17 = (char)*__s;\n            if (lVar9 == 0xff) {\n              *(undefined1 *)(param_1 + 0xff) = 0;\n              auStack_5b[2] = cVar17;\n              (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118));\n              *(long *)(param_1 + 0x140) = *(long *)(param_1 + 0x140) + 1;\n              lVar8 = 1;\n              lVar9 = 0;\n              cVar17 = auStack_5b[2];\n            }\n            else {\n              lVar8 = lVar9 + 1;\n            }\n            __s = (uint *)((long)__s + 1);\n            *(long *)(param_1 + 0x100) = lVar8;\n            *(char *)(param_1 + lVar9) = cVar17;\n            *(char *)(param_1 + 0x108) = cVar17;\n            lVar9 = lVar8;\n          }" { (expression_statement "cVar17 = (char)*__s;" (assignment_expression "cVar17 = (char)*__s" identifier = (cast_expression "(char)*__s" ( (type_descriptor "char" primitive_type) ) (pointer_expression "*__s" * identifier))) ;) (if_statement "if (lVar9 == 0xff) {\n              *(undefined1 *)(param_1 + 0xff) = 0;\n              auStack_5b[2] = cVar17;\n              (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118));\n              *(long *)(param_1 + 0x140) = *(long *)(param_1 + 0x140) + 1;\n              lVar8 = 1;\n              lVar9 = 0;\n              cVar17 = auStack_5b[2];\n            }\n            else {\n              lVar8 = lVar9 + 1;\n            }" if (parenthesized_expression "(lVar9 == 0xff)" ( (binary_expression "lVar9 == 0xff" identifier == number_literal) )) (compound_statement "{\n              *(undefined1 *)(param_1 + 0xff) = 0;\n              auStack_5b[2] = cVar17;\n              (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118));\n              *(long *)(param_1 + 0x140) = *(long *)(param_1 + 0x140) + 1;\n              lVar8 = 1;\n              lVar9 = 0;\n              cVar17 = auStack_5b[2];\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 "auStack_5b[2] = cVar17;" (assignment_expression "auStack_5b[2] = cVar17" (subscript_expression "auStack_5b[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "(**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118));" (call_expression "(**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118))" (parenthesized_expression "(**(code **)(param_1 + 0x110))" ( (pointer_expression "**(code **)(param_1 + 0x110)" * (pointer_expression "*(code **)(param_1 + 0x110)" * (cast_expression "(code **)(param_1 + 0x110)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x110)" ( (binary_expression "param_1 + 0x110" identifier + number_literal) ))))) )) (argument_list "(param_1,0xff,*(undefined8 *)(param_1 + 0x118))" ( identifier , number_literal , (pointer_expression "*(undefined8 *)(param_1 + 0x118)" * (cast_expression "(undefined8 *)(param_1 + 0x118)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x118)" ( (binary_expression "param_1 + 0x118" identifier + number_literal) )))) ))) ;) (expression_statement "*(long *)(param_1 + 0x140) = *(long *)(param_1 + 0x140) + 1;" (assignment_expression "*(long *)(param_1 + 0x140) = *(long *)(param_1 + 0x140) + 1" (pointer_expression "*(long *)(param_1 + 0x140)" * (cast_expression "(long *)(param_1 + 0x140)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x140)" ( (binary_expression "param_1 + 0x140" identifier + number_literal) )))) = (binary_expression "*(long *)(param_1 + 0x140) + 1" (pointer_expression "*(long *)(param_1 + 0x140)" * (cast_expression "(long *)(param_1 + 0x140)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x140)" ( (binary_expression "param_1 + 0x140" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "lVar8 = 1;" (assignment_expression "lVar8 = 1" identifier = number_literal) ;) (expression_statement "lVar9 = 0;" (assignment_expression "lVar9 = 0" identifier = number_literal) ;) (expression_statement "cVar17 = auStack_5b[2];" (assignment_expression "cVar17 = auStack_5b[2]" identifier = (subscript_expression "auStack_5b[2]" identifier [ number_literal ])) ;) }) (else_clause "else {\n              lVar8 = lVar9 + 1;\n            }" else (compound_statement "{\n              lVar8 = lVar9 + 1;\n            }" { (expression_statement "lVar8 = lVar9 + 1;" (assignment_expression "lVar8 = lVar9 + 1" identifier = (binary_expression "lVar9 + 1" identifier + number_literal)) ;) }))) (expression_statement "__s = (uint *)((long)__s + 1);" (assignment_expression "__s = (uint *)((long)__s + 1)" identifier = (cast_expression "(uint *)((long)__s + 1)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)__s + 1)" ( (binary_expression "(long)__s + 1" (cast_expression "(long)__s" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) ;) (expression_statement "*(long *)(param_1 + 0x100) = lVar8;" (assignment_expression "*(long *)(param_1 + 0x100) = lVar8" (pointer_expression "*(long *)(param_1 + 0x100)" * (cast_expression "(long *)(param_1 + 0x100)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x100)" ( (binary_expression "param_1 + 0x100" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(char *)(param_1 + lVar9) = cVar17;" (assignment_expression "*(char *)(param_1 + lVar9) = cVar17" (pointer_expression "*(char *)(param_1 + lVar9)" * (cast_expression "(char *)(param_1 + lVar9)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + lVar9)" ( (binary_expression "param_1 + lVar9" identifier + identifier) )))) = identifier) ;) (expression_statement "*(char *)(param_1 + 0x108) = cVar17;" (assignment_expression "*(char *)(param_1 + 0x108) = cVar17" (pointer_expression "*(char *)(param_1 + 0x108)" * (cast_expression "(char *)(param_1 + 0x108)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x108)" ( (binary_expression "param_1 + 0x108" identifier + number_literal) )))) = identifier) ;) (expression_statement "lVar9 = lVar8;" (assignment_expression "lVar9 = lVar8" identifier = identifier) ;) }) while (parenthesized_expression "(puVar11 != __s)" ( (binary_expression "puVar11 != __s" identifier != identifier) )) ;) })) (expression_statement "puVar13 = &DAT_00589518;" (assignment_expression "puVar13 = &DAT_00589518" identifier = (pointer_expression "&DAT_00589518" & identifier)) ;) (expression_statement "uVar16 = 0x7d;" (assignment_expression "uVar16 = 0x7d" identifier = number_literal) ;) (while_statement "while( true ) {\n          if (lVar8 == 0xff) {\n            *(undefined1 *)(param_1 + 0xff) = 0;\n            (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118));\n            *(long *)(param_1 + 0x140) = *(long *)(param_1 + 0x140) + 1;\n            lVar8 = 0;\n            lVar9 = 1;\n          }\n          else {\n            lVar9 = lVar8 + 1;\n          }\n          puVar13 = puVar13 + 1;\n          *(long *)(param_1 + 0x100) = lVar9;\n          *(undefined1 *)(param_1 + lVar8) = uVar16;\n          *(undefined1 *)(param_1 + 0x108) = uVar16;\n          if (puVar13 == &DAT_0058951b) break;\n          uVar16 = *puVar13;\n          lVar8 = lVar9;\n        }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n          if (lVar8 == 0xff) {\n            *(undefined1 *)(param_1 + 0xff) = 0;\n            (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118));\n            *(long *)(param_1 + 0x140) = *(long *)(param_1 + 0x140) + 1;\n            lVar8 = 0;\n            lVar9 = 1;\n          }\n          else {\n            lVar9 = lVar8 + 1;\n          }\n          puVar13 = puVar13 + 1;\n          *(long *)(param_1 + 0x100) = lVar9;\n          *(undefined1 *)(param_1 + lVar8) = uVar16;\n          *(undefined1 *)(param_1 + 0x108) = uVar16;\n          if (puVar13 == &DAT_0058951b) break;\n          uVar16 = *puVar13;\n          lVar8 = lVar9;\n        }" { (if_statement "if (lVar8 == 0xff) {\n            *(undefined1 *)(param_1 + 0xff) = 0;\n            (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118));\n            *(long *)(param_1 + 0x140) = *(long *)(param_1 + 0x140) + 1;\n            lVar8 = 0;\n            lVar9 = 1;\n          }\n          else {\n            lVar9 = lVar8 + 1;\n          }" if (parenthesized_expression "(lVar8 == 0xff)" ( (binary_expression "lVar8 == 0xff" identifier == number_literal) )) (compound_statement "{\n            *(undefined1 *)(param_1 + 0xff) = 0;\n            (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118));\n            *(long *)(param_1 + 0x140) = *(long *)(param_1 + 0x140) + 1;\n            lVar8 = 0;\n            lVar9 = 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 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118));" (call_expression "(**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118))" (parenthesized_expression "(**(code **)(param_1 + 0x110))" ( (pointer_expression "**(code **)(param_1 + 0x110)" * (pointer_expression "*(code **)(param_1 + 0x110)" * (cast_expression "(code **)(param_1 + 0x110)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x110)" ( (binary_expression "param_1 + 0x110" identifier + number_literal) ))))) )) (argument_list "(param_1,0xff,*(undefined8 *)(param_1 + 0x118))" ( identifier , number_literal , (pointer_expression "*(undefined8 *)(param_1 + 0x118)" * (cast_expression "(undefined8 *)(param_1 + 0x118)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x118)" ( (binary_expression "param_1 + 0x118" identifier + number_literal) )))) ))) ;) (expression_statement "*(long *)(param_1 + 0x140) = *(long *)(param_1 + 0x140) + 1;" (assignment_expression "*(long *)(param_1 + 0x140) = *(long *)(param_1 + 0x140) + 1" (pointer_expression "*(long *)(param_1 + 0x140)" * (cast_expression "(long *)(param_1 + 0x140)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x140)" ( (binary_expression "param_1 + 0x140" identifier + number_literal) )))) = (binary_expression "*(long *)(param_1 + 0x140) + 1" (pointer_expression "*(long *)(param_1 + 0x140)" * (cast_expression "(long *)(param_1 + 0x140)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x140)" ( (binary_expression "param_1 + 0x140" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "lVar8 = 0;" (assignment_expression "lVar8 = 0" identifier = number_literal) ;) (expression_statement "lVar9 = 1;" (assignment_expression "lVar9 = 1" identifier = number_literal) ;) }) (else_clause "else {\n            lVar9 = lVar8 + 1;\n          }" else (compound_statement "{\n            lVar9 = lVar8 + 1;\n          }" { (expression_statement "lVar9 = lVar8 + 1;" (assignment_expression "lVar9 = lVar8 + 1" identifier = (binary_expression "lVar8 + 1" identifier + number_literal)) ;) }))) (expression_statement "puVar13 = puVar13 + 1;" (assignment_expression "puVar13 = puVar13 + 1" identifier = (binary_expression "puVar13 + 1" identifier + number_literal)) ;) (expression_statement "*(long *)(param_1 + 0x100) = lVar9;" (assignment_expression "*(long *)(param_1 + 0x100) = lVar9" (pointer_expression "*(long *)(param_1 + 0x100)" * (cast_expression "(long *)(param_1 + 0x100)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x100)" ( (binary_expression "param_1 + 0x100" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined1 *)(param_1 + lVar8) = uVar16;" (assignment_expression "*(undefined1 *)(param_1 + lVar8) = uVar16" (pointer_expression "*(undefined1 *)(param_1 + lVar8)" * (cast_expression "(undefined1 *)(param_1 + lVar8)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + lVar8)" ( (binary_expression "param_1 + lVar8" identifier + identifier) )))) = identifier) ;) (expression_statement "*(undefined1 *)(param_1 + 0x108) = uVar16;" (assignment_expression "*(undefined1 *)(param_1 + 0x108) = uVar16" (pointer_expression "*(undefined1 *)(param_1 + 0x108)" * (cast_expression "(undefined1 *)(param_1 + 0x108)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x108)" ( (binary_expression "param_1 + 0x108" identifier + number_literal) )))) = identifier) ;) (if_statement "if (puVar13 == &DAT_0058951b) break;" if (parenthesized_expression "(puVar13 == &DAT_0058951b)" ( (binary_expression "puVar13 == &DAT_0058951b" identifier == (pointer_expression "&DAT_0058951b" & identifier)) )) (break_statement "break;" break ;)) (expression_statement "uVar16 = *puVar13;" (assignment_expression "uVar16 = *puVar13" identifier = (pointer_expression "*puVar13" * identifier)) ;) (expression_statement "lVar8 = lVar9;" (assignment_expression "lVar8 = lVar9" identifier = identifier) ;) })) (expression_statement "piVar14 = *(int **)(piVar14 + 2);" (assignment_expression "piVar14 = *(int **)(piVar14 + 2)" identifier = (pointer_expression "*(int **)(piVar14 + 2)" * (cast_expression "(int **)(piVar14 + 2)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(piVar14 + 2)" ( (binary_expression "piVar14 + 2" identifier + number_literal) ))))) ;) (expression_statement "iVar5 = *piVar14;" (assignment_expression "iVar5 = *piVar14" identifier = (pointer_expression "*piVar14" * identifier)) ;) })) (if_statement "if (iVar5 - 0x1cU < 0x34) {\n        uVar4 = 0xd00000000001fU >> ((ulong)(iVar5 - 0x1cU) & 0x3f) & 1;\n        while (uVar4 != 0) {\n          piVar14 = *(int **)(piVar14 + 2);\n          if (0x33 < *piVar14 - 0x1cU) break;\n          uVar4 = 1L << ((byte)(*piVar14 - 0x1cU) & 0x3f) & 0xd00000000001f;\n        }\n      }" if (parenthesized_expression "(iVar5 - 0x1cU < 0x34)" ( (binary_expression "iVar5 - 0x1cU < 0x34" (binary_expression "iVar5 - 0x1cU" identifier - number_literal) < number_literal) )) (compound_statement "{\n        uVar4 = 0xd00000000001fU >> ((ulong)(iVar5 - 0x1cU) & 0x3f) & 1;\n        while (uVar4 != 0) {\n          piVar14 = *(int **)(piVar14 + 2);\n          if (0x33 < *piVar14 - 0x1cU) break;\n          uVar4 = 1L << ((byte)(*piVar14 - 0x1cU) & 0x3f) & 0xd00000000001f;\n        }\n      }" { (expression_statement "uVar4 = 0xd00000000001fU >> ((ulong)(iVar5 - 0x1cU) & 0x3f) & 1;" (assignment_expression "uVar4 = 0xd00000000001fU >> ((ulong)(iVar5 - 0x1cU) & 0x3f) & 1" identifier = (binary_expression "0xd00000000001fU >> ((ulong)(iVar5 - 0x1cU) & 0x3f) & 1" (binary_expression "0xd00000000001fU >> ((ulong)(iVar5 - 0x1cU) & 0x3f)" number_literal >> (parenthesized_expression "((ulong)(iVar5 - 0x1cU) & 0x3f)" ( (binary_expression "(ulong)(iVar5 - 0x1cU) & 0x3f" (call_expression "(ulong)(iVar5 - 0x1cU)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(iVar5 - 0x1cU)" ( (binary_expression "iVar5 - 0x1cU" identifier - number_literal) ))) & number_literal) ))) & number_literal)) ;) (while_statement "while (uVar4 != 0) {\n          piVar14 = *(int **)(piVar14 + 2);\n          if (0x33 < *piVar14 - 0x1cU) break;\n          uVar4 = 1L << ((byte)(*piVar14 - 0x1cU) & 0x3f) & 0xd00000000001f;\n        }" while (parenthesized_expression "(uVar4 != 0)" ( (binary_expression "uVar4 != 0" identifier != number_literal) )) (compound_statement "{\n          piVar14 = *(int **)(piVar14 + 2);\n          if (0x33 < *piVar14 - 0x1cU) break;\n          uVar4 = 1L << ((byte)(*piVar14 - 0x1cU) & 0x3f) & 0xd00000000001f;\n        }" { (expression_statement "piVar14 = *(int **)(piVar14 + 2);" (assignment_expression "piVar14 = *(int **)(piVar14 + 2)" identifier = (pointer_expression "*(int **)(piVar14 + 2)" * (cast_expression "(int **)(piVar14 + 2)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(piVar14 + 2)" ( (binary_expression "piVar14 + 2" identifier + number_literal) ))))) ;) (if_statement "if (0x33 < *piVar14 - 0x1cU) break;" if (parenthesized_expression "(0x33 < *piVar14 - 0x1cU)" ( (binary_expression "0x33 < *piVar14 - 0x1cU" number_literal < (binary_expression "*piVar14 - 0x1cU" (pointer_expression "*piVar14" * identifier) - number_literal)) )) (break_statement "break;" break ;)) (expression_statement "uVar4 = 1L << ((byte)(*piVar14 - 0x1cU) & 0x3f) & 0xd00000000001f;" (assignment_expression "uVar4 = 1L << ((byte)(*piVar14 - 0x1cU) & 0x3f) & 0xd00000000001f" identifier = (binary_expression "1L << ((byte)(*piVar14 - 0x1cU) & 0x3f) & 0xd00000000001f" (binary_expression "1L << ((byte)(*piVar14 - 0x1cU) & 0x3f)" number_literal << (parenthesized_expression "((byte)(*piVar14 - 0x1cU) & 0x3f)" ( (binary_expression "(byte)(*piVar14 - 0x1cU) & 0x3f" (call_expression "(byte)(*piVar14 - 0x1cU)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(*piVar14 - 0x1cU)" ( (binary_expression "*piVar14 - 0x1cU" (pointer_expression "*piVar14" * identifier) - number_literal) ))) & number_literal) ))) & number_literal)) ;) })) })) (expression_statement "FUN_004916e0(param_1,param_2,piVar14);" (call_expression "FUN_004916e0(param_1,param_2,piVar14)" identifier (argument_list "(param_1,param_2,piVar14)" ( identifier , identifier , identifier ))) ;) (expression_statement "*(undefined8 *)(param_1 + 0x120) = uVar1;" (assignment_expression "*(undefined8 *)(param_1 + 0x120) = uVar1" (pointer_expression "*(undefined8 *)(param_1 + 0x120)" * (cast_expression "(undefined8 *)(param_1 + 0x120)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x120)" ( (binary_expression "param_1 + 0x120" identifier + number_literal) )))) = identifier) ;) (return_statement "return;" return ;) })) (expression_statement "FUN_00491770(param_1,param_2);" (call_expression "FUN_00491770(param_1,param_2)" identifier (argument_list "(param_1,param_2)" ( identifier , identifier ))) ;) (expression_statement "*(undefined8 *)(param_1 + 0x120) = uVar1;" (assignment_expression "*(undefined8 *)(param_1 + 0x120) = uVar1" (pointer_expression "*(undefined8 *)(param_1 + 0x120)" * (cast_expression "(undefined8 *)(param_1 + 0x120)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x120)" ( (binary_expression "param_1 + 0x120" identifier + number_literal) )))) = identifier) ;) })) (labeled_statement "LAB_00492458:\n  param_3 = (long *)*param_3;" statement_identifier : (expression_statement "param_3 = (long *)*param_3;" (assignment_expression "param_3 = (long *)*param_3" identifier = (cast_expression "(long *)*param_3" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_3" * identifier))) ;)) (if_statement "if (param_3 == (long *)0x0) {\n    return;\n  }" if (parenthesized_expression "(param_3 == (long *)0x0)" ( (binary_expression "param_3 == (long *)0x0" identifier == (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    return;\n  }" { (return_statement "return;" return ;) })) (expression_statement "iVar5 = *(int *)(param_1 + 0x130);" (assignment_expression "iVar5 = *(int *)(param_1 + 0x130)" identifier = (pointer_expression "*(int *)(param_1 + 0x130)" * (cast_expression "(int *)(param_1 + 0x130)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x130)" ( (binary_expression "param_1 + 0x130" identifier + number_literal) ))))) ;) (goto_statement "goto joined_r0x004923f2;" goto statement_identifier ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration (sized_type_specifier long) IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration (sized_type_specifier long) (pointer_declarator * IDENT)) , (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor (sized_type_specifier long) (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) ))))) ;) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (return_statement return ;) }))) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (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 (binary_expression IDENT - LIT) < LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (binary_expression LIT >> (parenthesized_expression ( (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT - LIT) ))) & LIT) ))) & LIT) )) != LIT) )) (goto_statement goto statement_identifier ;)) (goto_statement goto statement_identifier ;) })) (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 *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (subscript_expression IDENT [ LIT ])) ;) }) (else_clause else (compound_statement { (labeled_statement statement_identifier : (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 *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (subscript_expression IDENT [ LIT ])) ;) (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 = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (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) ))))) ;) (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) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression & IDENT)) ;) (expression_statement (assignment_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 (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT)) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }))) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (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 == (pointer_expression & 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 = (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 (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT)) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) })) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (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 = (string_literal " string_content ")) ;) (expression_statement (assignment_expression IDENT = (char_literal ' character ')) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (while_statement while (parenthesized_expression ( BOOL )) (compound_statement { (expression_statement (assignment_expression IDENT = (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 (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT)) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = 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 (sized_type_specifier long) (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 == (string_literal " ")) )) (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 *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ;) (expression_statement (call_expression IDENT (argument_list ( (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT) , (string_literal " string_content ") , (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (subscript_expression IDENT [ LIT ]) + LIT) ))) ))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (pointer_expression * IDENT) + LIT) & (unary_expression ~ (pointer_expression * IDENT)))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT & LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT == LIT) )) ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) == LIT)) ;) (if_statement if (parenthesized_expression ( IDENT )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT >> LIT)) ;) })) (if_statement if (parenthesized_expression ( IDENT )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + LIT) )))) ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression LIT - (cast_expression ( (type_descriptor TYPE) ) (call_expression IDENT (argument_list ( (cast_expression ( (type_descriptor TYPE) ) IDENT) , (cast_expression ( (type_descriptor TYPE) ) IDENT) ))))) )) - (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT)) ))) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT)) )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (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 (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (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 (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT)) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }))) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + LIT) )))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (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) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) while (parenthesized_expression ( (binary_expression IDENT != IDENT) )) ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression & IDENT)) ;) (expression_statement (assignment_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 (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT)) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }))) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (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 == (pointer_expression & IDENT)) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT - LIT) < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression LIT >> (parenthesized_expression ( (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT - LIT) ))) & LIT) ))) & LIT)) ;) (while_statement while (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < (binary_expression (pointer_expression * IDENT) - LIT)) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression LIT << (parenthesized_expression ( (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (pointer_expression * IDENT) - LIT) ))) & 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) ;) (return_statement return ;) })) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT ))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) })) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor (sized_type_specifier long) (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) ))))) ;) (goto_statement goto statement_identifier ;) })))
(function_definition "void FUN_004923d0(long param_1,uint param_2,long *param_3,int param_4)\n\n{\n  undefined8 uVar1;\n  undefined8 uVar2;\n  undefined8 uVar3;\n  ulong uVar4;\n  int iVar5;\n  uint uVar6;\n  uint uVar7;\n  long lVar8;\n  long lVar9;\n  uint *puVar10;\n  uint *puVar11;\n  char *pcVar12;\n  uint *__s;\n  undefined *puVar13;\n  int *piVar14;\n  undefined1 *puVar15;\n  undefined1 uVar16;\n  char cVar17;\n  bool bVar18;\n  undefined1 auStack_5b [43];\n  \n  if (param_3 == (long *)0x0) {\n    return;\n  }\n  iVar5 = *(int *)(param_1 + 0x130);\njoined_r0x004923f2:\n  if (iVar5 != 0) {\n    return;\n  }\n  if ((int)param_3[2] == 0) {\n    piVar14 = (int *)param_3[1];\n    iVar5 = *piVar14;\n    if (param_4 == 0) {\n      if (iVar5 - 0x1cU < 0x34) {\n        if ((0xd00000000001fU >> ((ulong)(iVar5 - 0x1cU) & 0x3f) & 1) != 0) goto LAB_00492458;\n        goto LAB_00492416;\n      }\n      *(undefined4 *)(param_3 + 2) = 1;\n      uVar1 = *(undefined8 *)(param_1 + 0x120);\n      *(long *)(param_1 + 0x120) = param_3[3];\n    }\n    else {\nLAB_00492416:\n      *(undefined4 *)(param_3 + 2) = 1;\n      uVar1 = *(undefined8 *)(param_1 + 0x120);\n      *(long *)(param_1 + 0x120) = param_3[3];\n      if (iVar5 == 0x29) {\n        FUN_004920b0(param_1,param_2,piVar14 + 4,*param_3);\n        *(undefined8 *)(param_1 + 0x120) = uVar1;\n        return;\n      }\n    }\n    if (iVar5 == 0x2a) {\n      FUN_00492840(param_1,param_2,piVar14 + 2,*param_3);\n      *(undefined8 *)(param_1 + 0x120) = uVar1;\n      return;\n    }\n    if (iVar5 == 2) {\n      uVar2 = *(undefined8 *)(param_1 + 0x128);\n      uVar3 = *(undefined8 *)(piVar14 + 2);\n      *(undefined8 *)(param_1 + 0x128) = 0;\n      FUN_004916e0(param_1,param_2,uVar3);\n      *(undefined8 *)(param_1 + 0x128) = uVar2;\n      lVar8 = *(long *)(param_1 + 0x100);\n      if ((param_2 & 4) == 0) {\n        puVar15 = &DAT_00589519;\n        uVar16 = 0x3a;\n        while( true ) {\n          if (lVar8 == 0xff) {\n            *(undefined1 *)(param_1 + 0xff) = 0;\n            (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118));\n            *(long *)(param_1 + 0x140) = *(long *)(param_1 + 0x140) + 1;\n            lVar8 = 0;\n            lVar9 = 1;\n          }\n          else {\n            lVar9 = lVar8 + 1;\n          }\n          puVar15 = puVar15 + 1;\n          *(long *)(param_1 + 0x100) = lVar9;\n          *(undefined1 *)(param_1 + lVar8) = uVar16;\n          *(undefined1 *)(param_1 + 0x108) = uVar16;\n          if (puVar15 == &DAT_0058951b) break;\n          uVar16 = *puVar15;\n          lVar8 = lVar9;\n        }\n      }\n      else {\n        lVar9 = lVar8 + 1;\n        if (lVar8 == 0xff) {\n          *(undefined1 *)(param_1 + 0xff) = 0;\n          (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118));\n          *(long *)(param_1 + 0x140) = *(long *)(param_1 + 0x140) + 1;\n          lVar9 = 1;\n          lVar8 = 0;\n        }\n        *(long *)(param_1 + 0x100) = lVar9;\n        *(undefined1 *)(param_1 + lVar8) = 0x2e;\n        *(undefined1 *)(param_1 + 0x108) = 0x2e;\n      }\n      piVar14 = *(int **)(param_3[1] + 0x10);\n      iVar5 = *piVar14;\n      if (iVar5 == 0x46) {\n        pcVar12 = "{default arg#";\n        cVar17 = '{';\n        lVar8 = *(long *)(param_1 + 0x100);\n        while( true ) {\n          pcVar12 = pcVar12 + 1;\n          if (lVar8 == 0xff) {\n            *(undefined1 *)(param_1 + 0xff) = 0;\n            (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118));\n            *(long *)(param_1 + 0x140) = *(long *)(param_1 + 0x140) + 1;\n            lVar8 = 0;\n            lVar9 = 1;\n          }\n          else {\n            lVar9 = lVar8 + 1;\n          }\n          *(long *)(param_1 + 0x100) = lVar9;\n          *(char *)(param_1 + lVar8) = cVar17;\n          *(char *)(param_1 + 0x108) = cVar17;\n          if (pcVar12 == "") break;\n          cVar17 = *pcVar12;\n          lVar8 = lVar9;\n        }\n        __s = (uint *)(auStack_5b + 3);\n        sprintf((char *)__s,"%d",(ulong)(piVar14[4] + 1));\n        puVar11 = __s;\n        do {\n          puVar10 = puVar11;\n          uVar6 = *puVar10 + 0xfefefeff & ~*puVar10;\n          uVar7 = uVar6 & 0x80808080;\n          puVar11 = puVar10 + 1;\n        } while (uVar7 == 0);\n        bVar18 = (uVar6 & 0x8080) == 0;\n        if (bVar18) {\n          uVar7 = uVar7 >> 0x10;\n        }\n        if (bVar18) {\n          puVar11 = (uint *)((long)puVar10 + 6);\n        }\n        lVar8 = *(long *)(param_1 + 0x100);\n        pcVar12 = (char *)((long)puVar11 +\n                          ((-3 - (ulong)CARRY1((byte)uVar7,(byte)uVar7)) - (long)__s));\n        if (pcVar12 != (char *)0x0) {\n          puVar11 = (uint *)((long)__s + (long)pcVar12);\n          lVar9 = lVar8;\n          do {\n            cVar17 = (char)*__s;\n            if (lVar9 == 0xff) {\n              *(undefined1 *)(param_1 + 0xff) = 0;\n              auStack_5b[2] = cVar17;\n              (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118));\n              *(long *)(param_1 + 0x140) = *(long *)(param_1 + 0x140) + 1;\n              lVar8 = 1;\n              lVar9 = 0;\n              cVar17 = auStack_5b[2];\n            }\n            else {\n              lVar8 = lVar9 + 1;\n            }\n            __s = (uint *)((long)__s + 1);\n            *(long *)(param_1 + 0x100) = lVar8;\n            *(char *)(param_1 + lVar9) = cVar17;\n            *(char *)(param_1 + 0x108) = cVar17;\n            lVar9 = lVar8;\n          } while (puVar11 != __s);\n        }\n        puVar13 = &DAT_00589518;\n        uVar16 = 0x7d;\n        while( true ) {\n          if (lVar8 == 0xff) {\n            *(undefined1 *)(param_1 + 0xff) = 0;\n            (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118));\n            *(long *)(param_1 + 0x140) = *(long *)(param_1 + 0x140) + 1;\n            lVar8 = 0;\n            lVar9 = 1;\n          }\n          else {\n            lVar9 = lVar8 + 1;\n          }\n          puVar13 = puVar13 + 1;\n          *(long *)(param_1 + 0x100) = lVar9;\n          *(undefined1 *)(param_1 + lVar8) = uVar16;\n          *(undefined1 *)(param_1 + 0x108) = uVar16;\n          if (puVar13 == &DAT_0058951b) break;\n          uVar16 = *puVar13;\n          lVar8 = lVar9;\n        }\n        piVar14 = *(int **)(piVar14 + 2);\n        iVar5 = *piVar14;\n      }\n      if (iVar5 - 0x1cU < 0x34) {\n        uVar4 = 0xd00000000001fU >> ((ulong)(iVar5 - 0x1cU) & 0x3f) & 1;\n        while (uVar4 != 0) {\n          piVar14 = *(int **)(piVar14 + 2);\n          if (0x33 < *piVar14 - 0x1cU) break;\n          uVar4 = 1L << ((byte)(*piVar14 - 0x1cU) & 0x3f) & 0xd00000000001f;\n        }\n      }\n      FUN_004916e0(param_1,param_2,piVar14);\n      *(undefined8 *)(param_1 + 0x120) = uVar1;\n      return;\n    }\n    FUN_00491770(param_1,param_2);\n    *(undefined8 *)(param_1 + 0x120) = uVar1;\n  }\nLAB_00492458:\n  param_3 = (long *)*param_3;\n  if (param_3 == (long *)0x0) {\n    return;\n  }\n  iVar5 = *(int *)(param_1 + 0x130);\n  goto joined_r0x004923f2;\n}" (primitive_type "void") (function_declarator "FUN_004923d0(long param_1,uint param_2,long *param_3,int param_4)" (identifier "FUN_004923d0") (parameter_list "(long param_1,uint param_2,long *param_3,int param_4)" (( "(") (parameter_declaration "long param_1" (sized_type_specifier "long" (long "long")) (identifier "param_1")) (, ",") (parameter_declaration "uint param_2" (type_identifier "uint") (identifier "param_2")) (, ",") (parameter_declaration "long *param_3" (sized_type_specifier "long" (long "long")) (pointer_declarator "*param_3" (* "*") (identifier "param_3"))) (, ",") (parameter_declaration "int param_4" (primitive_type "int") (identifier "param_4")) () ")"))) (compound_statement "{\n  undefined8 uVar1;\n  undefined8 uVar2;\n  undefined8 uVar3;\n  ulong uVar4;\n  int iVar5;\n  uint uVar6;\n  uint uVar7;\n  long lVar8;\n  long lVar9;\n  uint *puVar10;\n  uint *puVar11;\n  char *pcVar12;\n  uint *__s;\n  undefined *puVar13;\n  int *piVar14;\n  undefined1 *puVar15;\n  undefined1 uVar16;\n  char cVar17;\n  bool bVar18;\n  undefined1 auStack_5b [43];\n  \n  if (param_3 == (long *)0x0) {\n    return;\n  }\n  iVar5 = *(int *)(param_1 + 0x130);\njoined_r0x004923f2:\n  if (iVar5 != 0) {\n    return;\n  }\n  if ((int)param_3[2] == 0) {\n    piVar14 = (int *)param_3[1];\n    iVar5 = *piVar14;\n    if (param_4 == 0) {\n      if (iVar5 - 0x1cU < 0x34) {\n        if ((0xd00000000001fU >> ((ulong)(iVar5 - 0x1cU) & 0x3f) & 1) != 0) goto LAB_00492458;\n        goto LAB_00492416;\n      }\n      *(undefined4 *)(param_3 + 2) = 1;\n      uVar1 = *(undefined8 *)(param_1 + 0x120);\n      *(long *)(param_1 + 0x120) = param_3[3];\n    }\n    else {\nLAB_00492416:\n      *(undefined4 *)(param_3 + 2) = 1;\n      uVar1 = *(undefined8 *)(param_1 + 0x120);\n      *(long *)(param_1 + 0x120) = param_3[3];\n      if (iVar5 == 0x29) {\n        FUN_004920b0(param_1,param_2,piVar14 + 4,*param_3);\n        *(undefined8 *)(param_1 + 0x120) = uVar1;\n        return;\n      }\n    }\n    if (iVar5 == 0x2a) {\n      FUN_00492840(param_1,param_2,piVar14 + 2,*param_3);\n      *(undefined8 *)(param_1 + 0x120) = uVar1;\n      return;\n    }\n    if (iVar5 == 2) {\n      uVar2 = *(undefined8 *)(param_1 + 0x128);\n      uVar3 = *(undefined8 *)(piVar14 + 2);\n      *(undefined8 *)(param_1 + 0x128) = 0;\n      FUN_004916e0(param_1,param_2,uVar3);\n      *(undefined8 *)(param_1 + 0x128) = uVar2;\n      lVar8 = *(long *)(param_1 + 0x100);\n      if ((param_2 & 4) == 0) {\n        puVar15 = &DAT_00589519;\n        uVar16 = 0x3a;\n        while( true ) {\n          if (lVar8 == 0xff) {\n            *(undefined1 *)(param_1 + 0xff) = 0;\n            (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118));\n            *(long *)(param_1 + 0x140) = *(long *)(param_1 + 0x140) + 1;\n            lVar8 = 0;\n            lVar9 = 1;\n          }\n          else {\n            lVar9 = lVar8 + 1;\n          }\n          puVar15 = puVar15 + 1;\n          *(long *)(param_1 + 0x100) = lVar9;\n          *(undefined1 *)(param_1 + lVar8) = uVar16;\n          *(undefined1 *)(param_1 + 0x108) = uVar16;\n          if (puVar15 == &DAT_0058951b) break;\n          uVar16 = *puVar15;\n          lVar8 = lVar9;\n        }\n      }\n      else {\n        lVar9 = lVar8 + 1;\n        if (lVar8 == 0xff) {\n          *(undefined1 *)(param_1 + 0xff) = 0;\n          (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118));\n          *(long *)(param_1 + 0x140) = *(long *)(param_1 + 0x140) + 1;\n          lVar9 = 1;\n          lVar8 = 0;\n        }\n        *(long *)(param_1 + 0x100) = lVar9;\n        *(undefined1 *)(param_1 + lVar8) = 0x2e;\n        *(undefined1 *)(param_1 + 0x108) = 0x2e;\n      }\n      piVar14 = *(int **)(param_3[1] + 0x10);\n      iVar5 = *piVar14;\n      if (iVar5 == 0x46) {\n        pcVar12 = "{default arg#";\n        cVar17 = '{';\n        lVar8 = *(long *)(param_1 + 0x100);\n        while( true ) {\n          pcVar12 = pcVar12 + 1;\n          if (lVar8 == 0xff) {\n            *(undefined1 *)(param_1 + 0xff) = 0;\n            (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118));\n            *(long *)(param_1 + 0x140) = *(long *)(param_1 + 0x140) + 1;\n            lVar8 = 0;\n            lVar9 = 1;\n          }\n          else {\n            lVar9 = lVar8 + 1;\n          }\n          *(long *)(param_1 + 0x100) = lVar9;\n          *(char *)(param_1 + lVar8) = cVar17;\n          *(char *)(param_1 + 0x108) = cVar17;\n          if (pcVar12 == "") break;\n          cVar17 = *pcVar12;\n          lVar8 = lVar9;\n        }\n        __s = (uint *)(auStack_5b + 3);\n        sprintf((char *)__s,"%d",(ulong)(piVar14[4] + 1));\n        puVar11 = __s;\n        do {\n          puVar10 = puVar11;\n          uVar6 = *puVar10 + 0xfefefeff & ~*puVar10;\n          uVar7 = uVar6 & 0x80808080;\n          puVar11 = puVar10 + 1;\n        } while (uVar7 == 0);\n        bVar18 = (uVar6 & 0x8080) == 0;\n        if (bVar18) {\n          uVar7 = uVar7 >> 0x10;\n        }\n        if (bVar18) {\n          puVar11 = (uint *)((long)puVar10 + 6);\n        }\n        lVar8 = *(long *)(param_1 + 0x100);\n        pcVar12 = (char *)((long)puVar11 +\n                          ((-3 - (ulong)CARRY1((byte)uVar7,(byte)uVar7)) - (long)__s));\n        if (pcVar12 != (char *)0x0) {\n          puVar11 = (uint *)((long)__s + (long)pcVar12);\n          lVar9 = lVar8;\n          do {\n            cVar17 = (char)*__s;\n            if (lVar9 == 0xff) {\n              *(undefined1 *)(param_1 + 0xff) = 0;\n              auStack_5b[2] = cVar17;\n              (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118));\n              *(long *)(param_1 + 0x140) = *(long *)(param_1 + 0x140) + 1;\n              lVar8 = 1;\n              lVar9 = 0;\n              cVar17 = auStack_5b[2];\n            }\n            else {\n              lVar8 = lVar9 + 1;\n            }\n            __s = (uint *)((long)__s + 1);\n            *(long *)(param_1 + 0x100) = lVar8;\n            *(char *)(param_1 + lVar9) = cVar17;\n            *(char *)(param_1 + 0x108) = cVar17;\n            lVar9 = lVar8;\n          } while (puVar11 != __s);\n        }\n        puVar13 = &DAT_00589518;\n        uVar16 = 0x7d;\n        while( true ) {\n          if (lVar8 == 0xff) {\n            *(undefined1 *)(param_1 + 0xff) = 0;\n            (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118));\n            *(long *)(param_1 + 0x140) = *(long *)(param_1 + 0x140) + 1;\n            lVar8 = 0;\n            lVar9 = 1;\n          }\n          else {\n            lVar9 = lVar8 + 1;\n          }\n          puVar13 = puVar13 + 1;\n          *(long *)(param_1 + 0x100) = lVar9;\n          *(undefined1 *)(param_1 + lVar8) = uVar16;\n          *(undefined1 *)(param_1 + 0x108) = uVar16;\n          if (puVar13 == &DAT_0058951b) break;\n          uVar16 = *puVar13;\n          lVar8 = lVar9;\n        }\n        piVar14 = *(int **)(piVar14 + 2);\n        iVar5 = *piVar14;\n      }\n      if (iVar5 - 0x1cU < 0x34) {\n        uVar4 = 0xd00000000001fU >> ((ulong)(iVar5 - 0x1cU) & 0x3f) & 1;\n        while (uVar4 != 0) {\n          piVar14 = *(int **)(piVar14 + 2);\n          if (0x33 < *piVar14 - 0x1cU) break;\n          uVar4 = 1L << ((byte)(*piVar14 - 0x1cU) & 0x3f) & 0xd00000000001f;\n        }\n      }\n      FUN_004916e0(param_1,param_2,piVar14);\n      *(undefined8 *)(param_1 + 0x120) = uVar1;\n      return;\n    }\n    FUN_00491770(param_1,param_2);\n    *(undefined8 *)(param_1 + 0x120) = uVar1;\n  }\nLAB_00492458:\n  param_3 = (long *)*param_3;\n  if (param_3 == (long *)0x0) {\n    return;\n  }\n  iVar5 = *(int *)(param_1 + 0x130);\n  goto joined_r0x004923f2;\n}" ({ "{") (declaration "undefined8 uVar1;" (type_identifier "undefined8") (identifier "uVar1") (; ";")) (declaration "undefined8 uVar2;" (type_identifier "undefined8") (identifier "uVar2") (; ";")) (declaration "undefined8 uVar3;" (type_identifier "undefined8") (identifier "uVar3") (; ";")) (declaration "ulong uVar4;" (type_identifier "ulong") (identifier "uVar4") (; ";")) (declaration "int iVar5;" (primitive_type "int") (identifier "iVar5") (; ";")) (declaration "uint uVar6;" (type_identifier "uint") (identifier "uVar6") (; ";")) (declaration "uint uVar7;" (type_identifier "uint") (identifier "uVar7") (; ";")) (declaration "long lVar8;" (sized_type_specifier "long" (long "long")) (identifier "lVar8") (; ";")) (declaration "long lVar9;" (sized_type_specifier "long" (long "long")) (identifier "lVar9") (; ";")) (declaration "uint *puVar10;" (type_identifier "uint") (pointer_declarator "*puVar10" (* "*") (identifier "puVar10")) (; ";")) (declaration "uint *puVar11;" (type_identifier "uint") (pointer_declarator "*puVar11" (* "*") (identifier "puVar11")) (; ";")) (declaration "char *pcVar12;" (primitive_type "char") (pointer_declarator "*pcVar12" (* "*") (identifier "pcVar12")) (; ";")) (declaration "uint *__s;" (type_identifier "uint") (pointer_declarator "*__s" (* "*") (identifier "__s")) (; ";")) (declaration "undefined *puVar13;" (type_identifier "undefined") (pointer_declarator "*puVar13" (* "*") (identifier "puVar13")) (; ";")) (declaration "int *piVar14;" (primitive_type "int") (pointer_declarator "*piVar14" (* "*") (identifier "piVar14")) (; ";")) (declaration "undefined1 *puVar15;" (type_identifier "undefined1") (pointer_declarator "*puVar15" (* "*") (identifier "puVar15")) (; ";")) (declaration "undefined1 uVar16;" (type_identifier "undefined1") (identifier "uVar16") (; ";")) (declaration "char cVar17;" (primitive_type "char") (identifier "cVar17") (; ";")) (declaration "bool bVar18;" (primitive_type "bool") (identifier "bVar18") (; ";")) (declaration "undefined1 auStack_5b [43];" (type_identifier "undefined1") (array_declarator "auStack_5b [43]" (identifier "auStack_5b") ([ "[") (number_literal "43") (] "]")) (; ";")) (if_statement "if (param_3 == (long *)0x0) {\n    return;\n  }" (if "if") (parenthesized_expression "(param_3 == (long *)0x0)" (( "(") (binary_expression "param_3 == (long *)0x0" (identifier "param_3") (== "==") (cast_expression "(long *)0x0" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n    return;\n  }" ({ "{") (return_statement "return;" (return "return") (; ";")) (} "}"))) (expression_statement "iVar5 = *(int *)(param_1 + 0x130);" (assignment_expression "iVar5 = *(int *)(param_1 + 0x130)" (identifier "iVar5") (= "=") (pointer_expression "*(int *)(param_1 + 0x130)" (* "*") (cast_expression "(int *)(param_1 + 0x130)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x130)" (( "(") (binary_expression "param_1 + 0x130" (identifier "param_1") (+ "+") (number_literal "0x130")) () ")"))))) (; ";")) (labeled_statement "joined_r0x004923f2:\n  if (iVar5 != 0) {\n    return;\n  }" (statement_identifier "joined_r0x004923f2") (: ":") (if_statement "if (iVar5 != 0) {\n    return;\n  }" (if "if") (parenthesized_expression "(iVar5 != 0)" (( "(") (binary_expression "iVar5 != 0" (identifier "iVar5") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    return;\n  }" ({ "{") (return_statement "return;" (return "return") (; ";")) (} "}")))) (if_statement "if ((int)param_3[2] == 0) {\n    piVar14 = (int *)param_3[1];\n    iVar5 = *piVar14;\n    if (param_4 == 0) {\n      if (iVar5 - 0x1cU < 0x34) {\n        if ((0xd00000000001fU >> ((ulong)(iVar5 - 0x1cU) & 0x3f) & 1) != 0) goto LAB_00492458;\n        goto LAB_00492416;\n      }\n      *(undefined4 *)(param_3 + 2) = 1;\n      uVar1 = *(undefined8 *)(param_1 + 0x120);\n      *(long *)(param_1 + 0x120) = param_3[3];\n    }\n    else {\nLAB_00492416:\n      *(undefined4 *)(param_3 + 2) = 1;\n      uVar1 = *(undefined8 *)(param_1 + 0x120);\n      *(long *)(param_1 + 0x120) = param_3[3];\n      if (iVar5 == 0x29) {\n        FUN_004920b0(param_1,param_2,piVar14 + 4,*param_3);\n        *(undefined8 *)(param_1 + 0x120) = uVar1;\n        return;\n      }\n    }\n    if (iVar5 == 0x2a) {\n      FUN_00492840(param_1,param_2,piVar14 + 2,*param_3);\n      *(undefined8 *)(param_1 + 0x120) = uVar1;\n      return;\n    }\n    if (iVar5 == 2) {\n      uVar2 = *(undefined8 *)(param_1 + 0x128);\n      uVar3 = *(undefined8 *)(piVar14 + 2);\n      *(undefined8 *)(param_1 + 0x128) = 0;\n      FUN_004916e0(param_1,param_2,uVar3);\n      *(undefined8 *)(param_1 + 0x128) = uVar2;\n      lVar8 = *(long *)(param_1 + 0x100);\n      if ((param_2 & 4) == 0) {\n        puVar15 = &DAT_00589519;\n        uVar16 = 0x3a;\n        while( true ) {\n          if (lVar8 == 0xff) {\n            *(undefined1 *)(param_1 + 0xff) = 0;\n            (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118));\n            *(long *)(param_1 + 0x140) = *(long *)(param_1 + 0x140) + 1;\n            lVar8 = 0;\n            lVar9 = 1;\n          }\n          else {\n            lVar9 = lVar8 + 1;\n          }\n          puVar15 = puVar15 + 1;\n          *(long *)(param_1 + 0x100) = lVar9;\n          *(undefined1 *)(param_1 + lVar8) = uVar16;\n          *(undefined1 *)(param_1 + 0x108) = uVar16;\n          if (puVar15 == &DAT_0058951b) break;\n          uVar16 = *puVar15;\n          lVar8 = lVar9;\n        }\n      }\n      else {\n        lVar9 = lVar8 + 1;\n        if (lVar8 == 0xff) {\n          *(undefined1 *)(param_1 + 0xff) = 0;\n          (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118));\n          *(long *)(param_1 + 0x140) = *(long *)(param_1 + 0x140) + 1;\n          lVar9 = 1;\n          lVar8 = 0;\n        }\n        *(long *)(param_1 + 0x100) = lVar9;\n        *(undefined1 *)(param_1 + lVar8) = 0x2e;\n        *(undefined1 *)(param_1 + 0x108) = 0x2e;\n      }\n      piVar14 = *(int **)(param_3[1] + 0x10);\n      iVar5 = *piVar14;\n      if (iVar5 == 0x46) {\n        pcVar12 = "{default arg#";\n        cVar17 = '{';\n        lVar8 = *(long *)(param_1 + 0x100);\n        while( true ) {\n          pcVar12 = pcVar12 + 1;\n          if (lVar8 == 0xff) {\n            *(undefined1 *)(param_1 + 0xff) = 0;\n            (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118));\n            *(long *)(param_1 + 0x140) = *(long *)(param_1 + 0x140) + 1;\n            lVar8 = 0;\n            lVar9 = 1;\n          }\n          else {\n            lVar9 = lVar8 + 1;\n          }\n          *(long *)(param_1 + 0x100) = lVar9;\n          *(char *)(param_1 + lVar8) = cVar17;\n          *(char *)(param_1 + 0x108) = cVar17;\n          if (pcVar12 == "") break;\n          cVar17 = *pcVar12;\n          lVar8 = lVar9;\n        }\n        __s = (uint *)(auStack_5b + 3);\n        sprintf((char *)__s,"%d",(ulong)(piVar14[4] + 1));\n        puVar11 = __s;\n        do {\n          puVar10 = puVar11;\n          uVar6 = *puVar10 + 0xfefefeff & ~*puVar10;\n          uVar7 = uVar6 & 0x80808080;\n          puVar11 = puVar10 + 1;\n        } while (uVar7 == 0);\n        bVar18 = (uVar6 & 0x8080) == 0;\n        if (bVar18) {\n          uVar7 = uVar7 >> 0x10;\n        }\n        if (bVar18) {\n          puVar11 = (uint *)((long)puVar10 + 6);\n        }\n        lVar8 = *(long *)(param_1 + 0x100);\n        pcVar12 = (char *)((long)puVar11 +\n                          ((-3 - (ulong)CARRY1((byte)uVar7,(byte)uVar7)) - (long)__s));\n        if (pcVar12 != (char *)0x0) {\n          puVar11 = (uint *)((long)__s + (long)pcVar12);\n          lVar9 = lVar8;\n          do {\n            cVar17 = (char)*__s;\n            if (lVar9 == 0xff) {\n              *(undefined1 *)(param_1 + 0xff) = 0;\n              auStack_5b[2] = cVar17;\n              (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118));\n              *(long *)(param_1 + 0x140) = *(long *)(param_1 + 0x140) + 1;\n              lVar8 = 1;\n              lVar9 = 0;\n              cVar17 = auStack_5b[2];\n            }\n            else {\n              lVar8 = lVar9 + 1;\n            }\n            __s = (uint *)((long)__s + 1);\n            *(long *)(param_1 + 0x100) = lVar8;\n            *(char *)(param_1 + lVar9) = cVar17;\n            *(char *)(param_1 + 0x108) = cVar17;\n            lVar9 = lVar8;\n          } while (puVar11 != __s);\n        }\n        puVar13 = &DAT_00589518;\n        uVar16 = 0x7d;\n        while( true ) {\n          if (lVar8 == 0xff) {\n            *(undefined1 *)(param_1 + 0xff) = 0;\n            (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118));\n            *(long *)(param_1 + 0x140) = *(long *)(param_1 + 0x140) + 1;\n            lVar8 = 0;\n            lVar9 = 1;\n          }\n          else {\n            lVar9 = lVar8 + 1;\n          }\n          puVar13 = puVar13 + 1;\n          *(long *)(param_1 + 0x100) = lVar9;\n          *(undefined1 *)(param_1 + lVar8) = uVar16;\n          *(undefined1 *)(param_1 + 0x108) = uVar16;\n          if (puVar13 == &DAT_0058951b) break;\n          uVar16 = *puVar13;\n          lVar8 = lVar9;\n        }\n        piVar14 = *(int **)(piVar14 + 2);\n        iVar5 = *piVar14;\n      }\n      if (iVar5 - 0x1cU < 0x34) {\n        uVar4 = 0xd00000000001fU >> ((ulong)(iVar5 - 0x1cU) & 0x3f) & 1;\n        while (uVar4 != 0) {\n          piVar14 = *(int **)(piVar14 + 2);\n          if (0x33 < *piVar14 - 0x1cU) break;\n          uVar4 = 1L << ((byte)(*piVar14 - 0x1cU) & 0x3f) & 0xd00000000001f;\n        }\n      }\n      FUN_004916e0(param_1,param_2,piVar14);\n      *(undefined8 *)(param_1 + 0x120) = uVar1;\n      return;\n    }\n    FUN_00491770(param_1,param_2);\n    *(undefined8 *)(param_1 + 0x120) = uVar1;\n  }" (if "if") (parenthesized_expression "((int)param_3[2] == 0)" (( "(") (binary_expression "(int)param_3[2] == 0" (cast_expression "(int)param_3[2]" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (subscript_expression "param_3[2]" (identifier "param_3") ([ "[") (number_literal "2") (] "]"))) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    piVar14 = (int *)param_3[1];\n    iVar5 = *piVar14;\n    if (param_4 == 0) {\n      if (iVar5 - 0x1cU < 0x34) {\n        if ((0xd00000000001fU >> ((ulong)(iVar5 - 0x1cU) & 0x3f) & 1) != 0) goto LAB_00492458;\n        goto LAB_00492416;\n      }\n      *(undefined4 *)(param_3 + 2) = 1;\n      uVar1 = *(undefined8 *)(param_1 + 0x120);\n      *(long *)(param_1 + 0x120) = param_3[3];\n    }\n    else {\nLAB_00492416:\n      *(undefined4 *)(param_3 + 2) = 1;\n      uVar1 = *(undefined8 *)(param_1 + 0x120);\n      *(long *)(param_1 + 0x120) = param_3[3];\n      if (iVar5 == 0x29) {\n        FUN_004920b0(param_1,param_2,piVar14 + 4,*param_3);\n        *(undefined8 *)(param_1 + 0x120) = uVar1;\n        return;\n      }\n    }\n    if (iVar5 == 0x2a) {\n      FUN_00492840(param_1,param_2,piVar14 + 2,*param_3);\n      *(undefined8 *)(param_1 + 0x120) = uVar1;\n      return;\n    }\n    if (iVar5 == 2) {\n      uVar2 = *(undefined8 *)(param_1 + 0x128);\n      uVar3 = *(undefined8 *)(piVar14 + 2);\n      *(undefined8 *)(param_1 + 0x128) = 0;\n      FUN_004916e0(param_1,param_2,uVar3);\n      *(undefined8 *)(param_1 + 0x128) = uVar2;\n      lVar8 = *(long *)(param_1 + 0x100);\n      if ((param_2 & 4) == 0) {\n        puVar15 = &DAT_00589519;\n        uVar16 = 0x3a;\n        while( true ) {\n          if (lVar8 == 0xff) {\n            *(undefined1 *)(param_1 + 0xff) = 0;\n            (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118));\n            *(long *)(param_1 + 0x140) = *(long *)(param_1 + 0x140) + 1;\n            lVar8 = 0;\n            lVar9 = 1;\n          }\n          else {\n            lVar9 = lVar8 + 1;\n          }\n          puVar15 = puVar15 + 1;\n          *(long *)(param_1 + 0x100) = lVar9;\n          *(undefined1 *)(param_1 + lVar8) = uVar16;\n          *(undefined1 *)(param_1 + 0x108) = uVar16;\n          if (puVar15 == &DAT_0058951b) break;\n          uVar16 = *puVar15;\n          lVar8 = lVar9;\n        }\n      }\n      else {\n        lVar9 = lVar8 + 1;\n        if (lVar8 == 0xff) {\n          *(undefined1 *)(param_1 + 0xff) = 0;\n          (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118));\n          *(long *)(param_1 + 0x140) = *(long *)(param_1 + 0x140) + 1;\n          lVar9 = 1;\n          lVar8 = 0;\n        }\n        *(long *)(param_1 + 0x100) = lVar9;\n        *(undefined1 *)(param_1 + lVar8) = 0x2e;\n        *(undefined1 *)(param_1 + 0x108) = 0x2e;\n      }\n      piVar14 = *(int **)(param_3[1] + 0x10);\n      iVar5 = *piVar14;\n      if (iVar5 == 0x46) {\n        pcVar12 = "{default arg#";\n        cVar17 = '{';\n        lVar8 = *(long *)(param_1 + 0x100);\n        while( true ) {\n          pcVar12 = pcVar12 + 1;\n          if (lVar8 == 0xff) {\n            *(undefined1 *)(param_1 + 0xff) = 0;\n            (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118));\n            *(long *)(param_1 + 0x140) = *(long *)(param_1 + 0x140) + 1;\n            lVar8 = 0;\n            lVar9 = 1;\n          }\n          else {\n            lVar9 = lVar8 + 1;\n          }\n          *(long *)(param_1 + 0x100) = lVar9;\n          *(char *)(param_1 + lVar8) = cVar17;\n          *(char *)(param_1 + 0x108) = cVar17;\n          if (pcVar12 == "") break;\n          cVar17 = *pcVar12;\n          lVar8 = lVar9;\n        }\n        __s = (uint *)(auStack_5b + 3);\n        sprintf((char *)__s,"%d",(ulong)(piVar14[4] + 1));\n        puVar11 = __s;\n        do {\n          puVar10 = puVar11;\n          uVar6 = *puVar10 + 0xfefefeff & ~*puVar10;\n          uVar7 = uVar6 & 0x80808080;\n          puVar11 = puVar10 + 1;\n        } while (uVar7 == 0);\n        bVar18 = (uVar6 & 0x8080) == 0;\n        if (bVar18) {\n          uVar7 = uVar7 >> 0x10;\n        }\n        if (bVar18) {\n          puVar11 = (uint *)((long)puVar10 + 6);\n        }\n        lVar8 = *(long *)(param_1 + 0x100);\n        pcVar12 = (char *)((long)puVar11 +\n                          ((-3 - (ulong)CARRY1((byte)uVar7,(byte)uVar7)) - (long)__s));\n        if (pcVar12 != (char *)0x0) {\n          puVar11 = (uint *)((long)__s + (long)pcVar12);\n          lVar9 = lVar8;\n          do {\n            cVar17 = (char)*__s;\n            if (lVar9 == 0xff) {\n              *(undefined1 *)(param_1 + 0xff) = 0;\n              auStack_5b[2] = cVar17;\n              (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118));\n              *(long *)(param_1 + 0x140) = *(long *)(param_1 + 0x140) + 1;\n              lVar8 = 1;\n              lVar9 = 0;\n              cVar17 = auStack_5b[2];\n            }\n            else {\n              lVar8 = lVar9 + 1;\n            }\n            __s = (uint *)((long)__s + 1);\n            *(long *)(param_1 + 0x100) = lVar8;\n            *(char *)(param_1 + lVar9) = cVar17;\n            *(char *)(param_1 + 0x108) = cVar17;\n            lVar9 = lVar8;\n          } while (puVar11 != __s);\n        }\n        puVar13 = &DAT_00589518;\n        uVar16 = 0x7d;\n        while( true ) {\n          if (lVar8 == 0xff) {\n            *(undefined1 *)(param_1 + 0xff) = 0;\n            (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118));\n            *(long *)(param_1 + 0x140) = *(long *)(param_1 + 0x140) + 1;\n            lVar8 = 0;\n            lVar9 = 1;\n          }\n          else {\n            lVar9 = lVar8 + 1;\n          }\n          puVar13 = puVar13 + 1;\n          *(long *)(param_1 + 0x100) = lVar9;\n          *(undefined1 *)(param_1 + lVar8) = uVar16;\n          *(undefined1 *)(param_1 + 0x108) = uVar16;\n          if (puVar13 == &DAT_0058951b) break;\n          uVar16 = *puVar13;\n          lVar8 = lVar9;\n        }\n        piVar14 = *(int **)(piVar14 + 2);\n        iVar5 = *piVar14;\n      }\n      if (iVar5 - 0x1cU < 0x34) {\n        uVar4 = 0xd00000000001fU >> ((ulong)(iVar5 - 0x1cU) & 0x3f) & 1;\n        while (uVar4 != 0) {\n          piVar14 = *(int **)(piVar14 + 2);\n          if (0x33 < *piVar14 - 0x1cU) break;\n          uVar4 = 1L << ((byte)(*piVar14 - 0x1cU) & 0x3f) & 0xd00000000001f;\n        }\n      }\n      FUN_004916e0(param_1,param_2,piVar14);\n      *(undefined8 *)(param_1 + 0x120) = uVar1;\n      return;\n    }\n    FUN_00491770(param_1,param_2);\n    *(undefined8 *)(param_1 + 0x120) = uVar1;\n  }" ({ "{") (expression_statement "piVar14 = (int *)param_3[1];" (assignment_expression "piVar14 = (int *)param_3[1]" (identifier "piVar14") (= "=") (cast_expression "(int *)param_3[1]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_3[1]" (identifier "param_3") ([ "[") (number_literal "1") (] "]")))) (; ";")) (expression_statement "iVar5 = *piVar14;" (assignment_expression "iVar5 = *piVar14" (identifier "iVar5") (= "=") (pointer_expression "*piVar14" (* "*") (identifier "piVar14"))) (; ";")) (if_statement "if (param_4 == 0) {\n      if (iVar5 - 0x1cU < 0x34) {\n        if ((0xd00000000001fU >> ((ulong)(iVar5 - 0x1cU) & 0x3f) & 1) != 0) goto LAB_00492458;\n        goto LAB_00492416;\n      }\n      *(undefined4 *)(param_3 + 2) = 1;\n      uVar1 = *(undefined8 *)(param_1 + 0x120);\n      *(long *)(param_1 + 0x120) = param_3[3];\n    }\n    else {\nLAB_00492416:\n      *(undefined4 *)(param_3 + 2) = 1;\n      uVar1 = *(undefined8 *)(param_1 + 0x120);\n      *(long *)(param_1 + 0x120) = param_3[3];\n      if (iVar5 == 0x29) {\n        FUN_004920b0(param_1,param_2,piVar14 + 4,*param_3);\n        *(undefined8 *)(param_1 + 0x120) = uVar1;\n        return;\n      }\n    }" (if "if") (parenthesized_expression "(param_4 == 0)" (( "(") (binary_expression "param_4 == 0" (identifier "param_4") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      if (iVar5 - 0x1cU < 0x34) {\n        if ((0xd00000000001fU >> ((ulong)(iVar5 - 0x1cU) & 0x3f) & 1) != 0) goto LAB_00492458;\n        goto LAB_00492416;\n      }\n      *(undefined4 *)(param_3 + 2) = 1;\n      uVar1 = *(undefined8 *)(param_1 + 0x120);\n      *(long *)(param_1 + 0x120) = param_3[3];\n    }" ({ "{") (if_statement "if (iVar5 - 0x1cU < 0x34) {\n        if ((0xd00000000001fU >> ((ulong)(iVar5 - 0x1cU) & 0x3f) & 1) != 0) goto LAB_00492458;\n        goto LAB_00492416;\n      }" (if "if") (parenthesized_expression "(iVar5 - 0x1cU < 0x34)" (( "(") (binary_expression "iVar5 - 0x1cU < 0x34" (binary_expression "iVar5 - 0x1cU" (identifier "iVar5") (- "-") (number_literal "0x1cU")) (< "<") (number_literal "0x34")) () ")")) (compound_statement "{\n        if ((0xd00000000001fU >> ((ulong)(iVar5 - 0x1cU) & 0x3f) & 1) != 0) goto LAB_00492458;\n        goto LAB_00492416;\n      }" ({ "{") (if_statement "if ((0xd00000000001fU >> ((ulong)(iVar5 - 0x1cU) & 0x3f) & 1) != 0) goto LAB_00492458;" (if "if") (parenthesized_expression "((0xd00000000001fU >> ((ulong)(iVar5 - 0x1cU) & 0x3f) & 1) != 0)" (( "(") (binary_expression "(0xd00000000001fU >> ((ulong)(iVar5 - 0x1cU) & 0x3f) & 1) != 0" (parenthesized_expression "(0xd00000000001fU >> ((ulong)(iVar5 - 0x1cU) & 0x3f) & 1)" (( "(") (binary_expression "0xd00000000001fU >> ((ulong)(iVar5 - 0x1cU) & 0x3f) & 1" (binary_expression "0xd00000000001fU >> ((ulong)(iVar5 - 0x1cU) & 0x3f)" (number_literal "0xd00000000001fU") (>> ">>") (parenthesized_expression "((ulong)(iVar5 - 0x1cU) & 0x3f)" (( "(") (binary_expression "(ulong)(iVar5 - 0x1cU) & 0x3f" (call_expression "(ulong)(iVar5 - 0x1cU)" (parenthesized_expression "(ulong)" (( "(") (identifier "ulong") () ")")) (argument_list "(iVar5 - 0x1cU)" (( "(") (binary_expression "iVar5 - 0x1cU" (identifier "iVar5") (- "-") (number_literal "0x1cU")) () ")"))) (& "&") (number_literal "0x3f")) () ")"))) (& "&") (number_literal "1")) () ")")) (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_00492458;" (goto "goto") (statement_identifier "LAB_00492458") (; ";"))) (goto_statement "goto LAB_00492416;" (goto "goto") (statement_identifier "LAB_00492416") (; ";")) (} "}"))) (expression_statement "*(undefined4 *)(param_3 + 2) = 1;" (assignment_expression "*(undefined4 *)(param_3 + 2) = 1" (pointer_expression "*(undefined4 *)(param_3 + 2)" (* "*") (cast_expression "(undefined4 *)(param_3 + 2)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + 2)" (( "(") (binary_expression "param_3 + 2" (identifier "param_3") (+ "+") (number_literal "2")) () ")")))) (= "=") (number_literal "1")) (; ";")) (expression_statement "uVar1 = *(undefined8 *)(param_1 + 0x120);" (assignment_expression "uVar1 = *(undefined8 *)(param_1 + 0x120)" (identifier "uVar1") (= "=") (pointer_expression "*(undefined8 *)(param_1 + 0x120)" (* "*") (cast_expression "(undefined8 *)(param_1 + 0x120)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x120)" (( "(") (binary_expression "param_1 + 0x120" (identifier "param_1") (+ "+") (number_literal "0x120")) () ")"))))) (; ";")) (expression_statement "*(long *)(param_1 + 0x120) = param_3[3];" (assignment_expression "*(long *)(param_1 + 0x120) = param_3[3]" (pointer_expression "*(long *)(param_1 + 0x120)" (* "*") (cast_expression "(long *)(param_1 + 0x120)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x120)" (( "(") (binary_expression "param_1 + 0x120" (identifier "param_1") (+ "+") (number_literal "0x120")) () ")")))) (= "=") (subscript_expression "param_3[3]" (identifier "param_3") ([ "[") (number_literal "3") (] "]"))) (; ";")) (} "}")) (else_clause "else {\nLAB_00492416:\n      *(undefined4 *)(param_3 + 2) = 1;\n      uVar1 = *(undefined8 *)(param_1 + 0x120);\n      *(long *)(param_1 + 0x120) = param_3[3];\n      if (iVar5 == 0x29) {\n        FUN_004920b0(param_1,param_2,piVar14 + 4,*param_3);\n        *(undefined8 *)(param_1 + 0x120) = uVar1;\n        return;\n      }\n    }" (else "else") (compound_statement "{\nLAB_00492416:\n      *(undefined4 *)(param_3 + 2) = 1;\n      uVar1 = *(undefined8 *)(param_1 + 0x120);\n      *(long *)(param_1 + 0x120) = param_3[3];\n      if (iVar5 == 0x29) {\n        FUN_004920b0(param_1,param_2,piVar14 + 4,*param_3);\n        *(undefined8 *)(param_1 + 0x120) = uVar1;\n        return;\n      }\n    }" ({ "{") (labeled_statement "LAB_00492416:\n      *(undefined4 *)(param_3 + 2) = 1;" (statement_identifier "LAB_00492416") (: ":") (expression_statement "*(undefined4 *)(param_3 + 2) = 1;" (assignment_expression "*(undefined4 *)(param_3 + 2) = 1" (pointer_expression "*(undefined4 *)(param_3 + 2)" (* "*") (cast_expression "(undefined4 *)(param_3 + 2)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + 2)" (( "(") (binary_expression "param_3 + 2" (identifier "param_3") (+ "+") (number_literal "2")) () ")")))) (= "=") (number_literal "1")) (; ";"))) (expression_statement "uVar1 = *(undefined8 *)(param_1 + 0x120);" (assignment_expression "uVar1 = *(undefined8 *)(param_1 + 0x120)" (identifier "uVar1") (= "=") (pointer_expression "*(undefined8 *)(param_1 + 0x120)" (* "*") (cast_expression "(undefined8 *)(param_1 + 0x120)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x120)" (( "(") (binary_expression "param_1 + 0x120" (identifier "param_1") (+ "+") (number_literal "0x120")) () ")"))))) (; ";")) (expression_statement "*(long *)(param_1 + 0x120) = param_3[3];" (assignment_expression "*(long *)(param_1 + 0x120) = param_3[3]" (pointer_expression "*(long *)(param_1 + 0x120)" (* "*") (cast_expression "(long *)(param_1 + 0x120)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x120)" (( "(") (binary_expression "param_1 + 0x120" (identifier "param_1") (+ "+") (number_literal "0x120")) () ")")))) (= "=") (subscript_expression "param_3[3]" (identifier "param_3") ([ "[") (number_literal "3") (] "]"))) (; ";")) (if_statement "if (iVar5 == 0x29) {\n        FUN_004920b0(param_1,param_2,piVar14 + 4,*param_3);\n        *(undefined8 *)(param_1 + 0x120) = uVar1;\n        return;\n      }" (if "if") (parenthesized_expression "(iVar5 == 0x29)" (( "(") (binary_expression "iVar5 == 0x29" (identifier "iVar5") (== "==") (number_literal "0x29")) () ")")) (compound_statement "{\n        FUN_004920b0(param_1,param_2,piVar14 + 4,*param_3);\n        *(undefined8 *)(param_1 + 0x120) = uVar1;\n        return;\n      }" ({ "{") (expression_statement "FUN_004920b0(param_1,param_2,piVar14 + 4,*param_3);" (call_expression "FUN_004920b0(param_1,param_2,piVar14 + 4,*param_3)" (identifier "FUN_004920b0") (argument_list "(param_1,param_2,piVar14 + 4,*param_3)" (( "(") (identifier "param_1") (, ",") (identifier "param_2") (, ",") (binary_expression "piVar14 + 4" (identifier "piVar14") (+ "+") (number_literal "4")) (, ",") (pointer_expression "*param_3" (* "*") (identifier "param_3")) () ")"))) (; ";")) (expression_statement "*(undefined8 *)(param_1 + 0x120) = uVar1;" (assignment_expression "*(undefined8 *)(param_1 + 0x120) = uVar1" (pointer_expression "*(undefined8 *)(param_1 + 0x120)" (* "*") (cast_expression "(undefined8 *)(param_1 + 0x120)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x120)" (( "(") (binary_expression "param_1 + 0x120" (identifier "param_1") (+ "+") (number_literal "0x120")) () ")")))) (= "=") (identifier "uVar1")) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}"))) (} "}")))) (if_statement "if (iVar5 == 0x2a) {\n      FUN_00492840(param_1,param_2,piVar14 + 2,*param_3);\n      *(undefined8 *)(param_1 + 0x120) = uVar1;\n      return;\n    }" (if "if") (parenthesized_expression "(iVar5 == 0x2a)" (( "(") (binary_expression "iVar5 == 0x2a" (identifier "iVar5") (== "==") (number_literal "0x2a")) () ")")) (compound_statement "{\n      FUN_00492840(param_1,param_2,piVar14 + 2,*param_3);\n      *(undefined8 *)(param_1 + 0x120) = uVar1;\n      return;\n    }" ({ "{") (expression_statement "FUN_00492840(param_1,param_2,piVar14 + 2,*param_3);" (call_expression "FUN_00492840(param_1,param_2,piVar14 + 2,*param_3)" (identifier "FUN_00492840") (argument_list "(param_1,param_2,piVar14 + 2,*param_3)" (( "(") (identifier "param_1") (, ",") (identifier "param_2") (, ",") (binary_expression "piVar14 + 2" (identifier "piVar14") (+ "+") (number_literal "2")) (, ",") (pointer_expression "*param_3" (* "*") (identifier "param_3")) () ")"))) (; ";")) (expression_statement "*(undefined8 *)(param_1 + 0x120) = uVar1;" (assignment_expression "*(undefined8 *)(param_1 + 0x120) = uVar1" (pointer_expression "*(undefined8 *)(param_1 + 0x120)" (* "*") (cast_expression "(undefined8 *)(param_1 + 0x120)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x120)" (( "(") (binary_expression "param_1 + 0x120" (identifier "param_1") (+ "+") (number_literal "0x120")) () ")")))) (= "=") (identifier "uVar1")) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}"))) (if_statement "if (iVar5 == 2) {\n      uVar2 = *(undefined8 *)(param_1 + 0x128);\n      uVar3 = *(undefined8 *)(piVar14 + 2);\n      *(undefined8 *)(param_1 + 0x128) = 0;\n      FUN_004916e0(param_1,param_2,uVar3);\n      *(undefined8 *)(param_1 + 0x128) = uVar2;\n      lVar8 = *(long *)(param_1 + 0x100);\n      if ((param_2 & 4) == 0) {\n        puVar15 = &DAT_00589519;\n        uVar16 = 0x3a;\n        while( true ) {\n          if (lVar8 == 0xff) {\n            *(undefined1 *)(param_1 + 0xff) = 0;\n            (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118));\n            *(long *)(param_1 + 0x140) = *(long *)(param_1 + 0x140) + 1;\n            lVar8 = 0;\n            lVar9 = 1;\n          }\n          else {\n            lVar9 = lVar8 + 1;\n          }\n          puVar15 = puVar15 + 1;\n          *(long *)(param_1 + 0x100) = lVar9;\n          *(undefined1 *)(param_1 + lVar8) = uVar16;\n          *(undefined1 *)(param_1 + 0x108) = uVar16;\n          if (puVar15 == &DAT_0058951b) break;\n          uVar16 = *puVar15;\n          lVar8 = lVar9;\n        }\n      }\n      else {\n        lVar9 = lVar8 + 1;\n        if (lVar8 == 0xff) {\n          *(undefined1 *)(param_1 + 0xff) = 0;\n          (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118));\n          *(long *)(param_1 + 0x140) = *(long *)(param_1 + 0x140) + 1;\n          lVar9 = 1;\n          lVar8 = 0;\n        }\n        *(long *)(param_1 + 0x100) = lVar9;\n        *(undefined1 *)(param_1 + lVar8) = 0x2e;\n        *(undefined1 *)(param_1 + 0x108) = 0x2e;\n      }\n      piVar14 = *(int **)(param_3[1] + 0x10);\n      iVar5 = *piVar14;\n      if (iVar5 == 0x46) {\n        pcVar12 = "{default arg#";\n        cVar17 = '{';\n        lVar8 = *(long *)(param_1 + 0x100);\n        while( true ) {\n          pcVar12 = pcVar12 + 1;\n          if (lVar8 == 0xff) {\n            *(undefined1 *)(param_1 + 0xff) = 0;\n            (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118));\n            *(long *)(param_1 + 0x140) = *(long *)(param_1 + 0x140) + 1;\n            lVar8 = 0;\n            lVar9 = 1;\n          }\n          else {\n            lVar9 = lVar8 + 1;\n          }\n          *(long *)(param_1 + 0x100) = lVar9;\n          *(char *)(param_1 + lVar8) = cVar17;\n          *(char *)(param_1 + 0x108) = cVar17;\n          if (pcVar12 == "") break;\n          cVar17 = *pcVar12;\n          lVar8 = lVar9;\n        }\n        __s = (uint *)(auStack_5b + 3);\n        sprintf((char *)__s,"%d",(ulong)(piVar14[4] + 1));\n        puVar11 = __s;\n        do {\n          puVar10 = puVar11;\n          uVar6 = *puVar10 + 0xfefefeff & ~*puVar10;\n          uVar7 = uVar6 & 0x80808080;\n          puVar11 = puVar10 + 1;\n        } while (uVar7 == 0);\n        bVar18 = (uVar6 & 0x8080) == 0;\n        if (bVar18) {\n          uVar7 = uVar7 >> 0x10;\n        }\n        if (bVar18) {\n          puVar11 = (uint *)((long)puVar10 + 6);\n        }\n        lVar8 = *(long *)(param_1 + 0x100);\n        pcVar12 = (char *)((long)puVar11 +\n                          ((-3 - (ulong)CARRY1((byte)uVar7,(byte)uVar7)) - (long)__s));\n        if (pcVar12 != (char *)0x0) {\n          puVar11 = (uint *)((long)__s + (long)pcVar12);\n          lVar9 = lVar8;\n          do {\n            cVar17 = (char)*__s;\n            if (lVar9 == 0xff) {\n              *(undefined1 *)(param_1 + 0xff) = 0;\n              auStack_5b[2] = cVar17;\n              (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118));\n              *(long *)(param_1 + 0x140) = *(long *)(param_1 + 0x140) + 1;\n              lVar8 = 1;\n              lVar9 = 0;\n              cVar17 = auStack_5b[2];\n            }\n            else {\n              lVar8 = lVar9 + 1;\n            }\n            __s = (uint *)((long)__s + 1);\n            *(long *)(param_1 + 0x100) = lVar8;\n            *(char *)(param_1 + lVar9) = cVar17;\n            *(char *)(param_1 + 0x108) = cVar17;\n            lVar9 = lVar8;\n          } while (puVar11 != __s);\n        }\n        puVar13 = &DAT_00589518;\n        uVar16 = 0x7d;\n        while( true ) {\n          if (lVar8 == 0xff) {\n            *(undefined1 *)(param_1 + 0xff) = 0;\n            (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118));\n            *(long *)(param_1 + 0x140) = *(long *)(param_1 + 0x140) + 1;\n            lVar8 = 0;\n            lVar9 = 1;\n          }\n          else {\n            lVar9 = lVar8 + 1;\n          }\n          puVar13 = puVar13 + 1;\n          *(long *)(param_1 + 0x100) = lVar9;\n          *(undefined1 *)(param_1 + lVar8) = uVar16;\n          *(undefined1 *)(param_1 + 0x108) = uVar16;\n          if (puVar13 == &DAT_0058951b) break;\n          uVar16 = *puVar13;\n          lVar8 = lVar9;\n        }\n        piVar14 = *(int **)(piVar14 + 2);\n        iVar5 = *piVar14;\n      }\n      if (iVar5 - 0x1cU < 0x34) {\n        uVar4 = 0xd00000000001fU >> ((ulong)(iVar5 - 0x1cU) & 0x3f) & 1;\n        while (uVar4 != 0) {\n          piVar14 = *(int **)(piVar14 + 2);\n          if (0x33 < *piVar14 - 0x1cU) break;\n          uVar4 = 1L << ((byte)(*piVar14 - 0x1cU) & 0x3f) & 0xd00000000001f;\n        }\n      }\n      FUN_004916e0(param_1,param_2,piVar14);\n      *(undefined8 *)(param_1 + 0x120) = uVar1;\n      return;\n    }" (if "if") (parenthesized_expression "(iVar5 == 2)" (( "(") (binary_expression "iVar5 == 2" (identifier "iVar5") (== "==") (number_literal "2")) () ")")) (compound_statement "{\n      uVar2 = *(undefined8 *)(param_1 + 0x128);\n      uVar3 = *(undefined8 *)(piVar14 + 2);\n      *(undefined8 *)(param_1 + 0x128) = 0;\n      FUN_004916e0(param_1,param_2,uVar3);\n      *(undefined8 *)(param_1 + 0x128) = uVar2;\n      lVar8 = *(long *)(param_1 + 0x100);\n      if ((param_2 & 4) == 0) {\n        puVar15 = &DAT_00589519;\n        uVar16 = 0x3a;\n        while( true ) {\n          if (lVar8 == 0xff) {\n            *(undefined1 *)(param_1 + 0xff) = 0;\n            (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118));\n            *(long *)(param_1 + 0x140) = *(long *)(param_1 + 0x140) + 1;\n            lVar8 = 0;\n            lVar9 = 1;\n          }\n          else {\n            lVar9 = lVar8 + 1;\n          }\n          puVar15 = puVar15 + 1;\n          *(long *)(param_1 + 0x100) = lVar9;\n          *(undefined1 *)(param_1 + lVar8) = uVar16;\n          *(undefined1 *)(param_1 + 0x108) = uVar16;\n          if (puVar15 == &DAT_0058951b) break;\n          uVar16 = *puVar15;\n          lVar8 = lVar9;\n        }\n      }\n      else {\n        lVar9 = lVar8 + 1;\n        if (lVar8 == 0xff) {\n          *(undefined1 *)(param_1 + 0xff) = 0;\n          (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118));\n          *(long *)(param_1 + 0x140) = *(long *)(param_1 + 0x140) + 1;\n          lVar9 = 1;\n          lVar8 = 0;\n        }\n        *(long *)(param_1 + 0x100) = lVar9;\n        *(undefined1 *)(param_1 + lVar8) = 0x2e;\n        *(undefined1 *)(param_1 + 0x108) = 0x2e;\n      }\n      piVar14 = *(int **)(param_3[1] + 0x10);\n      iVar5 = *piVar14;\n      if (iVar5 == 0x46) {\n        pcVar12 = "{default arg#";\n        cVar17 = '{';\n        lVar8 = *(long *)(param_1 + 0x100);\n        while( true ) {\n          pcVar12 = pcVar12 + 1;\n          if (lVar8 == 0xff) {\n            *(undefined1 *)(param_1 + 0xff) = 0;\n            (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118));\n            *(long *)(param_1 + 0x140) = *(long *)(param_1 + 0x140) + 1;\n            lVar8 = 0;\n            lVar9 = 1;\n          }\n          else {\n            lVar9 = lVar8 + 1;\n          }\n          *(long *)(param_1 + 0x100) = lVar9;\n          *(char *)(param_1 + lVar8) = cVar17;\n          *(char *)(param_1 + 0x108) = cVar17;\n          if (pcVar12 == "") break;\n          cVar17 = *pcVar12;\n          lVar8 = lVar9;\n        }\n        __s = (uint *)(auStack_5b + 3);\n        sprintf((char *)__s,"%d",(ulong)(piVar14[4] + 1));\n        puVar11 = __s;\n        do {\n          puVar10 = puVar11;\n          uVar6 = *puVar10 + 0xfefefeff & ~*puVar10;\n          uVar7 = uVar6 & 0x80808080;\n          puVar11 = puVar10 + 1;\n        } while (uVar7 == 0);\n        bVar18 = (uVar6 & 0x8080) == 0;\n        if (bVar18) {\n          uVar7 = uVar7 >> 0x10;\n        }\n        if (bVar18) {\n          puVar11 = (uint *)((long)puVar10 + 6);\n        }\n        lVar8 = *(long *)(param_1 + 0x100);\n        pcVar12 = (char *)((long)puVar11 +\n                          ((-3 - (ulong)CARRY1((byte)uVar7,(byte)uVar7)) - (long)__s));\n        if (pcVar12 != (char *)0x0) {\n          puVar11 = (uint *)((long)__s + (long)pcVar12);\n          lVar9 = lVar8;\n          do {\n            cVar17 = (char)*__s;\n            if (lVar9 == 0xff) {\n              *(undefined1 *)(param_1 + 0xff) = 0;\n              auStack_5b[2] = cVar17;\n              (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118));\n              *(long *)(param_1 + 0x140) = *(long *)(param_1 + 0x140) + 1;\n              lVar8 = 1;\n              lVar9 = 0;\n              cVar17 = auStack_5b[2];\n            }\n            else {\n              lVar8 = lVar9 + 1;\n            }\n            __s = (uint *)((long)__s + 1);\n            *(long *)(param_1 + 0x100) = lVar8;\n            *(char *)(param_1 + lVar9) = cVar17;\n            *(char *)(param_1 + 0x108) = cVar17;\n            lVar9 = lVar8;\n          } while (puVar11 != __s);\n        }\n        puVar13 = &DAT_00589518;\n        uVar16 = 0x7d;\n        while( true ) {\n          if (lVar8 == 0xff) {\n            *(undefined1 *)(param_1 + 0xff) = 0;\n            (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118));\n            *(long *)(param_1 + 0x140) = *(long *)(param_1 + 0x140) + 1;\n            lVar8 = 0;\n            lVar9 = 1;\n          }\n          else {\n            lVar9 = lVar8 + 1;\n          }\n          puVar13 = puVar13 + 1;\n          *(long *)(param_1 + 0x100) = lVar9;\n          *(undefined1 *)(param_1 + lVar8) = uVar16;\n          *(undefined1 *)(param_1 + 0x108) = uVar16;\n          if (puVar13 == &DAT_0058951b) break;\n          uVar16 = *puVar13;\n          lVar8 = lVar9;\n        }\n        piVar14 = *(int **)(piVar14 + 2);\n        iVar5 = *piVar14;\n      }\n      if (iVar5 - 0x1cU < 0x34) {\n        uVar4 = 0xd00000000001fU >> ((ulong)(iVar5 - 0x1cU) & 0x3f) & 1;\n        while (uVar4 != 0) {\n          piVar14 = *(int **)(piVar14 + 2);\n          if (0x33 < *piVar14 - 0x1cU) break;\n          uVar4 = 1L << ((byte)(*piVar14 - 0x1cU) & 0x3f) & 0xd00000000001f;\n        }\n      }\n      FUN_004916e0(param_1,param_2,piVar14);\n      *(undefined8 *)(param_1 + 0x120) = uVar1;\n      return;\n    }" ({ "{") (expression_statement "uVar2 = *(undefined8 *)(param_1 + 0x128);" (assignment_expression "uVar2 = *(undefined8 *)(param_1 + 0x128)" (identifier "uVar2") (= "=") (pointer_expression "*(undefined8 *)(param_1 + 0x128)" (* "*") (cast_expression "(undefined8 *)(param_1 + 0x128)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x128)" (( "(") (binary_expression "param_1 + 0x128" (identifier "param_1") (+ "+") (number_literal "0x128")) () ")"))))) (; ";")) (expression_statement "uVar3 = *(undefined8 *)(piVar14 + 2);" (assignment_expression "uVar3 = *(undefined8 *)(piVar14 + 2)" (identifier "uVar3") (= "=") (pointer_expression "*(undefined8 *)(piVar14 + 2)" (* "*") (cast_expression "(undefined8 *)(piVar14 + 2)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(piVar14 + 2)" (( "(") (binary_expression "piVar14 + 2" (identifier "piVar14") (+ "+") (number_literal "2")) () ")"))))) (; ";")) (expression_statement "*(undefined8 *)(param_1 + 0x128) = 0;" (assignment_expression "*(undefined8 *)(param_1 + 0x128) = 0" (pointer_expression "*(undefined8 *)(param_1 + 0x128)" (* "*") (cast_expression "(undefined8 *)(param_1 + 0x128)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x128)" (( "(") (binary_expression "param_1 + 0x128" (identifier "param_1") (+ "+") (number_literal "0x128")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "FUN_004916e0(param_1,param_2,uVar3);" (call_expression "FUN_004916e0(param_1,param_2,uVar3)" (identifier "FUN_004916e0") (argument_list "(param_1,param_2,uVar3)" (( "(") (identifier "param_1") (, ",") (identifier "param_2") (, ",") (identifier "uVar3") () ")"))) (; ";")) (expression_statement "*(undefined8 *)(param_1 + 0x128) = uVar2;" (assignment_expression "*(undefined8 *)(param_1 + 0x128) = uVar2" (pointer_expression "*(undefined8 *)(param_1 + 0x128)" (* "*") (cast_expression "(undefined8 *)(param_1 + 0x128)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x128)" (( "(") (binary_expression "param_1 + 0x128" (identifier "param_1") (+ "+") (number_literal "0x128")) () ")")))) (= "=") (identifier "uVar2")) (; ";")) (expression_statement "lVar8 = *(long *)(param_1 + 0x100);" (assignment_expression "lVar8 = *(long *)(param_1 + 0x100)" (identifier "lVar8") (= "=") (pointer_expression "*(long *)(param_1 + 0x100)" (* "*") (cast_expression "(long *)(param_1 + 0x100)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x100)" (( "(") (binary_expression "param_1 + 0x100" (identifier "param_1") (+ "+") (number_literal "0x100")) () ")"))))) (; ";")) (if_statement "if ((param_2 & 4) == 0) {\n        puVar15 = &DAT_00589519;\n        uVar16 = 0x3a;\n        while( true ) {\n          if (lVar8 == 0xff) {\n            *(undefined1 *)(param_1 + 0xff) = 0;\n            (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118));\n            *(long *)(param_1 + 0x140) = *(long *)(param_1 + 0x140) + 1;\n            lVar8 = 0;\n            lVar9 = 1;\n          }\n          else {\n            lVar9 = lVar8 + 1;\n          }\n          puVar15 = puVar15 + 1;\n          *(long *)(param_1 + 0x100) = lVar9;\n          *(undefined1 *)(param_1 + lVar8) = uVar16;\n          *(undefined1 *)(param_1 + 0x108) = uVar16;\n          if (puVar15 == &DAT_0058951b) break;\n          uVar16 = *puVar15;\n          lVar8 = lVar9;\n        }\n      }\n      else {\n        lVar9 = lVar8 + 1;\n        if (lVar8 == 0xff) {\n          *(undefined1 *)(param_1 + 0xff) = 0;\n          (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118));\n          *(long *)(param_1 + 0x140) = *(long *)(param_1 + 0x140) + 1;\n          lVar9 = 1;\n          lVar8 = 0;\n        }\n        *(long *)(param_1 + 0x100) = lVar9;\n        *(undefined1 *)(param_1 + lVar8) = 0x2e;\n        *(undefined1 *)(param_1 + 0x108) = 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        puVar15 = &DAT_00589519;\n        uVar16 = 0x3a;\n        while( true ) {\n          if (lVar8 == 0xff) {\n            *(undefined1 *)(param_1 + 0xff) = 0;\n            (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118));\n            *(long *)(param_1 + 0x140) = *(long *)(param_1 + 0x140) + 1;\n            lVar8 = 0;\n            lVar9 = 1;\n          }\n          else {\n            lVar9 = lVar8 + 1;\n          }\n          puVar15 = puVar15 + 1;\n          *(long *)(param_1 + 0x100) = lVar9;\n          *(undefined1 *)(param_1 + lVar8) = uVar16;\n          *(undefined1 *)(param_1 + 0x108) = uVar16;\n          if (puVar15 == &DAT_0058951b) break;\n          uVar16 = *puVar15;\n          lVar8 = lVar9;\n        }\n      }" ({ "{") (expression_statement "puVar15 = &DAT_00589519;" (assignment_expression "puVar15 = &DAT_00589519" (identifier "puVar15") (= "=") (pointer_expression "&DAT_00589519" (& "&") (identifier "DAT_00589519"))) (; ";")) (expression_statement "uVar16 = 0x3a;" (assignment_expression "uVar16 = 0x3a" (identifier "uVar16") (= "=") (number_literal "0x3a")) (; ";")) (while_statement "while( true ) {\n          if (lVar8 == 0xff) {\n            *(undefined1 *)(param_1 + 0xff) = 0;\n            (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118));\n            *(long *)(param_1 + 0x140) = *(long *)(param_1 + 0x140) + 1;\n            lVar8 = 0;\n            lVar9 = 1;\n          }\n          else {\n            lVar9 = lVar8 + 1;\n          }\n          puVar15 = puVar15 + 1;\n          *(long *)(param_1 + 0x100) = lVar9;\n          *(undefined1 *)(param_1 + lVar8) = uVar16;\n          *(undefined1 *)(param_1 + 0x108) = uVar16;\n          if (puVar15 == &DAT_0058951b) break;\n          uVar16 = *puVar15;\n          lVar8 = lVar9;\n        }" (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (compound_statement "{\n          if (lVar8 == 0xff) {\n            *(undefined1 *)(param_1 + 0xff) = 0;\n            (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118));\n            *(long *)(param_1 + 0x140) = *(long *)(param_1 + 0x140) + 1;\n            lVar8 = 0;\n            lVar9 = 1;\n          }\n          else {\n            lVar9 = lVar8 + 1;\n          }\n          puVar15 = puVar15 + 1;\n          *(long *)(param_1 + 0x100) = lVar9;\n          *(undefined1 *)(param_1 + lVar8) = uVar16;\n          *(undefined1 *)(param_1 + 0x108) = uVar16;\n          if (puVar15 == &DAT_0058951b) break;\n          uVar16 = *puVar15;\n          lVar8 = lVar9;\n        }" ({ "{") (if_statement "if (lVar8 == 0xff) {\n            *(undefined1 *)(param_1 + 0xff) = 0;\n            (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118));\n            *(long *)(param_1 + 0x140) = *(long *)(param_1 + 0x140) + 1;\n            lVar8 = 0;\n            lVar9 = 1;\n          }\n          else {\n            lVar9 = lVar8 + 1;\n          }" (if "if") (parenthesized_expression "(lVar8 == 0xff)" (( "(") (binary_expression "lVar8 == 0xff" (identifier "lVar8") (== "==") (number_literal "0xff")) () ")")) (compound_statement "{\n            *(undefined1 *)(param_1 + 0xff) = 0;\n            (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118));\n            *(long *)(param_1 + 0x140) = *(long *)(param_1 + 0x140) + 1;\n            lVar8 = 0;\n            lVar9 = 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 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118));" (call_expression "(**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118))" (parenthesized_expression "(**(code **)(param_1 + 0x110))" (( "(") (pointer_expression "**(code **)(param_1 + 0x110)" (* "*") (pointer_expression "*(code **)(param_1 + 0x110)" (* "*") (cast_expression "(code **)(param_1 + 0x110)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0x110)" (( "(") (binary_expression "param_1 + 0x110" (identifier "param_1") (+ "+") (number_literal "0x110")) () ")"))))) () ")")) (argument_list "(param_1,0xff,*(undefined8 *)(param_1 + 0x118))" (( "(") (identifier "param_1") (, ",") (number_literal "0xff") (, ",") (pointer_expression "*(undefined8 *)(param_1 + 0x118)" (* "*") (cast_expression "(undefined8 *)(param_1 + 0x118)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x118)" (( "(") (binary_expression "param_1 + 0x118" (identifier "param_1") (+ "+") (number_literal "0x118")) () ")")))) () ")"))) (; ";")) (expression_statement "*(long *)(param_1 + 0x140) = *(long *)(param_1 + 0x140) + 1;" (assignment_expression "*(long *)(param_1 + 0x140) = *(long *)(param_1 + 0x140) + 1" (pointer_expression "*(long *)(param_1 + 0x140)" (* "*") (cast_expression "(long *)(param_1 + 0x140)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x140)" (( "(") (binary_expression "param_1 + 0x140" (identifier "param_1") (+ "+") (number_literal "0x140")) () ")")))) (= "=") (binary_expression "*(long *)(param_1 + 0x140) + 1" (pointer_expression "*(long *)(param_1 + 0x140)" (* "*") (cast_expression "(long *)(param_1 + 0x140)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x140)" (( "(") (binary_expression "param_1 + 0x140" (identifier "param_1") (+ "+") (number_literal "0x140")) () ")")))) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "lVar8 = 0;" (assignment_expression "lVar8 = 0" (identifier "lVar8") (= "=") (number_literal "0")) (; ";")) (expression_statement "lVar9 = 1;" (assignment_expression "lVar9 = 1" (identifier "lVar9") (= "=") (number_literal "1")) (; ";")) (} "}")) (else_clause "else {\n            lVar9 = lVar8 + 1;\n          }" (else "else") (compound_statement "{\n            lVar9 = lVar8 + 1;\n          }" ({ "{") (expression_statement "lVar9 = lVar8 + 1;" (assignment_expression "lVar9 = lVar8 + 1" (identifier "lVar9") (= "=") (binary_expression "lVar8 + 1" (identifier "lVar8") (+ "+") (number_literal "1"))) (; ";")) (} "}")))) (expression_statement "puVar15 = puVar15 + 1;" (assignment_expression "puVar15 = puVar15 + 1" (identifier "puVar15") (= "=") (binary_expression "puVar15 + 1" (identifier "puVar15") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "*(long *)(param_1 + 0x100) = lVar9;" (assignment_expression "*(long *)(param_1 + 0x100) = lVar9" (pointer_expression "*(long *)(param_1 + 0x100)" (* "*") (cast_expression "(long *)(param_1 + 0x100)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x100)" (( "(") (binary_expression "param_1 + 0x100" (identifier "param_1") (+ "+") (number_literal "0x100")) () ")")))) (= "=") (identifier "lVar9")) (; ";")) (expression_statement "*(undefined1 *)(param_1 + lVar8) = uVar16;" (assignment_expression "*(undefined1 *)(param_1 + lVar8) = uVar16" (pointer_expression "*(undefined1 *)(param_1 + lVar8)" (* "*") (cast_expression "(undefined1 *)(param_1 + lVar8)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + lVar8)" (( "(") (binary_expression "param_1 + lVar8" (identifier "param_1") (+ "+") (identifier "lVar8")) () ")")))) (= "=") (identifier "uVar16")) (; ";")) (expression_statement "*(undefined1 *)(param_1 + 0x108) = uVar16;" (assignment_expression "*(undefined1 *)(param_1 + 0x108) = uVar16" (pointer_expression "*(undefined1 *)(param_1 + 0x108)" (* "*") (cast_expression "(undefined1 *)(param_1 + 0x108)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x108)" (( "(") (binary_expression "param_1 + 0x108" (identifier "param_1") (+ "+") (number_literal "0x108")) () ")")))) (= "=") (identifier "uVar16")) (; ";")) (if_statement "if (puVar15 == &DAT_0058951b) break;" (if "if") (parenthesized_expression "(puVar15 == &DAT_0058951b)" (( "(") (binary_expression "puVar15 == &DAT_0058951b" (identifier "puVar15") (== "==") (pointer_expression "&DAT_0058951b" (& "&") (identifier "DAT_0058951b"))) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "uVar16 = *puVar15;" (assignment_expression "uVar16 = *puVar15" (identifier "uVar16") (= "=") (pointer_expression "*puVar15" (* "*") (identifier "puVar15"))) (; ";")) (expression_statement "lVar8 = lVar9;" (assignment_expression "lVar8 = lVar9" (identifier "lVar8") (= "=") (identifier "lVar9")) (; ";")) (} "}"))) (} "}")) (else_clause "else {\n        lVar9 = lVar8 + 1;\n        if (lVar8 == 0xff) {\n          *(undefined1 *)(param_1 + 0xff) = 0;\n          (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118));\n          *(long *)(param_1 + 0x140) = *(long *)(param_1 + 0x140) + 1;\n          lVar9 = 1;\n          lVar8 = 0;\n        }\n        *(long *)(param_1 + 0x100) = lVar9;\n        *(undefined1 *)(param_1 + lVar8) = 0x2e;\n        *(undefined1 *)(param_1 + 0x108) = 0x2e;\n      }" (else "else") (compound_statement "{\n        lVar9 = lVar8 + 1;\n        if (lVar8 == 0xff) {\n          *(undefined1 *)(param_1 + 0xff) = 0;\n          (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118));\n          *(long *)(param_1 + 0x140) = *(long *)(param_1 + 0x140) + 1;\n          lVar9 = 1;\n          lVar8 = 0;\n        }\n        *(long *)(param_1 + 0x100) = lVar9;\n        *(undefined1 *)(param_1 + lVar8) = 0x2e;\n        *(undefined1 *)(param_1 + 0x108) = 0x2e;\n      }" ({ "{") (expression_statement "lVar9 = lVar8 + 1;" (assignment_expression "lVar9 = lVar8 + 1" (identifier "lVar9") (= "=") (binary_expression "lVar8 + 1" (identifier "lVar8") (+ "+") (number_literal "1"))) (; ";")) (if_statement "if (lVar8 == 0xff) {\n          *(undefined1 *)(param_1 + 0xff) = 0;\n          (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118));\n          *(long *)(param_1 + 0x140) = *(long *)(param_1 + 0x140) + 1;\n          lVar9 = 1;\n          lVar8 = 0;\n        }" (if "if") (parenthesized_expression "(lVar8 == 0xff)" (( "(") (binary_expression "lVar8 == 0xff" (identifier "lVar8") (== "==") (number_literal "0xff")) () ")")) (compound_statement "{\n          *(undefined1 *)(param_1 + 0xff) = 0;\n          (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118));\n          *(long *)(param_1 + 0x140) = *(long *)(param_1 + 0x140) + 1;\n          lVar9 = 1;\n          lVar8 = 0;\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 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118));" (call_expression "(**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118))" (parenthesized_expression "(**(code **)(param_1 + 0x110))" (( "(") (pointer_expression "**(code **)(param_1 + 0x110)" (* "*") (pointer_expression "*(code **)(param_1 + 0x110)" (* "*") (cast_expression "(code **)(param_1 + 0x110)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0x110)" (( "(") (binary_expression "param_1 + 0x110" (identifier "param_1") (+ "+") (number_literal "0x110")) () ")"))))) () ")")) (argument_list "(param_1,0xff,*(undefined8 *)(param_1 + 0x118))" (( "(") (identifier "param_1") (, ",") (number_literal "0xff") (, ",") (pointer_expression "*(undefined8 *)(param_1 + 0x118)" (* "*") (cast_expression "(undefined8 *)(param_1 + 0x118)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x118)" (( "(") (binary_expression "param_1 + 0x118" (identifier "param_1") (+ "+") (number_literal "0x118")) () ")")))) () ")"))) (; ";")) (expression_statement "*(long *)(param_1 + 0x140) = *(long *)(param_1 + 0x140) + 1;" (assignment_expression "*(long *)(param_1 + 0x140) = *(long *)(param_1 + 0x140) + 1" (pointer_expression "*(long *)(param_1 + 0x140)" (* "*") (cast_expression "(long *)(param_1 + 0x140)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x140)" (( "(") (binary_expression "param_1 + 0x140" (identifier "param_1") (+ "+") (number_literal "0x140")) () ")")))) (= "=") (binary_expression "*(long *)(param_1 + 0x140) + 1" (pointer_expression "*(long *)(param_1 + 0x140)" (* "*") (cast_expression "(long *)(param_1 + 0x140)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x140)" (( "(") (binary_expression "param_1 + 0x140" (identifier "param_1") (+ "+") (number_literal "0x140")) () ")")))) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "lVar9 = 1;" (assignment_expression "lVar9 = 1" (identifier "lVar9") (= "=") (number_literal "1")) (; ";")) (expression_statement "lVar8 = 0;" (assignment_expression "lVar8 = 0" (identifier "lVar8") (= "=") (number_literal "0")) (; ";")) (} "}"))) (expression_statement "*(long *)(param_1 + 0x100) = lVar9;" (assignment_expression "*(long *)(param_1 + 0x100) = lVar9" (pointer_expression "*(long *)(param_1 + 0x100)" (* "*") (cast_expression "(long *)(param_1 + 0x100)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x100)" (( "(") (binary_expression "param_1 + 0x100" (identifier "param_1") (+ "+") (number_literal "0x100")) () ")")))) (= "=") (identifier "lVar9")) (; ";")) (expression_statement "*(undefined1 *)(param_1 + lVar8) = 0x2e;" (assignment_expression "*(undefined1 *)(param_1 + lVar8) = 0x2e" (pointer_expression "*(undefined1 *)(param_1 + lVar8)" (* "*") (cast_expression "(undefined1 *)(param_1 + lVar8)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + lVar8)" (( "(") (binary_expression "param_1 + lVar8" (identifier "param_1") (+ "+") (identifier "lVar8")) () ")")))) (= "=") (number_literal "0x2e")) (; ";")) (expression_statement "*(undefined1 *)(param_1 + 0x108) = 0x2e;" (assignment_expression "*(undefined1 *)(param_1 + 0x108) = 0x2e" (pointer_expression "*(undefined1 *)(param_1 + 0x108)" (* "*") (cast_expression "(undefined1 *)(param_1 + 0x108)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x108)" (( "(") (binary_expression "param_1 + 0x108" (identifier "param_1") (+ "+") (number_literal "0x108")) () ")")))) (= "=") (number_literal "0x2e")) (; ";")) (} "}")))) (expression_statement "piVar14 = *(int **)(param_3[1] + 0x10);" (assignment_expression "piVar14 = *(int **)(param_3[1] + 0x10)" (identifier "piVar14") (= "=") (pointer_expression "*(int **)(param_3[1] + 0x10)" (* "*") (cast_expression "(int **)(param_3[1] + 0x10)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_3[1] + 0x10)" (( "(") (binary_expression "param_3[1] + 0x10" (subscript_expression "param_3[1]" (identifier "param_3") ([ "[") (number_literal "1") (] "]")) (+ "+") (number_literal "0x10")) () ")"))))) (; ";")) (expression_statement "iVar5 = *piVar14;" (assignment_expression "iVar5 = *piVar14" (identifier "iVar5") (= "=") (pointer_expression "*piVar14" (* "*") (identifier "piVar14"))) (; ";")) (if_statement "if (iVar5 == 0x46) {\n        pcVar12 = "{default arg#";\n        cVar17 = '{';\n        lVar8 = *(long *)(param_1 + 0x100);\n        while( true ) {\n          pcVar12 = pcVar12 + 1;\n          if (lVar8 == 0xff) {\n            *(undefined1 *)(param_1 + 0xff) = 0;\n            (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118));\n            *(long *)(param_1 + 0x140) = *(long *)(param_1 + 0x140) + 1;\n            lVar8 = 0;\n            lVar9 = 1;\n          }\n          else {\n            lVar9 = lVar8 + 1;\n          }\n          *(long *)(param_1 + 0x100) = lVar9;\n          *(char *)(param_1 + lVar8) = cVar17;\n          *(char *)(param_1 + 0x108) = cVar17;\n          if (pcVar12 == "") break;\n          cVar17 = *pcVar12;\n          lVar8 = lVar9;\n        }\n        __s = (uint *)(auStack_5b + 3);\n        sprintf((char *)__s,"%d",(ulong)(piVar14[4] + 1));\n        puVar11 = __s;\n        do {\n          puVar10 = puVar11;\n          uVar6 = *puVar10 + 0xfefefeff & ~*puVar10;\n          uVar7 = uVar6 & 0x80808080;\n          puVar11 = puVar10 + 1;\n        } while (uVar7 == 0);\n        bVar18 = (uVar6 & 0x8080) == 0;\n        if (bVar18) {\n          uVar7 = uVar7 >> 0x10;\n        }\n        if (bVar18) {\n          puVar11 = (uint *)((long)puVar10 + 6);\n        }\n        lVar8 = *(long *)(param_1 + 0x100);\n        pcVar12 = (char *)((long)puVar11 +\n                          ((-3 - (ulong)CARRY1((byte)uVar7,(byte)uVar7)) - (long)__s));\n        if (pcVar12 != (char *)0x0) {\n          puVar11 = (uint *)((long)__s + (long)pcVar12);\n          lVar9 = lVar8;\n          do {\n            cVar17 = (char)*__s;\n            if (lVar9 == 0xff) {\n              *(undefined1 *)(param_1 + 0xff) = 0;\n              auStack_5b[2] = cVar17;\n              (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118));\n              *(long *)(param_1 + 0x140) = *(long *)(param_1 + 0x140) + 1;\n              lVar8 = 1;\n              lVar9 = 0;\n              cVar17 = auStack_5b[2];\n            }\n            else {\n              lVar8 = lVar9 + 1;\n            }\n            __s = (uint *)((long)__s + 1);\n            *(long *)(param_1 + 0x100) = lVar8;\n            *(char *)(param_1 + lVar9) = cVar17;\n            *(char *)(param_1 + 0x108) = cVar17;\n            lVar9 = lVar8;\n          } while (puVar11 != __s);\n        }\n        puVar13 = &DAT_00589518;\n        uVar16 = 0x7d;\n        while( true ) {\n          if (lVar8 == 0xff) {\n            *(undefined1 *)(param_1 + 0xff) = 0;\n            (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118));\n            *(long *)(param_1 + 0x140) = *(long *)(param_1 + 0x140) + 1;\n            lVar8 = 0;\n            lVar9 = 1;\n          }\n          else {\n            lVar9 = lVar8 + 1;\n          }\n          puVar13 = puVar13 + 1;\n          *(long *)(param_1 + 0x100) = lVar9;\n          *(undefined1 *)(param_1 + lVar8) = uVar16;\n          *(undefined1 *)(param_1 + 0x108) = uVar16;\n          if (puVar13 == &DAT_0058951b) break;\n          uVar16 = *puVar13;\n          lVar8 = lVar9;\n        }\n        piVar14 = *(int **)(piVar14 + 2);\n        iVar5 = *piVar14;\n      }" (if "if") (parenthesized_expression "(iVar5 == 0x46)" (( "(") (binary_expression "iVar5 == 0x46" (identifier "iVar5") (== "==") (number_literal "0x46")) () ")")) (compound_statement "{\n        pcVar12 = "{default arg#";\n        cVar17 = '{';\n        lVar8 = *(long *)(param_1 + 0x100);\n        while( true ) {\n          pcVar12 = pcVar12 + 1;\n          if (lVar8 == 0xff) {\n            *(undefined1 *)(param_1 + 0xff) = 0;\n            (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118));\n            *(long *)(param_1 + 0x140) = *(long *)(param_1 + 0x140) + 1;\n            lVar8 = 0;\n            lVar9 = 1;\n          }\n          else {\n            lVar9 = lVar8 + 1;\n          }\n          *(long *)(param_1 + 0x100) = lVar9;\n          *(char *)(param_1 + lVar8) = cVar17;\n          *(char *)(param_1 + 0x108) = cVar17;\n          if (pcVar12 == "") break;\n          cVar17 = *pcVar12;\n          lVar8 = lVar9;\n        }\n        __s = (uint *)(auStack_5b + 3);\n        sprintf((char *)__s,"%d",(ulong)(piVar14[4] + 1));\n        puVar11 = __s;\n        do {\n          puVar10 = puVar11;\n          uVar6 = *puVar10 + 0xfefefeff & ~*puVar10;\n          uVar7 = uVar6 & 0x80808080;\n          puVar11 = puVar10 + 1;\n        } while (uVar7 == 0);\n        bVar18 = (uVar6 & 0x8080) == 0;\n        if (bVar18) {\n          uVar7 = uVar7 >> 0x10;\n        }\n        if (bVar18) {\n          puVar11 = (uint *)((long)puVar10 + 6);\n        }\n        lVar8 = *(long *)(param_1 + 0x100);\n        pcVar12 = (char *)((long)puVar11 +\n                          ((-3 - (ulong)CARRY1((byte)uVar7,(byte)uVar7)) - (long)__s));\n        if (pcVar12 != (char *)0x0) {\n          puVar11 = (uint *)((long)__s + (long)pcVar12);\n          lVar9 = lVar8;\n          do {\n            cVar17 = (char)*__s;\n            if (lVar9 == 0xff) {\n              *(undefined1 *)(param_1 + 0xff) = 0;\n              auStack_5b[2] = cVar17;\n              (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118));\n              *(long *)(param_1 + 0x140) = *(long *)(param_1 + 0x140) + 1;\n              lVar8 = 1;\n              lVar9 = 0;\n              cVar17 = auStack_5b[2];\n            }\n            else {\n              lVar8 = lVar9 + 1;\n            }\n            __s = (uint *)((long)__s + 1);\n            *(long *)(param_1 + 0x100) = lVar8;\n            *(char *)(param_1 + lVar9) = cVar17;\n            *(char *)(param_1 + 0x108) = cVar17;\n            lVar9 = lVar8;\n          } while (puVar11 != __s);\n        }\n        puVar13 = &DAT_00589518;\n        uVar16 = 0x7d;\n        while( true ) {\n          if (lVar8 == 0xff) {\n            *(undefined1 *)(param_1 + 0xff) = 0;\n            (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118));\n            *(long *)(param_1 + 0x140) = *(long *)(param_1 + 0x140) + 1;\n            lVar8 = 0;\n            lVar9 = 1;\n          }\n          else {\n            lVar9 = lVar8 + 1;\n          }\n          puVar13 = puVar13 + 1;\n          *(long *)(param_1 + 0x100) = lVar9;\n          *(undefined1 *)(param_1 + lVar8) = uVar16;\n          *(undefined1 *)(param_1 + 0x108) = uVar16;\n          if (puVar13 == &DAT_0058951b) break;\n          uVar16 = *puVar13;\n          lVar8 = lVar9;\n        }\n        piVar14 = *(int **)(piVar14 + 2);\n        iVar5 = *piVar14;\n      }" ({ "{") (expression_statement "pcVar12 = "{default arg#";" (assignment_expression "pcVar12 = "{default arg#"" (identifier "pcVar12") (= "=") (string_literal ""{default arg#"" (" """) (string_content "{default arg#") (" """))) (; ";")) (expression_statement "cVar17 = '{';" (assignment_expression "cVar17 = '{'" (identifier "cVar17") (= "=") (char_literal "'{'" (' "'") (character "{") (' "'"))) (; ";")) (expression_statement "lVar8 = *(long *)(param_1 + 0x100);" (assignment_expression "lVar8 = *(long *)(param_1 + 0x100)" (identifier "lVar8") (= "=") (pointer_expression "*(long *)(param_1 + 0x100)" (* "*") (cast_expression "(long *)(param_1 + 0x100)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x100)" (( "(") (binary_expression "param_1 + 0x100" (identifier "param_1") (+ "+") (number_literal "0x100")) () ")"))))) (; ";")) (while_statement "while( true ) {\n          pcVar12 = pcVar12 + 1;\n          if (lVar8 == 0xff) {\n            *(undefined1 *)(param_1 + 0xff) = 0;\n            (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118));\n            *(long *)(param_1 + 0x140) = *(long *)(param_1 + 0x140) + 1;\n            lVar8 = 0;\n            lVar9 = 1;\n          }\n          else {\n            lVar9 = lVar8 + 1;\n          }\n          *(long *)(param_1 + 0x100) = lVar9;\n          *(char *)(param_1 + lVar8) = cVar17;\n          *(char *)(param_1 + 0x108) = cVar17;\n          if (pcVar12 == "") break;\n          cVar17 = *pcVar12;\n          lVar8 = lVar9;\n        }" (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (compound_statement "{\n          pcVar12 = pcVar12 + 1;\n          if (lVar8 == 0xff) {\n            *(undefined1 *)(param_1 + 0xff) = 0;\n            (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118));\n            *(long *)(param_1 + 0x140) = *(long *)(param_1 + 0x140) + 1;\n            lVar8 = 0;\n            lVar9 = 1;\n          }\n          else {\n            lVar9 = lVar8 + 1;\n          }\n          *(long *)(param_1 + 0x100) = lVar9;\n          *(char *)(param_1 + lVar8) = cVar17;\n          *(char *)(param_1 + 0x108) = cVar17;\n          if (pcVar12 == "") break;\n          cVar17 = *pcVar12;\n          lVar8 = lVar9;\n        }" ({ "{") (expression_statement "pcVar12 = pcVar12 + 1;" (assignment_expression "pcVar12 = pcVar12 + 1" (identifier "pcVar12") (= "=") (binary_expression "pcVar12 + 1" (identifier "pcVar12") (+ "+") (number_literal "1"))) (; ";")) (if_statement "if (lVar8 == 0xff) {\n            *(undefined1 *)(param_1 + 0xff) = 0;\n            (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118));\n            *(long *)(param_1 + 0x140) = *(long *)(param_1 + 0x140) + 1;\n            lVar8 = 0;\n            lVar9 = 1;\n          }\n          else {\n            lVar9 = lVar8 + 1;\n          }" (if "if") (parenthesized_expression "(lVar8 == 0xff)" (( "(") (binary_expression "lVar8 == 0xff" (identifier "lVar8") (== "==") (number_literal "0xff")) () ")")) (compound_statement "{\n            *(undefined1 *)(param_1 + 0xff) = 0;\n            (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118));\n            *(long *)(param_1 + 0x140) = *(long *)(param_1 + 0x140) + 1;\n            lVar8 = 0;\n            lVar9 = 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 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118));" (call_expression "(**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118))" (parenthesized_expression "(**(code **)(param_1 + 0x110))" (( "(") (pointer_expression "**(code **)(param_1 + 0x110)" (* "*") (pointer_expression "*(code **)(param_1 + 0x110)" (* "*") (cast_expression "(code **)(param_1 + 0x110)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0x110)" (( "(") (binary_expression "param_1 + 0x110" (identifier "param_1") (+ "+") (number_literal "0x110")) () ")"))))) () ")")) (argument_list "(param_1,0xff,*(undefined8 *)(param_1 + 0x118))" (( "(") (identifier "param_1") (, ",") (number_literal "0xff") (, ",") (pointer_expression "*(undefined8 *)(param_1 + 0x118)" (* "*") (cast_expression "(undefined8 *)(param_1 + 0x118)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x118)" (( "(") (binary_expression "param_1 + 0x118" (identifier "param_1") (+ "+") (number_literal "0x118")) () ")")))) () ")"))) (; ";")) (expression_statement "*(long *)(param_1 + 0x140) = *(long *)(param_1 + 0x140) + 1;" (assignment_expression "*(long *)(param_1 + 0x140) = *(long *)(param_1 + 0x140) + 1" (pointer_expression "*(long *)(param_1 + 0x140)" (* "*") (cast_expression "(long *)(param_1 + 0x140)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x140)" (( "(") (binary_expression "param_1 + 0x140" (identifier "param_1") (+ "+") (number_literal "0x140")) () ")")))) (= "=") (binary_expression "*(long *)(param_1 + 0x140) + 1" (pointer_expression "*(long *)(param_1 + 0x140)" (* "*") (cast_expression "(long *)(param_1 + 0x140)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x140)" (( "(") (binary_expression "param_1 + 0x140" (identifier "param_1") (+ "+") (number_literal "0x140")) () ")")))) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "lVar8 = 0;" (assignment_expression "lVar8 = 0" (identifier "lVar8") (= "=") (number_literal "0")) (; ";")) (expression_statement "lVar9 = 1;" (assignment_expression "lVar9 = 1" (identifier "lVar9") (= "=") (number_literal "1")) (; ";")) (} "}")) (else_clause "else {\n            lVar9 = lVar8 + 1;\n          }" (else "else") (compound_statement "{\n            lVar9 = lVar8 + 1;\n          }" ({ "{") (expression_statement "lVar9 = lVar8 + 1;" (assignment_expression "lVar9 = lVar8 + 1" (identifier "lVar9") (= "=") (binary_expression "lVar8 + 1" (identifier "lVar8") (+ "+") (number_literal "1"))) (; ";")) (} "}")))) (expression_statement "*(long *)(param_1 + 0x100) = lVar9;" (assignment_expression "*(long *)(param_1 + 0x100) = lVar9" (pointer_expression "*(long *)(param_1 + 0x100)" (* "*") (cast_expression "(long *)(param_1 + 0x100)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x100)" (( "(") (binary_expression "param_1 + 0x100" (identifier "param_1") (+ "+") (number_literal "0x100")) () ")")))) (= "=") (identifier "lVar9")) (; ";")) (expression_statement "*(char *)(param_1 + lVar8) = cVar17;" (assignment_expression "*(char *)(param_1 + lVar8) = cVar17" (pointer_expression "*(char *)(param_1 + lVar8)" (* "*") (cast_expression "(char *)(param_1 + lVar8)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + lVar8)" (( "(") (binary_expression "param_1 + lVar8" (identifier "param_1") (+ "+") (identifier "lVar8")) () ")")))) (= "=") (identifier "cVar17")) (; ";")) (expression_statement "*(char *)(param_1 + 0x108) = cVar17;" (assignment_expression "*(char *)(param_1 + 0x108) = cVar17" (pointer_expression "*(char *)(param_1 + 0x108)" (* "*") (cast_expression "(char *)(param_1 + 0x108)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x108)" (( "(") (binary_expression "param_1 + 0x108" (identifier "param_1") (+ "+") (number_literal "0x108")) () ")")))) (= "=") (identifier "cVar17")) (; ";")) (if_statement "if (pcVar12 == "") break;" (if "if") (parenthesized_expression "(pcVar12 == "")" (( "(") (binary_expression "pcVar12 == """ (identifier "pcVar12") (== "==") (string_literal """" (" """) (" """))) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "cVar17 = *pcVar12;" (assignment_expression "cVar17 = *pcVar12" (identifier "cVar17") (= "=") (pointer_expression "*pcVar12" (* "*") (identifier "pcVar12"))) (; ";")) (expression_statement "lVar8 = lVar9;" (assignment_expression "lVar8 = lVar9" (identifier "lVar8") (= "=") (identifier "lVar9")) (; ";")) (} "}"))) (expression_statement "__s = (uint *)(auStack_5b + 3);" (assignment_expression "__s = (uint *)(auStack_5b + 3)" (identifier "__s") (= "=") (cast_expression "(uint *)(auStack_5b + 3)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(auStack_5b + 3)" (( "(") (binary_expression "auStack_5b + 3" (identifier "auStack_5b") (+ "+") (number_literal "3")) () ")")))) (; ";")) (expression_statement "sprintf((char *)__s,"%d",(ulong)(piVar14[4] + 1));" (call_expression "sprintf((char *)__s,"%d",(ulong)(piVar14[4] + 1))" (identifier "sprintf") (argument_list "((char *)__s,"%d",(ulong)(piVar14[4] + 1))" (( "(") (cast_expression "(char *)__s" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "__s")) (, ",") (string_literal ""%d"" (" """) (string_content "%d") (" """)) (, ",") (call_expression "(ulong)(piVar14[4] + 1)" (parenthesized_expression "(ulong)" (( "(") (identifier "ulong") () ")")) (argument_list "(piVar14[4] + 1)" (( "(") (binary_expression "piVar14[4] + 1" (subscript_expression "piVar14[4]" (identifier "piVar14") ([ "[") (number_literal "4") (] "]")) (+ "+") (number_literal "1")) () ")"))) () ")"))) (; ";")) (expression_statement "puVar11 = __s;" (assignment_expression "puVar11 = __s" (identifier "puVar11") (= "=") (identifier "__s")) (; ";")) (do_statement "do {\n          puVar10 = puVar11;\n          uVar6 = *puVar10 + 0xfefefeff & ~*puVar10;\n          uVar7 = uVar6 & 0x80808080;\n          puVar11 = puVar10 + 1;\n        } while (uVar7 == 0);" (do "do") (compound_statement "{\n          puVar10 = puVar11;\n          uVar6 = *puVar10 + 0xfefefeff & ~*puVar10;\n          uVar7 = uVar6 & 0x80808080;\n          puVar11 = puVar10 + 1;\n        }" ({ "{") (expression_statement "puVar10 = puVar11;" (assignment_expression "puVar10 = puVar11" (identifier "puVar10") (= "=") (identifier "puVar11")) (; ";")) (expression_statement "uVar6 = *puVar10 + 0xfefefeff & ~*puVar10;" (assignment_expression "uVar6 = *puVar10 + 0xfefefeff & ~*puVar10" (identifier "uVar6") (= "=") (binary_expression "*puVar10 + 0xfefefeff & ~*puVar10" (binary_expression "*puVar10 + 0xfefefeff" (pointer_expression "*puVar10" (* "*") (identifier "puVar10")) (+ "+") (number_literal "0xfefefeff")) (& "&") (unary_expression "~*puVar10" (~ "~") (pointer_expression "*puVar10" (* "*") (identifier "puVar10"))))) (; ";")) (expression_statement "uVar7 = uVar6 & 0x80808080;" (assignment_expression "uVar7 = uVar6 & 0x80808080" (identifier "uVar7") (= "=") (binary_expression "uVar6 & 0x80808080" (identifier "uVar6") (& "&") (number_literal "0x80808080"))) (; ";")) (expression_statement "puVar11 = puVar10 + 1;" (assignment_expression "puVar11 = puVar10 + 1" (identifier "puVar11") (= "=") (binary_expression "puVar10 + 1" (identifier "puVar10") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(uVar7 == 0)" (( "(") (binary_expression "uVar7 == 0" (identifier "uVar7") (== "==") (number_literal "0")) () ")")) (; ";")) (expression_statement "bVar18 = (uVar6 & 0x8080) == 0;" (assignment_expression "bVar18 = (uVar6 & 0x8080) == 0" (identifier "bVar18") (= "=") (binary_expression "(uVar6 & 0x8080) == 0" (parenthesized_expression "(uVar6 & 0x8080)" (( "(") (binary_expression "uVar6 & 0x8080" (identifier "uVar6") (& "&") (number_literal "0x8080")) () ")")) (== "==") (number_literal "0"))) (; ";")) (if_statement "if (bVar18) {\n          uVar7 = uVar7 >> 0x10;\n        }" (if "if") (parenthesized_expression "(bVar18)" (( "(") (identifier "bVar18") () ")")) (compound_statement "{\n          uVar7 = uVar7 >> 0x10;\n        }" ({ "{") (expression_statement "uVar7 = uVar7 >> 0x10;" (assignment_expression "uVar7 = uVar7 >> 0x10" (identifier "uVar7") (= "=") (binary_expression "uVar7 >> 0x10" (identifier "uVar7") (>> ">>") (number_literal "0x10"))) (; ";")) (} "}"))) (if_statement "if (bVar18) {\n          puVar11 = (uint *)((long)puVar10 + 6);\n        }" (if "if") (parenthesized_expression "(bVar18)" (( "(") (identifier "bVar18") () ")")) (compound_statement "{\n          puVar11 = (uint *)((long)puVar10 + 6);\n        }" ({ "{") (expression_statement "puVar11 = (uint *)((long)puVar10 + 6);" (assignment_expression "puVar11 = (uint *)((long)puVar10 + 6)" (identifier "puVar11") (= "=") (cast_expression "(uint *)((long)puVar10 + 6)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)puVar10 + 6)" (( "(") (binary_expression "(long)puVar10 + 6" (cast_expression "(long)puVar10" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "puVar10")) (+ "+") (number_literal "6")) () ")")))) (; ";")) (} "}"))) (expression_statement "lVar8 = *(long *)(param_1 + 0x100);" (assignment_expression "lVar8 = *(long *)(param_1 + 0x100)" (identifier "lVar8") (= "=") (pointer_expression "*(long *)(param_1 + 0x100)" (* "*") (cast_expression "(long *)(param_1 + 0x100)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x100)" (( "(") (binary_expression "param_1 + 0x100" (identifier "param_1") (+ "+") (number_literal "0x100")) () ")"))))) (; ";")) (expression_statement "pcVar12 = (char *)((long)puVar11 +\n                          ((-3 - (ulong)CARRY1((byte)uVar7,(byte)uVar7)) - (long)__s));" (assignment_expression "pcVar12 = (char *)((long)puVar11 +\n                          ((-3 - (ulong)CARRY1((byte)uVar7,(byte)uVar7)) - (long)__s))" (identifier "pcVar12") (= "=") (cast_expression "(char *)((long)puVar11 +\n                          ((-3 - (ulong)CARRY1((byte)uVar7,(byte)uVar7)) - (long)__s))" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)puVar11 +\n                          ((-3 - (ulong)CARRY1((byte)uVar7,(byte)uVar7)) - (long)__s))" (( "(") (binary_expression "(long)puVar11 +\n                          ((-3 - (ulong)CARRY1((byte)uVar7,(byte)uVar7)) - (long)__s)" (cast_expression "(long)puVar11" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "puVar11")) (+ "+") (parenthesized_expression "((-3 - (ulong)CARRY1((byte)uVar7,(byte)uVar7)) - (long)__s)" (( "(") (binary_expression "(-3 - (ulong)CARRY1((byte)uVar7,(byte)uVar7)) - (long)__s" (parenthesized_expression "(-3 - (ulong)CARRY1((byte)uVar7,(byte)uVar7))" (( "(") (binary_expression "-3 - (ulong)CARRY1((byte)uVar7,(byte)uVar7)" (number_literal "-3") (- "-") (cast_expression "(ulong)CARRY1((byte)uVar7,(byte)uVar7)" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (call_expression "CARRY1((byte)uVar7,(byte)uVar7)" (identifier "CARRY1") (argument_list "((byte)uVar7,(byte)uVar7)" (( "(") (cast_expression "(byte)uVar7" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "uVar7")) (, ",") (cast_expression "(byte)uVar7" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "uVar7")) () ")"))))) () ")")) (- "-") (cast_expression "(long)__s" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "__s"))) () ")"))) () ")")))) (; ";")) (if_statement "if (pcVar12 != (char *)0x0) {\n          puVar11 = (uint *)((long)__s + (long)pcVar12);\n          lVar9 = lVar8;\n          do {\n            cVar17 = (char)*__s;\n            if (lVar9 == 0xff) {\n              *(undefined1 *)(param_1 + 0xff) = 0;\n              auStack_5b[2] = cVar17;\n              (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118));\n              *(long *)(param_1 + 0x140) = *(long *)(param_1 + 0x140) + 1;\n              lVar8 = 1;\n              lVar9 = 0;\n              cVar17 = auStack_5b[2];\n            }\n            else {\n              lVar8 = lVar9 + 1;\n            }\n            __s = (uint *)((long)__s + 1);\n            *(long *)(param_1 + 0x100) = lVar8;\n            *(char *)(param_1 + lVar9) = cVar17;\n            *(char *)(param_1 + 0x108) = cVar17;\n            lVar9 = lVar8;\n          } while (puVar11 != __s);\n        }" (if "if") (parenthesized_expression "(pcVar12 != (char *)0x0)" (( "(") (binary_expression "pcVar12 != (char *)0x0" (identifier "pcVar12") (!= "!=") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n          puVar11 = (uint *)((long)__s + (long)pcVar12);\n          lVar9 = lVar8;\n          do {\n            cVar17 = (char)*__s;\n            if (lVar9 == 0xff) {\n              *(undefined1 *)(param_1 + 0xff) = 0;\n              auStack_5b[2] = cVar17;\n              (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118));\n              *(long *)(param_1 + 0x140) = *(long *)(param_1 + 0x140) + 1;\n              lVar8 = 1;\n              lVar9 = 0;\n              cVar17 = auStack_5b[2];\n            }\n            else {\n              lVar8 = lVar9 + 1;\n            }\n            __s = (uint *)((long)__s + 1);\n            *(long *)(param_1 + 0x100) = lVar8;\n            *(char *)(param_1 + lVar9) = cVar17;\n            *(char *)(param_1 + 0x108) = cVar17;\n            lVar9 = lVar8;\n          } while (puVar11 != __s);\n        }" ({ "{") (expression_statement "puVar11 = (uint *)((long)__s + (long)pcVar12);" (assignment_expression "puVar11 = (uint *)((long)__s + (long)pcVar12)" (identifier "puVar11") (= "=") (cast_expression "(uint *)((long)__s + (long)pcVar12)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)__s + (long)pcVar12)" (( "(") (binary_expression "(long)__s + (long)pcVar12" (cast_expression "(long)__s" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "__s")) (+ "+") (cast_expression "(long)pcVar12" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "pcVar12"))) () ")")))) (; ";")) (expression_statement "lVar9 = lVar8;" (assignment_expression "lVar9 = lVar8" (identifier "lVar9") (= "=") (identifier "lVar8")) (; ";")) (do_statement "do {\n            cVar17 = (char)*__s;\n            if (lVar9 == 0xff) {\n              *(undefined1 *)(param_1 + 0xff) = 0;\n              auStack_5b[2] = cVar17;\n              (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118));\n              *(long *)(param_1 + 0x140) = *(long *)(param_1 + 0x140) + 1;\n              lVar8 = 1;\n              lVar9 = 0;\n              cVar17 = auStack_5b[2];\n            }\n            else {\n              lVar8 = lVar9 + 1;\n            }\n            __s = (uint *)((long)__s + 1);\n            *(long *)(param_1 + 0x100) = lVar8;\n            *(char *)(param_1 + lVar9) = cVar17;\n            *(char *)(param_1 + 0x108) = cVar17;\n            lVar9 = lVar8;\n          } while (puVar11 != __s);" (do "do") (compound_statement "{\n            cVar17 = (char)*__s;\n            if (lVar9 == 0xff) {\n              *(undefined1 *)(param_1 + 0xff) = 0;\n              auStack_5b[2] = cVar17;\n              (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118));\n              *(long *)(param_1 + 0x140) = *(long *)(param_1 + 0x140) + 1;\n              lVar8 = 1;\n              lVar9 = 0;\n              cVar17 = auStack_5b[2];\n            }\n            else {\n              lVar8 = lVar9 + 1;\n            }\n            __s = (uint *)((long)__s + 1);\n            *(long *)(param_1 + 0x100) = lVar8;\n            *(char *)(param_1 + lVar9) = cVar17;\n            *(char *)(param_1 + 0x108) = cVar17;\n            lVar9 = lVar8;\n          }" ({ "{") (expression_statement "cVar17 = (char)*__s;" (assignment_expression "cVar17 = (char)*__s" (identifier "cVar17") (= "=") (cast_expression "(char)*__s" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (pointer_expression "*__s" (* "*") (identifier "__s")))) (; ";")) (if_statement "if (lVar9 == 0xff) {\n              *(undefined1 *)(param_1 + 0xff) = 0;\n              auStack_5b[2] = cVar17;\n              (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118));\n              *(long *)(param_1 + 0x140) = *(long *)(param_1 + 0x140) + 1;\n              lVar8 = 1;\n              lVar9 = 0;\n              cVar17 = auStack_5b[2];\n            }\n            else {\n              lVar8 = lVar9 + 1;\n            }" (if "if") (parenthesized_expression "(lVar9 == 0xff)" (( "(") (binary_expression "lVar9 == 0xff" (identifier "lVar9") (== "==") (number_literal "0xff")) () ")")) (compound_statement "{\n              *(undefined1 *)(param_1 + 0xff) = 0;\n              auStack_5b[2] = cVar17;\n              (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118));\n              *(long *)(param_1 + 0x140) = *(long *)(param_1 + 0x140) + 1;\n              lVar8 = 1;\n              lVar9 = 0;\n              cVar17 = auStack_5b[2];\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 "auStack_5b[2] = cVar17;" (assignment_expression "auStack_5b[2] = cVar17" (subscript_expression "auStack_5b[2]" (identifier "auStack_5b") ([ "[") (number_literal "2") (] "]")) (= "=") (identifier "cVar17")) (; ";")) (expression_statement "(**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118));" (call_expression "(**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118))" (parenthesized_expression "(**(code **)(param_1 + 0x110))" (( "(") (pointer_expression "**(code **)(param_1 + 0x110)" (* "*") (pointer_expression "*(code **)(param_1 + 0x110)" (* "*") (cast_expression "(code **)(param_1 + 0x110)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0x110)" (( "(") (binary_expression "param_1 + 0x110" (identifier "param_1") (+ "+") (number_literal "0x110")) () ")"))))) () ")")) (argument_list "(param_1,0xff,*(undefined8 *)(param_1 + 0x118))" (( "(") (identifier "param_1") (, ",") (number_literal "0xff") (, ",") (pointer_expression "*(undefined8 *)(param_1 + 0x118)" (* "*") (cast_expression "(undefined8 *)(param_1 + 0x118)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x118)" (( "(") (binary_expression "param_1 + 0x118" (identifier "param_1") (+ "+") (number_literal "0x118")) () ")")))) () ")"))) (; ";")) (expression_statement "*(long *)(param_1 + 0x140) = *(long *)(param_1 + 0x140) + 1;" (assignment_expression "*(long *)(param_1 + 0x140) = *(long *)(param_1 + 0x140) + 1" (pointer_expression "*(long *)(param_1 + 0x140)" (* "*") (cast_expression "(long *)(param_1 + 0x140)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x140)" (( "(") (binary_expression "param_1 + 0x140" (identifier "param_1") (+ "+") (number_literal "0x140")) () ")")))) (= "=") (binary_expression "*(long *)(param_1 + 0x140) + 1" (pointer_expression "*(long *)(param_1 + 0x140)" (* "*") (cast_expression "(long *)(param_1 + 0x140)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x140)" (( "(") (binary_expression "param_1 + 0x140" (identifier "param_1") (+ "+") (number_literal "0x140")) () ")")))) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "lVar8 = 1;" (assignment_expression "lVar8 = 1" (identifier "lVar8") (= "=") (number_literal "1")) (; ";")) (expression_statement "lVar9 = 0;" (assignment_expression "lVar9 = 0" (identifier "lVar9") (= "=") (number_literal "0")) (; ";")) (expression_statement "cVar17 = auStack_5b[2];" (assignment_expression "cVar17 = auStack_5b[2]" (identifier "cVar17") (= "=") (subscript_expression "auStack_5b[2]" (identifier "auStack_5b") ([ "[") (number_literal "2") (] "]"))) (; ";")) (} "}")) (else_clause "else {\n              lVar8 = lVar9 + 1;\n            }" (else "else") (compound_statement "{\n              lVar8 = lVar9 + 1;\n            }" ({ "{") (expression_statement "lVar8 = lVar9 + 1;" (assignment_expression "lVar8 = lVar9 + 1" (identifier "lVar8") (= "=") (binary_expression "lVar9 + 1" (identifier "lVar9") (+ "+") (number_literal "1"))) (; ";")) (} "}")))) (expression_statement "__s = (uint *)((long)__s + 1);" (assignment_expression "__s = (uint *)((long)__s + 1)" (identifier "__s") (= "=") (cast_expression "(uint *)((long)__s + 1)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)__s + 1)" (( "(") (binary_expression "(long)__s + 1" (cast_expression "(long)__s" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "__s")) (+ "+") (number_literal "1")) () ")")))) (; ";")) (expression_statement "*(long *)(param_1 + 0x100) = lVar8;" (assignment_expression "*(long *)(param_1 + 0x100) = lVar8" (pointer_expression "*(long *)(param_1 + 0x100)" (* "*") (cast_expression "(long *)(param_1 + 0x100)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x100)" (( "(") (binary_expression "param_1 + 0x100" (identifier "param_1") (+ "+") (number_literal "0x100")) () ")")))) (= "=") (identifier "lVar8")) (; ";")) (expression_statement "*(char *)(param_1 + lVar9) = cVar17;" (assignment_expression "*(char *)(param_1 + lVar9) = cVar17" (pointer_expression "*(char *)(param_1 + lVar9)" (* "*") (cast_expression "(char *)(param_1 + lVar9)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + lVar9)" (( "(") (binary_expression "param_1 + lVar9" (identifier "param_1") (+ "+") (identifier "lVar9")) () ")")))) (= "=") (identifier "cVar17")) (; ";")) (expression_statement "*(char *)(param_1 + 0x108) = cVar17;" (assignment_expression "*(char *)(param_1 + 0x108) = cVar17" (pointer_expression "*(char *)(param_1 + 0x108)" (* "*") (cast_expression "(char *)(param_1 + 0x108)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x108)" (( "(") (binary_expression "param_1 + 0x108" (identifier "param_1") (+ "+") (number_literal "0x108")) () ")")))) (= "=") (identifier "cVar17")) (; ";")) (expression_statement "lVar9 = lVar8;" (assignment_expression "lVar9 = lVar8" (identifier "lVar9") (= "=") (identifier "lVar8")) (; ";")) (} "}")) (while "while") (parenthesized_expression "(puVar11 != __s)" (( "(") (binary_expression "puVar11 != __s" (identifier "puVar11") (!= "!=") (identifier "__s")) () ")")) (; ";")) (} "}"))) (expression_statement "puVar13 = &DAT_00589518;" (assignment_expression "puVar13 = &DAT_00589518" (identifier "puVar13") (= "=") (pointer_expression "&DAT_00589518" (& "&") (identifier "DAT_00589518"))) (; ";")) (expression_statement "uVar16 = 0x7d;" (assignment_expression "uVar16 = 0x7d" (identifier "uVar16") (= "=") (number_literal "0x7d")) (; ";")) (while_statement "while( true ) {\n          if (lVar8 == 0xff) {\n            *(undefined1 *)(param_1 + 0xff) = 0;\n            (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118));\n            *(long *)(param_1 + 0x140) = *(long *)(param_1 + 0x140) + 1;\n            lVar8 = 0;\n            lVar9 = 1;\n          }\n          else {\n            lVar9 = lVar8 + 1;\n          }\n          puVar13 = puVar13 + 1;\n          *(long *)(param_1 + 0x100) = lVar9;\n          *(undefined1 *)(param_1 + lVar8) = uVar16;\n          *(undefined1 *)(param_1 + 0x108) = uVar16;\n          if (puVar13 == &DAT_0058951b) break;\n          uVar16 = *puVar13;\n          lVar8 = lVar9;\n        }" (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (compound_statement "{\n          if (lVar8 == 0xff) {\n            *(undefined1 *)(param_1 + 0xff) = 0;\n            (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118));\n            *(long *)(param_1 + 0x140) = *(long *)(param_1 + 0x140) + 1;\n            lVar8 = 0;\n            lVar9 = 1;\n          }\n          else {\n            lVar9 = lVar8 + 1;\n          }\n          puVar13 = puVar13 + 1;\n          *(long *)(param_1 + 0x100) = lVar9;\n          *(undefined1 *)(param_1 + lVar8) = uVar16;\n          *(undefined1 *)(param_1 + 0x108) = uVar16;\n          if (puVar13 == &DAT_0058951b) break;\n          uVar16 = *puVar13;\n          lVar8 = lVar9;\n        }" ({ "{") (if_statement "if (lVar8 == 0xff) {\n            *(undefined1 *)(param_1 + 0xff) = 0;\n            (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118));\n            *(long *)(param_1 + 0x140) = *(long *)(param_1 + 0x140) + 1;\n            lVar8 = 0;\n            lVar9 = 1;\n          }\n          else {\n            lVar9 = lVar8 + 1;\n          }" (if "if") (parenthesized_expression "(lVar8 == 0xff)" (( "(") (binary_expression "lVar8 == 0xff" (identifier "lVar8") (== "==") (number_literal "0xff")) () ")")) (compound_statement "{\n            *(undefined1 *)(param_1 + 0xff) = 0;\n            (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118));\n            *(long *)(param_1 + 0x140) = *(long *)(param_1 + 0x140) + 1;\n            lVar8 = 0;\n            lVar9 = 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 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118));" (call_expression "(**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118))" (parenthesized_expression "(**(code **)(param_1 + 0x110))" (( "(") (pointer_expression "**(code **)(param_1 + 0x110)" (* "*") (pointer_expression "*(code **)(param_1 + 0x110)" (* "*") (cast_expression "(code **)(param_1 + 0x110)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0x110)" (( "(") (binary_expression "param_1 + 0x110" (identifier "param_1") (+ "+") (number_literal "0x110")) () ")"))))) () ")")) (argument_list "(param_1,0xff,*(undefined8 *)(param_1 + 0x118))" (( "(") (identifier "param_1") (, ",") (number_literal "0xff") (, ",") (pointer_expression "*(undefined8 *)(param_1 + 0x118)" (* "*") (cast_expression "(undefined8 *)(param_1 + 0x118)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x118)" (( "(") (binary_expression "param_1 + 0x118" (identifier "param_1") (+ "+") (number_literal "0x118")) () ")")))) () ")"))) (; ";")) (expression_statement "*(long *)(param_1 + 0x140) = *(long *)(param_1 + 0x140) + 1;" (assignment_expression "*(long *)(param_1 + 0x140) = *(long *)(param_1 + 0x140) + 1" (pointer_expression "*(long *)(param_1 + 0x140)" (* "*") (cast_expression "(long *)(param_1 + 0x140)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x140)" (( "(") (binary_expression "param_1 + 0x140" (identifier "param_1") (+ "+") (number_literal "0x140")) () ")")))) (= "=") (binary_expression "*(long *)(param_1 + 0x140) + 1" (pointer_expression "*(long *)(param_1 + 0x140)" (* "*") (cast_expression "(long *)(param_1 + 0x140)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x140)" (( "(") (binary_expression "param_1 + 0x140" (identifier "param_1") (+ "+") (number_literal "0x140")) () ")")))) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "lVar8 = 0;" (assignment_expression "lVar8 = 0" (identifier "lVar8") (= "=") (number_literal "0")) (; ";")) (expression_statement "lVar9 = 1;" (assignment_expression "lVar9 = 1" (identifier "lVar9") (= "=") (number_literal "1")) (; ";")) (} "}")) (else_clause "else {\n            lVar9 = lVar8 + 1;\n          }" (else "else") (compound_statement "{\n            lVar9 = lVar8 + 1;\n          }" ({ "{") (expression_statement "lVar9 = lVar8 + 1;" (assignment_expression "lVar9 = lVar8 + 1" (identifier "lVar9") (= "=") (binary_expression "lVar8 + 1" (identifier "lVar8") (+ "+") (number_literal "1"))) (; ";")) (} "}")))) (expression_statement "puVar13 = puVar13 + 1;" (assignment_expression "puVar13 = puVar13 + 1" (identifier "puVar13") (= "=") (binary_expression "puVar13 + 1" (identifier "puVar13") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "*(long *)(param_1 + 0x100) = lVar9;" (assignment_expression "*(long *)(param_1 + 0x100) = lVar9" (pointer_expression "*(long *)(param_1 + 0x100)" (* "*") (cast_expression "(long *)(param_1 + 0x100)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x100)" (( "(") (binary_expression "param_1 + 0x100" (identifier "param_1") (+ "+") (number_literal "0x100")) () ")")))) (= "=") (identifier "lVar9")) (; ";")) (expression_statement "*(undefined1 *)(param_1 + lVar8) = uVar16;" (assignment_expression "*(undefined1 *)(param_1 + lVar8) = uVar16" (pointer_expression "*(undefined1 *)(param_1 + lVar8)" (* "*") (cast_expression "(undefined1 *)(param_1 + lVar8)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + lVar8)" (( "(") (binary_expression "param_1 + lVar8" (identifier "param_1") (+ "+") (identifier "lVar8")) () ")")))) (= "=") (identifier "uVar16")) (; ";")) (expression_statement "*(undefined1 *)(param_1 + 0x108) = uVar16;" (assignment_expression "*(undefined1 *)(param_1 + 0x108) = uVar16" (pointer_expression "*(undefined1 *)(param_1 + 0x108)" (* "*") (cast_expression "(undefined1 *)(param_1 + 0x108)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x108)" (( "(") (binary_expression "param_1 + 0x108" (identifier "param_1") (+ "+") (number_literal "0x108")) () ")")))) (= "=") (identifier "uVar16")) (; ";")) (if_statement "if (puVar13 == &DAT_0058951b) break;" (if "if") (parenthesized_expression "(puVar13 == &DAT_0058951b)" (( "(") (binary_expression "puVar13 == &DAT_0058951b" (identifier "puVar13") (== "==") (pointer_expression "&DAT_0058951b" (& "&") (identifier "DAT_0058951b"))) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "uVar16 = *puVar13;" (assignment_expression "uVar16 = *puVar13" (identifier "uVar16") (= "=") (pointer_expression "*puVar13" (* "*") (identifier "puVar13"))) (; ";")) (expression_statement "lVar8 = lVar9;" (assignment_expression "lVar8 = lVar9" (identifier "lVar8") (= "=") (identifier "lVar9")) (; ";")) (} "}"))) (expression_statement "piVar14 = *(int **)(piVar14 + 2);" (assignment_expression "piVar14 = *(int **)(piVar14 + 2)" (identifier "piVar14") (= "=") (pointer_expression "*(int **)(piVar14 + 2)" (* "*") (cast_expression "(int **)(piVar14 + 2)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(piVar14 + 2)" (( "(") (binary_expression "piVar14 + 2" (identifier "piVar14") (+ "+") (number_literal "2")) () ")"))))) (; ";")) (expression_statement "iVar5 = *piVar14;" (assignment_expression "iVar5 = *piVar14" (identifier "iVar5") (= "=") (pointer_expression "*piVar14" (* "*") (identifier "piVar14"))) (; ";")) (} "}"))) (if_statement "if (iVar5 - 0x1cU < 0x34) {\n        uVar4 = 0xd00000000001fU >> ((ulong)(iVar5 - 0x1cU) & 0x3f) & 1;\n        while (uVar4 != 0) {\n          piVar14 = *(int **)(piVar14 + 2);\n          if (0x33 < *piVar14 - 0x1cU) break;\n          uVar4 = 1L << ((byte)(*piVar14 - 0x1cU) & 0x3f) & 0xd00000000001f;\n        }\n      }" (if "if") (parenthesized_expression "(iVar5 - 0x1cU < 0x34)" (( "(") (binary_expression "iVar5 - 0x1cU < 0x34" (binary_expression "iVar5 - 0x1cU" (identifier "iVar5") (- "-") (number_literal "0x1cU")) (< "<") (number_literal "0x34")) () ")")) (compound_statement "{\n        uVar4 = 0xd00000000001fU >> ((ulong)(iVar5 - 0x1cU) & 0x3f) & 1;\n        while (uVar4 != 0) {\n          piVar14 = *(int **)(piVar14 + 2);\n          if (0x33 < *piVar14 - 0x1cU) break;\n          uVar4 = 1L << ((byte)(*piVar14 - 0x1cU) & 0x3f) & 0xd00000000001f;\n        }\n      }" ({ "{") (expression_statement "uVar4 = 0xd00000000001fU >> ((ulong)(iVar5 - 0x1cU) & 0x3f) & 1;" (assignment_expression "uVar4 = 0xd00000000001fU >> ((ulong)(iVar5 - 0x1cU) & 0x3f) & 1" (identifier "uVar4") (= "=") (binary_expression "0xd00000000001fU >> ((ulong)(iVar5 - 0x1cU) & 0x3f) & 1" (binary_expression "0xd00000000001fU >> ((ulong)(iVar5 - 0x1cU) & 0x3f)" (number_literal "0xd00000000001fU") (>> ">>") (parenthesized_expression "((ulong)(iVar5 - 0x1cU) & 0x3f)" (( "(") (binary_expression "(ulong)(iVar5 - 0x1cU) & 0x3f" (call_expression "(ulong)(iVar5 - 0x1cU)" (parenthesized_expression "(ulong)" (( "(") (identifier "ulong") () ")")) (argument_list "(iVar5 - 0x1cU)" (( "(") (binary_expression "iVar5 - 0x1cU" (identifier "iVar5") (- "-") (number_literal "0x1cU")) () ")"))) (& "&") (number_literal "0x3f")) () ")"))) (& "&") (number_literal "1"))) (; ";")) (while_statement "while (uVar4 != 0) {\n          piVar14 = *(int **)(piVar14 + 2);\n          if (0x33 < *piVar14 - 0x1cU) break;\n          uVar4 = 1L << ((byte)(*piVar14 - 0x1cU) & 0x3f) & 0xd00000000001f;\n        }" (while "while") (parenthesized_expression "(uVar4 != 0)" (( "(") (binary_expression "uVar4 != 0" (identifier "uVar4") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n          piVar14 = *(int **)(piVar14 + 2);\n          if (0x33 < *piVar14 - 0x1cU) break;\n          uVar4 = 1L << ((byte)(*piVar14 - 0x1cU) & 0x3f) & 0xd00000000001f;\n        }" ({ "{") (expression_statement "piVar14 = *(int **)(piVar14 + 2);" (assignment_expression "piVar14 = *(int **)(piVar14 + 2)" (identifier "piVar14") (= "=") (pointer_expression "*(int **)(piVar14 + 2)" (* "*") (cast_expression "(int **)(piVar14 + 2)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(piVar14 + 2)" (( "(") (binary_expression "piVar14 + 2" (identifier "piVar14") (+ "+") (number_literal "2")) () ")"))))) (; ";")) (if_statement "if (0x33 < *piVar14 - 0x1cU) break;" (if "if") (parenthesized_expression "(0x33 < *piVar14 - 0x1cU)" (( "(") (binary_expression "0x33 < *piVar14 - 0x1cU" (number_literal "0x33") (< "<") (binary_expression "*piVar14 - 0x1cU" (pointer_expression "*piVar14" (* "*") (identifier "piVar14")) (- "-") (number_literal "0x1cU"))) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "uVar4 = 1L << ((byte)(*piVar14 - 0x1cU) & 0x3f) & 0xd00000000001f;" (assignment_expression "uVar4 = 1L << ((byte)(*piVar14 - 0x1cU) & 0x3f) & 0xd00000000001f" (identifier "uVar4") (= "=") (binary_expression "1L << ((byte)(*piVar14 - 0x1cU) & 0x3f) & 0xd00000000001f" (binary_expression "1L << ((byte)(*piVar14 - 0x1cU) & 0x3f)" (number_literal "1L") (<< "<<") (parenthesized_expression "((byte)(*piVar14 - 0x1cU) & 0x3f)" (( "(") (binary_expression "(byte)(*piVar14 - 0x1cU) & 0x3f" (call_expression "(byte)(*piVar14 - 0x1cU)" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "(*piVar14 - 0x1cU)" (( "(") (binary_expression "*piVar14 - 0x1cU" (pointer_expression "*piVar14" (* "*") (identifier "piVar14")) (- "-") (number_literal "0x1cU")) () ")"))) (& "&") (number_literal "0x3f")) () ")"))) (& "&") (number_literal "0xd00000000001f"))) (; ";")) (} "}"))) (} "}"))) (expression_statement "FUN_004916e0(param_1,param_2,piVar14);" (call_expression "FUN_004916e0(param_1,param_2,piVar14)" (identifier "FUN_004916e0") (argument_list "(param_1,param_2,piVar14)" (( "(") (identifier "param_1") (, ",") (identifier "param_2") (, ",") (identifier "piVar14") () ")"))) (; ";")) (expression_statement "*(undefined8 *)(param_1 + 0x120) = uVar1;" (assignment_expression "*(undefined8 *)(param_1 + 0x120) = uVar1" (pointer_expression "*(undefined8 *)(param_1 + 0x120)" (* "*") (cast_expression "(undefined8 *)(param_1 + 0x120)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x120)" (( "(") (binary_expression "param_1 + 0x120" (identifier "param_1") (+ "+") (number_literal "0x120")) () ")")))) (= "=") (identifier "uVar1")) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}"))) (expression_statement "FUN_00491770(param_1,param_2);" (call_expression "FUN_00491770(param_1,param_2)" (identifier "FUN_00491770") (argument_list "(param_1,param_2)" (( "(") (identifier "param_1") (, ",") (identifier "param_2") () ")"))) (; ";")) (expression_statement "*(undefined8 *)(param_1 + 0x120) = uVar1;" (assignment_expression "*(undefined8 *)(param_1 + 0x120) = uVar1" (pointer_expression "*(undefined8 *)(param_1 + 0x120)" (* "*") (cast_expression "(undefined8 *)(param_1 + 0x120)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x120)" (( "(") (binary_expression "param_1 + 0x120" (identifier "param_1") (+ "+") (number_literal "0x120")) () ")")))) (= "=") (identifier "uVar1")) (; ";")) (} "}"))) (labeled_statement "LAB_00492458:\n  param_3 = (long *)*param_3;" (statement_identifier "LAB_00492458") (: ":") (expression_statement "param_3 = (long *)*param_3;" (assignment_expression "param_3 = (long *)*param_3" (identifier "param_3") (= "=") (cast_expression "(long *)*param_3" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*param_3" (* "*") (identifier "param_3")))) (; ";"))) (if_statement "if (param_3 == (long *)0x0) {\n    return;\n  }" (if "if") (parenthesized_expression "(param_3 == (long *)0x0)" (( "(") (binary_expression "param_3 == (long *)0x0" (identifier "param_3") (== "==") (cast_expression "(long *)0x0" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n    return;\n  }" ({ "{") (return_statement "return;" (return "return") (; ";")) (} "}"))) (expression_statement "iVar5 = *(int *)(param_1 + 0x130);" (assignment_expression "iVar5 = *(int *)(param_1 + 0x130)" (identifier "iVar5") (= "=") (pointer_expression "*(int *)(param_1 + 0x130)" (* "*") (cast_expression "(int *)(param_1 + 0x130)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x130)" (( "(") (binary_expression "param_1 + 0x130" (identifier "param_1") (+ "+") (number_literal "0x130")) () ")"))))) (; ";")) (goto_statement "goto joined_r0x004923f2;" (goto "goto") (statement_identifier "joined_r0x004923f2") (; ";")) (} "}")))

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

{
  int var_2;
  type_3 *pdVar2;
  type_2 *pdVar3;
  void *pvVar4;
  type_4 var_24;
  type_5 var_4;
  type_6 var_17;
  type_6 var_19;
  size_t var_13;
  size_t var_21;
  type_6 *var_18;
  type_6 *var_22;
  char *var_14;
  type_6 *var_23;
  type_7 *pdVar14;
  char cVar15;
  bool bVar16;
  type_8 auStack_5b [3];
  char buf [25];
  
  if (var_1 == (type_2 *)0x0) {
    return;
  }
  var_2 = dpi->demangle_failure;
joined_r0x004923f2:
  if (var_2 != 0) {
    return;
  }
  if (var_1->printed == 0) {
    pdVar14 = var_1->mod;
    var_4 = pdVar14->type;
    if (var_3 == 0) {
      if (var_4 - var_5 < 0x34) {
        if ((0xd00000000001fU >> ((type_4)(var_4 - var_5) & 0x3f) & 1) !=
            0) goto LAB_00492458;
        goto LAB_00492416;
      }
      var_1->printed = 1;
      pdVar2 = dpi->templates;
      dpi->templates = var_1->templates;
    }
    else {
LAB_00492416:
      var_1->printed = 1;
      pdVar2 = dpi->templates;
      dpi->templates = var_1->templates;
      if (var_4 == var_6) {
        var_7(dpi,var_12,(type_7 *)((long)&pdVar14->u + 8),var_1->next);
        dpi->templates = pdVar2;
        return;
      }
    }
    if (var_4 == var_8) {
      var_9(dpi,var_12,(type_7 *)&(pdVar14->u).s_name,var_1->next);
      dpi->templates = pdVar2;
      return;
    }
    if (var_4 == var_10) {
      pdVar3 = dpi->modifiers;
      pdVar14 = (pdVar14->u).s_fixed.length;
      dpi->modifiers = (type_2 *)0x0;
      var_11(dpi,var_12,pdVar14);
      dpi->modifiers = pdVar3;
      var_13 = dpi->len;
      if ((var_12 & 4U) == 0) {
        var_14 = "::";
        cVar15 = ':';
        while( true ) {
          if (var_13 == 0xff) {
            pvVar4 = dpi->opaque;
            dpi->buf[0xff] = '\0';
            (*dpi->callback)(dpi->buf,0xff,pvVar4);
            dpi->flush_count = dpi->flush_count + 1;
            var_13 = 0;
            var_21 = 1;
          }
          else {
            var_21 = var_13 + 1;
          }
          var_14 = var_14 + 1;
          dpi->len = var_21;
          dpi->buf[var_13] = cVar15;
          dpi->last_char = cVar15;
          if (var_14 == "") break;
          cVar15 = *var_14;
          var_13 = var_21;
        }
      }
      else {
        var_21 = var_13 + 1;
        if (var_13 == 0xff) {
          pvVar4 = dpi->opaque;
          dpi->buf[0xff] = '\0';
          (*dpi->callback)(dpi->buf,0xff,pvVar4);
          dpi->flush_count = dpi->flush_count + 1;
          var_21 = 1;
          var_13 = 0;
        }
        dpi->len = var_21;
        dpi->buf[var_13] = '.';
        dpi->last_char = '.';
      }
      pdVar14 = (var_1->mod->u).s_extended_operator.name;
      var_4 = pdVar14->type;
      if (var_4 == var_15) {
        var_14 = "{default arg#";
        cVar15 = '{';
        var_13 = dpi->len;
        while( true ) {
          var_14 = var_14 + 1;
          if (var_13 == 0xff) {
            pvVar4 = dpi->opaque;
            dpi->buf[0xff] = '\0';
            (*dpi->callback)(dpi->buf,0xff,pvVar4);
            dpi->flush_count = dpi->flush_count + 1;
            var_13 = 0;
            var_21 = 1;
          }
          else {
            var_21 = var_13 + 1;
          }
          dpi->len = var_21;
          dpi->buf[var_13] = cVar15;
          dpi->last_char = cVar15;
          if (var_14 == "") break;
          cVar15 = *var_14;
          var_13 = var_21;
        }
        var_23 = (type_6 *)buf;
        var_16((char *)var_23,"%d",(type_4)((pdVar14->u).s_name.len + 1));
        var_22 = var_23;
        do {
          var_18 = var_22;
          var_17 = *var_18 + 0xfefefeff & ~*var_18;
          var_19 = var_17 & 0x80808080;
          var_22 = var_18 + 1;
        } while (var_19 == 0);
        bVar16 = (var_17 & 0x8080) == 0;
        if (bVar16) {
          var_19 = var_19 >> 0x10;
        }
        if (bVar16) {
          var_22 = (type_6 *)((long)var_18 + 6);
        }
        var_13 = dpi->len;
        var_14 = (char *)((long)var_22 +
                          ((-3 - (type_4)var_20((type_9)var_19,(type_9)var_19)) - (long)var_23));
        if (var_14 != (char *)0x0) {
          var_22 = (type_6 *)((long)var_23 + (long)var_14);
          var_21 = var_13;
          do {
            cVar15 = (char)*var_23;
            if (var_21 == 0xff) {
              pvVar4 = dpi->opaque;
              dpi->buf[0xff] = '\0';
              auStack_5b[2] = cVar15;
              (*dpi->callback)(dpi->buf,0xff,pvVar4);
              dpi->flush_count = dpi->flush_count + 1;
              var_13 = 1;
              var_21 = 0;
              cVar15 = auStack_5b[2];
            }
            else {
              var_13 = var_21 + 1;
            }
            var_23 = (type_6 *)((long)var_23 + 1);
            dpi->len = var_13;
            dpi->buf[var_21] = cVar15;
            dpi->last_char = cVar15;
            var_21 = var_13;
          } while (var_22 != var_23);
        }
        var_14 = "}::";
        cVar15 = '}';
        while( true ) {
          if (var_13 == 0xff) {
            pvVar4 = dpi->opaque;
            dpi->buf[0xff] = '\0';
            (*dpi->callback)(dpi->buf,0xff,pvVar4);
            dpi->flush_count = dpi->flush_count + 1;
            var_13 = 0;
            var_21 = 1;
          }
          else {
            var_21 = var_13 + 1;
          }
          var_14 = var_14 + 1;
          dpi->len = var_21;
          dpi->buf[var_13] = cVar15;
          dpi->last_char = cVar15;
          if (var_14 == "") break;
          cVar15 = *var_14;
          var_13 = var_21;
        }
        pdVar14 = (pdVar14->u).s_fixed.length;
        var_4 = pdVar14->type;
      }
      if (var_4 - var_5 < 0x34) {
        var_24 = 0xd00000000001fU >> ((type_4)(var_4 - var_5) & 0x3f) & 1;
        while (var_24 != 0) {
          pdVar14 = (pdVar14->u).s_fixed.length;
          var_19 = pdVar14->type - var_5;
          if (0x33 < var_19) break;
          var_24 = 1L << ((type_9)var_19 & 0x3f) & 0xd00000000001f;
        }
      }
      var_11(dpi,var_12,pdVar14);
      dpi->templates = pdVar2;
      return;
    }
    type_2(dpi,var_12,pdVar14);
    dpi->templates = pdVar2;
  }
LAB_00492458:
  var_1 = var_1->next;
  if (var_1 == (type_2 *)0x0) {
    return;
  }
  var_2 = dpi->demangle_failure;
  goto joined_r0x004923f2;
}


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

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

{
  undefined8 uVar1;
  undefined8 uVar2;
  undefined8 uVar3;
  ulong uVar4;
  int iVar5;
  uint uVar6;
  uint uVar7;
  long lVar8;
  long lVar9;
  uint *puVar10;
  uint *puVar11;
  char *pcVar12;
  uint *__s;
  undefined *puVar13;
  int *piVar14;
  undefined1 *puVar15;
  undefined1 uVar16;
  char cVar17;
  bool bVar18;
  undefined1 auStack_5b [43];
  
  if (param_3 == (long *)0x0) {
    return;
  }
  iVar5 = *(int *)(param_1 + 0x130);
joined_r0x004923f2:
  if (iVar5 != 0) {
    return;
  }
  if ((int)param_3[2] == 0) {
    piVar14 = (int *)param_3[1];
    iVar5 = *piVar14;
    if (param_4 == 0) {
      if (iVar5 - 0x1cU < 0x34) {
        if ((0xd00000000001fU >> ((ulong)(iVar5 - 0x1cU) & 0x3f) & 1) != 0) goto LAB_00492458;
        goto LAB_00492416;
      }
      *(undefined4 *)(param_3 + 2) = 1;
      uVar1 = *(undefined8 *)(param_1 + 0x120);
      *(long *)(param_1 + 0x120) = param_3[3];
    }
    else {
LAB_00492416:
      *(undefined4 *)(param_3 + 2) = 1;
      uVar1 = *(undefined8 *)(param_1 + 0x120);
      *(long *)(param_1 + 0x120) = param_3[3];
      if (iVar5 == 0x29) {
        FUN_004920b0(param_1,param_2,piVar14 + 4,*param_3);
        *(undefined8 *)(param_1 + 0x120) = uVar1;
        return;
      }
    }
    if (iVar5 == 0x2a) {
      FUN_00492840(param_1,param_2,piVar14 + 2,*param_3);
      *(undefined8 *)(param_1 + 0x120) = uVar1;
      return;
    }
    if (iVar5 == 2) {
      uVar2 = *(undefined8 *)(param_1 + 0x128);
      uVar3 = *(undefined8 *)(piVar14 + 2);
      *(undefined8 *)(param_1 + 0x128) = 0;
      FUN_004916e0(param_1,param_2,uVar3);
      *(undefined8 *)(param_1 + 0x128) = uVar2;
      lVar8 = *(long *)(param_1 + 0x100);
      if ((param_2 & 4) == 0) {
        puVar15 = &DAT_00589519;
        uVar16 = 0x3a;
        while( true ) {
          if (lVar8 == 0xff) {
            *(undefined1 *)(param_1 + 0xff) = 0;
            (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118));
            *(long *)(param_1 + 0x140) = *(long *)(param_1 + 0x140) + 1;
            lVar8 = 0;
            lVar9 = 1;
          }
          else {
            lVar9 = lVar8 + 1;
          }
          puVar15 = puVar15 + 1;
          *(long *)(param_1 + 0x100) = lVar9;
          *(undefined1 *)(param_1 + lVar8) = uVar16;
          *(undefined1 *)(param_1 + 0x108) = uVar16;
          if (puVar15 == &DAT_0058951b) break;
          uVar16 = *puVar15;
          lVar8 = lVar9;
        }
      }
      else {
        lVar9 = lVar8 + 1;
        if (lVar8 == 0xff) {
          *(undefined1 *)(param_1 + 0xff) = 0;
          (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118));
          *(long *)(param_1 + 0x140) = *(long *)(param_1 + 0x140) + 1;
          lVar9 = 1;
          lVar8 = 0;
        }
        *(long *)(param_1 + 0x100) = lVar9;
        *(undefined1 *)(param_1 + lVar8) = 0x2e;
        *(undefined1 *)(param_1 + 0x108) = 0x2e;
      }
      piVar14 = *(int **)(param_3[1] + 0x10);
      iVar5 = *piVar14;
      if (iVar5 == 0x46) {
        pcVar12 = "{default arg#";
        cVar17 = '{';
        lVar8 = *(long *)(param_1 + 0x100);
        while( true ) {
          pcVar12 = pcVar12 + 1;
          if (lVar8 == 0xff) {
            *(undefined1 *)(param_1 + 0xff) = 0;
            (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118));
            *(long *)(param_1 + 0x140) = *(long *)(param_1 + 0x140) + 1;
            lVar8 = 0;
            lVar9 = 1;
          }
          else {
            lVar9 = lVar8 + 1;
          }
          *(long *)(param_1 + 0x100) = lVar9;
          *(char *)(param_1 + lVar8) = cVar17;
          *(char *)(param_1 + 0x108) = cVar17;
          if (pcVar12 == "") break;
          cVar17 = *pcVar12;
          lVar8 = lVar9;
        }
        __s = (uint *)(auStack_5b + 3);
        sprintf((char *)__s,"%d",(ulong)(piVar14[4] + 1));
        puVar11 = __s;
        do {
          puVar10 = puVar11;
          uVar6 = *puVar10 + 0xfefefeff & ~*puVar10;
          uVar7 = uVar6 & 0x80808080;
          puVar11 = puVar10 + 1;
        } while (uVar7 == 0);
        bVar18 = (uVar6 & 0x8080) == 0;
        if (bVar18) {
          uVar7 = uVar7 >> 0x10;
        }
        if (bVar18) {
          puVar11 = (uint *)((long)puVar10 + 6);
        }
        lVar8 = *(long *)(param_1 + 0x100);
        pcVar12 = (char *)((long)puVar11 +
                          ((-3 - (ulong)CARRY1((byte)uVar7,(byte)uVar7)) - (long)__s));
        if (pcVar12 != (char *)0x0) {
          puVar11 = (uint *)((long)__s + (long)pcVar12);
          lVar9 = lVar8;
          do {
            cVar17 = (char)*__s;
            if (lVar9 == 0xff) {
              *(undefined1 *)(param_1 + 0xff) = 0;
              auStack_5b[2] = cVar17;
              (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118));
              *(long *)(param_1 + 0x140) = *(long *)(param_1 + 0x140) + 1;
              lVar8 = 1;
              lVar9 = 0;
              cVar17 = auStack_5b[2];
            }
            else {
              lVar8 = lVar9 + 1;
            }
            __s = (uint *)((long)__s + 1);
            *(long *)(param_1 + 0x100) = lVar8;
            *(char *)(param_1 + lVar9) = cVar17;
            *(char *)(param_1 + 0x108) = cVar17;
            lVar9 = lVar8;
          } while (puVar11 != __s);
        }
        puVar13 = &DAT_00589518;
        uVar16 = 0x7d;
        while( true ) {
          if (lVar8 == 0xff) {
            *(undefined1 *)(param_1 + 0xff) = 0;
            (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118));
            *(long *)(param_1 + 0x140) = *(long *)(param_1 + 0x140) + 1;
            lVar8 = 0;
            lVar9 = 1;
          }
          else {
            lVar9 = lVar8 + 1;
          }
          puVar13 = puVar13 + 1;
          *(long *)(param_1 + 0x100) = lVar9;
          *(undefined1 *)(param_1 + lVar8) = uVar16;
          *(undefined1 *)(param_1 + 0x108) = uVar16;
          if (puVar13 == &DAT_0058951b) break;
          uVar16 = *puVar13;
          lVar8 = lVar9;
        }
        piVar14 = *(int **)(piVar14 + 2);
        iVar5 = *piVar14;
      }
      if (iVar5 - 0x1cU < 0x34) {
        uVar4 = 0xd00000000001fU >> ((ulong)(iVar5 - 0x1cU) & 0x3f) & 1;
        while (uVar4 != 0) {
          piVar14 = *(int **)(piVar14 + 2);
          if (0x33 < *piVar14 - 0x1cU) break;
          uVar4 = 1L << ((byte)(*piVar14 - 0x1cU) & 0x3f) & 0xd00000000001f;
        }
      }
      FUN_004916e0(param_1,param_2,piVar14);
      *(undefined8 *)(param_1 + 0x120) = uVar1;
      return;
    }
    FUN_00491770(param_1,param_2);
    *(undefined8 *)(param_1 + 0x120) = uVar1;
  }
LAB_00492458:
  param_3 = (long *)*param_3;
  if (param_3 == (long *)0x0) {
    return;
  }
  iVar5 = *(int *)(param_1 + 0x130);
  goto joined_r0x004923f2;
}

