
/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */
/* WARNING: Enum "anon_enum_32": Some values do not have unique names */

Packet * __regparm3 construct_packet(Ssh_conflict ssh,int pkttype,va_list ap)

{
  size_t n;
  uint *puVar1;
  int iVar2;
  uint uVar3;
  Bignum_conflict bn;
  char *__s;
  uchar *ptr;
  Packet *pkt;
  uchar *puVar4;
  size_t sVar5;
  void *pvVar6;
  size_t sVar7;
  uchar *puVar8;
  long lVar9;
  int iVar10;
  uchar *argp;
  int arglen;
  int iVar11;
  int in_GS_OFFSET;
  uint *local_34;
  
  iVar2 = *(int *)(in_GS_OFFSET + 0x14);
  pkt = (Packet *)safemalloc(1,0x2c);
  pkt->data = (uchar *)0x0;
  pkt->body = (uchar *)0x0;
  pkt->length = 0xd;
  pkt->maxlen = 0x10d;
  puVar4 = (uchar *)saferealloc((void *)0x0,0x10d,1);
  pkt->data = puVar4;
  puVar4[pkt->length + -1] = (uchar)ssh;
  pkt->type = (int)ssh;
  pkt->body = pkt->data + pkt->length;
  pkt->downstream_id = 0;
  pkt->additional_log_text = (char *)0x0;
  local_34 = (uint *)pkttype;
switchD_0003861c_caseD_5:
  uVar3 = *local_34;
  puVar1 = local_34;
  do {
    if (uVar3 == 0) {
      if (iVar2 == *(int *)(in_GS_OFFSET + 0x14)) {
        return pkt;
      }
                    /* WARNING: Subroutine does not return */
      __stack_chk_fail_local();
    }
    local_34 = puVar1 + 1;
    switch(uVar3) {
    case 1:
      goto _L1161;
    case 2:
      uVar3 = *local_34;
      iVar11 = pkt->length;
      local_34 = puVar1 + 2;
      puVar4 = pkt->data;
      iVar10 = iVar11 + 1;
      pkt->length = iVar10;
      if (pkt->maxlen < iVar10) {
        sVar5 = iVar11 + 0x101;
        if (pkt->body == (uchar *)0x0) {
          pkt->maxlen = sVar5;
          puVar4 = (uchar *)saferealloc(puVar4,sVar5,1);
          iVar10 = pkt->length;
          pkt->data = puVar4;
        }
        else {
          pkt->maxlen = sVar5;
          iVar11 = (int)pkt->body - (int)puVar4;
          puVar4 = (uchar *)saferealloc(puVar4,sVar5,1);
          iVar10 = pkt->length;
          pkt->data = puVar4;
          pkt->body = puVar4 + iVar11;
        }
      }
      puVar4[iVar10 + -1] = (uchar)uVar3;
      goto switchD_0003861c_caseD_5;
    case 3:
      sVar7 = puVar1[2];
      pvVar6 = (void *)*local_34;
      puVar4 = pkt->data;
      lVar9 = pkt->length + sVar7;
      pkt->length = lVar9;
      if (pkt->maxlen < lVar9) {
        sVar5 = lVar9 + 0x100;
        if (pkt->body == (uchar *)0x0) {
          pkt->maxlen = sVar5;
          puVar4 = (uchar *)saferealloc(puVar4,sVar5,1);
          lVar9 = pkt->length;
          pkt->data = puVar4;
        }
        else {
          iVar10 = (int)pkt->body - (int)puVar4;
          pkt->maxlen = sVar5;
          puVar4 = (uchar *)saferealloc(puVar4,sVar5,1);
          lVar9 = pkt->length;
          pkt->data = puVar4;
          pkt->body = puVar4 + iVar10;
        }
      }
      memcpy(puVar4 + (lVar9 - sVar7),pvVar6,sVar7);
      local_34 = puVar1 + 3;
      goto switchD_0003861c_caseD_5;
    case 4:
      __s = (char *)*local_34;
      iVar11 = pkt->length;
      puVar4 = pkt->data;
      iVar10 = iVar11 + 4;
      pkt->length = iVar10;
      if (pkt->maxlen < iVar10) {
        sVar5 = iVar11 + 0x104;
        if (pkt->body == (uchar *)0x0) {
          pkt->maxlen = sVar5;
          puVar4 = (uchar *)saferealloc(puVar4,sVar5,1);
          iVar10 = pkt->length;
          pkt->data = puVar4;
        }
        else {
          pkt->maxlen = sVar5;
          iVar11 = (int)pkt->body - (int)puVar4;
          puVar4 = (uchar *)saferealloc(puVar4,sVar5,1);
          iVar10 = pkt->length;
          pkt->data = puVar4;
          pkt->body = puVar4 + iVar11;
        }
      }
      puVar4 = puVar4 + iVar10 + -4;
      puVar4[0] = '\0';
      puVar4[1] = '\0';
      puVar4[2] = '\0';
      puVar4[3] = '\0';
      pkt->savedpos = pkt->length;
      sVar7 = strlen(__s);
      ssh_pkt_addstring_data(pkt,__s,sVar7);
      local_34 = puVar1 + 2;
      goto switchD_0003861c_caseD_5;
    case 5:
      bn = (Bignum_conflict)*local_34;
      puVar1 = puVar1 + 2;
      sVar5 = ssh1_bignum_length(bn);
      pvVar6 = safemalloc(sVar5,1);
      ssh1_write_bignum(pvVar6,bn);
      lVar9 = pkt->length + sVar5;
      pkt->length = lVar9;
      if (pkt->maxlen < lVar9) {
        puVar4 = pkt->body;
        n = lVar9 + 0x100;
        ptr = pkt->data;
        if (puVar4 == (uchar *)0x0) {
          pkt->maxlen = n;
          puVar8 = (uchar *)saferealloc(ptr,n,1);
          lVar9 = pkt->length;
          pkt->data = puVar8;
        }
        else {
          pkt->maxlen = n;
          puVar8 = (uchar *)saferealloc(ptr,n,1);
          lVar9 = pkt->length;
          pkt->data = puVar8;
          pkt->body = puVar8 + ((int)puVar4 - (int)ptr);
        }
      }
      else {
        puVar8 = pkt->data;
      }
      memcpy(puVar8 + (lVar9 - sVar5),pvVar6,sVar5);
      safefree(pvVar6);
      uVar3 = *puVar1;
      break;
    default:
      goto switchD_0003861c_caseD_5;
    }
  } while( true );
_L1161:
  uVar3 = *local_34;
  iVar11 = pkt->length;
  local_34 = puVar1 + 2;
  puVar4 = pkt->data;
  iVar10 = iVar11 + 4;
  pkt->length = iVar10;
  if (pkt->maxlen < iVar10) {
    sVar5 = iVar11 + 0x104;
    if (pkt->body == (uchar *)0x0) {
      pkt->maxlen = sVar5;
      puVar4 = (uchar *)saferealloc(puVar4,sVar5,1);
      iVar10 = pkt->length;
      pkt->data = puVar4;
    }
    else {
      pkt->maxlen = sVar5;
      iVar11 = (int)pkt->body - (int)puVar4;
      puVar4 = (uchar *)saferealloc(puVar4,sVar5,1);
      iVar10 = pkt->length;
      pkt->data = puVar4;
      pkt->body = puVar4 + iVar11;
    }
  }
  *(uint *)(puVar4 + iVar10 + -4) =
       uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 | uVar3 << 0x18;
  goto switchD_0003861c_caseD_5;
}



/* WARNING: Function: __i686.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */

int * __regparm3 FUN_00038570(int param_1,uint *param_2)

{
  uint *puVar1;
  int iVar2;
  uint uVar3;
  char *__s;
  int *piVar4;
  int iVar5;
  size_t sVar6;
  void *pvVar7;
  int iVar8;
  int iVar9;
  int iVar10;
  int in_GS_OFFSET;
  uint *local_34;
  
  iVar2 = *(int *)(in_GS_OFFSET + 0x14);
  piVar4 = (int *)FUN_0001db90(1,0x2c);
  piVar4[4] = 0;
  piVar4[5] = 0;
  *piVar4 = 0xd;
  piVar4[7] = 0x10d;
  iVar5 = FUN_0001dc50(0,0x10d,1);
  piVar4[4] = iVar5;
  *(char *)(iVar5 + -1 + *piVar4) = (char)param_1;
  piVar4[2] = param_1;
  piVar4[5] = *piVar4 + piVar4[4];
  piVar4[9] = 0;
  piVar4[10] = 0;
  local_34 = param_2;
LAB_000385f8:
  uVar3 = *local_34;
  puVar1 = local_34;
  do {
    if (uVar3 == 0) {
      if (iVar2 == *(int *)(in_GS_OFFSET + 0x14)) {
        return piVar4;
      }
                    /* WARNING: Subroutine does not return */
      FUN_0008d800();
    }
    local_34 = puVar1 + 1;
    switch(uVar3) {
    case 1:
      goto code_r0x000387f0;
    case 2:
      uVar3 = *local_34;
      iVar10 = *piVar4;
      local_34 = puVar1 + 2;
      iVar8 = piVar4[4];
      iVar5 = iVar10 + 1;
      *piVar4 = iVar5;
      if (piVar4[7] < iVar5) {
        iVar10 = iVar10 + 0x101;
        if (piVar4[5] == 0) {
          piVar4[7] = iVar10;
          iVar8 = FUN_0001dc50(iVar8,iVar10,1);
          iVar5 = *piVar4;
          piVar4[4] = iVar8;
        }
        else {
          piVar4[7] = iVar10;
          iVar9 = piVar4[5] - iVar8;
          iVar8 = FUN_0001dc50(iVar8,iVar10,1);
          iVar5 = *piVar4;
          piVar4[4] = iVar8;
          piVar4[5] = iVar9 + iVar8;
        }
      }
      *(char *)(iVar8 + -1 + iVar5) = (char)uVar3;
      goto LAB_000385f8;
    case 3:
      sVar6 = puVar1[2];
      pvVar7 = (void *)*local_34;
      iVar5 = piVar4[4];
      iVar10 = *piVar4 + sVar6;
      *piVar4 = iVar10;
      if (piVar4[7] < iVar10) {
        iVar10 = iVar10 + 0x100;
        if (piVar4[5] == 0) {
          piVar4[7] = iVar10;
          iVar5 = FUN_0001dc50(iVar5,iVar10,1);
          iVar10 = *piVar4;
          piVar4[4] = iVar5;
        }
        else {
          iVar8 = piVar4[5] - iVar5;
          piVar4[7] = iVar10;
          iVar5 = FUN_0001dc50(iVar5,iVar10,1);
          iVar10 = *piVar4;
          piVar4[4] = iVar5;
          piVar4[5] = iVar8 + iVar5;
        }
      }
      memcpy((void *)((iVar10 - sVar6) + iVar5),pvVar7,sVar6);
      local_34 = puVar1 + 3;
      goto LAB_000385f8;
    case 4:
      __s = (char *)*local_34;
      iVar10 = *piVar4;
      iVar8 = piVar4[4];
      iVar5 = iVar10 + 4;
      *piVar4 = iVar5;
      if (piVar4[7] < iVar5) {
        iVar10 = iVar10 + 0x104;
        if (piVar4[5] == 0) {
          piVar4[7] = iVar10;
          iVar8 = FUN_0001dc50(iVar8,iVar10,1);
          iVar5 = *piVar4;
          piVar4[4] = iVar8;
        }
        else {
          piVar4[7] = iVar10;
          iVar9 = piVar4[5] - iVar8;
          iVar8 = FUN_0001dc50(iVar8,iVar10,1);
          iVar5 = *piVar4;
          piVar4[4] = iVar8;
          piVar4[5] = iVar9 + iVar8;
        }
      }
      *(undefined4 *)(iVar8 + -4 + iVar5) = 0;
      piVar4[6] = *piVar4;
      strlen(__s);
      FUN_000378c0();
      local_34 = puVar1 + 2;
      goto LAB_000385f8;
    case 5:
      uVar3 = *local_34;
      puVar1 = puVar1 + 2;
      sVar6 = FUN_00056940(uVar3);
      pvVar7 = (void *)FUN_0001db90(sVar6,1);
      FUN_00056ac0(pvVar7,uVar3);
      iVar5 = *piVar4 + sVar6;
      *piVar4 = iVar5;
      if (piVar4[7] < iVar5) {
        iVar10 = piVar4[5];
        iVar5 = iVar5 + 0x100;
        iVar8 = piVar4[4];
        if (iVar10 == 0) {
          piVar4[7] = iVar5;
          iVar9 = FUN_0001dc50(iVar8,iVar5,1);
          iVar5 = *piVar4;
          piVar4[4] = iVar9;
        }
        else {
          piVar4[7] = iVar5;
          iVar9 = FUN_0001dc50(iVar8,iVar5,1);
          iVar5 = *piVar4;
          piVar4[4] = iVar9;
          piVar4[5] = (iVar10 - iVar8) + iVar9;
        }
      }
      else {
        iVar9 = piVar4[4];
      }
      memcpy((void *)((iVar5 - sVar6) + iVar9),pvVar7,sVar6);
      FUN_0001dd30(pvVar7);
      uVar3 = *puVar1;
      break;
    default:
      goto LAB_000385f8;
    }
  } while( true );
code_r0x000387f0:
  uVar3 = *local_34;
  iVar10 = *piVar4;
  local_34 = puVar1 + 2;
  iVar8 = piVar4[4];
  iVar5 = iVar10 + 4;
  *piVar4 = iVar5;
  if (piVar4[7] < iVar5) {
    iVar10 = iVar10 + 0x104;
    if (piVar4[5] == 0) {
      piVar4[7] = iVar10;
      iVar8 = FUN_0001dc50(iVar8,iVar10,1);
      iVar5 = *piVar4;
      piVar4[4] = iVar8;
    }
    else {
      piVar4[7] = iVar10;
      iVar9 = piVar4[5] - iVar8;
      iVar8 = FUN_0001dc50(iVar8,iVar10,1);
      iVar5 = *piVar4;
      piVar4[4] = iVar8;
      piVar4[5] = iVar9 + iVar8;
    }
  }
  *(uint *)(iVar8 + -4 + iVar5) =
       uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 | uVar3 << 0x18;
  goto LAB_000385f8;
}


PUSH EBP
PUSH EDI
MOV EDI,EAX
PUSH ESI
PUSH EBX
CALL 0x000149a0
ADD EBX,0x947f5
SUB ESP,0x34
MOV dword ptr [ESP + 0x10],EDX
MOV EAX,GS:[0x14]
MOV dword ptr [ESP + 0x24],EAX
XOR EAX,EAX
PUSH 0x2c
PUSH 0x1
CALL 0x0001db90
ADD ESP,0xc
MOV dword ptr [EAX + 0x10],0x0
MOV ESI,EAX
MOV dword ptr [EAX + 0x14],0x0
MOV dword ptr [EAX],0xd
MOV dword ptr [EAX + 0x1c],0x10d
PUSH 0x1
PUSH 0x10d
PUSH 0x0
CALL 0x0001dc50
MOV EDX,dword ptr [ESI]
MOV ECX,EDI
ADD ESP,0x10
MOV dword ptr [ESI + 0x10],EAX
MOV byte ptr [EAX + EDX*0x1 + -0x1],CL
MOV EAX,dword ptr [ESI]
ADD EAX,dword ptr [ESI + 0x10]
MOV dword ptr [ESI + 0x8],EDI
MOV dword ptr [ESI + 0x14],EAX
MOV dword ptr [ESI + 0x24],0x0
MOV dword ptr [ESI + 0x28],0x0
LEA ESI,[ESI]
MOV EAX,dword ptr [ESP + 0x8]
LEA EDX,[EAX + 0x4]
MOV EAX,dword ptr [EDX + -0x4]
TEST EAX,EAX
JZ 0x00038698
CMP EAX,0x5
JA 0x00038840
MOV EDI,dword ptr [EBX + EAX*0x4 + 0xfffc9350]
ADD EDI,EBX
JMP EDI
MOV ECX,dword ptr [ESP + 0x1c]
XOR ECX,dword ptr GS:[0x14]
MOV EAX,ESI
JNZ 0x0003892c
ADD ESP,0x2c
POP EBX
POP ESI
POP EDI
POP EBP
RET
MOV dword ptr [ESP + 0x8],EDX
JMP 0x000385f8
CALL 0x0008d800
(translation_unit "/* WARNING: Function: __i686.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n\nint * __regparm3 FUN_00038570(int param_1,uint *param_2)\n\n{\n  uint *puVar1;\n  int iVar2;\n  uint uVar3;\n  char *__s;\n  int *piVar4;\n  int iVar5;\n  size_t sVar6;\n  void *pvVar7;\n  int iVar8;\n  int iVar9;\n  int iVar10;\n  int in_GS_OFFSET;\n  uint *local_34;\n  \n  iVar2 = *(int *)(in_GS_OFFSET + 0x14);\n  piVar4 = (int *)FUN_0001db90(1,0x2c);\n  piVar4[4] = 0;\n  piVar4[5] = 0;\n  *piVar4 = 0xd;\n  piVar4[7] = 0x10d;\n  iVar5 = FUN_0001dc50(0,0x10d,1);\n  piVar4[4] = iVar5;\n  *(char *)(iVar5 + -1 + *piVar4) = (char)param_1;\n  piVar4[2] = param_1;\n  piVar4[5] = *piVar4 + piVar4[4];\n  piVar4[9] = 0;\n  piVar4[10] = 0;\n  local_34 = param_2;\nLAB_000385f8:\n  uVar3 = *local_34;\n  puVar1 = local_34;\n  do {\n    if (uVar3 == 0) {\n      if (iVar2 == *(int *)(in_GS_OFFSET + 0x14)) {\n        return piVar4;\n      }\n                    /* WARNING: Subroutine does not return */\n      FUN_0008d800();\n    }\n    local_34 = puVar1 + 1;\n    switch(uVar3) {\n    case 1:\n      goto code_r0x000387f0;\n    case 2:\n      uVar3 = *local_34;\n      iVar10 = *piVar4;\n      local_34 = puVar1 + 2;\n      iVar8 = piVar4[4];\n      iVar5 = iVar10 + 1;\n      *piVar4 = iVar5;\n      if (piVar4[7] < iVar5) {\n        iVar10 = iVar10 + 0x101;\n        if (piVar4[5] == 0) {\n          piVar4[7] = iVar10;\n          iVar8 = FUN_0001dc50(iVar8,iVar10,1);\n          iVar5 = *piVar4;\n          piVar4[4] = iVar8;\n        }\n        else {\n          piVar4[7] = iVar10;\n          iVar9 = piVar4[5] - iVar8;\n          iVar8 = FUN_0001dc50(iVar8,iVar10,1);\n          iVar5 = *piVar4;\n          piVar4[4] = iVar8;\n          piVar4[5] = iVar9 + iVar8;\n        }\n      }\n      *(char *)(iVar8 + -1 + iVar5) = (char)uVar3;\n      goto LAB_000385f8;\n    case 3:\n      sVar6 = puVar1[2];\n      pvVar7 = (void *)*local_34;\n      iVar5 = piVar4[4];\n      iVar10 = *piVar4 + sVar6;\n      *piVar4 = iVar10;\n      if (piVar4[7] < iVar10) {\n        iVar10 = iVar10 + 0x100;\n        if (piVar4[5] == 0) {\n          piVar4[7] = iVar10;\n          iVar5 = FUN_0001dc50(iVar5,iVar10,1);\n          iVar10 = *piVar4;\n          piVar4[4] = iVar5;\n        }\n        else {\n          iVar8 = piVar4[5] - iVar5;\n          piVar4[7] = iVar10;\n          iVar5 = FUN_0001dc50(iVar5,iVar10,1);\n          iVar10 = *piVar4;\n          piVar4[4] = iVar5;\n          piVar4[5] = iVar8 + iVar5;\n        }\n      }\n      memcpy((void *)((iVar10 - sVar6) + iVar5),pvVar7,sVar6);\n      local_34 = puVar1 + 3;\n      goto LAB_000385f8;\n    case 4:\n      __s = (char *)*local_34;\n      iVar10 = *piVar4;\n      iVar8 = piVar4[4];\n      iVar5 = iVar10 + 4;\n      *piVar4 = iVar5;\n      if (piVar4[7] < iVar5) {\n        iVar10 = iVar10 + 0x104;\n        if (piVar4[5] == 0) {\n          piVar4[7] = iVar10;\n          iVar8 = FUN_0001dc50(iVar8,iVar10,1);\n          iVar5 = *piVar4;\n          piVar4[4] = iVar8;\n        }\n        else {\n          piVar4[7] = iVar10;\n          iVar9 = piVar4[5] - iVar8;\n          iVar8 = FUN_0001dc50(iVar8,iVar10,1);\n          iVar5 = *piVar4;\n          piVar4[4] = iVar8;\n          piVar4[5] = iVar9 + iVar8;\n        }\n      }\n      *(undefined4 *)(iVar8 + -4 + iVar5) = 0;\n      piVar4[6] = *piVar4;\n      strlen(__s);\n      FUN_000378c0();\n      local_34 = puVar1 + 2;\n      goto LAB_000385f8;\n    case 5:\n      uVar3 = *local_34;\n      puVar1 = puVar1 + 2;\n      sVar6 = FUN_00056940(uVar3);\n      pvVar7 = (void *)FUN_0001db90(sVar6,1);\n      FUN_00056ac0(pvVar7,uVar3);\n      iVar5 = *piVar4 + sVar6;\n      *piVar4 = iVar5;\n      if (piVar4[7] < iVar5) {\n        iVar10 = piVar4[5];\n        iVar5 = iVar5 + 0x100;\n        iVar8 = piVar4[4];\n        if (iVar10 == 0) {\n          piVar4[7] = iVar5;\n          iVar9 = FUN_0001dc50(iVar8,iVar5,1);\n          iVar5 = *piVar4;\n          piVar4[4] = iVar9;\n        }\n        else {\n          piVar4[7] = iVar5;\n          iVar9 = FUN_0001dc50(iVar8,iVar5,1);\n          iVar5 = *piVar4;\n          piVar4[4] = iVar9;\n          piVar4[5] = (iVar10 - iVar8) + iVar9;\n        }\n      }\n      else {\n        iVar9 = piVar4[4];\n      }\n      memcpy((void *)((iVar5 - sVar6) + iVar9),pvVar7,sVar6);\n      FUN_0001dd30(pvVar7);\n      uVar3 = *puVar1;\n      break;\n    default:\n      goto LAB_000385f8;\n    }\n  } while( true );\ncode_r0x000387f0:\n  uVar3 = *local_34;\n  iVar10 = *piVar4;\n  local_34 = puVar1 + 2;\n  iVar8 = piVar4[4];\n  iVar5 = iVar10 + 4;\n  *piVar4 = iVar5;\n  if (piVar4[7] < iVar5) {\n    iVar10 = iVar10 + 0x104;\n    if (piVar4[5] == 0) {\n      piVar4[7] = iVar10;\n      iVar8 = FUN_0001dc50(iVar8,iVar10,1);\n      iVar5 = *piVar4;\n      piVar4[4] = iVar8;\n    }\n    else {\n      piVar4[7] = iVar10;\n      iVar9 = piVar4[5] - iVar8;\n      iVar8 = FUN_0001dc50(iVar8,iVar10,1);\n      iVar5 = *piVar4;\n      piVar4[4] = iVar8;\n      piVar4[5] = iVar9 + iVar8;\n    }\n  }\n  *(uint *)(iVar8 + -4 + iVar5) =\n       uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 | uVar3 << 0x18;\n  goto LAB_000385f8;\n}\n\n" comment (function_definition "int * __regparm3 FUN_00038570(int param_1,uint *param_2)\n\n{\n  uint *puVar1;\n  int iVar2;\n  uint uVar3;\n  char *__s;\n  int *piVar4;\n  int iVar5;\n  size_t sVar6;\n  void *pvVar7;\n  int iVar8;\n  int iVar9;\n  int iVar10;\n  int in_GS_OFFSET;\n  uint *local_34;\n  \n  iVar2 = *(int *)(in_GS_OFFSET + 0x14);\n  piVar4 = (int *)FUN_0001db90(1,0x2c);\n  piVar4[4] = 0;\n  piVar4[5] = 0;\n  *piVar4 = 0xd;\n  piVar4[7] = 0x10d;\n  iVar5 = FUN_0001dc50(0,0x10d,1);\n  piVar4[4] = iVar5;\n  *(char *)(iVar5 + -1 + *piVar4) = (char)param_1;\n  piVar4[2] = param_1;\n  piVar4[5] = *piVar4 + piVar4[4];\n  piVar4[9] = 0;\n  piVar4[10] = 0;\n  local_34 = param_2;\nLAB_000385f8:\n  uVar3 = *local_34;\n  puVar1 = local_34;\n  do {\n    if (uVar3 == 0) {\n      if (iVar2 == *(int *)(in_GS_OFFSET + 0x14)) {\n        return piVar4;\n      }\n                    /* WARNING: Subroutine does not return */\n      FUN_0008d800();\n    }\n    local_34 = puVar1 + 1;\n    switch(uVar3) {\n    case 1:\n      goto code_r0x000387f0;\n    case 2:\n      uVar3 = *local_34;\n      iVar10 = *piVar4;\n      local_34 = puVar1 + 2;\n      iVar8 = piVar4[4];\n      iVar5 = iVar10 + 1;\n      *piVar4 = iVar5;\n      if (piVar4[7] < iVar5) {\n        iVar10 = iVar10 + 0x101;\n        if (piVar4[5] == 0) {\n          piVar4[7] = iVar10;\n          iVar8 = FUN_0001dc50(iVar8,iVar10,1);\n          iVar5 = *piVar4;\n          piVar4[4] = iVar8;\n        }\n        else {\n          piVar4[7] = iVar10;\n          iVar9 = piVar4[5] - iVar8;\n          iVar8 = FUN_0001dc50(iVar8,iVar10,1);\n          iVar5 = *piVar4;\n          piVar4[4] = iVar8;\n          piVar4[5] = iVar9 + iVar8;\n        }\n      }\n      *(char *)(iVar8 + -1 + iVar5) = (char)uVar3;\n      goto LAB_000385f8;\n    case 3:\n      sVar6 = puVar1[2];\n      pvVar7 = (void *)*local_34;\n      iVar5 = piVar4[4];\n      iVar10 = *piVar4 + sVar6;\n      *piVar4 = iVar10;\n      if (piVar4[7] < iVar10) {\n        iVar10 = iVar10 + 0x100;\n        if (piVar4[5] == 0) {\n          piVar4[7] = iVar10;\n          iVar5 = FUN_0001dc50(iVar5,iVar10,1);\n          iVar10 = *piVar4;\n          piVar4[4] = iVar5;\n        }\n        else {\n          iVar8 = piVar4[5] - iVar5;\n          piVar4[7] = iVar10;\n          iVar5 = FUN_0001dc50(iVar5,iVar10,1);\n          iVar10 = *piVar4;\n          piVar4[4] = iVar5;\n          piVar4[5] = iVar8 + iVar5;\n        }\n      }\n      memcpy((void *)((iVar10 - sVar6) + iVar5),pvVar7,sVar6);\n      local_34 = puVar1 + 3;\n      goto LAB_000385f8;\n    case 4:\n      __s = (char *)*local_34;\n      iVar10 = *piVar4;\n      iVar8 = piVar4[4];\n      iVar5 = iVar10 + 4;\n      *piVar4 = iVar5;\n      if (piVar4[7] < iVar5) {\n        iVar10 = iVar10 + 0x104;\n        if (piVar4[5] == 0) {\n          piVar4[7] = iVar10;\n          iVar8 = FUN_0001dc50(iVar8,iVar10,1);\n          iVar5 = *piVar4;\n          piVar4[4] = iVar8;\n        }\n        else {\n          piVar4[7] = iVar10;\n          iVar9 = piVar4[5] - iVar8;\n          iVar8 = FUN_0001dc50(iVar8,iVar10,1);\n          iVar5 = *piVar4;\n          piVar4[4] = iVar8;\n          piVar4[5] = iVar9 + iVar8;\n        }\n      }\n      *(undefined4 *)(iVar8 + -4 + iVar5) = 0;\n      piVar4[6] = *piVar4;\n      strlen(__s);\n      FUN_000378c0();\n      local_34 = puVar1 + 2;\n      goto LAB_000385f8;\n    case 5:\n      uVar3 = *local_34;\n      puVar1 = puVar1 + 2;\n      sVar6 = FUN_00056940(uVar3);\n      pvVar7 = (void *)FUN_0001db90(sVar6,1);\n      FUN_00056ac0(pvVar7,uVar3);\n      iVar5 = *piVar4 + sVar6;\n      *piVar4 = iVar5;\n      if (piVar4[7] < iVar5) {\n        iVar10 = piVar4[5];\n        iVar5 = iVar5 + 0x100;\n        iVar8 = piVar4[4];\n        if (iVar10 == 0) {\n          piVar4[7] = iVar5;\n          iVar9 = FUN_0001dc50(iVar8,iVar5,1);\n          iVar5 = *piVar4;\n          piVar4[4] = iVar9;\n        }\n        else {\n          piVar4[7] = iVar5;\n          iVar9 = FUN_0001dc50(iVar8,iVar5,1);\n          iVar5 = *piVar4;\n          piVar4[4] = iVar9;\n          piVar4[5] = (iVar10 - iVar8) + iVar9;\n        }\n      }\n      else {\n        iVar9 = piVar4[4];\n      }\n      memcpy((void *)((iVar5 - sVar6) + iVar9),pvVar7,sVar6);\n      FUN_0001dd30(pvVar7);\n      uVar3 = *puVar1;\n      break;\n    default:\n      goto LAB_000385f8;\n    }\n  } while( true );\ncode_r0x000387f0:\n  uVar3 = *local_34;\n  iVar10 = *piVar4;\n  local_34 = puVar1 + 2;\n  iVar8 = piVar4[4];\n  iVar5 = iVar10 + 4;\n  *piVar4 = iVar5;\n  if (piVar4[7] < iVar5) {\n    iVar10 = iVar10 + 0x104;\n    if (piVar4[5] == 0) {\n      piVar4[7] = iVar10;\n      iVar8 = FUN_0001dc50(iVar8,iVar10,1);\n      iVar5 = *piVar4;\n      piVar4[4] = iVar8;\n    }\n    else {\n      piVar4[7] = iVar10;\n      iVar9 = piVar4[5] - iVar8;\n      iVar8 = FUN_0001dc50(iVar8,iVar10,1);\n      iVar5 = *piVar4;\n      piVar4[4] = iVar8;\n      piVar4[5] = iVar9 + iVar8;\n    }\n  }\n  *(uint *)(iVar8 + -4 + iVar5) =\n       uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 | uVar3 << 0x18;\n  goto LAB_000385f8;\n}" primitive_type (pointer_declarator "* __regparm3 FUN_00038570(int param_1,uint *param_2)" * (ERROR "__regparm3" identifier) (function_declarator "FUN_00038570(int param_1,uint *param_2)" identifier (parameter_list "(int param_1,uint *param_2)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "uint *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) )))) (compound_statement "{\n  uint *puVar1;\n  int iVar2;\n  uint uVar3;\n  char *__s;\n  int *piVar4;\n  int iVar5;\n  size_t sVar6;\n  void *pvVar7;\n  int iVar8;\n  int iVar9;\n  int iVar10;\n  int in_GS_OFFSET;\n  uint *local_34;\n  \n  iVar2 = *(int *)(in_GS_OFFSET + 0x14);\n  piVar4 = (int *)FUN_0001db90(1,0x2c);\n  piVar4[4] = 0;\n  piVar4[5] = 0;\n  *piVar4 = 0xd;\n  piVar4[7] = 0x10d;\n  iVar5 = FUN_0001dc50(0,0x10d,1);\n  piVar4[4] = iVar5;\n  *(char *)(iVar5 + -1 + *piVar4) = (char)param_1;\n  piVar4[2] = param_1;\n  piVar4[5] = *piVar4 + piVar4[4];\n  piVar4[9] = 0;\n  piVar4[10] = 0;\n  local_34 = param_2;\nLAB_000385f8:\n  uVar3 = *local_34;\n  puVar1 = local_34;\n  do {\n    if (uVar3 == 0) {\n      if (iVar2 == *(int *)(in_GS_OFFSET + 0x14)) {\n        return piVar4;\n      }\n                    /* WARNING: Subroutine does not return */\n      FUN_0008d800();\n    }\n    local_34 = puVar1 + 1;\n    switch(uVar3) {\n    case 1:\n      goto code_r0x000387f0;\n    case 2:\n      uVar3 = *local_34;\n      iVar10 = *piVar4;\n      local_34 = puVar1 + 2;\n      iVar8 = piVar4[4];\n      iVar5 = iVar10 + 1;\n      *piVar4 = iVar5;\n      if (piVar4[7] < iVar5) {\n        iVar10 = iVar10 + 0x101;\n        if (piVar4[5] == 0) {\n          piVar4[7] = iVar10;\n          iVar8 = FUN_0001dc50(iVar8,iVar10,1);\n          iVar5 = *piVar4;\n          piVar4[4] = iVar8;\n        }\n        else {\n          piVar4[7] = iVar10;\n          iVar9 = piVar4[5] - iVar8;\n          iVar8 = FUN_0001dc50(iVar8,iVar10,1);\n          iVar5 = *piVar4;\n          piVar4[4] = iVar8;\n          piVar4[5] = iVar9 + iVar8;\n        }\n      }\n      *(char *)(iVar8 + -1 + iVar5) = (char)uVar3;\n      goto LAB_000385f8;\n    case 3:\n      sVar6 = puVar1[2];\n      pvVar7 = (void *)*local_34;\n      iVar5 = piVar4[4];\n      iVar10 = *piVar4 + sVar6;\n      *piVar4 = iVar10;\n      if (piVar4[7] < iVar10) {\n        iVar10 = iVar10 + 0x100;\n        if (piVar4[5] == 0) {\n          piVar4[7] = iVar10;\n          iVar5 = FUN_0001dc50(iVar5,iVar10,1);\n          iVar10 = *piVar4;\n          piVar4[4] = iVar5;\n        }\n        else {\n          iVar8 = piVar4[5] - iVar5;\n          piVar4[7] = iVar10;\n          iVar5 = FUN_0001dc50(iVar5,iVar10,1);\n          iVar10 = *piVar4;\n          piVar4[4] = iVar5;\n          piVar4[5] = iVar8 + iVar5;\n        }\n      }\n      memcpy((void *)((iVar10 - sVar6) + iVar5),pvVar7,sVar6);\n      local_34 = puVar1 + 3;\n      goto LAB_000385f8;\n    case 4:\n      __s = (char *)*local_34;\n      iVar10 = *piVar4;\n      iVar8 = piVar4[4];\n      iVar5 = iVar10 + 4;\n      *piVar4 = iVar5;\n      if (piVar4[7] < iVar5) {\n        iVar10 = iVar10 + 0x104;\n        if (piVar4[5] == 0) {\n          piVar4[7] = iVar10;\n          iVar8 = FUN_0001dc50(iVar8,iVar10,1);\n          iVar5 = *piVar4;\n          piVar4[4] = iVar8;\n        }\n        else {\n          piVar4[7] = iVar10;\n          iVar9 = piVar4[5] - iVar8;\n          iVar8 = FUN_0001dc50(iVar8,iVar10,1);\n          iVar5 = *piVar4;\n          piVar4[4] = iVar8;\n          piVar4[5] = iVar9 + iVar8;\n        }\n      }\n      *(undefined4 *)(iVar8 + -4 + iVar5) = 0;\n      piVar4[6] = *piVar4;\n      strlen(__s);\n      FUN_000378c0();\n      local_34 = puVar1 + 2;\n      goto LAB_000385f8;\n    case 5:\n      uVar3 = *local_34;\n      puVar1 = puVar1 + 2;\n      sVar6 = FUN_00056940(uVar3);\n      pvVar7 = (void *)FUN_0001db90(sVar6,1);\n      FUN_00056ac0(pvVar7,uVar3);\n      iVar5 = *piVar4 + sVar6;\n      *piVar4 = iVar5;\n      if (piVar4[7] < iVar5) {\n        iVar10 = piVar4[5];\n        iVar5 = iVar5 + 0x100;\n        iVar8 = piVar4[4];\n        if (iVar10 == 0) {\n          piVar4[7] = iVar5;\n          iVar9 = FUN_0001dc50(iVar8,iVar5,1);\n          iVar5 = *piVar4;\n          piVar4[4] = iVar9;\n        }\n        else {\n          piVar4[7] = iVar5;\n          iVar9 = FUN_0001dc50(iVar8,iVar5,1);\n          iVar5 = *piVar4;\n          piVar4[4] = iVar9;\n          piVar4[5] = (iVar10 - iVar8) + iVar9;\n        }\n      }\n      else {\n        iVar9 = piVar4[4];\n      }\n      memcpy((void *)((iVar5 - sVar6) + iVar9),pvVar7,sVar6);\n      FUN_0001dd30(pvVar7);\n      uVar3 = *puVar1;\n      break;\n    default:\n      goto LAB_000385f8;\n    }\n  } while( true );\ncode_r0x000387f0:\n  uVar3 = *local_34;\n  iVar10 = *piVar4;\n  local_34 = puVar1 + 2;\n  iVar8 = piVar4[4];\n  iVar5 = iVar10 + 4;\n  *piVar4 = iVar5;\n  if (piVar4[7] < iVar5) {\n    iVar10 = iVar10 + 0x104;\n    if (piVar4[5] == 0) {\n      piVar4[7] = iVar10;\n      iVar8 = FUN_0001dc50(iVar8,iVar10,1);\n      iVar5 = *piVar4;\n      piVar4[4] = iVar8;\n    }\n    else {\n      piVar4[7] = iVar10;\n      iVar9 = piVar4[5] - iVar8;\n      iVar8 = FUN_0001dc50(iVar8,iVar10,1);\n      iVar5 = *piVar4;\n      piVar4[4] = iVar8;\n      piVar4[5] = iVar9 + iVar8;\n    }\n  }\n  *(uint *)(iVar8 + -4 + iVar5) =\n       uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 | uVar3 << 0x18;\n  goto LAB_000385f8;\n}" { (declaration "uint *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "char *__s;" primitive_type (pointer_declarator "*__s" * identifier) ;) (declaration "int *piVar4;" primitive_type (pointer_declarator "*piVar4" * identifier) ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "size_t sVar6;" primitive_type identifier ;) (declaration "void *pvVar7;" primitive_type (pointer_declarator "*pvVar7" * identifier) ;) (declaration "int iVar8;" primitive_type identifier ;) (declaration "int iVar9;" primitive_type identifier ;) (declaration "int iVar10;" primitive_type identifier ;) (declaration "int in_GS_OFFSET;" primitive_type identifier ;) (declaration "uint *local_34;" type_identifier (pointer_declarator "*local_34" * identifier) ;) (expression_statement "iVar2 = *(int *)(in_GS_OFFSET + 0x14);" (assignment_expression "iVar2 = *(int *)(in_GS_OFFSET + 0x14)" identifier = (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) ;) (expression_statement "piVar4 = (int *)FUN_0001db90(1,0x2c);" (assignment_expression "piVar4 = (int *)FUN_0001db90(1,0x2c)" identifier = (cast_expression "(int *)FUN_0001db90(1,0x2c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_0001db90(1,0x2c)" identifier (argument_list "(1,0x2c)" ( number_literal , number_literal ))))) ;) (expression_statement "piVar4[4] = 0;" (assignment_expression "piVar4[4] = 0" (subscript_expression "piVar4[4]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "piVar4[5] = 0;" (assignment_expression "piVar4[5] = 0" (subscript_expression "piVar4[5]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*piVar4 = 0xd;" (assignment_expression "*piVar4 = 0xd" (pointer_expression "*piVar4" * identifier) = number_literal) ;) (expression_statement "piVar4[7] = 0x10d;" (assignment_expression "piVar4[7] = 0x10d" (subscript_expression "piVar4[7]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "iVar5 = FUN_0001dc50(0,0x10d,1);" (assignment_expression "iVar5 = FUN_0001dc50(0,0x10d,1)" identifier = (call_expression "FUN_0001dc50(0,0x10d,1)" identifier (argument_list "(0,0x10d,1)" ( number_literal , number_literal , number_literal )))) ;) (expression_statement "piVar4[4] = iVar5;" (assignment_expression "piVar4[4] = iVar5" (subscript_expression "piVar4[4]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*(char *)(iVar5 + -1 + *piVar4) = (char)param_1;" (assignment_expression "*(char *)(iVar5 + -1 + *piVar4) = (char)param_1" (pointer_expression "*(char *)(iVar5 + -1 + *piVar4)" * (cast_expression "(char *)(iVar5 + -1 + *piVar4)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + -1 + *piVar4)" ( (binary_expression "iVar5 + -1 + *piVar4" (binary_expression "iVar5 + -1" identifier + number_literal) + (pointer_expression "*piVar4" * identifier)) )))) = (cast_expression "(char)param_1" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (expression_statement "piVar4[2] = param_1;" (assignment_expression "piVar4[2] = param_1" (subscript_expression "piVar4[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "piVar4[5] = *piVar4 + piVar4[4];" (assignment_expression "piVar4[5] = *piVar4 + piVar4[4]" (subscript_expression "piVar4[5]" identifier [ number_literal ]) = (binary_expression "*piVar4 + piVar4[4]" (pointer_expression "*piVar4" * identifier) + (subscript_expression "piVar4[4]" identifier [ number_literal ]))) ;) (expression_statement "piVar4[9] = 0;" (assignment_expression "piVar4[9] = 0" (subscript_expression "piVar4[9]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "piVar4[10] = 0;" (assignment_expression "piVar4[10] = 0" (subscript_expression "piVar4[10]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "local_34 = param_2;" (assignment_expression "local_34 = param_2" identifier = identifier) ;) (labeled_statement "LAB_000385f8:\n  uVar3 = *local_34;" statement_identifier : (expression_statement "uVar3 = *local_34;" (assignment_expression "uVar3 = *local_34" identifier = (pointer_expression "*local_34" * identifier)) ;)) (expression_statement "puVar1 = local_34;" (assignment_expression "puVar1 = local_34" identifier = identifier) ;) (do_statement "do {\n    if (uVar3 == 0) {\n      if (iVar2 == *(int *)(in_GS_OFFSET + 0x14)) {\n        return piVar4;\n      }\n                    /* WARNING: Subroutine does not return */\n      FUN_0008d800();\n    }\n    local_34 = puVar1 + 1;\n    switch(uVar3) {\n    case 1:\n      goto code_r0x000387f0;\n    case 2:\n      uVar3 = *local_34;\n      iVar10 = *piVar4;\n      local_34 = puVar1 + 2;\n      iVar8 = piVar4[4];\n      iVar5 = iVar10 + 1;\n      *piVar4 = iVar5;\n      if (piVar4[7] < iVar5) {\n        iVar10 = iVar10 + 0x101;\n        if (piVar4[5] == 0) {\n          piVar4[7] = iVar10;\n          iVar8 = FUN_0001dc50(iVar8,iVar10,1);\n          iVar5 = *piVar4;\n          piVar4[4] = iVar8;\n        }\n        else {\n          piVar4[7] = iVar10;\n          iVar9 = piVar4[5] - iVar8;\n          iVar8 = FUN_0001dc50(iVar8,iVar10,1);\n          iVar5 = *piVar4;\n          piVar4[4] = iVar8;\n          piVar4[5] = iVar9 + iVar8;\n        }\n      }\n      *(char *)(iVar8 + -1 + iVar5) = (char)uVar3;\n      goto LAB_000385f8;\n    case 3:\n      sVar6 = puVar1[2];\n      pvVar7 = (void *)*local_34;\n      iVar5 = piVar4[4];\n      iVar10 = *piVar4 + sVar6;\n      *piVar4 = iVar10;\n      if (piVar4[7] < iVar10) {\n        iVar10 = iVar10 + 0x100;\n        if (piVar4[5] == 0) {\n          piVar4[7] = iVar10;\n          iVar5 = FUN_0001dc50(iVar5,iVar10,1);\n          iVar10 = *piVar4;\n          piVar4[4] = iVar5;\n        }\n        else {\n          iVar8 = piVar4[5] - iVar5;\n          piVar4[7] = iVar10;\n          iVar5 = FUN_0001dc50(iVar5,iVar10,1);\n          iVar10 = *piVar4;\n          piVar4[4] = iVar5;\n          piVar4[5] = iVar8 + iVar5;\n        }\n      }\n      memcpy((void *)((iVar10 - sVar6) + iVar5),pvVar7,sVar6);\n      local_34 = puVar1 + 3;\n      goto LAB_000385f8;\n    case 4:\n      __s = (char *)*local_34;\n      iVar10 = *piVar4;\n      iVar8 = piVar4[4];\n      iVar5 = iVar10 + 4;\n      *piVar4 = iVar5;\n      if (piVar4[7] < iVar5) {\n        iVar10 = iVar10 + 0x104;\n        if (piVar4[5] == 0) {\n          piVar4[7] = iVar10;\n          iVar8 = FUN_0001dc50(iVar8,iVar10,1);\n          iVar5 = *piVar4;\n          piVar4[4] = iVar8;\n        }\n        else {\n          piVar4[7] = iVar10;\n          iVar9 = piVar4[5] - iVar8;\n          iVar8 = FUN_0001dc50(iVar8,iVar10,1);\n          iVar5 = *piVar4;\n          piVar4[4] = iVar8;\n          piVar4[5] = iVar9 + iVar8;\n        }\n      }\n      *(undefined4 *)(iVar8 + -4 + iVar5) = 0;\n      piVar4[6] = *piVar4;\n      strlen(__s);\n      FUN_000378c0();\n      local_34 = puVar1 + 2;\n      goto LAB_000385f8;\n    case 5:\n      uVar3 = *local_34;\n      puVar1 = puVar1 + 2;\n      sVar6 = FUN_00056940(uVar3);\n      pvVar7 = (void *)FUN_0001db90(sVar6,1);\n      FUN_00056ac0(pvVar7,uVar3);\n      iVar5 = *piVar4 + sVar6;\n      *piVar4 = iVar5;\n      if (piVar4[7] < iVar5) {\n        iVar10 = piVar4[5];\n        iVar5 = iVar5 + 0x100;\n        iVar8 = piVar4[4];\n        if (iVar10 == 0) {\n          piVar4[7] = iVar5;\n          iVar9 = FUN_0001dc50(iVar8,iVar5,1);\n          iVar5 = *piVar4;\n          piVar4[4] = iVar9;\n        }\n        else {\n          piVar4[7] = iVar5;\n          iVar9 = FUN_0001dc50(iVar8,iVar5,1);\n          iVar5 = *piVar4;\n          piVar4[4] = iVar9;\n          piVar4[5] = (iVar10 - iVar8) + iVar9;\n        }\n      }\n      else {\n        iVar9 = piVar4[4];\n      }\n      memcpy((void *)((iVar5 - sVar6) + iVar9),pvVar7,sVar6);\n      FUN_0001dd30(pvVar7);\n      uVar3 = *puVar1;\n      break;\n    default:\n      goto LAB_000385f8;\n    }\n  } while( true );" do (compound_statement "{\n    if (uVar3 == 0) {\n      if (iVar2 == *(int *)(in_GS_OFFSET + 0x14)) {\n        return piVar4;\n      }\n                    /* WARNING: Subroutine does not return */\n      FUN_0008d800();\n    }\n    local_34 = puVar1 + 1;\n    switch(uVar3) {\n    case 1:\n      goto code_r0x000387f0;\n    case 2:\n      uVar3 = *local_34;\n      iVar10 = *piVar4;\n      local_34 = puVar1 + 2;\n      iVar8 = piVar4[4];\n      iVar5 = iVar10 + 1;\n      *piVar4 = iVar5;\n      if (piVar4[7] < iVar5) {\n        iVar10 = iVar10 + 0x101;\n        if (piVar4[5] == 0) {\n          piVar4[7] = iVar10;\n          iVar8 = FUN_0001dc50(iVar8,iVar10,1);\n          iVar5 = *piVar4;\n          piVar4[4] = iVar8;\n        }\n        else {\n          piVar4[7] = iVar10;\n          iVar9 = piVar4[5] - iVar8;\n          iVar8 = FUN_0001dc50(iVar8,iVar10,1);\n          iVar5 = *piVar4;\n          piVar4[4] = iVar8;\n          piVar4[5] = iVar9 + iVar8;\n        }\n      }\n      *(char *)(iVar8 + -1 + iVar5) = (char)uVar3;\n      goto LAB_000385f8;\n    case 3:\n      sVar6 = puVar1[2];\n      pvVar7 = (void *)*local_34;\n      iVar5 = piVar4[4];\n      iVar10 = *piVar4 + sVar6;\n      *piVar4 = iVar10;\n      if (piVar4[7] < iVar10) {\n        iVar10 = iVar10 + 0x100;\n        if (piVar4[5] == 0) {\n          piVar4[7] = iVar10;\n          iVar5 = FUN_0001dc50(iVar5,iVar10,1);\n          iVar10 = *piVar4;\n          piVar4[4] = iVar5;\n        }\n        else {\n          iVar8 = piVar4[5] - iVar5;\n          piVar4[7] = iVar10;\n          iVar5 = FUN_0001dc50(iVar5,iVar10,1);\n          iVar10 = *piVar4;\n          piVar4[4] = iVar5;\n          piVar4[5] = iVar8 + iVar5;\n        }\n      }\n      memcpy((void *)((iVar10 - sVar6) + iVar5),pvVar7,sVar6);\n      local_34 = puVar1 + 3;\n      goto LAB_000385f8;\n    case 4:\n      __s = (char *)*local_34;\n      iVar10 = *piVar4;\n      iVar8 = piVar4[4];\n      iVar5 = iVar10 + 4;\n      *piVar4 = iVar5;\n      if (piVar4[7] < iVar5) {\n        iVar10 = iVar10 + 0x104;\n        if (piVar4[5] == 0) {\n          piVar4[7] = iVar10;\n          iVar8 = FUN_0001dc50(iVar8,iVar10,1);\n          iVar5 = *piVar4;\n          piVar4[4] = iVar8;\n        }\n        else {\n          piVar4[7] = iVar10;\n          iVar9 = piVar4[5] - iVar8;\n          iVar8 = FUN_0001dc50(iVar8,iVar10,1);\n          iVar5 = *piVar4;\n          piVar4[4] = iVar8;\n          piVar4[5] = iVar9 + iVar8;\n        }\n      }\n      *(undefined4 *)(iVar8 + -4 + iVar5) = 0;\n      piVar4[6] = *piVar4;\n      strlen(__s);\n      FUN_000378c0();\n      local_34 = puVar1 + 2;\n      goto LAB_000385f8;\n    case 5:\n      uVar3 = *local_34;\n      puVar1 = puVar1 + 2;\n      sVar6 = FUN_00056940(uVar3);\n      pvVar7 = (void *)FUN_0001db90(sVar6,1);\n      FUN_00056ac0(pvVar7,uVar3);\n      iVar5 = *piVar4 + sVar6;\n      *piVar4 = iVar5;\n      if (piVar4[7] < iVar5) {\n        iVar10 = piVar4[5];\n        iVar5 = iVar5 + 0x100;\n        iVar8 = piVar4[4];\n        if (iVar10 == 0) {\n          piVar4[7] = iVar5;\n          iVar9 = FUN_0001dc50(iVar8,iVar5,1);\n          iVar5 = *piVar4;\n          piVar4[4] = iVar9;\n        }\n        else {\n          piVar4[7] = iVar5;\n          iVar9 = FUN_0001dc50(iVar8,iVar5,1);\n          iVar5 = *piVar4;\n          piVar4[4] = iVar9;\n          piVar4[5] = (iVar10 - iVar8) + iVar9;\n        }\n      }\n      else {\n        iVar9 = piVar4[4];\n      }\n      memcpy((void *)((iVar5 - sVar6) + iVar9),pvVar7,sVar6);\n      FUN_0001dd30(pvVar7);\n      uVar3 = *puVar1;\n      break;\n    default:\n      goto LAB_000385f8;\n    }\n  }" { (if_statement "if (uVar3 == 0) {\n      if (iVar2 == *(int *)(in_GS_OFFSET + 0x14)) {\n        return piVar4;\n      }\n                    /* WARNING: Subroutine does not return */\n      FUN_0008d800();\n    }" if (parenthesized_expression "(uVar3 == 0)" ( (binary_expression "uVar3 == 0" identifier == number_literal) )) (compound_statement "{\n      if (iVar2 == *(int *)(in_GS_OFFSET + 0x14)) {\n        return piVar4;\n      }\n                    /* WARNING: Subroutine does not return */\n      FUN_0008d800();\n    }" { (if_statement "if (iVar2 == *(int *)(in_GS_OFFSET + 0x14)) {\n        return piVar4;\n      }" if (parenthesized_expression "(iVar2 == *(int *)(in_GS_OFFSET + 0x14))" ( (binary_expression "iVar2 == *(int *)(in_GS_OFFSET + 0x14)" identifier == (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) )) (compound_statement "{\n        return piVar4;\n      }" { (return_statement "return piVar4;" return identifier ;) })) comment (expression_statement "FUN_0008d800();" (call_expression "FUN_0008d800()" identifier (argument_list "()" ( ))) ;) })) (expression_statement "local_34 = puVar1 + 1;" (assignment_expression "local_34 = puVar1 + 1" identifier = (binary_expression "puVar1 + 1" identifier + number_literal)) ;) (switch_statement "switch(uVar3) {\n    case 1:\n      goto code_r0x000387f0;\n    case 2:\n      uVar3 = *local_34;\n      iVar10 = *piVar4;\n      local_34 = puVar1 + 2;\n      iVar8 = piVar4[4];\n      iVar5 = iVar10 + 1;\n      *piVar4 = iVar5;\n      if (piVar4[7] < iVar5) {\n        iVar10 = iVar10 + 0x101;\n        if (piVar4[5] == 0) {\n          piVar4[7] = iVar10;\n          iVar8 = FUN_0001dc50(iVar8,iVar10,1);\n          iVar5 = *piVar4;\n          piVar4[4] = iVar8;\n        }\n        else {\n          piVar4[7] = iVar10;\n          iVar9 = piVar4[5] - iVar8;\n          iVar8 = FUN_0001dc50(iVar8,iVar10,1);\n          iVar5 = *piVar4;\n          piVar4[4] = iVar8;\n          piVar4[5] = iVar9 + iVar8;\n        }\n      }\n      *(char *)(iVar8 + -1 + iVar5) = (char)uVar3;\n      goto LAB_000385f8;\n    case 3:\n      sVar6 = puVar1[2];\n      pvVar7 = (void *)*local_34;\n      iVar5 = piVar4[4];\n      iVar10 = *piVar4 + sVar6;\n      *piVar4 = iVar10;\n      if (piVar4[7] < iVar10) {\n        iVar10 = iVar10 + 0x100;\n        if (piVar4[5] == 0) {\n          piVar4[7] = iVar10;\n          iVar5 = FUN_0001dc50(iVar5,iVar10,1);\n          iVar10 = *piVar4;\n          piVar4[4] = iVar5;\n        }\n        else {\n          iVar8 = piVar4[5] - iVar5;\n          piVar4[7] = iVar10;\n          iVar5 = FUN_0001dc50(iVar5,iVar10,1);\n          iVar10 = *piVar4;\n          piVar4[4] = iVar5;\n          piVar4[5] = iVar8 + iVar5;\n        }\n      }\n      memcpy((void *)((iVar10 - sVar6) + iVar5),pvVar7,sVar6);\n      local_34 = puVar1 + 3;\n      goto LAB_000385f8;\n    case 4:\n      __s = (char *)*local_34;\n      iVar10 = *piVar4;\n      iVar8 = piVar4[4];\n      iVar5 = iVar10 + 4;\n      *piVar4 = iVar5;\n      if (piVar4[7] < iVar5) {\n        iVar10 = iVar10 + 0x104;\n        if (piVar4[5] == 0) {\n          piVar4[7] = iVar10;\n          iVar8 = FUN_0001dc50(iVar8,iVar10,1);\n          iVar5 = *piVar4;\n          piVar4[4] = iVar8;\n        }\n        else {\n          piVar4[7] = iVar10;\n          iVar9 = piVar4[5] - iVar8;\n          iVar8 = FUN_0001dc50(iVar8,iVar10,1);\n          iVar5 = *piVar4;\n          piVar4[4] = iVar8;\n          piVar4[5] = iVar9 + iVar8;\n        }\n      }\n      *(undefined4 *)(iVar8 + -4 + iVar5) = 0;\n      piVar4[6] = *piVar4;\n      strlen(__s);\n      FUN_000378c0();\n      local_34 = puVar1 + 2;\n      goto LAB_000385f8;\n    case 5:\n      uVar3 = *local_34;\n      puVar1 = puVar1 + 2;\n      sVar6 = FUN_00056940(uVar3);\n      pvVar7 = (void *)FUN_0001db90(sVar6,1);\n      FUN_00056ac0(pvVar7,uVar3);\n      iVar5 = *piVar4 + sVar6;\n      *piVar4 = iVar5;\n      if (piVar4[7] < iVar5) {\n        iVar10 = piVar4[5];\n        iVar5 = iVar5 + 0x100;\n        iVar8 = piVar4[4];\n        if (iVar10 == 0) {\n          piVar4[7] = iVar5;\n          iVar9 = FUN_0001dc50(iVar8,iVar5,1);\n          iVar5 = *piVar4;\n          piVar4[4] = iVar9;\n        }\n        else {\n          piVar4[7] = iVar5;\n          iVar9 = FUN_0001dc50(iVar8,iVar5,1);\n          iVar5 = *piVar4;\n          piVar4[4] = iVar9;\n          piVar4[5] = (iVar10 - iVar8) + iVar9;\n        }\n      }\n      else {\n        iVar9 = piVar4[4];\n      }\n      memcpy((void *)((iVar5 - sVar6) + iVar9),pvVar7,sVar6);\n      FUN_0001dd30(pvVar7);\n      uVar3 = *puVar1;\n      break;\n    default:\n      goto LAB_000385f8;\n    }" switch (parenthesized_expression "(uVar3)" ( identifier )) (compound_statement "{\n    case 1:\n      goto code_r0x000387f0;\n    case 2:\n      uVar3 = *local_34;\n      iVar10 = *piVar4;\n      local_34 = puVar1 + 2;\n      iVar8 = piVar4[4];\n      iVar5 = iVar10 + 1;\n      *piVar4 = iVar5;\n      if (piVar4[7] < iVar5) {\n        iVar10 = iVar10 + 0x101;\n        if (piVar4[5] == 0) {\n          piVar4[7] = iVar10;\n          iVar8 = FUN_0001dc50(iVar8,iVar10,1);\n          iVar5 = *piVar4;\n          piVar4[4] = iVar8;\n        }\n        else {\n          piVar4[7] = iVar10;\n          iVar9 = piVar4[5] - iVar8;\n          iVar8 = FUN_0001dc50(iVar8,iVar10,1);\n          iVar5 = *piVar4;\n          piVar4[4] = iVar8;\n          piVar4[5] = iVar9 + iVar8;\n        }\n      }\n      *(char *)(iVar8 + -1 + iVar5) = (char)uVar3;\n      goto LAB_000385f8;\n    case 3:\n      sVar6 = puVar1[2];\n      pvVar7 = (void *)*local_34;\n      iVar5 = piVar4[4];\n      iVar10 = *piVar4 + sVar6;\n      *piVar4 = iVar10;\n      if (piVar4[7] < iVar10) {\n        iVar10 = iVar10 + 0x100;\n        if (piVar4[5] == 0) {\n          piVar4[7] = iVar10;\n          iVar5 = FUN_0001dc50(iVar5,iVar10,1);\n          iVar10 = *piVar4;\n          piVar4[4] = iVar5;\n        }\n        else {\n          iVar8 = piVar4[5] - iVar5;\n          piVar4[7] = iVar10;\n          iVar5 = FUN_0001dc50(iVar5,iVar10,1);\n          iVar10 = *piVar4;\n          piVar4[4] = iVar5;\n          piVar4[5] = iVar8 + iVar5;\n        }\n      }\n      memcpy((void *)((iVar10 - sVar6) + iVar5),pvVar7,sVar6);\n      local_34 = puVar1 + 3;\n      goto LAB_000385f8;\n    case 4:\n      __s = (char *)*local_34;\n      iVar10 = *piVar4;\n      iVar8 = piVar4[4];\n      iVar5 = iVar10 + 4;\n      *piVar4 = iVar5;\n      if (piVar4[7] < iVar5) {\n        iVar10 = iVar10 + 0x104;\n        if (piVar4[5] == 0) {\n          piVar4[7] = iVar10;\n          iVar8 = FUN_0001dc50(iVar8,iVar10,1);\n          iVar5 = *piVar4;\n          piVar4[4] = iVar8;\n        }\n        else {\n          piVar4[7] = iVar10;\n          iVar9 = piVar4[5] - iVar8;\n          iVar8 = FUN_0001dc50(iVar8,iVar10,1);\n          iVar5 = *piVar4;\n          piVar4[4] = iVar8;\n          piVar4[5] = iVar9 + iVar8;\n        }\n      }\n      *(undefined4 *)(iVar8 + -4 + iVar5) = 0;\n      piVar4[6] = *piVar4;\n      strlen(__s);\n      FUN_000378c0();\n      local_34 = puVar1 + 2;\n      goto LAB_000385f8;\n    case 5:\n      uVar3 = *local_34;\n      puVar1 = puVar1 + 2;\n      sVar6 = FUN_00056940(uVar3);\n      pvVar7 = (void *)FUN_0001db90(sVar6,1);\n      FUN_00056ac0(pvVar7,uVar3);\n      iVar5 = *piVar4 + sVar6;\n      *piVar4 = iVar5;\n      if (piVar4[7] < iVar5) {\n        iVar10 = piVar4[5];\n        iVar5 = iVar5 + 0x100;\n        iVar8 = piVar4[4];\n        if (iVar10 == 0) {\n          piVar4[7] = iVar5;\n          iVar9 = FUN_0001dc50(iVar8,iVar5,1);\n          iVar5 = *piVar4;\n          piVar4[4] = iVar9;\n        }\n        else {\n          piVar4[7] = iVar5;\n          iVar9 = FUN_0001dc50(iVar8,iVar5,1);\n          iVar5 = *piVar4;\n          piVar4[4] = iVar9;\n          piVar4[5] = (iVar10 - iVar8) + iVar9;\n        }\n      }\n      else {\n        iVar9 = piVar4[4];\n      }\n      memcpy((void *)((iVar5 - sVar6) + iVar9),pvVar7,sVar6);\n      FUN_0001dd30(pvVar7);\n      uVar3 = *puVar1;\n      break;\n    default:\n      goto LAB_000385f8;\n    }" { (case_statement "case 1:\n      goto code_r0x000387f0;" case number_literal : (goto_statement "goto code_r0x000387f0;" goto statement_identifier ;)) (case_statement "case 2:\n      uVar3 = *local_34;\n      iVar10 = *piVar4;\n      local_34 = puVar1 + 2;\n      iVar8 = piVar4[4];\n      iVar5 = iVar10 + 1;\n      *piVar4 = iVar5;\n      if (piVar4[7] < iVar5) {\n        iVar10 = iVar10 + 0x101;\n        if (piVar4[5] == 0) {\n          piVar4[7] = iVar10;\n          iVar8 = FUN_0001dc50(iVar8,iVar10,1);\n          iVar5 = *piVar4;\n          piVar4[4] = iVar8;\n        }\n        else {\n          piVar4[7] = iVar10;\n          iVar9 = piVar4[5] - iVar8;\n          iVar8 = FUN_0001dc50(iVar8,iVar10,1);\n          iVar5 = *piVar4;\n          piVar4[4] = iVar8;\n          piVar4[5] = iVar9 + iVar8;\n        }\n      }\n      *(char *)(iVar8 + -1 + iVar5) = (char)uVar3;\n      goto LAB_000385f8;" case number_literal : (expression_statement "uVar3 = *local_34;" (assignment_expression "uVar3 = *local_34" identifier = (pointer_expression "*local_34" * identifier)) ;) (expression_statement "iVar10 = *piVar4;" (assignment_expression "iVar10 = *piVar4" identifier = (pointer_expression "*piVar4" * identifier)) ;) (expression_statement "local_34 = puVar1 + 2;" (assignment_expression "local_34 = puVar1 + 2" identifier = (binary_expression "puVar1 + 2" identifier + number_literal)) ;) (expression_statement "iVar8 = piVar4[4];" (assignment_expression "iVar8 = piVar4[4]" identifier = (subscript_expression "piVar4[4]" identifier [ number_literal ])) ;) (expression_statement "iVar5 = iVar10 + 1;" (assignment_expression "iVar5 = iVar10 + 1" identifier = (binary_expression "iVar10 + 1" identifier + number_literal)) ;) (expression_statement "*piVar4 = iVar5;" (assignment_expression "*piVar4 = iVar5" (pointer_expression "*piVar4" * identifier) = identifier) ;) (if_statement "if (piVar4[7] < iVar5) {\n        iVar10 = iVar10 + 0x101;\n        if (piVar4[5] == 0) {\n          piVar4[7] = iVar10;\n          iVar8 = FUN_0001dc50(iVar8,iVar10,1);\n          iVar5 = *piVar4;\n          piVar4[4] = iVar8;\n        }\n        else {\n          piVar4[7] = iVar10;\n          iVar9 = piVar4[5] - iVar8;\n          iVar8 = FUN_0001dc50(iVar8,iVar10,1);\n          iVar5 = *piVar4;\n          piVar4[4] = iVar8;\n          piVar4[5] = iVar9 + iVar8;\n        }\n      }" if (parenthesized_expression "(piVar4[7] < iVar5)" ( (binary_expression "piVar4[7] < iVar5" (subscript_expression "piVar4[7]" identifier [ number_literal ]) < identifier) )) (compound_statement "{\n        iVar10 = iVar10 + 0x101;\n        if (piVar4[5] == 0) {\n          piVar4[7] = iVar10;\n          iVar8 = FUN_0001dc50(iVar8,iVar10,1);\n          iVar5 = *piVar4;\n          piVar4[4] = iVar8;\n        }\n        else {\n          piVar4[7] = iVar10;\n          iVar9 = piVar4[5] - iVar8;\n          iVar8 = FUN_0001dc50(iVar8,iVar10,1);\n          iVar5 = *piVar4;\n          piVar4[4] = iVar8;\n          piVar4[5] = iVar9 + iVar8;\n        }\n      }" { (expression_statement "iVar10 = iVar10 + 0x101;" (assignment_expression "iVar10 = iVar10 + 0x101" identifier = (binary_expression "iVar10 + 0x101" identifier + number_literal)) ;) (if_statement "if (piVar4[5] == 0) {\n          piVar4[7] = iVar10;\n          iVar8 = FUN_0001dc50(iVar8,iVar10,1);\n          iVar5 = *piVar4;\n          piVar4[4] = iVar8;\n        }\n        else {\n          piVar4[7] = iVar10;\n          iVar9 = piVar4[5] - iVar8;\n          iVar8 = FUN_0001dc50(iVar8,iVar10,1);\n          iVar5 = *piVar4;\n          piVar4[4] = iVar8;\n          piVar4[5] = iVar9 + iVar8;\n        }" if (parenthesized_expression "(piVar4[5] == 0)" ( (binary_expression "piVar4[5] == 0" (subscript_expression "piVar4[5]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n          piVar4[7] = iVar10;\n          iVar8 = FUN_0001dc50(iVar8,iVar10,1);\n          iVar5 = *piVar4;\n          piVar4[4] = iVar8;\n        }" { (expression_statement "piVar4[7] = iVar10;" (assignment_expression "piVar4[7] = iVar10" (subscript_expression "piVar4[7]" identifier [ number_literal ]) = identifier) ;) (expression_statement "iVar8 = FUN_0001dc50(iVar8,iVar10,1);" (assignment_expression "iVar8 = FUN_0001dc50(iVar8,iVar10,1)" identifier = (call_expression "FUN_0001dc50(iVar8,iVar10,1)" identifier (argument_list "(iVar8,iVar10,1)" ( identifier , identifier , number_literal )))) ;) (expression_statement "iVar5 = *piVar4;" (assignment_expression "iVar5 = *piVar4" identifier = (pointer_expression "*piVar4" * identifier)) ;) (expression_statement "piVar4[4] = iVar8;" (assignment_expression "piVar4[4] = iVar8" (subscript_expression "piVar4[4]" identifier [ number_literal ]) = identifier) ;) }) (else_clause "else {\n          piVar4[7] = iVar10;\n          iVar9 = piVar4[5] - iVar8;\n          iVar8 = FUN_0001dc50(iVar8,iVar10,1);\n          iVar5 = *piVar4;\n          piVar4[4] = iVar8;\n          piVar4[5] = iVar9 + iVar8;\n        }" else (compound_statement "{\n          piVar4[7] = iVar10;\n          iVar9 = piVar4[5] - iVar8;\n          iVar8 = FUN_0001dc50(iVar8,iVar10,1);\n          iVar5 = *piVar4;\n          piVar4[4] = iVar8;\n          piVar4[5] = iVar9 + iVar8;\n        }" { (expression_statement "piVar4[7] = iVar10;" (assignment_expression "piVar4[7] = iVar10" (subscript_expression "piVar4[7]" identifier [ number_literal ]) = identifier) ;) (expression_statement "iVar9 = piVar4[5] - iVar8;" (assignment_expression "iVar9 = piVar4[5] - iVar8" identifier = (binary_expression "piVar4[5] - iVar8" (subscript_expression "piVar4[5]" identifier [ number_literal ]) - identifier)) ;) (expression_statement "iVar8 = FUN_0001dc50(iVar8,iVar10,1);" (assignment_expression "iVar8 = FUN_0001dc50(iVar8,iVar10,1)" identifier = (call_expression "FUN_0001dc50(iVar8,iVar10,1)" identifier (argument_list "(iVar8,iVar10,1)" ( identifier , identifier , number_literal )))) ;) (expression_statement "iVar5 = *piVar4;" (assignment_expression "iVar5 = *piVar4" identifier = (pointer_expression "*piVar4" * identifier)) ;) (expression_statement "piVar4[4] = iVar8;" (assignment_expression "piVar4[4] = iVar8" (subscript_expression "piVar4[4]" identifier [ number_literal ]) = identifier) ;) (expression_statement "piVar4[5] = iVar9 + iVar8;" (assignment_expression "piVar4[5] = iVar9 + iVar8" (subscript_expression "piVar4[5]" identifier [ number_literal ]) = (binary_expression "iVar9 + iVar8" identifier + identifier)) ;) }))) })) (expression_statement "*(char *)(iVar8 + -1 + iVar5) = (char)uVar3;" (assignment_expression "*(char *)(iVar8 + -1 + iVar5) = (char)uVar3" (pointer_expression "*(char *)(iVar8 + -1 + iVar5)" * (cast_expression "(char *)(iVar8 + -1 + iVar5)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + -1 + iVar5)" ( (binary_expression "iVar8 + -1 + iVar5" (binary_expression "iVar8 + -1" identifier + number_literal) + identifier) )))) = (cast_expression "(char)uVar3" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (goto_statement "goto LAB_000385f8;" goto statement_identifier ;)) (case_statement "case 3:\n      sVar6 = puVar1[2];\n      pvVar7 = (void *)*local_34;\n      iVar5 = piVar4[4];\n      iVar10 = *piVar4 + sVar6;\n      *piVar4 = iVar10;\n      if (piVar4[7] < iVar10) {\n        iVar10 = iVar10 + 0x100;\n        if (piVar4[5] == 0) {\n          piVar4[7] = iVar10;\n          iVar5 = FUN_0001dc50(iVar5,iVar10,1);\n          iVar10 = *piVar4;\n          piVar4[4] = iVar5;\n        }\n        else {\n          iVar8 = piVar4[5] - iVar5;\n          piVar4[7] = iVar10;\n          iVar5 = FUN_0001dc50(iVar5,iVar10,1);\n          iVar10 = *piVar4;\n          piVar4[4] = iVar5;\n          piVar4[5] = iVar8 + iVar5;\n        }\n      }\n      memcpy((void *)((iVar10 - sVar6) + iVar5),pvVar7,sVar6);\n      local_34 = puVar1 + 3;\n      goto LAB_000385f8;" case number_literal : (expression_statement "sVar6 = puVar1[2];" (assignment_expression "sVar6 = puVar1[2]" identifier = (subscript_expression "puVar1[2]" identifier [ number_literal ])) ;) (expression_statement "pvVar7 = (void *)*local_34;" (assignment_expression "pvVar7 = (void *)*local_34" identifier = (cast_expression "(void *)*local_34" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*local_34" * identifier))) ;) (expression_statement "iVar5 = piVar4[4];" (assignment_expression "iVar5 = piVar4[4]" identifier = (subscript_expression "piVar4[4]" identifier [ number_literal ])) ;) (expression_statement "iVar10 = *piVar4 + sVar6;" (assignment_expression "iVar10 = *piVar4 + sVar6" identifier = (binary_expression "*piVar4 + sVar6" (pointer_expression "*piVar4" * identifier) + identifier)) ;) (expression_statement "*piVar4 = iVar10;" (assignment_expression "*piVar4 = iVar10" (pointer_expression "*piVar4" * identifier) = identifier) ;) (if_statement "if (piVar4[7] < iVar10) {\n        iVar10 = iVar10 + 0x100;\n        if (piVar4[5] == 0) {\n          piVar4[7] = iVar10;\n          iVar5 = FUN_0001dc50(iVar5,iVar10,1);\n          iVar10 = *piVar4;\n          piVar4[4] = iVar5;\n        }\n        else {\n          iVar8 = piVar4[5] - iVar5;\n          piVar4[7] = iVar10;\n          iVar5 = FUN_0001dc50(iVar5,iVar10,1);\n          iVar10 = *piVar4;\n          piVar4[4] = iVar5;\n          piVar4[5] = iVar8 + iVar5;\n        }\n      }" if (parenthesized_expression "(piVar4[7] < iVar10)" ( (binary_expression "piVar4[7] < iVar10" (subscript_expression "piVar4[7]" identifier [ number_literal ]) < identifier) )) (compound_statement "{\n        iVar10 = iVar10 + 0x100;\n        if (piVar4[5] == 0) {\n          piVar4[7] = iVar10;\n          iVar5 = FUN_0001dc50(iVar5,iVar10,1);\n          iVar10 = *piVar4;\n          piVar4[4] = iVar5;\n        }\n        else {\n          iVar8 = piVar4[5] - iVar5;\n          piVar4[7] = iVar10;\n          iVar5 = FUN_0001dc50(iVar5,iVar10,1);\n          iVar10 = *piVar4;\n          piVar4[4] = iVar5;\n          piVar4[5] = iVar8 + iVar5;\n        }\n      }" { (expression_statement "iVar10 = iVar10 + 0x100;" (assignment_expression "iVar10 = iVar10 + 0x100" identifier = (binary_expression "iVar10 + 0x100" identifier + number_literal)) ;) (if_statement "if (piVar4[5] == 0) {\n          piVar4[7] = iVar10;\n          iVar5 = FUN_0001dc50(iVar5,iVar10,1);\n          iVar10 = *piVar4;\n          piVar4[4] = iVar5;\n        }\n        else {\n          iVar8 = piVar4[5] - iVar5;\n          piVar4[7] = iVar10;\n          iVar5 = FUN_0001dc50(iVar5,iVar10,1);\n          iVar10 = *piVar4;\n          piVar4[4] = iVar5;\n          piVar4[5] = iVar8 + iVar5;\n        }" if (parenthesized_expression "(piVar4[5] == 0)" ( (binary_expression "piVar4[5] == 0" (subscript_expression "piVar4[5]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n          piVar4[7] = iVar10;\n          iVar5 = FUN_0001dc50(iVar5,iVar10,1);\n          iVar10 = *piVar4;\n          piVar4[4] = iVar5;\n        }" { (expression_statement "piVar4[7] = iVar10;" (assignment_expression "piVar4[7] = iVar10" (subscript_expression "piVar4[7]" identifier [ number_literal ]) = identifier) ;) (expression_statement "iVar5 = FUN_0001dc50(iVar5,iVar10,1);" (assignment_expression "iVar5 = FUN_0001dc50(iVar5,iVar10,1)" identifier = (call_expression "FUN_0001dc50(iVar5,iVar10,1)" identifier (argument_list "(iVar5,iVar10,1)" ( identifier , identifier , number_literal )))) ;) (expression_statement "iVar10 = *piVar4;" (assignment_expression "iVar10 = *piVar4" identifier = (pointer_expression "*piVar4" * identifier)) ;) (expression_statement "piVar4[4] = iVar5;" (assignment_expression "piVar4[4] = iVar5" (subscript_expression "piVar4[4]" identifier [ number_literal ]) = identifier) ;) }) (else_clause "else {\n          iVar8 = piVar4[5] - iVar5;\n          piVar4[7] = iVar10;\n          iVar5 = FUN_0001dc50(iVar5,iVar10,1);\n          iVar10 = *piVar4;\n          piVar4[4] = iVar5;\n          piVar4[5] = iVar8 + iVar5;\n        }" else (compound_statement "{\n          iVar8 = piVar4[5] - iVar5;\n          piVar4[7] = iVar10;\n          iVar5 = FUN_0001dc50(iVar5,iVar10,1);\n          iVar10 = *piVar4;\n          piVar4[4] = iVar5;\n          piVar4[5] = iVar8 + iVar5;\n        }" { (expression_statement "iVar8 = piVar4[5] - iVar5;" (assignment_expression "iVar8 = piVar4[5] - iVar5" identifier = (binary_expression "piVar4[5] - iVar5" (subscript_expression "piVar4[5]" identifier [ number_literal ]) - identifier)) ;) (expression_statement "piVar4[7] = iVar10;" (assignment_expression "piVar4[7] = iVar10" (subscript_expression "piVar4[7]" identifier [ number_literal ]) = identifier) ;) (expression_statement "iVar5 = FUN_0001dc50(iVar5,iVar10,1);" (assignment_expression "iVar5 = FUN_0001dc50(iVar5,iVar10,1)" identifier = (call_expression "FUN_0001dc50(iVar5,iVar10,1)" identifier (argument_list "(iVar5,iVar10,1)" ( identifier , identifier , number_literal )))) ;) (expression_statement "iVar10 = *piVar4;" (assignment_expression "iVar10 = *piVar4" identifier = (pointer_expression "*piVar4" * identifier)) ;) (expression_statement "piVar4[4] = iVar5;" (assignment_expression "piVar4[4] = iVar5" (subscript_expression "piVar4[4]" identifier [ number_literal ]) = identifier) ;) (expression_statement "piVar4[5] = iVar8 + iVar5;" (assignment_expression "piVar4[5] = iVar8 + iVar5" (subscript_expression "piVar4[5]" identifier [ number_literal ]) = (binary_expression "iVar8 + iVar5" identifier + identifier)) ;) }))) })) (expression_statement "memcpy((void *)((iVar10 - sVar6) + iVar5),pvVar7,sVar6);" (call_expression "memcpy((void *)((iVar10 - sVar6) + iVar5),pvVar7,sVar6)" identifier (argument_list "((void *)((iVar10 - sVar6) + iVar5),pvVar7,sVar6)" ( (cast_expression "(void *)((iVar10 - sVar6) + iVar5)" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((iVar10 - sVar6) + iVar5)" ( (binary_expression "(iVar10 - sVar6) + iVar5" (parenthesized_expression "(iVar10 - sVar6)" ( (binary_expression "iVar10 - sVar6" identifier - identifier) )) + identifier) ))) , identifier , identifier ))) ;) (expression_statement "local_34 = puVar1 + 3;" (assignment_expression "local_34 = puVar1 + 3" identifier = (binary_expression "puVar1 + 3" identifier + number_literal)) ;) (goto_statement "goto LAB_000385f8;" goto statement_identifier ;)) (case_statement "case 4:\n      __s = (char *)*local_34;\n      iVar10 = *piVar4;\n      iVar8 = piVar4[4];\n      iVar5 = iVar10 + 4;\n      *piVar4 = iVar5;\n      if (piVar4[7] < iVar5) {\n        iVar10 = iVar10 + 0x104;\n        if (piVar4[5] == 0) {\n          piVar4[7] = iVar10;\n          iVar8 = FUN_0001dc50(iVar8,iVar10,1);\n          iVar5 = *piVar4;\n          piVar4[4] = iVar8;\n        }\n        else {\n          piVar4[7] = iVar10;\n          iVar9 = piVar4[5] - iVar8;\n          iVar8 = FUN_0001dc50(iVar8,iVar10,1);\n          iVar5 = *piVar4;\n          piVar4[4] = iVar8;\n          piVar4[5] = iVar9 + iVar8;\n        }\n      }\n      *(undefined4 *)(iVar8 + -4 + iVar5) = 0;\n      piVar4[6] = *piVar4;\n      strlen(__s);\n      FUN_000378c0();\n      local_34 = puVar1 + 2;\n      goto LAB_000385f8;" case number_literal : (expression_statement "__s = (char *)*local_34;" (assignment_expression "__s = (char *)*local_34" identifier = (cast_expression "(char *)*local_34" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*local_34" * identifier))) ;) (expression_statement "iVar10 = *piVar4;" (assignment_expression "iVar10 = *piVar4" identifier = (pointer_expression "*piVar4" * identifier)) ;) (expression_statement "iVar8 = piVar4[4];" (assignment_expression "iVar8 = piVar4[4]" identifier = (subscript_expression "piVar4[4]" identifier [ number_literal ])) ;) (expression_statement "iVar5 = iVar10 + 4;" (assignment_expression "iVar5 = iVar10 + 4" identifier = (binary_expression "iVar10 + 4" identifier + number_literal)) ;) (expression_statement "*piVar4 = iVar5;" (assignment_expression "*piVar4 = iVar5" (pointer_expression "*piVar4" * identifier) = identifier) ;) (if_statement "if (piVar4[7] < iVar5) {\n        iVar10 = iVar10 + 0x104;\n        if (piVar4[5] == 0) {\n          piVar4[7] = iVar10;\n          iVar8 = FUN_0001dc50(iVar8,iVar10,1);\n          iVar5 = *piVar4;\n          piVar4[4] = iVar8;\n        }\n        else {\n          piVar4[7] = iVar10;\n          iVar9 = piVar4[5] - iVar8;\n          iVar8 = FUN_0001dc50(iVar8,iVar10,1);\n          iVar5 = *piVar4;\n          piVar4[4] = iVar8;\n          piVar4[5] = iVar9 + iVar8;\n        }\n      }" if (parenthesized_expression "(piVar4[7] < iVar5)" ( (binary_expression "piVar4[7] < iVar5" (subscript_expression "piVar4[7]" identifier [ number_literal ]) < identifier) )) (compound_statement "{\n        iVar10 = iVar10 + 0x104;\n        if (piVar4[5] == 0) {\n          piVar4[7] = iVar10;\n          iVar8 = FUN_0001dc50(iVar8,iVar10,1);\n          iVar5 = *piVar4;\n          piVar4[4] = iVar8;\n        }\n        else {\n          piVar4[7] = iVar10;\n          iVar9 = piVar4[5] - iVar8;\n          iVar8 = FUN_0001dc50(iVar8,iVar10,1);\n          iVar5 = *piVar4;\n          piVar4[4] = iVar8;\n          piVar4[5] = iVar9 + iVar8;\n        }\n      }" { (expression_statement "iVar10 = iVar10 + 0x104;" (assignment_expression "iVar10 = iVar10 + 0x104" identifier = (binary_expression "iVar10 + 0x104" identifier + number_literal)) ;) (if_statement "if (piVar4[5] == 0) {\n          piVar4[7] = iVar10;\n          iVar8 = FUN_0001dc50(iVar8,iVar10,1);\n          iVar5 = *piVar4;\n          piVar4[4] = iVar8;\n        }\n        else {\n          piVar4[7] = iVar10;\n          iVar9 = piVar4[5] - iVar8;\n          iVar8 = FUN_0001dc50(iVar8,iVar10,1);\n          iVar5 = *piVar4;\n          piVar4[4] = iVar8;\n          piVar4[5] = iVar9 + iVar8;\n        }" if (parenthesized_expression "(piVar4[5] == 0)" ( (binary_expression "piVar4[5] == 0" (subscript_expression "piVar4[5]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n          piVar4[7] = iVar10;\n          iVar8 = FUN_0001dc50(iVar8,iVar10,1);\n          iVar5 = *piVar4;\n          piVar4[4] = iVar8;\n        }" { (expression_statement "piVar4[7] = iVar10;" (assignment_expression "piVar4[7] = iVar10" (subscript_expression "piVar4[7]" identifier [ number_literal ]) = identifier) ;) (expression_statement "iVar8 = FUN_0001dc50(iVar8,iVar10,1);" (assignment_expression "iVar8 = FUN_0001dc50(iVar8,iVar10,1)" identifier = (call_expression "FUN_0001dc50(iVar8,iVar10,1)" identifier (argument_list "(iVar8,iVar10,1)" ( identifier , identifier , number_literal )))) ;) (expression_statement "iVar5 = *piVar4;" (assignment_expression "iVar5 = *piVar4" identifier = (pointer_expression "*piVar4" * identifier)) ;) (expression_statement "piVar4[4] = iVar8;" (assignment_expression "piVar4[4] = iVar8" (subscript_expression "piVar4[4]" identifier [ number_literal ]) = identifier) ;) }) (else_clause "else {\n          piVar4[7] = iVar10;\n          iVar9 = piVar4[5] - iVar8;\n          iVar8 = FUN_0001dc50(iVar8,iVar10,1);\n          iVar5 = *piVar4;\n          piVar4[4] = iVar8;\n          piVar4[5] = iVar9 + iVar8;\n        }" else (compound_statement "{\n          piVar4[7] = iVar10;\n          iVar9 = piVar4[5] - iVar8;\n          iVar8 = FUN_0001dc50(iVar8,iVar10,1);\n          iVar5 = *piVar4;\n          piVar4[4] = iVar8;\n          piVar4[5] = iVar9 + iVar8;\n        }" { (expression_statement "piVar4[7] = iVar10;" (assignment_expression "piVar4[7] = iVar10" (subscript_expression "piVar4[7]" identifier [ number_literal ]) = identifier) ;) (expression_statement "iVar9 = piVar4[5] - iVar8;" (assignment_expression "iVar9 = piVar4[5] - iVar8" identifier = (binary_expression "piVar4[5] - iVar8" (subscript_expression "piVar4[5]" identifier [ number_literal ]) - identifier)) ;) (expression_statement "iVar8 = FUN_0001dc50(iVar8,iVar10,1);" (assignment_expression "iVar8 = FUN_0001dc50(iVar8,iVar10,1)" identifier = (call_expression "FUN_0001dc50(iVar8,iVar10,1)" identifier (argument_list "(iVar8,iVar10,1)" ( identifier , identifier , number_literal )))) ;) (expression_statement "iVar5 = *piVar4;" (assignment_expression "iVar5 = *piVar4" identifier = (pointer_expression "*piVar4" * identifier)) ;) (expression_statement "piVar4[4] = iVar8;" (assignment_expression "piVar4[4] = iVar8" (subscript_expression "piVar4[4]" identifier [ number_literal ]) = identifier) ;) (expression_statement "piVar4[5] = iVar9 + iVar8;" (assignment_expression "piVar4[5] = iVar9 + iVar8" (subscript_expression "piVar4[5]" identifier [ number_literal ]) = (binary_expression "iVar9 + iVar8" identifier + identifier)) ;) }))) })) (expression_statement "*(undefined4 *)(iVar8 + -4 + iVar5) = 0;" (assignment_expression "*(undefined4 *)(iVar8 + -4 + iVar5) = 0" (pointer_expression "*(undefined4 *)(iVar8 + -4 + iVar5)" * (cast_expression "(undefined4 *)(iVar8 + -4 + iVar5)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + -4 + iVar5)" ( (binary_expression "iVar8 + -4 + iVar5" (binary_expression "iVar8 + -4" identifier + number_literal) + identifier) )))) = number_literal) ;) (expression_statement "piVar4[6] = *piVar4;" (assignment_expression "piVar4[6] = *piVar4" (subscript_expression "piVar4[6]" identifier [ number_literal ]) = (pointer_expression "*piVar4" * identifier)) ;) (expression_statement "strlen(__s);" (call_expression "strlen(__s)" identifier (argument_list "(__s)" ( identifier ))) ;) (expression_statement "FUN_000378c0();" (call_expression "FUN_000378c0()" identifier (argument_list "()" ( ))) ;) (expression_statement "local_34 = puVar1 + 2;" (assignment_expression "local_34 = puVar1 + 2" identifier = (binary_expression "puVar1 + 2" identifier + number_literal)) ;) (goto_statement "goto LAB_000385f8;" goto statement_identifier ;)) (case_statement "case 5:\n      uVar3 = *local_34;\n      puVar1 = puVar1 + 2;\n      sVar6 = FUN_00056940(uVar3);\n      pvVar7 = (void *)FUN_0001db90(sVar6,1);\n      FUN_00056ac0(pvVar7,uVar3);\n      iVar5 = *piVar4 + sVar6;\n      *piVar4 = iVar5;\n      if (piVar4[7] < iVar5) {\n        iVar10 = piVar4[5];\n        iVar5 = iVar5 + 0x100;\n        iVar8 = piVar4[4];\n        if (iVar10 == 0) {\n          piVar4[7] = iVar5;\n          iVar9 = FUN_0001dc50(iVar8,iVar5,1);\n          iVar5 = *piVar4;\n          piVar4[4] = iVar9;\n        }\n        else {\n          piVar4[7] = iVar5;\n          iVar9 = FUN_0001dc50(iVar8,iVar5,1);\n          iVar5 = *piVar4;\n          piVar4[4] = iVar9;\n          piVar4[5] = (iVar10 - iVar8) + iVar9;\n        }\n      }\n      else {\n        iVar9 = piVar4[4];\n      }\n      memcpy((void *)((iVar5 - sVar6) + iVar9),pvVar7,sVar6);\n      FUN_0001dd30(pvVar7);\n      uVar3 = *puVar1;\n      break;" case number_literal : (expression_statement "uVar3 = *local_34;" (assignment_expression "uVar3 = *local_34" identifier = (pointer_expression "*local_34" * identifier)) ;) (expression_statement "puVar1 = puVar1 + 2;" (assignment_expression "puVar1 = puVar1 + 2" identifier = (binary_expression "puVar1 + 2" identifier + number_literal)) ;) (expression_statement "sVar6 = FUN_00056940(uVar3);" (assignment_expression "sVar6 = FUN_00056940(uVar3)" identifier = (call_expression "FUN_00056940(uVar3)" identifier (argument_list "(uVar3)" ( identifier )))) ;) (expression_statement "pvVar7 = (void *)FUN_0001db90(sVar6,1);" (assignment_expression "pvVar7 = (void *)FUN_0001db90(sVar6,1)" identifier = (cast_expression "(void *)FUN_0001db90(sVar6,1)" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_0001db90(sVar6,1)" identifier (argument_list "(sVar6,1)" ( identifier , number_literal ))))) ;) (expression_statement "FUN_00056ac0(pvVar7,uVar3);" (call_expression "FUN_00056ac0(pvVar7,uVar3)" identifier (argument_list "(pvVar7,uVar3)" ( identifier , identifier ))) ;) (expression_statement "iVar5 = *piVar4 + sVar6;" (assignment_expression "iVar5 = *piVar4 + sVar6" identifier = (binary_expression "*piVar4 + sVar6" (pointer_expression "*piVar4" * identifier) + identifier)) ;) (expression_statement "*piVar4 = iVar5;" (assignment_expression "*piVar4 = iVar5" (pointer_expression "*piVar4" * identifier) = identifier) ;) (if_statement "if (piVar4[7] < iVar5) {\n        iVar10 = piVar4[5];\n        iVar5 = iVar5 + 0x100;\n        iVar8 = piVar4[4];\n        if (iVar10 == 0) {\n          piVar4[7] = iVar5;\n          iVar9 = FUN_0001dc50(iVar8,iVar5,1);\n          iVar5 = *piVar4;\n          piVar4[4] = iVar9;\n        }\n        else {\n          piVar4[7] = iVar5;\n          iVar9 = FUN_0001dc50(iVar8,iVar5,1);\n          iVar5 = *piVar4;\n          piVar4[4] = iVar9;\n          piVar4[5] = (iVar10 - iVar8) + iVar9;\n        }\n      }\n      else {\n        iVar9 = piVar4[4];\n      }" if (parenthesized_expression "(piVar4[7] < iVar5)" ( (binary_expression "piVar4[7] < iVar5" (subscript_expression "piVar4[7]" identifier [ number_literal ]) < identifier) )) (compound_statement "{\n        iVar10 = piVar4[5];\n        iVar5 = iVar5 + 0x100;\n        iVar8 = piVar4[4];\n        if (iVar10 == 0) {\n          piVar4[7] = iVar5;\n          iVar9 = FUN_0001dc50(iVar8,iVar5,1);\n          iVar5 = *piVar4;\n          piVar4[4] = iVar9;\n        }\n        else {\n          piVar4[7] = iVar5;\n          iVar9 = FUN_0001dc50(iVar8,iVar5,1);\n          iVar5 = *piVar4;\n          piVar4[4] = iVar9;\n          piVar4[5] = (iVar10 - iVar8) + iVar9;\n        }\n      }" { (expression_statement "iVar10 = piVar4[5];" (assignment_expression "iVar10 = piVar4[5]" identifier = (subscript_expression "piVar4[5]" identifier [ number_literal ])) ;) (expression_statement "iVar5 = iVar5 + 0x100;" (assignment_expression "iVar5 = iVar5 + 0x100" identifier = (binary_expression "iVar5 + 0x100" identifier + number_literal)) ;) (expression_statement "iVar8 = piVar4[4];" (assignment_expression "iVar8 = piVar4[4]" identifier = (subscript_expression "piVar4[4]" identifier [ number_literal ])) ;) (if_statement "if (iVar10 == 0) {\n          piVar4[7] = iVar5;\n          iVar9 = FUN_0001dc50(iVar8,iVar5,1);\n          iVar5 = *piVar4;\n          piVar4[4] = iVar9;\n        }\n        else {\n          piVar4[7] = iVar5;\n          iVar9 = FUN_0001dc50(iVar8,iVar5,1);\n          iVar5 = *piVar4;\n          piVar4[4] = iVar9;\n          piVar4[5] = (iVar10 - iVar8) + iVar9;\n        }" if (parenthesized_expression "(iVar10 == 0)" ( (binary_expression "iVar10 == 0" identifier == number_literal) )) (compound_statement "{\n          piVar4[7] = iVar5;\n          iVar9 = FUN_0001dc50(iVar8,iVar5,1);\n          iVar5 = *piVar4;\n          piVar4[4] = iVar9;\n        }" { (expression_statement "piVar4[7] = iVar5;" (assignment_expression "piVar4[7] = iVar5" (subscript_expression "piVar4[7]" identifier [ number_literal ]) = identifier) ;) (expression_statement "iVar9 = FUN_0001dc50(iVar8,iVar5,1);" (assignment_expression "iVar9 = FUN_0001dc50(iVar8,iVar5,1)" identifier = (call_expression "FUN_0001dc50(iVar8,iVar5,1)" identifier (argument_list "(iVar8,iVar5,1)" ( identifier , identifier , number_literal )))) ;) (expression_statement "iVar5 = *piVar4;" (assignment_expression "iVar5 = *piVar4" identifier = (pointer_expression "*piVar4" * identifier)) ;) (expression_statement "piVar4[4] = iVar9;" (assignment_expression "piVar4[4] = iVar9" (subscript_expression "piVar4[4]" identifier [ number_literal ]) = identifier) ;) }) (else_clause "else {\n          piVar4[7] = iVar5;\n          iVar9 = FUN_0001dc50(iVar8,iVar5,1);\n          iVar5 = *piVar4;\n          piVar4[4] = iVar9;\n          piVar4[5] = (iVar10 - iVar8) + iVar9;\n        }" else (compound_statement "{\n          piVar4[7] = iVar5;\n          iVar9 = FUN_0001dc50(iVar8,iVar5,1);\n          iVar5 = *piVar4;\n          piVar4[4] = iVar9;\n          piVar4[5] = (iVar10 - iVar8) + iVar9;\n        }" { (expression_statement "piVar4[7] = iVar5;" (assignment_expression "piVar4[7] = iVar5" (subscript_expression "piVar4[7]" identifier [ number_literal ]) = identifier) ;) (expression_statement "iVar9 = FUN_0001dc50(iVar8,iVar5,1);" (assignment_expression "iVar9 = FUN_0001dc50(iVar8,iVar5,1)" identifier = (call_expression "FUN_0001dc50(iVar8,iVar5,1)" identifier (argument_list "(iVar8,iVar5,1)" ( identifier , identifier , number_literal )))) ;) (expression_statement "iVar5 = *piVar4;" (assignment_expression "iVar5 = *piVar4" identifier = (pointer_expression "*piVar4" * identifier)) ;) (expression_statement "piVar4[4] = iVar9;" (assignment_expression "piVar4[4] = iVar9" (subscript_expression "piVar4[4]" identifier [ number_literal ]) = identifier) ;) (expression_statement "piVar4[5] = (iVar10 - iVar8) + iVar9;" (assignment_expression "piVar4[5] = (iVar10 - iVar8) + iVar9" (subscript_expression "piVar4[5]" identifier [ number_literal ]) = (binary_expression "(iVar10 - iVar8) + iVar9" (parenthesized_expression "(iVar10 - iVar8)" ( (binary_expression "iVar10 - iVar8" identifier - identifier) )) + identifier)) ;) }))) }) (else_clause "else {\n        iVar9 = piVar4[4];\n      }" else (compound_statement "{\n        iVar9 = piVar4[4];\n      }" { (expression_statement "iVar9 = piVar4[4];" (assignment_expression "iVar9 = piVar4[4]" identifier = (subscript_expression "piVar4[4]" identifier [ number_literal ])) ;) }))) (expression_statement "memcpy((void *)((iVar5 - sVar6) + iVar9),pvVar7,sVar6);" (call_expression "memcpy((void *)((iVar5 - sVar6) + iVar9),pvVar7,sVar6)" identifier (argument_list "((void *)((iVar5 - sVar6) + iVar9),pvVar7,sVar6)" ( (cast_expression "(void *)((iVar5 - sVar6) + iVar9)" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((iVar5 - sVar6) + iVar9)" ( (binary_expression "(iVar5 - sVar6) + iVar9" (parenthesized_expression "(iVar5 - sVar6)" ( (binary_expression "iVar5 - sVar6" identifier - identifier) )) + identifier) ))) , identifier , identifier ))) ;) (expression_statement "FUN_0001dd30(pvVar7);" (call_expression "FUN_0001dd30(pvVar7)" identifier (argument_list "(pvVar7)" ( identifier ))) ;) (expression_statement "uVar3 = *puVar1;" (assignment_expression "uVar3 = *puVar1" identifier = (pointer_expression "*puVar1" * identifier)) ;) (break_statement "break;" break ;)) (case_statement "default:\n      goto LAB_000385f8;" default : (goto_statement "goto LAB_000385f8;" goto statement_identifier ;)) })) }) while (parenthesized_expression "( true )" ( true )) ;) (labeled_statement "code_r0x000387f0:\n  uVar3 = *local_34;" statement_identifier : (expression_statement "uVar3 = *local_34;" (assignment_expression "uVar3 = *local_34" identifier = (pointer_expression "*local_34" * identifier)) ;)) (expression_statement "iVar10 = *piVar4;" (assignment_expression "iVar10 = *piVar4" identifier = (pointer_expression "*piVar4" * identifier)) ;) (expression_statement "local_34 = puVar1 + 2;" (assignment_expression "local_34 = puVar1 + 2" identifier = (binary_expression "puVar1 + 2" identifier + number_literal)) ;) (expression_statement "iVar8 = piVar4[4];" (assignment_expression "iVar8 = piVar4[4]" identifier = (subscript_expression "piVar4[4]" identifier [ number_literal ])) ;) (expression_statement "iVar5 = iVar10 + 4;" (assignment_expression "iVar5 = iVar10 + 4" identifier = (binary_expression "iVar10 + 4" identifier + number_literal)) ;) (expression_statement "*piVar4 = iVar5;" (assignment_expression "*piVar4 = iVar5" (pointer_expression "*piVar4" * identifier) = identifier) ;) (if_statement "if (piVar4[7] < iVar5) {\n    iVar10 = iVar10 + 0x104;\n    if (piVar4[5] == 0) {\n      piVar4[7] = iVar10;\n      iVar8 = FUN_0001dc50(iVar8,iVar10,1);\n      iVar5 = *piVar4;\n      piVar4[4] = iVar8;\n    }\n    else {\n      piVar4[7] = iVar10;\n      iVar9 = piVar4[5] - iVar8;\n      iVar8 = FUN_0001dc50(iVar8,iVar10,1);\n      iVar5 = *piVar4;\n      piVar4[4] = iVar8;\n      piVar4[5] = iVar9 + iVar8;\n    }\n  }" if (parenthesized_expression "(piVar4[7] < iVar5)" ( (binary_expression "piVar4[7] < iVar5" (subscript_expression "piVar4[7]" identifier [ number_literal ]) < identifier) )) (compound_statement "{\n    iVar10 = iVar10 + 0x104;\n    if (piVar4[5] == 0) {\n      piVar4[7] = iVar10;\n      iVar8 = FUN_0001dc50(iVar8,iVar10,1);\n      iVar5 = *piVar4;\n      piVar4[4] = iVar8;\n    }\n    else {\n      piVar4[7] = iVar10;\n      iVar9 = piVar4[5] - iVar8;\n      iVar8 = FUN_0001dc50(iVar8,iVar10,1);\n      iVar5 = *piVar4;\n      piVar4[4] = iVar8;\n      piVar4[5] = iVar9 + iVar8;\n    }\n  }" { (expression_statement "iVar10 = iVar10 + 0x104;" (assignment_expression "iVar10 = iVar10 + 0x104" identifier = (binary_expression "iVar10 + 0x104" identifier + number_literal)) ;) (if_statement "if (piVar4[5] == 0) {\n      piVar4[7] = iVar10;\n      iVar8 = FUN_0001dc50(iVar8,iVar10,1);\n      iVar5 = *piVar4;\n      piVar4[4] = iVar8;\n    }\n    else {\n      piVar4[7] = iVar10;\n      iVar9 = piVar4[5] - iVar8;\n      iVar8 = FUN_0001dc50(iVar8,iVar10,1);\n      iVar5 = *piVar4;\n      piVar4[4] = iVar8;\n      piVar4[5] = iVar9 + iVar8;\n    }" if (parenthesized_expression "(piVar4[5] == 0)" ( (binary_expression "piVar4[5] == 0" (subscript_expression "piVar4[5]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n      piVar4[7] = iVar10;\n      iVar8 = FUN_0001dc50(iVar8,iVar10,1);\n      iVar5 = *piVar4;\n      piVar4[4] = iVar8;\n    }" { (expression_statement "piVar4[7] = iVar10;" (assignment_expression "piVar4[7] = iVar10" (subscript_expression "piVar4[7]" identifier [ number_literal ]) = identifier) ;) (expression_statement "iVar8 = FUN_0001dc50(iVar8,iVar10,1);" (assignment_expression "iVar8 = FUN_0001dc50(iVar8,iVar10,1)" identifier = (call_expression "FUN_0001dc50(iVar8,iVar10,1)" identifier (argument_list "(iVar8,iVar10,1)" ( identifier , identifier , number_literal )))) ;) (expression_statement "iVar5 = *piVar4;" (assignment_expression "iVar5 = *piVar4" identifier = (pointer_expression "*piVar4" * identifier)) ;) (expression_statement "piVar4[4] = iVar8;" (assignment_expression "piVar4[4] = iVar8" (subscript_expression "piVar4[4]" identifier [ number_literal ]) = identifier) ;) }) (else_clause "else {\n      piVar4[7] = iVar10;\n      iVar9 = piVar4[5] - iVar8;\n      iVar8 = FUN_0001dc50(iVar8,iVar10,1);\n      iVar5 = *piVar4;\n      piVar4[4] = iVar8;\n      piVar4[5] = iVar9 + iVar8;\n    }" else (compound_statement "{\n      piVar4[7] = iVar10;\n      iVar9 = piVar4[5] - iVar8;\n      iVar8 = FUN_0001dc50(iVar8,iVar10,1);\n      iVar5 = *piVar4;\n      piVar4[4] = iVar8;\n      piVar4[5] = iVar9 + iVar8;\n    }" { (expression_statement "piVar4[7] = iVar10;" (assignment_expression "piVar4[7] = iVar10" (subscript_expression "piVar4[7]" identifier [ number_literal ]) = identifier) ;) (expression_statement "iVar9 = piVar4[5] - iVar8;" (assignment_expression "iVar9 = piVar4[5] - iVar8" identifier = (binary_expression "piVar4[5] - iVar8" (subscript_expression "piVar4[5]" identifier [ number_literal ]) - identifier)) ;) (expression_statement "iVar8 = FUN_0001dc50(iVar8,iVar10,1);" (assignment_expression "iVar8 = FUN_0001dc50(iVar8,iVar10,1)" identifier = (call_expression "FUN_0001dc50(iVar8,iVar10,1)" identifier (argument_list "(iVar8,iVar10,1)" ( identifier , identifier , number_literal )))) ;) (expression_statement "iVar5 = *piVar4;" (assignment_expression "iVar5 = *piVar4" identifier = (pointer_expression "*piVar4" * identifier)) ;) (expression_statement "piVar4[4] = iVar8;" (assignment_expression "piVar4[4] = iVar8" (subscript_expression "piVar4[4]" identifier [ number_literal ]) = identifier) ;) (expression_statement "piVar4[5] = iVar9 + iVar8;" (assignment_expression "piVar4[5] = iVar9 + iVar8" (subscript_expression "piVar4[5]" identifier [ number_literal ]) = (binary_expression "iVar9 + iVar8" identifier + identifier)) ;) }))) })) (expression_statement "*(uint *)(iVar8 + -4 + iVar5) =\n       uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 | uVar3 << 0x18;" (assignment_expression "*(uint *)(iVar8 + -4 + iVar5) =\n       uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 | uVar3 << 0x18" (pointer_expression "*(uint *)(iVar8 + -4 + iVar5)" * (cast_expression "(uint *)(iVar8 + -4 + iVar5)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + -4 + iVar5)" ( (binary_expression "iVar8 + -4 + iVar5" (binary_expression "iVar8 + -4" identifier + number_literal) + identifier) )))) = (binary_expression "uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 | uVar3 << 0x18" (binary_expression "uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8" (binary_expression "uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8" (binary_expression "uVar3 >> 0x18" identifier >> number_literal) | (binary_expression "(uVar3 & 0xff0000) >> 8" (parenthesized_expression "(uVar3 & 0xff0000)" ( (binary_expression "uVar3 & 0xff0000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar3 & 0xff00) << 8" (parenthesized_expression "(uVar3 & 0xff00)" ( (binary_expression "uVar3 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "uVar3 << 0x18" identifier << number_literal))) ;) (goto_statement "goto LAB_000385f8;" goto statement_identifier ;) })))
(translation_unit "/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n/* WARNING: Enum "anon_enum_32": Some values do not have unique names */\n\nPacket * __regparm3 construct_packet(Ssh_conflict ssh,int pkttype,va_list ap)\n\n{\n  size_t n;\n  uint *puVar1;\n  int iVar2;\n  uint uVar3;\n  Bignum_conflict bn;\n  char *__s;\n  uchar *ptr;\n  Packet *pkt;\n  uchar *puVar4;\n  size_t sVar5;\n  void *pvVar6;\n  size_t sVar7;\n  uchar *puVar8;\n  long lVar9;\n  int iVar10;\n  uchar *argp;\n  int arglen;\n  int iVar11;\n  int in_GS_OFFSET;\n  uint *local_34;\n  \n  iVar2 = *(int *)(in_GS_OFFSET + 0x14);\n  pkt = (Packet *)safemalloc(1,0x2c);\n  pkt->data = (uchar *)0x0;\n  pkt->body = (uchar *)0x0;\n  pkt->length = 0xd;\n  pkt->maxlen = 0x10d;\n  puVar4 = (uchar *)saferealloc((void *)0x0,0x10d,1);\n  pkt->data = puVar4;\n  puVar4[pkt->length + -1] = (uchar)ssh;\n  pkt->type = (int)ssh;\n  pkt->body = pkt->data + pkt->length;\n  pkt->downstream_id = 0;\n  pkt->additional_log_text = (char *)0x0;\n  local_34 = (uint *)pkttype;\nswitchD_0003861c_caseD_5:\n  uVar3 = *local_34;\n  puVar1 = local_34;\n  do {\n    if (uVar3 == 0) {\n      if (iVar2 == *(int *)(in_GS_OFFSET + 0x14)) {\n        return pkt;\n      }\n                    /* WARNING: Subroutine does not return */\n      __stack_chk_fail_local();\n    }\n    local_34 = puVar1 + 1;\n    switch(uVar3) {\n    case 1:\n      goto _L1161;\n    case 2:\n      uVar3 = *local_34;\n      iVar11 = pkt->length;\n      local_34 = puVar1 + 2;\n      puVar4 = pkt->data;\n      iVar10 = iVar11 + 1;\n      pkt->length = iVar10;\n      if (pkt->maxlen < iVar10) {\n        sVar5 = iVar11 + 0x101;\n        if (pkt->body == (uchar *)0x0) {\n          pkt->maxlen = sVar5;\n          puVar4 = (uchar *)saferealloc(puVar4,sVar5,1);\n          iVar10 = pkt->length;\n          pkt->data = puVar4;\n        }\n        else {\n          pkt->maxlen = sVar5;\n          iVar11 = (int)pkt->body - (int)puVar4;\n          puVar4 = (uchar *)saferealloc(puVar4,sVar5,1);\n          iVar10 = pkt->length;\n          pkt->data = puVar4;\n          pkt->body = puVar4 + iVar11;\n        }\n      }\n      puVar4[iVar10 + -1] = (uchar)uVar3;\n      goto switchD_0003861c_caseD_5;\n    case 3:\n      sVar7 = puVar1[2];\n      pvVar6 = (void *)*local_34;\n      puVar4 = pkt->data;\n      lVar9 = pkt->length + sVar7;\n      pkt->length = lVar9;\n      if (pkt->maxlen < lVar9) {\n        sVar5 = lVar9 + 0x100;\n        if (pkt->body == (uchar *)0x0) {\n          pkt->maxlen = sVar5;\n          puVar4 = (uchar *)saferealloc(puVar4,sVar5,1);\n          lVar9 = pkt->length;\n          pkt->data = puVar4;\n        }\n        else {\n          iVar10 = (int)pkt->body - (int)puVar4;\n          pkt->maxlen = sVar5;\n          puVar4 = (uchar *)saferealloc(puVar4,sVar5,1);\n          lVar9 = pkt->length;\n          pkt->data = puVar4;\n          pkt->body = puVar4 + iVar10;\n        }\n      }\n      memcpy(puVar4 + (lVar9 - sVar7),pvVar6,sVar7);\n      local_34 = puVar1 + 3;\n      goto switchD_0003861c_caseD_5;\n    case 4:\n      __s = (char *)*local_34;\n      iVar11 = pkt->length;\n      puVar4 = pkt->data;\n      iVar10 = iVar11 + 4;\n      pkt->length = iVar10;\n      if (pkt->maxlen < iVar10) {\n        sVar5 = iVar11 + 0x104;\n        if (pkt->body == (uchar *)0x0) {\n          pkt->maxlen = sVar5;\n          puVar4 = (uchar *)saferealloc(puVar4,sVar5,1);\n          iVar10 = pkt->length;\n          pkt->data = puVar4;\n        }\n        else {\n          pkt->maxlen = sVar5;\n          iVar11 = (int)pkt->body - (int)puVar4;\n          puVar4 = (uchar *)saferealloc(puVar4,sVar5,1);\n          iVar10 = pkt->length;\n          pkt->data = puVar4;\n          pkt->body = puVar4 + iVar11;\n        }\n      }\n      puVar4 = puVar4 + iVar10 + -4;\n      puVar4[0] = '\0';\n      puVar4[1] = '\0';\n      puVar4[2] = '\0';\n      puVar4[3] = '\0';\n      pkt->savedpos = pkt->length;\n      sVar7 = strlen(__s);\n      ssh_pkt_addstring_data(pkt,__s,sVar7);\n      local_34 = puVar1 + 2;\n      goto switchD_0003861c_caseD_5;\n    case 5:\n      bn = (Bignum_conflict)*local_34;\n      puVar1 = puVar1 + 2;\n      sVar5 = ssh1_bignum_length(bn);\n      pvVar6 = safemalloc(sVar5,1);\n      ssh1_write_bignum(pvVar6,bn);\n      lVar9 = pkt->length + sVar5;\n      pkt->length = lVar9;\n      if (pkt->maxlen < lVar9) {\n        puVar4 = pkt->body;\n        n = lVar9 + 0x100;\n        ptr = pkt->data;\n        if (puVar4 == (uchar *)0x0) {\n          pkt->maxlen = n;\n          puVar8 = (uchar *)saferealloc(ptr,n,1);\n          lVar9 = pkt->length;\n          pkt->data = puVar8;\n        }\n        else {\n          pkt->maxlen = n;\n          puVar8 = (uchar *)saferealloc(ptr,n,1);\n          lVar9 = pkt->length;\n          pkt->data = puVar8;\n          pkt->body = puVar8 + ((int)puVar4 - (int)ptr);\n        }\n      }\n      else {\n        puVar8 = pkt->data;\n      }\n      memcpy(puVar8 + (lVar9 - sVar5),pvVar6,sVar5);\n      safefree(pvVar6);\n      uVar3 = *puVar1;\n      break;\n    default:\n      goto switchD_0003861c_caseD_5;\n    }\n  } while( true );\n_L1161:\n  uVar3 = *local_34;\n  iVar11 = pkt->length;\n  local_34 = puVar1 + 2;\n  puVar4 = pkt->data;\n  iVar10 = iVar11 + 4;\n  pkt->length = iVar10;\n  if (pkt->maxlen < iVar10) {\n    sVar5 = iVar11 + 0x104;\n    if (pkt->body == (uchar *)0x0) {\n      pkt->maxlen = sVar5;\n      puVar4 = (uchar *)saferealloc(puVar4,sVar5,1);\n      iVar10 = pkt->length;\n      pkt->data = puVar4;\n    }\n    else {\n      pkt->maxlen = sVar5;\n      iVar11 = (int)pkt->body - (int)puVar4;\n      puVar4 = (uchar *)saferealloc(puVar4,sVar5,1);\n      iVar10 = pkt->length;\n      pkt->data = puVar4;\n      pkt->body = puVar4 + iVar11;\n    }\n  }\n  *(uint *)(puVar4 + iVar10 + -4) =\n       uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 | uVar3 << 0x18;\n  goto switchD_0003861c_caseD_5;\n}\n\n" comment comment (ERROR "Packet * __regparm3 construct_packet(Ssh_conflict ssh,int pkttype,va_list ap)" (binary_expression "Packet * __regparm3 construct_packet(Ssh_conflict ssh,int pkttype,va_list ap)" identifier * (ERROR "__regparm3" identifier) (call_expression "construct_packet(Ssh_conflict ssh,int pkttype,va_list ap)" identifier (argument_list "(Ssh_conflict ssh,int pkttype,va_list ap)" ( identifier (ERROR "ssh" identifier) , (ERROR "int" identifier) identifier , identifier (ERROR "ap" identifier) ))))) (compound_statement "{\n  size_t n;\n  uint *puVar1;\n  int iVar2;\n  uint uVar3;\n  Bignum_conflict bn;\n  char *__s;\n  uchar *ptr;\n  Packet *pkt;\n  uchar *puVar4;\n  size_t sVar5;\n  void *pvVar6;\n  size_t sVar7;\n  uchar *puVar8;\n  long lVar9;\n  int iVar10;\n  uchar *argp;\n  int arglen;\n  int iVar11;\n  int in_GS_OFFSET;\n  uint *local_34;\n  \n  iVar2 = *(int *)(in_GS_OFFSET + 0x14);\n  pkt = (Packet *)safemalloc(1,0x2c);\n  pkt->data = (uchar *)0x0;\n  pkt->body = (uchar *)0x0;\n  pkt->length = 0xd;\n  pkt->maxlen = 0x10d;\n  puVar4 = (uchar *)saferealloc((void *)0x0,0x10d,1);\n  pkt->data = puVar4;\n  puVar4[pkt->length + -1] = (uchar)ssh;\n  pkt->type = (int)ssh;\n  pkt->body = pkt->data + pkt->length;\n  pkt->downstream_id = 0;\n  pkt->additional_log_text = (char *)0x0;\n  local_34 = (uint *)pkttype;\nswitchD_0003861c_caseD_5:\n  uVar3 = *local_34;\n  puVar1 = local_34;\n  do {\n    if (uVar3 == 0) {\n      if (iVar2 == *(int *)(in_GS_OFFSET + 0x14)) {\n        return pkt;\n      }\n                    /* WARNING: Subroutine does not return */\n      __stack_chk_fail_local();\n    }\n    local_34 = puVar1 + 1;\n    switch(uVar3) {\n    case 1:\n      goto _L1161;\n    case 2:\n      uVar3 = *local_34;\n      iVar11 = pkt->length;\n      local_34 = puVar1 + 2;\n      puVar4 = pkt->data;\n      iVar10 = iVar11 + 1;\n      pkt->length = iVar10;\n      if (pkt->maxlen < iVar10) {\n        sVar5 = iVar11 + 0x101;\n        if (pkt->body == (uchar *)0x0) {\n          pkt->maxlen = sVar5;\n          puVar4 = (uchar *)saferealloc(puVar4,sVar5,1);\n          iVar10 = pkt->length;\n          pkt->data = puVar4;\n        }\n        else {\n          pkt->maxlen = sVar5;\n          iVar11 = (int)pkt->body - (int)puVar4;\n          puVar4 = (uchar *)saferealloc(puVar4,sVar5,1);\n          iVar10 = pkt->length;\n          pkt->data = puVar4;\n          pkt->body = puVar4 + iVar11;\n        }\n      }\n      puVar4[iVar10 + -1] = (uchar)uVar3;\n      goto switchD_0003861c_caseD_5;\n    case 3:\n      sVar7 = puVar1[2];\n      pvVar6 = (void *)*local_34;\n      puVar4 = pkt->data;\n      lVar9 = pkt->length + sVar7;\n      pkt->length = lVar9;\n      if (pkt->maxlen < lVar9) {\n        sVar5 = lVar9 + 0x100;\n        if (pkt->body == (uchar *)0x0) {\n          pkt->maxlen = sVar5;\n          puVar4 = (uchar *)saferealloc(puVar4,sVar5,1);\n          lVar9 = pkt->length;\n          pkt->data = puVar4;\n        }\n        else {\n          iVar10 = (int)pkt->body - (int)puVar4;\n          pkt->maxlen = sVar5;\n          puVar4 = (uchar *)saferealloc(puVar4,sVar5,1);\n          lVar9 = pkt->length;\n          pkt->data = puVar4;\n          pkt->body = puVar4 + iVar10;\n        }\n      }\n      memcpy(puVar4 + (lVar9 - sVar7),pvVar6,sVar7);\n      local_34 = puVar1 + 3;\n      goto switchD_0003861c_caseD_5;\n    case 4:\n      __s = (char *)*local_34;\n      iVar11 = pkt->length;\n      puVar4 = pkt->data;\n      iVar10 = iVar11 + 4;\n      pkt->length = iVar10;\n      if (pkt->maxlen < iVar10) {\n        sVar5 = iVar11 + 0x104;\n        if (pkt->body == (uchar *)0x0) {\n          pkt->maxlen = sVar5;\n          puVar4 = (uchar *)saferealloc(puVar4,sVar5,1);\n          iVar10 = pkt->length;\n          pkt->data = puVar4;\n        }\n        else {\n          pkt->maxlen = sVar5;\n          iVar11 = (int)pkt->body - (int)puVar4;\n          puVar4 = (uchar *)saferealloc(puVar4,sVar5,1);\n          iVar10 = pkt->length;\n          pkt->data = puVar4;\n          pkt->body = puVar4 + iVar11;\n        }\n      }\n      puVar4 = puVar4 + iVar10 + -4;\n      puVar4[0] = '\0';\n      puVar4[1] = '\0';\n      puVar4[2] = '\0';\n      puVar4[3] = '\0';\n      pkt->savedpos = pkt->length;\n      sVar7 = strlen(__s);\n      ssh_pkt_addstring_data(pkt,__s,sVar7);\n      local_34 = puVar1 + 2;\n      goto switchD_0003861c_caseD_5;\n    case 5:\n      bn = (Bignum_conflict)*local_34;\n      puVar1 = puVar1 + 2;\n      sVar5 = ssh1_bignum_length(bn);\n      pvVar6 = safemalloc(sVar5,1);\n      ssh1_write_bignum(pvVar6,bn);\n      lVar9 = pkt->length + sVar5;\n      pkt->length = lVar9;\n      if (pkt->maxlen < lVar9) {\n        puVar4 = pkt->body;\n        n = lVar9 + 0x100;\n        ptr = pkt->data;\n        if (puVar4 == (uchar *)0x0) {\n          pkt->maxlen = n;\n          puVar8 = (uchar *)saferealloc(ptr,n,1);\n          lVar9 = pkt->length;\n          pkt->data = puVar8;\n        }\n        else {\n          pkt->maxlen = n;\n          puVar8 = (uchar *)saferealloc(ptr,n,1);\n          lVar9 = pkt->length;\n          pkt->data = puVar8;\n          pkt->body = puVar8 + ((int)puVar4 - (int)ptr);\n        }\n      }\n      else {\n        puVar8 = pkt->data;\n      }\n      memcpy(puVar8 + (lVar9 - sVar5),pvVar6,sVar5);\n      safefree(pvVar6);\n      uVar3 = *puVar1;\n      break;\n    default:\n      goto switchD_0003861c_caseD_5;\n    }\n  } while( true );\n_L1161:\n  uVar3 = *local_34;\n  iVar11 = pkt->length;\n  local_34 = puVar1 + 2;\n  puVar4 = pkt->data;\n  iVar10 = iVar11 + 4;\n  pkt->length = iVar10;\n  if (pkt->maxlen < iVar10) {\n    sVar5 = iVar11 + 0x104;\n    if (pkt->body == (uchar *)0x0) {\n      pkt->maxlen = sVar5;\n      puVar4 = (uchar *)saferealloc(puVar4,sVar5,1);\n      iVar10 = pkt->length;\n      pkt->data = puVar4;\n    }\n    else {\n      pkt->maxlen = sVar5;\n      iVar11 = (int)pkt->body - (int)puVar4;\n      puVar4 = (uchar *)saferealloc(puVar4,sVar5,1);\n      iVar10 = pkt->length;\n      pkt->data = puVar4;\n      pkt->body = puVar4 + iVar11;\n    }\n  }\n  *(uint *)(puVar4 + iVar10 + -4) =\n       uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 | uVar3 << 0x18;\n  goto switchD_0003861c_caseD_5;\n}" { (declaration "size_t n;" primitive_type identifier ;) (declaration "uint *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "Bignum_conflict bn;" type_identifier identifier ;) (declaration "char *__s;" primitive_type (pointer_declarator "*__s" * identifier) ;) (declaration "uchar *ptr;" type_identifier (pointer_declarator "*ptr" * identifier) ;) (declaration "Packet *pkt;" type_identifier (pointer_declarator "*pkt" * identifier) ;) (declaration "uchar *puVar4;" type_identifier (pointer_declarator "*puVar4" * identifier) ;) (declaration "size_t sVar5;" primitive_type identifier ;) (declaration "void *pvVar6;" primitive_type (pointer_declarator "*pvVar6" * identifier) ;) (declaration "size_t sVar7;" primitive_type identifier ;) (declaration "uchar *puVar8;" type_identifier (pointer_declarator "*puVar8" * identifier) ;) (declaration "long lVar9;" (sized_type_specifier "long" long) identifier ;) (declaration "int iVar10;" primitive_type identifier ;) (declaration "uchar *argp;" type_identifier (pointer_declarator "*argp" * identifier) ;) (declaration "int arglen;" primitive_type identifier ;) (declaration "int iVar11;" primitive_type identifier ;) (declaration "int in_GS_OFFSET;" primitive_type identifier ;) (declaration "uint *local_34;" type_identifier (pointer_declarator "*local_34" * identifier) ;) (expression_statement "iVar2 = *(int *)(in_GS_OFFSET + 0x14);" (assignment_expression "iVar2 = *(int *)(in_GS_OFFSET + 0x14)" identifier = (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) ;) (expression_statement "pkt = (Packet *)safemalloc(1,0x2c);" (assignment_expression "pkt = (Packet *)safemalloc(1,0x2c)" identifier = (cast_expression "(Packet *)safemalloc(1,0x2c)" ( (type_descriptor "Packet *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "safemalloc(1,0x2c)" identifier (argument_list "(1,0x2c)" ( number_literal , number_literal ))))) ;) (expression_statement "pkt->data = (uchar *)0x0;" (assignment_expression "pkt->data = (uchar *)0x0" (field_expression "pkt->data" identifier -> field_identifier) = (cast_expression "(uchar *)0x0" ( (type_descriptor "uchar *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "pkt->body = (uchar *)0x0;" (assignment_expression "pkt->body = (uchar *)0x0" (field_expression "pkt->body" identifier -> field_identifier) = (cast_expression "(uchar *)0x0" ( (type_descriptor "uchar *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "pkt->length = 0xd;" (assignment_expression "pkt->length = 0xd" (field_expression "pkt->length" identifier -> field_identifier) = number_literal) ;) (expression_statement "pkt->maxlen = 0x10d;" (assignment_expression "pkt->maxlen = 0x10d" (field_expression "pkt->maxlen" identifier -> field_identifier) = number_literal) ;) (expression_statement "puVar4 = (uchar *)saferealloc((void *)0x0,0x10d,1);" (assignment_expression "puVar4 = (uchar *)saferealloc((void *)0x0,0x10d,1)" identifier = (cast_expression "(uchar *)saferealloc((void *)0x0,0x10d,1)" ( (type_descriptor "uchar *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "saferealloc((void *)0x0,0x10d,1)" identifier (argument_list "((void *)0x0,0x10d,1)" ( (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal) , number_literal , number_literal ))))) ;) (expression_statement "pkt->data = puVar4;" (assignment_expression "pkt->data = puVar4" (field_expression "pkt->data" identifier -> field_identifier) = identifier) ;) (expression_statement "puVar4[pkt->length + -1] = (uchar)ssh;" (assignment_expression "puVar4[pkt->length + -1] = (uchar)ssh" (subscript_expression "puVar4[pkt->length + -1]" identifier [ (binary_expression "pkt->length + -1" (field_expression "pkt->length" identifier -> field_identifier) + number_literal) ]) = (cast_expression "(uchar)ssh" ( (type_descriptor "uchar" type_identifier) ) identifier)) ;) (expression_statement "pkt->type = (int)ssh;" (assignment_expression "pkt->type = (int)ssh" (field_expression "pkt->type" identifier -> field_identifier) = (cast_expression "(int)ssh" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "pkt->body = pkt->data + pkt->length;" (assignment_expression "pkt->body = pkt->data + pkt->length" (field_expression "pkt->body" identifier -> field_identifier) = (binary_expression "pkt->data + pkt->length" (field_expression "pkt->data" identifier -> field_identifier) + (field_expression "pkt->length" identifier -> field_identifier))) ;) (expression_statement "pkt->downstream_id = 0;" (assignment_expression "pkt->downstream_id = 0" (field_expression "pkt->downstream_id" identifier -> field_identifier) = number_literal) ;) (expression_statement "pkt->additional_log_text = (char *)0x0;" (assignment_expression "pkt->additional_log_text = (char *)0x0" (field_expression "pkt->additional_log_text" identifier -> field_identifier) = (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "local_34 = (uint *)pkttype;" (assignment_expression "local_34 = (uint *)pkttype" identifier = (cast_expression "(uint *)pkttype" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (labeled_statement "switchD_0003861c_caseD_5:\n  uVar3 = *local_34;" statement_identifier : (expression_statement "uVar3 = *local_34;" (assignment_expression "uVar3 = *local_34" identifier = (pointer_expression "*local_34" * identifier)) ;)) (expression_statement "puVar1 = local_34;" (assignment_expression "puVar1 = local_34" identifier = identifier) ;) (do_statement "do {\n    if (uVar3 == 0) {\n      if (iVar2 == *(int *)(in_GS_OFFSET + 0x14)) {\n        return pkt;\n      }\n                    /* WARNING: Subroutine does not return */\n      __stack_chk_fail_local();\n    }\n    local_34 = puVar1 + 1;\n    switch(uVar3) {\n    case 1:\n      goto _L1161;\n    case 2:\n      uVar3 = *local_34;\n      iVar11 = pkt->length;\n      local_34 = puVar1 + 2;\n      puVar4 = pkt->data;\n      iVar10 = iVar11 + 1;\n      pkt->length = iVar10;\n      if (pkt->maxlen < iVar10) {\n        sVar5 = iVar11 + 0x101;\n        if (pkt->body == (uchar *)0x0) {\n          pkt->maxlen = sVar5;\n          puVar4 = (uchar *)saferealloc(puVar4,sVar5,1);\n          iVar10 = pkt->length;\n          pkt->data = puVar4;\n        }\n        else {\n          pkt->maxlen = sVar5;\n          iVar11 = (int)pkt->body - (int)puVar4;\n          puVar4 = (uchar *)saferealloc(puVar4,sVar5,1);\n          iVar10 = pkt->length;\n          pkt->data = puVar4;\n          pkt->body = puVar4 + iVar11;\n        }\n      }\n      puVar4[iVar10 + -1] = (uchar)uVar3;\n      goto switchD_0003861c_caseD_5;\n    case 3:\n      sVar7 = puVar1[2];\n      pvVar6 = (void *)*local_34;\n      puVar4 = pkt->data;\n      lVar9 = pkt->length + sVar7;\n      pkt->length = lVar9;\n      if (pkt->maxlen < lVar9) {\n        sVar5 = lVar9 + 0x100;\n        if (pkt->body == (uchar *)0x0) {\n          pkt->maxlen = sVar5;\n          puVar4 = (uchar *)saferealloc(puVar4,sVar5,1);\n          lVar9 = pkt->length;\n          pkt->data = puVar4;\n        }\n        else {\n          iVar10 = (int)pkt->body - (int)puVar4;\n          pkt->maxlen = sVar5;\n          puVar4 = (uchar *)saferealloc(puVar4,sVar5,1);\n          lVar9 = pkt->length;\n          pkt->data = puVar4;\n          pkt->body = puVar4 + iVar10;\n        }\n      }\n      memcpy(puVar4 + (lVar9 - sVar7),pvVar6,sVar7);\n      local_34 = puVar1 + 3;\n      goto switchD_0003861c_caseD_5;\n    case 4:\n      __s = (char *)*local_34;\n      iVar11 = pkt->length;\n      puVar4 = pkt->data;\n      iVar10 = iVar11 + 4;\n      pkt->length = iVar10;\n      if (pkt->maxlen < iVar10) {\n        sVar5 = iVar11 + 0x104;\n        if (pkt->body == (uchar *)0x0) {\n          pkt->maxlen = sVar5;\n          puVar4 = (uchar *)saferealloc(puVar4,sVar5,1);\n          iVar10 = pkt->length;\n          pkt->data = puVar4;\n        }\n        else {\n          pkt->maxlen = sVar5;\n          iVar11 = (int)pkt->body - (int)puVar4;\n          puVar4 = (uchar *)saferealloc(puVar4,sVar5,1);\n          iVar10 = pkt->length;\n          pkt->data = puVar4;\n          pkt->body = puVar4 + iVar11;\n        }\n      }\n      puVar4 = puVar4 + iVar10 + -4;\n      puVar4[0] = '\0';\n      puVar4[1] = '\0';\n      puVar4[2] = '\0';\n      puVar4[3] = '\0';\n      pkt->savedpos = pkt->length;\n      sVar7 = strlen(__s);\n      ssh_pkt_addstring_data(pkt,__s,sVar7);\n      local_34 = puVar1 + 2;\n      goto switchD_0003861c_caseD_5;\n    case 5:\n      bn = (Bignum_conflict)*local_34;\n      puVar1 = puVar1 + 2;\n      sVar5 = ssh1_bignum_length(bn);\n      pvVar6 = safemalloc(sVar5,1);\n      ssh1_write_bignum(pvVar6,bn);\n      lVar9 = pkt->length + sVar5;\n      pkt->length = lVar9;\n      if (pkt->maxlen < lVar9) {\n        puVar4 = pkt->body;\n        n = lVar9 + 0x100;\n        ptr = pkt->data;\n        if (puVar4 == (uchar *)0x0) {\n          pkt->maxlen = n;\n          puVar8 = (uchar *)saferealloc(ptr,n,1);\n          lVar9 = pkt->length;\n          pkt->data = puVar8;\n        }\n        else {\n          pkt->maxlen = n;\n          puVar8 = (uchar *)saferealloc(ptr,n,1);\n          lVar9 = pkt->length;\n          pkt->data = puVar8;\n          pkt->body = puVar8 + ((int)puVar4 - (int)ptr);\n        }\n      }\n      else {\n        puVar8 = pkt->data;\n      }\n      memcpy(puVar8 + (lVar9 - sVar5),pvVar6,sVar5);\n      safefree(pvVar6);\n      uVar3 = *puVar1;\n      break;\n    default:\n      goto switchD_0003861c_caseD_5;\n    }\n  } while( true );" do (compound_statement "{\n    if (uVar3 == 0) {\n      if (iVar2 == *(int *)(in_GS_OFFSET + 0x14)) {\n        return pkt;\n      }\n                    /* WARNING: Subroutine does not return */\n      __stack_chk_fail_local();\n    }\n    local_34 = puVar1 + 1;\n    switch(uVar3) {\n    case 1:\n      goto _L1161;\n    case 2:\n      uVar3 = *local_34;\n      iVar11 = pkt->length;\n      local_34 = puVar1 + 2;\n      puVar4 = pkt->data;\n      iVar10 = iVar11 + 1;\n      pkt->length = iVar10;\n      if (pkt->maxlen < iVar10) {\n        sVar5 = iVar11 + 0x101;\n        if (pkt->body == (uchar *)0x0) {\n          pkt->maxlen = sVar5;\n          puVar4 = (uchar *)saferealloc(puVar4,sVar5,1);\n          iVar10 = pkt->length;\n          pkt->data = puVar4;\n        }\n        else {\n          pkt->maxlen = sVar5;\n          iVar11 = (int)pkt->body - (int)puVar4;\n          puVar4 = (uchar *)saferealloc(puVar4,sVar5,1);\n          iVar10 = pkt->length;\n          pkt->data = puVar4;\n          pkt->body = puVar4 + iVar11;\n        }\n      }\n      puVar4[iVar10 + -1] = (uchar)uVar3;\n      goto switchD_0003861c_caseD_5;\n    case 3:\n      sVar7 = puVar1[2];\n      pvVar6 = (void *)*local_34;\n      puVar4 = pkt->data;\n      lVar9 = pkt->length + sVar7;\n      pkt->length = lVar9;\n      if (pkt->maxlen < lVar9) {\n        sVar5 = lVar9 + 0x100;\n        if (pkt->body == (uchar *)0x0) {\n          pkt->maxlen = sVar5;\n          puVar4 = (uchar *)saferealloc(puVar4,sVar5,1);\n          lVar9 = pkt->length;\n          pkt->data = puVar4;\n        }\n        else {\n          iVar10 = (int)pkt->body - (int)puVar4;\n          pkt->maxlen = sVar5;\n          puVar4 = (uchar *)saferealloc(puVar4,sVar5,1);\n          lVar9 = pkt->length;\n          pkt->data = puVar4;\n          pkt->body = puVar4 + iVar10;\n        }\n      }\n      memcpy(puVar4 + (lVar9 - sVar7),pvVar6,sVar7);\n      local_34 = puVar1 + 3;\n      goto switchD_0003861c_caseD_5;\n    case 4:\n      __s = (char *)*local_34;\n      iVar11 = pkt->length;\n      puVar4 = pkt->data;\n      iVar10 = iVar11 + 4;\n      pkt->length = iVar10;\n      if (pkt->maxlen < iVar10) {\n        sVar5 = iVar11 + 0x104;\n        if (pkt->body == (uchar *)0x0) {\n          pkt->maxlen = sVar5;\n          puVar4 = (uchar *)saferealloc(puVar4,sVar5,1);\n          iVar10 = pkt->length;\n          pkt->data = puVar4;\n        }\n        else {\n          pkt->maxlen = sVar5;\n          iVar11 = (int)pkt->body - (int)puVar4;\n          puVar4 = (uchar *)saferealloc(puVar4,sVar5,1);\n          iVar10 = pkt->length;\n          pkt->data = puVar4;\n          pkt->body = puVar4 + iVar11;\n        }\n      }\n      puVar4 = puVar4 + iVar10 + -4;\n      puVar4[0] = '\0';\n      puVar4[1] = '\0';\n      puVar4[2] = '\0';\n      puVar4[3] = '\0';\n      pkt->savedpos = pkt->length;\n      sVar7 = strlen(__s);\n      ssh_pkt_addstring_data(pkt,__s,sVar7);\n      local_34 = puVar1 + 2;\n      goto switchD_0003861c_caseD_5;\n    case 5:\n      bn = (Bignum_conflict)*local_34;\n      puVar1 = puVar1 + 2;\n      sVar5 = ssh1_bignum_length(bn);\n      pvVar6 = safemalloc(sVar5,1);\n      ssh1_write_bignum(pvVar6,bn);\n      lVar9 = pkt->length + sVar5;\n      pkt->length = lVar9;\n      if (pkt->maxlen < lVar9) {\n        puVar4 = pkt->body;\n        n = lVar9 + 0x100;\n        ptr = pkt->data;\n        if (puVar4 == (uchar *)0x0) {\n          pkt->maxlen = n;\n          puVar8 = (uchar *)saferealloc(ptr,n,1);\n          lVar9 = pkt->length;\n          pkt->data = puVar8;\n        }\n        else {\n          pkt->maxlen = n;\n          puVar8 = (uchar *)saferealloc(ptr,n,1);\n          lVar9 = pkt->length;\n          pkt->data = puVar8;\n          pkt->body = puVar8 + ((int)puVar4 - (int)ptr);\n        }\n      }\n      else {\n        puVar8 = pkt->data;\n      }\n      memcpy(puVar8 + (lVar9 - sVar5),pvVar6,sVar5);\n      safefree(pvVar6);\n      uVar3 = *puVar1;\n      break;\n    default:\n      goto switchD_0003861c_caseD_5;\n    }\n  }" { (if_statement "if (uVar3 == 0) {\n      if (iVar2 == *(int *)(in_GS_OFFSET + 0x14)) {\n        return pkt;\n      }\n                    /* WARNING: Subroutine does not return */\n      __stack_chk_fail_local();\n    }" if (parenthesized_expression "(uVar3 == 0)" ( (binary_expression "uVar3 == 0" identifier == number_literal) )) (compound_statement "{\n      if (iVar2 == *(int *)(in_GS_OFFSET + 0x14)) {\n        return pkt;\n      }\n                    /* WARNING: Subroutine does not return */\n      __stack_chk_fail_local();\n    }" { (if_statement "if (iVar2 == *(int *)(in_GS_OFFSET + 0x14)) {\n        return pkt;\n      }" if (parenthesized_expression "(iVar2 == *(int *)(in_GS_OFFSET + 0x14))" ( (binary_expression "iVar2 == *(int *)(in_GS_OFFSET + 0x14)" identifier == (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) )) (compound_statement "{\n        return pkt;\n      }" { (return_statement "return pkt;" return identifier ;) })) comment (expression_statement "__stack_chk_fail_local();" (call_expression "__stack_chk_fail_local()" identifier (argument_list "()" ( ))) ;) })) (expression_statement "local_34 = puVar1 + 1;" (assignment_expression "local_34 = puVar1 + 1" identifier = (binary_expression "puVar1 + 1" identifier + number_literal)) ;) (switch_statement "switch(uVar3) {\n    case 1:\n      goto _L1161;\n    case 2:\n      uVar3 = *local_34;\n      iVar11 = pkt->length;\n      local_34 = puVar1 + 2;\n      puVar4 = pkt->data;\n      iVar10 = iVar11 + 1;\n      pkt->length = iVar10;\n      if (pkt->maxlen < iVar10) {\n        sVar5 = iVar11 + 0x101;\n        if (pkt->body == (uchar *)0x0) {\n          pkt->maxlen = sVar5;\n          puVar4 = (uchar *)saferealloc(puVar4,sVar5,1);\n          iVar10 = pkt->length;\n          pkt->data = puVar4;\n        }\n        else {\n          pkt->maxlen = sVar5;\n          iVar11 = (int)pkt->body - (int)puVar4;\n          puVar4 = (uchar *)saferealloc(puVar4,sVar5,1);\n          iVar10 = pkt->length;\n          pkt->data = puVar4;\n          pkt->body = puVar4 + iVar11;\n        }\n      }\n      puVar4[iVar10 + -1] = (uchar)uVar3;\n      goto switchD_0003861c_caseD_5;\n    case 3:\n      sVar7 = puVar1[2];\n      pvVar6 = (void *)*local_34;\n      puVar4 = pkt->data;\n      lVar9 = pkt->length + sVar7;\n      pkt->length = lVar9;\n      if (pkt->maxlen < lVar9) {\n        sVar5 = lVar9 + 0x100;\n        if (pkt->body == (uchar *)0x0) {\n          pkt->maxlen = sVar5;\n          puVar4 = (uchar *)saferealloc(puVar4,sVar5,1);\n          lVar9 = pkt->length;\n          pkt->data = puVar4;\n        }\n        else {\n          iVar10 = (int)pkt->body - (int)puVar4;\n          pkt->maxlen = sVar5;\n          puVar4 = (uchar *)saferealloc(puVar4,sVar5,1);\n          lVar9 = pkt->length;\n          pkt->data = puVar4;\n          pkt->body = puVar4 + iVar10;\n        }\n      }\n      memcpy(puVar4 + (lVar9 - sVar7),pvVar6,sVar7);\n      local_34 = puVar1 + 3;\n      goto switchD_0003861c_caseD_5;\n    case 4:\n      __s = (char *)*local_34;\n      iVar11 = pkt->length;\n      puVar4 = pkt->data;\n      iVar10 = iVar11 + 4;\n      pkt->length = iVar10;\n      if (pkt->maxlen < iVar10) {\n        sVar5 = iVar11 + 0x104;\n        if (pkt->body == (uchar *)0x0) {\n          pkt->maxlen = sVar5;\n          puVar4 = (uchar *)saferealloc(puVar4,sVar5,1);\n          iVar10 = pkt->length;\n          pkt->data = puVar4;\n        }\n        else {\n          pkt->maxlen = sVar5;\n          iVar11 = (int)pkt->body - (int)puVar4;\n          puVar4 = (uchar *)saferealloc(puVar4,sVar5,1);\n          iVar10 = pkt->length;\n          pkt->data = puVar4;\n          pkt->body = puVar4 + iVar11;\n        }\n      }\n      puVar4 = puVar4 + iVar10 + -4;\n      puVar4[0] = '\0';\n      puVar4[1] = '\0';\n      puVar4[2] = '\0';\n      puVar4[3] = '\0';\n      pkt->savedpos = pkt->length;\n      sVar7 = strlen(__s);\n      ssh_pkt_addstring_data(pkt,__s,sVar7);\n      local_34 = puVar1 + 2;\n      goto switchD_0003861c_caseD_5;\n    case 5:\n      bn = (Bignum_conflict)*local_34;\n      puVar1 = puVar1 + 2;\n      sVar5 = ssh1_bignum_length(bn);\n      pvVar6 = safemalloc(sVar5,1);\n      ssh1_write_bignum(pvVar6,bn);\n      lVar9 = pkt->length + sVar5;\n      pkt->length = lVar9;\n      if (pkt->maxlen < lVar9) {\n        puVar4 = pkt->body;\n        n = lVar9 + 0x100;\n        ptr = pkt->data;\n        if (puVar4 == (uchar *)0x0) {\n          pkt->maxlen = n;\n          puVar8 = (uchar *)saferealloc(ptr,n,1);\n          lVar9 = pkt->length;\n          pkt->data = puVar8;\n        }\n        else {\n          pkt->maxlen = n;\n          puVar8 = (uchar *)saferealloc(ptr,n,1);\n          lVar9 = pkt->length;\n          pkt->data = puVar8;\n          pkt->body = puVar8 + ((int)puVar4 - (int)ptr);\n        }\n      }\n      else {\n        puVar8 = pkt->data;\n      }\n      memcpy(puVar8 + (lVar9 - sVar5),pvVar6,sVar5);\n      safefree(pvVar6);\n      uVar3 = *puVar1;\n      break;\n    default:\n      goto switchD_0003861c_caseD_5;\n    }" switch (parenthesized_expression "(uVar3)" ( identifier )) (compound_statement "{\n    case 1:\n      goto _L1161;\n    case 2:\n      uVar3 = *local_34;\n      iVar11 = pkt->length;\n      local_34 = puVar1 + 2;\n      puVar4 = pkt->data;\n      iVar10 = iVar11 + 1;\n      pkt->length = iVar10;\n      if (pkt->maxlen < iVar10) {\n        sVar5 = iVar11 + 0x101;\n        if (pkt->body == (uchar *)0x0) {\n          pkt->maxlen = sVar5;\n          puVar4 = (uchar *)saferealloc(puVar4,sVar5,1);\n          iVar10 = pkt->length;\n          pkt->data = puVar4;\n        }\n        else {\n          pkt->maxlen = sVar5;\n          iVar11 = (int)pkt->body - (int)puVar4;\n          puVar4 = (uchar *)saferealloc(puVar4,sVar5,1);\n          iVar10 = pkt->length;\n          pkt->data = puVar4;\n          pkt->body = puVar4 + iVar11;\n        }\n      }\n      puVar4[iVar10 + -1] = (uchar)uVar3;\n      goto switchD_0003861c_caseD_5;\n    case 3:\n      sVar7 = puVar1[2];\n      pvVar6 = (void *)*local_34;\n      puVar4 = pkt->data;\n      lVar9 = pkt->length + sVar7;\n      pkt->length = lVar9;\n      if (pkt->maxlen < lVar9) {\n        sVar5 = lVar9 + 0x100;\n        if (pkt->body == (uchar *)0x0) {\n          pkt->maxlen = sVar5;\n          puVar4 = (uchar *)saferealloc(puVar4,sVar5,1);\n          lVar9 = pkt->length;\n          pkt->data = puVar4;\n        }\n        else {\n          iVar10 = (int)pkt->body - (int)puVar4;\n          pkt->maxlen = sVar5;\n          puVar4 = (uchar *)saferealloc(puVar4,sVar5,1);\n          lVar9 = pkt->length;\n          pkt->data = puVar4;\n          pkt->body = puVar4 + iVar10;\n        }\n      }\n      memcpy(puVar4 + (lVar9 - sVar7),pvVar6,sVar7);\n      local_34 = puVar1 + 3;\n      goto switchD_0003861c_caseD_5;\n    case 4:\n      __s = (char *)*local_34;\n      iVar11 = pkt->length;\n      puVar4 = pkt->data;\n      iVar10 = iVar11 + 4;\n      pkt->length = iVar10;\n      if (pkt->maxlen < iVar10) {\n        sVar5 = iVar11 + 0x104;\n        if (pkt->body == (uchar *)0x0) {\n          pkt->maxlen = sVar5;\n          puVar4 = (uchar *)saferealloc(puVar4,sVar5,1);\n          iVar10 = pkt->length;\n          pkt->data = puVar4;\n        }\n        else {\n          pkt->maxlen = sVar5;\n          iVar11 = (int)pkt->body - (int)puVar4;\n          puVar4 = (uchar *)saferealloc(puVar4,sVar5,1);\n          iVar10 = pkt->length;\n          pkt->data = puVar4;\n          pkt->body = puVar4 + iVar11;\n        }\n      }\n      puVar4 = puVar4 + iVar10 + -4;\n      puVar4[0] = '\0';\n      puVar4[1] = '\0';\n      puVar4[2] = '\0';\n      puVar4[3] = '\0';\n      pkt->savedpos = pkt->length;\n      sVar7 = strlen(__s);\n      ssh_pkt_addstring_data(pkt,__s,sVar7);\n      local_34 = puVar1 + 2;\n      goto switchD_0003861c_caseD_5;\n    case 5:\n      bn = (Bignum_conflict)*local_34;\n      puVar1 = puVar1 + 2;\n      sVar5 = ssh1_bignum_length(bn);\n      pvVar6 = safemalloc(sVar5,1);\n      ssh1_write_bignum(pvVar6,bn);\n      lVar9 = pkt->length + sVar5;\n      pkt->length = lVar9;\n      if (pkt->maxlen < lVar9) {\n        puVar4 = pkt->body;\n        n = lVar9 + 0x100;\n        ptr = pkt->data;\n        if (puVar4 == (uchar *)0x0) {\n          pkt->maxlen = n;\n          puVar8 = (uchar *)saferealloc(ptr,n,1);\n          lVar9 = pkt->length;\n          pkt->data = puVar8;\n        }\n        else {\n          pkt->maxlen = n;\n          puVar8 = (uchar *)saferealloc(ptr,n,1);\n          lVar9 = pkt->length;\n          pkt->data = puVar8;\n          pkt->body = puVar8 + ((int)puVar4 - (int)ptr);\n        }\n      }\n      else {\n        puVar8 = pkt->data;\n      }\n      memcpy(puVar8 + (lVar9 - sVar5),pvVar6,sVar5);\n      safefree(pvVar6);\n      uVar3 = *puVar1;\n      break;\n    default:\n      goto switchD_0003861c_caseD_5;\n    }" { (case_statement "case 1:\n      goto _L1161;" case number_literal : (goto_statement "goto _L1161;" goto statement_identifier ;)) (case_statement "case 2:\n      uVar3 = *local_34;\n      iVar11 = pkt->length;\n      local_34 = puVar1 + 2;\n      puVar4 = pkt->data;\n      iVar10 = iVar11 + 1;\n      pkt->length = iVar10;\n      if (pkt->maxlen < iVar10) {\n        sVar5 = iVar11 + 0x101;\n        if (pkt->body == (uchar *)0x0) {\n          pkt->maxlen = sVar5;\n          puVar4 = (uchar *)saferealloc(puVar4,sVar5,1);\n          iVar10 = pkt->length;\n          pkt->data = puVar4;\n        }\n        else {\n          pkt->maxlen = sVar5;\n          iVar11 = (int)pkt->body - (int)puVar4;\n          puVar4 = (uchar *)saferealloc(puVar4,sVar5,1);\n          iVar10 = pkt->length;\n          pkt->data = puVar4;\n          pkt->body = puVar4 + iVar11;\n        }\n      }\n      puVar4[iVar10 + -1] = (uchar)uVar3;\n      goto switchD_0003861c_caseD_5;" case number_literal : (expression_statement "uVar3 = *local_34;" (assignment_expression "uVar3 = *local_34" identifier = (pointer_expression "*local_34" * identifier)) ;) (expression_statement "iVar11 = pkt->length;" (assignment_expression "iVar11 = pkt->length" identifier = (field_expression "pkt->length" identifier -> field_identifier)) ;) (expression_statement "local_34 = puVar1 + 2;" (assignment_expression "local_34 = puVar1 + 2" identifier = (binary_expression "puVar1 + 2" identifier + number_literal)) ;) (expression_statement "puVar4 = pkt->data;" (assignment_expression "puVar4 = pkt->data" identifier = (field_expression "pkt->data" identifier -> field_identifier)) ;) (expression_statement "iVar10 = iVar11 + 1;" (assignment_expression "iVar10 = iVar11 + 1" identifier = (binary_expression "iVar11 + 1" identifier + number_literal)) ;) (expression_statement "pkt->length = iVar10;" (assignment_expression "pkt->length = iVar10" (field_expression "pkt->length" identifier -> field_identifier) = identifier) ;) (if_statement "if (pkt->maxlen < iVar10) {\n        sVar5 = iVar11 + 0x101;\n        if (pkt->body == (uchar *)0x0) {\n          pkt->maxlen = sVar5;\n          puVar4 = (uchar *)saferealloc(puVar4,sVar5,1);\n          iVar10 = pkt->length;\n          pkt->data = puVar4;\n        }\n        else {\n          pkt->maxlen = sVar5;\n          iVar11 = (int)pkt->body - (int)puVar4;\n          puVar4 = (uchar *)saferealloc(puVar4,sVar5,1);\n          iVar10 = pkt->length;\n          pkt->data = puVar4;\n          pkt->body = puVar4 + iVar11;\n        }\n      }" if (parenthesized_expression "(pkt->maxlen < iVar10)" ( (binary_expression "pkt->maxlen < iVar10" (field_expression "pkt->maxlen" identifier -> field_identifier) < identifier) )) (compound_statement "{\n        sVar5 = iVar11 + 0x101;\n        if (pkt->body == (uchar *)0x0) {\n          pkt->maxlen = sVar5;\n          puVar4 = (uchar *)saferealloc(puVar4,sVar5,1);\n          iVar10 = pkt->length;\n          pkt->data = puVar4;\n        }\n        else {\n          pkt->maxlen = sVar5;\n          iVar11 = (int)pkt->body - (int)puVar4;\n          puVar4 = (uchar *)saferealloc(puVar4,sVar5,1);\n          iVar10 = pkt->length;\n          pkt->data = puVar4;\n          pkt->body = puVar4 + iVar11;\n        }\n      }" { (expression_statement "sVar5 = iVar11 + 0x101;" (assignment_expression "sVar5 = iVar11 + 0x101" identifier = (binary_expression "iVar11 + 0x101" identifier + number_literal)) ;) (if_statement "if (pkt->body == (uchar *)0x0) {\n          pkt->maxlen = sVar5;\n          puVar4 = (uchar *)saferealloc(puVar4,sVar5,1);\n          iVar10 = pkt->length;\n          pkt->data = puVar4;\n        }\n        else {\n          pkt->maxlen = sVar5;\n          iVar11 = (int)pkt->body - (int)puVar4;\n          puVar4 = (uchar *)saferealloc(puVar4,sVar5,1);\n          iVar10 = pkt->length;\n          pkt->data = puVar4;\n          pkt->body = puVar4 + iVar11;\n        }" if (parenthesized_expression "(pkt->body == (uchar *)0x0)" ( (binary_expression "pkt->body == (uchar *)0x0" (field_expression "pkt->body" identifier -> field_identifier) == (cast_expression "(uchar *)0x0" ( (type_descriptor "uchar *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          pkt->maxlen = sVar5;\n          puVar4 = (uchar *)saferealloc(puVar4,sVar5,1);\n          iVar10 = pkt->length;\n          pkt->data = puVar4;\n        }" { (expression_statement "pkt->maxlen = sVar5;" (assignment_expression "pkt->maxlen = sVar5" (field_expression "pkt->maxlen" identifier -> field_identifier) = identifier) ;) (expression_statement "puVar4 = (uchar *)saferealloc(puVar4,sVar5,1);" (assignment_expression "puVar4 = (uchar *)saferealloc(puVar4,sVar5,1)" identifier = (cast_expression "(uchar *)saferealloc(puVar4,sVar5,1)" ( (type_descriptor "uchar *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "saferealloc(puVar4,sVar5,1)" identifier (argument_list "(puVar4,sVar5,1)" ( identifier , identifier , number_literal ))))) ;) (expression_statement "iVar10 = pkt->length;" (assignment_expression "iVar10 = pkt->length" identifier = (field_expression "pkt->length" identifier -> field_identifier)) ;) (expression_statement "pkt->data = puVar4;" (assignment_expression "pkt->data = puVar4" (field_expression "pkt->data" identifier -> field_identifier) = identifier) ;) }) (else_clause "else {\n          pkt->maxlen = sVar5;\n          iVar11 = (int)pkt->body - (int)puVar4;\n          puVar4 = (uchar *)saferealloc(puVar4,sVar5,1);\n          iVar10 = pkt->length;\n          pkt->data = puVar4;\n          pkt->body = puVar4 + iVar11;\n        }" else (compound_statement "{\n          pkt->maxlen = sVar5;\n          iVar11 = (int)pkt->body - (int)puVar4;\n          puVar4 = (uchar *)saferealloc(puVar4,sVar5,1);\n          iVar10 = pkt->length;\n          pkt->data = puVar4;\n          pkt->body = puVar4 + iVar11;\n        }" { (expression_statement "pkt->maxlen = sVar5;" (assignment_expression "pkt->maxlen = sVar5" (field_expression "pkt->maxlen" identifier -> field_identifier) = identifier) ;) (expression_statement "iVar11 = (int)pkt->body - (int)puVar4;" (assignment_expression "iVar11 = (int)pkt->body - (int)puVar4" identifier = (binary_expression "(int)pkt->body - (int)puVar4" (cast_expression "(int)pkt->body" ( (type_descriptor "int" primitive_type) ) (field_expression "pkt->body" identifier -> field_identifier)) - (cast_expression "(int)puVar4" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "puVar4 = (uchar *)saferealloc(puVar4,sVar5,1);" (assignment_expression "puVar4 = (uchar *)saferealloc(puVar4,sVar5,1)" identifier = (cast_expression "(uchar *)saferealloc(puVar4,sVar5,1)" ( (type_descriptor "uchar *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "saferealloc(puVar4,sVar5,1)" identifier (argument_list "(puVar4,sVar5,1)" ( identifier , identifier , number_literal ))))) ;) (expression_statement "iVar10 = pkt->length;" (assignment_expression "iVar10 = pkt->length" identifier = (field_expression "pkt->length" identifier -> field_identifier)) ;) (expression_statement "pkt->data = puVar4;" (assignment_expression "pkt->data = puVar4" (field_expression "pkt->data" identifier -> field_identifier) = identifier) ;) (expression_statement "pkt->body = puVar4 + iVar11;" (assignment_expression "pkt->body = puVar4 + iVar11" (field_expression "pkt->body" identifier -> field_identifier) = (binary_expression "puVar4 + iVar11" identifier + identifier)) ;) }))) })) (expression_statement "puVar4[iVar10 + -1] = (uchar)uVar3;" (assignment_expression "puVar4[iVar10 + -1] = (uchar)uVar3" (subscript_expression "puVar4[iVar10 + -1]" identifier [ (binary_expression "iVar10 + -1" identifier + number_literal) ]) = (cast_expression "(uchar)uVar3" ( (type_descriptor "uchar" type_identifier) ) identifier)) ;) (goto_statement "goto switchD_0003861c_caseD_5;" goto statement_identifier ;)) (case_statement "case 3:\n      sVar7 = puVar1[2];\n      pvVar6 = (void *)*local_34;\n      puVar4 = pkt->data;\n      lVar9 = pkt->length + sVar7;\n      pkt->length = lVar9;\n      if (pkt->maxlen < lVar9) {\n        sVar5 = lVar9 + 0x100;\n        if (pkt->body == (uchar *)0x0) {\n          pkt->maxlen = sVar5;\n          puVar4 = (uchar *)saferealloc(puVar4,sVar5,1);\n          lVar9 = pkt->length;\n          pkt->data = puVar4;\n        }\n        else {\n          iVar10 = (int)pkt->body - (int)puVar4;\n          pkt->maxlen = sVar5;\n          puVar4 = (uchar *)saferealloc(puVar4,sVar5,1);\n          lVar9 = pkt->length;\n          pkt->data = puVar4;\n          pkt->body = puVar4 + iVar10;\n        }\n      }\n      memcpy(puVar4 + (lVar9 - sVar7),pvVar6,sVar7);\n      local_34 = puVar1 + 3;\n      goto switchD_0003861c_caseD_5;" case number_literal : (expression_statement "sVar7 = puVar1[2];" (assignment_expression "sVar7 = puVar1[2]" identifier = (subscript_expression "puVar1[2]" identifier [ number_literal ])) ;) (expression_statement "pvVar6 = (void *)*local_34;" (assignment_expression "pvVar6 = (void *)*local_34" identifier = (cast_expression "(void *)*local_34" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*local_34" * identifier))) ;) (expression_statement "puVar4 = pkt->data;" (assignment_expression "puVar4 = pkt->data" identifier = (field_expression "pkt->data" identifier -> field_identifier)) ;) (expression_statement "lVar9 = pkt->length + sVar7;" (assignment_expression "lVar9 = pkt->length + sVar7" identifier = (binary_expression "pkt->length + sVar7" (field_expression "pkt->length" identifier -> field_identifier) + identifier)) ;) (expression_statement "pkt->length = lVar9;" (assignment_expression "pkt->length = lVar9" (field_expression "pkt->length" identifier -> field_identifier) = identifier) ;) (if_statement "if (pkt->maxlen < lVar9) {\n        sVar5 = lVar9 + 0x100;\n        if (pkt->body == (uchar *)0x0) {\n          pkt->maxlen = sVar5;\n          puVar4 = (uchar *)saferealloc(puVar4,sVar5,1);\n          lVar9 = pkt->length;\n          pkt->data = puVar4;\n        }\n        else {\n          iVar10 = (int)pkt->body - (int)puVar4;\n          pkt->maxlen = sVar5;\n          puVar4 = (uchar *)saferealloc(puVar4,sVar5,1);\n          lVar9 = pkt->length;\n          pkt->data = puVar4;\n          pkt->body = puVar4 + iVar10;\n        }\n      }" if (parenthesized_expression "(pkt->maxlen < lVar9)" ( (binary_expression "pkt->maxlen < lVar9" (field_expression "pkt->maxlen" identifier -> field_identifier) < identifier) )) (compound_statement "{\n        sVar5 = lVar9 + 0x100;\n        if (pkt->body == (uchar *)0x0) {\n          pkt->maxlen = sVar5;\n          puVar4 = (uchar *)saferealloc(puVar4,sVar5,1);\n          lVar9 = pkt->length;\n          pkt->data = puVar4;\n        }\n        else {\n          iVar10 = (int)pkt->body - (int)puVar4;\n          pkt->maxlen = sVar5;\n          puVar4 = (uchar *)saferealloc(puVar4,sVar5,1);\n          lVar9 = pkt->length;\n          pkt->data = puVar4;\n          pkt->body = puVar4 + iVar10;\n        }\n      }" { (expression_statement "sVar5 = lVar9 + 0x100;" (assignment_expression "sVar5 = lVar9 + 0x100" identifier = (binary_expression "lVar9 + 0x100" identifier + number_literal)) ;) (if_statement "if (pkt->body == (uchar *)0x0) {\n          pkt->maxlen = sVar5;\n          puVar4 = (uchar *)saferealloc(puVar4,sVar5,1);\n          lVar9 = pkt->length;\n          pkt->data = puVar4;\n        }\n        else {\n          iVar10 = (int)pkt->body - (int)puVar4;\n          pkt->maxlen = sVar5;\n          puVar4 = (uchar *)saferealloc(puVar4,sVar5,1);\n          lVar9 = pkt->length;\n          pkt->data = puVar4;\n          pkt->body = puVar4 + iVar10;\n        }" if (parenthesized_expression "(pkt->body == (uchar *)0x0)" ( (binary_expression "pkt->body == (uchar *)0x0" (field_expression "pkt->body" identifier -> field_identifier) == (cast_expression "(uchar *)0x0" ( (type_descriptor "uchar *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          pkt->maxlen = sVar5;\n          puVar4 = (uchar *)saferealloc(puVar4,sVar5,1);\n          lVar9 = pkt->length;\n          pkt->data = puVar4;\n        }" { (expression_statement "pkt->maxlen = sVar5;" (assignment_expression "pkt->maxlen = sVar5" (field_expression "pkt->maxlen" identifier -> field_identifier) = identifier) ;) (expression_statement "puVar4 = (uchar *)saferealloc(puVar4,sVar5,1);" (assignment_expression "puVar4 = (uchar *)saferealloc(puVar4,sVar5,1)" identifier = (cast_expression "(uchar *)saferealloc(puVar4,sVar5,1)" ( (type_descriptor "uchar *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "saferealloc(puVar4,sVar5,1)" identifier (argument_list "(puVar4,sVar5,1)" ( identifier , identifier , number_literal ))))) ;) (expression_statement "lVar9 = pkt->length;" (assignment_expression "lVar9 = pkt->length" identifier = (field_expression "pkt->length" identifier -> field_identifier)) ;) (expression_statement "pkt->data = puVar4;" (assignment_expression "pkt->data = puVar4" (field_expression "pkt->data" identifier -> field_identifier) = identifier) ;) }) (else_clause "else {\n          iVar10 = (int)pkt->body - (int)puVar4;\n          pkt->maxlen = sVar5;\n          puVar4 = (uchar *)saferealloc(puVar4,sVar5,1);\n          lVar9 = pkt->length;\n          pkt->data = puVar4;\n          pkt->body = puVar4 + iVar10;\n        }" else (compound_statement "{\n          iVar10 = (int)pkt->body - (int)puVar4;\n          pkt->maxlen = sVar5;\n          puVar4 = (uchar *)saferealloc(puVar4,sVar5,1);\n          lVar9 = pkt->length;\n          pkt->data = puVar4;\n          pkt->body = puVar4 + iVar10;\n        }" { (expression_statement "iVar10 = (int)pkt->body - (int)puVar4;" (assignment_expression "iVar10 = (int)pkt->body - (int)puVar4" identifier = (binary_expression "(int)pkt->body - (int)puVar4" (cast_expression "(int)pkt->body" ( (type_descriptor "int" primitive_type) ) (field_expression "pkt->body" identifier -> field_identifier)) - (cast_expression "(int)puVar4" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "pkt->maxlen = sVar5;" (assignment_expression "pkt->maxlen = sVar5" (field_expression "pkt->maxlen" identifier -> field_identifier) = identifier) ;) (expression_statement "puVar4 = (uchar *)saferealloc(puVar4,sVar5,1);" (assignment_expression "puVar4 = (uchar *)saferealloc(puVar4,sVar5,1)" identifier = (cast_expression "(uchar *)saferealloc(puVar4,sVar5,1)" ( (type_descriptor "uchar *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "saferealloc(puVar4,sVar5,1)" identifier (argument_list "(puVar4,sVar5,1)" ( identifier , identifier , number_literal ))))) ;) (expression_statement "lVar9 = pkt->length;" (assignment_expression "lVar9 = pkt->length" identifier = (field_expression "pkt->length" identifier -> field_identifier)) ;) (expression_statement "pkt->data = puVar4;" (assignment_expression "pkt->data = puVar4" (field_expression "pkt->data" identifier -> field_identifier) = identifier) ;) (expression_statement "pkt->body = puVar4 + iVar10;" (assignment_expression "pkt->body = puVar4 + iVar10" (field_expression "pkt->body" identifier -> field_identifier) = (binary_expression "puVar4 + iVar10" identifier + identifier)) ;) }))) })) (expression_statement "memcpy(puVar4 + (lVar9 - sVar7),pvVar6,sVar7);" (call_expression "memcpy(puVar4 + (lVar9 - sVar7),pvVar6,sVar7)" identifier (argument_list "(puVar4 + (lVar9 - sVar7),pvVar6,sVar7)" ( (binary_expression "puVar4 + (lVar9 - sVar7)" identifier + (parenthesized_expression "(lVar9 - sVar7)" ( (binary_expression "lVar9 - sVar7" identifier - identifier) ))) , identifier , identifier ))) ;) (expression_statement "local_34 = puVar1 + 3;" (assignment_expression "local_34 = puVar1 + 3" identifier = (binary_expression "puVar1 + 3" identifier + number_literal)) ;) (goto_statement "goto switchD_0003861c_caseD_5;" goto statement_identifier ;)) (case_statement "case 4:\n      __s = (char *)*local_34;\n      iVar11 = pkt->length;\n      puVar4 = pkt->data;\n      iVar10 = iVar11 + 4;\n      pkt->length = iVar10;\n      if (pkt->maxlen < iVar10) {\n        sVar5 = iVar11 + 0x104;\n        if (pkt->body == (uchar *)0x0) {\n          pkt->maxlen = sVar5;\n          puVar4 = (uchar *)saferealloc(puVar4,sVar5,1);\n          iVar10 = pkt->length;\n          pkt->data = puVar4;\n        }\n        else {\n          pkt->maxlen = sVar5;\n          iVar11 = (int)pkt->body - (int)puVar4;\n          puVar4 = (uchar *)saferealloc(puVar4,sVar5,1);\n          iVar10 = pkt->length;\n          pkt->data = puVar4;\n          pkt->body = puVar4 + iVar11;\n        }\n      }\n      puVar4 = puVar4 + iVar10 + -4;\n      puVar4[0] = '\0';\n      puVar4[1] = '\0';\n      puVar4[2] = '\0';\n      puVar4[3] = '\0';\n      pkt->savedpos = pkt->length;\n      sVar7 = strlen(__s);\n      ssh_pkt_addstring_data(pkt,__s,sVar7);\n      local_34 = puVar1 + 2;\n      goto switchD_0003861c_caseD_5;" case number_literal : (expression_statement "__s = (char *)*local_34;" (assignment_expression "__s = (char *)*local_34" identifier = (cast_expression "(char *)*local_34" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*local_34" * identifier))) ;) (expression_statement "iVar11 = pkt->length;" (assignment_expression "iVar11 = pkt->length" identifier = (field_expression "pkt->length" identifier -> field_identifier)) ;) (expression_statement "puVar4 = pkt->data;" (assignment_expression "puVar4 = pkt->data" identifier = (field_expression "pkt->data" identifier -> field_identifier)) ;) (expression_statement "iVar10 = iVar11 + 4;" (assignment_expression "iVar10 = iVar11 + 4" identifier = (binary_expression "iVar11 + 4" identifier + number_literal)) ;) (expression_statement "pkt->length = iVar10;" (assignment_expression "pkt->length = iVar10" (field_expression "pkt->length" identifier -> field_identifier) = identifier) ;) (if_statement "if (pkt->maxlen < iVar10) {\n        sVar5 = iVar11 + 0x104;\n        if (pkt->body == (uchar *)0x0) {\n          pkt->maxlen = sVar5;\n          puVar4 = (uchar *)saferealloc(puVar4,sVar5,1);\n          iVar10 = pkt->length;\n          pkt->data = puVar4;\n        }\n        else {\n          pkt->maxlen = sVar5;\n          iVar11 = (int)pkt->body - (int)puVar4;\n          puVar4 = (uchar *)saferealloc(puVar4,sVar5,1);\n          iVar10 = pkt->length;\n          pkt->data = puVar4;\n          pkt->body = puVar4 + iVar11;\n        }\n      }" if (parenthesized_expression "(pkt->maxlen < iVar10)" ( (binary_expression "pkt->maxlen < iVar10" (field_expression "pkt->maxlen" identifier -> field_identifier) < identifier) )) (compound_statement "{\n        sVar5 = iVar11 + 0x104;\n        if (pkt->body == (uchar *)0x0) {\n          pkt->maxlen = sVar5;\n          puVar4 = (uchar *)saferealloc(puVar4,sVar5,1);\n          iVar10 = pkt->length;\n          pkt->data = puVar4;\n        }\n        else {\n          pkt->maxlen = sVar5;\n          iVar11 = (int)pkt->body - (int)puVar4;\n          puVar4 = (uchar *)saferealloc(puVar4,sVar5,1);\n          iVar10 = pkt->length;\n          pkt->data = puVar4;\n          pkt->body = puVar4 + iVar11;\n        }\n      }" { (expression_statement "sVar5 = iVar11 + 0x104;" (assignment_expression "sVar5 = iVar11 + 0x104" identifier = (binary_expression "iVar11 + 0x104" identifier + number_literal)) ;) (if_statement "if (pkt->body == (uchar *)0x0) {\n          pkt->maxlen = sVar5;\n          puVar4 = (uchar *)saferealloc(puVar4,sVar5,1);\n          iVar10 = pkt->length;\n          pkt->data = puVar4;\n        }\n        else {\n          pkt->maxlen = sVar5;\n          iVar11 = (int)pkt->body - (int)puVar4;\n          puVar4 = (uchar *)saferealloc(puVar4,sVar5,1);\n          iVar10 = pkt->length;\n          pkt->data = puVar4;\n          pkt->body = puVar4 + iVar11;\n        }" if (parenthesized_expression "(pkt->body == (uchar *)0x0)" ( (binary_expression "pkt->body == (uchar *)0x0" (field_expression "pkt->body" identifier -> field_identifier) == (cast_expression "(uchar *)0x0" ( (type_descriptor "uchar *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          pkt->maxlen = sVar5;\n          puVar4 = (uchar *)saferealloc(puVar4,sVar5,1);\n          iVar10 = pkt->length;\n          pkt->data = puVar4;\n        }" { (expression_statement "pkt->maxlen = sVar5;" (assignment_expression "pkt->maxlen = sVar5" (field_expression "pkt->maxlen" identifier -> field_identifier) = identifier) ;) (expression_statement "puVar4 = (uchar *)saferealloc(puVar4,sVar5,1);" (assignment_expression "puVar4 = (uchar *)saferealloc(puVar4,sVar5,1)" identifier = (cast_expression "(uchar *)saferealloc(puVar4,sVar5,1)" ( (type_descriptor "uchar *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "saferealloc(puVar4,sVar5,1)" identifier (argument_list "(puVar4,sVar5,1)" ( identifier , identifier , number_literal ))))) ;) (expression_statement "iVar10 = pkt->length;" (assignment_expression "iVar10 = pkt->length" identifier = (field_expression "pkt->length" identifier -> field_identifier)) ;) (expression_statement "pkt->data = puVar4;" (assignment_expression "pkt->data = puVar4" (field_expression "pkt->data" identifier -> field_identifier) = identifier) ;) }) (else_clause "else {\n          pkt->maxlen = sVar5;\n          iVar11 = (int)pkt->body - (int)puVar4;\n          puVar4 = (uchar *)saferealloc(puVar4,sVar5,1);\n          iVar10 = pkt->length;\n          pkt->data = puVar4;\n          pkt->body = puVar4 + iVar11;\n        }" else (compound_statement "{\n          pkt->maxlen = sVar5;\n          iVar11 = (int)pkt->body - (int)puVar4;\n          puVar4 = (uchar *)saferealloc(puVar4,sVar5,1);\n          iVar10 = pkt->length;\n          pkt->data = puVar4;\n          pkt->body = puVar4 + iVar11;\n        }" { (expression_statement "pkt->maxlen = sVar5;" (assignment_expression "pkt->maxlen = sVar5" (field_expression "pkt->maxlen" identifier -> field_identifier) = identifier) ;) (expression_statement "iVar11 = (int)pkt->body - (int)puVar4;" (assignment_expression "iVar11 = (int)pkt->body - (int)puVar4" identifier = (binary_expression "(int)pkt->body - (int)puVar4" (cast_expression "(int)pkt->body" ( (type_descriptor "int" primitive_type) ) (field_expression "pkt->body" identifier -> field_identifier)) - (cast_expression "(int)puVar4" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "puVar4 = (uchar *)saferealloc(puVar4,sVar5,1);" (assignment_expression "puVar4 = (uchar *)saferealloc(puVar4,sVar5,1)" identifier = (cast_expression "(uchar *)saferealloc(puVar4,sVar5,1)" ( (type_descriptor "uchar *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "saferealloc(puVar4,sVar5,1)" identifier (argument_list "(puVar4,sVar5,1)" ( identifier , identifier , number_literal ))))) ;) (expression_statement "iVar10 = pkt->length;" (assignment_expression "iVar10 = pkt->length" identifier = (field_expression "pkt->length" identifier -> field_identifier)) ;) (expression_statement "pkt->data = puVar4;" (assignment_expression "pkt->data = puVar4" (field_expression "pkt->data" identifier -> field_identifier) = identifier) ;) (expression_statement "pkt->body = puVar4 + iVar11;" (assignment_expression "pkt->body = puVar4 + iVar11" (field_expression "pkt->body" identifier -> field_identifier) = (binary_expression "puVar4 + iVar11" identifier + identifier)) ;) }))) })) (expression_statement "puVar4 = puVar4 + iVar10 + -4;" (assignment_expression "puVar4 = puVar4 + iVar10 + -4" identifier = (binary_expression "puVar4 + iVar10 + -4" (binary_expression "puVar4 + iVar10" identifier + identifier) + number_literal)) ;) (expression_statement "puVar4[0] = '\0';" (assignment_expression "puVar4[0] = '\0'" (subscript_expression "puVar4[0]" identifier [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "puVar4[1] = '\0';" (assignment_expression "puVar4[1] = '\0'" (subscript_expression "puVar4[1]" identifier [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "puVar4[2] = '\0';" (assignment_expression "puVar4[2] = '\0'" (subscript_expression "puVar4[2]" identifier [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "puVar4[3] = '\0';" (assignment_expression "puVar4[3] = '\0'" (subscript_expression "puVar4[3]" identifier [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "pkt->savedpos = pkt->length;" (assignment_expression "pkt->savedpos = pkt->length" (field_expression "pkt->savedpos" identifier -> field_identifier) = (field_expression "pkt->length" identifier -> field_identifier)) ;) (expression_statement "sVar7 = strlen(__s);" (assignment_expression "sVar7 = strlen(__s)" identifier = (call_expression "strlen(__s)" identifier (argument_list "(__s)" ( identifier )))) ;) (expression_statement "ssh_pkt_addstring_data(pkt,__s,sVar7);" (call_expression "ssh_pkt_addstring_data(pkt,__s,sVar7)" identifier (argument_list "(pkt,__s,sVar7)" ( identifier , identifier , identifier ))) ;) (expression_statement "local_34 = puVar1 + 2;" (assignment_expression "local_34 = puVar1 + 2" identifier = (binary_expression "puVar1 + 2" identifier + number_literal)) ;) (goto_statement "goto switchD_0003861c_caseD_5;" goto statement_identifier ;)) (case_statement "case 5:\n      bn = (Bignum_conflict)*local_34;\n      puVar1 = puVar1 + 2;\n      sVar5 = ssh1_bignum_length(bn);\n      pvVar6 = safemalloc(sVar5,1);\n      ssh1_write_bignum(pvVar6,bn);\n      lVar9 = pkt->length + sVar5;\n      pkt->length = lVar9;\n      if (pkt->maxlen < lVar9) {\n        puVar4 = pkt->body;\n        n = lVar9 + 0x100;\n        ptr = pkt->data;\n        if (puVar4 == (uchar *)0x0) {\n          pkt->maxlen = n;\n          puVar8 = (uchar *)saferealloc(ptr,n,1);\n          lVar9 = pkt->length;\n          pkt->data = puVar8;\n        }\n        else {\n          pkt->maxlen = n;\n          puVar8 = (uchar *)saferealloc(ptr,n,1);\n          lVar9 = pkt->length;\n          pkt->data = puVar8;\n          pkt->body = puVar8 + ((int)puVar4 - (int)ptr);\n        }\n      }\n      else {\n        puVar8 = pkt->data;\n      }\n      memcpy(puVar8 + (lVar9 - sVar5),pvVar6,sVar5);\n      safefree(pvVar6);\n      uVar3 = *puVar1;\n      break;" case number_literal : (expression_statement "bn = (Bignum_conflict)*local_34;" (assignment_expression "bn = (Bignum_conflict)*local_34" identifier = (binary_expression "(Bignum_conflict)*local_34" (parenthesized_expression "(Bignum_conflict)" ( identifier )) * identifier)) ;) (expression_statement "puVar1 = puVar1 + 2;" (assignment_expression "puVar1 = puVar1 + 2" identifier = (binary_expression "puVar1 + 2" identifier + number_literal)) ;) (expression_statement "sVar5 = ssh1_bignum_length(bn);" (assignment_expression "sVar5 = ssh1_bignum_length(bn)" identifier = (call_expression "ssh1_bignum_length(bn)" identifier (argument_list "(bn)" ( identifier )))) ;) (expression_statement "pvVar6 = safemalloc(sVar5,1);" (assignment_expression "pvVar6 = safemalloc(sVar5,1)" identifier = (call_expression "safemalloc(sVar5,1)" identifier (argument_list "(sVar5,1)" ( identifier , number_literal )))) ;) (expression_statement "ssh1_write_bignum(pvVar6,bn);" (call_expression "ssh1_write_bignum(pvVar6,bn)" identifier (argument_list "(pvVar6,bn)" ( identifier , identifier ))) ;) (expression_statement "lVar9 = pkt->length + sVar5;" (assignment_expression "lVar9 = pkt->length + sVar5" identifier = (binary_expression "pkt->length + sVar5" (field_expression "pkt->length" identifier -> field_identifier) + identifier)) ;) (expression_statement "pkt->length = lVar9;" (assignment_expression "pkt->length = lVar9" (field_expression "pkt->length" identifier -> field_identifier) = identifier) ;) (if_statement "if (pkt->maxlen < lVar9) {\n        puVar4 = pkt->body;\n        n = lVar9 + 0x100;\n        ptr = pkt->data;\n        if (puVar4 == (uchar *)0x0) {\n          pkt->maxlen = n;\n          puVar8 = (uchar *)saferealloc(ptr,n,1);\n          lVar9 = pkt->length;\n          pkt->data = puVar8;\n        }\n        else {\n          pkt->maxlen = n;\n          puVar8 = (uchar *)saferealloc(ptr,n,1);\n          lVar9 = pkt->length;\n          pkt->data = puVar8;\n          pkt->body = puVar8 + ((int)puVar4 - (int)ptr);\n        }\n      }\n      else {\n        puVar8 = pkt->data;\n      }" if (parenthesized_expression "(pkt->maxlen < lVar9)" ( (binary_expression "pkt->maxlen < lVar9" (field_expression "pkt->maxlen" identifier -> field_identifier) < identifier) )) (compound_statement "{\n        puVar4 = pkt->body;\n        n = lVar9 + 0x100;\n        ptr = pkt->data;\n        if (puVar4 == (uchar *)0x0) {\n          pkt->maxlen = n;\n          puVar8 = (uchar *)saferealloc(ptr,n,1);\n          lVar9 = pkt->length;\n          pkt->data = puVar8;\n        }\n        else {\n          pkt->maxlen = n;\n          puVar8 = (uchar *)saferealloc(ptr,n,1);\n          lVar9 = pkt->length;\n          pkt->data = puVar8;\n          pkt->body = puVar8 + ((int)puVar4 - (int)ptr);\n        }\n      }" { (expression_statement "puVar4 = pkt->body;" (assignment_expression "puVar4 = pkt->body" identifier = (field_expression "pkt->body" identifier -> field_identifier)) ;) (expression_statement "n = lVar9 + 0x100;" (assignment_expression "n = lVar9 + 0x100" identifier = (binary_expression "lVar9 + 0x100" identifier + number_literal)) ;) (expression_statement "ptr = pkt->data;" (assignment_expression "ptr = pkt->data" identifier = (field_expression "pkt->data" identifier -> field_identifier)) ;) (if_statement "if (puVar4 == (uchar *)0x0) {\n          pkt->maxlen = n;\n          puVar8 = (uchar *)saferealloc(ptr,n,1);\n          lVar9 = pkt->length;\n          pkt->data = puVar8;\n        }\n        else {\n          pkt->maxlen = n;\n          puVar8 = (uchar *)saferealloc(ptr,n,1);\n          lVar9 = pkt->length;\n          pkt->data = puVar8;\n          pkt->body = puVar8 + ((int)puVar4 - (int)ptr);\n        }" if (parenthesized_expression "(puVar4 == (uchar *)0x0)" ( (binary_expression "puVar4 == (uchar *)0x0" identifier == (cast_expression "(uchar *)0x0" ( (type_descriptor "uchar *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          pkt->maxlen = n;\n          puVar8 = (uchar *)saferealloc(ptr,n,1);\n          lVar9 = pkt->length;\n          pkt->data = puVar8;\n        }" { (expression_statement "pkt->maxlen = n;" (assignment_expression "pkt->maxlen = n" (field_expression "pkt->maxlen" identifier -> field_identifier) = identifier) ;) (expression_statement "puVar8 = (uchar *)saferealloc(ptr,n,1);" (assignment_expression "puVar8 = (uchar *)saferealloc(ptr,n,1)" identifier = (cast_expression "(uchar *)saferealloc(ptr,n,1)" ( (type_descriptor "uchar *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "saferealloc(ptr,n,1)" identifier (argument_list "(ptr,n,1)" ( identifier , identifier , number_literal ))))) ;) (expression_statement "lVar9 = pkt->length;" (assignment_expression "lVar9 = pkt->length" identifier = (field_expression "pkt->length" identifier -> field_identifier)) ;) (expression_statement "pkt->data = puVar8;" (assignment_expression "pkt->data = puVar8" (field_expression "pkt->data" identifier -> field_identifier) = identifier) ;) }) (else_clause "else {\n          pkt->maxlen = n;\n          puVar8 = (uchar *)saferealloc(ptr,n,1);\n          lVar9 = pkt->length;\n          pkt->data = puVar8;\n          pkt->body = puVar8 + ((int)puVar4 - (int)ptr);\n        }" else (compound_statement "{\n          pkt->maxlen = n;\n          puVar8 = (uchar *)saferealloc(ptr,n,1);\n          lVar9 = pkt->length;\n          pkt->data = puVar8;\n          pkt->body = puVar8 + ((int)puVar4 - (int)ptr);\n        }" { (expression_statement "pkt->maxlen = n;" (assignment_expression "pkt->maxlen = n" (field_expression "pkt->maxlen" identifier -> field_identifier) = identifier) ;) (expression_statement "puVar8 = (uchar *)saferealloc(ptr,n,1);" (assignment_expression "puVar8 = (uchar *)saferealloc(ptr,n,1)" identifier = (cast_expression "(uchar *)saferealloc(ptr,n,1)" ( (type_descriptor "uchar *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "saferealloc(ptr,n,1)" identifier (argument_list "(ptr,n,1)" ( identifier , identifier , number_literal ))))) ;) (expression_statement "lVar9 = pkt->length;" (assignment_expression "lVar9 = pkt->length" identifier = (field_expression "pkt->length" identifier -> field_identifier)) ;) (expression_statement "pkt->data = puVar8;" (assignment_expression "pkt->data = puVar8" (field_expression "pkt->data" identifier -> field_identifier) = identifier) ;) (expression_statement "pkt->body = puVar8 + ((int)puVar4 - (int)ptr);" (assignment_expression "pkt->body = puVar8 + ((int)puVar4 - (int)ptr)" (field_expression "pkt->body" identifier -> field_identifier) = (binary_expression "puVar8 + ((int)puVar4 - (int)ptr)" identifier + (parenthesized_expression "((int)puVar4 - (int)ptr)" ( (binary_expression "(int)puVar4 - (int)ptr" (cast_expression "(int)puVar4" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)ptr" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;) }))) }) (else_clause "else {\n        puVar8 = pkt->data;\n      }" else (compound_statement "{\n        puVar8 = pkt->data;\n      }" { (expression_statement "puVar8 = pkt->data;" (assignment_expression "puVar8 = pkt->data" identifier = (field_expression "pkt->data" identifier -> field_identifier)) ;) }))) (expression_statement "memcpy(puVar8 + (lVar9 - sVar5),pvVar6,sVar5);" (call_expression "memcpy(puVar8 + (lVar9 - sVar5),pvVar6,sVar5)" identifier (argument_list "(puVar8 + (lVar9 - sVar5),pvVar6,sVar5)" ( (binary_expression "puVar8 + (lVar9 - sVar5)" identifier + (parenthesized_expression "(lVar9 - sVar5)" ( (binary_expression "lVar9 - sVar5" identifier - identifier) ))) , identifier , identifier ))) ;) (expression_statement "safefree(pvVar6);" (call_expression "safefree(pvVar6)" identifier (argument_list "(pvVar6)" ( identifier ))) ;) (expression_statement "uVar3 = *puVar1;" (assignment_expression "uVar3 = *puVar1" identifier = (pointer_expression "*puVar1" * identifier)) ;) (break_statement "break;" break ;)) (case_statement "default:\n      goto switchD_0003861c_caseD_5;" default : (goto_statement "goto switchD_0003861c_caseD_5;" goto statement_identifier ;)) })) }) while (parenthesized_expression "( true )" ( true )) ;) (labeled_statement "_L1161:\n  uVar3 = *local_34;" statement_identifier : (expression_statement "uVar3 = *local_34;" (assignment_expression "uVar3 = *local_34" identifier = (pointer_expression "*local_34" * identifier)) ;)) (expression_statement "iVar11 = pkt->length;" (assignment_expression "iVar11 = pkt->length" identifier = (field_expression "pkt->length" identifier -> field_identifier)) ;) (expression_statement "local_34 = puVar1 + 2;" (assignment_expression "local_34 = puVar1 + 2" identifier = (binary_expression "puVar1 + 2" identifier + number_literal)) ;) (expression_statement "puVar4 = pkt->data;" (assignment_expression "puVar4 = pkt->data" identifier = (field_expression "pkt->data" identifier -> field_identifier)) ;) (expression_statement "iVar10 = iVar11 + 4;" (assignment_expression "iVar10 = iVar11 + 4" identifier = (binary_expression "iVar11 + 4" identifier + number_literal)) ;) (expression_statement "pkt->length = iVar10;" (assignment_expression "pkt->length = iVar10" (field_expression "pkt->length" identifier -> field_identifier) = identifier) ;) (if_statement "if (pkt->maxlen < iVar10) {\n    sVar5 = iVar11 + 0x104;\n    if (pkt->body == (uchar *)0x0) {\n      pkt->maxlen = sVar5;\n      puVar4 = (uchar *)saferealloc(puVar4,sVar5,1);\n      iVar10 = pkt->length;\n      pkt->data = puVar4;\n    }\n    else {\n      pkt->maxlen = sVar5;\n      iVar11 = (int)pkt->body - (int)puVar4;\n      puVar4 = (uchar *)saferealloc(puVar4,sVar5,1);\n      iVar10 = pkt->length;\n      pkt->data = puVar4;\n      pkt->body = puVar4 + iVar11;\n    }\n  }" if (parenthesized_expression "(pkt->maxlen < iVar10)" ( (binary_expression "pkt->maxlen < iVar10" (field_expression "pkt->maxlen" identifier -> field_identifier) < identifier) )) (compound_statement "{\n    sVar5 = iVar11 + 0x104;\n    if (pkt->body == (uchar *)0x0) {\n      pkt->maxlen = sVar5;\n      puVar4 = (uchar *)saferealloc(puVar4,sVar5,1);\n      iVar10 = pkt->length;\n      pkt->data = puVar4;\n    }\n    else {\n      pkt->maxlen = sVar5;\n      iVar11 = (int)pkt->body - (int)puVar4;\n      puVar4 = (uchar *)saferealloc(puVar4,sVar5,1);\n      iVar10 = pkt->length;\n      pkt->data = puVar4;\n      pkt->body = puVar4 + iVar11;\n    }\n  }" { (expression_statement "sVar5 = iVar11 + 0x104;" (assignment_expression "sVar5 = iVar11 + 0x104" identifier = (binary_expression "iVar11 + 0x104" identifier + number_literal)) ;) (if_statement "if (pkt->body == (uchar *)0x0) {\n      pkt->maxlen = sVar5;\n      puVar4 = (uchar *)saferealloc(puVar4,sVar5,1);\n      iVar10 = pkt->length;\n      pkt->data = puVar4;\n    }\n    else {\n      pkt->maxlen = sVar5;\n      iVar11 = (int)pkt->body - (int)puVar4;\n      puVar4 = (uchar *)saferealloc(puVar4,sVar5,1);\n      iVar10 = pkt->length;\n      pkt->data = puVar4;\n      pkt->body = puVar4 + iVar11;\n    }" if (parenthesized_expression "(pkt->body == (uchar *)0x0)" ( (binary_expression "pkt->body == (uchar *)0x0" (field_expression "pkt->body" identifier -> field_identifier) == (cast_expression "(uchar *)0x0" ( (type_descriptor "uchar *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      pkt->maxlen = sVar5;\n      puVar4 = (uchar *)saferealloc(puVar4,sVar5,1);\n      iVar10 = pkt->length;\n      pkt->data = puVar4;\n    }" { (expression_statement "pkt->maxlen = sVar5;" (assignment_expression "pkt->maxlen = sVar5" (field_expression "pkt->maxlen" identifier -> field_identifier) = identifier) ;) (expression_statement "puVar4 = (uchar *)saferealloc(puVar4,sVar5,1);" (assignment_expression "puVar4 = (uchar *)saferealloc(puVar4,sVar5,1)" identifier = (cast_expression "(uchar *)saferealloc(puVar4,sVar5,1)" ( (type_descriptor "uchar *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "saferealloc(puVar4,sVar5,1)" identifier (argument_list "(puVar4,sVar5,1)" ( identifier , identifier , number_literal ))))) ;) (expression_statement "iVar10 = pkt->length;" (assignment_expression "iVar10 = pkt->length" identifier = (field_expression "pkt->length" identifier -> field_identifier)) ;) (expression_statement "pkt->data = puVar4;" (assignment_expression "pkt->data = puVar4" (field_expression "pkt->data" identifier -> field_identifier) = identifier) ;) }) (else_clause "else {\n      pkt->maxlen = sVar5;\n      iVar11 = (int)pkt->body - (int)puVar4;\n      puVar4 = (uchar *)saferealloc(puVar4,sVar5,1);\n      iVar10 = pkt->length;\n      pkt->data = puVar4;\n      pkt->body = puVar4 + iVar11;\n    }" else (compound_statement "{\n      pkt->maxlen = sVar5;\n      iVar11 = (int)pkt->body - (int)puVar4;\n      puVar4 = (uchar *)saferealloc(puVar4,sVar5,1);\n      iVar10 = pkt->length;\n      pkt->data = puVar4;\n      pkt->body = puVar4 + iVar11;\n    }" { (expression_statement "pkt->maxlen = sVar5;" (assignment_expression "pkt->maxlen = sVar5" (field_expression "pkt->maxlen" identifier -> field_identifier) = identifier) ;) (expression_statement "iVar11 = (int)pkt->body - (int)puVar4;" (assignment_expression "iVar11 = (int)pkt->body - (int)puVar4" identifier = (binary_expression "(int)pkt->body - (int)puVar4" (cast_expression "(int)pkt->body" ( (type_descriptor "int" primitive_type) ) (field_expression "pkt->body" identifier -> field_identifier)) - (cast_expression "(int)puVar4" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "puVar4 = (uchar *)saferealloc(puVar4,sVar5,1);" (assignment_expression "puVar4 = (uchar *)saferealloc(puVar4,sVar5,1)" identifier = (cast_expression "(uchar *)saferealloc(puVar4,sVar5,1)" ( (type_descriptor "uchar *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "saferealloc(puVar4,sVar5,1)" identifier (argument_list "(puVar4,sVar5,1)" ( identifier , identifier , number_literal ))))) ;) (expression_statement "iVar10 = pkt->length;" (assignment_expression "iVar10 = pkt->length" identifier = (field_expression "pkt->length" identifier -> field_identifier)) ;) (expression_statement "pkt->data = puVar4;" (assignment_expression "pkt->data = puVar4" (field_expression "pkt->data" identifier -> field_identifier) = identifier) ;) (expression_statement "pkt->body = puVar4 + iVar11;" (assignment_expression "pkt->body = puVar4 + iVar11" (field_expression "pkt->body" identifier -> field_identifier) = (binary_expression "puVar4 + iVar11" identifier + identifier)) ;) }))) })) (expression_statement "*(uint *)(puVar4 + iVar10 + -4) =\n       uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 | uVar3 << 0x18;" (assignment_expression "*(uint *)(puVar4 + iVar10 + -4) =\n       uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 | uVar3 << 0x18" (pointer_expression "*(uint *)(puVar4 + iVar10 + -4)" * (cast_expression "(uint *)(puVar4 + iVar10 + -4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar4 + iVar10 + -4)" ( (binary_expression "puVar4 + iVar10 + -4" (binary_expression "puVar4 + iVar10" identifier + identifier) + number_literal) )))) = (binary_expression "uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 | uVar3 << 0x18" (binary_expression "uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8" (binary_expression "uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8" (binary_expression "uVar3 >> 0x18" identifier >> number_literal) | (binary_expression "(uVar3 & 0xff0000) >> 8" (parenthesized_expression "(uVar3 & 0xff0000)" ( (binary_expression "uVar3 & 0xff0000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar3 & 0xff00) << 8" (parenthesized_expression "(uVar3 & 0xff00)" ( (binary_expression "uVar3 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "uVar3 << 0x18" identifier << number_literal))) ;) (goto_statement "goto switchD_0003861c_caseD_5;" goto statement_identifier ;) }))
(translation_unit "int * __regparm3 FUN_00038570(int param_1,uint *param_2)\n\n{\n  uint *puVar1;\n  int iVar2;\n  uint uVar3;\n  char *__s;\n  int *piVar4;\n  int iVar5;\n  size_t sVar6;\n  void *pvVar7;\n  int iVar8;\n  int iVar9;\n  int iVar10;\n  int in_GS_OFFSET;\n  uint *local_34;\n  \n  iVar2 = *(int *)(in_GS_OFFSET + 0x14);\n  piVar4 = (int *)FUN_0001db90(1,0x2c);\n  piVar4[4] = 0;\n  piVar4[5] = 0;\n  *piVar4 = 0xd;\n  piVar4[7] = 0x10d;\n  iVar5 = FUN_0001dc50(0,0x10d,1);\n  piVar4[4] = iVar5;\n  *(char *)(iVar5 + -1 + *piVar4) = (char)param_1;\n  piVar4[2] = param_1;\n  piVar4[5] = *piVar4 + piVar4[4];\n  piVar4[9] = 0;\n  piVar4[10] = 0;\n  local_34 = param_2;\nLAB_000385f8:\n  uVar3 = *local_34;\n  puVar1 = local_34;\n  do {\n    if (uVar3 == 0) {\n      if (iVar2 == *(int *)(in_GS_OFFSET + 0x14)) {\n        return piVar4;\n      }\n                    \n      FUN_0008d800();\n    }\n    local_34 = puVar1 + 1;\n    switch(uVar3) {\n    case 1:\n      goto code_r0x000387f0;\n    case 2:\n      uVar3 = *local_34;\n      iVar10 = *piVar4;\n      local_34 = puVar1 + 2;\n      iVar8 = piVar4[4];\n      iVar5 = iVar10 + 1;\n      *piVar4 = iVar5;\n      if (piVar4[7] < iVar5) {\n        iVar10 = iVar10 + 0x101;\n        if (piVar4[5] == 0) {\n          piVar4[7] = iVar10;\n          iVar8 = FUN_0001dc50(iVar8,iVar10,1);\n          iVar5 = *piVar4;\n          piVar4[4] = iVar8;\n        }\n        else {\n          piVar4[7] = iVar10;\n          iVar9 = piVar4[5] - iVar8;\n          iVar8 = FUN_0001dc50(iVar8,iVar10,1);\n          iVar5 = *piVar4;\n          piVar4[4] = iVar8;\n          piVar4[5] = iVar9 + iVar8;\n        }\n      }\n      *(char *)(iVar8 + -1 + iVar5) = (char)uVar3;\n      goto LAB_000385f8;\n    case 3:\n      sVar6 = puVar1[2];\n      pvVar7 = (void *)*local_34;\n      iVar5 = piVar4[4];\n      iVar10 = *piVar4 + sVar6;\n      *piVar4 = iVar10;\n      if (piVar4[7] < iVar10) {\n        iVar10 = iVar10 + 0x100;\n        if (piVar4[5] == 0) {\n          piVar4[7] = iVar10;\n          iVar5 = FUN_0001dc50(iVar5,iVar10,1);\n          iVar10 = *piVar4;\n          piVar4[4] = iVar5;\n        }\n        else {\n          iVar8 = piVar4[5] - iVar5;\n          piVar4[7] = iVar10;\n          iVar5 = FUN_0001dc50(iVar5,iVar10,1);\n          iVar10 = *piVar4;\n          piVar4[4] = iVar5;\n          piVar4[5] = iVar8 + iVar5;\n        }\n      }\n      memcpy((void *)((iVar10 - sVar6) + iVar5),pvVar7,sVar6);\n      local_34 = puVar1 + 3;\n      goto LAB_000385f8;\n    case 4:\n      __s = (char *)*local_34;\n      iVar10 = *piVar4;\n      iVar8 = piVar4[4];\n      iVar5 = iVar10 + 4;\n      *piVar4 = iVar5;\n      if (piVar4[7] < iVar5) {\n        iVar10 = iVar10 + 0x104;\n        if (piVar4[5] == 0) {\n          piVar4[7] = iVar10;\n          iVar8 = FUN_0001dc50(iVar8,iVar10,1);\n          iVar5 = *piVar4;\n          piVar4[4] = iVar8;\n        }\n        else {\n          piVar4[7] = iVar10;\n          iVar9 = piVar4[5] - iVar8;\n          iVar8 = FUN_0001dc50(iVar8,iVar10,1);\n          iVar5 = *piVar4;\n          piVar4[4] = iVar8;\n          piVar4[5] = iVar9 + iVar8;\n        }\n      }\n      *(undefined4 *)(iVar8 + -4 + iVar5) = 0;\n      piVar4[6] = *piVar4;\n      strlen(__s);\n      FUN_000378c0();\n      local_34 = puVar1 + 2;\n      goto LAB_000385f8;\n    case 5:\n      uVar3 = *local_34;\n      puVar1 = puVar1 + 2;\n      sVar6 = FUN_00056940(uVar3);\n      pvVar7 = (void *)FUN_0001db90(sVar6,1);\n      FUN_00056ac0(pvVar7,uVar3);\n      iVar5 = *piVar4 + sVar6;\n      *piVar4 = iVar5;\n      if (piVar4[7] < iVar5) {\n        iVar10 = piVar4[5];\n        iVar5 = iVar5 + 0x100;\n        iVar8 = piVar4[4];\n        if (iVar10 == 0) {\n          piVar4[7] = iVar5;\n          iVar9 = FUN_0001dc50(iVar8,iVar5,1);\n          iVar5 = *piVar4;\n          piVar4[4] = iVar9;\n        }\n        else {\n          piVar4[7] = iVar5;\n          iVar9 = FUN_0001dc50(iVar8,iVar5,1);\n          iVar5 = *piVar4;\n          piVar4[4] = iVar9;\n          piVar4[5] = (iVar10 - iVar8) + iVar9;\n        }\n      }\n      else {\n        iVar9 = piVar4[4];\n      }\n      memcpy((void *)((iVar5 - sVar6) + iVar9),pvVar7,sVar6);\n      FUN_0001dd30(pvVar7);\n      uVar3 = *puVar1;\n      break;\n    default:\n      goto LAB_000385f8;\n    }\n  } while( true );\ncode_r0x000387f0:\n  uVar3 = *local_34;\n  iVar10 = *piVar4;\n  local_34 = puVar1 + 2;\n  iVar8 = piVar4[4];\n  iVar5 = iVar10 + 4;\n  *piVar4 = iVar5;\n  if (piVar4[7] < iVar5) {\n    iVar10 = iVar10 + 0x104;\n    if (piVar4[5] == 0) {\n      piVar4[7] = iVar10;\n      iVar8 = FUN_0001dc50(iVar8,iVar10,1);\n      iVar5 = *piVar4;\n      piVar4[4] = iVar8;\n    }\n    else {\n      piVar4[7] = iVar10;\n      iVar9 = piVar4[5] - iVar8;\n      iVar8 = FUN_0001dc50(iVar8,iVar10,1);\n      iVar5 = *piVar4;\n      piVar4[4] = iVar8;\n      piVar4[5] = iVar9 + iVar8;\n    }\n  }\n  *(uint *)(iVar8 + -4 + iVar5) =\n       uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 | uVar3 << 0x18;\n  goto LAB_000385f8;\n}\n\n" (function_definition "int * __regparm3 FUN_00038570(int param_1,uint *param_2)\n\n{\n  uint *puVar1;\n  int iVar2;\n  uint uVar3;\n  char *__s;\n  int *piVar4;\n  int iVar5;\n  size_t sVar6;\n  void *pvVar7;\n  int iVar8;\n  int iVar9;\n  int iVar10;\n  int in_GS_OFFSET;\n  uint *local_34;\n  \n  iVar2 = *(int *)(in_GS_OFFSET + 0x14);\n  piVar4 = (int *)FUN_0001db90(1,0x2c);\n  piVar4[4] = 0;\n  piVar4[5] = 0;\n  *piVar4 = 0xd;\n  piVar4[7] = 0x10d;\n  iVar5 = FUN_0001dc50(0,0x10d,1);\n  piVar4[4] = iVar5;\n  *(char *)(iVar5 + -1 + *piVar4) = (char)param_1;\n  piVar4[2] = param_1;\n  piVar4[5] = *piVar4 + piVar4[4];\n  piVar4[9] = 0;\n  piVar4[10] = 0;\n  local_34 = param_2;\nLAB_000385f8:\n  uVar3 = *local_34;\n  puVar1 = local_34;\n  do {\n    if (uVar3 == 0) {\n      if (iVar2 == *(int *)(in_GS_OFFSET + 0x14)) {\n        return piVar4;\n      }\n                    \n      FUN_0008d800();\n    }\n    local_34 = puVar1 + 1;\n    switch(uVar3) {\n    case 1:\n      goto code_r0x000387f0;\n    case 2:\n      uVar3 = *local_34;\n      iVar10 = *piVar4;\n      local_34 = puVar1 + 2;\n      iVar8 = piVar4[4];\n      iVar5 = iVar10 + 1;\n      *piVar4 = iVar5;\n      if (piVar4[7] < iVar5) {\n        iVar10 = iVar10 + 0x101;\n        if (piVar4[5] == 0) {\n          piVar4[7] = iVar10;\n          iVar8 = FUN_0001dc50(iVar8,iVar10,1);\n          iVar5 = *piVar4;\n          piVar4[4] = iVar8;\n        }\n        else {\n          piVar4[7] = iVar10;\n          iVar9 = piVar4[5] - iVar8;\n          iVar8 = FUN_0001dc50(iVar8,iVar10,1);\n          iVar5 = *piVar4;\n          piVar4[4] = iVar8;\n          piVar4[5] = iVar9 + iVar8;\n        }\n      }\n      *(char *)(iVar8 + -1 + iVar5) = (char)uVar3;\n      goto LAB_000385f8;\n    case 3:\n      sVar6 = puVar1[2];\n      pvVar7 = (void *)*local_34;\n      iVar5 = piVar4[4];\n      iVar10 = *piVar4 + sVar6;\n      *piVar4 = iVar10;\n      if (piVar4[7] < iVar10) {\n        iVar10 = iVar10 + 0x100;\n        if (piVar4[5] == 0) {\n          piVar4[7] = iVar10;\n          iVar5 = FUN_0001dc50(iVar5,iVar10,1);\n          iVar10 = *piVar4;\n          piVar4[4] = iVar5;\n        }\n        else {\n          iVar8 = piVar4[5] - iVar5;\n          piVar4[7] = iVar10;\n          iVar5 = FUN_0001dc50(iVar5,iVar10,1);\n          iVar10 = *piVar4;\n          piVar4[4] = iVar5;\n          piVar4[5] = iVar8 + iVar5;\n        }\n      }\n      memcpy((void *)((iVar10 - sVar6) + iVar5),pvVar7,sVar6);\n      local_34 = puVar1 + 3;\n      goto LAB_000385f8;\n    case 4:\n      __s = (char *)*local_34;\n      iVar10 = *piVar4;\n      iVar8 = piVar4[4];\n      iVar5 = iVar10 + 4;\n      *piVar4 = iVar5;\n      if (piVar4[7] < iVar5) {\n        iVar10 = iVar10 + 0x104;\n        if (piVar4[5] == 0) {\n          piVar4[7] = iVar10;\n          iVar8 = FUN_0001dc50(iVar8,iVar10,1);\n          iVar5 = *piVar4;\n          piVar4[4] = iVar8;\n        }\n        else {\n          piVar4[7] = iVar10;\n          iVar9 = piVar4[5] - iVar8;\n          iVar8 = FUN_0001dc50(iVar8,iVar10,1);\n          iVar5 = *piVar4;\n          piVar4[4] = iVar8;\n          piVar4[5] = iVar9 + iVar8;\n        }\n      }\n      *(undefined4 *)(iVar8 + -4 + iVar5) = 0;\n      piVar4[6] = *piVar4;\n      strlen(__s);\n      FUN_000378c0();\n      local_34 = puVar1 + 2;\n      goto LAB_000385f8;\n    case 5:\n      uVar3 = *local_34;\n      puVar1 = puVar1 + 2;\n      sVar6 = FUN_00056940(uVar3);\n      pvVar7 = (void *)FUN_0001db90(sVar6,1);\n      FUN_00056ac0(pvVar7,uVar3);\n      iVar5 = *piVar4 + sVar6;\n      *piVar4 = iVar5;\n      if (piVar4[7] < iVar5) {\n        iVar10 = piVar4[5];\n        iVar5 = iVar5 + 0x100;\n        iVar8 = piVar4[4];\n        if (iVar10 == 0) {\n          piVar4[7] = iVar5;\n          iVar9 = FUN_0001dc50(iVar8,iVar5,1);\n          iVar5 = *piVar4;\n          piVar4[4] = iVar9;\n        }\n        else {\n          piVar4[7] = iVar5;\n          iVar9 = FUN_0001dc50(iVar8,iVar5,1);\n          iVar5 = *piVar4;\n          piVar4[4] = iVar9;\n          piVar4[5] = (iVar10 - iVar8) + iVar9;\n        }\n      }\n      else {\n        iVar9 = piVar4[4];\n      }\n      memcpy((void *)((iVar5 - sVar6) + iVar9),pvVar7,sVar6);\n      FUN_0001dd30(pvVar7);\n      uVar3 = *puVar1;\n      break;\n    default:\n      goto LAB_000385f8;\n    }\n  } while( true );\ncode_r0x000387f0:\n  uVar3 = *local_34;\n  iVar10 = *piVar4;\n  local_34 = puVar1 + 2;\n  iVar8 = piVar4[4];\n  iVar5 = iVar10 + 4;\n  *piVar4 = iVar5;\n  if (piVar4[7] < iVar5) {\n    iVar10 = iVar10 + 0x104;\n    if (piVar4[5] == 0) {\n      piVar4[7] = iVar10;\n      iVar8 = FUN_0001dc50(iVar8,iVar10,1);\n      iVar5 = *piVar4;\n      piVar4[4] = iVar8;\n    }\n    else {\n      piVar4[7] = iVar10;\n      iVar9 = piVar4[5] - iVar8;\n      iVar8 = FUN_0001dc50(iVar8,iVar10,1);\n      iVar5 = *piVar4;\n      piVar4[4] = iVar8;\n      piVar4[5] = iVar9 + iVar8;\n    }\n  }\n  *(uint *)(iVar8 + -4 + iVar5) =\n       uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 | uVar3 << 0x18;\n  goto LAB_000385f8;\n}" primitive_type (pointer_declarator "* __regparm3 FUN_00038570(int param_1,uint *param_2)" * (ERROR "__regparm3" identifier) (function_declarator "FUN_00038570(int param_1,uint *param_2)" identifier (parameter_list "(int param_1,uint *param_2)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "uint *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) )))) (compound_statement "{\n  uint *puVar1;\n  int iVar2;\n  uint uVar3;\n  char *__s;\n  int *piVar4;\n  int iVar5;\n  size_t sVar6;\n  void *pvVar7;\n  int iVar8;\n  int iVar9;\n  int iVar10;\n  int in_GS_OFFSET;\n  uint *local_34;\n  \n  iVar2 = *(int *)(in_GS_OFFSET + 0x14);\n  piVar4 = (int *)FUN_0001db90(1,0x2c);\n  piVar4[4] = 0;\n  piVar4[5] = 0;\n  *piVar4 = 0xd;\n  piVar4[7] = 0x10d;\n  iVar5 = FUN_0001dc50(0,0x10d,1);\n  piVar4[4] = iVar5;\n  *(char *)(iVar5 + -1 + *piVar4) = (char)param_1;\n  piVar4[2] = param_1;\n  piVar4[5] = *piVar4 + piVar4[4];\n  piVar4[9] = 0;\n  piVar4[10] = 0;\n  local_34 = param_2;\nLAB_000385f8:\n  uVar3 = *local_34;\n  puVar1 = local_34;\n  do {\n    if (uVar3 == 0) {\n      if (iVar2 == *(int *)(in_GS_OFFSET + 0x14)) {\n        return piVar4;\n      }\n                    \n      FUN_0008d800();\n    }\n    local_34 = puVar1 + 1;\n    switch(uVar3) {\n    case 1:\n      goto code_r0x000387f0;\n    case 2:\n      uVar3 = *local_34;\n      iVar10 = *piVar4;\n      local_34 = puVar1 + 2;\n      iVar8 = piVar4[4];\n      iVar5 = iVar10 + 1;\n      *piVar4 = iVar5;\n      if (piVar4[7] < iVar5) {\n        iVar10 = iVar10 + 0x101;\n        if (piVar4[5] == 0) {\n          piVar4[7] = iVar10;\n          iVar8 = FUN_0001dc50(iVar8,iVar10,1);\n          iVar5 = *piVar4;\n          piVar4[4] = iVar8;\n        }\n        else {\n          piVar4[7] = iVar10;\n          iVar9 = piVar4[5] - iVar8;\n          iVar8 = FUN_0001dc50(iVar8,iVar10,1);\n          iVar5 = *piVar4;\n          piVar4[4] = iVar8;\n          piVar4[5] = iVar9 + iVar8;\n        }\n      }\n      *(char *)(iVar8 + -1 + iVar5) = (char)uVar3;\n      goto LAB_000385f8;\n    case 3:\n      sVar6 = puVar1[2];\n      pvVar7 = (void *)*local_34;\n      iVar5 = piVar4[4];\n      iVar10 = *piVar4 + sVar6;\n      *piVar4 = iVar10;\n      if (piVar4[7] < iVar10) {\n        iVar10 = iVar10 + 0x100;\n        if (piVar4[5] == 0) {\n          piVar4[7] = iVar10;\n          iVar5 = FUN_0001dc50(iVar5,iVar10,1);\n          iVar10 = *piVar4;\n          piVar4[4] = iVar5;\n        }\n        else {\n          iVar8 = piVar4[5] - iVar5;\n          piVar4[7] = iVar10;\n          iVar5 = FUN_0001dc50(iVar5,iVar10,1);\n          iVar10 = *piVar4;\n          piVar4[4] = iVar5;\n          piVar4[5] = iVar8 + iVar5;\n        }\n      }\n      memcpy((void *)((iVar10 - sVar6) + iVar5),pvVar7,sVar6);\n      local_34 = puVar1 + 3;\n      goto LAB_000385f8;\n    case 4:\n      __s = (char *)*local_34;\n      iVar10 = *piVar4;\n      iVar8 = piVar4[4];\n      iVar5 = iVar10 + 4;\n      *piVar4 = iVar5;\n      if (piVar4[7] < iVar5) {\n        iVar10 = iVar10 + 0x104;\n        if (piVar4[5] == 0) {\n          piVar4[7] = iVar10;\n          iVar8 = FUN_0001dc50(iVar8,iVar10,1);\n          iVar5 = *piVar4;\n          piVar4[4] = iVar8;\n        }\n        else {\n          piVar4[7] = iVar10;\n          iVar9 = piVar4[5] - iVar8;\n          iVar8 = FUN_0001dc50(iVar8,iVar10,1);\n          iVar5 = *piVar4;\n          piVar4[4] = iVar8;\n          piVar4[5] = iVar9 + iVar8;\n        }\n      }\n      *(undefined4 *)(iVar8 + -4 + iVar5) = 0;\n      piVar4[6] = *piVar4;\n      strlen(__s);\n      FUN_000378c0();\n      local_34 = puVar1 + 2;\n      goto LAB_000385f8;\n    case 5:\n      uVar3 = *local_34;\n      puVar1 = puVar1 + 2;\n      sVar6 = FUN_00056940(uVar3);\n      pvVar7 = (void *)FUN_0001db90(sVar6,1);\n      FUN_00056ac0(pvVar7,uVar3);\n      iVar5 = *piVar4 + sVar6;\n      *piVar4 = iVar5;\n      if (piVar4[7] < iVar5) {\n        iVar10 = piVar4[5];\n        iVar5 = iVar5 + 0x100;\n        iVar8 = piVar4[4];\n        if (iVar10 == 0) {\n          piVar4[7] = iVar5;\n          iVar9 = FUN_0001dc50(iVar8,iVar5,1);\n          iVar5 = *piVar4;\n          piVar4[4] = iVar9;\n        }\n        else {\n          piVar4[7] = iVar5;\n          iVar9 = FUN_0001dc50(iVar8,iVar5,1);\n          iVar5 = *piVar4;\n          piVar4[4] = iVar9;\n          piVar4[5] = (iVar10 - iVar8) + iVar9;\n        }\n      }\n      else {\n        iVar9 = piVar4[4];\n      }\n      memcpy((void *)((iVar5 - sVar6) + iVar9),pvVar7,sVar6);\n      FUN_0001dd30(pvVar7);\n      uVar3 = *puVar1;\n      break;\n    default:\n      goto LAB_000385f8;\n    }\n  } while( true );\ncode_r0x000387f0:\n  uVar3 = *local_34;\n  iVar10 = *piVar4;\n  local_34 = puVar1 + 2;\n  iVar8 = piVar4[4];\n  iVar5 = iVar10 + 4;\n  *piVar4 = iVar5;\n  if (piVar4[7] < iVar5) {\n    iVar10 = iVar10 + 0x104;\n    if (piVar4[5] == 0) {\n      piVar4[7] = iVar10;\n      iVar8 = FUN_0001dc50(iVar8,iVar10,1);\n      iVar5 = *piVar4;\n      piVar4[4] = iVar8;\n    }\n    else {\n      piVar4[7] = iVar10;\n      iVar9 = piVar4[5] - iVar8;\n      iVar8 = FUN_0001dc50(iVar8,iVar10,1);\n      iVar5 = *piVar4;\n      piVar4[4] = iVar8;\n      piVar4[5] = iVar9 + iVar8;\n    }\n  }\n  *(uint *)(iVar8 + -4 + iVar5) =\n       uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 | uVar3 << 0x18;\n  goto LAB_000385f8;\n}" { (declaration "uint *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "char *__s;" primitive_type (pointer_declarator "*__s" * identifier) ;) (declaration "int *piVar4;" primitive_type (pointer_declarator "*piVar4" * identifier) ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "size_t sVar6;" primitive_type identifier ;) (declaration "void *pvVar7;" primitive_type (pointer_declarator "*pvVar7" * identifier) ;) (declaration "int iVar8;" primitive_type identifier ;) (declaration "int iVar9;" primitive_type identifier ;) (declaration "int iVar10;" primitive_type identifier ;) (declaration "int in_GS_OFFSET;" primitive_type identifier ;) (declaration "uint *local_34;" type_identifier (pointer_declarator "*local_34" * identifier) ;) (expression_statement "iVar2 = *(int *)(in_GS_OFFSET + 0x14);" (assignment_expression "iVar2 = *(int *)(in_GS_OFFSET + 0x14)" identifier = (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) ;) (expression_statement "piVar4 = (int *)FUN_0001db90(1,0x2c);" (assignment_expression "piVar4 = (int *)FUN_0001db90(1,0x2c)" identifier = (cast_expression "(int *)FUN_0001db90(1,0x2c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_0001db90(1,0x2c)" identifier (argument_list "(1,0x2c)" ( number_literal , number_literal ))))) ;) (expression_statement "piVar4[4] = 0;" (assignment_expression "piVar4[4] = 0" (subscript_expression "piVar4[4]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "piVar4[5] = 0;" (assignment_expression "piVar4[5] = 0" (subscript_expression "piVar4[5]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*piVar4 = 0xd;" (assignment_expression "*piVar4 = 0xd" (pointer_expression "*piVar4" * identifier) = number_literal) ;) (expression_statement "piVar4[7] = 0x10d;" (assignment_expression "piVar4[7] = 0x10d" (subscript_expression "piVar4[7]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "iVar5 = FUN_0001dc50(0,0x10d,1);" (assignment_expression "iVar5 = FUN_0001dc50(0,0x10d,1)" identifier = (call_expression "FUN_0001dc50(0,0x10d,1)" identifier (argument_list "(0,0x10d,1)" ( number_literal , number_literal , number_literal )))) ;) (expression_statement "piVar4[4] = iVar5;" (assignment_expression "piVar4[4] = iVar5" (subscript_expression "piVar4[4]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*(char *)(iVar5 + -1 + *piVar4) = (char)param_1;" (assignment_expression "*(char *)(iVar5 + -1 + *piVar4) = (char)param_1" (pointer_expression "*(char *)(iVar5 + -1 + *piVar4)" * (cast_expression "(char *)(iVar5 + -1 + *piVar4)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + -1 + *piVar4)" ( (binary_expression "iVar5 + -1 + *piVar4" (binary_expression "iVar5 + -1" identifier + number_literal) + (pointer_expression "*piVar4" * identifier)) )))) = (cast_expression "(char)param_1" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (expression_statement "piVar4[2] = param_1;" (assignment_expression "piVar4[2] = param_1" (subscript_expression "piVar4[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "piVar4[5] = *piVar4 + piVar4[4];" (assignment_expression "piVar4[5] = *piVar4 + piVar4[4]" (subscript_expression "piVar4[5]" identifier [ number_literal ]) = (binary_expression "*piVar4 + piVar4[4]" (pointer_expression "*piVar4" * identifier) + (subscript_expression "piVar4[4]" identifier [ number_literal ]))) ;) (expression_statement "piVar4[9] = 0;" (assignment_expression "piVar4[9] = 0" (subscript_expression "piVar4[9]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "piVar4[10] = 0;" (assignment_expression "piVar4[10] = 0" (subscript_expression "piVar4[10]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "local_34 = param_2;" (assignment_expression "local_34 = param_2" identifier = identifier) ;) (labeled_statement "LAB_000385f8:\n  uVar3 = *local_34;" statement_identifier : (expression_statement "uVar3 = *local_34;" (assignment_expression "uVar3 = *local_34" identifier = (pointer_expression "*local_34" * identifier)) ;)) (expression_statement "puVar1 = local_34;" (assignment_expression "puVar1 = local_34" identifier = identifier) ;) (do_statement "do {\n    if (uVar3 == 0) {\n      if (iVar2 == *(int *)(in_GS_OFFSET + 0x14)) {\n        return piVar4;\n      }\n                    \n      FUN_0008d800();\n    }\n    local_34 = puVar1 + 1;\n    switch(uVar3) {\n    case 1:\n      goto code_r0x000387f0;\n    case 2:\n      uVar3 = *local_34;\n      iVar10 = *piVar4;\n      local_34 = puVar1 + 2;\n      iVar8 = piVar4[4];\n      iVar5 = iVar10 + 1;\n      *piVar4 = iVar5;\n      if (piVar4[7] < iVar5) {\n        iVar10 = iVar10 + 0x101;\n        if (piVar4[5] == 0) {\n          piVar4[7] = iVar10;\n          iVar8 = FUN_0001dc50(iVar8,iVar10,1);\n          iVar5 = *piVar4;\n          piVar4[4] = iVar8;\n        }\n        else {\n          piVar4[7] = iVar10;\n          iVar9 = piVar4[5] - iVar8;\n          iVar8 = FUN_0001dc50(iVar8,iVar10,1);\n          iVar5 = *piVar4;\n          piVar4[4] = iVar8;\n          piVar4[5] = iVar9 + iVar8;\n        }\n      }\n      *(char *)(iVar8 + -1 + iVar5) = (char)uVar3;\n      goto LAB_000385f8;\n    case 3:\n      sVar6 = puVar1[2];\n      pvVar7 = (void *)*local_34;\n      iVar5 = piVar4[4];\n      iVar10 = *piVar4 + sVar6;\n      *piVar4 = iVar10;\n      if (piVar4[7] < iVar10) {\n        iVar10 = iVar10 + 0x100;\n        if (piVar4[5] == 0) {\n          piVar4[7] = iVar10;\n          iVar5 = FUN_0001dc50(iVar5,iVar10,1);\n          iVar10 = *piVar4;\n          piVar4[4] = iVar5;\n        }\n        else {\n          iVar8 = piVar4[5] - iVar5;\n          piVar4[7] = iVar10;\n          iVar5 = FUN_0001dc50(iVar5,iVar10,1);\n          iVar10 = *piVar4;\n          piVar4[4] = iVar5;\n          piVar4[5] = iVar8 + iVar5;\n        }\n      }\n      memcpy((void *)((iVar10 - sVar6) + iVar5),pvVar7,sVar6);\n      local_34 = puVar1 + 3;\n      goto LAB_000385f8;\n    case 4:\n      __s = (char *)*local_34;\n      iVar10 = *piVar4;\n      iVar8 = piVar4[4];\n      iVar5 = iVar10 + 4;\n      *piVar4 = iVar5;\n      if (piVar4[7] < iVar5) {\n        iVar10 = iVar10 + 0x104;\n        if (piVar4[5] == 0) {\n          piVar4[7] = iVar10;\n          iVar8 = FUN_0001dc50(iVar8,iVar10,1);\n          iVar5 = *piVar4;\n          piVar4[4] = iVar8;\n        }\n        else {\n          piVar4[7] = iVar10;\n          iVar9 = piVar4[5] - iVar8;\n          iVar8 = FUN_0001dc50(iVar8,iVar10,1);\n          iVar5 = *piVar4;\n          piVar4[4] = iVar8;\n          piVar4[5] = iVar9 + iVar8;\n        }\n      }\n      *(undefined4 *)(iVar8 + -4 + iVar5) = 0;\n      piVar4[6] = *piVar4;\n      strlen(__s);\n      FUN_000378c0();\n      local_34 = puVar1 + 2;\n      goto LAB_000385f8;\n    case 5:\n      uVar3 = *local_34;\n      puVar1 = puVar1 + 2;\n      sVar6 = FUN_00056940(uVar3);\n      pvVar7 = (void *)FUN_0001db90(sVar6,1);\n      FUN_00056ac0(pvVar7,uVar3);\n      iVar5 = *piVar4 + sVar6;\n      *piVar4 = iVar5;\n      if (piVar4[7] < iVar5) {\n        iVar10 = piVar4[5];\n        iVar5 = iVar5 + 0x100;\n        iVar8 = piVar4[4];\n        if (iVar10 == 0) {\n          piVar4[7] = iVar5;\n          iVar9 = FUN_0001dc50(iVar8,iVar5,1);\n          iVar5 = *piVar4;\n          piVar4[4] = iVar9;\n        }\n        else {\n          piVar4[7] = iVar5;\n          iVar9 = FUN_0001dc50(iVar8,iVar5,1);\n          iVar5 = *piVar4;\n          piVar4[4] = iVar9;\n          piVar4[5] = (iVar10 - iVar8) + iVar9;\n        }\n      }\n      else {\n        iVar9 = piVar4[4];\n      }\n      memcpy((void *)((iVar5 - sVar6) + iVar9),pvVar7,sVar6);\n      FUN_0001dd30(pvVar7);\n      uVar3 = *puVar1;\n      break;\n    default:\n      goto LAB_000385f8;\n    }\n  } while( true );" do (compound_statement "{\n    if (uVar3 == 0) {\n      if (iVar2 == *(int *)(in_GS_OFFSET + 0x14)) {\n        return piVar4;\n      }\n                    \n      FUN_0008d800();\n    }\n    local_34 = puVar1 + 1;\n    switch(uVar3) {\n    case 1:\n      goto code_r0x000387f0;\n    case 2:\n      uVar3 = *local_34;\n      iVar10 = *piVar4;\n      local_34 = puVar1 + 2;\n      iVar8 = piVar4[4];\n      iVar5 = iVar10 + 1;\n      *piVar4 = iVar5;\n      if (piVar4[7] < iVar5) {\n        iVar10 = iVar10 + 0x101;\n        if (piVar4[5] == 0) {\n          piVar4[7] = iVar10;\n          iVar8 = FUN_0001dc50(iVar8,iVar10,1);\n          iVar5 = *piVar4;\n          piVar4[4] = iVar8;\n        }\n        else {\n          piVar4[7] = iVar10;\n          iVar9 = piVar4[5] - iVar8;\n          iVar8 = FUN_0001dc50(iVar8,iVar10,1);\n          iVar5 = *piVar4;\n          piVar4[4] = iVar8;\n          piVar4[5] = iVar9 + iVar8;\n        }\n      }\n      *(char *)(iVar8 + -1 + iVar5) = (char)uVar3;\n      goto LAB_000385f8;\n    case 3:\n      sVar6 = puVar1[2];\n      pvVar7 = (void *)*local_34;\n      iVar5 = piVar4[4];\n      iVar10 = *piVar4 + sVar6;\n      *piVar4 = iVar10;\n      if (piVar4[7] < iVar10) {\n        iVar10 = iVar10 + 0x100;\n        if (piVar4[5] == 0) {\n          piVar4[7] = iVar10;\n          iVar5 = FUN_0001dc50(iVar5,iVar10,1);\n          iVar10 = *piVar4;\n          piVar4[4] = iVar5;\n        }\n        else {\n          iVar8 = piVar4[5] - iVar5;\n          piVar4[7] = iVar10;\n          iVar5 = FUN_0001dc50(iVar5,iVar10,1);\n          iVar10 = *piVar4;\n          piVar4[4] = iVar5;\n          piVar4[5] = iVar8 + iVar5;\n        }\n      }\n      memcpy((void *)((iVar10 - sVar6) + iVar5),pvVar7,sVar6);\n      local_34 = puVar1 + 3;\n      goto LAB_000385f8;\n    case 4:\n      __s = (char *)*local_34;\n      iVar10 = *piVar4;\n      iVar8 = piVar4[4];\n      iVar5 = iVar10 + 4;\n      *piVar4 = iVar5;\n      if (piVar4[7] < iVar5) {\n        iVar10 = iVar10 + 0x104;\n        if (piVar4[5] == 0) {\n          piVar4[7] = iVar10;\n          iVar8 = FUN_0001dc50(iVar8,iVar10,1);\n          iVar5 = *piVar4;\n          piVar4[4] = iVar8;\n        }\n        else {\n          piVar4[7] = iVar10;\n          iVar9 = piVar4[5] - iVar8;\n          iVar8 = FUN_0001dc50(iVar8,iVar10,1);\n          iVar5 = *piVar4;\n          piVar4[4] = iVar8;\n          piVar4[5] = iVar9 + iVar8;\n        }\n      }\n      *(undefined4 *)(iVar8 + -4 + iVar5) = 0;\n      piVar4[6] = *piVar4;\n      strlen(__s);\n      FUN_000378c0();\n      local_34 = puVar1 + 2;\n      goto LAB_000385f8;\n    case 5:\n      uVar3 = *local_34;\n      puVar1 = puVar1 + 2;\n      sVar6 = FUN_00056940(uVar3);\n      pvVar7 = (void *)FUN_0001db90(sVar6,1);\n      FUN_00056ac0(pvVar7,uVar3);\n      iVar5 = *piVar4 + sVar6;\n      *piVar4 = iVar5;\n      if (piVar4[7] < iVar5) {\n        iVar10 = piVar4[5];\n        iVar5 = iVar5 + 0x100;\n        iVar8 = piVar4[4];\n        if (iVar10 == 0) {\n          piVar4[7] = iVar5;\n          iVar9 = FUN_0001dc50(iVar8,iVar5,1);\n          iVar5 = *piVar4;\n          piVar4[4] = iVar9;\n        }\n        else {\n          piVar4[7] = iVar5;\n          iVar9 = FUN_0001dc50(iVar8,iVar5,1);\n          iVar5 = *piVar4;\n          piVar4[4] = iVar9;\n          piVar4[5] = (iVar10 - iVar8) + iVar9;\n        }\n      }\n      else {\n        iVar9 = piVar4[4];\n      }\n      memcpy((void *)((iVar5 - sVar6) + iVar9),pvVar7,sVar6);\n      FUN_0001dd30(pvVar7);\n      uVar3 = *puVar1;\n      break;\n    default:\n      goto LAB_000385f8;\n    }\n  }" { (if_statement "if (uVar3 == 0) {\n      if (iVar2 == *(int *)(in_GS_OFFSET + 0x14)) {\n        return piVar4;\n      }\n                    \n      FUN_0008d800();\n    }" if (parenthesized_expression "(uVar3 == 0)" ( (binary_expression "uVar3 == 0" identifier == number_literal) )) (compound_statement "{\n      if (iVar2 == *(int *)(in_GS_OFFSET + 0x14)) {\n        return piVar4;\n      }\n                    \n      FUN_0008d800();\n    }" { (if_statement "if (iVar2 == *(int *)(in_GS_OFFSET + 0x14)) {\n        return piVar4;\n      }" if (parenthesized_expression "(iVar2 == *(int *)(in_GS_OFFSET + 0x14))" ( (binary_expression "iVar2 == *(int *)(in_GS_OFFSET + 0x14)" identifier == (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) )) (compound_statement "{\n        return piVar4;\n      }" { (return_statement "return piVar4;" return identifier ;) })) (expression_statement "FUN_0008d800();" (call_expression "FUN_0008d800()" identifier (argument_list "()" ( ))) ;) })) (expression_statement "local_34 = puVar1 + 1;" (assignment_expression "local_34 = puVar1 + 1" identifier = (binary_expression "puVar1 + 1" identifier + number_literal)) ;) (switch_statement "switch(uVar3) {\n    case 1:\n      goto code_r0x000387f0;\n    case 2:\n      uVar3 = *local_34;\n      iVar10 = *piVar4;\n      local_34 = puVar1 + 2;\n      iVar8 = piVar4[4];\n      iVar5 = iVar10 + 1;\n      *piVar4 = iVar5;\n      if (piVar4[7] < iVar5) {\n        iVar10 = iVar10 + 0x101;\n        if (piVar4[5] == 0) {\n          piVar4[7] = iVar10;\n          iVar8 = FUN_0001dc50(iVar8,iVar10,1);\n          iVar5 = *piVar4;\n          piVar4[4] = iVar8;\n        }\n        else {\n          piVar4[7] = iVar10;\n          iVar9 = piVar4[5] - iVar8;\n          iVar8 = FUN_0001dc50(iVar8,iVar10,1);\n          iVar5 = *piVar4;\n          piVar4[4] = iVar8;\n          piVar4[5] = iVar9 + iVar8;\n        }\n      }\n      *(char *)(iVar8 + -1 + iVar5) = (char)uVar3;\n      goto LAB_000385f8;\n    case 3:\n      sVar6 = puVar1[2];\n      pvVar7 = (void *)*local_34;\n      iVar5 = piVar4[4];\n      iVar10 = *piVar4 + sVar6;\n      *piVar4 = iVar10;\n      if (piVar4[7] < iVar10) {\n        iVar10 = iVar10 + 0x100;\n        if (piVar4[5] == 0) {\n          piVar4[7] = iVar10;\n          iVar5 = FUN_0001dc50(iVar5,iVar10,1);\n          iVar10 = *piVar4;\n          piVar4[4] = iVar5;\n        }\n        else {\n          iVar8 = piVar4[5] - iVar5;\n          piVar4[7] = iVar10;\n          iVar5 = FUN_0001dc50(iVar5,iVar10,1);\n          iVar10 = *piVar4;\n          piVar4[4] = iVar5;\n          piVar4[5] = iVar8 + iVar5;\n        }\n      }\n      memcpy((void *)((iVar10 - sVar6) + iVar5),pvVar7,sVar6);\n      local_34 = puVar1 + 3;\n      goto LAB_000385f8;\n    case 4:\n      __s = (char *)*local_34;\n      iVar10 = *piVar4;\n      iVar8 = piVar4[4];\n      iVar5 = iVar10 + 4;\n      *piVar4 = iVar5;\n      if (piVar4[7] < iVar5) {\n        iVar10 = iVar10 + 0x104;\n        if (piVar4[5] == 0) {\n          piVar4[7] = iVar10;\n          iVar8 = FUN_0001dc50(iVar8,iVar10,1);\n          iVar5 = *piVar4;\n          piVar4[4] = iVar8;\n        }\n        else {\n          piVar4[7] = iVar10;\n          iVar9 = piVar4[5] - iVar8;\n          iVar8 = FUN_0001dc50(iVar8,iVar10,1);\n          iVar5 = *piVar4;\n          piVar4[4] = iVar8;\n          piVar4[5] = iVar9 + iVar8;\n        }\n      }\n      *(undefined4 *)(iVar8 + -4 + iVar5) = 0;\n      piVar4[6] = *piVar4;\n      strlen(__s);\n      FUN_000378c0();\n      local_34 = puVar1 + 2;\n      goto LAB_000385f8;\n    case 5:\n      uVar3 = *local_34;\n      puVar1 = puVar1 + 2;\n      sVar6 = FUN_00056940(uVar3);\n      pvVar7 = (void *)FUN_0001db90(sVar6,1);\n      FUN_00056ac0(pvVar7,uVar3);\n      iVar5 = *piVar4 + sVar6;\n      *piVar4 = iVar5;\n      if (piVar4[7] < iVar5) {\n        iVar10 = piVar4[5];\n        iVar5 = iVar5 + 0x100;\n        iVar8 = piVar4[4];\n        if (iVar10 == 0) {\n          piVar4[7] = iVar5;\n          iVar9 = FUN_0001dc50(iVar8,iVar5,1);\n          iVar5 = *piVar4;\n          piVar4[4] = iVar9;\n        }\n        else {\n          piVar4[7] = iVar5;\n          iVar9 = FUN_0001dc50(iVar8,iVar5,1);\n          iVar5 = *piVar4;\n          piVar4[4] = iVar9;\n          piVar4[5] = (iVar10 - iVar8) + iVar9;\n        }\n      }\n      else {\n        iVar9 = piVar4[4];\n      }\n      memcpy((void *)((iVar5 - sVar6) + iVar9),pvVar7,sVar6);\n      FUN_0001dd30(pvVar7);\n      uVar3 = *puVar1;\n      break;\n    default:\n      goto LAB_000385f8;\n    }" switch (parenthesized_expression "(uVar3)" ( identifier )) (compound_statement "{\n    case 1:\n      goto code_r0x000387f0;\n    case 2:\n      uVar3 = *local_34;\n      iVar10 = *piVar4;\n      local_34 = puVar1 + 2;\n      iVar8 = piVar4[4];\n      iVar5 = iVar10 + 1;\n      *piVar4 = iVar5;\n      if (piVar4[7] < iVar5) {\n        iVar10 = iVar10 + 0x101;\n        if (piVar4[5] == 0) {\n          piVar4[7] = iVar10;\n          iVar8 = FUN_0001dc50(iVar8,iVar10,1);\n          iVar5 = *piVar4;\n          piVar4[4] = iVar8;\n        }\n        else {\n          piVar4[7] = iVar10;\n          iVar9 = piVar4[5] - iVar8;\n          iVar8 = FUN_0001dc50(iVar8,iVar10,1);\n          iVar5 = *piVar4;\n          piVar4[4] = iVar8;\n          piVar4[5] = iVar9 + iVar8;\n        }\n      }\n      *(char *)(iVar8 + -1 + iVar5) = (char)uVar3;\n      goto LAB_000385f8;\n    case 3:\n      sVar6 = puVar1[2];\n      pvVar7 = (void *)*local_34;\n      iVar5 = piVar4[4];\n      iVar10 = *piVar4 + sVar6;\n      *piVar4 = iVar10;\n      if (piVar4[7] < iVar10) {\n        iVar10 = iVar10 + 0x100;\n        if (piVar4[5] == 0) {\n          piVar4[7] = iVar10;\n          iVar5 = FUN_0001dc50(iVar5,iVar10,1);\n          iVar10 = *piVar4;\n          piVar4[4] = iVar5;\n        }\n        else {\n          iVar8 = piVar4[5] - iVar5;\n          piVar4[7] = iVar10;\n          iVar5 = FUN_0001dc50(iVar5,iVar10,1);\n          iVar10 = *piVar4;\n          piVar4[4] = iVar5;\n          piVar4[5] = iVar8 + iVar5;\n        }\n      }\n      memcpy((void *)((iVar10 - sVar6) + iVar5),pvVar7,sVar6);\n      local_34 = puVar1 + 3;\n      goto LAB_000385f8;\n    case 4:\n      __s = (char *)*local_34;\n      iVar10 = *piVar4;\n      iVar8 = piVar4[4];\n      iVar5 = iVar10 + 4;\n      *piVar4 = iVar5;\n      if (piVar4[7] < iVar5) {\n        iVar10 = iVar10 + 0x104;\n        if (piVar4[5] == 0) {\n          piVar4[7] = iVar10;\n          iVar8 = FUN_0001dc50(iVar8,iVar10,1);\n          iVar5 = *piVar4;\n          piVar4[4] = iVar8;\n        }\n        else {\n          piVar4[7] = iVar10;\n          iVar9 = piVar4[5] - iVar8;\n          iVar8 = FUN_0001dc50(iVar8,iVar10,1);\n          iVar5 = *piVar4;\n          piVar4[4] = iVar8;\n          piVar4[5] = iVar9 + iVar8;\n        }\n      }\n      *(undefined4 *)(iVar8 + -4 + iVar5) = 0;\n      piVar4[6] = *piVar4;\n      strlen(__s);\n      FUN_000378c0();\n      local_34 = puVar1 + 2;\n      goto LAB_000385f8;\n    case 5:\n      uVar3 = *local_34;\n      puVar1 = puVar1 + 2;\n      sVar6 = FUN_00056940(uVar3);\n      pvVar7 = (void *)FUN_0001db90(sVar6,1);\n      FUN_00056ac0(pvVar7,uVar3);\n      iVar5 = *piVar4 + sVar6;\n      *piVar4 = iVar5;\n      if (piVar4[7] < iVar5) {\n        iVar10 = piVar4[5];\n        iVar5 = iVar5 + 0x100;\n        iVar8 = piVar4[4];\n        if (iVar10 == 0) {\n          piVar4[7] = iVar5;\n          iVar9 = FUN_0001dc50(iVar8,iVar5,1);\n          iVar5 = *piVar4;\n          piVar4[4] = iVar9;\n        }\n        else {\n          piVar4[7] = iVar5;\n          iVar9 = FUN_0001dc50(iVar8,iVar5,1);\n          iVar5 = *piVar4;\n          piVar4[4] = iVar9;\n          piVar4[5] = (iVar10 - iVar8) + iVar9;\n        }\n      }\n      else {\n        iVar9 = piVar4[4];\n      }\n      memcpy((void *)((iVar5 - sVar6) + iVar9),pvVar7,sVar6);\n      FUN_0001dd30(pvVar7);\n      uVar3 = *puVar1;\n      break;\n    default:\n      goto LAB_000385f8;\n    }" { (case_statement "case 1:\n      goto code_r0x000387f0;" case number_literal : (goto_statement "goto code_r0x000387f0;" goto statement_identifier ;)) (case_statement "case 2:\n      uVar3 = *local_34;\n      iVar10 = *piVar4;\n      local_34 = puVar1 + 2;\n      iVar8 = piVar4[4];\n      iVar5 = iVar10 + 1;\n      *piVar4 = iVar5;\n      if (piVar4[7] < iVar5) {\n        iVar10 = iVar10 + 0x101;\n        if (piVar4[5] == 0) {\n          piVar4[7] = iVar10;\n          iVar8 = FUN_0001dc50(iVar8,iVar10,1);\n          iVar5 = *piVar4;\n          piVar4[4] = iVar8;\n        }\n        else {\n          piVar4[7] = iVar10;\n          iVar9 = piVar4[5] - iVar8;\n          iVar8 = FUN_0001dc50(iVar8,iVar10,1);\n          iVar5 = *piVar4;\n          piVar4[4] = iVar8;\n          piVar4[5] = iVar9 + iVar8;\n        }\n      }\n      *(char *)(iVar8 + -1 + iVar5) = (char)uVar3;\n      goto LAB_000385f8;" case number_literal : (expression_statement "uVar3 = *local_34;" (assignment_expression "uVar3 = *local_34" identifier = (pointer_expression "*local_34" * identifier)) ;) (expression_statement "iVar10 = *piVar4;" (assignment_expression "iVar10 = *piVar4" identifier = (pointer_expression "*piVar4" * identifier)) ;) (expression_statement "local_34 = puVar1 + 2;" (assignment_expression "local_34 = puVar1 + 2" identifier = (binary_expression "puVar1 + 2" identifier + number_literal)) ;) (expression_statement "iVar8 = piVar4[4];" (assignment_expression "iVar8 = piVar4[4]" identifier = (subscript_expression "piVar4[4]" identifier [ number_literal ])) ;) (expression_statement "iVar5 = iVar10 + 1;" (assignment_expression "iVar5 = iVar10 + 1" identifier = (binary_expression "iVar10 + 1" identifier + number_literal)) ;) (expression_statement "*piVar4 = iVar5;" (assignment_expression "*piVar4 = iVar5" (pointer_expression "*piVar4" * identifier) = identifier) ;) (if_statement "if (piVar4[7] < iVar5) {\n        iVar10 = iVar10 + 0x101;\n        if (piVar4[5] == 0) {\n          piVar4[7] = iVar10;\n          iVar8 = FUN_0001dc50(iVar8,iVar10,1);\n          iVar5 = *piVar4;\n          piVar4[4] = iVar8;\n        }\n        else {\n          piVar4[7] = iVar10;\n          iVar9 = piVar4[5] - iVar8;\n          iVar8 = FUN_0001dc50(iVar8,iVar10,1);\n          iVar5 = *piVar4;\n          piVar4[4] = iVar8;\n          piVar4[5] = iVar9 + iVar8;\n        }\n      }" if (parenthesized_expression "(piVar4[7] < iVar5)" ( (binary_expression "piVar4[7] < iVar5" (subscript_expression "piVar4[7]" identifier [ number_literal ]) < identifier) )) (compound_statement "{\n        iVar10 = iVar10 + 0x101;\n        if (piVar4[5] == 0) {\n          piVar4[7] = iVar10;\n          iVar8 = FUN_0001dc50(iVar8,iVar10,1);\n          iVar5 = *piVar4;\n          piVar4[4] = iVar8;\n        }\n        else {\n          piVar4[7] = iVar10;\n          iVar9 = piVar4[5] - iVar8;\n          iVar8 = FUN_0001dc50(iVar8,iVar10,1);\n          iVar5 = *piVar4;\n          piVar4[4] = iVar8;\n          piVar4[5] = iVar9 + iVar8;\n        }\n      }" { (expression_statement "iVar10 = iVar10 + 0x101;" (assignment_expression "iVar10 = iVar10 + 0x101" identifier = (binary_expression "iVar10 + 0x101" identifier + number_literal)) ;) (if_statement "if (piVar4[5] == 0) {\n          piVar4[7] = iVar10;\n          iVar8 = FUN_0001dc50(iVar8,iVar10,1);\n          iVar5 = *piVar4;\n          piVar4[4] = iVar8;\n        }\n        else {\n          piVar4[7] = iVar10;\n          iVar9 = piVar4[5] - iVar8;\n          iVar8 = FUN_0001dc50(iVar8,iVar10,1);\n          iVar5 = *piVar4;\n          piVar4[4] = iVar8;\n          piVar4[5] = iVar9 + iVar8;\n        }" if (parenthesized_expression "(piVar4[5] == 0)" ( (binary_expression "piVar4[5] == 0" (subscript_expression "piVar4[5]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n          piVar4[7] = iVar10;\n          iVar8 = FUN_0001dc50(iVar8,iVar10,1);\n          iVar5 = *piVar4;\n          piVar4[4] = iVar8;\n        }" { (expression_statement "piVar4[7] = iVar10;" (assignment_expression "piVar4[7] = iVar10" (subscript_expression "piVar4[7]" identifier [ number_literal ]) = identifier) ;) (expression_statement "iVar8 = FUN_0001dc50(iVar8,iVar10,1);" (assignment_expression "iVar8 = FUN_0001dc50(iVar8,iVar10,1)" identifier = (call_expression "FUN_0001dc50(iVar8,iVar10,1)" identifier (argument_list "(iVar8,iVar10,1)" ( identifier , identifier , number_literal )))) ;) (expression_statement "iVar5 = *piVar4;" (assignment_expression "iVar5 = *piVar4" identifier = (pointer_expression "*piVar4" * identifier)) ;) (expression_statement "piVar4[4] = iVar8;" (assignment_expression "piVar4[4] = iVar8" (subscript_expression "piVar4[4]" identifier [ number_literal ]) = identifier) ;) }) (else_clause "else {\n          piVar4[7] = iVar10;\n          iVar9 = piVar4[5] - iVar8;\n          iVar8 = FUN_0001dc50(iVar8,iVar10,1);\n          iVar5 = *piVar4;\n          piVar4[4] = iVar8;\n          piVar4[5] = iVar9 + iVar8;\n        }" else (compound_statement "{\n          piVar4[7] = iVar10;\n          iVar9 = piVar4[5] - iVar8;\n          iVar8 = FUN_0001dc50(iVar8,iVar10,1);\n          iVar5 = *piVar4;\n          piVar4[4] = iVar8;\n          piVar4[5] = iVar9 + iVar8;\n        }" { (expression_statement "piVar4[7] = iVar10;" (assignment_expression "piVar4[7] = iVar10" (subscript_expression "piVar4[7]" identifier [ number_literal ]) = identifier) ;) (expression_statement "iVar9 = piVar4[5] - iVar8;" (assignment_expression "iVar9 = piVar4[5] - iVar8" identifier = (binary_expression "piVar4[5] - iVar8" (subscript_expression "piVar4[5]" identifier [ number_literal ]) - identifier)) ;) (expression_statement "iVar8 = FUN_0001dc50(iVar8,iVar10,1);" (assignment_expression "iVar8 = FUN_0001dc50(iVar8,iVar10,1)" identifier = (call_expression "FUN_0001dc50(iVar8,iVar10,1)" identifier (argument_list "(iVar8,iVar10,1)" ( identifier , identifier , number_literal )))) ;) (expression_statement "iVar5 = *piVar4;" (assignment_expression "iVar5 = *piVar4" identifier = (pointer_expression "*piVar4" * identifier)) ;) (expression_statement "piVar4[4] = iVar8;" (assignment_expression "piVar4[4] = iVar8" (subscript_expression "piVar4[4]" identifier [ number_literal ]) = identifier) ;) (expression_statement "piVar4[5] = iVar9 + iVar8;" (assignment_expression "piVar4[5] = iVar9 + iVar8" (subscript_expression "piVar4[5]" identifier [ number_literal ]) = (binary_expression "iVar9 + iVar8" identifier + identifier)) ;) }))) })) (expression_statement "*(char *)(iVar8 + -1 + iVar5) = (char)uVar3;" (assignment_expression "*(char *)(iVar8 + -1 + iVar5) = (char)uVar3" (pointer_expression "*(char *)(iVar8 + -1 + iVar5)" * (cast_expression "(char *)(iVar8 + -1 + iVar5)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + -1 + iVar5)" ( (binary_expression "iVar8 + -1 + iVar5" (binary_expression "iVar8 + -1" identifier + number_literal) + identifier) )))) = (cast_expression "(char)uVar3" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (goto_statement "goto LAB_000385f8;" goto statement_identifier ;)) (case_statement "case 3:\n      sVar6 = puVar1[2];\n      pvVar7 = (void *)*local_34;\n      iVar5 = piVar4[4];\n      iVar10 = *piVar4 + sVar6;\n      *piVar4 = iVar10;\n      if (piVar4[7] < iVar10) {\n        iVar10 = iVar10 + 0x100;\n        if (piVar4[5] == 0) {\n          piVar4[7] = iVar10;\n          iVar5 = FUN_0001dc50(iVar5,iVar10,1);\n          iVar10 = *piVar4;\n          piVar4[4] = iVar5;\n        }\n        else {\n          iVar8 = piVar4[5] - iVar5;\n          piVar4[7] = iVar10;\n          iVar5 = FUN_0001dc50(iVar5,iVar10,1);\n          iVar10 = *piVar4;\n          piVar4[4] = iVar5;\n          piVar4[5] = iVar8 + iVar5;\n        }\n      }\n      memcpy((void *)((iVar10 - sVar6) + iVar5),pvVar7,sVar6);\n      local_34 = puVar1 + 3;\n      goto LAB_000385f8;" case number_literal : (expression_statement "sVar6 = puVar1[2];" (assignment_expression "sVar6 = puVar1[2]" identifier = (subscript_expression "puVar1[2]" identifier [ number_literal ])) ;) (expression_statement "pvVar7 = (void *)*local_34;" (assignment_expression "pvVar7 = (void *)*local_34" identifier = (cast_expression "(void *)*local_34" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*local_34" * identifier))) ;) (expression_statement "iVar5 = piVar4[4];" (assignment_expression "iVar5 = piVar4[4]" identifier = (subscript_expression "piVar4[4]" identifier [ number_literal ])) ;) (expression_statement "iVar10 = *piVar4 + sVar6;" (assignment_expression "iVar10 = *piVar4 + sVar6" identifier = (binary_expression "*piVar4 + sVar6" (pointer_expression "*piVar4" * identifier) + identifier)) ;) (expression_statement "*piVar4 = iVar10;" (assignment_expression "*piVar4 = iVar10" (pointer_expression "*piVar4" * identifier) = identifier) ;) (if_statement "if (piVar4[7] < iVar10) {\n        iVar10 = iVar10 + 0x100;\n        if (piVar4[5] == 0) {\n          piVar4[7] = iVar10;\n          iVar5 = FUN_0001dc50(iVar5,iVar10,1);\n          iVar10 = *piVar4;\n          piVar4[4] = iVar5;\n        }\n        else {\n          iVar8 = piVar4[5] - iVar5;\n          piVar4[7] = iVar10;\n          iVar5 = FUN_0001dc50(iVar5,iVar10,1);\n          iVar10 = *piVar4;\n          piVar4[4] = iVar5;\n          piVar4[5] = iVar8 + iVar5;\n        }\n      }" if (parenthesized_expression "(piVar4[7] < iVar10)" ( (binary_expression "piVar4[7] < iVar10" (subscript_expression "piVar4[7]" identifier [ number_literal ]) < identifier) )) (compound_statement "{\n        iVar10 = iVar10 + 0x100;\n        if (piVar4[5] == 0) {\n          piVar4[7] = iVar10;\n          iVar5 = FUN_0001dc50(iVar5,iVar10,1);\n          iVar10 = *piVar4;\n          piVar4[4] = iVar5;\n        }\n        else {\n          iVar8 = piVar4[5] - iVar5;\n          piVar4[7] = iVar10;\n          iVar5 = FUN_0001dc50(iVar5,iVar10,1);\n          iVar10 = *piVar4;\n          piVar4[4] = iVar5;\n          piVar4[5] = iVar8 + iVar5;\n        }\n      }" { (expression_statement "iVar10 = iVar10 + 0x100;" (assignment_expression "iVar10 = iVar10 + 0x100" identifier = (binary_expression "iVar10 + 0x100" identifier + number_literal)) ;) (if_statement "if (piVar4[5] == 0) {\n          piVar4[7] = iVar10;\n          iVar5 = FUN_0001dc50(iVar5,iVar10,1);\n          iVar10 = *piVar4;\n          piVar4[4] = iVar5;\n        }\n        else {\n          iVar8 = piVar4[5] - iVar5;\n          piVar4[7] = iVar10;\n          iVar5 = FUN_0001dc50(iVar5,iVar10,1);\n          iVar10 = *piVar4;\n          piVar4[4] = iVar5;\n          piVar4[5] = iVar8 + iVar5;\n        }" if (parenthesized_expression "(piVar4[5] == 0)" ( (binary_expression "piVar4[5] == 0" (subscript_expression "piVar4[5]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n          piVar4[7] = iVar10;\n          iVar5 = FUN_0001dc50(iVar5,iVar10,1);\n          iVar10 = *piVar4;\n          piVar4[4] = iVar5;\n        }" { (expression_statement "piVar4[7] = iVar10;" (assignment_expression "piVar4[7] = iVar10" (subscript_expression "piVar4[7]" identifier [ number_literal ]) = identifier) ;) (expression_statement "iVar5 = FUN_0001dc50(iVar5,iVar10,1);" (assignment_expression "iVar5 = FUN_0001dc50(iVar5,iVar10,1)" identifier = (call_expression "FUN_0001dc50(iVar5,iVar10,1)" identifier (argument_list "(iVar5,iVar10,1)" ( identifier , identifier , number_literal )))) ;) (expression_statement "iVar10 = *piVar4;" (assignment_expression "iVar10 = *piVar4" identifier = (pointer_expression "*piVar4" * identifier)) ;) (expression_statement "piVar4[4] = iVar5;" (assignment_expression "piVar4[4] = iVar5" (subscript_expression "piVar4[4]" identifier [ number_literal ]) = identifier) ;) }) (else_clause "else {\n          iVar8 = piVar4[5] - iVar5;\n          piVar4[7] = iVar10;\n          iVar5 = FUN_0001dc50(iVar5,iVar10,1);\n          iVar10 = *piVar4;\n          piVar4[4] = iVar5;\n          piVar4[5] = iVar8 + iVar5;\n        }" else (compound_statement "{\n          iVar8 = piVar4[5] - iVar5;\n          piVar4[7] = iVar10;\n          iVar5 = FUN_0001dc50(iVar5,iVar10,1);\n          iVar10 = *piVar4;\n          piVar4[4] = iVar5;\n          piVar4[5] = iVar8 + iVar5;\n        }" { (expression_statement "iVar8 = piVar4[5] - iVar5;" (assignment_expression "iVar8 = piVar4[5] - iVar5" identifier = (binary_expression "piVar4[5] - iVar5" (subscript_expression "piVar4[5]" identifier [ number_literal ]) - identifier)) ;) (expression_statement "piVar4[7] = iVar10;" (assignment_expression "piVar4[7] = iVar10" (subscript_expression "piVar4[7]" identifier [ number_literal ]) = identifier) ;) (expression_statement "iVar5 = FUN_0001dc50(iVar5,iVar10,1);" (assignment_expression "iVar5 = FUN_0001dc50(iVar5,iVar10,1)" identifier = (call_expression "FUN_0001dc50(iVar5,iVar10,1)" identifier (argument_list "(iVar5,iVar10,1)" ( identifier , identifier , number_literal )))) ;) (expression_statement "iVar10 = *piVar4;" (assignment_expression "iVar10 = *piVar4" identifier = (pointer_expression "*piVar4" * identifier)) ;) (expression_statement "piVar4[4] = iVar5;" (assignment_expression "piVar4[4] = iVar5" (subscript_expression "piVar4[4]" identifier [ number_literal ]) = identifier) ;) (expression_statement "piVar4[5] = iVar8 + iVar5;" (assignment_expression "piVar4[5] = iVar8 + iVar5" (subscript_expression "piVar4[5]" identifier [ number_literal ]) = (binary_expression "iVar8 + iVar5" identifier + identifier)) ;) }))) })) (expression_statement "memcpy((void *)((iVar10 - sVar6) + iVar5),pvVar7,sVar6);" (call_expression "memcpy((void *)((iVar10 - sVar6) + iVar5),pvVar7,sVar6)" identifier (argument_list "((void *)((iVar10 - sVar6) + iVar5),pvVar7,sVar6)" ( (cast_expression "(void *)((iVar10 - sVar6) + iVar5)" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((iVar10 - sVar6) + iVar5)" ( (binary_expression "(iVar10 - sVar6) + iVar5" (parenthesized_expression "(iVar10 - sVar6)" ( (binary_expression "iVar10 - sVar6" identifier - identifier) )) + identifier) ))) , identifier , identifier ))) ;) (expression_statement "local_34 = puVar1 + 3;" (assignment_expression "local_34 = puVar1 + 3" identifier = (binary_expression "puVar1 + 3" identifier + number_literal)) ;) (goto_statement "goto LAB_000385f8;" goto statement_identifier ;)) (case_statement "case 4:\n      __s = (char *)*local_34;\n      iVar10 = *piVar4;\n      iVar8 = piVar4[4];\n      iVar5 = iVar10 + 4;\n      *piVar4 = iVar5;\n      if (piVar4[7] < iVar5) {\n        iVar10 = iVar10 + 0x104;\n        if (piVar4[5] == 0) {\n          piVar4[7] = iVar10;\n          iVar8 = FUN_0001dc50(iVar8,iVar10,1);\n          iVar5 = *piVar4;\n          piVar4[4] = iVar8;\n        }\n        else {\n          piVar4[7] = iVar10;\n          iVar9 = piVar4[5] - iVar8;\n          iVar8 = FUN_0001dc50(iVar8,iVar10,1);\n          iVar5 = *piVar4;\n          piVar4[4] = iVar8;\n          piVar4[5] = iVar9 + iVar8;\n        }\n      }\n      *(undefined4 *)(iVar8 + -4 + iVar5) = 0;\n      piVar4[6] = *piVar4;\n      strlen(__s);\n      FUN_000378c0();\n      local_34 = puVar1 + 2;\n      goto LAB_000385f8;" case number_literal : (expression_statement "__s = (char *)*local_34;" (assignment_expression "__s = (char *)*local_34" identifier = (cast_expression "(char *)*local_34" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*local_34" * identifier))) ;) (expression_statement "iVar10 = *piVar4;" (assignment_expression "iVar10 = *piVar4" identifier = (pointer_expression "*piVar4" * identifier)) ;) (expression_statement "iVar8 = piVar4[4];" (assignment_expression "iVar8 = piVar4[4]" identifier = (subscript_expression "piVar4[4]" identifier [ number_literal ])) ;) (expression_statement "iVar5 = iVar10 + 4;" (assignment_expression "iVar5 = iVar10 + 4" identifier = (binary_expression "iVar10 + 4" identifier + number_literal)) ;) (expression_statement "*piVar4 = iVar5;" (assignment_expression "*piVar4 = iVar5" (pointer_expression "*piVar4" * identifier) = identifier) ;) (if_statement "if (piVar4[7] < iVar5) {\n        iVar10 = iVar10 + 0x104;\n        if (piVar4[5] == 0) {\n          piVar4[7] = iVar10;\n          iVar8 = FUN_0001dc50(iVar8,iVar10,1);\n          iVar5 = *piVar4;\n          piVar4[4] = iVar8;\n        }\n        else {\n          piVar4[7] = iVar10;\n          iVar9 = piVar4[5] - iVar8;\n          iVar8 = FUN_0001dc50(iVar8,iVar10,1);\n          iVar5 = *piVar4;\n          piVar4[4] = iVar8;\n          piVar4[5] = iVar9 + iVar8;\n        }\n      }" if (parenthesized_expression "(piVar4[7] < iVar5)" ( (binary_expression "piVar4[7] < iVar5" (subscript_expression "piVar4[7]" identifier [ number_literal ]) < identifier) )) (compound_statement "{\n        iVar10 = iVar10 + 0x104;\n        if (piVar4[5] == 0) {\n          piVar4[7] = iVar10;\n          iVar8 = FUN_0001dc50(iVar8,iVar10,1);\n          iVar5 = *piVar4;\n          piVar4[4] = iVar8;\n        }\n        else {\n          piVar4[7] = iVar10;\n          iVar9 = piVar4[5] - iVar8;\n          iVar8 = FUN_0001dc50(iVar8,iVar10,1);\n          iVar5 = *piVar4;\n          piVar4[4] = iVar8;\n          piVar4[5] = iVar9 + iVar8;\n        }\n      }" { (expression_statement "iVar10 = iVar10 + 0x104;" (assignment_expression "iVar10 = iVar10 + 0x104" identifier = (binary_expression "iVar10 + 0x104" identifier + number_literal)) ;) (if_statement "if (piVar4[5] == 0) {\n          piVar4[7] = iVar10;\n          iVar8 = FUN_0001dc50(iVar8,iVar10,1);\n          iVar5 = *piVar4;\n          piVar4[4] = iVar8;\n        }\n        else {\n          piVar4[7] = iVar10;\n          iVar9 = piVar4[5] - iVar8;\n          iVar8 = FUN_0001dc50(iVar8,iVar10,1);\n          iVar5 = *piVar4;\n          piVar4[4] = iVar8;\n          piVar4[5] = iVar9 + iVar8;\n        }" if (parenthesized_expression "(piVar4[5] == 0)" ( (binary_expression "piVar4[5] == 0" (subscript_expression "piVar4[5]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n          piVar4[7] = iVar10;\n          iVar8 = FUN_0001dc50(iVar8,iVar10,1);\n          iVar5 = *piVar4;\n          piVar4[4] = iVar8;\n        }" { (expression_statement "piVar4[7] = iVar10;" (assignment_expression "piVar4[7] = iVar10" (subscript_expression "piVar4[7]" identifier [ number_literal ]) = identifier) ;) (expression_statement "iVar8 = FUN_0001dc50(iVar8,iVar10,1);" (assignment_expression "iVar8 = FUN_0001dc50(iVar8,iVar10,1)" identifier = (call_expression "FUN_0001dc50(iVar8,iVar10,1)" identifier (argument_list "(iVar8,iVar10,1)" ( identifier , identifier , number_literal )))) ;) (expression_statement "iVar5 = *piVar4;" (assignment_expression "iVar5 = *piVar4" identifier = (pointer_expression "*piVar4" * identifier)) ;) (expression_statement "piVar4[4] = iVar8;" (assignment_expression "piVar4[4] = iVar8" (subscript_expression "piVar4[4]" identifier [ number_literal ]) = identifier) ;) }) (else_clause "else {\n          piVar4[7] = iVar10;\n          iVar9 = piVar4[5] - iVar8;\n          iVar8 = FUN_0001dc50(iVar8,iVar10,1);\n          iVar5 = *piVar4;\n          piVar4[4] = iVar8;\n          piVar4[5] = iVar9 + iVar8;\n        }" else (compound_statement "{\n          piVar4[7] = iVar10;\n          iVar9 = piVar4[5] - iVar8;\n          iVar8 = FUN_0001dc50(iVar8,iVar10,1);\n          iVar5 = *piVar4;\n          piVar4[4] = iVar8;\n          piVar4[5] = iVar9 + iVar8;\n        }" { (expression_statement "piVar4[7] = iVar10;" (assignment_expression "piVar4[7] = iVar10" (subscript_expression "piVar4[7]" identifier [ number_literal ]) = identifier) ;) (expression_statement "iVar9 = piVar4[5] - iVar8;" (assignment_expression "iVar9 = piVar4[5] - iVar8" identifier = (binary_expression "piVar4[5] - iVar8" (subscript_expression "piVar4[5]" identifier [ number_literal ]) - identifier)) ;) (expression_statement "iVar8 = FUN_0001dc50(iVar8,iVar10,1);" (assignment_expression "iVar8 = FUN_0001dc50(iVar8,iVar10,1)" identifier = (call_expression "FUN_0001dc50(iVar8,iVar10,1)" identifier (argument_list "(iVar8,iVar10,1)" ( identifier , identifier , number_literal )))) ;) (expression_statement "iVar5 = *piVar4;" (assignment_expression "iVar5 = *piVar4" identifier = (pointer_expression "*piVar4" * identifier)) ;) (expression_statement "piVar4[4] = iVar8;" (assignment_expression "piVar4[4] = iVar8" (subscript_expression "piVar4[4]" identifier [ number_literal ]) = identifier) ;) (expression_statement "piVar4[5] = iVar9 + iVar8;" (assignment_expression "piVar4[5] = iVar9 + iVar8" (subscript_expression "piVar4[5]" identifier [ number_literal ]) = (binary_expression "iVar9 + iVar8" identifier + identifier)) ;) }))) })) (expression_statement "*(undefined4 *)(iVar8 + -4 + iVar5) = 0;" (assignment_expression "*(undefined4 *)(iVar8 + -4 + iVar5) = 0" (pointer_expression "*(undefined4 *)(iVar8 + -4 + iVar5)" * (cast_expression "(undefined4 *)(iVar8 + -4 + iVar5)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + -4 + iVar5)" ( (binary_expression "iVar8 + -4 + iVar5" (binary_expression "iVar8 + -4" identifier + number_literal) + identifier) )))) = number_literal) ;) (expression_statement "piVar4[6] = *piVar4;" (assignment_expression "piVar4[6] = *piVar4" (subscript_expression "piVar4[6]" identifier [ number_literal ]) = (pointer_expression "*piVar4" * identifier)) ;) (expression_statement "strlen(__s);" (call_expression "strlen(__s)" identifier (argument_list "(__s)" ( identifier ))) ;) (expression_statement "FUN_000378c0();" (call_expression "FUN_000378c0()" identifier (argument_list "()" ( ))) ;) (expression_statement "local_34 = puVar1 + 2;" (assignment_expression "local_34 = puVar1 + 2" identifier = (binary_expression "puVar1 + 2" identifier + number_literal)) ;) (goto_statement "goto LAB_000385f8;" goto statement_identifier ;)) (case_statement "case 5:\n      uVar3 = *local_34;\n      puVar1 = puVar1 + 2;\n      sVar6 = FUN_00056940(uVar3);\n      pvVar7 = (void *)FUN_0001db90(sVar6,1);\n      FUN_00056ac0(pvVar7,uVar3);\n      iVar5 = *piVar4 + sVar6;\n      *piVar4 = iVar5;\n      if (piVar4[7] < iVar5) {\n        iVar10 = piVar4[5];\n        iVar5 = iVar5 + 0x100;\n        iVar8 = piVar4[4];\n        if (iVar10 == 0) {\n          piVar4[7] = iVar5;\n          iVar9 = FUN_0001dc50(iVar8,iVar5,1);\n          iVar5 = *piVar4;\n          piVar4[4] = iVar9;\n        }\n        else {\n          piVar4[7] = iVar5;\n          iVar9 = FUN_0001dc50(iVar8,iVar5,1);\n          iVar5 = *piVar4;\n          piVar4[4] = iVar9;\n          piVar4[5] = (iVar10 - iVar8) + iVar9;\n        }\n      }\n      else {\n        iVar9 = piVar4[4];\n      }\n      memcpy((void *)((iVar5 - sVar6) + iVar9),pvVar7,sVar6);\n      FUN_0001dd30(pvVar7);\n      uVar3 = *puVar1;\n      break;" case number_literal : (expression_statement "uVar3 = *local_34;" (assignment_expression "uVar3 = *local_34" identifier = (pointer_expression "*local_34" * identifier)) ;) (expression_statement "puVar1 = puVar1 + 2;" (assignment_expression "puVar1 = puVar1 + 2" identifier = (binary_expression "puVar1 + 2" identifier + number_literal)) ;) (expression_statement "sVar6 = FUN_00056940(uVar3);" (assignment_expression "sVar6 = FUN_00056940(uVar3)" identifier = (call_expression "FUN_00056940(uVar3)" identifier (argument_list "(uVar3)" ( identifier )))) ;) (expression_statement "pvVar7 = (void *)FUN_0001db90(sVar6,1);" (assignment_expression "pvVar7 = (void *)FUN_0001db90(sVar6,1)" identifier = (cast_expression "(void *)FUN_0001db90(sVar6,1)" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_0001db90(sVar6,1)" identifier (argument_list "(sVar6,1)" ( identifier , number_literal ))))) ;) (expression_statement "FUN_00056ac0(pvVar7,uVar3);" (call_expression "FUN_00056ac0(pvVar7,uVar3)" identifier (argument_list "(pvVar7,uVar3)" ( identifier , identifier ))) ;) (expression_statement "iVar5 = *piVar4 + sVar6;" (assignment_expression "iVar5 = *piVar4 + sVar6" identifier = (binary_expression "*piVar4 + sVar6" (pointer_expression "*piVar4" * identifier) + identifier)) ;) (expression_statement "*piVar4 = iVar5;" (assignment_expression "*piVar4 = iVar5" (pointer_expression "*piVar4" * identifier) = identifier) ;) (if_statement "if (piVar4[7] < iVar5) {\n        iVar10 = piVar4[5];\n        iVar5 = iVar5 + 0x100;\n        iVar8 = piVar4[4];\n        if (iVar10 == 0) {\n          piVar4[7] = iVar5;\n          iVar9 = FUN_0001dc50(iVar8,iVar5,1);\n          iVar5 = *piVar4;\n          piVar4[4] = iVar9;\n        }\n        else {\n          piVar4[7] = iVar5;\n          iVar9 = FUN_0001dc50(iVar8,iVar5,1);\n          iVar5 = *piVar4;\n          piVar4[4] = iVar9;\n          piVar4[5] = (iVar10 - iVar8) + iVar9;\n        }\n      }\n      else {\n        iVar9 = piVar4[4];\n      }" if (parenthesized_expression "(piVar4[7] < iVar5)" ( (binary_expression "piVar4[7] < iVar5" (subscript_expression "piVar4[7]" identifier [ number_literal ]) < identifier) )) (compound_statement "{\n        iVar10 = piVar4[5];\n        iVar5 = iVar5 + 0x100;\n        iVar8 = piVar4[4];\n        if (iVar10 == 0) {\n          piVar4[7] = iVar5;\n          iVar9 = FUN_0001dc50(iVar8,iVar5,1);\n          iVar5 = *piVar4;\n          piVar4[4] = iVar9;\n        }\n        else {\n          piVar4[7] = iVar5;\n          iVar9 = FUN_0001dc50(iVar8,iVar5,1);\n          iVar5 = *piVar4;\n          piVar4[4] = iVar9;\n          piVar4[5] = (iVar10 - iVar8) + iVar9;\n        }\n      }" { (expression_statement "iVar10 = piVar4[5];" (assignment_expression "iVar10 = piVar4[5]" identifier = (subscript_expression "piVar4[5]" identifier [ number_literal ])) ;) (expression_statement "iVar5 = iVar5 + 0x100;" (assignment_expression "iVar5 = iVar5 + 0x100" identifier = (binary_expression "iVar5 + 0x100" identifier + number_literal)) ;) (expression_statement "iVar8 = piVar4[4];" (assignment_expression "iVar8 = piVar4[4]" identifier = (subscript_expression "piVar4[4]" identifier [ number_literal ])) ;) (if_statement "if (iVar10 == 0) {\n          piVar4[7] = iVar5;\n          iVar9 = FUN_0001dc50(iVar8,iVar5,1);\n          iVar5 = *piVar4;\n          piVar4[4] = iVar9;\n        }\n        else {\n          piVar4[7] = iVar5;\n          iVar9 = FUN_0001dc50(iVar8,iVar5,1);\n          iVar5 = *piVar4;\n          piVar4[4] = iVar9;\n          piVar4[5] = (iVar10 - iVar8) + iVar9;\n        }" if (parenthesized_expression "(iVar10 == 0)" ( (binary_expression "iVar10 == 0" identifier == number_literal) )) (compound_statement "{\n          piVar4[7] = iVar5;\n          iVar9 = FUN_0001dc50(iVar8,iVar5,1);\n          iVar5 = *piVar4;\n          piVar4[4] = iVar9;\n        }" { (expression_statement "piVar4[7] = iVar5;" (assignment_expression "piVar4[7] = iVar5" (subscript_expression "piVar4[7]" identifier [ number_literal ]) = identifier) ;) (expression_statement "iVar9 = FUN_0001dc50(iVar8,iVar5,1);" (assignment_expression "iVar9 = FUN_0001dc50(iVar8,iVar5,1)" identifier = (call_expression "FUN_0001dc50(iVar8,iVar5,1)" identifier (argument_list "(iVar8,iVar5,1)" ( identifier , identifier , number_literal )))) ;) (expression_statement "iVar5 = *piVar4;" (assignment_expression "iVar5 = *piVar4" identifier = (pointer_expression "*piVar4" * identifier)) ;) (expression_statement "piVar4[4] = iVar9;" (assignment_expression "piVar4[4] = iVar9" (subscript_expression "piVar4[4]" identifier [ number_literal ]) = identifier) ;) }) (else_clause "else {\n          piVar4[7] = iVar5;\n          iVar9 = FUN_0001dc50(iVar8,iVar5,1);\n          iVar5 = *piVar4;\n          piVar4[4] = iVar9;\n          piVar4[5] = (iVar10 - iVar8) + iVar9;\n        }" else (compound_statement "{\n          piVar4[7] = iVar5;\n          iVar9 = FUN_0001dc50(iVar8,iVar5,1);\n          iVar5 = *piVar4;\n          piVar4[4] = iVar9;\n          piVar4[5] = (iVar10 - iVar8) + iVar9;\n        }" { (expression_statement "piVar4[7] = iVar5;" (assignment_expression "piVar4[7] = iVar5" (subscript_expression "piVar4[7]" identifier [ number_literal ]) = identifier) ;) (expression_statement "iVar9 = FUN_0001dc50(iVar8,iVar5,1);" (assignment_expression "iVar9 = FUN_0001dc50(iVar8,iVar5,1)" identifier = (call_expression "FUN_0001dc50(iVar8,iVar5,1)" identifier (argument_list "(iVar8,iVar5,1)" ( identifier , identifier , number_literal )))) ;) (expression_statement "iVar5 = *piVar4;" (assignment_expression "iVar5 = *piVar4" identifier = (pointer_expression "*piVar4" * identifier)) ;) (expression_statement "piVar4[4] = iVar9;" (assignment_expression "piVar4[4] = iVar9" (subscript_expression "piVar4[4]" identifier [ number_literal ]) = identifier) ;) (expression_statement "piVar4[5] = (iVar10 - iVar8) + iVar9;" (assignment_expression "piVar4[5] = (iVar10 - iVar8) + iVar9" (subscript_expression "piVar4[5]" identifier [ number_literal ]) = (binary_expression "(iVar10 - iVar8) + iVar9" (parenthesized_expression "(iVar10 - iVar8)" ( (binary_expression "iVar10 - iVar8" identifier - identifier) )) + identifier)) ;) }))) }) (else_clause "else {\n        iVar9 = piVar4[4];\n      }" else (compound_statement "{\n        iVar9 = piVar4[4];\n      }" { (expression_statement "iVar9 = piVar4[4];" (assignment_expression "iVar9 = piVar4[4]" identifier = (subscript_expression "piVar4[4]" identifier [ number_literal ])) ;) }))) (expression_statement "memcpy((void *)((iVar5 - sVar6) + iVar9),pvVar7,sVar6);" (call_expression "memcpy((void *)((iVar5 - sVar6) + iVar9),pvVar7,sVar6)" identifier (argument_list "((void *)((iVar5 - sVar6) + iVar9),pvVar7,sVar6)" ( (cast_expression "(void *)((iVar5 - sVar6) + iVar9)" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((iVar5 - sVar6) + iVar9)" ( (binary_expression "(iVar5 - sVar6) + iVar9" (parenthesized_expression "(iVar5 - sVar6)" ( (binary_expression "iVar5 - sVar6" identifier - identifier) )) + identifier) ))) , identifier , identifier ))) ;) (expression_statement "FUN_0001dd30(pvVar7);" (call_expression "FUN_0001dd30(pvVar7)" identifier (argument_list "(pvVar7)" ( identifier ))) ;) (expression_statement "uVar3 = *puVar1;" (assignment_expression "uVar3 = *puVar1" identifier = (pointer_expression "*puVar1" * identifier)) ;) (break_statement "break;" break ;)) (case_statement "default:\n      goto LAB_000385f8;" default : (goto_statement "goto LAB_000385f8;" goto statement_identifier ;)) })) }) while (parenthesized_expression "( true )" ( true )) ;) (labeled_statement "code_r0x000387f0:\n  uVar3 = *local_34;" statement_identifier : (expression_statement "uVar3 = *local_34;" (assignment_expression "uVar3 = *local_34" identifier = (pointer_expression "*local_34" * identifier)) ;)) (expression_statement "iVar10 = *piVar4;" (assignment_expression "iVar10 = *piVar4" identifier = (pointer_expression "*piVar4" * identifier)) ;) (expression_statement "local_34 = puVar1 + 2;" (assignment_expression "local_34 = puVar1 + 2" identifier = (binary_expression "puVar1 + 2" identifier + number_literal)) ;) (expression_statement "iVar8 = piVar4[4];" (assignment_expression "iVar8 = piVar4[4]" identifier = (subscript_expression "piVar4[4]" identifier [ number_literal ])) ;) (expression_statement "iVar5 = iVar10 + 4;" (assignment_expression "iVar5 = iVar10 + 4" identifier = (binary_expression "iVar10 + 4" identifier + number_literal)) ;) (expression_statement "*piVar4 = iVar5;" (assignment_expression "*piVar4 = iVar5" (pointer_expression "*piVar4" * identifier) = identifier) ;) (if_statement "if (piVar4[7] < iVar5) {\n    iVar10 = iVar10 + 0x104;\n    if (piVar4[5] == 0) {\n      piVar4[7] = iVar10;\n      iVar8 = FUN_0001dc50(iVar8,iVar10,1);\n      iVar5 = *piVar4;\n      piVar4[4] = iVar8;\n    }\n    else {\n      piVar4[7] = iVar10;\n      iVar9 = piVar4[5] - iVar8;\n      iVar8 = FUN_0001dc50(iVar8,iVar10,1);\n      iVar5 = *piVar4;\n      piVar4[4] = iVar8;\n      piVar4[5] = iVar9 + iVar8;\n    }\n  }" if (parenthesized_expression "(piVar4[7] < iVar5)" ( (binary_expression "piVar4[7] < iVar5" (subscript_expression "piVar4[7]" identifier [ number_literal ]) < identifier) )) (compound_statement "{\n    iVar10 = iVar10 + 0x104;\n    if (piVar4[5] == 0) {\n      piVar4[7] = iVar10;\n      iVar8 = FUN_0001dc50(iVar8,iVar10,1);\n      iVar5 = *piVar4;\n      piVar4[4] = iVar8;\n    }\n    else {\n      piVar4[7] = iVar10;\n      iVar9 = piVar4[5] - iVar8;\n      iVar8 = FUN_0001dc50(iVar8,iVar10,1);\n      iVar5 = *piVar4;\n      piVar4[4] = iVar8;\n      piVar4[5] = iVar9 + iVar8;\n    }\n  }" { (expression_statement "iVar10 = iVar10 + 0x104;" (assignment_expression "iVar10 = iVar10 + 0x104" identifier = (binary_expression "iVar10 + 0x104" identifier + number_literal)) ;) (if_statement "if (piVar4[5] == 0) {\n      piVar4[7] = iVar10;\n      iVar8 = FUN_0001dc50(iVar8,iVar10,1);\n      iVar5 = *piVar4;\n      piVar4[4] = iVar8;\n    }\n    else {\n      piVar4[7] = iVar10;\n      iVar9 = piVar4[5] - iVar8;\n      iVar8 = FUN_0001dc50(iVar8,iVar10,1);\n      iVar5 = *piVar4;\n      piVar4[4] = iVar8;\n      piVar4[5] = iVar9 + iVar8;\n    }" if (parenthesized_expression "(piVar4[5] == 0)" ( (binary_expression "piVar4[5] == 0" (subscript_expression "piVar4[5]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n      piVar4[7] = iVar10;\n      iVar8 = FUN_0001dc50(iVar8,iVar10,1);\n      iVar5 = *piVar4;\n      piVar4[4] = iVar8;\n    }" { (expression_statement "piVar4[7] = iVar10;" (assignment_expression "piVar4[7] = iVar10" (subscript_expression "piVar4[7]" identifier [ number_literal ]) = identifier) ;) (expression_statement "iVar8 = FUN_0001dc50(iVar8,iVar10,1);" (assignment_expression "iVar8 = FUN_0001dc50(iVar8,iVar10,1)" identifier = (call_expression "FUN_0001dc50(iVar8,iVar10,1)" identifier (argument_list "(iVar8,iVar10,1)" ( identifier , identifier , number_literal )))) ;) (expression_statement "iVar5 = *piVar4;" (assignment_expression "iVar5 = *piVar4" identifier = (pointer_expression "*piVar4" * identifier)) ;) (expression_statement "piVar4[4] = iVar8;" (assignment_expression "piVar4[4] = iVar8" (subscript_expression "piVar4[4]" identifier [ number_literal ]) = identifier) ;) }) (else_clause "else {\n      piVar4[7] = iVar10;\n      iVar9 = piVar4[5] - iVar8;\n      iVar8 = FUN_0001dc50(iVar8,iVar10,1);\n      iVar5 = *piVar4;\n      piVar4[4] = iVar8;\n      piVar4[5] = iVar9 + iVar8;\n    }" else (compound_statement "{\n      piVar4[7] = iVar10;\n      iVar9 = piVar4[5] - iVar8;\n      iVar8 = FUN_0001dc50(iVar8,iVar10,1);\n      iVar5 = *piVar4;\n      piVar4[4] = iVar8;\n      piVar4[5] = iVar9 + iVar8;\n    }" { (expression_statement "piVar4[7] = iVar10;" (assignment_expression "piVar4[7] = iVar10" (subscript_expression "piVar4[7]" identifier [ number_literal ]) = identifier) ;) (expression_statement "iVar9 = piVar4[5] - iVar8;" (assignment_expression "iVar9 = piVar4[5] - iVar8" identifier = (binary_expression "piVar4[5] - iVar8" (subscript_expression "piVar4[5]" identifier [ number_literal ]) - identifier)) ;) (expression_statement "iVar8 = FUN_0001dc50(iVar8,iVar10,1);" (assignment_expression "iVar8 = FUN_0001dc50(iVar8,iVar10,1)" identifier = (call_expression "FUN_0001dc50(iVar8,iVar10,1)" identifier (argument_list "(iVar8,iVar10,1)" ( identifier , identifier , number_literal )))) ;) (expression_statement "iVar5 = *piVar4;" (assignment_expression "iVar5 = *piVar4" identifier = (pointer_expression "*piVar4" * identifier)) ;) (expression_statement "piVar4[4] = iVar8;" (assignment_expression "piVar4[4] = iVar8" (subscript_expression "piVar4[4]" identifier [ number_literal ]) = identifier) ;) (expression_statement "piVar4[5] = iVar9 + iVar8;" (assignment_expression "piVar4[5] = iVar9 + iVar8" (subscript_expression "piVar4[5]" identifier [ number_literal ]) = (binary_expression "iVar9 + iVar8" identifier + identifier)) ;) }))) })) (expression_statement "*(uint *)(iVar8 + -4 + iVar5) =\n       uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 | uVar3 << 0x18;" (assignment_expression "*(uint *)(iVar8 + -4 + iVar5) =\n       uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 | uVar3 << 0x18" (pointer_expression "*(uint *)(iVar8 + -4 + iVar5)" * (cast_expression "(uint *)(iVar8 + -4 + iVar5)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + -4 + iVar5)" ( (binary_expression "iVar8 + -4 + iVar5" (binary_expression "iVar8 + -4" identifier + number_literal) + identifier) )))) = (binary_expression "uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 | uVar3 << 0x18" (binary_expression "uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8" (binary_expression "uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8" (binary_expression "uVar3 >> 0x18" identifier >> number_literal) | (binary_expression "(uVar3 & 0xff0000) >> 8" (parenthesized_expression "(uVar3 & 0xff0000)" ( (binary_expression "uVar3 & 0xff0000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar3 & 0xff00) << 8" (parenthesized_expression "(uVar3 & 0xff00)" ( (binary_expression "uVar3 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "uVar3 << 0x18" identifier << number_literal))) ;) (goto_statement "goto LAB_000385f8;" goto statement_identifier ;) })))
(translation_unit (function_definition TYPE (pointer_declarator * (ERROR IDENT) (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE (pointer_declarator * IDENT)) )))) (compound_statement { (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (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 = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( LIT , LIT ))))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( LIT , LIT , LIT )))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) + (pointer_expression * IDENT)) )))) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression (pointer_expression * IDENT) + (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;)) (expression_statement (assignment_expression IDENT = IDENT) ;) (do_statement do (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (compound_statement { (return_statement return IDENT ;) })) (expression_statement (call_expression IDENT (argument_list ( ))) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (switch_statement switch (parenthesized_expression ( IDENT )) (compound_statement { (case_statement case LIT : (goto_statement goto statement_identifier ;)) (case_statement case LIT : (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == LIT) )) (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT , LIT )))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression (subscript_expression IDENT [ LIT ]) - IDENT)) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT , LIT )))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression IDENT + IDENT)) ;) }))) })) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) + IDENT) )))) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (goto_statement goto statement_identifier ;)) (case_statement case LIT : (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * IDENT) + IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == LIT) )) (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT , LIT )))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (subscript_expression IDENT [ LIT ]) - IDENT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT , LIT )))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression IDENT + IDENT)) ;) }))) })) (expression_statement (call_expression IDENT (argument_list ( (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT - IDENT) )) + IDENT) ))) , IDENT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (goto_statement goto statement_identifier ;)) (case_statement case LIT : (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == LIT) )) (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT , LIT )))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression (subscript_expression IDENT [ LIT ]) - IDENT)) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT , LIT )))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression IDENT + IDENT)) ;) }))) })) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) + IDENT) )))) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (pointer_expression * IDENT)) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (goto_statement goto statement_identifier ;)) (case_statement case LIT : (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( IDENT , LIT ))))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * IDENT) + IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT , LIT )))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT , LIT )))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression (parenthesized_expression ( (binary_expression IDENT - IDENT) )) + IDENT)) ;) }))) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) }))) (expression_statement (call_expression IDENT (argument_list ( (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT - IDENT) )) + IDENT) ))) , IDENT , IDENT ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (break_statement break ;)) (case_statement default : (goto_statement goto statement_identifier ;)) })) }) while (parenthesized_expression ( BOOL )) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;)) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == LIT) )) (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT , LIT )))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression (subscript_expression IDENT [ LIT ]) - IDENT)) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT , LIT )))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression IDENT + IDENT)) ;) }))) })) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) + IDENT) )))) = (binary_expression (binary_expression (binary_expression (binary_expression IDENT >> LIT) | (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) >> LIT)) | (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) << LIT)) | (binary_expression IDENT << LIT))) ;) (goto_statement goto statement_identifier ;) })))
(function_definition "int * __regparm3 FUN_00038570(int param_1,uint *param_2)\n\n{\n  uint *puVar1;\n  int iVar2;\n  uint uVar3;\n  char *__s;\n  int *piVar4;\n  int iVar5;\n  size_t sVar6;\n  void *pvVar7;\n  int iVar8;\n  int iVar9;\n  int iVar10;\n  int in_GS_OFFSET;\n  uint *local_34;\n  \n  iVar2 = *(int *)(in_GS_OFFSET + 0x14);\n  piVar4 = (int *)FUN_0001db90(1,0x2c);\n  piVar4[4] = 0;\n  piVar4[5] = 0;\n  *piVar4 = 0xd;\n  piVar4[7] = 0x10d;\n  iVar5 = FUN_0001dc50(0,0x10d,1);\n  piVar4[4] = iVar5;\n  *(char *)(iVar5 + -1 + *piVar4) = (char)param_1;\n  piVar4[2] = param_1;\n  piVar4[5] = *piVar4 + piVar4[4];\n  piVar4[9] = 0;\n  piVar4[10] = 0;\n  local_34 = param_2;\nLAB_000385f8:\n  uVar3 = *local_34;\n  puVar1 = local_34;\n  do {\n    if (uVar3 == 0) {\n      if (iVar2 == *(int *)(in_GS_OFFSET + 0x14)) {\n        return piVar4;\n      }\n                    \n      FUN_0008d800();\n    }\n    local_34 = puVar1 + 1;\n    switch(uVar3) {\n    case 1:\n      goto code_r0x000387f0;\n    case 2:\n      uVar3 = *local_34;\n      iVar10 = *piVar4;\n      local_34 = puVar1 + 2;\n      iVar8 = piVar4[4];\n      iVar5 = iVar10 + 1;\n      *piVar4 = iVar5;\n      if (piVar4[7] < iVar5) {\n        iVar10 = iVar10 + 0x101;\n        if (piVar4[5] == 0) {\n          piVar4[7] = iVar10;\n          iVar8 = FUN_0001dc50(iVar8,iVar10,1);\n          iVar5 = *piVar4;\n          piVar4[4] = iVar8;\n        }\n        else {\n          piVar4[7] = iVar10;\n          iVar9 = piVar4[5] - iVar8;\n          iVar8 = FUN_0001dc50(iVar8,iVar10,1);\n          iVar5 = *piVar4;\n          piVar4[4] = iVar8;\n          piVar4[5] = iVar9 + iVar8;\n        }\n      }\n      *(char *)(iVar8 + -1 + iVar5) = (char)uVar3;\n      goto LAB_000385f8;\n    case 3:\n      sVar6 = puVar1[2];\n      pvVar7 = (void *)*local_34;\n      iVar5 = piVar4[4];\n      iVar10 = *piVar4 + sVar6;\n      *piVar4 = iVar10;\n      if (piVar4[7] < iVar10) {\n        iVar10 = iVar10 + 0x100;\n        if (piVar4[5] == 0) {\n          piVar4[7] = iVar10;\n          iVar5 = FUN_0001dc50(iVar5,iVar10,1);\n          iVar10 = *piVar4;\n          piVar4[4] = iVar5;\n        }\n        else {\n          iVar8 = piVar4[5] - iVar5;\n          piVar4[7] = iVar10;\n          iVar5 = FUN_0001dc50(iVar5,iVar10,1);\n          iVar10 = *piVar4;\n          piVar4[4] = iVar5;\n          piVar4[5] = iVar8 + iVar5;\n        }\n      }\n      memcpy((void *)((iVar10 - sVar6) + iVar5),pvVar7,sVar6);\n      local_34 = puVar1 + 3;\n      goto LAB_000385f8;\n    case 4:\n      __s = (char *)*local_34;\n      iVar10 = *piVar4;\n      iVar8 = piVar4[4];\n      iVar5 = iVar10 + 4;\n      *piVar4 = iVar5;\n      if (piVar4[7] < iVar5) {\n        iVar10 = iVar10 + 0x104;\n        if (piVar4[5] == 0) {\n          piVar4[7] = iVar10;\n          iVar8 = FUN_0001dc50(iVar8,iVar10,1);\n          iVar5 = *piVar4;\n          piVar4[4] = iVar8;\n        }\n        else {\n          piVar4[7] = iVar10;\n          iVar9 = piVar4[5] - iVar8;\n          iVar8 = FUN_0001dc50(iVar8,iVar10,1);\n          iVar5 = *piVar4;\n          piVar4[4] = iVar8;\n          piVar4[5] = iVar9 + iVar8;\n        }\n      }\n      *(undefined4 *)(iVar8 + -4 + iVar5) = 0;\n      piVar4[6] = *piVar4;\n      strlen(__s);\n      FUN_000378c0();\n      local_34 = puVar1 + 2;\n      goto LAB_000385f8;\n    case 5:\n      uVar3 = *local_34;\n      puVar1 = puVar1 + 2;\n      sVar6 = FUN_00056940(uVar3);\n      pvVar7 = (void *)FUN_0001db90(sVar6,1);\n      FUN_00056ac0(pvVar7,uVar3);\n      iVar5 = *piVar4 + sVar6;\n      *piVar4 = iVar5;\n      if (piVar4[7] < iVar5) {\n        iVar10 = piVar4[5];\n        iVar5 = iVar5 + 0x100;\n        iVar8 = piVar4[4];\n        if (iVar10 == 0) {\n          piVar4[7] = iVar5;\n          iVar9 = FUN_0001dc50(iVar8,iVar5,1);\n          iVar5 = *piVar4;\n          piVar4[4] = iVar9;\n        }\n        else {\n          piVar4[7] = iVar5;\n          iVar9 = FUN_0001dc50(iVar8,iVar5,1);\n          iVar5 = *piVar4;\n          piVar4[4] = iVar9;\n          piVar4[5] = (iVar10 - iVar8) + iVar9;\n        }\n      }\n      else {\n        iVar9 = piVar4[4];\n      }\n      memcpy((void *)((iVar5 - sVar6) + iVar9),pvVar7,sVar6);\n      FUN_0001dd30(pvVar7);\n      uVar3 = *puVar1;\n      break;\n    default:\n      goto LAB_000385f8;\n    }\n  } while( true );\ncode_r0x000387f0:\n  uVar3 = *local_34;\n  iVar10 = *piVar4;\n  local_34 = puVar1 + 2;\n  iVar8 = piVar4[4];\n  iVar5 = iVar10 + 4;\n  *piVar4 = iVar5;\n  if (piVar4[7] < iVar5) {\n    iVar10 = iVar10 + 0x104;\n    if (piVar4[5] == 0) {\n      piVar4[7] = iVar10;\n      iVar8 = FUN_0001dc50(iVar8,iVar10,1);\n      iVar5 = *piVar4;\n      piVar4[4] = iVar8;\n    }\n    else {\n      piVar4[7] = iVar10;\n      iVar9 = piVar4[5] - iVar8;\n      iVar8 = FUN_0001dc50(iVar8,iVar10,1);\n      iVar5 = *piVar4;\n      piVar4[4] = iVar8;\n      piVar4[5] = iVar9 + iVar8;\n    }\n  }\n  *(uint *)(iVar8 + -4 + iVar5) =\n       uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 | uVar3 << 0x18;\n  goto LAB_000385f8;\n}" (primitive_type "int") (pointer_declarator "* __regparm3 FUN_00038570(int param_1,uint *param_2)" (* "*") (ERROR "__regparm3" (identifier "__regparm3")) (function_declarator "FUN_00038570(int param_1,uint *param_2)" (identifier "FUN_00038570") (parameter_list "(int param_1,uint *param_2)" (( "(") (parameter_declaration "int param_1" (primitive_type "int") (identifier "param_1")) (, ",") (parameter_declaration "uint *param_2" (type_identifier "uint") (pointer_declarator "*param_2" (* "*") (identifier "param_2"))) () ")")))) (compound_statement "{\n  uint *puVar1;\n  int iVar2;\n  uint uVar3;\n  char *__s;\n  int *piVar4;\n  int iVar5;\n  size_t sVar6;\n  void *pvVar7;\n  int iVar8;\n  int iVar9;\n  int iVar10;\n  int in_GS_OFFSET;\n  uint *local_34;\n  \n  iVar2 = *(int *)(in_GS_OFFSET + 0x14);\n  piVar4 = (int *)FUN_0001db90(1,0x2c);\n  piVar4[4] = 0;\n  piVar4[5] = 0;\n  *piVar4 = 0xd;\n  piVar4[7] = 0x10d;\n  iVar5 = FUN_0001dc50(0,0x10d,1);\n  piVar4[4] = iVar5;\n  *(char *)(iVar5 + -1 + *piVar4) = (char)param_1;\n  piVar4[2] = param_1;\n  piVar4[5] = *piVar4 + piVar4[4];\n  piVar4[9] = 0;\n  piVar4[10] = 0;\n  local_34 = param_2;\nLAB_000385f8:\n  uVar3 = *local_34;\n  puVar1 = local_34;\n  do {\n    if (uVar3 == 0) {\n      if (iVar2 == *(int *)(in_GS_OFFSET + 0x14)) {\n        return piVar4;\n      }\n                    \n      FUN_0008d800();\n    }\n    local_34 = puVar1 + 1;\n    switch(uVar3) {\n    case 1:\n      goto code_r0x000387f0;\n    case 2:\n      uVar3 = *local_34;\n      iVar10 = *piVar4;\n      local_34 = puVar1 + 2;\n      iVar8 = piVar4[4];\n      iVar5 = iVar10 + 1;\n      *piVar4 = iVar5;\n      if (piVar4[7] < iVar5) {\n        iVar10 = iVar10 + 0x101;\n        if (piVar4[5] == 0) {\n          piVar4[7] = iVar10;\n          iVar8 = FUN_0001dc50(iVar8,iVar10,1);\n          iVar5 = *piVar4;\n          piVar4[4] = iVar8;\n        }\n        else {\n          piVar4[7] = iVar10;\n          iVar9 = piVar4[5] - iVar8;\n          iVar8 = FUN_0001dc50(iVar8,iVar10,1);\n          iVar5 = *piVar4;\n          piVar4[4] = iVar8;\n          piVar4[5] = iVar9 + iVar8;\n        }\n      }\n      *(char *)(iVar8 + -1 + iVar5) = (char)uVar3;\n      goto LAB_000385f8;\n    case 3:\n      sVar6 = puVar1[2];\n      pvVar7 = (void *)*local_34;\n      iVar5 = piVar4[4];\n      iVar10 = *piVar4 + sVar6;\n      *piVar4 = iVar10;\n      if (piVar4[7] < iVar10) {\n        iVar10 = iVar10 + 0x100;\n        if (piVar4[5] == 0) {\n          piVar4[7] = iVar10;\n          iVar5 = FUN_0001dc50(iVar5,iVar10,1);\n          iVar10 = *piVar4;\n          piVar4[4] = iVar5;\n        }\n        else {\n          iVar8 = piVar4[5] - iVar5;\n          piVar4[7] = iVar10;\n          iVar5 = FUN_0001dc50(iVar5,iVar10,1);\n          iVar10 = *piVar4;\n          piVar4[4] = iVar5;\n          piVar4[5] = iVar8 + iVar5;\n        }\n      }\n      memcpy((void *)((iVar10 - sVar6) + iVar5),pvVar7,sVar6);\n      local_34 = puVar1 + 3;\n      goto LAB_000385f8;\n    case 4:\n      __s = (char *)*local_34;\n      iVar10 = *piVar4;\n      iVar8 = piVar4[4];\n      iVar5 = iVar10 + 4;\n      *piVar4 = iVar5;\n      if (piVar4[7] < iVar5) {\n        iVar10 = iVar10 + 0x104;\n        if (piVar4[5] == 0) {\n          piVar4[7] = iVar10;\n          iVar8 = FUN_0001dc50(iVar8,iVar10,1);\n          iVar5 = *piVar4;\n          piVar4[4] = iVar8;\n        }\n        else {\n          piVar4[7] = iVar10;\n          iVar9 = piVar4[5] - iVar8;\n          iVar8 = FUN_0001dc50(iVar8,iVar10,1);\n          iVar5 = *piVar4;\n          piVar4[4] = iVar8;\n          piVar4[5] = iVar9 + iVar8;\n        }\n      }\n      *(undefined4 *)(iVar8 + -4 + iVar5) = 0;\n      piVar4[6] = *piVar4;\n      strlen(__s);\n      FUN_000378c0();\n      local_34 = puVar1 + 2;\n      goto LAB_000385f8;\n    case 5:\n      uVar3 = *local_34;\n      puVar1 = puVar1 + 2;\n      sVar6 = FUN_00056940(uVar3);\n      pvVar7 = (void *)FUN_0001db90(sVar6,1);\n      FUN_00056ac0(pvVar7,uVar3);\n      iVar5 = *piVar4 + sVar6;\n      *piVar4 = iVar5;\n      if (piVar4[7] < iVar5) {\n        iVar10 = piVar4[5];\n        iVar5 = iVar5 + 0x100;\n        iVar8 = piVar4[4];\n        if (iVar10 == 0) {\n          piVar4[7] = iVar5;\n          iVar9 = FUN_0001dc50(iVar8,iVar5,1);\n          iVar5 = *piVar4;\n          piVar4[4] = iVar9;\n        }\n        else {\n          piVar4[7] = iVar5;\n          iVar9 = FUN_0001dc50(iVar8,iVar5,1);\n          iVar5 = *piVar4;\n          piVar4[4] = iVar9;\n          piVar4[5] = (iVar10 - iVar8) + iVar9;\n        }\n      }\n      else {\n        iVar9 = piVar4[4];\n      }\n      memcpy((void *)((iVar5 - sVar6) + iVar9),pvVar7,sVar6);\n      FUN_0001dd30(pvVar7);\n      uVar3 = *puVar1;\n      break;\n    default:\n      goto LAB_000385f8;\n    }\n  } while( true );\ncode_r0x000387f0:\n  uVar3 = *local_34;\n  iVar10 = *piVar4;\n  local_34 = puVar1 + 2;\n  iVar8 = piVar4[4];\n  iVar5 = iVar10 + 4;\n  *piVar4 = iVar5;\n  if (piVar4[7] < iVar5) {\n    iVar10 = iVar10 + 0x104;\n    if (piVar4[5] == 0) {\n      piVar4[7] = iVar10;\n      iVar8 = FUN_0001dc50(iVar8,iVar10,1);\n      iVar5 = *piVar4;\n      piVar4[4] = iVar8;\n    }\n    else {\n      piVar4[7] = iVar10;\n      iVar9 = piVar4[5] - iVar8;\n      iVar8 = FUN_0001dc50(iVar8,iVar10,1);\n      iVar5 = *piVar4;\n      piVar4[4] = iVar8;\n      piVar4[5] = iVar9 + iVar8;\n    }\n  }\n  *(uint *)(iVar8 + -4 + iVar5) =\n       uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 | uVar3 << 0x18;\n  goto LAB_000385f8;\n}" ({ "{") (declaration "uint *puVar1;" (type_identifier "uint") (pointer_declarator "*puVar1" (* "*") (identifier "puVar1")) (; ";")) (declaration "int iVar2;" (primitive_type "int") (identifier "iVar2") (; ";")) (declaration "uint uVar3;" (type_identifier "uint") (identifier "uVar3") (; ";")) (declaration "char *__s;" (primitive_type "char") (pointer_declarator "*__s" (* "*") (identifier "__s")) (; ";")) (declaration "int *piVar4;" (primitive_type "int") (pointer_declarator "*piVar4" (* "*") (identifier "piVar4")) (; ";")) (declaration "int iVar5;" (primitive_type "int") (identifier "iVar5") (; ";")) (declaration "size_t sVar6;" (primitive_type "size_t") (identifier "sVar6") (; ";")) (declaration "void *pvVar7;" (primitive_type "void") (pointer_declarator "*pvVar7" (* "*") (identifier "pvVar7")) (; ";")) (declaration "int iVar8;" (primitive_type "int") (identifier "iVar8") (; ";")) (declaration "int iVar9;" (primitive_type "int") (identifier "iVar9") (; ";")) (declaration "int iVar10;" (primitive_type "int") (identifier "iVar10") (; ";")) (declaration "int in_GS_OFFSET;" (primitive_type "int") (identifier "in_GS_OFFSET") (; ";")) (declaration "uint *local_34;" (type_identifier "uint") (pointer_declarator "*local_34" (* "*") (identifier "local_34")) (; ";")) (expression_statement "iVar2 = *(int *)(in_GS_OFFSET + 0x14);" (assignment_expression "iVar2 = *(int *)(in_GS_OFFSET + 0x14)" (identifier "iVar2") (= "=") (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" (* "*") (cast_expression "(int *)(in_GS_OFFSET + 0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(in_GS_OFFSET + 0x14)" (( "(") (binary_expression "in_GS_OFFSET + 0x14" (identifier "in_GS_OFFSET") (+ "+") (number_literal "0x14")) () ")"))))) (; ";")) (expression_statement "piVar4 = (int *)FUN_0001db90(1,0x2c);" (assignment_expression "piVar4 = (int *)FUN_0001db90(1,0x2c)" (identifier "piVar4") (= "=") (cast_expression "(int *)FUN_0001db90(1,0x2c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_0001db90(1,0x2c)" (identifier "FUN_0001db90") (argument_list "(1,0x2c)" (( "(") (number_literal "1") (, ",") (number_literal "0x2c") () ")"))))) (; ";")) (expression_statement "piVar4[4] = 0;" (assignment_expression "piVar4[4] = 0" (subscript_expression "piVar4[4]" (identifier "piVar4") ([ "[") (number_literal "4") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "piVar4[5] = 0;" (assignment_expression "piVar4[5] = 0" (subscript_expression "piVar4[5]" (identifier "piVar4") ([ "[") (number_literal "5") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "*piVar4 = 0xd;" (assignment_expression "*piVar4 = 0xd" (pointer_expression "*piVar4" (* "*") (identifier "piVar4")) (= "=") (number_literal "0xd")) (; ";")) (expression_statement "piVar4[7] = 0x10d;" (assignment_expression "piVar4[7] = 0x10d" (subscript_expression "piVar4[7]" (identifier "piVar4") ([ "[") (number_literal "7") (] "]")) (= "=") (number_literal "0x10d")) (; ";")) (expression_statement "iVar5 = FUN_0001dc50(0,0x10d,1);" (assignment_expression "iVar5 = FUN_0001dc50(0,0x10d,1)" (identifier "iVar5") (= "=") (call_expression "FUN_0001dc50(0,0x10d,1)" (identifier "FUN_0001dc50") (argument_list "(0,0x10d,1)" (( "(") (number_literal "0") (, ",") (number_literal "0x10d") (, ",") (number_literal "1") () ")")))) (; ";")) (expression_statement "piVar4[4] = iVar5;" (assignment_expression "piVar4[4] = iVar5" (subscript_expression "piVar4[4]" (identifier "piVar4") ([ "[") (number_literal "4") (] "]")) (= "=") (identifier "iVar5")) (; ";")) (expression_statement "*(char *)(iVar5 + -1 + *piVar4) = (char)param_1;" (assignment_expression "*(char *)(iVar5 + -1 + *piVar4) = (char)param_1" (pointer_expression "*(char *)(iVar5 + -1 + *piVar4)" (* "*") (cast_expression "(char *)(iVar5 + -1 + *piVar4)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar5 + -1 + *piVar4)" (( "(") (binary_expression "iVar5 + -1 + *piVar4" (binary_expression "iVar5 + -1" (identifier "iVar5") (+ "+") (number_literal "-1")) (+ "+") (pointer_expression "*piVar4" (* "*") (identifier "piVar4"))) () ")")))) (= "=") (cast_expression "(char)param_1" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (identifier "param_1"))) (; ";")) (expression_statement "piVar4[2] = param_1;" (assignment_expression "piVar4[2] = param_1" (subscript_expression "piVar4[2]" (identifier "piVar4") ([ "[") (number_literal "2") (] "]")) (= "=") (identifier "param_1")) (; ";")) (expression_statement "piVar4[5] = *piVar4 + piVar4[4];" (assignment_expression "piVar4[5] = *piVar4 + piVar4[4]" (subscript_expression "piVar4[5]" (identifier "piVar4") ([ "[") (number_literal "5") (] "]")) (= "=") (binary_expression "*piVar4 + piVar4[4]" (pointer_expression "*piVar4" (* "*") (identifier "piVar4")) (+ "+") (subscript_expression "piVar4[4]" (identifier "piVar4") ([ "[") (number_literal "4") (] "]")))) (; ";")) (expression_statement "piVar4[9] = 0;" (assignment_expression "piVar4[9] = 0" (subscript_expression "piVar4[9]" (identifier "piVar4") ([ "[") (number_literal "9") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "piVar4[10] = 0;" (assignment_expression "piVar4[10] = 0" (subscript_expression "piVar4[10]" (identifier "piVar4") ([ "[") (number_literal "10") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "local_34 = param_2;" (assignment_expression "local_34 = param_2" (identifier "local_34") (= "=") (identifier "param_2")) (; ";")) (labeled_statement "LAB_000385f8:\n  uVar3 = *local_34;" (statement_identifier "LAB_000385f8") (: ":") (expression_statement "uVar3 = *local_34;" (assignment_expression "uVar3 = *local_34" (identifier "uVar3") (= "=") (pointer_expression "*local_34" (* "*") (identifier "local_34"))) (; ";"))) (expression_statement "puVar1 = local_34;" (assignment_expression "puVar1 = local_34" (identifier "puVar1") (= "=") (identifier "local_34")) (; ";")) (do_statement "do {\n    if (uVar3 == 0) {\n      if (iVar2 == *(int *)(in_GS_OFFSET + 0x14)) {\n        return piVar4;\n      }\n                    \n      FUN_0008d800();\n    }\n    local_34 = puVar1 + 1;\n    switch(uVar3) {\n    case 1:\n      goto code_r0x000387f0;\n    case 2:\n      uVar3 = *local_34;\n      iVar10 = *piVar4;\n      local_34 = puVar1 + 2;\n      iVar8 = piVar4[4];\n      iVar5 = iVar10 + 1;\n      *piVar4 = iVar5;\n      if (piVar4[7] < iVar5) {\n        iVar10 = iVar10 + 0x101;\n        if (piVar4[5] == 0) {\n          piVar4[7] = iVar10;\n          iVar8 = FUN_0001dc50(iVar8,iVar10,1);\n          iVar5 = *piVar4;\n          piVar4[4] = iVar8;\n        }\n        else {\n          piVar4[7] = iVar10;\n          iVar9 = piVar4[5] - iVar8;\n          iVar8 = FUN_0001dc50(iVar8,iVar10,1);\n          iVar5 = *piVar4;\n          piVar4[4] = iVar8;\n          piVar4[5] = iVar9 + iVar8;\n        }\n      }\n      *(char *)(iVar8 + -1 + iVar5) = (char)uVar3;\n      goto LAB_000385f8;\n    case 3:\n      sVar6 = puVar1[2];\n      pvVar7 = (void *)*local_34;\n      iVar5 = piVar4[4];\n      iVar10 = *piVar4 + sVar6;\n      *piVar4 = iVar10;\n      if (piVar4[7] < iVar10) {\n        iVar10 = iVar10 + 0x100;\n        if (piVar4[5] == 0) {\n          piVar4[7] = iVar10;\n          iVar5 = FUN_0001dc50(iVar5,iVar10,1);\n          iVar10 = *piVar4;\n          piVar4[4] = iVar5;\n        }\n        else {\n          iVar8 = piVar4[5] - iVar5;\n          piVar4[7] = iVar10;\n          iVar5 = FUN_0001dc50(iVar5,iVar10,1);\n          iVar10 = *piVar4;\n          piVar4[4] = iVar5;\n          piVar4[5] = iVar8 + iVar5;\n        }\n      }\n      memcpy((void *)((iVar10 - sVar6) + iVar5),pvVar7,sVar6);\n      local_34 = puVar1 + 3;\n      goto LAB_000385f8;\n    case 4:\n      __s = (char *)*local_34;\n      iVar10 = *piVar4;\n      iVar8 = piVar4[4];\n      iVar5 = iVar10 + 4;\n      *piVar4 = iVar5;\n      if (piVar4[7] < iVar5) {\n        iVar10 = iVar10 + 0x104;\n        if (piVar4[5] == 0) {\n          piVar4[7] = iVar10;\n          iVar8 = FUN_0001dc50(iVar8,iVar10,1);\n          iVar5 = *piVar4;\n          piVar4[4] = iVar8;\n        }\n        else {\n          piVar4[7] = iVar10;\n          iVar9 = piVar4[5] - iVar8;\n          iVar8 = FUN_0001dc50(iVar8,iVar10,1);\n          iVar5 = *piVar4;\n          piVar4[4] = iVar8;\n          piVar4[5] = iVar9 + iVar8;\n        }\n      }\n      *(undefined4 *)(iVar8 + -4 + iVar5) = 0;\n      piVar4[6] = *piVar4;\n      strlen(__s);\n      FUN_000378c0();\n      local_34 = puVar1 + 2;\n      goto LAB_000385f8;\n    case 5:\n      uVar3 = *local_34;\n      puVar1 = puVar1 + 2;\n      sVar6 = FUN_00056940(uVar3);\n      pvVar7 = (void *)FUN_0001db90(sVar6,1);\n      FUN_00056ac0(pvVar7,uVar3);\n      iVar5 = *piVar4 + sVar6;\n      *piVar4 = iVar5;\n      if (piVar4[7] < iVar5) {\n        iVar10 = piVar4[5];\n        iVar5 = iVar5 + 0x100;\n        iVar8 = piVar4[4];\n        if (iVar10 == 0) {\n          piVar4[7] = iVar5;\n          iVar9 = FUN_0001dc50(iVar8,iVar5,1);\n          iVar5 = *piVar4;\n          piVar4[4] = iVar9;\n        }\n        else {\n          piVar4[7] = iVar5;\n          iVar9 = FUN_0001dc50(iVar8,iVar5,1);\n          iVar5 = *piVar4;\n          piVar4[4] = iVar9;\n          piVar4[5] = (iVar10 - iVar8) + iVar9;\n        }\n      }\n      else {\n        iVar9 = piVar4[4];\n      }\n      memcpy((void *)((iVar5 - sVar6) + iVar9),pvVar7,sVar6);\n      FUN_0001dd30(pvVar7);\n      uVar3 = *puVar1;\n      break;\n    default:\n      goto LAB_000385f8;\n    }\n  } while( true );" (do "do") (compound_statement "{\n    if (uVar3 == 0) {\n      if (iVar2 == *(int *)(in_GS_OFFSET + 0x14)) {\n        return piVar4;\n      }\n                    \n      FUN_0008d800();\n    }\n    local_34 = puVar1 + 1;\n    switch(uVar3) {\n    case 1:\n      goto code_r0x000387f0;\n    case 2:\n      uVar3 = *local_34;\n      iVar10 = *piVar4;\n      local_34 = puVar1 + 2;\n      iVar8 = piVar4[4];\n      iVar5 = iVar10 + 1;\n      *piVar4 = iVar5;\n      if (piVar4[7] < iVar5) {\n        iVar10 = iVar10 + 0x101;\n        if (piVar4[5] == 0) {\n          piVar4[7] = iVar10;\n          iVar8 = FUN_0001dc50(iVar8,iVar10,1);\n          iVar5 = *piVar4;\n          piVar4[4] = iVar8;\n        }\n        else {\n          piVar4[7] = iVar10;\n          iVar9 = piVar4[5] - iVar8;\n          iVar8 = FUN_0001dc50(iVar8,iVar10,1);\n          iVar5 = *piVar4;\n          piVar4[4] = iVar8;\n          piVar4[5] = iVar9 + iVar8;\n        }\n      }\n      *(char *)(iVar8 + -1 + iVar5) = (char)uVar3;\n      goto LAB_000385f8;\n    case 3:\n      sVar6 = puVar1[2];\n      pvVar7 = (void *)*local_34;\n      iVar5 = piVar4[4];\n      iVar10 = *piVar4 + sVar6;\n      *piVar4 = iVar10;\n      if (piVar4[7] < iVar10) {\n        iVar10 = iVar10 + 0x100;\n        if (piVar4[5] == 0) {\n          piVar4[7] = iVar10;\n          iVar5 = FUN_0001dc50(iVar5,iVar10,1);\n          iVar10 = *piVar4;\n          piVar4[4] = iVar5;\n        }\n        else {\n          iVar8 = piVar4[5] - iVar5;\n          piVar4[7] = iVar10;\n          iVar5 = FUN_0001dc50(iVar5,iVar10,1);\n          iVar10 = *piVar4;\n          piVar4[4] = iVar5;\n          piVar4[5] = iVar8 + iVar5;\n        }\n      }\n      memcpy((void *)((iVar10 - sVar6) + iVar5),pvVar7,sVar6);\n      local_34 = puVar1 + 3;\n      goto LAB_000385f8;\n    case 4:\n      __s = (char *)*local_34;\n      iVar10 = *piVar4;\n      iVar8 = piVar4[4];\n      iVar5 = iVar10 + 4;\n      *piVar4 = iVar5;\n      if (piVar4[7] < iVar5) {\n        iVar10 = iVar10 + 0x104;\n        if (piVar4[5] == 0) {\n          piVar4[7] = iVar10;\n          iVar8 = FUN_0001dc50(iVar8,iVar10,1);\n          iVar5 = *piVar4;\n          piVar4[4] = iVar8;\n        }\n        else {\n          piVar4[7] = iVar10;\n          iVar9 = piVar4[5] - iVar8;\n          iVar8 = FUN_0001dc50(iVar8,iVar10,1);\n          iVar5 = *piVar4;\n          piVar4[4] = iVar8;\n          piVar4[5] = iVar9 + iVar8;\n        }\n      }\n      *(undefined4 *)(iVar8 + -4 + iVar5) = 0;\n      piVar4[6] = *piVar4;\n      strlen(__s);\n      FUN_000378c0();\n      local_34 = puVar1 + 2;\n      goto LAB_000385f8;\n    case 5:\n      uVar3 = *local_34;\n      puVar1 = puVar1 + 2;\n      sVar6 = FUN_00056940(uVar3);\n      pvVar7 = (void *)FUN_0001db90(sVar6,1);\n      FUN_00056ac0(pvVar7,uVar3);\n      iVar5 = *piVar4 + sVar6;\n      *piVar4 = iVar5;\n      if (piVar4[7] < iVar5) {\n        iVar10 = piVar4[5];\n        iVar5 = iVar5 + 0x100;\n        iVar8 = piVar4[4];\n        if (iVar10 == 0) {\n          piVar4[7] = iVar5;\n          iVar9 = FUN_0001dc50(iVar8,iVar5,1);\n          iVar5 = *piVar4;\n          piVar4[4] = iVar9;\n        }\n        else {\n          piVar4[7] = iVar5;\n          iVar9 = FUN_0001dc50(iVar8,iVar5,1);\n          iVar5 = *piVar4;\n          piVar4[4] = iVar9;\n          piVar4[5] = (iVar10 - iVar8) + iVar9;\n        }\n      }\n      else {\n        iVar9 = piVar4[4];\n      }\n      memcpy((void *)((iVar5 - sVar6) + iVar9),pvVar7,sVar6);\n      FUN_0001dd30(pvVar7);\n      uVar3 = *puVar1;\n      break;\n    default:\n      goto LAB_000385f8;\n    }\n  }" ({ "{") (if_statement "if (uVar3 == 0) {\n      if (iVar2 == *(int *)(in_GS_OFFSET + 0x14)) {\n        return piVar4;\n      }\n                    \n      FUN_0008d800();\n    }" (if "if") (parenthesized_expression "(uVar3 == 0)" (( "(") (binary_expression "uVar3 == 0" (identifier "uVar3") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      if (iVar2 == *(int *)(in_GS_OFFSET + 0x14)) {\n        return piVar4;\n      }\n                    \n      FUN_0008d800();\n    }" ({ "{") (if_statement "if (iVar2 == *(int *)(in_GS_OFFSET + 0x14)) {\n        return piVar4;\n      }" (if "if") (parenthesized_expression "(iVar2 == *(int *)(in_GS_OFFSET + 0x14))" (( "(") (binary_expression "iVar2 == *(int *)(in_GS_OFFSET + 0x14)" (identifier "iVar2") (== "==") (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" (* "*") (cast_expression "(int *)(in_GS_OFFSET + 0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(in_GS_OFFSET + 0x14)" (( "(") (binary_expression "in_GS_OFFSET + 0x14" (identifier "in_GS_OFFSET") (+ "+") (number_literal "0x14")) () ")"))))) () ")")) (compound_statement "{\n        return piVar4;\n      }" ({ "{") (return_statement "return piVar4;" (return "return") (identifier "piVar4") (; ";")) (} "}"))) (expression_statement "FUN_0008d800();" (call_expression "FUN_0008d800()" (identifier "FUN_0008d800") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (expression_statement "local_34 = puVar1 + 1;" (assignment_expression "local_34 = puVar1 + 1" (identifier "local_34") (= "=") (binary_expression "puVar1 + 1" (identifier "puVar1") (+ "+") (number_literal "1"))) (; ";")) (switch_statement "switch(uVar3) {\n    case 1:\n      goto code_r0x000387f0;\n    case 2:\n      uVar3 = *local_34;\n      iVar10 = *piVar4;\n      local_34 = puVar1 + 2;\n      iVar8 = piVar4[4];\n      iVar5 = iVar10 + 1;\n      *piVar4 = iVar5;\n      if (piVar4[7] < iVar5) {\n        iVar10 = iVar10 + 0x101;\n        if (piVar4[5] == 0) {\n          piVar4[7] = iVar10;\n          iVar8 = FUN_0001dc50(iVar8,iVar10,1);\n          iVar5 = *piVar4;\n          piVar4[4] = iVar8;\n        }\n        else {\n          piVar4[7] = iVar10;\n          iVar9 = piVar4[5] - iVar8;\n          iVar8 = FUN_0001dc50(iVar8,iVar10,1);\n          iVar5 = *piVar4;\n          piVar4[4] = iVar8;\n          piVar4[5] = iVar9 + iVar8;\n        }\n      }\n      *(char *)(iVar8 + -1 + iVar5) = (char)uVar3;\n      goto LAB_000385f8;\n    case 3:\n      sVar6 = puVar1[2];\n      pvVar7 = (void *)*local_34;\n      iVar5 = piVar4[4];\n      iVar10 = *piVar4 + sVar6;\n      *piVar4 = iVar10;\n      if (piVar4[7] < iVar10) {\n        iVar10 = iVar10 + 0x100;\n        if (piVar4[5] == 0) {\n          piVar4[7] = iVar10;\n          iVar5 = FUN_0001dc50(iVar5,iVar10,1);\n          iVar10 = *piVar4;\n          piVar4[4] = iVar5;\n        }\n        else {\n          iVar8 = piVar4[5] - iVar5;\n          piVar4[7] = iVar10;\n          iVar5 = FUN_0001dc50(iVar5,iVar10,1);\n          iVar10 = *piVar4;\n          piVar4[4] = iVar5;\n          piVar4[5] = iVar8 + iVar5;\n        }\n      }\n      memcpy((void *)((iVar10 - sVar6) + iVar5),pvVar7,sVar6);\n      local_34 = puVar1 + 3;\n      goto LAB_000385f8;\n    case 4:\n      __s = (char *)*local_34;\n      iVar10 = *piVar4;\n      iVar8 = piVar4[4];\n      iVar5 = iVar10 + 4;\n      *piVar4 = iVar5;\n      if (piVar4[7] < iVar5) {\n        iVar10 = iVar10 + 0x104;\n        if (piVar4[5] == 0) {\n          piVar4[7] = iVar10;\n          iVar8 = FUN_0001dc50(iVar8,iVar10,1);\n          iVar5 = *piVar4;\n          piVar4[4] = iVar8;\n        }\n        else {\n          piVar4[7] = iVar10;\n          iVar9 = piVar4[5] - iVar8;\n          iVar8 = FUN_0001dc50(iVar8,iVar10,1);\n          iVar5 = *piVar4;\n          piVar4[4] = iVar8;\n          piVar4[5] = iVar9 + iVar8;\n        }\n      }\n      *(undefined4 *)(iVar8 + -4 + iVar5) = 0;\n      piVar4[6] = *piVar4;\n      strlen(__s);\n      FUN_000378c0();\n      local_34 = puVar1 + 2;\n      goto LAB_000385f8;\n    case 5:\n      uVar3 = *local_34;\n      puVar1 = puVar1 + 2;\n      sVar6 = FUN_00056940(uVar3);\n      pvVar7 = (void *)FUN_0001db90(sVar6,1);\n      FUN_00056ac0(pvVar7,uVar3);\n      iVar5 = *piVar4 + sVar6;\n      *piVar4 = iVar5;\n      if (piVar4[7] < iVar5) {\n        iVar10 = piVar4[5];\n        iVar5 = iVar5 + 0x100;\n        iVar8 = piVar4[4];\n        if (iVar10 == 0) {\n          piVar4[7] = iVar5;\n          iVar9 = FUN_0001dc50(iVar8,iVar5,1);\n          iVar5 = *piVar4;\n          piVar4[4] = iVar9;\n        }\n        else {\n          piVar4[7] = iVar5;\n          iVar9 = FUN_0001dc50(iVar8,iVar5,1);\n          iVar5 = *piVar4;\n          piVar4[4] = iVar9;\n          piVar4[5] = (iVar10 - iVar8) + iVar9;\n        }\n      }\n      else {\n        iVar9 = piVar4[4];\n      }\n      memcpy((void *)((iVar5 - sVar6) + iVar9),pvVar7,sVar6);\n      FUN_0001dd30(pvVar7);\n      uVar3 = *puVar1;\n      break;\n    default:\n      goto LAB_000385f8;\n    }" (switch "switch") (parenthesized_expression "(uVar3)" (( "(") (identifier "uVar3") () ")")) (compound_statement "{\n    case 1:\n      goto code_r0x000387f0;\n    case 2:\n      uVar3 = *local_34;\n      iVar10 = *piVar4;\n      local_34 = puVar1 + 2;\n      iVar8 = piVar4[4];\n      iVar5 = iVar10 + 1;\n      *piVar4 = iVar5;\n      if (piVar4[7] < iVar5) {\n        iVar10 = iVar10 + 0x101;\n        if (piVar4[5] == 0) {\n          piVar4[7] = iVar10;\n          iVar8 = FUN_0001dc50(iVar8,iVar10,1);\n          iVar5 = *piVar4;\n          piVar4[4] = iVar8;\n        }\n        else {\n          piVar4[7] = iVar10;\n          iVar9 = piVar4[5] - iVar8;\n          iVar8 = FUN_0001dc50(iVar8,iVar10,1);\n          iVar5 = *piVar4;\n          piVar4[4] = iVar8;\n          piVar4[5] = iVar9 + iVar8;\n        }\n      }\n      *(char *)(iVar8 + -1 + iVar5) = (char)uVar3;\n      goto LAB_000385f8;\n    case 3:\n      sVar6 = puVar1[2];\n      pvVar7 = (void *)*local_34;\n      iVar5 = piVar4[4];\n      iVar10 = *piVar4 + sVar6;\n      *piVar4 = iVar10;\n      if (piVar4[7] < iVar10) {\n        iVar10 = iVar10 + 0x100;\n        if (piVar4[5] == 0) {\n          piVar4[7] = iVar10;\n          iVar5 = FUN_0001dc50(iVar5,iVar10,1);\n          iVar10 = *piVar4;\n          piVar4[4] = iVar5;\n        }\n        else {\n          iVar8 = piVar4[5] - iVar5;\n          piVar4[7] = iVar10;\n          iVar5 = FUN_0001dc50(iVar5,iVar10,1);\n          iVar10 = *piVar4;\n          piVar4[4] = iVar5;\n          piVar4[5] = iVar8 + iVar5;\n        }\n      }\n      memcpy((void *)((iVar10 - sVar6) + iVar5),pvVar7,sVar6);\n      local_34 = puVar1 + 3;\n      goto LAB_000385f8;\n    case 4:\n      __s = (char *)*local_34;\n      iVar10 = *piVar4;\n      iVar8 = piVar4[4];\n      iVar5 = iVar10 + 4;\n      *piVar4 = iVar5;\n      if (piVar4[7] < iVar5) {\n        iVar10 = iVar10 + 0x104;\n        if (piVar4[5] == 0) {\n          piVar4[7] = iVar10;\n          iVar8 = FUN_0001dc50(iVar8,iVar10,1);\n          iVar5 = *piVar4;\n          piVar4[4] = iVar8;\n        }\n        else {\n          piVar4[7] = iVar10;\n          iVar9 = piVar4[5] - iVar8;\n          iVar8 = FUN_0001dc50(iVar8,iVar10,1);\n          iVar5 = *piVar4;\n          piVar4[4] = iVar8;\n          piVar4[5] = iVar9 + iVar8;\n        }\n      }\n      *(undefined4 *)(iVar8 + -4 + iVar5) = 0;\n      piVar4[6] = *piVar4;\n      strlen(__s);\n      FUN_000378c0();\n      local_34 = puVar1 + 2;\n      goto LAB_000385f8;\n    case 5:\n      uVar3 = *local_34;\n      puVar1 = puVar1 + 2;\n      sVar6 = FUN_00056940(uVar3);\n      pvVar7 = (void *)FUN_0001db90(sVar6,1);\n      FUN_00056ac0(pvVar7,uVar3);\n      iVar5 = *piVar4 + sVar6;\n      *piVar4 = iVar5;\n      if (piVar4[7] < iVar5) {\n        iVar10 = piVar4[5];\n        iVar5 = iVar5 + 0x100;\n        iVar8 = piVar4[4];\n        if (iVar10 == 0) {\n          piVar4[7] = iVar5;\n          iVar9 = FUN_0001dc50(iVar8,iVar5,1);\n          iVar5 = *piVar4;\n          piVar4[4] = iVar9;\n        }\n        else {\n          piVar4[7] = iVar5;\n          iVar9 = FUN_0001dc50(iVar8,iVar5,1);\n          iVar5 = *piVar4;\n          piVar4[4] = iVar9;\n          piVar4[5] = (iVar10 - iVar8) + iVar9;\n        }\n      }\n      else {\n        iVar9 = piVar4[4];\n      }\n      memcpy((void *)((iVar5 - sVar6) + iVar9),pvVar7,sVar6);\n      FUN_0001dd30(pvVar7);\n      uVar3 = *puVar1;\n      break;\n    default:\n      goto LAB_000385f8;\n    }" ({ "{") (case_statement "case 1:\n      goto code_r0x000387f0;" (case "case") (number_literal "1") (: ":") (goto_statement "goto code_r0x000387f0;" (goto "goto") (statement_identifier "code_r0x000387f0") (; ";"))) (case_statement "case 2:\n      uVar3 = *local_34;\n      iVar10 = *piVar4;\n      local_34 = puVar1 + 2;\n      iVar8 = piVar4[4];\n      iVar5 = iVar10 + 1;\n      *piVar4 = iVar5;\n      if (piVar4[7] < iVar5) {\n        iVar10 = iVar10 + 0x101;\n        if (piVar4[5] == 0) {\n          piVar4[7] = iVar10;\n          iVar8 = FUN_0001dc50(iVar8,iVar10,1);\n          iVar5 = *piVar4;\n          piVar4[4] = iVar8;\n        }\n        else {\n          piVar4[7] = iVar10;\n          iVar9 = piVar4[5] - iVar8;\n          iVar8 = FUN_0001dc50(iVar8,iVar10,1);\n          iVar5 = *piVar4;\n          piVar4[4] = iVar8;\n          piVar4[5] = iVar9 + iVar8;\n        }\n      }\n      *(char *)(iVar8 + -1 + iVar5) = (char)uVar3;\n      goto LAB_000385f8;" (case "case") (number_literal "2") (: ":") (expression_statement "uVar3 = *local_34;" (assignment_expression "uVar3 = *local_34" (identifier "uVar3") (= "=") (pointer_expression "*local_34" (* "*") (identifier "local_34"))) (; ";")) (expression_statement "iVar10 = *piVar4;" (assignment_expression "iVar10 = *piVar4" (identifier "iVar10") (= "=") (pointer_expression "*piVar4" (* "*") (identifier "piVar4"))) (; ";")) (expression_statement "local_34 = puVar1 + 2;" (assignment_expression "local_34 = puVar1 + 2" (identifier "local_34") (= "=") (binary_expression "puVar1 + 2" (identifier "puVar1") (+ "+") (number_literal "2"))) (; ";")) (expression_statement "iVar8 = piVar4[4];" (assignment_expression "iVar8 = piVar4[4]" (identifier "iVar8") (= "=") (subscript_expression "piVar4[4]" (identifier "piVar4") ([ "[") (number_literal "4") (] "]"))) (; ";")) (expression_statement "iVar5 = iVar10 + 1;" (assignment_expression "iVar5 = iVar10 + 1" (identifier "iVar5") (= "=") (binary_expression "iVar10 + 1" (identifier "iVar10") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "*piVar4 = iVar5;" (assignment_expression "*piVar4 = iVar5" (pointer_expression "*piVar4" (* "*") (identifier "piVar4")) (= "=") (identifier "iVar5")) (; ";")) (if_statement "if (piVar4[7] < iVar5) {\n        iVar10 = iVar10 + 0x101;\n        if (piVar4[5] == 0) {\n          piVar4[7] = iVar10;\n          iVar8 = FUN_0001dc50(iVar8,iVar10,1);\n          iVar5 = *piVar4;\n          piVar4[4] = iVar8;\n        }\n        else {\n          piVar4[7] = iVar10;\n          iVar9 = piVar4[5] - iVar8;\n          iVar8 = FUN_0001dc50(iVar8,iVar10,1);\n          iVar5 = *piVar4;\n          piVar4[4] = iVar8;\n          piVar4[5] = iVar9 + iVar8;\n        }\n      }" (if "if") (parenthesized_expression "(piVar4[7] < iVar5)" (( "(") (binary_expression "piVar4[7] < iVar5" (subscript_expression "piVar4[7]" (identifier "piVar4") ([ "[") (number_literal "7") (] "]")) (< "<") (identifier "iVar5")) () ")")) (compound_statement "{\n        iVar10 = iVar10 + 0x101;\n        if (piVar4[5] == 0) {\n          piVar4[7] = iVar10;\n          iVar8 = FUN_0001dc50(iVar8,iVar10,1);\n          iVar5 = *piVar4;\n          piVar4[4] = iVar8;\n        }\n        else {\n          piVar4[7] = iVar10;\n          iVar9 = piVar4[5] - iVar8;\n          iVar8 = FUN_0001dc50(iVar8,iVar10,1);\n          iVar5 = *piVar4;\n          piVar4[4] = iVar8;\n          piVar4[5] = iVar9 + iVar8;\n        }\n      }" ({ "{") (expression_statement "iVar10 = iVar10 + 0x101;" (assignment_expression "iVar10 = iVar10 + 0x101" (identifier "iVar10") (= "=") (binary_expression "iVar10 + 0x101" (identifier "iVar10") (+ "+") (number_literal "0x101"))) (; ";")) (if_statement "if (piVar4[5] == 0) {\n          piVar4[7] = iVar10;\n          iVar8 = FUN_0001dc50(iVar8,iVar10,1);\n          iVar5 = *piVar4;\n          piVar4[4] = iVar8;\n        }\n        else {\n          piVar4[7] = iVar10;\n          iVar9 = piVar4[5] - iVar8;\n          iVar8 = FUN_0001dc50(iVar8,iVar10,1);\n          iVar5 = *piVar4;\n          piVar4[4] = iVar8;\n          piVar4[5] = iVar9 + iVar8;\n        }" (if "if") (parenthesized_expression "(piVar4[5] == 0)" (( "(") (binary_expression "piVar4[5] == 0" (subscript_expression "piVar4[5]" (identifier "piVar4") ([ "[") (number_literal "5") (] "]")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n          piVar4[7] = iVar10;\n          iVar8 = FUN_0001dc50(iVar8,iVar10,1);\n          iVar5 = *piVar4;\n          piVar4[4] = iVar8;\n        }" ({ "{") (expression_statement "piVar4[7] = iVar10;" (assignment_expression "piVar4[7] = iVar10" (subscript_expression "piVar4[7]" (identifier "piVar4") ([ "[") (number_literal "7") (] "]")) (= "=") (identifier "iVar10")) (; ";")) (expression_statement "iVar8 = FUN_0001dc50(iVar8,iVar10,1);" (assignment_expression "iVar8 = FUN_0001dc50(iVar8,iVar10,1)" (identifier "iVar8") (= "=") (call_expression "FUN_0001dc50(iVar8,iVar10,1)" (identifier "FUN_0001dc50") (argument_list "(iVar8,iVar10,1)" (( "(") (identifier "iVar8") (, ",") (identifier "iVar10") (, ",") (number_literal "1") () ")")))) (; ";")) (expression_statement "iVar5 = *piVar4;" (assignment_expression "iVar5 = *piVar4" (identifier "iVar5") (= "=") (pointer_expression "*piVar4" (* "*") (identifier "piVar4"))) (; ";")) (expression_statement "piVar4[4] = iVar8;" (assignment_expression "piVar4[4] = iVar8" (subscript_expression "piVar4[4]" (identifier "piVar4") ([ "[") (number_literal "4") (] "]")) (= "=") (identifier "iVar8")) (; ";")) (} "}")) (else_clause "else {\n          piVar4[7] = iVar10;\n          iVar9 = piVar4[5] - iVar8;\n          iVar8 = FUN_0001dc50(iVar8,iVar10,1);\n          iVar5 = *piVar4;\n          piVar4[4] = iVar8;\n          piVar4[5] = iVar9 + iVar8;\n        }" (else "else") (compound_statement "{\n          piVar4[7] = iVar10;\n          iVar9 = piVar4[5] - iVar8;\n          iVar8 = FUN_0001dc50(iVar8,iVar10,1);\n          iVar5 = *piVar4;\n          piVar4[4] = iVar8;\n          piVar4[5] = iVar9 + iVar8;\n        }" ({ "{") (expression_statement "piVar4[7] = iVar10;" (assignment_expression "piVar4[7] = iVar10" (subscript_expression "piVar4[7]" (identifier "piVar4") ([ "[") (number_literal "7") (] "]")) (= "=") (identifier "iVar10")) (; ";")) (expression_statement "iVar9 = piVar4[5] - iVar8;" (assignment_expression "iVar9 = piVar4[5] - iVar8" (identifier "iVar9") (= "=") (binary_expression "piVar4[5] - iVar8" (subscript_expression "piVar4[5]" (identifier "piVar4") ([ "[") (number_literal "5") (] "]")) (- "-") (identifier "iVar8"))) (; ";")) (expression_statement "iVar8 = FUN_0001dc50(iVar8,iVar10,1);" (assignment_expression "iVar8 = FUN_0001dc50(iVar8,iVar10,1)" (identifier "iVar8") (= "=") (call_expression "FUN_0001dc50(iVar8,iVar10,1)" (identifier "FUN_0001dc50") (argument_list "(iVar8,iVar10,1)" (( "(") (identifier "iVar8") (, ",") (identifier "iVar10") (, ",") (number_literal "1") () ")")))) (; ";")) (expression_statement "iVar5 = *piVar4;" (assignment_expression "iVar5 = *piVar4" (identifier "iVar5") (= "=") (pointer_expression "*piVar4" (* "*") (identifier "piVar4"))) (; ";")) (expression_statement "piVar4[4] = iVar8;" (assignment_expression "piVar4[4] = iVar8" (subscript_expression "piVar4[4]" (identifier "piVar4") ([ "[") (number_literal "4") (] "]")) (= "=") (identifier "iVar8")) (; ";")) (expression_statement "piVar4[5] = iVar9 + iVar8;" (assignment_expression "piVar4[5] = iVar9 + iVar8" (subscript_expression "piVar4[5]" (identifier "piVar4") ([ "[") (number_literal "5") (] "]")) (= "=") (binary_expression "iVar9 + iVar8" (identifier "iVar9") (+ "+") (identifier "iVar8"))) (; ";")) (} "}")))) (} "}"))) (expression_statement "*(char *)(iVar8 + -1 + iVar5) = (char)uVar3;" (assignment_expression "*(char *)(iVar8 + -1 + iVar5) = (char)uVar3" (pointer_expression "*(char *)(iVar8 + -1 + iVar5)" (* "*") (cast_expression "(char *)(iVar8 + -1 + iVar5)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar8 + -1 + iVar5)" (( "(") (binary_expression "iVar8 + -1 + iVar5" (binary_expression "iVar8 + -1" (identifier "iVar8") (+ "+") (number_literal "-1")) (+ "+") (identifier "iVar5")) () ")")))) (= "=") (cast_expression "(char)uVar3" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (identifier "uVar3"))) (; ";")) (goto_statement "goto LAB_000385f8;" (goto "goto") (statement_identifier "LAB_000385f8") (; ";"))) (case_statement "case 3:\n      sVar6 = puVar1[2];\n      pvVar7 = (void *)*local_34;\n      iVar5 = piVar4[4];\n      iVar10 = *piVar4 + sVar6;\n      *piVar4 = iVar10;\n      if (piVar4[7] < iVar10) {\n        iVar10 = iVar10 + 0x100;\n        if (piVar4[5] == 0) {\n          piVar4[7] = iVar10;\n          iVar5 = FUN_0001dc50(iVar5,iVar10,1);\n          iVar10 = *piVar4;\n          piVar4[4] = iVar5;\n        }\n        else {\n          iVar8 = piVar4[5] - iVar5;\n          piVar4[7] = iVar10;\n          iVar5 = FUN_0001dc50(iVar5,iVar10,1);\n          iVar10 = *piVar4;\n          piVar4[4] = iVar5;\n          piVar4[5] = iVar8 + iVar5;\n        }\n      }\n      memcpy((void *)((iVar10 - sVar6) + iVar5),pvVar7,sVar6);\n      local_34 = puVar1 + 3;\n      goto LAB_000385f8;" (case "case") (number_literal "3") (: ":") (expression_statement "sVar6 = puVar1[2];" (assignment_expression "sVar6 = puVar1[2]" (identifier "sVar6") (= "=") (subscript_expression "puVar1[2]" (identifier "puVar1") ([ "[") (number_literal "2") (] "]"))) (; ";")) (expression_statement "pvVar7 = (void *)*local_34;" (assignment_expression "pvVar7 = (void *)*local_34" (identifier "pvVar7") (= "=") (cast_expression "(void *)*local_34" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*local_34" (* "*") (identifier "local_34")))) (; ";")) (expression_statement "iVar5 = piVar4[4];" (assignment_expression "iVar5 = piVar4[4]" (identifier "iVar5") (= "=") (subscript_expression "piVar4[4]" (identifier "piVar4") ([ "[") (number_literal "4") (] "]"))) (; ";")) (expression_statement "iVar10 = *piVar4 + sVar6;" (assignment_expression "iVar10 = *piVar4 + sVar6" (identifier "iVar10") (= "=") (binary_expression "*piVar4 + sVar6" (pointer_expression "*piVar4" (* "*") (identifier "piVar4")) (+ "+") (identifier "sVar6"))) (; ";")) (expression_statement "*piVar4 = iVar10;" (assignment_expression "*piVar4 = iVar10" (pointer_expression "*piVar4" (* "*") (identifier "piVar4")) (= "=") (identifier "iVar10")) (; ";")) (if_statement "if (piVar4[7] < iVar10) {\n        iVar10 = iVar10 + 0x100;\n        if (piVar4[5] == 0) {\n          piVar4[7] = iVar10;\n          iVar5 = FUN_0001dc50(iVar5,iVar10,1);\n          iVar10 = *piVar4;\n          piVar4[4] = iVar5;\n        }\n        else {\n          iVar8 = piVar4[5] - iVar5;\n          piVar4[7] = iVar10;\n          iVar5 = FUN_0001dc50(iVar5,iVar10,1);\n          iVar10 = *piVar4;\n          piVar4[4] = iVar5;\n          piVar4[5] = iVar8 + iVar5;\n        }\n      }" (if "if") (parenthesized_expression "(piVar4[7] < iVar10)" (( "(") (binary_expression "piVar4[7] < iVar10" (subscript_expression "piVar4[7]" (identifier "piVar4") ([ "[") (number_literal "7") (] "]")) (< "<") (identifier "iVar10")) () ")")) (compound_statement "{\n        iVar10 = iVar10 + 0x100;\n        if (piVar4[5] == 0) {\n          piVar4[7] = iVar10;\n          iVar5 = FUN_0001dc50(iVar5,iVar10,1);\n          iVar10 = *piVar4;\n          piVar4[4] = iVar5;\n        }\n        else {\n          iVar8 = piVar4[5] - iVar5;\n          piVar4[7] = iVar10;\n          iVar5 = FUN_0001dc50(iVar5,iVar10,1);\n          iVar10 = *piVar4;\n          piVar4[4] = iVar5;\n          piVar4[5] = iVar8 + iVar5;\n        }\n      }" ({ "{") (expression_statement "iVar10 = iVar10 + 0x100;" (assignment_expression "iVar10 = iVar10 + 0x100" (identifier "iVar10") (= "=") (binary_expression "iVar10 + 0x100" (identifier "iVar10") (+ "+") (number_literal "0x100"))) (; ";")) (if_statement "if (piVar4[5] == 0) {\n          piVar4[7] = iVar10;\n          iVar5 = FUN_0001dc50(iVar5,iVar10,1);\n          iVar10 = *piVar4;\n          piVar4[4] = iVar5;\n        }\n        else {\n          iVar8 = piVar4[5] - iVar5;\n          piVar4[7] = iVar10;\n          iVar5 = FUN_0001dc50(iVar5,iVar10,1);\n          iVar10 = *piVar4;\n          piVar4[4] = iVar5;\n          piVar4[5] = iVar8 + iVar5;\n        }" (if "if") (parenthesized_expression "(piVar4[5] == 0)" (( "(") (binary_expression "piVar4[5] == 0" (subscript_expression "piVar4[5]" (identifier "piVar4") ([ "[") (number_literal "5") (] "]")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n          piVar4[7] = iVar10;\n          iVar5 = FUN_0001dc50(iVar5,iVar10,1);\n          iVar10 = *piVar4;\n          piVar4[4] = iVar5;\n        }" ({ "{") (expression_statement "piVar4[7] = iVar10;" (assignment_expression "piVar4[7] = iVar10" (subscript_expression "piVar4[7]" (identifier "piVar4") ([ "[") (number_literal "7") (] "]")) (= "=") (identifier "iVar10")) (; ";")) (expression_statement "iVar5 = FUN_0001dc50(iVar5,iVar10,1);" (assignment_expression "iVar5 = FUN_0001dc50(iVar5,iVar10,1)" (identifier "iVar5") (= "=") (call_expression "FUN_0001dc50(iVar5,iVar10,1)" (identifier "FUN_0001dc50") (argument_list "(iVar5,iVar10,1)" (( "(") (identifier "iVar5") (, ",") (identifier "iVar10") (, ",") (number_literal "1") () ")")))) (; ";")) (expression_statement "iVar10 = *piVar4;" (assignment_expression "iVar10 = *piVar4" (identifier "iVar10") (= "=") (pointer_expression "*piVar4" (* "*") (identifier "piVar4"))) (; ";")) (expression_statement "piVar4[4] = iVar5;" (assignment_expression "piVar4[4] = iVar5" (subscript_expression "piVar4[4]" (identifier "piVar4") ([ "[") (number_literal "4") (] "]")) (= "=") (identifier "iVar5")) (; ";")) (} "}")) (else_clause "else {\n          iVar8 = piVar4[5] - iVar5;\n          piVar4[7] = iVar10;\n          iVar5 = FUN_0001dc50(iVar5,iVar10,1);\n          iVar10 = *piVar4;\n          piVar4[4] = iVar5;\n          piVar4[5] = iVar8 + iVar5;\n        }" (else "else") (compound_statement "{\n          iVar8 = piVar4[5] - iVar5;\n          piVar4[7] = iVar10;\n          iVar5 = FUN_0001dc50(iVar5,iVar10,1);\n          iVar10 = *piVar4;\n          piVar4[4] = iVar5;\n          piVar4[5] = iVar8 + iVar5;\n        }" ({ "{") (expression_statement "iVar8 = piVar4[5] - iVar5;" (assignment_expression "iVar8 = piVar4[5] - iVar5" (identifier "iVar8") (= "=") (binary_expression "piVar4[5] - iVar5" (subscript_expression "piVar4[5]" (identifier "piVar4") ([ "[") (number_literal "5") (] "]")) (- "-") (identifier "iVar5"))) (; ";")) (expression_statement "piVar4[7] = iVar10;" (assignment_expression "piVar4[7] = iVar10" (subscript_expression "piVar4[7]" (identifier "piVar4") ([ "[") (number_literal "7") (] "]")) (= "=") (identifier "iVar10")) (; ";")) (expression_statement "iVar5 = FUN_0001dc50(iVar5,iVar10,1);" (assignment_expression "iVar5 = FUN_0001dc50(iVar5,iVar10,1)" (identifier "iVar5") (= "=") (call_expression "FUN_0001dc50(iVar5,iVar10,1)" (identifier "FUN_0001dc50") (argument_list "(iVar5,iVar10,1)" (( "(") (identifier "iVar5") (, ",") (identifier "iVar10") (, ",") (number_literal "1") () ")")))) (; ";")) (expression_statement "iVar10 = *piVar4;" (assignment_expression "iVar10 = *piVar4" (identifier "iVar10") (= "=") (pointer_expression "*piVar4" (* "*") (identifier "piVar4"))) (; ";")) (expression_statement "piVar4[4] = iVar5;" (assignment_expression "piVar4[4] = iVar5" (subscript_expression "piVar4[4]" (identifier "piVar4") ([ "[") (number_literal "4") (] "]")) (= "=") (identifier "iVar5")) (; ";")) (expression_statement "piVar4[5] = iVar8 + iVar5;" (assignment_expression "piVar4[5] = iVar8 + iVar5" (subscript_expression "piVar4[5]" (identifier "piVar4") ([ "[") (number_literal "5") (] "]")) (= "=") (binary_expression "iVar8 + iVar5" (identifier "iVar8") (+ "+") (identifier "iVar5"))) (; ";")) (} "}")))) (} "}"))) (expression_statement "memcpy((void *)((iVar10 - sVar6) + iVar5),pvVar7,sVar6);" (call_expression "memcpy((void *)((iVar10 - sVar6) + iVar5),pvVar7,sVar6)" (identifier "memcpy") (argument_list "((void *)((iVar10 - sVar6) + iVar5),pvVar7,sVar6)" (( "(") (cast_expression "(void *)((iVar10 - sVar6) + iVar5)" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((iVar10 - sVar6) + iVar5)" (( "(") (binary_expression "(iVar10 - sVar6) + iVar5" (parenthesized_expression "(iVar10 - sVar6)" (( "(") (binary_expression "iVar10 - sVar6" (identifier "iVar10") (- "-") (identifier "sVar6")) () ")")) (+ "+") (identifier "iVar5")) () ")"))) (, ",") (identifier "pvVar7") (, ",") (identifier "sVar6") () ")"))) (; ";")) (expression_statement "local_34 = puVar1 + 3;" (assignment_expression "local_34 = puVar1 + 3" (identifier "local_34") (= "=") (binary_expression "puVar1 + 3" (identifier "puVar1") (+ "+") (number_literal "3"))) (; ";")) (goto_statement "goto LAB_000385f8;" (goto "goto") (statement_identifier "LAB_000385f8") (; ";"))) (case_statement "case 4:\n      __s = (char *)*local_34;\n      iVar10 = *piVar4;\n      iVar8 = piVar4[4];\n      iVar5 = iVar10 + 4;\n      *piVar4 = iVar5;\n      if (piVar4[7] < iVar5) {\n        iVar10 = iVar10 + 0x104;\n        if (piVar4[5] == 0) {\n          piVar4[7] = iVar10;\n          iVar8 = FUN_0001dc50(iVar8,iVar10,1);\n          iVar5 = *piVar4;\n          piVar4[4] = iVar8;\n        }\n        else {\n          piVar4[7] = iVar10;\n          iVar9 = piVar4[5] - iVar8;\n          iVar8 = FUN_0001dc50(iVar8,iVar10,1);\n          iVar5 = *piVar4;\n          piVar4[4] = iVar8;\n          piVar4[5] = iVar9 + iVar8;\n        }\n      }\n      *(undefined4 *)(iVar8 + -4 + iVar5) = 0;\n      piVar4[6] = *piVar4;\n      strlen(__s);\n      FUN_000378c0();\n      local_34 = puVar1 + 2;\n      goto LAB_000385f8;" (case "case") (number_literal "4") (: ":") (expression_statement "__s = (char *)*local_34;" (assignment_expression "__s = (char *)*local_34" (identifier "__s") (= "=") (cast_expression "(char *)*local_34" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*local_34" (* "*") (identifier "local_34")))) (; ";")) (expression_statement "iVar10 = *piVar4;" (assignment_expression "iVar10 = *piVar4" (identifier "iVar10") (= "=") (pointer_expression "*piVar4" (* "*") (identifier "piVar4"))) (; ";")) (expression_statement "iVar8 = piVar4[4];" (assignment_expression "iVar8 = piVar4[4]" (identifier "iVar8") (= "=") (subscript_expression "piVar4[4]" (identifier "piVar4") ([ "[") (number_literal "4") (] "]"))) (; ";")) (expression_statement "iVar5 = iVar10 + 4;" (assignment_expression "iVar5 = iVar10 + 4" (identifier "iVar5") (= "=") (binary_expression "iVar10 + 4" (identifier "iVar10") (+ "+") (number_literal "4"))) (; ";")) (expression_statement "*piVar4 = iVar5;" (assignment_expression "*piVar4 = iVar5" (pointer_expression "*piVar4" (* "*") (identifier "piVar4")) (= "=") (identifier "iVar5")) (; ";")) (if_statement "if (piVar4[7] < iVar5) {\n        iVar10 = iVar10 + 0x104;\n        if (piVar4[5] == 0) {\n          piVar4[7] = iVar10;\n          iVar8 = FUN_0001dc50(iVar8,iVar10,1);\n          iVar5 = *piVar4;\n          piVar4[4] = iVar8;\n        }\n        else {\n          piVar4[7] = iVar10;\n          iVar9 = piVar4[5] - iVar8;\n          iVar8 = FUN_0001dc50(iVar8,iVar10,1);\n          iVar5 = *piVar4;\n          piVar4[4] = iVar8;\n          piVar4[5] = iVar9 + iVar8;\n        }\n      }" (if "if") (parenthesized_expression "(piVar4[7] < iVar5)" (( "(") (binary_expression "piVar4[7] < iVar5" (subscript_expression "piVar4[7]" (identifier "piVar4") ([ "[") (number_literal "7") (] "]")) (< "<") (identifier "iVar5")) () ")")) (compound_statement "{\n        iVar10 = iVar10 + 0x104;\n        if (piVar4[5] == 0) {\n          piVar4[7] = iVar10;\n          iVar8 = FUN_0001dc50(iVar8,iVar10,1);\n          iVar5 = *piVar4;\n          piVar4[4] = iVar8;\n        }\n        else {\n          piVar4[7] = iVar10;\n          iVar9 = piVar4[5] - iVar8;\n          iVar8 = FUN_0001dc50(iVar8,iVar10,1);\n          iVar5 = *piVar4;\n          piVar4[4] = iVar8;\n          piVar4[5] = iVar9 + iVar8;\n        }\n      }" ({ "{") (expression_statement "iVar10 = iVar10 + 0x104;" (assignment_expression "iVar10 = iVar10 + 0x104" (identifier "iVar10") (= "=") (binary_expression "iVar10 + 0x104" (identifier "iVar10") (+ "+") (number_literal "0x104"))) (; ";")) (if_statement "if (piVar4[5] == 0) {\n          piVar4[7] = iVar10;\n          iVar8 = FUN_0001dc50(iVar8,iVar10,1);\n          iVar5 = *piVar4;\n          piVar4[4] = iVar8;\n        }\n        else {\n          piVar4[7] = iVar10;\n          iVar9 = piVar4[5] - iVar8;\n          iVar8 = FUN_0001dc50(iVar8,iVar10,1);\n          iVar5 = *piVar4;\n          piVar4[4] = iVar8;\n          piVar4[5] = iVar9 + iVar8;\n        }" (if "if") (parenthesized_expression "(piVar4[5] == 0)" (( "(") (binary_expression "piVar4[5] == 0" (subscript_expression "piVar4[5]" (identifier "piVar4") ([ "[") (number_literal "5") (] "]")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n          piVar4[7] = iVar10;\n          iVar8 = FUN_0001dc50(iVar8,iVar10,1);\n          iVar5 = *piVar4;\n          piVar4[4] = iVar8;\n        }" ({ "{") (expression_statement "piVar4[7] = iVar10;" (assignment_expression "piVar4[7] = iVar10" (subscript_expression "piVar4[7]" (identifier "piVar4") ([ "[") (number_literal "7") (] "]")) (= "=") (identifier "iVar10")) (; ";")) (expression_statement "iVar8 = FUN_0001dc50(iVar8,iVar10,1);" (assignment_expression "iVar8 = FUN_0001dc50(iVar8,iVar10,1)" (identifier "iVar8") (= "=") (call_expression "FUN_0001dc50(iVar8,iVar10,1)" (identifier "FUN_0001dc50") (argument_list "(iVar8,iVar10,1)" (( "(") (identifier "iVar8") (, ",") (identifier "iVar10") (, ",") (number_literal "1") () ")")))) (; ";")) (expression_statement "iVar5 = *piVar4;" (assignment_expression "iVar5 = *piVar4" (identifier "iVar5") (= "=") (pointer_expression "*piVar4" (* "*") (identifier "piVar4"))) (; ";")) (expression_statement "piVar4[4] = iVar8;" (assignment_expression "piVar4[4] = iVar8" (subscript_expression "piVar4[4]" (identifier "piVar4") ([ "[") (number_literal "4") (] "]")) (= "=") (identifier "iVar8")) (; ";")) (} "}")) (else_clause "else {\n          piVar4[7] = iVar10;\n          iVar9 = piVar4[5] - iVar8;\n          iVar8 = FUN_0001dc50(iVar8,iVar10,1);\n          iVar5 = *piVar4;\n          piVar4[4] = iVar8;\n          piVar4[5] = iVar9 + iVar8;\n        }" (else "else") (compound_statement "{\n          piVar4[7] = iVar10;\n          iVar9 = piVar4[5] - iVar8;\n          iVar8 = FUN_0001dc50(iVar8,iVar10,1);\n          iVar5 = *piVar4;\n          piVar4[4] = iVar8;\n          piVar4[5] = iVar9 + iVar8;\n        }" ({ "{") (expression_statement "piVar4[7] = iVar10;" (assignment_expression "piVar4[7] = iVar10" (subscript_expression "piVar4[7]" (identifier "piVar4") ([ "[") (number_literal "7") (] "]")) (= "=") (identifier "iVar10")) (; ";")) (expression_statement "iVar9 = piVar4[5] - iVar8;" (assignment_expression "iVar9 = piVar4[5] - iVar8" (identifier "iVar9") (= "=") (binary_expression "piVar4[5] - iVar8" (subscript_expression "piVar4[5]" (identifier "piVar4") ([ "[") (number_literal "5") (] "]")) (- "-") (identifier "iVar8"))) (; ";")) (expression_statement "iVar8 = FUN_0001dc50(iVar8,iVar10,1);" (assignment_expression "iVar8 = FUN_0001dc50(iVar8,iVar10,1)" (identifier "iVar8") (= "=") (call_expression "FUN_0001dc50(iVar8,iVar10,1)" (identifier "FUN_0001dc50") (argument_list "(iVar8,iVar10,1)" (( "(") (identifier "iVar8") (, ",") (identifier "iVar10") (, ",") (number_literal "1") () ")")))) (; ";")) (expression_statement "iVar5 = *piVar4;" (assignment_expression "iVar5 = *piVar4" (identifier "iVar5") (= "=") (pointer_expression "*piVar4" (* "*") (identifier "piVar4"))) (; ";")) (expression_statement "piVar4[4] = iVar8;" (assignment_expression "piVar4[4] = iVar8" (subscript_expression "piVar4[4]" (identifier "piVar4") ([ "[") (number_literal "4") (] "]")) (= "=") (identifier "iVar8")) (; ";")) (expression_statement "piVar4[5] = iVar9 + iVar8;" (assignment_expression "piVar4[5] = iVar9 + iVar8" (subscript_expression "piVar4[5]" (identifier "piVar4") ([ "[") (number_literal "5") (] "]")) (= "=") (binary_expression "iVar9 + iVar8" (identifier "iVar9") (+ "+") (identifier "iVar8"))) (; ";")) (} "}")))) (} "}"))) (expression_statement "*(undefined4 *)(iVar8 + -4 + iVar5) = 0;" (assignment_expression "*(undefined4 *)(iVar8 + -4 + iVar5) = 0" (pointer_expression "*(undefined4 *)(iVar8 + -4 + iVar5)" (* "*") (cast_expression "(undefined4 *)(iVar8 + -4 + iVar5)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar8 + -4 + iVar5)" (( "(") (binary_expression "iVar8 + -4 + iVar5" (binary_expression "iVar8 + -4" (identifier "iVar8") (+ "+") (number_literal "-4")) (+ "+") (identifier "iVar5")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "piVar4[6] = *piVar4;" (assignment_expression "piVar4[6] = *piVar4" (subscript_expression "piVar4[6]" (identifier "piVar4") ([ "[") (number_literal "6") (] "]")) (= "=") (pointer_expression "*piVar4" (* "*") (identifier "piVar4"))) (; ";")) (expression_statement "strlen(__s);" (call_expression "strlen(__s)" (identifier "strlen") (argument_list "(__s)" (( "(") (identifier "__s") () ")"))) (; ";")) (expression_statement "FUN_000378c0();" (call_expression "FUN_000378c0()" (identifier "FUN_000378c0") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "local_34 = puVar1 + 2;" (assignment_expression "local_34 = puVar1 + 2" (identifier "local_34") (= "=") (binary_expression "puVar1 + 2" (identifier "puVar1") (+ "+") (number_literal "2"))) (; ";")) (goto_statement "goto LAB_000385f8;" (goto "goto") (statement_identifier "LAB_000385f8") (; ";"))) (case_statement "case 5:\n      uVar3 = *local_34;\n      puVar1 = puVar1 + 2;\n      sVar6 = FUN_00056940(uVar3);\n      pvVar7 = (void *)FUN_0001db90(sVar6,1);\n      FUN_00056ac0(pvVar7,uVar3);\n      iVar5 = *piVar4 + sVar6;\n      *piVar4 = iVar5;\n      if (piVar4[7] < iVar5) {\n        iVar10 = piVar4[5];\n        iVar5 = iVar5 + 0x100;\n        iVar8 = piVar4[4];\n        if (iVar10 == 0) {\n          piVar4[7] = iVar5;\n          iVar9 = FUN_0001dc50(iVar8,iVar5,1);\n          iVar5 = *piVar4;\n          piVar4[4] = iVar9;\n        }\n        else {\n          piVar4[7] = iVar5;\n          iVar9 = FUN_0001dc50(iVar8,iVar5,1);\n          iVar5 = *piVar4;\n          piVar4[4] = iVar9;\n          piVar4[5] = (iVar10 - iVar8) + iVar9;\n        }\n      }\n      else {\n        iVar9 = piVar4[4];\n      }\n      memcpy((void *)((iVar5 - sVar6) + iVar9),pvVar7,sVar6);\n      FUN_0001dd30(pvVar7);\n      uVar3 = *puVar1;\n      break;" (case "case") (number_literal "5") (: ":") (expression_statement "uVar3 = *local_34;" (assignment_expression "uVar3 = *local_34" (identifier "uVar3") (= "=") (pointer_expression "*local_34" (* "*") (identifier "local_34"))) (; ";")) (expression_statement "puVar1 = puVar1 + 2;" (assignment_expression "puVar1 = puVar1 + 2" (identifier "puVar1") (= "=") (binary_expression "puVar1 + 2" (identifier "puVar1") (+ "+") (number_literal "2"))) (; ";")) (expression_statement "sVar6 = FUN_00056940(uVar3);" (assignment_expression "sVar6 = FUN_00056940(uVar3)" (identifier "sVar6") (= "=") (call_expression "FUN_00056940(uVar3)" (identifier "FUN_00056940") (argument_list "(uVar3)" (( "(") (identifier "uVar3") () ")")))) (; ";")) (expression_statement "pvVar7 = (void *)FUN_0001db90(sVar6,1);" (assignment_expression "pvVar7 = (void *)FUN_0001db90(sVar6,1)" (identifier "pvVar7") (= "=") (cast_expression "(void *)FUN_0001db90(sVar6,1)" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_0001db90(sVar6,1)" (identifier "FUN_0001db90") (argument_list "(sVar6,1)" (( "(") (identifier "sVar6") (, ",") (number_literal "1") () ")"))))) (; ";")) (expression_statement "FUN_00056ac0(pvVar7,uVar3);" (call_expression "FUN_00056ac0(pvVar7,uVar3)" (identifier "FUN_00056ac0") (argument_list "(pvVar7,uVar3)" (( "(") (identifier "pvVar7") (, ",") (identifier "uVar3") () ")"))) (; ";")) (expression_statement "iVar5 = *piVar4 + sVar6;" (assignment_expression "iVar5 = *piVar4 + sVar6" (identifier "iVar5") (= "=") (binary_expression "*piVar4 + sVar6" (pointer_expression "*piVar4" (* "*") (identifier "piVar4")) (+ "+") (identifier "sVar6"))) (; ";")) (expression_statement "*piVar4 = iVar5;" (assignment_expression "*piVar4 = iVar5" (pointer_expression "*piVar4" (* "*") (identifier "piVar4")) (= "=") (identifier "iVar5")) (; ";")) (if_statement "if (piVar4[7] < iVar5) {\n        iVar10 = piVar4[5];\n        iVar5 = iVar5 + 0x100;\n        iVar8 = piVar4[4];\n        if (iVar10 == 0) {\n          piVar4[7] = iVar5;\n          iVar9 = FUN_0001dc50(iVar8,iVar5,1);\n          iVar5 = *piVar4;\n          piVar4[4] = iVar9;\n        }\n        else {\n          piVar4[7] = iVar5;\n          iVar9 = FUN_0001dc50(iVar8,iVar5,1);\n          iVar5 = *piVar4;\n          piVar4[4] = iVar9;\n          piVar4[5] = (iVar10 - iVar8) + iVar9;\n        }\n      }\n      else {\n        iVar9 = piVar4[4];\n      }" (if "if") (parenthesized_expression "(piVar4[7] < iVar5)" (( "(") (binary_expression "piVar4[7] < iVar5" (subscript_expression "piVar4[7]" (identifier "piVar4") ([ "[") (number_literal "7") (] "]")) (< "<") (identifier "iVar5")) () ")")) (compound_statement "{\n        iVar10 = piVar4[5];\n        iVar5 = iVar5 + 0x100;\n        iVar8 = piVar4[4];\n        if (iVar10 == 0) {\n          piVar4[7] = iVar5;\n          iVar9 = FUN_0001dc50(iVar8,iVar5,1);\n          iVar5 = *piVar4;\n          piVar4[4] = iVar9;\n        }\n        else {\n          piVar4[7] = iVar5;\n          iVar9 = FUN_0001dc50(iVar8,iVar5,1);\n          iVar5 = *piVar4;\n          piVar4[4] = iVar9;\n          piVar4[5] = (iVar10 - iVar8) + iVar9;\n        }\n      }" ({ "{") (expression_statement "iVar10 = piVar4[5];" (assignment_expression "iVar10 = piVar4[5]" (identifier "iVar10") (= "=") (subscript_expression "piVar4[5]" (identifier "piVar4") ([ "[") (number_literal "5") (] "]"))) (; ";")) (expression_statement "iVar5 = iVar5 + 0x100;" (assignment_expression "iVar5 = iVar5 + 0x100" (identifier "iVar5") (= "=") (binary_expression "iVar5 + 0x100" (identifier "iVar5") (+ "+") (number_literal "0x100"))) (; ";")) (expression_statement "iVar8 = piVar4[4];" (assignment_expression "iVar8 = piVar4[4]" (identifier "iVar8") (= "=") (subscript_expression "piVar4[4]" (identifier "piVar4") ([ "[") (number_literal "4") (] "]"))) (; ";")) (if_statement "if (iVar10 == 0) {\n          piVar4[7] = iVar5;\n          iVar9 = FUN_0001dc50(iVar8,iVar5,1);\n          iVar5 = *piVar4;\n          piVar4[4] = iVar9;\n        }\n        else {\n          piVar4[7] = iVar5;\n          iVar9 = FUN_0001dc50(iVar8,iVar5,1);\n          iVar5 = *piVar4;\n          piVar4[4] = iVar9;\n          piVar4[5] = (iVar10 - iVar8) + iVar9;\n        }" (if "if") (parenthesized_expression "(iVar10 == 0)" (( "(") (binary_expression "iVar10 == 0" (identifier "iVar10") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n          piVar4[7] = iVar5;\n          iVar9 = FUN_0001dc50(iVar8,iVar5,1);\n          iVar5 = *piVar4;\n          piVar4[4] = iVar9;\n        }" ({ "{") (expression_statement "piVar4[7] = iVar5;" (assignment_expression "piVar4[7] = iVar5" (subscript_expression "piVar4[7]" (identifier "piVar4") ([ "[") (number_literal "7") (] "]")) (= "=") (identifier "iVar5")) (; ";")) (expression_statement "iVar9 = FUN_0001dc50(iVar8,iVar5,1);" (assignment_expression "iVar9 = FUN_0001dc50(iVar8,iVar5,1)" (identifier "iVar9") (= "=") (call_expression "FUN_0001dc50(iVar8,iVar5,1)" (identifier "FUN_0001dc50") (argument_list "(iVar8,iVar5,1)" (( "(") (identifier "iVar8") (, ",") (identifier "iVar5") (, ",") (number_literal "1") () ")")))) (; ";")) (expression_statement "iVar5 = *piVar4;" (assignment_expression "iVar5 = *piVar4" (identifier "iVar5") (= "=") (pointer_expression "*piVar4" (* "*") (identifier "piVar4"))) (; ";")) (expression_statement "piVar4[4] = iVar9;" (assignment_expression "piVar4[4] = iVar9" (subscript_expression "piVar4[4]" (identifier "piVar4") ([ "[") (number_literal "4") (] "]")) (= "=") (identifier "iVar9")) (; ";")) (} "}")) (else_clause "else {\n          piVar4[7] = iVar5;\n          iVar9 = FUN_0001dc50(iVar8,iVar5,1);\n          iVar5 = *piVar4;\n          piVar4[4] = iVar9;\n          piVar4[5] = (iVar10 - iVar8) + iVar9;\n        }" (else "else") (compound_statement "{\n          piVar4[7] = iVar5;\n          iVar9 = FUN_0001dc50(iVar8,iVar5,1);\n          iVar5 = *piVar4;\n          piVar4[4] = iVar9;\n          piVar4[5] = (iVar10 - iVar8) + iVar9;\n        }" ({ "{") (expression_statement "piVar4[7] = iVar5;" (assignment_expression "piVar4[7] = iVar5" (subscript_expression "piVar4[7]" (identifier "piVar4") ([ "[") (number_literal "7") (] "]")) (= "=") (identifier "iVar5")) (; ";")) (expression_statement "iVar9 = FUN_0001dc50(iVar8,iVar5,1);" (assignment_expression "iVar9 = FUN_0001dc50(iVar8,iVar5,1)" (identifier "iVar9") (= "=") (call_expression "FUN_0001dc50(iVar8,iVar5,1)" (identifier "FUN_0001dc50") (argument_list "(iVar8,iVar5,1)" (( "(") (identifier "iVar8") (, ",") (identifier "iVar5") (, ",") (number_literal "1") () ")")))) (; ";")) (expression_statement "iVar5 = *piVar4;" (assignment_expression "iVar5 = *piVar4" (identifier "iVar5") (= "=") (pointer_expression "*piVar4" (* "*") (identifier "piVar4"))) (; ";")) (expression_statement "piVar4[4] = iVar9;" (assignment_expression "piVar4[4] = iVar9" (subscript_expression "piVar4[4]" (identifier "piVar4") ([ "[") (number_literal "4") (] "]")) (= "=") (identifier "iVar9")) (; ";")) (expression_statement "piVar4[5] = (iVar10 - iVar8) + iVar9;" (assignment_expression "piVar4[5] = (iVar10 - iVar8) + iVar9" (subscript_expression "piVar4[5]" (identifier "piVar4") ([ "[") (number_literal "5") (] "]")) (= "=") (binary_expression "(iVar10 - iVar8) + iVar9" (parenthesized_expression "(iVar10 - iVar8)" (( "(") (binary_expression "iVar10 - iVar8" (identifier "iVar10") (- "-") (identifier "iVar8")) () ")")) (+ "+") (identifier "iVar9"))) (; ";")) (} "}")))) (} "}")) (else_clause "else {\n        iVar9 = piVar4[4];\n      }" (else "else") (compound_statement "{\n        iVar9 = piVar4[4];\n      }" ({ "{") (expression_statement "iVar9 = piVar4[4];" (assignment_expression "iVar9 = piVar4[4]" (identifier "iVar9") (= "=") (subscript_expression "piVar4[4]" (identifier "piVar4") ([ "[") (number_literal "4") (] "]"))) (; ";")) (} "}")))) (expression_statement "memcpy((void *)((iVar5 - sVar6) + iVar9),pvVar7,sVar6);" (call_expression "memcpy((void *)((iVar5 - sVar6) + iVar9),pvVar7,sVar6)" (identifier "memcpy") (argument_list "((void *)((iVar5 - sVar6) + iVar9),pvVar7,sVar6)" (( "(") (cast_expression "(void *)((iVar5 - sVar6) + iVar9)" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((iVar5 - sVar6) + iVar9)" (( "(") (binary_expression "(iVar5 - sVar6) + iVar9" (parenthesized_expression "(iVar5 - sVar6)" (( "(") (binary_expression "iVar5 - sVar6" (identifier "iVar5") (- "-") (identifier "sVar6")) () ")")) (+ "+") (identifier "iVar9")) () ")"))) (, ",") (identifier "pvVar7") (, ",") (identifier "sVar6") () ")"))) (; ";")) (expression_statement "FUN_0001dd30(pvVar7);" (call_expression "FUN_0001dd30(pvVar7)" (identifier "FUN_0001dd30") (argument_list "(pvVar7)" (( "(") (identifier "pvVar7") () ")"))) (; ";")) (expression_statement "uVar3 = *puVar1;" (assignment_expression "uVar3 = *puVar1" (identifier "uVar3") (= "=") (pointer_expression "*puVar1" (* "*") (identifier "puVar1"))) (; ";")) (break_statement "break;" (break "break") (; ";"))) (case_statement "default:\n      goto LAB_000385f8;" (default "default") (: ":") (goto_statement "goto LAB_000385f8;" (goto "goto") (statement_identifier "LAB_000385f8") (; ";"))) (} "}"))) (} "}")) (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (; ";")) (labeled_statement "code_r0x000387f0:\n  uVar3 = *local_34;" (statement_identifier "code_r0x000387f0") (: ":") (expression_statement "uVar3 = *local_34;" (assignment_expression "uVar3 = *local_34" (identifier "uVar3") (= "=") (pointer_expression "*local_34" (* "*") (identifier "local_34"))) (; ";"))) (expression_statement "iVar10 = *piVar4;" (assignment_expression "iVar10 = *piVar4" (identifier "iVar10") (= "=") (pointer_expression "*piVar4" (* "*") (identifier "piVar4"))) (; ";")) (expression_statement "local_34 = puVar1 + 2;" (assignment_expression "local_34 = puVar1 + 2" (identifier "local_34") (= "=") (binary_expression "puVar1 + 2" (identifier "puVar1") (+ "+") (number_literal "2"))) (; ";")) (expression_statement "iVar8 = piVar4[4];" (assignment_expression "iVar8 = piVar4[4]" (identifier "iVar8") (= "=") (subscript_expression "piVar4[4]" (identifier "piVar4") ([ "[") (number_literal "4") (] "]"))) (; ";")) (expression_statement "iVar5 = iVar10 + 4;" (assignment_expression "iVar5 = iVar10 + 4" (identifier "iVar5") (= "=") (binary_expression "iVar10 + 4" (identifier "iVar10") (+ "+") (number_literal "4"))) (; ";")) (expression_statement "*piVar4 = iVar5;" (assignment_expression "*piVar4 = iVar5" (pointer_expression "*piVar4" (* "*") (identifier "piVar4")) (= "=") (identifier "iVar5")) (; ";")) (if_statement "if (piVar4[7] < iVar5) {\n    iVar10 = iVar10 + 0x104;\n    if (piVar4[5] == 0) {\n      piVar4[7] = iVar10;\n      iVar8 = FUN_0001dc50(iVar8,iVar10,1);\n      iVar5 = *piVar4;\n      piVar4[4] = iVar8;\n    }\n    else {\n      piVar4[7] = iVar10;\n      iVar9 = piVar4[5] - iVar8;\n      iVar8 = FUN_0001dc50(iVar8,iVar10,1);\n      iVar5 = *piVar4;\n      piVar4[4] = iVar8;\n      piVar4[5] = iVar9 + iVar8;\n    }\n  }" (if "if") (parenthesized_expression "(piVar4[7] < iVar5)" (( "(") (binary_expression "piVar4[7] < iVar5" (subscript_expression "piVar4[7]" (identifier "piVar4") ([ "[") (number_literal "7") (] "]")) (< "<") (identifier "iVar5")) () ")")) (compound_statement "{\n    iVar10 = iVar10 + 0x104;\n    if (piVar4[5] == 0) {\n      piVar4[7] = iVar10;\n      iVar8 = FUN_0001dc50(iVar8,iVar10,1);\n      iVar5 = *piVar4;\n      piVar4[4] = iVar8;\n    }\n    else {\n      piVar4[7] = iVar10;\n      iVar9 = piVar4[5] - iVar8;\n      iVar8 = FUN_0001dc50(iVar8,iVar10,1);\n      iVar5 = *piVar4;\n      piVar4[4] = iVar8;\n      piVar4[5] = iVar9 + iVar8;\n    }\n  }" ({ "{") (expression_statement "iVar10 = iVar10 + 0x104;" (assignment_expression "iVar10 = iVar10 + 0x104" (identifier "iVar10") (= "=") (binary_expression "iVar10 + 0x104" (identifier "iVar10") (+ "+") (number_literal "0x104"))) (; ";")) (if_statement "if (piVar4[5] == 0) {\n      piVar4[7] = iVar10;\n      iVar8 = FUN_0001dc50(iVar8,iVar10,1);\n      iVar5 = *piVar4;\n      piVar4[4] = iVar8;\n    }\n    else {\n      piVar4[7] = iVar10;\n      iVar9 = piVar4[5] - iVar8;\n      iVar8 = FUN_0001dc50(iVar8,iVar10,1);\n      iVar5 = *piVar4;\n      piVar4[4] = iVar8;\n      piVar4[5] = iVar9 + iVar8;\n    }" (if "if") (parenthesized_expression "(piVar4[5] == 0)" (( "(") (binary_expression "piVar4[5] == 0" (subscript_expression "piVar4[5]" (identifier "piVar4") ([ "[") (number_literal "5") (] "]")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      piVar4[7] = iVar10;\n      iVar8 = FUN_0001dc50(iVar8,iVar10,1);\n      iVar5 = *piVar4;\n      piVar4[4] = iVar8;\n    }" ({ "{") (expression_statement "piVar4[7] = iVar10;" (assignment_expression "piVar4[7] = iVar10" (subscript_expression "piVar4[7]" (identifier "piVar4") ([ "[") (number_literal "7") (] "]")) (= "=") (identifier "iVar10")) (; ";")) (expression_statement "iVar8 = FUN_0001dc50(iVar8,iVar10,1);" (assignment_expression "iVar8 = FUN_0001dc50(iVar8,iVar10,1)" (identifier "iVar8") (= "=") (call_expression "FUN_0001dc50(iVar8,iVar10,1)" (identifier "FUN_0001dc50") (argument_list "(iVar8,iVar10,1)" (( "(") (identifier "iVar8") (, ",") (identifier "iVar10") (, ",") (number_literal "1") () ")")))) (; ";")) (expression_statement "iVar5 = *piVar4;" (assignment_expression "iVar5 = *piVar4" (identifier "iVar5") (= "=") (pointer_expression "*piVar4" (* "*") (identifier "piVar4"))) (; ";")) (expression_statement "piVar4[4] = iVar8;" (assignment_expression "piVar4[4] = iVar8" (subscript_expression "piVar4[4]" (identifier "piVar4") ([ "[") (number_literal "4") (] "]")) (= "=") (identifier "iVar8")) (; ";")) (} "}")) (else_clause "else {\n      piVar4[7] = iVar10;\n      iVar9 = piVar4[5] - iVar8;\n      iVar8 = FUN_0001dc50(iVar8,iVar10,1);\n      iVar5 = *piVar4;\n      piVar4[4] = iVar8;\n      piVar4[5] = iVar9 + iVar8;\n    }" (else "else") (compound_statement "{\n      piVar4[7] = iVar10;\n      iVar9 = piVar4[5] - iVar8;\n      iVar8 = FUN_0001dc50(iVar8,iVar10,1);\n      iVar5 = *piVar4;\n      piVar4[4] = iVar8;\n      piVar4[5] = iVar9 + iVar8;\n    }" ({ "{") (expression_statement "piVar4[7] = iVar10;" (assignment_expression "piVar4[7] = iVar10" (subscript_expression "piVar4[7]" (identifier "piVar4") ([ "[") (number_literal "7") (] "]")) (= "=") (identifier "iVar10")) (; ";")) (expression_statement "iVar9 = piVar4[5] - iVar8;" (assignment_expression "iVar9 = piVar4[5] - iVar8" (identifier "iVar9") (= "=") (binary_expression "piVar4[5] - iVar8" (subscript_expression "piVar4[5]" (identifier "piVar4") ([ "[") (number_literal "5") (] "]")) (- "-") (identifier "iVar8"))) (; ";")) (expression_statement "iVar8 = FUN_0001dc50(iVar8,iVar10,1);" (assignment_expression "iVar8 = FUN_0001dc50(iVar8,iVar10,1)" (identifier "iVar8") (= "=") (call_expression "FUN_0001dc50(iVar8,iVar10,1)" (identifier "FUN_0001dc50") (argument_list "(iVar8,iVar10,1)" (( "(") (identifier "iVar8") (, ",") (identifier "iVar10") (, ",") (number_literal "1") () ")")))) (; ";")) (expression_statement "iVar5 = *piVar4;" (assignment_expression "iVar5 = *piVar4" (identifier "iVar5") (= "=") (pointer_expression "*piVar4" (* "*") (identifier "piVar4"))) (; ";")) (expression_statement "piVar4[4] = iVar8;" (assignment_expression "piVar4[4] = iVar8" (subscript_expression "piVar4[4]" (identifier "piVar4") ([ "[") (number_literal "4") (] "]")) (= "=") (identifier "iVar8")) (; ";")) (expression_statement "piVar4[5] = iVar9 + iVar8;" (assignment_expression "piVar4[5] = iVar9 + iVar8" (subscript_expression "piVar4[5]" (identifier "piVar4") ([ "[") (number_literal "5") (] "]")) (= "=") (binary_expression "iVar9 + iVar8" (identifier "iVar9") (+ "+") (identifier "iVar8"))) (; ";")) (} "}")))) (} "}"))) (expression_statement "*(uint *)(iVar8 + -4 + iVar5) =\n       uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 | uVar3 << 0x18;" (assignment_expression "*(uint *)(iVar8 + -4 + iVar5) =\n       uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 | uVar3 << 0x18" (pointer_expression "*(uint *)(iVar8 + -4 + iVar5)" (* "*") (cast_expression "(uint *)(iVar8 + -4 + iVar5)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar8 + -4 + iVar5)" (( "(") (binary_expression "iVar8 + -4 + iVar5" (binary_expression "iVar8 + -4" (identifier "iVar8") (+ "+") (number_literal "-4")) (+ "+") (identifier "iVar5")) () ")")))) (= "=") (binary_expression "uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 | uVar3 << 0x18" (binary_expression "uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8" (binary_expression "uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8" (binary_expression "uVar3 >> 0x18" (identifier "uVar3") (>> ">>") (number_literal "0x18")) (| "|") (binary_expression "(uVar3 & 0xff0000) >> 8" (parenthesized_expression "(uVar3 & 0xff0000)" (( "(") (binary_expression "uVar3 & 0xff0000" (identifier "uVar3") (& "&") (number_literal "0xff0000")) () ")")) (>> ">>") (number_literal "8"))) (| "|") (binary_expression "(uVar3 & 0xff00) << 8" (parenthesized_expression "(uVar3 & 0xff00)" (( "(") (binary_expression "uVar3 & 0xff00" (identifier "uVar3") (& "&") (number_literal "0xff00")) () ")")) (<< "<<") (number_literal "8"))) (| "|") (binary_expression "uVar3 << 0x18" (identifier "uVar3") (<< "<<") (number_literal "0x18")))) (; ";")) (goto_statement "goto LAB_000385f8;" (goto "goto") (statement_identifier "LAB_000385f8") (; ";")) (} "}")))

/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */
/* WARNING: Enum "anon_enum_32": Some values do not have unique names */

type_4 * __regparm3 construct_packet(Ssh_conflict ssh,int pkttype,va_list ap)

{
  size_t n;
  type_1 *var_7;
  int var_5;
  type_1 var_4;
  type_2 bn;
  char *__s;
  type_3 *ptr;
  type_4 *pkt;
  type_3 *var_10;
  size_t var_19;
  void *pvVar6;
  size_t var_11;
  type_3 *var_20;
  long var_12;
  int var_9;
  type_3 *argp;
  int arglen;
  int var_8;
  int var_1;
  type_1 *var_16;
  
  var_5 = *(int *)(var_1 + 0x14);
  pkt = (type_4 *)var_2(1,0x2c);
  pkt->data = (type_3 *)0x0;
  pkt->body = (type_3 *)0x0;
  pkt->length = 0xd;
  pkt->maxlen = 0x10d;
  var_10 = (type_3 *)var_3((void *)0x0,0x10d,1);
  pkt->data = var_10;
  var_10[pkt->length + -1] = (type_3)ssh;
  pkt->type = (int)ssh;
  pkt->body = pkt->data + pkt->length;
  pkt->downstream_id = 0;
  pkt->additional_log_text = (char *)0x0;
  var_16 = (type_1 *)pkttype;
switchD_0003861c_caseD_5:
  var_4 = *var_16;
  var_7 = var_16;
  do {
    if (var_4 == 0) {
      if (var_5 == *(int *)(var_1 + 0x14)) {
        return pkt;
      }
                    /* WARNING: Subroutine does not return */
      var_6();
    }
    var_16 = var_7 + 1;
    switch(var_4) {
    case 1:
      goto _L1161;
    case 2:
      var_4 = *var_16;
      var_8 = pkt->length;
      var_16 = var_7 + 2;
      var_10 = pkt->data;
      var_9 = var_8 + 1;
      pkt->length = var_9;
      if (pkt->maxlen < var_9) {
        var_19 = var_8 + 0x101;
        if (pkt->body == (type_3 *)0x0) {
          pkt->maxlen = var_19;
          var_10 = (type_3 *)var_3(var_10,var_19,1);
          var_9 = pkt->length;
          pkt->data = var_10;
        }
        else {
          pkt->maxlen = var_19;
          var_8 = (int)pkt->body - (int)var_10;
          var_10 = (type_3 *)var_3(var_10,var_19,1);
          var_9 = pkt->length;
          pkt->data = var_10;
          pkt->body = var_10 + var_8;
        }
      }
      var_10[var_9 + -1] = (type_3)var_4;
      goto switchD_0003861c_caseD_5;
    case 3:
      var_11 = var_7[2];
      pvVar6 = (void *)*var_16;
      var_10 = pkt->data;
      var_12 = pkt->length + var_11;
      pkt->length = var_12;
      if (pkt->maxlen < var_12) {
        var_19 = var_12 + 0x100;
        if (pkt->body == (type_3 *)0x0) {
          pkt->maxlen = var_19;
          var_10 = (type_3 *)var_3(var_10,var_19,1);
          var_12 = pkt->length;
          pkt->data = var_10;
        }
        else {
          var_9 = (int)pkt->body - (int)var_10;
          pkt->maxlen = var_19;
          var_10 = (type_3 *)var_3(var_10,var_19,1);
          var_12 = pkt->length;
          pkt->data = var_10;
          pkt->body = var_10 + var_9;
        }
      }
      var_13(var_10 + (var_12 - var_11),pvVar6,var_11);
      var_16 = var_7 + 3;
      goto switchD_0003861c_caseD_5;
    case 4:
      __s = (char *)*var_16;
      var_8 = pkt->length;
      var_10 = pkt->data;
      var_9 = var_8 + 4;
      pkt->length = var_9;
      if (pkt->maxlen < var_9) {
        var_19 = var_8 + 0x104;
        if (pkt->body == (type_3 *)0x0) {
          pkt->maxlen = var_19;
          var_10 = (type_3 *)var_3(var_10,var_19,1);
          var_9 = pkt->length;
          pkt->data = var_10;
        }
        else {
          pkt->maxlen = var_19;
          var_8 = (int)pkt->body - (int)var_10;
          var_10 = (type_3 *)var_3(var_10,var_19,1);
          var_9 = pkt->length;
          pkt->data = var_10;
          pkt->body = var_10 + var_8;
        }
      }
      var_10 = var_10 + var_9 + -4;
      var_10[0] = '\0';
      var_10[1] = '\0';
      var_10[2] = '\0';
      var_10[3] = '\0';
      pkt->savedpos = pkt->length;
      var_11 = var_14(__s);
      var_15(pkt,__s,var_11);
      var_16 = var_7 + 2;
      goto switchD_0003861c_caseD_5;
    case 5:
      bn = (type_2)*var_16;
      var_7 = var_7 + 2;
      var_19 = var_17(bn);
      pvVar6 = var_2(var_19,1);
      var_18(pvVar6,bn);
      var_12 = pkt->length + var_19;
      pkt->length = var_12;
      if (pkt->maxlen < var_12) {
        var_10 = pkt->body;
        n = var_12 + 0x100;
        ptr = pkt->data;
        if (var_10 == (type_3 *)0x0) {
          pkt->maxlen = n;
          var_20 = (type_3 *)var_3(ptr,n,1);
          var_12 = pkt->length;
          pkt->data = var_20;
        }
        else {
          pkt->maxlen = n;
          var_20 = (type_3 *)var_3(ptr,n,1);
          var_12 = pkt->length;
          pkt->data = var_20;
          pkt->body = var_20 + ((int)var_10 - (int)ptr);
        }
      }
      else {
        var_20 = pkt->data;
      }
      var_13(var_20 + (var_12 - var_19),pvVar6,var_19);
      var_21(pvVar6);
      var_4 = *var_7;
      break;
    default:
      goto switchD_0003861c_caseD_5;
    }
  } while( true );
_L1161:
  var_4 = *var_16;
  var_8 = pkt->length;
  var_16 = var_7 + 2;
  var_10 = pkt->data;
  var_9 = var_8 + 4;
  pkt->length = var_9;
  if (pkt->maxlen < var_9) {
    var_19 = var_8 + 0x104;
    if (pkt->body == (type_3 *)0x0) {
      pkt->maxlen = var_19;
      var_10 = (type_3 *)var_3(var_10,var_19,1);
      var_9 = pkt->length;
      pkt->data = var_10;
    }
    else {
      pkt->maxlen = var_19;
      var_8 = (int)pkt->body - (int)var_10;
      var_10 = (type_3 *)var_3(var_10,var_19,1);
      var_9 = pkt->length;
      pkt->data = var_10;
      pkt->body = var_10 + var_8;
    }
  }
  *(type_1 *)(var_10 + var_9 + -4) =
       var_4 >> 0x18 | (var_4 & 0xff0000) >> 8 | (var_4 & 0xff00) << 8 | var_4 << 0x18;
  goto switchD_0003861c_caseD_5;
}


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

/* WARNING: Function: __i686.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */

int * __regparm3 MASKED(int param_1,uint *param_2)

{
  uint *puVar1;
  int iVar2;
  uint uVar3;
  char *__s;
  int *piVar4;
  int iVar5;
  size_t sVar6;
  void *pvVar7;
  int iVar8;
  int iVar9;
  int iVar10;
  int in_GS_OFFSET;
  uint *local_34;
  
  iVar2 = *(int *)(in_GS_OFFSET + 0x14);
  piVar4 = (int *)FUN_0001db90(1,0x2c);
  piVar4[4] = 0;
  piVar4[5] = 0;
  *piVar4 = 0xd;
  piVar4[7] = 0x10d;
  iVar5 = FUN_0001dc50(0,0x10d,1);
  piVar4[4] = iVar5;
  *(char *)(iVar5 + -1 + *piVar4) = (char)param_1;
  piVar4[2] = param_1;
  piVar4[5] = *piVar4 + piVar4[4];
  piVar4[9] = 0;
  piVar4[10] = 0;
  local_34 = param_2;
LAB_000385f8:
  uVar3 = *local_34;
  puVar1 = local_34;
  do {
    if (uVar3 == 0) {
      if (iVar2 == *(int *)(in_GS_OFFSET + 0x14)) {
        return piVar4;
      }
                    /* WARNING: Subroutine does not return */
      FUN_0008d800();
    }
    local_34 = puVar1 + 1;
    switch(uVar3) {
    case 1:
      goto code_r0x000387f0;
    case 2:
      uVar3 = *local_34;
      iVar10 = *piVar4;
      local_34 = puVar1 + 2;
      iVar8 = piVar4[4];
      iVar5 = iVar10 + 1;
      *piVar4 = iVar5;
      if (piVar4[7] < iVar5) {
        iVar10 = iVar10 + 0x101;
        if (piVar4[5] == 0) {
          piVar4[7] = iVar10;
          iVar8 = FUN_0001dc50(iVar8,iVar10,1);
          iVar5 = *piVar4;
          piVar4[4] = iVar8;
        }
        else {
          piVar4[7] = iVar10;
          iVar9 = piVar4[5] - iVar8;
          iVar8 = FUN_0001dc50(iVar8,iVar10,1);
          iVar5 = *piVar4;
          piVar4[4] = iVar8;
          piVar4[5] = iVar9 + iVar8;
        }
      }
      *(char *)(iVar8 + -1 + iVar5) = (char)uVar3;
      goto LAB_000385f8;
    case 3:
      sVar6 = puVar1[2];
      pvVar7 = (void *)*local_34;
      iVar5 = piVar4[4];
      iVar10 = *piVar4 + sVar6;
      *piVar4 = iVar10;
      if (piVar4[7] < iVar10) {
        iVar10 = iVar10 + 0x100;
        if (piVar4[5] == 0) {
          piVar4[7] = iVar10;
          iVar5 = FUN_0001dc50(iVar5,iVar10,1);
          iVar10 = *piVar4;
          piVar4[4] = iVar5;
        }
        else {
          iVar8 = piVar4[5] - iVar5;
          piVar4[7] = iVar10;
          iVar5 = FUN_0001dc50(iVar5,iVar10,1);
          iVar10 = *piVar4;
          piVar4[4] = iVar5;
          piVar4[5] = iVar8 + iVar5;
        }
      }
      memcpy((void *)((iVar10 - sVar6) + iVar5),pvVar7,sVar6);
      local_34 = puVar1 + 3;
      goto LAB_000385f8;
    case 4:
      __s = (char *)*local_34;
      iVar10 = *piVar4;
      iVar8 = piVar4[4];
      iVar5 = iVar10 + 4;
      *piVar4 = iVar5;
      if (piVar4[7] < iVar5) {
        iVar10 = iVar10 + 0x104;
        if (piVar4[5] == 0) {
          piVar4[7] = iVar10;
          iVar8 = FUN_0001dc50(iVar8,iVar10,1);
          iVar5 = *piVar4;
          piVar4[4] = iVar8;
        }
        else {
          piVar4[7] = iVar10;
          iVar9 = piVar4[5] - iVar8;
          iVar8 = FUN_0001dc50(iVar8,iVar10,1);
          iVar5 = *piVar4;
          piVar4[4] = iVar8;
          piVar4[5] = iVar9 + iVar8;
        }
      }
      *(undefined4 *)(iVar8 + -4 + iVar5) = 0;
      piVar4[6] = *piVar4;
      strlen(__s);
      FUN_000378c0();
      local_34 = puVar1 + 2;
      goto LAB_000385f8;
    case 5:
      uVar3 = *local_34;
      puVar1 = puVar1 + 2;
      sVar6 = FUN_00056940(uVar3);
      pvVar7 = (void *)FUN_0001db90(sVar6,1);
      FUN_00056ac0(pvVar7,uVar3);
      iVar5 = *piVar4 + sVar6;
      *piVar4 = iVar5;
      if (piVar4[7] < iVar5) {
        iVar10 = piVar4[5];
        iVar5 = iVar5 + 0x100;
        iVar8 = piVar4[4];
        if (iVar10 == 0) {
          piVar4[7] = iVar5;
          iVar9 = FUN_0001dc50(iVar8,iVar5,1);
          iVar5 = *piVar4;
          piVar4[4] = iVar9;
        }
        else {
          piVar4[7] = iVar5;
          iVar9 = FUN_0001dc50(iVar8,iVar5,1);
          iVar5 = *piVar4;
          piVar4[4] = iVar9;
          piVar4[5] = (iVar10 - iVar8) + iVar9;
        }
      }
      else {
        iVar9 = piVar4[4];
      }
      memcpy((void *)((iVar5 - sVar6) + iVar9),pvVar7,sVar6);
      FUN_0001dd30(pvVar7);
      uVar3 = *puVar1;
      break;
    default:
      goto LAB_000385f8;
    }
  } while( true );
code_r0x000387f0:
  uVar3 = *local_34;
  iVar10 = *piVar4;
  local_34 = puVar1 + 2;
  iVar8 = piVar4[4];
  iVar5 = iVar10 + 4;
  *piVar4 = iVar5;
  if (piVar4[7] < iVar5) {
    iVar10 = iVar10 + 0x104;
    if (piVar4[5] == 0) {
      piVar4[7] = iVar10;
      iVar8 = FUN_0001dc50(iVar8,iVar10,1);
      iVar5 = *piVar4;
      piVar4[4] = iVar8;
    }
    else {
      piVar4[7] = iVar10;
      iVar9 = piVar4[5] - iVar8;
      iVar8 = FUN_0001dc50(iVar8,iVar10,1);
      iVar5 = *piVar4;
      piVar4[4] = iVar8;
      piVar4[5] = iVar9 + iVar8;
    }
  }
  *(uint *)(iVar8 + -4 + iVar5) =
       uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 | uVar3 << 0x18;
  goto LAB_000385f8;
}

