
/* DWARF original prototype: bool get_die_end(Output_reduced_debug_info_section * this, uchar * die,
   uchar * abbrev, uchar * * die_end, uchar * buffer_end, int address_size, bool is64) */

bool __thiscall
gold::Output_reduced_debug_info_section::get_die_end
          (Output_reduced_debug_info_section *this,uchar *die,uchar *abbrev,uchar **die_end,
          uchar *buffer_end,int address_size,bool is64)

{
  byte bVar1;
  bool bVar2;
  Valtype VVar3;
  Valtype VVar4;
  uint64_t uVar5;
  uint64_t uVar6;
  size_t sVar7;
  ulong uVar8;
  uint uVar9;
  byte *pbVar10;
  byte *local_50 [2];
  size_t LEB_size;
  
  local_50[0] = die;
switchD_0022373b_caseD_19:
  bVar1 = *abbrev;
  pbVar10 = abbrev + 1;
  if ((char)bVar1 < '\0') {
    uVar6 = read_unsigned_LEB_128_x(pbVar10,&LEB_size,bVar1);
    pbVar10 = abbrev + LEB_size;
  }
  else {
    LEB_size = 1;
    uVar6 = (uint64_t)bVar1;
  }
  bVar1 = *pbVar10;
  uVar9 = (uint)bVar1;
  abbrev = pbVar10 + 1;
  if ((char)bVar1 < '\0') {
    uVar5 = read_unsigned_LEB_128_x(abbrev,&LEB_size,bVar1);
    abbrev = pbVar10 + LEB_size;
    uVar9 = (uint)uVar5;
  }
  else {
    LEB_size = 1;
  }
  pbVar10 = local_50[0];
  bVar2 = uVar6 == 0 && uVar9 == 0;
  if (bVar2) {
    *die_end = local_50[0];
    return bVar2;
  }
  if (buffer_end <= local_50[0]) {
    return bVar2;
  }
  switch(uVar9) {
  default:
    goto switchD_0022373b_caseD_0;
  case 1:
  case 0x10:
    local_50[0] = local_50[0] + address_size;
    goto switchD_0022373b_caseD_19;
  case 3:
    VVar3 = read_from_pointer<16>(local_50);
    local_50[0] = local_50[0] + VVar3;
    goto switchD_0022373b_caseD_19;
  case 4:
    VVar4 = read_from_pointer<32>(local_50);
    local_50[0] = local_50[0] + VVar4;
    goto switchD_0022373b_caseD_19;
  case 5:
  case 0x12:
    local_50[0] = local_50[0] + 2;
    goto switchD_0022373b_caseD_19;
  case 6:
  case 0x13:
    local_50[0] = local_50[0] + 4;
    goto switchD_0022373b_caseD_19;
  case 7:
  case 0x14:
  case 0x20:
    local_50[0] = local_50[0] + 8;
    goto switchD_0022373b_caseD_19;
  case 8:
    sVar7 = strlen((char *)local_50[0]);
    local_50[0] = pbVar10 + sVar7 + 1;
    goto switchD_0022373b_caseD_19;
  case 9:
  case 0x18:
    bVar1 = *local_50[0];
    uVar8 = (ulong)bVar1;
    if ((char)bVar1 < '\0') {
      uVar8 = read_unsigned_LEB_128_x(local_50[0] + 1,&LEB_size,bVar1);
    }
    else {
      LEB_size = 1;
    }
    local_50[0] = local_50[0] + uVar8 + LEB_size;
    goto switchD_0022373b_caseD_19;
  case 10:
    local_50[0] = local_50[0] + (ulong)*local_50[0] + 1;
    goto switchD_0022373b_caseD_19;
  case 0xb:
  case 0xc:
  case 0x11:
    local_50[0] = local_50[0] + 1;
    goto switchD_0022373b_caseD_19;
  case 0xd:
    if ((char)*local_50[0] < '\0') {
      read_signed_LEB_128_x(local_50[0] + 1,&LEB_size,*local_50[0]);
      local_50[0] = local_50[0] + LEB_size;
      goto switchD_0022373b_caseD_19;
    }
    break;
  case 0xe:
  case 0x17:
    local_50[0] = local_50[0] + (-(ulong)!is64 & 0xfffffffffffffffc) + 8;
    goto switchD_0022373b_caseD_19;
  case 0xf:
  case 0x15:
    if ((char)*local_50[0] < '\0') {
      read_unsigned_LEB_128_x(local_50[0] + 1,&LEB_size,*local_50[0]);
      local_50[0] = local_50[0] + LEB_size;
      goto switchD_0022373b_caseD_19;
    }
    break;
  case 0x19:
    goto switchD_0022373b_caseD_19;
  }
  local_50[0] = local_50[0] + 1;
  LEB_size = 1;
  goto switchD_0022373b_caseD_19;
switchD_0022373b_caseD_0:
  return bVar2;
}



void FUN_00223690(undefined8 param_1,byte *param_2,byte *param_3,undefined8 *param_4,byte *param_5,
                 int param_6,char param_7)

{
  byte bVar1;
  ushort uVar2;
  uint uVar3;
  ulong uVar4;
  size_t sVar5;
  byte *pbVar6;
  byte *local_50 [2];
  long local_40 [2];
  
  local_50[0] = param_2;
switchD_0022373b_caseD_19:
  bVar1 = *param_3;
  pbVar6 = param_3 + 1;
  if ((char)bVar1 < '\0') {
    uVar4 = FUN_002817f0(pbVar6,local_40,bVar1);
    pbVar6 = param_3 + local_40[0];
  }
  else {
    local_40[0] = 1;
    uVar4 = (ulong)bVar1;
  }
  uVar3 = (uint)*pbVar6;
  param_3 = pbVar6 + 1;
  if ((char)*pbVar6 < '\0') {
    uVar3 = FUN_002817f0(param_3,local_40);
    param_3 = pbVar6 + local_40[0];
  }
  else {
    local_40[0] = 1;
  }
  pbVar6 = local_50[0];
  if (uVar4 == 0 && uVar3 == 0) {
    *param_4 = local_50[0];
    return;
  }
  if (param_5 <= local_50[0]) {
    return;
  }
  switch(uVar3) {
  default:
    goto switchD_0022373b_caseD_0;
  case 1:
  case 0x10:
    local_50[0] = local_50[0] + param_6;
    goto switchD_0022373b_caseD_19;
  case 3:
    uVar2 = FUN_00224760(local_50);
    local_50[0] = local_50[0] + uVar2;
    goto switchD_0022373b_caseD_19;
  case 4:
    uVar3 = FUN_002247d0(local_50);
    local_50[0] = local_50[0] + uVar3;
    goto switchD_0022373b_caseD_19;
  case 5:
  case 0x12:
    local_50[0] = local_50[0] + 2;
    goto switchD_0022373b_caseD_19;
  case 6:
  case 0x13:
    local_50[0] = local_50[0] + 4;
    goto switchD_0022373b_caseD_19;
  case 7:
  case 0x14:
  case 0x20:
    local_50[0] = local_50[0] + 8;
    goto switchD_0022373b_caseD_19;
  case 8:
    sVar5 = strlen((char *)local_50[0]);
    local_50[0] = pbVar6 + sVar5 + 1;
    goto switchD_0022373b_caseD_19;
  case 9:
  case 0x18:
    bVar1 = *local_50[0];
    uVar4 = (ulong)bVar1;
    if ((char)bVar1 < '\0') {
      uVar4 = FUN_002817f0(local_50[0] + 1,local_40,bVar1);
    }
    else {
      local_40[0] = 1;
    }
    local_50[0] = local_50[0] + uVar4 + local_40[0];
    goto switchD_0022373b_caseD_19;
  case 10:
    local_50[0] = local_50[0] + (ulong)*local_50[0] + 1;
    goto switchD_0022373b_caseD_19;
  case 0xb:
  case 0xc:
  case 0x11:
    local_50[0] = local_50[0] + 1;
    goto switchD_0022373b_caseD_19;
  case 0xd:
    if ((char)*local_50[0] < '\0') {
      FUN_00281860(local_50[0] + 1,local_40,*local_50[0]);
      local_50[0] = local_50[0] + local_40[0];
      goto switchD_0022373b_caseD_19;
    }
    break;
  case 0xe:
  case 0x17:
    local_50[0] = local_50[0] + (-(ulong)(param_7 == '\0') & 0xfffffffffffffffc) + 8;
    goto switchD_0022373b_caseD_19;
  case 0xf:
  case 0x15:
    if ((char)*local_50[0] < '\0') {
      FUN_002817f0(local_50[0] + 1,local_40,*local_50[0]);
      local_50[0] = local_50[0] + local_40[0];
      goto switchD_0022373b_caseD_19;
    }
    break;
  case 0x19:
    goto switchD_0022373b_caseD_19;
  }
  local_50[0] = local_50[0] + 1;
  local_40[0] = 1;
  goto switchD_0022373b_caseD_19;
switchD_0022373b_caseD_0:
  return;
}


PUSH R15
LEA R15,[0x34d630]
PUSH R14
MOV R14,RDX
PUSH R13
PUSH R12
PUSH RBP
PUSH RBX
MOV RBX,R8
SUB RSP,0x48
LEA RAX,[RSP + 0x28]
MOV qword ptr [RSP + 0x28],RSI
LEA R12,[RSP + 0x38]
CMP byte ptr [RSP + 0x80],0x1
MOV qword ptr [RSP + 0x10],RAX
MOVSXD RAX,R9D
SBB RBP,RBP
MOV qword ptr [RSP + 0x20],RCX
AND RBP,-0x4
MOV qword ptr [RSP + 0x18],RAX
ADD RBP,0x8
NOP
MOVZX ECX,byte ptr [R14]
LEA R9,[R14 + 0x1]
TEST CL,CL
JS 0x00223788
MOV qword ptr [RSP + 0x38],0x1
MOVZX R13D,CL
MOVZX EDX,byte ptr [R9]
LEA R14,[R9 + 0x1]
TEST DL,DL
JS 0x00223760
MOV qword ptr [RSP + 0x38],0x1
TEST R13,R13
MOV RCX,qword ptr [RSP + 0x28]
SETZ AL
TEST EDX,EDX
SETZ SIL
AND AL,SIL
JNZ 0x00223740
CMP RBX,RCX
JBE 0x00223748
CMP EDX,0x20
JA 0x00223748
MOV EDX,EDX
MOVSXD RDX,dword ptr [R15 + RDX*0x4]
ADD RDX,R15
JMP RDX
MOV RBX,qword ptr [RSP + 0x20]
MOV qword ptr [RBX],RCX
ADD RSP,0x48
POP RBX
POP RBP
POP R12
POP R13
POP R14
POP R15
RET
MOV RDI,R14
MOV RSI,R12
MOV qword ptr [RSP + 0x8],R9
CALL 0x002817f0
MOV R9,qword ptr [RSP + 0x8]
ADD R9,qword ptr [RSP + 0x38]
MOV RDX,RAX
MOV R14,R9
JMP 0x00223712
MOV RDI,R9
MOVZX EDX,CL
MOV RSI,R12
CALL 0x002817f0
ADD R14,qword ptr [RSP + 0x38]
MOV R13,RAX
MOV R9,R14
JMP 0x002236fd
MOVZX EAX,byte ptr [RCX]
LEA RDI,[RCX + 0x1]
TEST AL,AL
JS 0x00223910
MOV qword ptr [RSP + 0x38],0x1
MOV qword ptr [RSP + 0x28],RDI
JMP 0x002236e0
ADD RCX,RBP
MOV qword ptr [RSP + 0x28],RCX
JMP 0x002236e0
MOVZX EAX,byte ptr [RCX]
LEA RDI,[RCX + 0x1]
TEST AL,AL
JNS 0x002237bf
MOVZX EDX,AL
MOV RSI,R12
CALL 0x00281860
MOV RDI,qword ptr [RSP + 0x38]
ADD RDI,qword ptr [RSP + 0x28]
JMP 0x002237c8
ADD RCX,0x1
MOV qword ptr [RSP + 0x28],RCX
JMP 0x002236e0
MOVZX EAX,byte ptr [RCX]
LEA RAX,[RCX + RAX*0x1 + 0x1]
MOV qword ptr [RSP + 0x28],RAX
JMP 0x002236e0
MOVZX EAX,byte ptr [RCX]
TEST AL,AL
JS 0x00223930
MOV qword ptr [RSP + 0x38],0x1
MOV EDX,0x1
ADD RAX,RDX
ADD RCX,RAX
MOV qword ptr [RSP + 0x28],RCX
JMP 0x002236e0
MOV RDI,RCX
MOV qword ptr [RSP + 0x8],RCX
CALL 0x00144490
MOV RCX,qword ptr [RSP + 0x8]
LEA RAX,[RCX + RAX*0x1 + 0x1]
MOV qword ptr [RSP + 0x28],RAX
JMP 0x002236e0
ADD RCX,0x8
MOV qword ptr [RSP + 0x28],RCX
JMP 0x002236e0
ADD RCX,0x4
MOV qword ptr [RSP + 0x28],RCX
JMP 0x002236e0
ADD RCX,0x2
MOV qword ptr [RSP + 0x28],RCX
JMP 0x002236e0
MOV RDI,qword ptr [RSP + 0x10]
CALL 0x002247d0
MOV EAX,EAX
ADD qword ptr [RSP + 0x28],RAX
JMP 0x002236e0
MOV RDI,qword ptr [RSP + 0x10]
CALL 0x00224760
MOVZX EAX,AX
ADD qword ptr [RSP + 0x28],RAX
JMP 0x002236e0
ADD RCX,qword ptr [RSP + 0x18]
MOV qword ptr [RSP + 0x28],RCX
JMP 0x002236e0
MOVZX EDX,AL
MOV RSI,R12
CALL 0x002817f0
MOV RDI,qword ptr [RSP + 0x38]
ADD RDI,qword ptr [RSP + 0x28]
JMP 0x002237c8
MOVZX EDX,AL
LEA RDI,[RCX + 0x1]
MOV RSI,R12
CALL 0x002817f0
MOV RCX,qword ptr [RSP + 0x28]
MOV RDX,qword ptr [RSP + 0x38]
JMP 0x00223851
(translation_unit "void FUN_00223690(undefined8 param_1,byte *param_2,byte *param_3,undefined8 *param_4,byte *param_5,\n                 int param_6,char param_7)\n\n{\n  byte bVar1;\n  ushort uVar2;\n  uint uVar3;\n  ulong uVar4;\n  size_t sVar5;\n  byte *pbVar6;\n  byte *local_50 [2];\n  long local_40 [2];\n  \n  local_50[0] = param_2;\nswitchD_0022373b_caseD_19:\n  bVar1 = *param_3;\n  pbVar6 = param_3 + 1;\n  if ((char)bVar1 < '\0') {\n    uVar4 = FUN_002817f0(pbVar6,local_40,bVar1);\n    pbVar6 = param_3 + local_40[0];\n  }\n  else {\n    local_40[0] = 1;\n    uVar4 = (ulong)bVar1;\n  }\n  uVar3 = (uint)*pbVar6;\n  param_3 = pbVar6 + 1;\n  if ((char)*pbVar6 < '\0') {\n    uVar3 = FUN_002817f0(param_3,local_40);\n    param_3 = pbVar6 + local_40[0];\n  }\n  else {\n    local_40[0] = 1;\n  }\n  pbVar6 = local_50[0];\n  if (uVar4 == 0 && uVar3 == 0) {\n    *param_4 = local_50[0];\n    return;\n  }\n  if (param_5 <= local_50[0]) {\n    return;\n  }\n  switch(uVar3) {\n  default:\n    goto switchD_0022373b_caseD_0;\n  case 1:\n  case 0x10:\n    local_50[0] = local_50[0] + param_6;\n    goto switchD_0022373b_caseD_19;\n  case 3:\n    uVar2 = FUN_00224760(local_50);\n    local_50[0] = local_50[0] + uVar2;\n    goto switchD_0022373b_caseD_19;\n  case 4:\n    uVar3 = FUN_002247d0(local_50);\n    local_50[0] = local_50[0] + uVar3;\n    goto switchD_0022373b_caseD_19;\n  case 5:\n  case 0x12:\n    local_50[0] = local_50[0] + 2;\n    goto switchD_0022373b_caseD_19;\n  case 6:\n  case 0x13:\n    local_50[0] = local_50[0] + 4;\n    goto switchD_0022373b_caseD_19;\n  case 7:\n  case 0x14:\n  case 0x20:\n    local_50[0] = local_50[0] + 8;\n    goto switchD_0022373b_caseD_19;\n  case 8:\n    sVar5 = strlen((char *)local_50[0]);\n    local_50[0] = pbVar6 + sVar5 + 1;\n    goto switchD_0022373b_caseD_19;\n  case 9:\n  case 0x18:\n    bVar1 = *local_50[0];\n    uVar4 = (ulong)bVar1;\n    if ((char)bVar1 < '\0') {\n      uVar4 = FUN_002817f0(local_50[0] + 1,local_40,bVar1);\n    }\n    else {\n      local_40[0] = 1;\n    }\n    local_50[0] = local_50[0] + uVar4 + local_40[0];\n    goto switchD_0022373b_caseD_19;\n  case 10:\n    local_50[0] = local_50[0] + (ulong)*local_50[0] + 1;\n    goto switchD_0022373b_caseD_19;\n  case 0xb:\n  case 0xc:\n  case 0x11:\n    local_50[0] = local_50[0] + 1;\n    goto switchD_0022373b_caseD_19;\n  case 0xd:\n    if ((char)*local_50[0] < '\0') {\n      FUN_00281860(local_50[0] + 1,local_40,*local_50[0]);\n      local_50[0] = local_50[0] + local_40[0];\n      goto switchD_0022373b_caseD_19;\n    }\n    break;\n  case 0xe:\n  case 0x17:\n    local_50[0] = local_50[0] + (-(ulong)(param_7 == '\0') & 0xfffffffffffffffc) + 8;\n    goto switchD_0022373b_caseD_19;\n  case 0xf:\n  case 0x15:\n    if ((char)*local_50[0] < '\0') {\n      FUN_002817f0(local_50[0] + 1,local_40,*local_50[0]);\n      local_50[0] = local_50[0] + local_40[0];\n      goto switchD_0022373b_caseD_19;\n    }\n    break;\n  case 0x19:\n    goto switchD_0022373b_caseD_19;\n  }\n  local_50[0] = local_50[0] + 1;\n  local_40[0] = 1;\n  goto switchD_0022373b_caseD_19;\nswitchD_0022373b_caseD_0:\n  return;\n}\n\n" (function_definition "void FUN_00223690(undefined8 param_1,byte *param_2,byte *param_3,undefined8 *param_4,byte *param_5,\n                 int param_6,char param_7)\n\n{\n  byte bVar1;\n  ushort uVar2;\n  uint uVar3;\n  ulong uVar4;\n  size_t sVar5;\n  byte *pbVar6;\n  byte *local_50 [2];\n  long local_40 [2];\n  \n  local_50[0] = param_2;\nswitchD_0022373b_caseD_19:\n  bVar1 = *param_3;\n  pbVar6 = param_3 + 1;\n  if ((char)bVar1 < '\0') {\n    uVar4 = FUN_002817f0(pbVar6,local_40,bVar1);\n    pbVar6 = param_3 + local_40[0];\n  }\n  else {\n    local_40[0] = 1;\n    uVar4 = (ulong)bVar1;\n  }\n  uVar3 = (uint)*pbVar6;\n  param_3 = pbVar6 + 1;\n  if ((char)*pbVar6 < '\0') {\n    uVar3 = FUN_002817f0(param_3,local_40);\n    param_3 = pbVar6 + local_40[0];\n  }\n  else {\n    local_40[0] = 1;\n  }\n  pbVar6 = local_50[0];\n  if (uVar4 == 0 && uVar3 == 0) {\n    *param_4 = local_50[0];\n    return;\n  }\n  if (param_5 <= local_50[0]) {\n    return;\n  }\n  switch(uVar3) {\n  default:\n    goto switchD_0022373b_caseD_0;\n  case 1:\n  case 0x10:\n    local_50[0] = local_50[0] + param_6;\n    goto switchD_0022373b_caseD_19;\n  case 3:\n    uVar2 = FUN_00224760(local_50);\n    local_50[0] = local_50[0] + uVar2;\n    goto switchD_0022373b_caseD_19;\n  case 4:\n    uVar3 = FUN_002247d0(local_50);\n    local_50[0] = local_50[0] + uVar3;\n    goto switchD_0022373b_caseD_19;\n  case 5:\n  case 0x12:\n    local_50[0] = local_50[0] + 2;\n    goto switchD_0022373b_caseD_19;\n  case 6:\n  case 0x13:\n    local_50[0] = local_50[0] + 4;\n    goto switchD_0022373b_caseD_19;\n  case 7:\n  case 0x14:\n  case 0x20:\n    local_50[0] = local_50[0] + 8;\n    goto switchD_0022373b_caseD_19;\n  case 8:\n    sVar5 = strlen((char *)local_50[0]);\n    local_50[0] = pbVar6 + sVar5 + 1;\n    goto switchD_0022373b_caseD_19;\n  case 9:\n  case 0x18:\n    bVar1 = *local_50[0];\n    uVar4 = (ulong)bVar1;\n    if ((char)bVar1 < '\0') {\n      uVar4 = FUN_002817f0(local_50[0] + 1,local_40,bVar1);\n    }\n    else {\n      local_40[0] = 1;\n    }\n    local_50[0] = local_50[0] + uVar4 + local_40[0];\n    goto switchD_0022373b_caseD_19;\n  case 10:\n    local_50[0] = local_50[0] + (ulong)*local_50[0] + 1;\n    goto switchD_0022373b_caseD_19;\n  case 0xb:\n  case 0xc:\n  case 0x11:\n    local_50[0] = local_50[0] + 1;\n    goto switchD_0022373b_caseD_19;\n  case 0xd:\n    if ((char)*local_50[0] < '\0') {\n      FUN_00281860(local_50[0] + 1,local_40,*local_50[0]);\n      local_50[0] = local_50[0] + local_40[0];\n      goto switchD_0022373b_caseD_19;\n    }\n    break;\n  case 0xe:\n  case 0x17:\n    local_50[0] = local_50[0] + (-(ulong)(param_7 == '\0') & 0xfffffffffffffffc) + 8;\n    goto switchD_0022373b_caseD_19;\n  case 0xf:\n  case 0x15:\n    if ((char)*local_50[0] < '\0') {\n      FUN_002817f0(local_50[0] + 1,local_40,*local_50[0]);\n      local_50[0] = local_50[0] + local_40[0];\n      goto switchD_0022373b_caseD_19;\n    }\n    break;\n  case 0x19:\n    goto switchD_0022373b_caseD_19;\n  }\n  local_50[0] = local_50[0] + 1;\n  local_40[0] = 1;\n  goto switchD_0022373b_caseD_19;\nswitchD_0022373b_caseD_0:\n  return;\n}" primitive_type (function_declarator "FUN_00223690(undefined8 param_1,byte *param_2,byte *param_3,undefined8 *param_4,byte *param_5,\n                 int param_6,char param_7)" identifier (parameter_list "(undefined8 param_1,byte *param_2,byte *param_3,undefined8 *param_4,byte *param_5,\n                 int param_6,char param_7)" ( (parameter_declaration "undefined8 param_1" type_identifier identifier) , (parameter_declaration "byte *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "byte *param_3" type_identifier (pointer_declarator "*param_3" * identifier)) , (parameter_declaration "undefined8 *param_4" type_identifier (pointer_declarator "*param_4" * identifier)) , (parameter_declaration "byte *param_5" type_identifier (pointer_declarator "*param_5" * identifier)) , (parameter_declaration "int param_6" primitive_type identifier) , (parameter_declaration "char param_7" primitive_type identifier) ))) (compound_statement "{\n  byte bVar1;\n  ushort uVar2;\n  uint uVar3;\n  ulong uVar4;\n  size_t sVar5;\n  byte *pbVar6;\n  byte *local_50 [2];\n  long local_40 [2];\n  \n  local_50[0] = param_2;\nswitchD_0022373b_caseD_19:\n  bVar1 = *param_3;\n  pbVar6 = param_3 + 1;\n  if ((char)bVar1 < '\0') {\n    uVar4 = FUN_002817f0(pbVar6,local_40,bVar1);\n    pbVar6 = param_3 + local_40[0];\n  }\n  else {\n    local_40[0] = 1;\n    uVar4 = (ulong)bVar1;\n  }\n  uVar3 = (uint)*pbVar6;\n  param_3 = pbVar6 + 1;\n  if ((char)*pbVar6 < '\0') {\n    uVar3 = FUN_002817f0(param_3,local_40);\n    param_3 = pbVar6 + local_40[0];\n  }\n  else {\n    local_40[0] = 1;\n  }\n  pbVar6 = local_50[0];\n  if (uVar4 == 0 && uVar3 == 0) {\n    *param_4 = local_50[0];\n    return;\n  }\n  if (param_5 <= local_50[0]) {\n    return;\n  }\n  switch(uVar3) {\n  default:\n    goto switchD_0022373b_caseD_0;\n  case 1:\n  case 0x10:\n    local_50[0] = local_50[0] + param_6;\n    goto switchD_0022373b_caseD_19;\n  case 3:\n    uVar2 = FUN_00224760(local_50);\n    local_50[0] = local_50[0] + uVar2;\n    goto switchD_0022373b_caseD_19;\n  case 4:\n    uVar3 = FUN_002247d0(local_50);\n    local_50[0] = local_50[0] + uVar3;\n    goto switchD_0022373b_caseD_19;\n  case 5:\n  case 0x12:\n    local_50[0] = local_50[0] + 2;\n    goto switchD_0022373b_caseD_19;\n  case 6:\n  case 0x13:\n    local_50[0] = local_50[0] + 4;\n    goto switchD_0022373b_caseD_19;\n  case 7:\n  case 0x14:\n  case 0x20:\n    local_50[0] = local_50[0] + 8;\n    goto switchD_0022373b_caseD_19;\n  case 8:\n    sVar5 = strlen((char *)local_50[0]);\n    local_50[0] = pbVar6 + sVar5 + 1;\n    goto switchD_0022373b_caseD_19;\n  case 9:\n  case 0x18:\n    bVar1 = *local_50[0];\n    uVar4 = (ulong)bVar1;\n    if ((char)bVar1 < '\0') {\n      uVar4 = FUN_002817f0(local_50[0] + 1,local_40,bVar1);\n    }\n    else {\n      local_40[0] = 1;\n    }\n    local_50[0] = local_50[0] + uVar4 + local_40[0];\n    goto switchD_0022373b_caseD_19;\n  case 10:\n    local_50[0] = local_50[0] + (ulong)*local_50[0] + 1;\n    goto switchD_0022373b_caseD_19;\n  case 0xb:\n  case 0xc:\n  case 0x11:\n    local_50[0] = local_50[0] + 1;\n    goto switchD_0022373b_caseD_19;\n  case 0xd:\n    if ((char)*local_50[0] < '\0') {\n      FUN_00281860(local_50[0] + 1,local_40,*local_50[0]);\n      local_50[0] = local_50[0] + local_40[0];\n      goto switchD_0022373b_caseD_19;\n    }\n    break;\n  case 0xe:\n  case 0x17:\n    local_50[0] = local_50[0] + (-(ulong)(param_7 == '\0') & 0xfffffffffffffffc) + 8;\n    goto switchD_0022373b_caseD_19;\n  case 0xf:\n  case 0x15:\n    if ((char)*local_50[0] < '\0') {\n      FUN_002817f0(local_50[0] + 1,local_40,*local_50[0]);\n      local_50[0] = local_50[0] + local_40[0];\n      goto switchD_0022373b_caseD_19;\n    }\n    break;\n  case 0x19:\n    goto switchD_0022373b_caseD_19;\n  }\n  local_50[0] = local_50[0] + 1;\n  local_40[0] = 1;\n  goto switchD_0022373b_caseD_19;\nswitchD_0022373b_caseD_0:\n  return;\n}" { (declaration "byte bVar1;" type_identifier identifier ;) (declaration "ushort uVar2;" type_identifier identifier ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "ulong uVar4;" type_identifier identifier ;) (declaration "size_t sVar5;" primitive_type identifier ;) (declaration "byte *pbVar6;" type_identifier (pointer_declarator "*pbVar6" * identifier) ;) (declaration "byte *local_50 [2];" type_identifier (pointer_declarator "*local_50 [2]" * (array_declarator "local_50 [2]" identifier [ number_literal ])) ;) (declaration "long local_40 [2];" (sized_type_specifier "long" long) (array_declarator "local_40 [2]" identifier [ number_literal ]) ;) (expression_statement "local_50[0] = param_2;" (assignment_expression "local_50[0] = param_2" (subscript_expression "local_50[0]" identifier [ number_literal ]) = identifier) ;) (labeled_statement "switchD_0022373b_caseD_19:\n  bVar1 = *param_3;" statement_identifier : (expression_statement "bVar1 = *param_3;" (assignment_expression "bVar1 = *param_3" identifier = (pointer_expression "*param_3" * identifier)) ;)) (expression_statement "pbVar6 = param_3 + 1;" (assignment_expression "pbVar6 = param_3 + 1" identifier = (binary_expression "param_3 + 1" identifier + number_literal)) ;) (if_statement "if ((char)bVar1 < '\0') {\n    uVar4 = FUN_002817f0(pbVar6,local_40,bVar1);\n    pbVar6 = param_3 + local_40[0];\n  }\n  else {\n    local_40[0] = 1;\n    uVar4 = (ulong)bVar1;\n  }" if (parenthesized_expression "((char)bVar1 < '\0')" ( (binary_expression "(char)bVar1 < '\0'" (cast_expression "(char)bVar1" ( (type_descriptor "char" primitive_type) ) identifier) < (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    uVar4 = FUN_002817f0(pbVar6,local_40,bVar1);\n    pbVar6 = param_3 + local_40[0];\n  }" { (expression_statement "uVar4 = FUN_002817f0(pbVar6,local_40,bVar1);" (assignment_expression "uVar4 = FUN_002817f0(pbVar6,local_40,bVar1)" identifier = (call_expression "FUN_002817f0(pbVar6,local_40,bVar1)" identifier (argument_list "(pbVar6,local_40,bVar1)" ( identifier , identifier , identifier )))) ;) (expression_statement "pbVar6 = param_3 + local_40[0];" (assignment_expression "pbVar6 = param_3 + local_40[0]" identifier = (binary_expression "param_3 + local_40[0]" identifier + (subscript_expression "local_40[0]" identifier [ number_literal ]))) ;) }) (else_clause "else {\n    local_40[0] = 1;\n    uVar4 = (ulong)bVar1;\n  }" else (compound_statement "{\n    local_40[0] = 1;\n    uVar4 = (ulong)bVar1;\n  }" { (expression_statement "local_40[0] = 1;" (assignment_expression "local_40[0] = 1" (subscript_expression "local_40[0]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "uVar4 = (ulong)bVar1;" (assignment_expression "uVar4 = (ulong)bVar1" identifier = (cast_expression "(ulong)bVar1" ( (type_descriptor "ulong" type_identifier) ) identifier)) ;) }))) (expression_statement "uVar3 = (uint)*pbVar6;" (assignment_expression "uVar3 = (uint)*pbVar6" identifier = (binary_expression "(uint)*pbVar6" (parenthesized_expression "(uint)" ( identifier )) * identifier)) ;) (expression_statement "param_3 = pbVar6 + 1;" (assignment_expression "param_3 = pbVar6 + 1" identifier = (binary_expression "pbVar6 + 1" identifier + number_literal)) ;) (if_statement "if ((char)*pbVar6 < '\0') {\n    uVar3 = FUN_002817f0(param_3,local_40);\n    param_3 = pbVar6 + local_40[0];\n  }\n  else {\n    local_40[0] = 1;\n  }" if (parenthesized_expression "((char)*pbVar6 < '\0')" ( (binary_expression "(char)*pbVar6 < '\0'" (cast_expression "(char)*pbVar6" ( (type_descriptor "char" primitive_type) ) (pointer_expression "*pbVar6" * identifier)) < (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    uVar3 = FUN_002817f0(param_3,local_40);\n    param_3 = pbVar6 + local_40[0];\n  }" { (expression_statement "uVar3 = FUN_002817f0(param_3,local_40);" (assignment_expression "uVar3 = FUN_002817f0(param_3,local_40)" identifier = (call_expression "FUN_002817f0(param_3,local_40)" identifier (argument_list "(param_3,local_40)" ( identifier , identifier )))) ;) (expression_statement "param_3 = pbVar6 + local_40[0];" (assignment_expression "param_3 = pbVar6 + local_40[0]" identifier = (binary_expression "pbVar6 + local_40[0]" identifier + (subscript_expression "local_40[0]" identifier [ number_literal ]))) ;) }) (else_clause "else {\n    local_40[0] = 1;\n  }" else (compound_statement "{\n    local_40[0] = 1;\n  }" { (expression_statement "local_40[0] = 1;" (assignment_expression "local_40[0] = 1" (subscript_expression "local_40[0]" identifier [ number_literal ]) = number_literal) ;) }))) (expression_statement "pbVar6 = local_50[0];" (assignment_expression "pbVar6 = local_50[0]" identifier = (subscript_expression "local_50[0]" identifier [ number_literal ])) ;) (if_statement "if (uVar4 == 0 && uVar3 == 0) {\n    *param_4 = local_50[0];\n    return;\n  }" if (parenthesized_expression "(uVar4 == 0 && uVar3 == 0)" ( (binary_expression "uVar4 == 0 && uVar3 == 0" (binary_expression "uVar4 == 0" identifier == number_literal) && (binary_expression "uVar3 == 0" identifier == number_literal)) )) (compound_statement "{\n    *param_4 = local_50[0];\n    return;\n  }" { (expression_statement "*param_4 = local_50[0];" (assignment_expression "*param_4 = local_50[0]" (pointer_expression "*param_4" * identifier) = (subscript_expression "local_50[0]" identifier [ number_literal ])) ;) (return_statement "return;" return ;) })) (if_statement "if (param_5 <= local_50[0]) {\n    return;\n  }" if (parenthesized_expression "(param_5 <= local_50[0])" ( (binary_expression "param_5 <= local_50[0]" identifier <= (subscript_expression "local_50[0]" identifier [ number_literal ])) )) (compound_statement "{\n    return;\n  }" { (return_statement "return;" return ;) })) (switch_statement "switch(uVar3) {\n  default:\n    goto switchD_0022373b_caseD_0;\n  case 1:\n  case 0x10:\n    local_50[0] = local_50[0] + param_6;\n    goto switchD_0022373b_caseD_19;\n  case 3:\n    uVar2 = FUN_00224760(local_50);\n    local_50[0] = local_50[0] + uVar2;\n    goto switchD_0022373b_caseD_19;\n  case 4:\n    uVar3 = FUN_002247d0(local_50);\n    local_50[0] = local_50[0] + uVar3;\n    goto switchD_0022373b_caseD_19;\n  case 5:\n  case 0x12:\n    local_50[0] = local_50[0] + 2;\n    goto switchD_0022373b_caseD_19;\n  case 6:\n  case 0x13:\n    local_50[0] = local_50[0] + 4;\n    goto switchD_0022373b_caseD_19;\n  case 7:\n  case 0x14:\n  case 0x20:\n    local_50[0] = local_50[0] + 8;\n    goto switchD_0022373b_caseD_19;\n  case 8:\n    sVar5 = strlen((char *)local_50[0]);\n    local_50[0] = pbVar6 + sVar5 + 1;\n    goto switchD_0022373b_caseD_19;\n  case 9:\n  case 0x18:\n    bVar1 = *local_50[0];\n    uVar4 = (ulong)bVar1;\n    if ((char)bVar1 < '\0') {\n      uVar4 = FUN_002817f0(local_50[0] + 1,local_40,bVar1);\n    }\n    else {\n      local_40[0] = 1;\n    }\n    local_50[0] = local_50[0] + uVar4 + local_40[0];\n    goto switchD_0022373b_caseD_19;\n  case 10:\n    local_50[0] = local_50[0] + (ulong)*local_50[0] + 1;\n    goto switchD_0022373b_caseD_19;\n  case 0xb:\n  case 0xc:\n  case 0x11:\n    local_50[0] = local_50[0] + 1;\n    goto switchD_0022373b_caseD_19;\n  case 0xd:\n    if ((char)*local_50[0] < '\0') {\n      FUN_00281860(local_50[0] + 1,local_40,*local_50[0]);\n      local_50[0] = local_50[0] + local_40[0];\n      goto switchD_0022373b_caseD_19;\n    }\n    break;\n  case 0xe:\n  case 0x17:\n    local_50[0] = local_50[0] + (-(ulong)(param_7 == '\0') & 0xfffffffffffffffc) + 8;\n    goto switchD_0022373b_caseD_19;\n  case 0xf:\n  case 0x15:\n    if ((char)*local_50[0] < '\0') {\n      FUN_002817f0(local_50[0] + 1,local_40,*local_50[0]);\n      local_50[0] = local_50[0] + local_40[0];\n      goto switchD_0022373b_caseD_19;\n    }\n    break;\n  case 0x19:\n    goto switchD_0022373b_caseD_19;\n  }" switch (parenthesized_expression "(uVar3)" ( identifier )) (compound_statement "{\n  default:\n    goto switchD_0022373b_caseD_0;\n  case 1:\n  case 0x10:\n    local_50[0] = local_50[0] + param_6;\n    goto switchD_0022373b_caseD_19;\n  case 3:\n    uVar2 = FUN_00224760(local_50);\n    local_50[0] = local_50[0] + uVar2;\n    goto switchD_0022373b_caseD_19;\n  case 4:\n    uVar3 = FUN_002247d0(local_50);\n    local_50[0] = local_50[0] + uVar3;\n    goto switchD_0022373b_caseD_19;\n  case 5:\n  case 0x12:\n    local_50[0] = local_50[0] + 2;\n    goto switchD_0022373b_caseD_19;\n  case 6:\n  case 0x13:\n    local_50[0] = local_50[0] + 4;\n    goto switchD_0022373b_caseD_19;\n  case 7:\n  case 0x14:\n  case 0x20:\n    local_50[0] = local_50[0] + 8;\n    goto switchD_0022373b_caseD_19;\n  case 8:\n    sVar5 = strlen((char *)local_50[0]);\n    local_50[0] = pbVar6 + sVar5 + 1;\n    goto switchD_0022373b_caseD_19;\n  case 9:\n  case 0x18:\n    bVar1 = *local_50[0];\n    uVar4 = (ulong)bVar1;\n    if ((char)bVar1 < '\0') {\n      uVar4 = FUN_002817f0(local_50[0] + 1,local_40,bVar1);\n    }\n    else {\n      local_40[0] = 1;\n    }\n    local_50[0] = local_50[0] + uVar4 + local_40[0];\n    goto switchD_0022373b_caseD_19;\n  case 10:\n    local_50[0] = local_50[0] + (ulong)*local_50[0] + 1;\n    goto switchD_0022373b_caseD_19;\n  case 0xb:\n  case 0xc:\n  case 0x11:\n    local_50[0] = local_50[0] + 1;\n    goto switchD_0022373b_caseD_19;\n  case 0xd:\n    if ((char)*local_50[0] < '\0') {\n      FUN_00281860(local_50[0] + 1,local_40,*local_50[0]);\n      local_50[0] = local_50[0] + local_40[0];\n      goto switchD_0022373b_caseD_19;\n    }\n    break;\n  case 0xe:\n  case 0x17:\n    local_50[0] = local_50[0] + (-(ulong)(param_7 == '\0') & 0xfffffffffffffffc) + 8;\n    goto switchD_0022373b_caseD_19;\n  case 0xf:\n  case 0x15:\n    if ((char)*local_50[0] < '\0') {\n      FUN_002817f0(local_50[0] + 1,local_40,*local_50[0]);\n      local_50[0] = local_50[0] + local_40[0];\n      goto switchD_0022373b_caseD_19;\n    }\n    break;\n  case 0x19:\n    goto switchD_0022373b_caseD_19;\n  }" { (case_statement "default:\n    goto switchD_0022373b_caseD_0;" default : (goto_statement "goto switchD_0022373b_caseD_0;" goto statement_identifier ;)) (case_statement "case 1:" case number_literal :) (case_statement "case 0x10:\n    local_50[0] = local_50[0] + param_6;\n    goto switchD_0022373b_caseD_19;" case number_literal : (expression_statement "local_50[0] = local_50[0] + param_6;" (assignment_expression "local_50[0] = local_50[0] + param_6" (subscript_expression "local_50[0]" identifier [ number_literal ]) = (binary_expression "local_50[0] + param_6" (subscript_expression "local_50[0]" identifier [ number_literal ]) + identifier)) ;) (goto_statement "goto switchD_0022373b_caseD_19;" goto statement_identifier ;)) (case_statement "case 3:\n    uVar2 = FUN_00224760(local_50);\n    local_50[0] = local_50[0] + uVar2;\n    goto switchD_0022373b_caseD_19;" case number_literal : (expression_statement "uVar2 = FUN_00224760(local_50);" (assignment_expression "uVar2 = FUN_00224760(local_50)" identifier = (call_expression "FUN_00224760(local_50)" identifier (argument_list "(local_50)" ( identifier )))) ;) (expression_statement "local_50[0] = local_50[0] + uVar2;" (assignment_expression "local_50[0] = local_50[0] + uVar2" (subscript_expression "local_50[0]" identifier [ number_literal ]) = (binary_expression "local_50[0] + uVar2" (subscript_expression "local_50[0]" identifier [ number_literal ]) + identifier)) ;) (goto_statement "goto switchD_0022373b_caseD_19;" goto statement_identifier ;)) (case_statement "case 4:\n    uVar3 = FUN_002247d0(local_50);\n    local_50[0] = local_50[0] + uVar3;\n    goto switchD_0022373b_caseD_19;" case number_literal : (expression_statement "uVar3 = FUN_002247d0(local_50);" (assignment_expression "uVar3 = FUN_002247d0(local_50)" identifier = (call_expression "FUN_002247d0(local_50)" identifier (argument_list "(local_50)" ( identifier )))) ;) (expression_statement "local_50[0] = local_50[0] + uVar3;" (assignment_expression "local_50[0] = local_50[0] + uVar3" (subscript_expression "local_50[0]" identifier [ number_literal ]) = (binary_expression "local_50[0] + uVar3" (subscript_expression "local_50[0]" identifier [ number_literal ]) + identifier)) ;) (goto_statement "goto switchD_0022373b_caseD_19;" goto statement_identifier ;)) (case_statement "case 5:" case number_literal :) (case_statement "case 0x12:\n    local_50[0] = local_50[0] + 2;\n    goto switchD_0022373b_caseD_19;" case number_literal : (expression_statement "local_50[0] = local_50[0] + 2;" (assignment_expression "local_50[0] = local_50[0] + 2" (subscript_expression "local_50[0]" identifier [ number_literal ]) = (binary_expression "local_50[0] + 2" (subscript_expression "local_50[0]" identifier [ number_literal ]) + number_literal)) ;) (goto_statement "goto switchD_0022373b_caseD_19;" goto statement_identifier ;)) (case_statement "case 6:" case number_literal :) (case_statement "case 0x13:\n    local_50[0] = local_50[0] + 4;\n    goto switchD_0022373b_caseD_19;" case number_literal : (expression_statement "local_50[0] = local_50[0] + 4;" (assignment_expression "local_50[0] = local_50[0] + 4" (subscript_expression "local_50[0]" identifier [ number_literal ]) = (binary_expression "local_50[0] + 4" (subscript_expression "local_50[0]" identifier [ number_literal ]) + number_literal)) ;) (goto_statement "goto switchD_0022373b_caseD_19;" goto statement_identifier ;)) (case_statement "case 7:" case number_literal :) (case_statement "case 0x14:" case number_literal :) (case_statement "case 0x20:\n    local_50[0] = local_50[0] + 8;\n    goto switchD_0022373b_caseD_19;" case number_literal : (expression_statement "local_50[0] = local_50[0] + 8;" (assignment_expression "local_50[0] = local_50[0] + 8" (subscript_expression "local_50[0]" identifier [ number_literal ]) = (binary_expression "local_50[0] + 8" (subscript_expression "local_50[0]" identifier [ number_literal ]) + number_literal)) ;) (goto_statement "goto switchD_0022373b_caseD_19;" goto statement_identifier ;)) (case_statement "case 8:\n    sVar5 = strlen((char *)local_50[0]);\n    local_50[0] = pbVar6 + sVar5 + 1;\n    goto switchD_0022373b_caseD_19;" case number_literal : (expression_statement "sVar5 = strlen((char *)local_50[0]);" (assignment_expression "sVar5 = strlen((char *)local_50[0])" identifier = (call_expression "strlen((char *)local_50[0])" identifier (argument_list "((char *)local_50[0])" ( (cast_expression "(char *)local_50[0]" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "local_50[0]" identifier [ number_literal ])) )))) ;) (expression_statement "local_50[0] = pbVar6 + sVar5 + 1;" (assignment_expression "local_50[0] = pbVar6 + sVar5 + 1" (subscript_expression "local_50[0]" identifier [ number_literal ]) = (binary_expression "pbVar6 + sVar5 + 1" (binary_expression "pbVar6 + sVar5" identifier + identifier) + number_literal)) ;) (goto_statement "goto switchD_0022373b_caseD_19;" goto statement_identifier ;)) (case_statement "case 9:" case number_literal :) (case_statement "case 0x18:\n    bVar1 = *local_50[0];\n    uVar4 = (ulong)bVar1;\n    if ((char)bVar1 < '\0') {\n      uVar4 = FUN_002817f0(local_50[0] + 1,local_40,bVar1);\n    }\n    else {\n      local_40[0] = 1;\n    }\n    local_50[0] = local_50[0] + uVar4 + local_40[0];\n    goto switchD_0022373b_caseD_19;" case number_literal : (expression_statement "bVar1 = *local_50[0];" (assignment_expression "bVar1 = *local_50[0]" identifier = (pointer_expression "*local_50[0]" * (subscript_expression "local_50[0]" identifier [ number_literal ]))) ;) (expression_statement "uVar4 = (ulong)bVar1;" (assignment_expression "uVar4 = (ulong)bVar1" identifier = (cast_expression "(ulong)bVar1" ( (type_descriptor "ulong" type_identifier) ) identifier)) ;) (if_statement "if ((char)bVar1 < '\0') {\n      uVar4 = FUN_002817f0(local_50[0] + 1,local_40,bVar1);\n    }\n    else {\n      local_40[0] = 1;\n    }" if (parenthesized_expression "((char)bVar1 < '\0')" ( (binary_expression "(char)bVar1 < '\0'" (cast_expression "(char)bVar1" ( (type_descriptor "char" primitive_type) ) identifier) < (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      uVar4 = FUN_002817f0(local_50[0] + 1,local_40,bVar1);\n    }" { (expression_statement "uVar4 = FUN_002817f0(local_50[0] + 1,local_40,bVar1);" (assignment_expression "uVar4 = FUN_002817f0(local_50[0] + 1,local_40,bVar1)" identifier = (call_expression "FUN_002817f0(local_50[0] + 1,local_40,bVar1)" identifier (argument_list "(local_50[0] + 1,local_40,bVar1)" ( (binary_expression "local_50[0] + 1" (subscript_expression "local_50[0]" identifier [ number_literal ]) + number_literal) , identifier , identifier )))) ;) }) (else_clause "else {\n      local_40[0] = 1;\n    }" else (compound_statement "{\n      local_40[0] = 1;\n    }" { (expression_statement "local_40[0] = 1;" (assignment_expression "local_40[0] = 1" (subscript_expression "local_40[0]" identifier [ number_literal ]) = number_literal) ;) }))) (expression_statement "local_50[0] = local_50[0] + uVar4 + local_40[0];" (assignment_expression "local_50[0] = local_50[0] + uVar4 + local_40[0]" (subscript_expression "local_50[0]" identifier [ number_literal ]) = (binary_expression "local_50[0] + uVar4 + local_40[0]" (binary_expression "local_50[0] + uVar4" (subscript_expression "local_50[0]" identifier [ number_literal ]) + identifier) + (subscript_expression "local_40[0]" identifier [ number_literal ]))) ;) (goto_statement "goto switchD_0022373b_caseD_19;" goto statement_identifier ;)) (case_statement "case 10:\n    local_50[0] = local_50[0] + (ulong)*local_50[0] + 1;\n    goto switchD_0022373b_caseD_19;" case number_literal : (expression_statement "local_50[0] = local_50[0] + (ulong)*local_50[0] + 1;" (assignment_expression "local_50[0] = local_50[0] + (ulong)*local_50[0] + 1" (subscript_expression "local_50[0]" identifier [ number_literal ]) = (binary_expression "local_50[0] + (ulong)*local_50[0] + 1" (binary_expression "local_50[0] + (ulong)*local_50[0]" (subscript_expression "local_50[0]" identifier [ number_literal ]) + (binary_expression "(ulong)*local_50[0]" (parenthesized_expression "(ulong)" ( identifier )) * (subscript_expression "local_50[0]" identifier [ number_literal ]))) + number_literal)) ;) (goto_statement "goto switchD_0022373b_caseD_19;" goto statement_identifier ;)) (case_statement "case 0xb:" case number_literal :) (case_statement "case 0xc:" case number_literal :) (case_statement "case 0x11:\n    local_50[0] = local_50[0] + 1;\n    goto switchD_0022373b_caseD_19;" case number_literal : (expression_statement "local_50[0] = local_50[0] + 1;" (assignment_expression "local_50[0] = local_50[0] + 1" (subscript_expression "local_50[0]" identifier [ number_literal ]) = (binary_expression "local_50[0] + 1" (subscript_expression "local_50[0]" identifier [ number_literal ]) + number_literal)) ;) (goto_statement "goto switchD_0022373b_caseD_19;" goto statement_identifier ;)) (case_statement "case 0xd:\n    if ((char)*local_50[0] < '\0') {\n      FUN_00281860(local_50[0] + 1,local_40,*local_50[0]);\n      local_50[0] = local_50[0] + local_40[0];\n      goto switchD_0022373b_caseD_19;\n    }\n    break;" case number_literal : (if_statement "if ((char)*local_50[0] < '\0') {\n      FUN_00281860(local_50[0] + 1,local_40,*local_50[0]);\n      local_50[0] = local_50[0] + local_40[0];\n      goto switchD_0022373b_caseD_19;\n    }" if (parenthesized_expression "((char)*local_50[0] < '\0')" ( (binary_expression "(char)*local_50[0] < '\0'" (cast_expression "(char)*local_50[0]" ( (type_descriptor "char" primitive_type) ) (pointer_expression "*local_50[0]" * (subscript_expression "local_50[0]" identifier [ number_literal ]))) < (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      FUN_00281860(local_50[0] + 1,local_40,*local_50[0]);\n      local_50[0] = local_50[0] + local_40[0];\n      goto switchD_0022373b_caseD_19;\n    }" { (expression_statement "FUN_00281860(local_50[0] + 1,local_40,*local_50[0]);" (call_expression "FUN_00281860(local_50[0] + 1,local_40,*local_50[0])" identifier (argument_list "(local_50[0] + 1,local_40,*local_50[0])" ( (binary_expression "local_50[0] + 1" (subscript_expression "local_50[0]" identifier [ number_literal ]) + number_literal) , identifier , (pointer_expression "*local_50[0]" * (subscript_expression "local_50[0]" identifier [ number_literal ])) ))) ;) (expression_statement "local_50[0] = local_50[0] + local_40[0];" (assignment_expression "local_50[0] = local_50[0] + local_40[0]" (subscript_expression "local_50[0]" identifier [ number_literal ]) = (binary_expression "local_50[0] + local_40[0]" (subscript_expression "local_50[0]" identifier [ number_literal ]) + (subscript_expression "local_40[0]" identifier [ number_literal ]))) ;) (goto_statement "goto switchD_0022373b_caseD_19;" goto statement_identifier ;) })) (break_statement "break;" break ;)) (case_statement "case 0xe:" case number_literal :) (case_statement "case 0x17:\n    local_50[0] = local_50[0] + (-(ulong)(param_7 == '\0') & 0xfffffffffffffffc) + 8;\n    goto switchD_0022373b_caseD_19;" case number_literal : (expression_statement "local_50[0] = local_50[0] + (-(ulong)(param_7 == '\0') & 0xfffffffffffffffc) + 8;" (assignment_expression "local_50[0] = local_50[0] + (-(ulong)(param_7 == '\0') & 0xfffffffffffffffc) + 8" (subscript_expression "local_50[0]" identifier [ number_literal ]) = (binary_expression "local_50[0] + (-(ulong)(param_7 == '\0') & 0xfffffffffffffffc) + 8" (binary_expression "local_50[0] + (-(ulong)(param_7 == '\0') & 0xfffffffffffffffc)" (subscript_expression "local_50[0]" identifier [ number_literal ]) + (parenthesized_expression "(-(ulong)(param_7 == '\0') & 0xfffffffffffffffc)" ( (binary_expression "-(ulong)(param_7 == '\0') & 0xfffffffffffffffc" (unary_expression "-(ulong)(param_7 == '\0')" - (call_expression "(ulong)(param_7 == '\0')" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(param_7 == '\0')" ( (binary_expression "param_7 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )))) & number_literal) ))) + number_literal)) ;) (goto_statement "goto switchD_0022373b_caseD_19;" goto statement_identifier ;)) (case_statement "case 0xf:" case number_literal :) (case_statement "case 0x15:\n    if ((char)*local_50[0] < '\0') {\n      FUN_002817f0(local_50[0] + 1,local_40,*local_50[0]);\n      local_50[0] = local_50[0] + local_40[0];\n      goto switchD_0022373b_caseD_19;\n    }\n    break;" case number_literal : (if_statement "if ((char)*local_50[0] < '\0') {\n      FUN_002817f0(local_50[0] + 1,local_40,*local_50[0]);\n      local_50[0] = local_50[0] + local_40[0];\n      goto switchD_0022373b_caseD_19;\n    }" if (parenthesized_expression "((char)*local_50[0] < '\0')" ( (binary_expression "(char)*local_50[0] < '\0'" (cast_expression "(char)*local_50[0]" ( (type_descriptor "char" primitive_type) ) (pointer_expression "*local_50[0]" * (subscript_expression "local_50[0]" identifier [ number_literal ]))) < (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      FUN_002817f0(local_50[0] + 1,local_40,*local_50[0]);\n      local_50[0] = local_50[0] + local_40[0];\n      goto switchD_0022373b_caseD_19;\n    }" { (expression_statement "FUN_002817f0(local_50[0] + 1,local_40,*local_50[0]);" (call_expression "FUN_002817f0(local_50[0] + 1,local_40,*local_50[0])" identifier (argument_list "(local_50[0] + 1,local_40,*local_50[0])" ( (binary_expression "local_50[0] + 1" (subscript_expression "local_50[0]" identifier [ number_literal ]) + number_literal) , identifier , (pointer_expression "*local_50[0]" * (subscript_expression "local_50[0]" identifier [ number_literal ])) ))) ;) (expression_statement "local_50[0] = local_50[0] + local_40[0];" (assignment_expression "local_50[0] = local_50[0] + local_40[0]" (subscript_expression "local_50[0]" identifier [ number_literal ]) = (binary_expression "local_50[0] + local_40[0]" (subscript_expression "local_50[0]" identifier [ number_literal ]) + (subscript_expression "local_40[0]" identifier [ number_literal ]))) ;) (goto_statement "goto switchD_0022373b_caseD_19;" goto statement_identifier ;) })) (break_statement "break;" break ;)) (case_statement "case 0x19:\n    goto switchD_0022373b_caseD_19;" case number_literal : (goto_statement "goto switchD_0022373b_caseD_19;" goto statement_identifier ;)) })) (expression_statement "local_50[0] = local_50[0] + 1;" (assignment_expression "local_50[0] = local_50[0] + 1" (subscript_expression "local_50[0]" identifier [ number_literal ]) = (binary_expression "local_50[0] + 1" (subscript_expression "local_50[0]" identifier [ number_literal ]) + number_literal)) ;) (expression_statement "local_40[0] = 1;" (assignment_expression "local_40[0] = 1" (subscript_expression "local_40[0]" identifier [ number_literal ]) = number_literal) ;) (goto_statement "goto switchD_0022373b_caseD_19;" goto statement_identifier ;) (labeled_statement "switchD_0022373b_caseD_0:\n  return;" statement_identifier : (return_statement "return;" return ;)) })))
(translation_unit "/* DWARF original prototype: bool get_die_end(Output_reduced_debug_info_section * this, uchar * die,\n   uchar * abbrev, uchar * * die_end, uchar * buffer_end, int address_size, bool is64) */\n\nbool __thiscall\ngold::Output_reduced_debug_info_section::get_die_end\n          (Output_reduced_debug_info_section *this,uchar *die,uchar *abbrev,uchar **die_end,\n          uchar *buffer_end,int address_size,bool is64)\n\n{\n  byte bVar1;\n  bool bVar2;\n  Valtype VVar3;\n  Valtype VVar4;\n  uint64_t uVar5;\n  uint64_t uVar6;\n  size_t sVar7;\n  ulong uVar8;\n  uint uVar9;\n  byte *pbVar10;\n  byte *local_50 [2];\n  size_t LEB_size;\n  \n  local_50[0] = die;\nswitchD_0022373b_caseD_19:\n  bVar1 = *abbrev;\n  pbVar10 = abbrev + 1;\n  if ((char)bVar1 < '\0') {\n    uVar6 = read_unsigned_LEB_128_x(pbVar10,&LEB_size,bVar1);\n    pbVar10 = abbrev + LEB_size;\n  }\n  else {\n    LEB_size = 1;\n    uVar6 = (uint64_t)bVar1;\n  }\n  bVar1 = *pbVar10;\n  uVar9 = (uint)bVar1;\n  abbrev = pbVar10 + 1;\n  if ((char)bVar1 < '\0') {\n    uVar5 = read_unsigned_LEB_128_x(abbrev,&LEB_size,bVar1);\n    abbrev = pbVar10 + LEB_size;\n    uVar9 = (uint)uVar5;\n  }\n  else {\n    LEB_size = 1;\n  }\n  pbVar10 = local_50[0];\n  bVar2 = uVar6 == 0 && uVar9 == 0;\n  if (bVar2) {\n    *die_end = local_50[0];\n    return bVar2;\n  }\n  if (buffer_end <= local_50[0]) {\n    return bVar2;\n  }\n  switch(uVar9) {\n  default:\n    goto switchD_0022373b_caseD_0;\n  case 1:\n  case 0x10:\n    local_50[0] = local_50[0] + address_size;\n    goto switchD_0022373b_caseD_19;\n  case 3:\n    VVar3 = read_from_pointer<16>(local_50);\n    local_50[0] = local_50[0] + VVar3;\n    goto switchD_0022373b_caseD_19;\n  case 4:\n    VVar4 = read_from_pointer<32>(local_50);\n    local_50[0] = local_50[0] + VVar4;\n    goto switchD_0022373b_caseD_19;\n  case 5:\n  case 0x12:\n    local_50[0] = local_50[0] + 2;\n    goto switchD_0022373b_caseD_19;\n  case 6:\n  case 0x13:\n    local_50[0] = local_50[0] + 4;\n    goto switchD_0022373b_caseD_19;\n  case 7:\n  case 0x14:\n  case 0x20:\n    local_50[0] = local_50[0] + 8;\n    goto switchD_0022373b_caseD_19;\n  case 8:\n    sVar7 = strlen((char *)local_50[0]);\n    local_50[0] = pbVar10 + sVar7 + 1;\n    goto switchD_0022373b_caseD_19;\n  case 9:\n  case 0x18:\n    bVar1 = *local_50[0];\n    uVar8 = (ulong)bVar1;\n    if ((char)bVar1 < '\0') {\n      uVar8 = read_unsigned_LEB_128_x(local_50[0] + 1,&LEB_size,bVar1);\n    }\n    else {\n      LEB_size = 1;\n    }\n    local_50[0] = local_50[0] + uVar8 + LEB_size;\n    goto switchD_0022373b_caseD_19;\n  case 10:\n    local_50[0] = local_50[0] + (ulong)*local_50[0] + 1;\n    goto switchD_0022373b_caseD_19;\n  case 0xb:\n  case 0xc:\n  case 0x11:\n    local_50[0] = local_50[0] + 1;\n    goto switchD_0022373b_caseD_19;\n  case 0xd:\n    if ((char)*local_50[0] < '\0') {\n      read_signed_LEB_128_x(local_50[0] + 1,&LEB_size,*local_50[0]);\n      local_50[0] = local_50[0] + LEB_size;\n      goto switchD_0022373b_caseD_19;\n    }\n    break;\n  case 0xe:\n  case 0x17:\n    local_50[0] = local_50[0] + (-(ulong)!is64 & 0xfffffffffffffffc) + 8;\n    goto switchD_0022373b_caseD_19;\n  case 0xf:\n  case 0x15:\n    if ((char)*local_50[0] < '\0') {\n      read_unsigned_LEB_128_x(local_50[0] + 1,&LEB_size,*local_50[0]);\n      local_50[0] = local_50[0] + LEB_size;\n      goto switchD_0022373b_caseD_19;\n    }\n    break;\n  case 0x19:\n    goto switchD_0022373b_caseD_19;\n  }\n  local_50[0] = local_50[0] + 1;\n  LEB_size = 1;\n  goto switchD_0022373b_caseD_19;\nswitchD_0022373b_caseD_0:\n  return bVar2;\n}\n\n" comment (function_definition "bool __thiscall\ngold::Output_reduced_debug_info_section::get_die_end\n          (Output_reduced_debug_info_section *this,uchar *die,uchar *abbrev,uchar **die_end,\n          uchar *buffer_end,int address_size,bool is64)\n\n{\n  byte bVar1;\n  bool bVar2;\n  Valtype VVar3;\n  Valtype VVar4;\n  uint64_t uVar5;\n  uint64_t uVar6;\n  size_t sVar7;\n  ulong uVar8;\n  uint uVar9;\n  byte *pbVar10;\n  byte *local_50 [2];\n  size_t LEB_size;\n  \n  local_50[0] = die;\nswitchD_0022373b_caseD_19:\n  bVar1 = *abbrev;\n  pbVar10 = abbrev + 1;\n  if ((char)bVar1 < '\0') {\n    uVar6 = read_unsigned_LEB_128_x(pbVar10,&LEB_size,bVar1);\n    pbVar10 = abbrev + LEB_size;\n  }\n  else {\n    LEB_size = 1;\n    uVar6 = (uint64_t)bVar1;\n  }\n  bVar1 = *pbVar10;\n  uVar9 = (uint)bVar1;\n  abbrev = pbVar10 + 1;\n  if ((char)bVar1 < '\0') {\n    uVar5 = read_unsigned_LEB_128_x(abbrev,&LEB_size,bVar1);\n    abbrev = pbVar10 + LEB_size;\n    uVar9 = (uint)uVar5;\n  }\n  else {\n    LEB_size = 1;\n  }\n  pbVar10 = local_50[0];\n  bVar2 = uVar6 == 0 && uVar9 == 0;\n  if (bVar2) {\n    *die_end = local_50[0];\n    return bVar2;\n  }\n  if (buffer_end <= local_50[0]) {\n    return bVar2;\n  }\n  switch(uVar9) {\n  default:\n    goto switchD_0022373b_caseD_0;\n  case 1:\n  case 0x10:\n    local_50[0] = local_50[0] + address_size;\n    goto switchD_0022373b_caseD_19;\n  case 3:\n    VVar3 = read_from_pointer<16>(local_50);\n    local_50[0] = local_50[0] + VVar3;\n    goto switchD_0022373b_caseD_19;\n  case 4:\n    VVar4 = read_from_pointer<32>(local_50);\n    local_50[0] = local_50[0] + VVar4;\n    goto switchD_0022373b_caseD_19;\n  case 5:\n  case 0x12:\n    local_50[0] = local_50[0] + 2;\n    goto switchD_0022373b_caseD_19;\n  case 6:\n  case 0x13:\n    local_50[0] = local_50[0] + 4;\n    goto switchD_0022373b_caseD_19;\n  case 7:\n  case 0x14:\n  case 0x20:\n    local_50[0] = local_50[0] + 8;\n    goto switchD_0022373b_caseD_19;\n  case 8:\n    sVar7 = strlen((char *)local_50[0]);\n    local_50[0] = pbVar10 + sVar7 + 1;\n    goto switchD_0022373b_caseD_19;\n  case 9:\n  case 0x18:\n    bVar1 = *local_50[0];\n    uVar8 = (ulong)bVar1;\n    if ((char)bVar1 < '\0') {\n      uVar8 = read_unsigned_LEB_128_x(local_50[0] + 1,&LEB_size,bVar1);\n    }\n    else {\n      LEB_size = 1;\n    }\n    local_50[0] = local_50[0] + uVar8 + LEB_size;\n    goto switchD_0022373b_caseD_19;\n  case 10:\n    local_50[0] = local_50[0] + (ulong)*local_50[0] + 1;\n    goto switchD_0022373b_caseD_19;\n  case 0xb:\n  case 0xc:\n  case 0x11:\n    local_50[0] = local_50[0] + 1;\n    goto switchD_0022373b_caseD_19;\n  case 0xd:\n    if ((char)*local_50[0] < '\0') {\n      read_signed_LEB_128_x(local_50[0] + 1,&LEB_size,*local_50[0]);\n      local_50[0] = local_50[0] + LEB_size;\n      goto switchD_0022373b_caseD_19;\n    }\n    break;\n  case 0xe:\n  case 0x17:\n    local_50[0] = local_50[0] + (-(ulong)!is64 & 0xfffffffffffffffc) + 8;\n    goto switchD_0022373b_caseD_19;\n  case 0xf:\n  case 0x15:\n    if ((char)*local_50[0] < '\0') {\n      read_unsigned_LEB_128_x(local_50[0] + 1,&LEB_size,*local_50[0]);\n      local_50[0] = local_50[0] + LEB_size;\n      goto switchD_0022373b_caseD_19;\n    }\n    break;\n  case 0x19:\n    goto switchD_0022373b_caseD_19;\n  }\n  local_50[0] = local_50[0] + 1;\n  LEB_size = 1;\n  goto switchD_0022373b_caseD_19;\nswitchD_0022373b_caseD_0:\n  return bVar2;\n}" primitive_type (ms_call_modifier "__thiscall" __thiscall) (ERROR "gold::Output_reduced_debug_info_section::" identifier : : identifier : :) (function_declarator "get_die_end\n          (Output_reduced_debug_info_section *this,uchar *die,uchar *abbrev,uchar **die_end,\n          uchar *buffer_end,int address_size,bool is64)" identifier (parameter_list "(Output_reduced_debug_info_section *this,uchar *die,uchar *abbrev,uchar **die_end,\n          uchar *buffer_end,int address_size,bool is64)" ( (parameter_declaration "Output_reduced_debug_info_section *this" type_identifier (pointer_declarator "*this" * identifier)) , (parameter_declaration "uchar *die" type_identifier (pointer_declarator "*die" * identifier)) , (parameter_declaration "uchar *abbrev" type_identifier (pointer_declarator "*abbrev" * identifier)) , (parameter_declaration "uchar **die_end" type_identifier (pointer_declarator "**die_end" * (pointer_declarator "*die_end" * identifier))) , (parameter_declaration "uchar *buffer_end" type_identifier (pointer_declarator "*buffer_end" * identifier)) , (parameter_declaration "int address_size" primitive_type identifier) , (parameter_declaration "bool is64" primitive_type identifier) ))) (compound_statement "{\n  byte bVar1;\n  bool bVar2;\n  Valtype VVar3;\n  Valtype VVar4;\n  uint64_t uVar5;\n  uint64_t uVar6;\n  size_t sVar7;\n  ulong uVar8;\n  uint uVar9;\n  byte *pbVar10;\n  byte *local_50 [2];\n  size_t LEB_size;\n  \n  local_50[0] = die;\nswitchD_0022373b_caseD_19:\n  bVar1 = *abbrev;\n  pbVar10 = abbrev + 1;\n  if ((char)bVar1 < '\0') {\n    uVar6 = read_unsigned_LEB_128_x(pbVar10,&LEB_size,bVar1);\n    pbVar10 = abbrev + LEB_size;\n  }\n  else {\n    LEB_size = 1;\n    uVar6 = (uint64_t)bVar1;\n  }\n  bVar1 = *pbVar10;\n  uVar9 = (uint)bVar1;\n  abbrev = pbVar10 + 1;\n  if ((char)bVar1 < '\0') {\n    uVar5 = read_unsigned_LEB_128_x(abbrev,&LEB_size,bVar1);\n    abbrev = pbVar10 + LEB_size;\n    uVar9 = (uint)uVar5;\n  }\n  else {\n    LEB_size = 1;\n  }\n  pbVar10 = local_50[0];\n  bVar2 = uVar6 == 0 && uVar9 == 0;\n  if (bVar2) {\n    *die_end = local_50[0];\n    return bVar2;\n  }\n  if (buffer_end <= local_50[0]) {\n    return bVar2;\n  }\n  switch(uVar9) {\n  default:\n    goto switchD_0022373b_caseD_0;\n  case 1:\n  case 0x10:\n    local_50[0] = local_50[0] + address_size;\n    goto switchD_0022373b_caseD_19;\n  case 3:\n    VVar3 = read_from_pointer<16>(local_50);\n    local_50[0] = local_50[0] + VVar3;\n    goto switchD_0022373b_caseD_19;\n  case 4:\n    VVar4 = read_from_pointer<32>(local_50);\n    local_50[0] = local_50[0] + VVar4;\n    goto switchD_0022373b_caseD_19;\n  case 5:\n  case 0x12:\n    local_50[0] = local_50[0] + 2;\n    goto switchD_0022373b_caseD_19;\n  case 6:\n  case 0x13:\n    local_50[0] = local_50[0] + 4;\n    goto switchD_0022373b_caseD_19;\n  case 7:\n  case 0x14:\n  case 0x20:\n    local_50[0] = local_50[0] + 8;\n    goto switchD_0022373b_caseD_19;\n  case 8:\n    sVar7 = strlen((char *)local_50[0]);\n    local_50[0] = pbVar10 + sVar7 + 1;\n    goto switchD_0022373b_caseD_19;\n  case 9:\n  case 0x18:\n    bVar1 = *local_50[0];\n    uVar8 = (ulong)bVar1;\n    if ((char)bVar1 < '\0') {\n      uVar8 = read_unsigned_LEB_128_x(local_50[0] + 1,&LEB_size,bVar1);\n    }\n    else {\n      LEB_size = 1;\n    }\n    local_50[0] = local_50[0] + uVar8 + LEB_size;\n    goto switchD_0022373b_caseD_19;\n  case 10:\n    local_50[0] = local_50[0] + (ulong)*local_50[0] + 1;\n    goto switchD_0022373b_caseD_19;\n  case 0xb:\n  case 0xc:\n  case 0x11:\n    local_50[0] = local_50[0] + 1;\n    goto switchD_0022373b_caseD_19;\n  case 0xd:\n    if ((char)*local_50[0] < '\0') {\n      read_signed_LEB_128_x(local_50[0] + 1,&LEB_size,*local_50[0]);\n      local_50[0] = local_50[0] + LEB_size;\n      goto switchD_0022373b_caseD_19;\n    }\n    break;\n  case 0xe:\n  case 0x17:\n    local_50[0] = local_50[0] + (-(ulong)!is64 & 0xfffffffffffffffc) + 8;\n    goto switchD_0022373b_caseD_19;\n  case 0xf:\n  case 0x15:\n    if ((char)*local_50[0] < '\0') {\n      read_unsigned_LEB_128_x(local_50[0] + 1,&LEB_size,*local_50[0]);\n      local_50[0] = local_50[0] + LEB_size;\n      goto switchD_0022373b_caseD_19;\n    }\n    break;\n  case 0x19:\n    goto switchD_0022373b_caseD_19;\n  }\n  local_50[0] = local_50[0] + 1;\n  LEB_size = 1;\n  goto switchD_0022373b_caseD_19;\nswitchD_0022373b_caseD_0:\n  return bVar2;\n}" { (declaration "byte bVar1;" type_identifier identifier ;) (declaration "bool bVar2;" primitive_type identifier ;) (declaration "Valtype VVar3;" type_identifier identifier ;) (declaration "Valtype VVar4;" type_identifier identifier ;) (declaration "uint64_t uVar5;" primitive_type identifier ;) (declaration "uint64_t uVar6;" primitive_type identifier ;) (declaration "size_t sVar7;" primitive_type identifier ;) (declaration "ulong uVar8;" type_identifier identifier ;) (declaration "uint uVar9;" type_identifier identifier ;) (declaration "byte *pbVar10;" type_identifier (pointer_declarator "*pbVar10" * identifier) ;) (declaration "byte *local_50 [2];" type_identifier (pointer_declarator "*local_50 [2]" * (array_declarator "local_50 [2]" identifier [ number_literal ])) ;) (declaration "size_t LEB_size;" primitive_type identifier ;) (expression_statement "local_50[0] = die;" (assignment_expression "local_50[0] = die" (subscript_expression "local_50[0]" identifier [ number_literal ]) = identifier) ;) (labeled_statement "switchD_0022373b_caseD_19:\n  bVar1 = *abbrev;" statement_identifier : (expression_statement "bVar1 = *abbrev;" (assignment_expression "bVar1 = *abbrev" identifier = (pointer_expression "*abbrev" * identifier)) ;)) (expression_statement "pbVar10 = abbrev + 1;" (assignment_expression "pbVar10 = abbrev + 1" identifier = (binary_expression "abbrev + 1" identifier + number_literal)) ;) (if_statement "if ((char)bVar1 < '\0') {\n    uVar6 = read_unsigned_LEB_128_x(pbVar10,&LEB_size,bVar1);\n    pbVar10 = abbrev + LEB_size;\n  }\n  else {\n    LEB_size = 1;\n    uVar6 = (uint64_t)bVar1;\n  }" if (parenthesized_expression "((char)bVar1 < '\0')" ( (binary_expression "(char)bVar1 < '\0'" (cast_expression "(char)bVar1" ( (type_descriptor "char" primitive_type) ) identifier) < (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    uVar6 = read_unsigned_LEB_128_x(pbVar10,&LEB_size,bVar1);\n    pbVar10 = abbrev + LEB_size;\n  }" { (expression_statement "uVar6 = read_unsigned_LEB_128_x(pbVar10,&LEB_size,bVar1);" (assignment_expression "uVar6 = read_unsigned_LEB_128_x(pbVar10,&LEB_size,bVar1)" identifier = (call_expression "read_unsigned_LEB_128_x(pbVar10,&LEB_size,bVar1)" identifier (argument_list "(pbVar10,&LEB_size,bVar1)" ( identifier , (pointer_expression "&LEB_size" & identifier) , identifier )))) ;) (expression_statement "pbVar10 = abbrev + LEB_size;" (assignment_expression "pbVar10 = abbrev + LEB_size" identifier = (binary_expression "abbrev + LEB_size" identifier + identifier)) ;) }) (else_clause "else {\n    LEB_size = 1;\n    uVar6 = (uint64_t)bVar1;\n  }" else (compound_statement "{\n    LEB_size = 1;\n    uVar6 = (uint64_t)bVar1;\n  }" { (expression_statement "LEB_size = 1;" (assignment_expression "LEB_size = 1" identifier = number_literal) ;) (expression_statement "uVar6 = (uint64_t)bVar1;" (assignment_expression "uVar6 = (uint64_t)bVar1" identifier = (cast_expression "(uint64_t)bVar1" ( (type_descriptor "uint64_t" primitive_type) ) identifier)) ;) }))) (expression_statement "bVar1 = *pbVar10;" (assignment_expression "bVar1 = *pbVar10" identifier = (pointer_expression "*pbVar10" * identifier)) ;) (expression_statement "uVar9 = (uint)bVar1;" (assignment_expression "uVar9 = (uint)bVar1" identifier = (cast_expression "(uint)bVar1" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "abbrev = pbVar10 + 1;" (assignment_expression "abbrev = pbVar10 + 1" identifier = (binary_expression "pbVar10 + 1" identifier + number_literal)) ;) (if_statement "if ((char)bVar1 < '\0') {\n    uVar5 = read_unsigned_LEB_128_x(abbrev,&LEB_size,bVar1);\n    abbrev = pbVar10 + LEB_size;\n    uVar9 = (uint)uVar5;\n  }\n  else {\n    LEB_size = 1;\n  }" if (parenthesized_expression "((char)bVar1 < '\0')" ( (binary_expression "(char)bVar1 < '\0'" (cast_expression "(char)bVar1" ( (type_descriptor "char" primitive_type) ) identifier) < (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    uVar5 = read_unsigned_LEB_128_x(abbrev,&LEB_size,bVar1);\n    abbrev = pbVar10 + LEB_size;\n    uVar9 = (uint)uVar5;\n  }" { (expression_statement "uVar5 = read_unsigned_LEB_128_x(abbrev,&LEB_size,bVar1);" (assignment_expression "uVar5 = read_unsigned_LEB_128_x(abbrev,&LEB_size,bVar1)" identifier = (call_expression "read_unsigned_LEB_128_x(abbrev,&LEB_size,bVar1)" identifier (argument_list "(abbrev,&LEB_size,bVar1)" ( identifier , (pointer_expression "&LEB_size" & identifier) , identifier )))) ;) (expression_statement "abbrev = pbVar10 + LEB_size;" (assignment_expression "abbrev = pbVar10 + LEB_size" identifier = (binary_expression "pbVar10 + LEB_size" identifier + identifier)) ;) (expression_statement "uVar9 = (uint)uVar5;" (assignment_expression "uVar9 = (uint)uVar5" identifier = (cast_expression "(uint)uVar5" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) }) (else_clause "else {\n    LEB_size = 1;\n  }" else (compound_statement "{\n    LEB_size = 1;\n  }" { (expression_statement "LEB_size = 1;" (assignment_expression "LEB_size = 1" identifier = number_literal) ;) }))) (expression_statement "pbVar10 = local_50[0];" (assignment_expression "pbVar10 = local_50[0]" identifier = (subscript_expression "local_50[0]" identifier [ number_literal ])) ;) (expression_statement "bVar2 = uVar6 == 0 && uVar9 == 0;" (assignment_expression "bVar2 = uVar6 == 0 && uVar9 == 0" identifier = (binary_expression "uVar6 == 0 && uVar9 == 0" (binary_expression "uVar6 == 0" identifier == number_literal) && (binary_expression "uVar9 == 0" identifier == number_literal))) ;) (if_statement "if (bVar2) {\n    *die_end = local_50[0];\n    return bVar2;\n  }" if (parenthesized_expression "(bVar2)" ( identifier )) (compound_statement "{\n    *die_end = local_50[0];\n    return bVar2;\n  }" { (expression_statement "*die_end = local_50[0];" (assignment_expression "*die_end = local_50[0]" (pointer_expression "*die_end" * identifier) = (subscript_expression "local_50[0]" identifier [ number_literal ])) ;) (return_statement "return bVar2;" return identifier ;) })) (if_statement "if (buffer_end <= local_50[0]) {\n    return bVar2;\n  }" if (parenthesized_expression "(buffer_end <= local_50[0])" ( (binary_expression "buffer_end <= local_50[0]" identifier <= (subscript_expression "local_50[0]" identifier [ number_literal ])) )) (compound_statement "{\n    return bVar2;\n  }" { (return_statement "return bVar2;" return identifier ;) })) (switch_statement "switch(uVar9) {\n  default:\n    goto switchD_0022373b_caseD_0;\n  case 1:\n  case 0x10:\n    local_50[0] = local_50[0] + address_size;\n    goto switchD_0022373b_caseD_19;\n  case 3:\n    VVar3 = read_from_pointer<16>(local_50);\n    local_50[0] = local_50[0] + VVar3;\n    goto switchD_0022373b_caseD_19;\n  case 4:\n    VVar4 = read_from_pointer<32>(local_50);\n    local_50[0] = local_50[0] + VVar4;\n    goto switchD_0022373b_caseD_19;\n  case 5:\n  case 0x12:\n    local_50[0] = local_50[0] + 2;\n    goto switchD_0022373b_caseD_19;\n  case 6:\n  case 0x13:\n    local_50[0] = local_50[0] + 4;\n    goto switchD_0022373b_caseD_19;\n  case 7:\n  case 0x14:\n  case 0x20:\n    local_50[0] = local_50[0] + 8;\n    goto switchD_0022373b_caseD_19;\n  case 8:\n    sVar7 = strlen((char *)local_50[0]);\n    local_50[0] = pbVar10 + sVar7 + 1;\n    goto switchD_0022373b_caseD_19;\n  case 9:\n  case 0x18:\n    bVar1 = *local_50[0];\n    uVar8 = (ulong)bVar1;\n    if ((char)bVar1 < '\0') {\n      uVar8 = read_unsigned_LEB_128_x(local_50[0] + 1,&LEB_size,bVar1);\n    }\n    else {\n      LEB_size = 1;\n    }\n    local_50[0] = local_50[0] + uVar8 + LEB_size;\n    goto switchD_0022373b_caseD_19;\n  case 10:\n    local_50[0] = local_50[0] + (ulong)*local_50[0] + 1;\n    goto switchD_0022373b_caseD_19;\n  case 0xb:\n  case 0xc:\n  case 0x11:\n    local_50[0] = local_50[0] + 1;\n    goto switchD_0022373b_caseD_19;\n  case 0xd:\n    if ((char)*local_50[0] < '\0') {\n      read_signed_LEB_128_x(local_50[0] + 1,&LEB_size,*local_50[0]);\n      local_50[0] = local_50[0] + LEB_size;\n      goto switchD_0022373b_caseD_19;\n    }\n    break;\n  case 0xe:\n  case 0x17:\n    local_50[0] = local_50[0] + (-(ulong)!is64 & 0xfffffffffffffffc) + 8;\n    goto switchD_0022373b_caseD_19;\n  case 0xf:\n  case 0x15:\n    if ((char)*local_50[0] < '\0') {\n      read_unsigned_LEB_128_x(local_50[0] + 1,&LEB_size,*local_50[0]);\n      local_50[0] = local_50[0] + LEB_size;\n      goto switchD_0022373b_caseD_19;\n    }\n    break;\n  case 0x19:\n    goto switchD_0022373b_caseD_19;\n  }" switch (parenthesized_expression "(uVar9)" ( identifier )) (compound_statement "{\n  default:\n    goto switchD_0022373b_caseD_0;\n  case 1:\n  case 0x10:\n    local_50[0] = local_50[0] + address_size;\n    goto switchD_0022373b_caseD_19;\n  case 3:\n    VVar3 = read_from_pointer<16>(local_50);\n    local_50[0] = local_50[0] + VVar3;\n    goto switchD_0022373b_caseD_19;\n  case 4:\n    VVar4 = read_from_pointer<32>(local_50);\n    local_50[0] = local_50[0] + VVar4;\n    goto switchD_0022373b_caseD_19;\n  case 5:\n  case 0x12:\n    local_50[0] = local_50[0] + 2;\n    goto switchD_0022373b_caseD_19;\n  case 6:\n  case 0x13:\n    local_50[0] = local_50[0] + 4;\n    goto switchD_0022373b_caseD_19;\n  case 7:\n  case 0x14:\n  case 0x20:\n    local_50[0] = local_50[0] + 8;\n    goto switchD_0022373b_caseD_19;\n  case 8:\n    sVar7 = strlen((char *)local_50[0]);\n    local_50[0] = pbVar10 + sVar7 + 1;\n    goto switchD_0022373b_caseD_19;\n  case 9:\n  case 0x18:\n    bVar1 = *local_50[0];\n    uVar8 = (ulong)bVar1;\n    if ((char)bVar1 < '\0') {\n      uVar8 = read_unsigned_LEB_128_x(local_50[0] + 1,&LEB_size,bVar1);\n    }\n    else {\n      LEB_size = 1;\n    }\n    local_50[0] = local_50[0] + uVar8 + LEB_size;\n    goto switchD_0022373b_caseD_19;\n  case 10:\n    local_50[0] = local_50[0] + (ulong)*local_50[0] + 1;\n    goto switchD_0022373b_caseD_19;\n  case 0xb:\n  case 0xc:\n  case 0x11:\n    local_50[0] = local_50[0] + 1;\n    goto switchD_0022373b_caseD_19;\n  case 0xd:\n    if ((char)*local_50[0] < '\0') {\n      read_signed_LEB_128_x(local_50[0] + 1,&LEB_size,*local_50[0]);\n      local_50[0] = local_50[0] + LEB_size;\n      goto switchD_0022373b_caseD_19;\n    }\n    break;\n  case 0xe:\n  case 0x17:\n    local_50[0] = local_50[0] + (-(ulong)!is64 & 0xfffffffffffffffc) + 8;\n    goto switchD_0022373b_caseD_19;\n  case 0xf:\n  case 0x15:\n    if ((char)*local_50[0] < '\0') {\n      read_unsigned_LEB_128_x(local_50[0] + 1,&LEB_size,*local_50[0]);\n      local_50[0] = local_50[0] + LEB_size;\n      goto switchD_0022373b_caseD_19;\n    }\n    break;\n  case 0x19:\n    goto switchD_0022373b_caseD_19;\n  }" { (case_statement "default:\n    goto switchD_0022373b_caseD_0;" default : (goto_statement "goto switchD_0022373b_caseD_0;" goto statement_identifier ;)) (case_statement "case 1:" case number_literal :) (case_statement "case 0x10:\n    local_50[0] = local_50[0] + address_size;\n    goto switchD_0022373b_caseD_19;" case number_literal : (expression_statement "local_50[0] = local_50[0] + address_size;" (assignment_expression "local_50[0] = local_50[0] + address_size" (subscript_expression "local_50[0]" identifier [ number_literal ]) = (binary_expression "local_50[0] + address_size" (subscript_expression "local_50[0]" identifier [ number_literal ]) + identifier)) ;) (goto_statement "goto switchD_0022373b_caseD_19;" goto statement_identifier ;)) (case_statement "case 3:\n    VVar3 = read_from_pointer<16>(local_50);\n    local_50[0] = local_50[0] + VVar3;\n    goto switchD_0022373b_caseD_19;" case number_literal : (expression_statement "VVar3 = read_from_pointer<16>(local_50);" (assignment_expression "VVar3 = read_from_pointer<16>(local_50)" identifier = (binary_expression "read_from_pointer<16>(local_50)" (binary_expression "read_from_pointer<16" identifier < number_literal) > (parenthesized_expression "(local_50)" ( identifier )))) ;) (expression_statement "local_50[0] = local_50[0] + VVar3;" (assignment_expression "local_50[0] = local_50[0] + VVar3" (subscript_expression "local_50[0]" identifier [ number_literal ]) = (binary_expression "local_50[0] + VVar3" (subscript_expression "local_50[0]" identifier [ number_literal ]) + identifier)) ;) (goto_statement "goto switchD_0022373b_caseD_19;" goto statement_identifier ;)) (case_statement "case 4:\n    VVar4 = read_from_pointer<32>(local_50);\n    local_50[0] = local_50[0] + VVar4;\n    goto switchD_0022373b_caseD_19;" case number_literal : (expression_statement "VVar4 = read_from_pointer<32>(local_50);" (assignment_expression "VVar4 = read_from_pointer<32>(local_50)" identifier = (binary_expression "read_from_pointer<32>(local_50)" (binary_expression "read_from_pointer<32" identifier < number_literal) > (parenthesized_expression "(local_50)" ( identifier )))) ;) (expression_statement "local_50[0] = local_50[0] + VVar4;" (assignment_expression "local_50[0] = local_50[0] + VVar4" (subscript_expression "local_50[0]" identifier [ number_literal ]) = (binary_expression "local_50[0] + VVar4" (subscript_expression "local_50[0]" identifier [ number_literal ]) + identifier)) ;) (goto_statement "goto switchD_0022373b_caseD_19;" goto statement_identifier ;)) (case_statement "case 5:" case number_literal :) (case_statement "case 0x12:\n    local_50[0] = local_50[0] + 2;\n    goto switchD_0022373b_caseD_19;" case number_literal : (expression_statement "local_50[0] = local_50[0] + 2;" (assignment_expression "local_50[0] = local_50[0] + 2" (subscript_expression "local_50[0]" identifier [ number_literal ]) = (binary_expression "local_50[0] + 2" (subscript_expression "local_50[0]" identifier [ number_literal ]) + number_literal)) ;) (goto_statement "goto switchD_0022373b_caseD_19;" goto statement_identifier ;)) (case_statement "case 6:" case number_literal :) (case_statement "case 0x13:\n    local_50[0] = local_50[0] + 4;\n    goto switchD_0022373b_caseD_19;" case number_literal : (expression_statement "local_50[0] = local_50[0] + 4;" (assignment_expression "local_50[0] = local_50[0] + 4" (subscript_expression "local_50[0]" identifier [ number_literal ]) = (binary_expression "local_50[0] + 4" (subscript_expression "local_50[0]" identifier [ number_literal ]) + number_literal)) ;) (goto_statement "goto switchD_0022373b_caseD_19;" goto statement_identifier ;)) (case_statement "case 7:" case number_literal :) (case_statement "case 0x14:" case number_literal :) (case_statement "case 0x20:\n    local_50[0] = local_50[0] + 8;\n    goto switchD_0022373b_caseD_19;" case number_literal : (expression_statement "local_50[0] = local_50[0] + 8;" (assignment_expression "local_50[0] = local_50[0] + 8" (subscript_expression "local_50[0]" identifier [ number_literal ]) = (binary_expression "local_50[0] + 8" (subscript_expression "local_50[0]" identifier [ number_literal ]) + number_literal)) ;) (goto_statement "goto switchD_0022373b_caseD_19;" goto statement_identifier ;)) (case_statement "case 8:\n    sVar7 = strlen((char *)local_50[0]);\n    local_50[0] = pbVar10 + sVar7 + 1;\n    goto switchD_0022373b_caseD_19;" case number_literal : (expression_statement "sVar7 = strlen((char *)local_50[0]);" (assignment_expression "sVar7 = strlen((char *)local_50[0])" identifier = (call_expression "strlen((char *)local_50[0])" identifier (argument_list "((char *)local_50[0])" ( (cast_expression "(char *)local_50[0]" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "local_50[0]" identifier [ number_literal ])) )))) ;) (expression_statement "local_50[0] = pbVar10 + sVar7 + 1;" (assignment_expression "local_50[0] = pbVar10 + sVar7 + 1" (subscript_expression "local_50[0]" identifier [ number_literal ]) = (binary_expression "pbVar10 + sVar7 + 1" (binary_expression "pbVar10 + sVar7" identifier + identifier) + number_literal)) ;) (goto_statement "goto switchD_0022373b_caseD_19;" goto statement_identifier ;)) (case_statement "case 9:" case number_literal :) (case_statement "case 0x18:\n    bVar1 = *local_50[0];\n    uVar8 = (ulong)bVar1;\n    if ((char)bVar1 < '\0') {\n      uVar8 = read_unsigned_LEB_128_x(local_50[0] + 1,&LEB_size,bVar1);\n    }\n    else {\n      LEB_size = 1;\n    }\n    local_50[0] = local_50[0] + uVar8 + LEB_size;\n    goto switchD_0022373b_caseD_19;" case number_literal : (expression_statement "bVar1 = *local_50[0];" (assignment_expression "bVar1 = *local_50[0]" identifier = (pointer_expression "*local_50[0]" * (subscript_expression "local_50[0]" identifier [ number_literal ]))) ;) (expression_statement "uVar8 = (ulong)bVar1;" (assignment_expression "uVar8 = (ulong)bVar1" identifier = (cast_expression "(ulong)bVar1" ( (type_descriptor "ulong" type_identifier) ) identifier)) ;) (if_statement "if ((char)bVar1 < '\0') {\n      uVar8 = read_unsigned_LEB_128_x(local_50[0] + 1,&LEB_size,bVar1);\n    }\n    else {\n      LEB_size = 1;\n    }" if (parenthesized_expression "((char)bVar1 < '\0')" ( (binary_expression "(char)bVar1 < '\0'" (cast_expression "(char)bVar1" ( (type_descriptor "char" primitive_type) ) identifier) < (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      uVar8 = read_unsigned_LEB_128_x(local_50[0] + 1,&LEB_size,bVar1);\n    }" { (expression_statement "uVar8 = read_unsigned_LEB_128_x(local_50[0] + 1,&LEB_size,bVar1);" (assignment_expression "uVar8 = read_unsigned_LEB_128_x(local_50[0] + 1,&LEB_size,bVar1)" identifier = (call_expression "read_unsigned_LEB_128_x(local_50[0] + 1,&LEB_size,bVar1)" identifier (argument_list "(local_50[0] + 1,&LEB_size,bVar1)" ( (binary_expression "local_50[0] + 1" (subscript_expression "local_50[0]" identifier [ number_literal ]) + number_literal) , (pointer_expression "&LEB_size" & identifier) , identifier )))) ;) }) (else_clause "else {\n      LEB_size = 1;\n    }" else (compound_statement "{\n      LEB_size = 1;\n    }" { (expression_statement "LEB_size = 1;" (assignment_expression "LEB_size = 1" identifier = number_literal) ;) }))) (expression_statement "local_50[0] = local_50[0] + uVar8 + LEB_size;" (assignment_expression "local_50[0] = local_50[0] + uVar8 + LEB_size" (subscript_expression "local_50[0]" identifier [ number_literal ]) = (binary_expression "local_50[0] + uVar8 + LEB_size" (binary_expression "local_50[0] + uVar8" (subscript_expression "local_50[0]" identifier [ number_literal ]) + identifier) + identifier)) ;) (goto_statement "goto switchD_0022373b_caseD_19;" goto statement_identifier ;)) (case_statement "case 10:\n    local_50[0] = local_50[0] + (ulong)*local_50[0] + 1;\n    goto switchD_0022373b_caseD_19;" case number_literal : (expression_statement "local_50[0] = local_50[0] + (ulong)*local_50[0] + 1;" (assignment_expression "local_50[0] = local_50[0] + (ulong)*local_50[0] + 1" (subscript_expression "local_50[0]" identifier [ number_literal ]) = (binary_expression "local_50[0] + (ulong)*local_50[0] + 1" (binary_expression "local_50[0] + (ulong)*local_50[0]" (subscript_expression "local_50[0]" identifier [ number_literal ]) + (binary_expression "(ulong)*local_50[0]" (parenthesized_expression "(ulong)" ( identifier )) * (subscript_expression "local_50[0]" identifier [ number_literal ]))) + number_literal)) ;) (goto_statement "goto switchD_0022373b_caseD_19;" goto statement_identifier ;)) (case_statement "case 0xb:" case number_literal :) (case_statement "case 0xc:" case number_literal :) (case_statement "case 0x11:\n    local_50[0] = local_50[0] + 1;\n    goto switchD_0022373b_caseD_19;" case number_literal : (expression_statement "local_50[0] = local_50[0] + 1;" (assignment_expression "local_50[0] = local_50[0] + 1" (subscript_expression "local_50[0]" identifier [ number_literal ]) = (binary_expression "local_50[0] + 1" (subscript_expression "local_50[0]" identifier [ number_literal ]) + number_literal)) ;) (goto_statement "goto switchD_0022373b_caseD_19;" goto statement_identifier ;)) (case_statement "case 0xd:\n    if ((char)*local_50[0] < '\0') {\n      read_signed_LEB_128_x(local_50[0] + 1,&LEB_size,*local_50[0]);\n      local_50[0] = local_50[0] + LEB_size;\n      goto switchD_0022373b_caseD_19;\n    }\n    break;" case number_literal : (if_statement "if ((char)*local_50[0] < '\0') {\n      read_signed_LEB_128_x(local_50[0] + 1,&LEB_size,*local_50[0]);\n      local_50[0] = local_50[0] + LEB_size;\n      goto switchD_0022373b_caseD_19;\n    }" if (parenthesized_expression "((char)*local_50[0] < '\0')" ( (binary_expression "(char)*local_50[0] < '\0'" (cast_expression "(char)*local_50[0]" ( (type_descriptor "char" primitive_type) ) (pointer_expression "*local_50[0]" * (subscript_expression "local_50[0]" identifier [ number_literal ]))) < (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      read_signed_LEB_128_x(local_50[0] + 1,&LEB_size,*local_50[0]);\n      local_50[0] = local_50[0] + LEB_size;\n      goto switchD_0022373b_caseD_19;\n    }" { (expression_statement "read_signed_LEB_128_x(local_50[0] + 1,&LEB_size,*local_50[0]);" (call_expression "read_signed_LEB_128_x(local_50[0] + 1,&LEB_size,*local_50[0])" identifier (argument_list "(local_50[0] + 1,&LEB_size,*local_50[0])" ( (binary_expression "local_50[0] + 1" (subscript_expression "local_50[0]" identifier [ number_literal ]) + number_literal) , (pointer_expression "&LEB_size" & identifier) , (pointer_expression "*local_50[0]" * (subscript_expression "local_50[0]" identifier [ number_literal ])) ))) ;) (expression_statement "local_50[0] = local_50[0] + LEB_size;" (assignment_expression "local_50[0] = local_50[0] + LEB_size" (subscript_expression "local_50[0]" identifier [ number_literal ]) = (binary_expression "local_50[0] + LEB_size" (subscript_expression "local_50[0]" identifier [ number_literal ]) + identifier)) ;) (goto_statement "goto switchD_0022373b_caseD_19;" goto statement_identifier ;) })) (break_statement "break;" break ;)) (case_statement "case 0xe:" case number_literal :) (case_statement "case 0x17:\n    local_50[0] = local_50[0] + (-(ulong)!is64 & 0xfffffffffffffffc) + 8;\n    goto switchD_0022373b_caseD_19;" case number_literal : (expression_statement "local_50[0] = local_50[0] + (-(ulong)!is64 & 0xfffffffffffffffc) + 8;" (assignment_expression "local_50[0] = local_50[0] + (-(ulong)!is64 & 0xfffffffffffffffc) + 8" (subscript_expression "local_50[0]" identifier [ number_literal ]) = (binary_expression "local_50[0] + (-(ulong)!is64 & 0xfffffffffffffffc) + 8" (binary_expression "local_50[0] + (-(ulong)!is64 & 0xfffffffffffffffc)" (subscript_expression "local_50[0]" identifier [ number_literal ]) + (parenthesized_expression "(-(ulong)!is64 & 0xfffffffffffffffc)" ( (binary_expression "-(ulong)!is64 & 0xfffffffffffffffc" (unary_expression "-(ulong)!is64" - (cast_expression "(ulong)!is64" ( (type_descriptor "ulong" type_identifier) ) (unary_expression "!is64" ! identifier))) & number_literal) ))) + number_literal)) ;) (goto_statement "goto switchD_0022373b_caseD_19;" goto statement_identifier ;)) (case_statement "case 0xf:" case number_literal :) (case_statement "case 0x15:\n    if ((char)*local_50[0] < '\0') {\n      read_unsigned_LEB_128_x(local_50[0] + 1,&LEB_size,*local_50[0]);\n      local_50[0] = local_50[0] + LEB_size;\n      goto switchD_0022373b_caseD_19;\n    }\n    break;" case number_literal : (if_statement "if ((char)*local_50[0] < '\0') {\n      read_unsigned_LEB_128_x(local_50[0] + 1,&LEB_size,*local_50[0]);\n      local_50[0] = local_50[0] + LEB_size;\n      goto switchD_0022373b_caseD_19;\n    }" if (parenthesized_expression "((char)*local_50[0] < '\0')" ( (binary_expression "(char)*local_50[0] < '\0'" (cast_expression "(char)*local_50[0]" ( (type_descriptor "char" primitive_type) ) (pointer_expression "*local_50[0]" * (subscript_expression "local_50[0]" identifier [ number_literal ]))) < (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      read_unsigned_LEB_128_x(local_50[0] + 1,&LEB_size,*local_50[0]);\n      local_50[0] = local_50[0] + LEB_size;\n      goto switchD_0022373b_caseD_19;\n    }" { (expression_statement "read_unsigned_LEB_128_x(local_50[0] + 1,&LEB_size,*local_50[0]);" (call_expression "read_unsigned_LEB_128_x(local_50[0] + 1,&LEB_size,*local_50[0])" identifier (argument_list "(local_50[0] + 1,&LEB_size,*local_50[0])" ( (binary_expression "local_50[0] + 1" (subscript_expression "local_50[0]" identifier [ number_literal ]) + number_literal) , (pointer_expression "&LEB_size" & identifier) , (pointer_expression "*local_50[0]" * (subscript_expression "local_50[0]" identifier [ number_literal ])) ))) ;) (expression_statement "local_50[0] = local_50[0] + LEB_size;" (assignment_expression "local_50[0] = local_50[0] + LEB_size" (subscript_expression "local_50[0]" identifier [ number_literal ]) = (binary_expression "local_50[0] + LEB_size" (subscript_expression "local_50[0]" identifier [ number_literal ]) + identifier)) ;) (goto_statement "goto switchD_0022373b_caseD_19;" goto statement_identifier ;) })) (break_statement "break;" break ;)) (case_statement "case 0x19:\n    goto switchD_0022373b_caseD_19;" case number_literal : (goto_statement "goto switchD_0022373b_caseD_19;" goto statement_identifier ;)) })) (expression_statement "local_50[0] = local_50[0] + 1;" (assignment_expression "local_50[0] = local_50[0] + 1" (subscript_expression "local_50[0]" identifier [ number_literal ]) = (binary_expression "local_50[0] + 1" (subscript_expression "local_50[0]" identifier [ number_literal ]) + number_literal)) ;) (expression_statement "LEB_size = 1;" (assignment_expression "LEB_size = 1" identifier = number_literal) ;) (goto_statement "goto switchD_0022373b_caseD_19;" goto statement_identifier ;) (labeled_statement "switchD_0022373b_caseD_0:\n  return bVar2;" statement_identifier : (return_statement "return bVar2;" return identifier ;)) })))
(translation_unit "void FUN_00223690(undefined8 param_1,byte *param_2,byte *param_3,undefined8 *param_4,byte *param_5,\n                 int param_6,char param_7)\n\n{\n  byte bVar1;\n  ushort uVar2;\n  uint uVar3;\n  ulong uVar4;\n  size_t sVar5;\n  byte *pbVar6;\n  byte *local_50 [2];\n  long local_40 [2];\n  \n  local_50[0] = param_2;\nswitchD_0022373b_caseD_19:\n  bVar1 = *param_3;\n  pbVar6 = param_3 + 1;\n  if ((char)bVar1 < '\0') {\n    uVar4 = FUN_002817f0(pbVar6,local_40,bVar1);\n    pbVar6 = param_3 + local_40[0];\n  }\n  else {\n    local_40[0] = 1;\n    uVar4 = (ulong)bVar1;\n  }\n  uVar3 = (uint)*pbVar6;\n  param_3 = pbVar6 + 1;\n  if ((char)*pbVar6 < '\0') {\n    uVar3 = FUN_002817f0(param_3,local_40);\n    param_3 = pbVar6 + local_40[0];\n  }\n  else {\n    local_40[0] = 1;\n  }\n  pbVar6 = local_50[0];\n  if (uVar4 == 0 && uVar3 == 0) {\n    *param_4 = local_50[0];\n    return;\n  }\n  if (param_5 <= local_50[0]) {\n    return;\n  }\n  switch(uVar3) {\n  default:\n    goto switchD_0022373b_caseD_0;\n  case 1:\n  case 0x10:\n    local_50[0] = local_50[0] + param_6;\n    goto switchD_0022373b_caseD_19;\n  case 3:\n    uVar2 = FUN_00224760(local_50);\n    local_50[0] = local_50[0] + uVar2;\n    goto switchD_0022373b_caseD_19;\n  case 4:\n    uVar3 = FUN_002247d0(local_50);\n    local_50[0] = local_50[0] + uVar3;\n    goto switchD_0022373b_caseD_19;\n  case 5:\n  case 0x12:\n    local_50[0] = local_50[0] + 2;\n    goto switchD_0022373b_caseD_19;\n  case 6:\n  case 0x13:\n    local_50[0] = local_50[0] + 4;\n    goto switchD_0022373b_caseD_19;\n  case 7:\n  case 0x14:\n  case 0x20:\n    local_50[0] = local_50[0] + 8;\n    goto switchD_0022373b_caseD_19;\n  case 8:\n    sVar5 = strlen((char *)local_50[0]);\n    local_50[0] = pbVar6 + sVar5 + 1;\n    goto switchD_0022373b_caseD_19;\n  case 9:\n  case 0x18:\n    bVar1 = *local_50[0];\n    uVar4 = (ulong)bVar1;\n    if ((char)bVar1 < '\0') {\n      uVar4 = FUN_002817f0(local_50[0] + 1,local_40,bVar1);\n    }\n    else {\n      local_40[0] = 1;\n    }\n    local_50[0] = local_50[0] + uVar4 + local_40[0];\n    goto switchD_0022373b_caseD_19;\n  case 10:\n    local_50[0] = local_50[0] + (ulong)*local_50[0] + 1;\n    goto switchD_0022373b_caseD_19;\n  case 0xb:\n  case 0xc:\n  case 0x11:\n    local_50[0] = local_50[0] + 1;\n    goto switchD_0022373b_caseD_19;\n  case 0xd:\n    if ((char)*local_50[0] < '\0') {\n      FUN_00281860(local_50[0] + 1,local_40,*local_50[0]);\n      local_50[0] = local_50[0] + local_40[0];\n      goto switchD_0022373b_caseD_19;\n    }\n    break;\n  case 0xe:\n  case 0x17:\n    local_50[0] = local_50[0] + (-(ulong)(param_7 == '\0') & 0xfffffffffffffffc) + 8;\n    goto switchD_0022373b_caseD_19;\n  case 0xf:\n  case 0x15:\n    if ((char)*local_50[0] < '\0') {\n      FUN_002817f0(local_50[0] + 1,local_40,*local_50[0]);\n      local_50[0] = local_50[0] + local_40[0];\n      goto switchD_0022373b_caseD_19;\n    }\n    break;\n  case 0x19:\n    goto switchD_0022373b_caseD_19;\n  }\n  local_50[0] = local_50[0] + 1;\n  local_40[0] = 1;\n  goto switchD_0022373b_caseD_19;\nswitchD_0022373b_caseD_0:\n  return;\n}\n\n" (function_definition "void FUN_00223690(undefined8 param_1,byte *param_2,byte *param_3,undefined8 *param_4,byte *param_5,\n                 int param_6,char param_7)\n\n{\n  byte bVar1;\n  ushort uVar2;\n  uint uVar3;\n  ulong uVar4;\n  size_t sVar5;\n  byte *pbVar6;\n  byte *local_50 [2];\n  long local_40 [2];\n  \n  local_50[0] = param_2;\nswitchD_0022373b_caseD_19:\n  bVar1 = *param_3;\n  pbVar6 = param_3 + 1;\n  if ((char)bVar1 < '\0') {\n    uVar4 = FUN_002817f0(pbVar6,local_40,bVar1);\n    pbVar6 = param_3 + local_40[0];\n  }\n  else {\n    local_40[0] = 1;\n    uVar4 = (ulong)bVar1;\n  }\n  uVar3 = (uint)*pbVar6;\n  param_3 = pbVar6 + 1;\n  if ((char)*pbVar6 < '\0') {\n    uVar3 = FUN_002817f0(param_3,local_40);\n    param_3 = pbVar6 + local_40[0];\n  }\n  else {\n    local_40[0] = 1;\n  }\n  pbVar6 = local_50[0];\n  if (uVar4 == 0 && uVar3 == 0) {\n    *param_4 = local_50[0];\n    return;\n  }\n  if (param_5 <= local_50[0]) {\n    return;\n  }\n  switch(uVar3) {\n  default:\n    goto switchD_0022373b_caseD_0;\n  case 1:\n  case 0x10:\n    local_50[0] = local_50[0] + param_6;\n    goto switchD_0022373b_caseD_19;\n  case 3:\n    uVar2 = FUN_00224760(local_50);\n    local_50[0] = local_50[0] + uVar2;\n    goto switchD_0022373b_caseD_19;\n  case 4:\n    uVar3 = FUN_002247d0(local_50);\n    local_50[0] = local_50[0] + uVar3;\n    goto switchD_0022373b_caseD_19;\n  case 5:\n  case 0x12:\n    local_50[0] = local_50[0] + 2;\n    goto switchD_0022373b_caseD_19;\n  case 6:\n  case 0x13:\n    local_50[0] = local_50[0] + 4;\n    goto switchD_0022373b_caseD_19;\n  case 7:\n  case 0x14:\n  case 0x20:\n    local_50[0] = local_50[0] + 8;\n    goto switchD_0022373b_caseD_19;\n  case 8:\n    sVar5 = strlen((char *)local_50[0]);\n    local_50[0] = pbVar6 + sVar5 + 1;\n    goto switchD_0022373b_caseD_19;\n  case 9:\n  case 0x18:\n    bVar1 = *local_50[0];\n    uVar4 = (ulong)bVar1;\n    if ((char)bVar1 < '\0') {\n      uVar4 = FUN_002817f0(local_50[0] + 1,local_40,bVar1);\n    }\n    else {\n      local_40[0] = 1;\n    }\n    local_50[0] = local_50[0] + uVar4 + local_40[0];\n    goto switchD_0022373b_caseD_19;\n  case 10:\n    local_50[0] = local_50[0] + (ulong)*local_50[0] + 1;\n    goto switchD_0022373b_caseD_19;\n  case 0xb:\n  case 0xc:\n  case 0x11:\n    local_50[0] = local_50[0] + 1;\n    goto switchD_0022373b_caseD_19;\n  case 0xd:\n    if ((char)*local_50[0] < '\0') {\n      FUN_00281860(local_50[0] + 1,local_40,*local_50[0]);\n      local_50[0] = local_50[0] + local_40[0];\n      goto switchD_0022373b_caseD_19;\n    }\n    break;\n  case 0xe:\n  case 0x17:\n    local_50[0] = local_50[0] + (-(ulong)(param_7 == '\0') & 0xfffffffffffffffc) + 8;\n    goto switchD_0022373b_caseD_19;\n  case 0xf:\n  case 0x15:\n    if ((char)*local_50[0] < '\0') {\n      FUN_002817f0(local_50[0] + 1,local_40,*local_50[0]);\n      local_50[0] = local_50[0] + local_40[0];\n      goto switchD_0022373b_caseD_19;\n    }\n    break;\n  case 0x19:\n    goto switchD_0022373b_caseD_19;\n  }\n  local_50[0] = local_50[0] + 1;\n  local_40[0] = 1;\n  goto switchD_0022373b_caseD_19;\nswitchD_0022373b_caseD_0:\n  return;\n}" primitive_type (function_declarator "FUN_00223690(undefined8 param_1,byte *param_2,byte *param_3,undefined8 *param_4,byte *param_5,\n                 int param_6,char param_7)" identifier (parameter_list "(undefined8 param_1,byte *param_2,byte *param_3,undefined8 *param_4,byte *param_5,\n                 int param_6,char param_7)" ( (parameter_declaration "undefined8 param_1" type_identifier identifier) , (parameter_declaration "byte *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "byte *param_3" type_identifier (pointer_declarator "*param_3" * identifier)) , (parameter_declaration "undefined8 *param_4" type_identifier (pointer_declarator "*param_4" * identifier)) , (parameter_declaration "byte *param_5" type_identifier (pointer_declarator "*param_5" * identifier)) , (parameter_declaration "int param_6" primitive_type identifier) , (parameter_declaration "char param_7" primitive_type identifier) ))) (compound_statement "{\n  byte bVar1;\n  ushort uVar2;\n  uint uVar3;\n  ulong uVar4;\n  size_t sVar5;\n  byte *pbVar6;\n  byte *local_50 [2];\n  long local_40 [2];\n  \n  local_50[0] = param_2;\nswitchD_0022373b_caseD_19:\n  bVar1 = *param_3;\n  pbVar6 = param_3 + 1;\n  if ((char)bVar1 < '\0') {\n    uVar4 = FUN_002817f0(pbVar6,local_40,bVar1);\n    pbVar6 = param_3 + local_40[0];\n  }\n  else {\n    local_40[0] = 1;\n    uVar4 = (ulong)bVar1;\n  }\n  uVar3 = (uint)*pbVar6;\n  param_3 = pbVar6 + 1;\n  if ((char)*pbVar6 < '\0') {\n    uVar3 = FUN_002817f0(param_3,local_40);\n    param_3 = pbVar6 + local_40[0];\n  }\n  else {\n    local_40[0] = 1;\n  }\n  pbVar6 = local_50[0];\n  if (uVar4 == 0 && uVar3 == 0) {\n    *param_4 = local_50[0];\n    return;\n  }\n  if (param_5 <= local_50[0]) {\n    return;\n  }\n  switch(uVar3) {\n  default:\n    goto switchD_0022373b_caseD_0;\n  case 1:\n  case 0x10:\n    local_50[0] = local_50[0] + param_6;\n    goto switchD_0022373b_caseD_19;\n  case 3:\n    uVar2 = FUN_00224760(local_50);\n    local_50[0] = local_50[0] + uVar2;\n    goto switchD_0022373b_caseD_19;\n  case 4:\n    uVar3 = FUN_002247d0(local_50);\n    local_50[0] = local_50[0] + uVar3;\n    goto switchD_0022373b_caseD_19;\n  case 5:\n  case 0x12:\n    local_50[0] = local_50[0] + 2;\n    goto switchD_0022373b_caseD_19;\n  case 6:\n  case 0x13:\n    local_50[0] = local_50[0] + 4;\n    goto switchD_0022373b_caseD_19;\n  case 7:\n  case 0x14:\n  case 0x20:\n    local_50[0] = local_50[0] + 8;\n    goto switchD_0022373b_caseD_19;\n  case 8:\n    sVar5 = strlen((char *)local_50[0]);\n    local_50[0] = pbVar6 + sVar5 + 1;\n    goto switchD_0022373b_caseD_19;\n  case 9:\n  case 0x18:\n    bVar1 = *local_50[0];\n    uVar4 = (ulong)bVar1;\n    if ((char)bVar1 < '\0') {\n      uVar4 = FUN_002817f0(local_50[0] + 1,local_40,bVar1);\n    }\n    else {\n      local_40[0] = 1;\n    }\n    local_50[0] = local_50[0] + uVar4 + local_40[0];\n    goto switchD_0022373b_caseD_19;\n  case 10:\n    local_50[0] = local_50[0] + (ulong)*local_50[0] + 1;\n    goto switchD_0022373b_caseD_19;\n  case 0xb:\n  case 0xc:\n  case 0x11:\n    local_50[0] = local_50[0] + 1;\n    goto switchD_0022373b_caseD_19;\n  case 0xd:\n    if ((char)*local_50[0] < '\0') {\n      FUN_00281860(local_50[0] + 1,local_40,*local_50[0]);\n      local_50[0] = local_50[0] + local_40[0];\n      goto switchD_0022373b_caseD_19;\n    }\n    break;\n  case 0xe:\n  case 0x17:\n    local_50[0] = local_50[0] + (-(ulong)(param_7 == '\0') & 0xfffffffffffffffc) + 8;\n    goto switchD_0022373b_caseD_19;\n  case 0xf:\n  case 0x15:\n    if ((char)*local_50[0] < '\0') {\n      FUN_002817f0(local_50[0] + 1,local_40,*local_50[0]);\n      local_50[0] = local_50[0] + local_40[0];\n      goto switchD_0022373b_caseD_19;\n    }\n    break;\n  case 0x19:\n    goto switchD_0022373b_caseD_19;\n  }\n  local_50[0] = local_50[0] + 1;\n  local_40[0] = 1;\n  goto switchD_0022373b_caseD_19;\nswitchD_0022373b_caseD_0:\n  return;\n}" { (declaration "byte bVar1;" type_identifier identifier ;) (declaration "ushort uVar2;" type_identifier identifier ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "ulong uVar4;" type_identifier identifier ;) (declaration "size_t sVar5;" primitive_type identifier ;) (declaration "byte *pbVar6;" type_identifier (pointer_declarator "*pbVar6" * identifier) ;) (declaration "byte *local_50 [2];" type_identifier (pointer_declarator "*local_50 [2]" * (array_declarator "local_50 [2]" identifier [ number_literal ])) ;) (declaration "long local_40 [2];" (sized_type_specifier "long" long) (array_declarator "local_40 [2]" identifier [ number_literal ]) ;) (expression_statement "local_50[0] = param_2;" (assignment_expression "local_50[0] = param_2" (subscript_expression "local_50[0]" identifier [ number_literal ]) = identifier) ;) (labeled_statement "switchD_0022373b_caseD_19:\n  bVar1 = *param_3;" statement_identifier : (expression_statement "bVar1 = *param_3;" (assignment_expression "bVar1 = *param_3" identifier = (pointer_expression "*param_3" * identifier)) ;)) (expression_statement "pbVar6 = param_3 + 1;" (assignment_expression "pbVar6 = param_3 + 1" identifier = (binary_expression "param_3 + 1" identifier + number_literal)) ;) (if_statement "if ((char)bVar1 < '\0') {\n    uVar4 = FUN_002817f0(pbVar6,local_40,bVar1);\n    pbVar6 = param_3 + local_40[0];\n  }\n  else {\n    local_40[0] = 1;\n    uVar4 = (ulong)bVar1;\n  }" if (parenthesized_expression "((char)bVar1 < '\0')" ( (binary_expression "(char)bVar1 < '\0'" (cast_expression "(char)bVar1" ( (type_descriptor "char" primitive_type) ) identifier) < (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    uVar4 = FUN_002817f0(pbVar6,local_40,bVar1);\n    pbVar6 = param_3 + local_40[0];\n  }" { (expression_statement "uVar4 = FUN_002817f0(pbVar6,local_40,bVar1);" (assignment_expression "uVar4 = FUN_002817f0(pbVar6,local_40,bVar1)" identifier = (call_expression "FUN_002817f0(pbVar6,local_40,bVar1)" identifier (argument_list "(pbVar6,local_40,bVar1)" ( identifier , identifier , identifier )))) ;) (expression_statement "pbVar6 = param_3 + local_40[0];" (assignment_expression "pbVar6 = param_3 + local_40[0]" identifier = (binary_expression "param_3 + local_40[0]" identifier + (subscript_expression "local_40[0]" identifier [ number_literal ]))) ;) }) (else_clause "else {\n    local_40[0] = 1;\n    uVar4 = (ulong)bVar1;\n  }" else (compound_statement "{\n    local_40[0] = 1;\n    uVar4 = (ulong)bVar1;\n  }" { (expression_statement "local_40[0] = 1;" (assignment_expression "local_40[0] = 1" (subscript_expression "local_40[0]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "uVar4 = (ulong)bVar1;" (assignment_expression "uVar4 = (ulong)bVar1" identifier = (cast_expression "(ulong)bVar1" ( (type_descriptor "ulong" type_identifier) ) identifier)) ;) }))) (expression_statement "uVar3 = (uint)*pbVar6;" (assignment_expression "uVar3 = (uint)*pbVar6" identifier = (binary_expression "(uint)*pbVar6" (parenthesized_expression "(uint)" ( identifier )) * identifier)) ;) (expression_statement "param_3 = pbVar6 + 1;" (assignment_expression "param_3 = pbVar6 + 1" identifier = (binary_expression "pbVar6 + 1" identifier + number_literal)) ;) (if_statement "if ((char)*pbVar6 < '\0') {\n    uVar3 = FUN_002817f0(param_3,local_40);\n    param_3 = pbVar6 + local_40[0];\n  }\n  else {\n    local_40[0] = 1;\n  }" if (parenthesized_expression "((char)*pbVar6 < '\0')" ( (binary_expression "(char)*pbVar6 < '\0'" (cast_expression "(char)*pbVar6" ( (type_descriptor "char" primitive_type) ) (pointer_expression "*pbVar6" * identifier)) < (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    uVar3 = FUN_002817f0(param_3,local_40);\n    param_3 = pbVar6 + local_40[0];\n  }" { (expression_statement "uVar3 = FUN_002817f0(param_3,local_40);" (assignment_expression "uVar3 = FUN_002817f0(param_3,local_40)" identifier = (call_expression "FUN_002817f0(param_3,local_40)" identifier (argument_list "(param_3,local_40)" ( identifier , identifier )))) ;) (expression_statement "param_3 = pbVar6 + local_40[0];" (assignment_expression "param_3 = pbVar6 + local_40[0]" identifier = (binary_expression "pbVar6 + local_40[0]" identifier + (subscript_expression "local_40[0]" identifier [ number_literal ]))) ;) }) (else_clause "else {\n    local_40[0] = 1;\n  }" else (compound_statement "{\n    local_40[0] = 1;\n  }" { (expression_statement "local_40[0] = 1;" (assignment_expression "local_40[0] = 1" (subscript_expression "local_40[0]" identifier [ number_literal ]) = number_literal) ;) }))) (expression_statement "pbVar6 = local_50[0];" (assignment_expression "pbVar6 = local_50[0]" identifier = (subscript_expression "local_50[0]" identifier [ number_literal ])) ;) (if_statement "if (uVar4 == 0 && uVar3 == 0) {\n    *param_4 = local_50[0];\n    return;\n  }" if (parenthesized_expression "(uVar4 == 0 && uVar3 == 0)" ( (binary_expression "uVar4 == 0 && uVar3 == 0" (binary_expression "uVar4 == 0" identifier == number_literal) && (binary_expression "uVar3 == 0" identifier == number_literal)) )) (compound_statement "{\n    *param_4 = local_50[0];\n    return;\n  }" { (expression_statement "*param_4 = local_50[0];" (assignment_expression "*param_4 = local_50[0]" (pointer_expression "*param_4" * identifier) = (subscript_expression "local_50[0]" identifier [ number_literal ])) ;) (return_statement "return;" return ;) })) (if_statement "if (param_5 <= local_50[0]) {\n    return;\n  }" if (parenthesized_expression "(param_5 <= local_50[0])" ( (binary_expression "param_5 <= local_50[0]" identifier <= (subscript_expression "local_50[0]" identifier [ number_literal ])) )) (compound_statement "{\n    return;\n  }" { (return_statement "return;" return ;) })) (switch_statement "switch(uVar3) {\n  default:\n    goto switchD_0022373b_caseD_0;\n  case 1:\n  case 0x10:\n    local_50[0] = local_50[0] + param_6;\n    goto switchD_0022373b_caseD_19;\n  case 3:\n    uVar2 = FUN_00224760(local_50);\n    local_50[0] = local_50[0] + uVar2;\n    goto switchD_0022373b_caseD_19;\n  case 4:\n    uVar3 = FUN_002247d0(local_50);\n    local_50[0] = local_50[0] + uVar3;\n    goto switchD_0022373b_caseD_19;\n  case 5:\n  case 0x12:\n    local_50[0] = local_50[0] + 2;\n    goto switchD_0022373b_caseD_19;\n  case 6:\n  case 0x13:\n    local_50[0] = local_50[0] + 4;\n    goto switchD_0022373b_caseD_19;\n  case 7:\n  case 0x14:\n  case 0x20:\n    local_50[0] = local_50[0] + 8;\n    goto switchD_0022373b_caseD_19;\n  case 8:\n    sVar5 = strlen((char *)local_50[0]);\n    local_50[0] = pbVar6 + sVar5 + 1;\n    goto switchD_0022373b_caseD_19;\n  case 9:\n  case 0x18:\n    bVar1 = *local_50[0];\n    uVar4 = (ulong)bVar1;\n    if ((char)bVar1 < '\0') {\n      uVar4 = FUN_002817f0(local_50[0] + 1,local_40,bVar1);\n    }\n    else {\n      local_40[0] = 1;\n    }\n    local_50[0] = local_50[0] + uVar4 + local_40[0];\n    goto switchD_0022373b_caseD_19;\n  case 10:\n    local_50[0] = local_50[0] + (ulong)*local_50[0] + 1;\n    goto switchD_0022373b_caseD_19;\n  case 0xb:\n  case 0xc:\n  case 0x11:\n    local_50[0] = local_50[0] + 1;\n    goto switchD_0022373b_caseD_19;\n  case 0xd:\n    if ((char)*local_50[0] < '\0') {\n      FUN_00281860(local_50[0] + 1,local_40,*local_50[0]);\n      local_50[0] = local_50[0] + local_40[0];\n      goto switchD_0022373b_caseD_19;\n    }\n    break;\n  case 0xe:\n  case 0x17:\n    local_50[0] = local_50[0] + (-(ulong)(param_7 == '\0') & 0xfffffffffffffffc) + 8;\n    goto switchD_0022373b_caseD_19;\n  case 0xf:\n  case 0x15:\n    if ((char)*local_50[0] < '\0') {\n      FUN_002817f0(local_50[0] + 1,local_40,*local_50[0]);\n      local_50[0] = local_50[0] + local_40[0];\n      goto switchD_0022373b_caseD_19;\n    }\n    break;\n  case 0x19:\n    goto switchD_0022373b_caseD_19;\n  }" switch (parenthesized_expression "(uVar3)" ( identifier )) (compound_statement "{\n  default:\n    goto switchD_0022373b_caseD_0;\n  case 1:\n  case 0x10:\n    local_50[0] = local_50[0] + param_6;\n    goto switchD_0022373b_caseD_19;\n  case 3:\n    uVar2 = FUN_00224760(local_50);\n    local_50[0] = local_50[0] + uVar2;\n    goto switchD_0022373b_caseD_19;\n  case 4:\n    uVar3 = FUN_002247d0(local_50);\n    local_50[0] = local_50[0] + uVar3;\n    goto switchD_0022373b_caseD_19;\n  case 5:\n  case 0x12:\n    local_50[0] = local_50[0] + 2;\n    goto switchD_0022373b_caseD_19;\n  case 6:\n  case 0x13:\n    local_50[0] = local_50[0] + 4;\n    goto switchD_0022373b_caseD_19;\n  case 7:\n  case 0x14:\n  case 0x20:\n    local_50[0] = local_50[0] + 8;\n    goto switchD_0022373b_caseD_19;\n  case 8:\n    sVar5 = strlen((char *)local_50[0]);\n    local_50[0] = pbVar6 + sVar5 + 1;\n    goto switchD_0022373b_caseD_19;\n  case 9:\n  case 0x18:\n    bVar1 = *local_50[0];\n    uVar4 = (ulong)bVar1;\n    if ((char)bVar1 < '\0') {\n      uVar4 = FUN_002817f0(local_50[0] + 1,local_40,bVar1);\n    }\n    else {\n      local_40[0] = 1;\n    }\n    local_50[0] = local_50[0] + uVar4 + local_40[0];\n    goto switchD_0022373b_caseD_19;\n  case 10:\n    local_50[0] = local_50[0] + (ulong)*local_50[0] + 1;\n    goto switchD_0022373b_caseD_19;\n  case 0xb:\n  case 0xc:\n  case 0x11:\n    local_50[0] = local_50[0] + 1;\n    goto switchD_0022373b_caseD_19;\n  case 0xd:\n    if ((char)*local_50[0] < '\0') {\n      FUN_00281860(local_50[0] + 1,local_40,*local_50[0]);\n      local_50[0] = local_50[0] + local_40[0];\n      goto switchD_0022373b_caseD_19;\n    }\n    break;\n  case 0xe:\n  case 0x17:\n    local_50[0] = local_50[0] + (-(ulong)(param_7 == '\0') & 0xfffffffffffffffc) + 8;\n    goto switchD_0022373b_caseD_19;\n  case 0xf:\n  case 0x15:\n    if ((char)*local_50[0] < '\0') {\n      FUN_002817f0(local_50[0] + 1,local_40,*local_50[0]);\n      local_50[0] = local_50[0] + local_40[0];\n      goto switchD_0022373b_caseD_19;\n    }\n    break;\n  case 0x19:\n    goto switchD_0022373b_caseD_19;\n  }" { (case_statement "default:\n    goto switchD_0022373b_caseD_0;" default : (goto_statement "goto switchD_0022373b_caseD_0;" goto statement_identifier ;)) (case_statement "case 1:" case number_literal :) (case_statement "case 0x10:\n    local_50[0] = local_50[0] + param_6;\n    goto switchD_0022373b_caseD_19;" case number_literal : (expression_statement "local_50[0] = local_50[0] + param_6;" (assignment_expression "local_50[0] = local_50[0] + param_6" (subscript_expression "local_50[0]" identifier [ number_literal ]) = (binary_expression "local_50[0] + param_6" (subscript_expression "local_50[0]" identifier [ number_literal ]) + identifier)) ;) (goto_statement "goto switchD_0022373b_caseD_19;" goto statement_identifier ;)) (case_statement "case 3:\n    uVar2 = FUN_00224760(local_50);\n    local_50[0] = local_50[0] + uVar2;\n    goto switchD_0022373b_caseD_19;" case number_literal : (expression_statement "uVar2 = FUN_00224760(local_50);" (assignment_expression "uVar2 = FUN_00224760(local_50)" identifier = (call_expression "FUN_00224760(local_50)" identifier (argument_list "(local_50)" ( identifier )))) ;) (expression_statement "local_50[0] = local_50[0] + uVar2;" (assignment_expression "local_50[0] = local_50[0] + uVar2" (subscript_expression "local_50[0]" identifier [ number_literal ]) = (binary_expression "local_50[0] + uVar2" (subscript_expression "local_50[0]" identifier [ number_literal ]) + identifier)) ;) (goto_statement "goto switchD_0022373b_caseD_19;" goto statement_identifier ;)) (case_statement "case 4:\n    uVar3 = FUN_002247d0(local_50);\n    local_50[0] = local_50[0] + uVar3;\n    goto switchD_0022373b_caseD_19;" case number_literal : (expression_statement "uVar3 = FUN_002247d0(local_50);" (assignment_expression "uVar3 = FUN_002247d0(local_50)" identifier = (call_expression "FUN_002247d0(local_50)" identifier (argument_list "(local_50)" ( identifier )))) ;) (expression_statement "local_50[0] = local_50[0] + uVar3;" (assignment_expression "local_50[0] = local_50[0] + uVar3" (subscript_expression "local_50[0]" identifier [ number_literal ]) = (binary_expression "local_50[0] + uVar3" (subscript_expression "local_50[0]" identifier [ number_literal ]) + identifier)) ;) (goto_statement "goto switchD_0022373b_caseD_19;" goto statement_identifier ;)) (case_statement "case 5:" case number_literal :) (case_statement "case 0x12:\n    local_50[0] = local_50[0] + 2;\n    goto switchD_0022373b_caseD_19;" case number_literal : (expression_statement "local_50[0] = local_50[0] + 2;" (assignment_expression "local_50[0] = local_50[0] + 2" (subscript_expression "local_50[0]" identifier [ number_literal ]) = (binary_expression "local_50[0] + 2" (subscript_expression "local_50[0]" identifier [ number_literal ]) + number_literal)) ;) (goto_statement "goto switchD_0022373b_caseD_19;" goto statement_identifier ;)) (case_statement "case 6:" case number_literal :) (case_statement "case 0x13:\n    local_50[0] = local_50[0] + 4;\n    goto switchD_0022373b_caseD_19;" case number_literal : (expression_statement "local_50[0] = local_50[0] + 4;" (assignment_expression "local_50[0] = local_50[0] + 4" (subscript_expression "local_50[0]" identifier [ number_literal ]) = (binary_expression "local_50[0] + 4" (subscript_expression "local_50[0]" identifier [ number_literal ]) + number_literal)) ;) (goto_statement "goto switchD_0022373b_caseD_19;" goto statement_identifier ;)) (case_statement "case 7:" case number_literal :) (case_statement "case 0x14:" case number_literal :) (case_statement "case 0x20:\n    local_50[0] = local_50[0] + 8;\n    goto switchD_0022373b_caseD_19;" case number_literal : (expression_statement "local_50[0] = local_50[0] + 8;" (assignment_expression "local_50[0] = local_50[0] + 8" (subscript_expression "local_50[0]" identifier [ number_literal ]) = (binary_expression "local_50[0] + 8" (subscript_expression "local_50[0]" identifier [ number_literal ]) + number_literal)) ;) (goto_statement "goto switchD_0022373b_caseD_19;" goto statement_identifier ;)) (case_statement "case 8:\n    sVar5 = strlen((char *)local_50[0]);\n    local_50[0] = pbVar6 + sVar5 + 1;\n    goto switchD_0022373b_caseD_19;" case number_literal : (expression_statement "sVar5 = strlen((char *)local_50[0]);" (assignment_expression "sVar5 = strlen((char *)local_50[0])" identifier = (call_expression "strlen((char *)local_50[0])" identifier (argument_list "((char *)local_50[0])" ( (cast_expression "(char *)local_50[0]" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "local_50[0]" identifier [ number_literal ])) )))) ;) (expression_statement "local_50[0] = pbVar6 + sVar5 + 1;" (assignment_expression "local_50[0] = pbVar6 + sVar5 + 1" (subscript_expression "local_50[0]" identifier [ number_literal ]) = (binary_expression "pbVar6 + sVar5 + 1" (binary_expression "pbVar6 + sVar5" identifier + identifier) + number_literal)) ;) (goto_statement "goto switchD_0022373b_caseD_19;" goto statement_identifier ;)) (case_statement "case 9:" case number_literal :) (case_statement "case 0x18:\n    bVar1 = *local_50[0];\n    uVar4 = (ulong)bVar1;\n    if ((char)bVar1 < '\0') {\n      uVar4 = FUN_002817f0(local_50[0] + 1,local_40,bVar1);\n    }\n    else {\n      local_40[0] = 1;\n    }\n    local_50[0] = local_50[0] + uVar4 + local_40[0];\n    goto switchD_0022373b_caseD_19;" case number_literal : (expression_statement "bVar1 = *local_50[0];" (assignment_expression "bVar1 = *local_50[0]" identifier = (pointer_expression "*local_50[0]" * (subscript_expression "local_50[0]" identifier [ number_literal ]))) ;) (expression_statement "uVar4 = (ulong)bVar1;" (assignment_expression "uVar4 = (ulong)bVar1" identifier = (cast_expression "(ulong)bVar1" ( (type_descriptor "ulong" type_identifier) ) identifier)) ;) (if_statement "if ((char)bVar1 < '\0') {\n      uVar4 = FUN_002817f0(local_50[0] + 1,local_40,bVar1);\n    }\n    else {\n      local_40[0] = 1;\n    }" if (parenthesized_expression "((char)bVar1 < '\0')" ( (binary_expression "(char)bVar1 < '\0'" (cast_expression "(char)bVar1" ( (type_descriptor "char" primitive_type) ) identifier) < (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      uVar4 = FUN_002817f0(local_50[0] + 1,local_40,bVar1);\n    }" { (expression_statement "uVar4 = FUN_002817f0(local_50[0] + 1,local_40,bVar1);" (assignment_expression "uVar4 = FUN_002817f0(local_50[0] + 1,local_40,bVar1)" identifier = (call_expression "FUN_002817f0(local_50[0] + 1,local_40,bVar1)" identifier (argument_list "(local_50[0] + 1,local_40,bVar1)" ( (binary_expression "local_50[0] + 1" (subscript_expression "local_50[0]" identifier [ number_literal ]) + number_literal) , identifier , identifier )))) ;) }) (else_clause "else {\n      local_40[0] = 1;\n    }" else (compound_statement "{\n      local_40[0] = 1;\n    }" { (expression_statement "local_40[0] = 1;" (assignment_expression "local_40[0] = 1" (subscript_expression "local_40[0]" identifier [ number_literal ]) = number_literal) ;) }))) (expression_statement "local_50[0] = local_50[0] + uVar4 + local_40[0];" (assignment_expression "local_50[0] = local_50[0] + uVar4 + local_40[0]" (subscript_expression "local_50[0]" identifier [ number_literal ]) = (binary_expression "local_50[0] + uVar4 + local_40[0]" (binary_expression "local_50[0] + uVar4" (subscript_expression "local_50[0]" identifier [ number_literal ]) + identifier) + (subscript_expression "local_40[0]" identifier [ number_literal ]))) ;) (goto_statement "goto switchD_0022373b_caseD_19;" goto statement_identifier ;)) (case_statement "case 10:\n    local_50[0] = local_50[0] + (ulong)*local_50[0] + 1;\n    goto switchD_0022373b_caseD_19;" case number_literal : (expression_statement "local_50[0] = local_50[0] + (ulong)*local_50[0] + 1;" (assignment_expression "local_50[0] = local_50[0] + (ulong)*local_50[0] + 1" (subscript_expression "local_50[0]" identifier [ number_literal ]) = (binary_expression "local_50[0] + (ulong)*local_50[0] + 1" (binary_expression "local_50[0] + (ulong)*local_50[0]" (subscript_expression "local_50[0]" identifier [ number_literal ]) + (binary_expression "(ulong)*local_50[0]" (parenthesized_expression "(ulong)" ( identifier )) * (subscript_expression "local_50[0]" identifier [ number_literal ]))) + number_literal)) ;) (goto_statement "goto switchD_0022373b_caseD_19;" goto statement_identifier ;)) (case_statement "case 0xb:" case number_literal :) (case_statement "case 0xc:" case number_literal :) (case_statement "case 0x11:\n    local_50[0] = local_50[0] + 1;\n    goto switchD_0022373b_caseD_19;" case number_literal : (expression_statement "local_50[0] = local_50[0] + 1;" (assignment_expression "local_50[0] = local_50[0] + 1" (subscript_expression "local_50[0]" identifier [ number_literal ]) = (binary_expression "local_50[0] + 1" (subscript_expression "local_50[0]" identifier [ number_literal ]) + number_literal)) ;) (goto_statement "goto switchD_0022373b_caseD_19;" goto statement_identifier ;)) (case_statement "case 0xd:\n    if ((char)*local_50[0] < '\0') {\n      FUN_00281860(local_50[0] + 1,local_40,*local_50[0]);\n      local_50[0] = local_50[0] + local_40[0];\n      goto switchD_0022373b_caseD_19;\n    }\n    break;" case number_literal : (if_statement "if ((char)*local_50[0] < '\0') {\n      FUN_00281860(local_50[0] + 1,local_40,*local_50[0]);\n      local_50[0] = local_50[0] + local_40[0];\n      goto switchD_0022373b_caseD_19;\n    }" if (parenthesized_expression "((char)*local_50[0] < '\0')" ( (binary_expression "(char)*local_50[0] < '\0'" (cast_expression "(char)*local_50[0]" ( (type_descriptor "char" primitive_type) ) (pointer_expression "*local_50[0]" * (subscript_expression "local_50[0]" identifier [ number_literal ]))) < (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      FUN_00281860(local_50[0] + 1,local_40,*local_50[0]);\n      local_50[0] = local_50[0] + local_40[0];\n      goto switchD_0022373b_caseD_19;\n    }" { (expression_statement "FUN_00281860(local_50[0] + 1,local_40,*local_50[0]);" (call_expression "FUN_00281860(local_50[0] + 1,local_40,*local_50[0])" identifier (argument_list "(local_50[0] + 1,local_40,*local_50[0])" ( (binary_expression "local_50[0] + 1" (subscript_expression "local_50[0]" identifier [ number_literal ]) + number_literal) , identifier , (pointer_expression "*local_50[0]" * (subscript_expression "local_50[0]" identifier [ number_literal ])) ))) ;) (expression_statement "local_50[0] = local_50[0] + local_40[0];" (assignment_expression "local_50[0] = local_50[0] + local_40[0]" (subscript_expression "local_50[0]" identifier [ number_literal ]) = (binary_expression "local_50[0] + local_40[0]" (subscript_expression "local_50[0]" identifier [ number_literal ]) + (subscript_expression "local_40[0]" identifier [ number_literal ]))) ;) (goto_statement "goto switchD_0022373b_caseD_19;" goto statement_identifier ;) })) (break_statement "break;" break ;)) (case_statement "case 0xe:" case number_literal :) (case_statement "case 0x17:\n    local_50[0] = local_50[0] + (-(ulong)(param_7 == '\0') & 0xfffffffffffffffc) + 8;\n    goto switchD_0022373b_caseD_19;" case number_literal : (expression_statement "local_50[0] = local_50[0] + (-(ulong)(param_7 == '\0') & 0xfffffffffffffffc) + 8;" (assignment_expression "local_50[0] = local_50[0] + (-(ulong)(param_7 == '\0') & 0xfffffffffffffffc) + 8" (subscript_expression "local_50[0]" identifier [ number_literal ]) = (binary_expression "local_50[0] + (-(ulong)(param_7 == '\0') & 0xfffffffffffffffc) + 8" (binary_expression "local_50[0] + (-(ulong)(param_7 == '\0') & 0xfffffffffffffffc)" (subscript_expression "local_50[0]" identifier [ number_literal ]) + (parenthesized_expression "(-(ulong)(param_7 == '\0') & 0xfffffffffffffffc)" ( (binary_expression "-(ulong)(param_7 == '\0') & 0xfffffffffffffffc" (unary_expression "-(ulong)(param_7 == '\0')" - (call_expression "(ulong)(param_7 == '\0')" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(param_7 == '\0')" ( (binary_expression "param_7 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )))) & number_literal) ))) + number_literal)) ;) (goto_statement "goto switchD_0022373b_caseD_19;" goto statement_identifier ;)) (case_statement "case 0xf:" case number_literal :) (case_statement "case 0x15:\n    if ((char)*local_50[0] < '\0') {\n      FUN_002817f0(local_50[0] + 1,local_40,*local_50[0]);\n      local_50[0] = local_50[0] + local_40[0];\n      goto switchD_0022373b_caseD_19;\n    }\n    break;" case number_literal : (if_statement "if ((char)*local_50[0] < '\0') {\n      FUN_002817f0(local_50[0] + 1,local_40,*local_50[0]);\n      local_50[0] = local_50[0] + local_40[0];\n      goto switchD_0022373b_caseD_19;\n    }" if (parenthesized_expression "((char)*local_50[0] < '\0')" ( (binary_expression "(char)*local_50[0] < '\0'" (cast_expression "(char)*local_50[0]" ( (type_descriptor "char" primitive_type) ) (pointer_expression "*local_50[0]" * (subscript_expression "local_50[0]" identifier [ number_literal ]))) < (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      FUN_002817f0(local_50[0] + 1,local_40,*local_50[0]);\n      local_50[0] = local_50[0] + local_40[0];\n      goto switchD_0022373b_caseD_19;\n    }" { (expression_statement "FUN_002817f0(local_50[0] + 1,local_40,*local_50[0]);" (call_expression "FUN_002817f0(local_50[0] + 1,local_40,*local_50[0])" identifier (argument_list "(local_50[0] + 1,local_40,*local_50[0])" ( (binary_expression "local_50[0] + 1" (subscript_expression "local_50[0]" identifier [ number_literal ]) + number_literal) , identifier , (pointer_expression "*local_50[0]" * (subscript_expression "local_50[0]" identifier [ number_literal ])) ))) ;) (expression_statement "local_50[0] = local_50[0] + local_40[0];" (assignment_expression "local_50[0] = local_50[0] + local_40[0]" (subscript_expression "local_50[0]" identifier [ number_literal ]) = (binary_expression "local_50[0] + local_40[0]" (subscript_expression "local_50[0]" identifier [ number_literal ]) + (subscript_expression "local_40[0]" identifier [ number_literal ]))) ;) (goto_statement "goto switchD_0022373b_caseD_19;" goto statement_identifier ;) })) (break_statement "break;" break ;)) (case_statement "case 0x19:\n    goto switchD_0022373b_caseD_19;" case number_literal : (goto_statement "goto switchD_0022373b_caseD_19;" goto statement_identifier ;)) })) (expression_statement "local_50[0] = local_50[0] + 1;" (assignment_expression "local_50[0] = local_50[0] + 1" (subscript_expression "local_50[0]" identifier [ number_literal ]) = (binary_expression "local_50[0] + 1" (subscript_expression "local_50[0]" identifier [ number_literal ]) + number_literal)) ;) (expression_statement "local_40[0] = 1;" (assignment_expression "local_40[0] = 1" (subscript_expression "local_40[0]" identifier [ number_literal ]) = number_literal) ;) (goto_statement "goto switchD_0022373b_caseD_19;" goto statement_identifier ;) (labeled_statement "switchD_0022373b_caseD_0:\n  return;" statement_identifier : (return_statement "return;" return ;)) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * (array_declarator IDENT [ LIT ])) ;) (declaration (sized_type_specifier long) (array_declarator IDENT [ LIT ]) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (subscript_expression IDENT [ LIT ]))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) }))) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( IDENT )) * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (pointer_expression * IDENT)) < (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (subscript_expression IDENT [ LIT ]))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) }))) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT == LIT) && (binary_expression IDENT == LIT)) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = (subscript_expression IDENT [ LIT ])) ;) (return_statement return ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT <= (subscript_expression IDENT [ LIT ])) )) (compound_statement { (return_statement return ;) })) (switch_statement switch (parenthesized_expression ( IDENT )) (compound_statement { (case_statement default : (goto_statement goto statement_identifier ;)) (case_statement case LIT :) (case_statement case LIT : (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression (subscript_expression IDENT [ LIT ]) + IDENT)) ;) (goto_statement goto statement_identifier ;)) (case_statement case LIT : (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression (subscript_expression IDENT [ LIT ]) + IDENT)) ;) (goto_statement goto statement_identifier ;)) (case_statement case LIT : (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression (subscript_expression IDENT [ LIT ]) + IDENT)) ;) (goto_statement goto statement_identifier ;)) (case_statement case LIT :) (case_statement case LIT : (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression (subscript_expression IDENT [ LIT ]) + LIT)) ;) (goto_statement goto statement_identifier ;)) (case_statement case LIT :) (case_statement case LIT : (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression (subscript_expression IDENT [ LIT ]) + LIT)) ;) (goto_statement goto statement_identifier ;)) (case_statement case LIT :) (case_statement case LIT :) (case_statement case LIT : (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression (subscript_expression IDENT [ LIT ]) + LIT)) ;) (goto_statement goto statement_identifier ;)) (case_statement case LIT : (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ])) )))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression (binary_expression IDENT + IDENT) + LIT)) ;) (goto_statement goto statement_identifier ;)) (case_statement case LIT :) (case_statement case LIT : (expression_statement (assignment_expression IDENT = (pointer_expression * (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (binary_expression (subscript_expression IDENT [ LIT ]) + LIT) , IDENT , IDENT )))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) }))) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression (binary_expression (subscript_expression IDENT [ LIT ]) + IDENT) + (subscript_expression IDENT [ LIT ]))) ;) (goto_statement goto statement_identifier ;)) (case_statement case LIT : (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression (binary_expression (subscript_expression IDENT [ LIT ]) + (binary_expression (parenthesized_expression ( IDENT )) * (subscript_expression IDENT [ LIT ]))) + LIT)) ;) (goto_statement goto statement_identifier ;)) (case_statement case LIT :) (case_statement case LIT :) (case_statement case LIT : (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression (subscript_expression IDENT [ LIT ]) + LIT)) ;) (goto_statement goto statement_identifier ;)) (case_statement case LIT : (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (pointer_expression * (subscript_expression IDENT [ LIT ]))) < (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (binary_expression (subscript_expression IDENT [ LIT ]) + LIT) , IDENT , (pointer_expression * (subscript_expression IDENT [ LIT ])) ))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression (subscript_expression IDENT [ LIT ]) + (subscript_expression IDENT [ LIT ]))) ;) (goto_statement goto statement_identifier ;) })) (break_statement break ;)) (case_statement case LIT :) (case_statement case LIT : (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression (binary_expression (subscript_expression IDENT [ LIT ]) + (parenthesized_expression ( (binary_expression (unary_expression - (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT == (char_literal ' escape_sequence ')) )))) & LIT) ))) + LIT)) ;) (goto_statement goto statement_identifier ;)) (case_statement case LIT :) (case_statement case LIT : (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (pointer_expression * (subscript_expression IDENT [ LIT ]))) < (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (binary_expression (subscript_expression IDENT [ LIT ]) + LIT) , IDENT , (pointer_expression * (subscript_expression IDENT [ LIT ])) ))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression (subscript_expression IDENT [ LIT ]) + (subscript_expression IDENT [ LIT ]))) ;) (goto_statement goto statement_identifier ;) })) (break_statement break ;)) (case_statement case LIT : (goto_statement goto statement_identifier ;)) })) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression (subscript_expression IDENT [ LIT ]) + LIT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (goto_statement goto statement_identifier ;) (labeled_statement statement_identifier : (return_statement return ;)) })))
(function_definition "void FUN_00223690(undefined8 param_1,byte *param_2,byte *param_3,undefined8 *param_4,byte *param_5,\n                 int param_6,char param_7)\n\n{\n  byte bVar1;\n  ushort uVar2;\n  uint uVar3;\n  ulong uVar4;\n  size_t sVar5;\n  byte *pbVar6;\n  byte *local_50 [2];\n  long local_40 [2];\n  \n  local_50[0] = param_2;\nswitchD_0022373b_caseD_19:\n  bVar1 = *param_3;\n  pbVar6 = param_3 + 1;\n  if ((char)bVar1 < '\0') {\n    uVar4 = FUN_002817f0(pbVar6,local_40,bVar1);\n    pbVar6 = param_3 + local_40[0];\n  }\n  else {\n    local_40[0] = 1;\n    uVar4 = (ulong)bVar1;\n  }\n  uVar3 = (uint)*pbVar6;\n  param_3 = pbVar6 + 1;\n  if ((char)*pbVar6 < '\0') {\n    uVar3 = FUN_002817f0(param_3,local_40);\n    param_3 = pbVar6 + local_40[0];\n  }\n  else {\n    local_40[0] = 1;\n  }\n  pbVar6 = local_50[0];\n  if (uVar4 == 0 && uVar3 == 0) {\n    *param_4 = local_50[0];\n    return;\n  }\n  if (param_5 <= local_50[0]) {\n    return;\n  }\n  switch(uVar3) {\n  default:\n    goto switchD_0022373b_caseD_0;\n  case 1:\n  case 0x10:\n    local_50[0] = local_50[0] + param_6;\n    goto switchD_0022373b_caseD_19;\n  case 3:\n    uVar2 = FUN_00224760(local_50);\n    local_50[0] = local_50[0] + uVar2;\n    goto switchD_0022373b_caseD_19;\n  case 4:\n    uVar3 = FUN_002247d0(local_50);\n    local_50[0] = local_50[0] + uVar3;\n    goto switchD_0022373b_caseD_19;\n  case 5:\n  case 0x12:\n    local_50[0] = local_50[0] + 2;\n    goto switchD_0022373b_caseD_19;\n  case 6:\n  case 0x13:\n    local_50[0] = local_50[0] + 4;\n    goto switchD_0022373b_caseD_19;\n  case 7:\n  case 0x14:\n  case 0x20:\n    local_50[0] = local_50[0] + 8;\n    goto switchD_0022373b_caseD_19;\n  case 8:\n    sVar5 = strlen((char *)local_50[0]);\n    local_50[0] = pbVar6 + sVar5 + 1;\n    goto switchD_0022373b_caseD_19;\n  case 9:\n  case 0x18:\n    bVar1 = *local_50[0];\n    uVar4 = (ulong)bVar1;\n    if ((char)bVar1 < '\0') {\n      uVar4 = FUN_002817f0(local_50[0] + 1,local_40,bVar1);\n    }\n    else {\n      local_40[0] = 1;\n    }\n    local_50[0] = local_50[0] + uVar4 + local_40[0];\n    goto switchD_0022373b_caseD_19;\n  case 10:\n    local_50[0] = local_50[0] + (ulong)*local_50[0] + 1;\n    goto switchD_0022373b_caseD_19;\n  case 0xb:\n  case 0xc:\n  case 0x11:\n    local_50[0] = local_50[0] + 1;\n    goto switchD_0022373b_caseD_19;\n  case 0xd:\n    if ((char)*local_50[0] < '\0') {\n      FUN_00281860(local_50[0] + 1,local_40,*local_50[0]);\n      local_50[0] = local_50[0] + local_40[0];\n      goto switchD_0022373b_caseD_19;\n    }\n    break;\n  case 0xe:\n  case 0x17:\n    local_50[0] = local_50[0] + (-(ulong)(param_7 == '\0') & 0xfffffffffffffffc) + 8;\n    goto switchD_0022373b_caseD_19;\n  case 0xf:\n  case 0x15:\n    if ((char)*local_50[0] < '\0') {\n      FUN_002817f0(local_50[0] + 1,local_40,*local_50[0]);\n      local_50[0] = local_50[0] + local_40[0];\n      goto switchD_0022373b_caseD_19;\n    }\n    break;\n  case 0x19:\n    goto switchD_0022373b_caseD_19;\n  }\n  local_50[0] = local_50[0] + 1;\n  local_40[0] = 1;\n  goto switchD_0022373b_caseD_19;\nswitchD_0022373b_caseD_0:\n  return;\n}" (primitive_type "void") (function_declarator "FUN_00223690(undefined8 param_1,byte *param_2,byte *param_3,undefined8 *param_4,byte *param_5,\n                 int param_6,char param_7)" (identifier "FUN_00223690") (parameter_list "(undefined8 param_1,byte *param_2,byte *param_3,undefined8 *param_4,byte *param_5,\n                 int param_6,char param_7)" (( "(") (parameter_declaration "undefined8 param_1" (type_identifier "undefined8") (identifier "param_1")) (, ",") (parameter_declaration "byte *param_2" (type_identifier "byte") (pointer_declarator "*param_2" (* "*") (identifier "param_2"))) (, ",") (parameter_declaration "byte *param_3" (type_identifier "byte") (pointer_declarator "*param_3" (* "*") (identifier "param_3"))) (, ",") (parameter_declaration "undefined8 *param_4" (type_identifier "undefined8") (pointer_declarator "*param_4" (* "*") (identifier "param_4"))) (, ",") (parameter_declaration "byte *param_5" (type_identifier "byte") (pointer_declarator "*param_5" (* "*") (identifier "param_5"))) (, ",") (parameter_declaration "int param_6" (primitive_type "int") (identifier "param_6")) (, ",") (parameter_declaration "char param_7" (primitive_type "char") (identifier "param_7")) () ")"))) (compound_statement "{\n  byte bVar1;\n  ushort uVar2;\n  uint uVar3;\n  ulong uVar4;\n  size_t sVar5;\n  byte *pbVar6;\n  byte *local_50 [2];\n  long local_40 [2];\n  \n  local_50[0] = param_2;\nswitchD_0022373b_caseD_19:\n  bVar1 = *param_3;\n  pbVar6 = param_3 + 1;\n  if ((char)bVar1 < '\0') {\n    uVar4 = FUN_002817f0(pbVar6,local_40,bVar1);\n    pbVar6 = param_3 + local_40[0];\n  }\n  else {\n    local_40[0] = 1;\n    uVar4 = (ulong)bVar1;\n  }\n  uVar3 = (uint)*pbVar6;\n  param_3 = pbVar6 + 1;\n  if ((char)*pbVar6 < '\0') {\n    uVar3 = FUN_002817f0(param_3,local_40);\n    param_3 = pbVar6 + local_40[0];\n  }\n  else {\n    local_40[0] = 1;\n  }\n  pbVar6 = local_50[0];\n  if (uVar4 == 0 && uVar3 == 0) {\n    *param_4 = local_50[0];\n    return;\n  }\n  if (param_5 <= local_50[0]) {\n    return;\n  }\n  switch(uVar3) {\n  default:\n    goto switchD_0022373b_caseD_0;\n  case 1:\n  case 0x10:\n    local_50[0] = local_50[0] + param_6;\n    goto switchD_0022373b_caseD_19;\n  case 3:\n    uVar2 = FUN_00224760(local_50);\n    local_50[0] = local_50[0] + uVar2;\n    goto switchD_0022373b_caseD_19;\n  case 4:\n    uVar3 = FUN_002247d0(local_50);\n    local_50[0] = local_50[0] + uVar3;\n    goto switchD_0022373b_caseD_19;\n  case 5:\n  case 0x12:\n    local_50[0] = local_50[0] + 2;\n    goto switchD_0022373b_caseD_19;\n  case 6:\n  case 0x13:\n    local_50[0] = local_50[0] + 4;\n    goto switchD_0022373b_caseD_19;\n  case 7:\n  case 0x14:\n  case 0x20:\n    local_50[0] = local_50[0] + 8;\n    goto switchD_0022373b_caseD_19;\n  case 8:\n    sVar5 = strlen((char *)local_50[0]);\n    local_50[0] = pbVar6 + sVar5 + 1;\n    goto switchD_0022373b_caseD_19;\n  case 9:\n  case 0x18:\n    bVar1 = *local_50[0];\n    uVar4 = (ulong)bVar1;\n    if ((char)bVar1 < '\0') {\n      uVar4 = FUN_002817f0(local_50[0] + 1,local_40,bVar1);\n    }\n    else {\n      local_40[0] = 1;\n    }\n    local_50[0] = local_50[0] + uVar4 + local_40[0];\n    goto switchD_0022373b_caseD_19;\n  case 10:\n    local_50[0] = local_50[0] + (ulong)*local_50[0] + 1;\n    goto switchD_0022373b_caseD_19;\n  case 0xb:\n  case 0xc:\n  case 0x11:\n    local_50[0] = local_50[0] + 1;\n    goto switchD_0022373b_caseD_19;\n  case 0xd:\n    if ((char)*local_50[0] < '\0') {\n      FUN_00281860(local_50[0] + 1,local_40,*local_50[0]);\n      local_50[0] = local_50[0] + local_40[0];\n      goto switchD_0022373b_caseD_19;\n    }\n    break;\n  case 0xe:\n  case 0x17:\n    local_50[0] = local_50[0] + (-(ulong)(param_7 == '\0') & 0xfffffffffffffffc) + 8;\n    goto switchD_0022373b_caseD_19;\n  case 0xf:\n  case 0x15:\n    if ((char)*local_50[0] < '\0') {\n      FUN_002817f0(local_50[0] + 1,local_40,*local_50[0]);\n      local_50[0] = local_50[0] + local_40[0];\n      goto switchD_0022373b_caseD_19;\n    }\n    break;\n  case 0x19:\n    goto switchD_0022373b_caseD_19;\n  }\n  local_50[0] = local_50[0] + 1;\n  local_40[0] = 1;\n  goto switchD_0022373b_caseD_19;\nswitchD_0022373b_caseD_0:\n  return;\n}" ({ "{") (declaration "byte bVar1;" (type_identifier "byte") (identifier "bVar1") (; ";")) (declaration "ushort uVar2;" (type_identifier "ushort") (identifier "uVar2") (; ";")) (declaration "uint uVar3;" (type_identifier "uint") (identifier "uVar3") (; ";")) (declaration "ulong uVar4;" (type_identifier "ulong") (identifier "uVar4") (; ";")) (declaration "size_t sVar5;" (primitive_type "size_t") (identifier "sVar5") (; ";")) (declaration "byte *pbVar6;" (type_identifier "byte") (pointer_declarator "*pbVar6" (* "*") (identifier "pbVar6")) (; ";")) (declaration "byte *local_50 [2];" (type_identifier "byte") (pointer_declarator "*local_50 [2]" (* "*") (array_declarator "local_50 [2]" (identifier "local_50") ([ "[") (number_literal "2") (] "]"))) (; ";")) (declaration "long local_40 [2];" (sized_type_specifier "long" (long "long")) (array_declarator "local_40 [2]" (identifier "local_40") ([ "[") (number_literal "2") (] "]")) (; ";")) (expression_statement "local_50[0] = param_2;" (assignment_expression "local_50[0] = param_2" (subscript_expression "local_50[0]" (identifier "local_50") ([ "[") (number_literal "0") (] "]")) (= "=") (identifier "param_2")) (; ";")) (labeled_statement "switchD_0022373b_caseD_19:\n  bVar1 = *param_3;" (statement_identifier "switchD_0022373b_caseD_19") (: ":") (expression_statement "bVar1 = *param_3;" (assignment_expression "bVar1 = *param_3" (identifier "bVar1") (= "=") (pointer_expression "*param_3" (* "*") (identifier "param_3"))) (; ";"))) (expression_statement "pbVar6 = param_3 + 1;" (assignment_expression "pbVar6 = param_3 + 1" (identifier "pbVar6") (= "=") (binary_expression "param_3 + 1" (identifier "param_3") (+ "+") (number_literal "1"))) (; ";")) (if_statement "if ((char)bVar1 < '\0') {\n    uVar4 = FUN_002817f0(pbVar6,local_40,bVar1);\n    pbVar6 = param_3 + local_40[0];\n  }\n  else {\n    local_40[0] = 1;\n    uVar4 = (ulong)bVar1;\n  }" (if "if") (parenthesized_expression "((char)bVar1 < '\0')" (( "(") (binary_expression "(char)bVar1 < '\0'" (cast_expression "(char)bVar1" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (identifier "bVar1")) (< "<") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n    uVar4 = FUN_002817f0(pbVar6,local_40,bVar1);\n    pbVar6 = param_3 + local_40[0];\n  }" ({ "{") (expression_statement "uVar4 = FUN_002817f0(pbVar6,local_40,bVar1);" (assignment_expression "uVar4 = FUN_002817f0(pbVar6,local_40,bVar1)" (identifier "uVar4") (= "=") (call_expression "FUN_002817f0(pbVar6,local_40,bVar1)" (identifier "FUN_002817f0") (argument_list "(pbVar6,local_40,bVar1)" (( "(") (identifier "pbVar6") (, ",") (identifier "local_40") (, ",") (identifier "bVar1") () ")")))) (; ";")) (expression_statement "pbVar6 = param_3 + local_40[0];" (assignment_expression "pbVar6 = param_3 + local_40[0]" (identifier "pbVar6") (= "=") (binary_expression "param_3 + local_40[0]" (identifier "param_3") (+ "+") (subscript_expression "local_40[0]" (identifier "local_40") ([ "[") (number_literal "0") (] "]")))) (; ";")) (} "}")) (else_clause "else {\n    local_40[0] = 1;\n    uVar4 = (ulong)bVar1;\n  }" (else "else") (compound_statement "{\n    local_40[0] = 1;\n    uVar4 = (ulong)bVar1;\n  }" ({ "{") (expression_statement "local_40[0] = 1;" (assignment_expression "local_40[0] = 1" (subscript_expression "local_40[0]" (identifier "local_40") ([ "[") (number_literal "0") (] "]")) (= "=") (number_literal "1")) (; ";")) (expression_statement "uVar4 = (ulong)bVar1;" (assignment_expression "uVar4 = (ulong)bVar1" (identifier "uVar4") (= "=") (cast_expression "(ulong)bVar1" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "bVar1"))) (; ";")) (} "}")))) (expression_statement "uVar3 = (uint)*pbVar6;" (assignment_expression "uVar3 = (uint)*pbVar6" (identifier "uVar3") (= "=") (binary_expression "(uint)*pbVar6" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (* "*") (identifier "pbVar6"))) (; ";")) (expression_statement "param_3 = pbVar6 + 1;" (assignment_expression "param_3 = pbVar6 + 1" (identifier "param_3") (= "=") (binary_expression "pbVar6 + 1" (identifier "pbVar6") (+ "+") (number_literal "1"))) (; ";")) (if_statement "if ((char)*pbVar6 < '\0') {\n    uVar3 = FUN_002817f0(param_3,local_40);\n    param_3 = pbVar6 + local_40[0];\n  }\n  else {\n    local_40[0] = 1;\n  }" (if "if") (parenthesized_expression "((char)*pbVar6 < '\0')" (( "(") (binary_expression "(char)*pbVar6 < '\0'" (cast_expression "(char)*pbVar6" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (pointer_expression "*pbVar6" (* "*") (identifier "pbVar6"))) (< "<") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n    uVar3 = FUN_002817f0(param_3,local_40);\n    param_3 = pbVar6 + local_40[0];\n  }" ({ "{") (expression_statement "uVar3 = FUN_002817f0(param_3,local_40);" (assignment_expression "uVar3 = FUN_002817f0(param_3,local_40)" (identifier "uVar3") (= "=") (call_expression "FUN_002817f0(param_3,local_40)" (identifier "FUN_002817f0") (argument_list "(param_3,local_40)" (( "(") (identifier "param_3") (, ",") (identifier "local_40") () ")")))) (; ";")) (expression_statement "param_3 = pbVar6 + local_40[0];" (assignment_expression "param_3 = pbVar6 + local_40[0]" (identifier "param_3") (= "=") (binary_expression "pbVar6 + local_40[0]" (identifier "pbVar6") (+ "+") (subscript_expression "local_40[0]" (identifier "local_40") ([ "[") (number_literal "0") (] "]")))) (; ";")) (} "}")) (else_clause "else {\n    local_40[0] = 1;\n  }" (else "else") (compound_statement "{\n    local_40[0] = 1;\n  }" ({ "{") (expression_statement "local_40[0] = 1;" (assignment_expression "local_40[0] = 1" (subscript_expression "local_40[0]" (identifier "local_40") ([ "[") (number_literal "0") (] "]")) (= "=") (number_literal "1")) (; ";")) (} "}")))) (expression_statement "pbVar6 = local_50[0];" (assignment_expression "pbVar6 = local_50[0]" (identifier "pbVar6") (= "=") (subscript_expression "local_50[0]" (identifier "local_50") ([ "[") (number_literal "0") (] "]"))) (; ";")) (if_statement "if (uVar4 == 0 && uVar3 == 0) {\n    *param_4 = local_50[0];\n    return;\n  }" (if "if") (parenthesized_expression "(uVar4 == 0 && uVar3 == 0)" (( "(") (binary_expression "uVar4 == 0 && uVar3 == 0" (binary_expression "uVar4 == 0" (identifier "uVar4") (== "==") (number_literal "0")) (&& "&&") (binary_expression "uVar3 == 0" (identifier "uVar3") (== "==") (number_literal "0"))) () ")")) (compound_statement "{\n    *param_4 = local_50[0];\n    return;\n  }" ({ "{") (expression_statement "*param_4 = local_50[0];" (assignment_expression "*param_4 = local_50[0]" (pointer_expression "*param_4" (* "*") (identifier "param_4")) (= "=") (subscript_expression "local_50[0]" (identifier "local_50") ([ "[") (number_literal "0") (] "]"))) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}"))) (if_statement "if (param_5 <= local_50[0]) {\n    return;\n  }" (if "if") (parenthesized_expression "(param_5 <= local_50[0])" (( "(") (binary_expression "param_5 <= local_50[0]" (identifier "param_5") (<= "<=") (subscript_expression "local_50[0]" (identifier "local_50") ([ "[") (number_literal "0") (] "]"))) () ")")) (compound_statement "{\n    return;\n  }" ({ "{") (return_statement "return;" (return "return") (; ";")) (} "}"))) (switch_statement "switch(uVar3) {\n  default:\n    goto switchD_0022373b_caseD_0;\n  case 1:\n  case 0x10:\n    local_50[0] = local_50[0] + param_6;\n    goto switchD_0022373b_caseD_19;\n  case 3:\n    uVar2 = FUN_00224760(local_50);\n    local_50[0] = local_50[0] + uVar2;\n    goto switchD_0022373b_caseD_19;\n  case 4:\n    uVar3 = FUN_002247d0(local_50);\n    local_50[0] = local_50[0] + uVar3;\n    goto switchD_0022373b_caseD_19;\n  case 5:\n  case 0x12:\n    local_50[0] = local_50[0] + 2;\n    goto switchD_0022373b_caseD_19;\n  case 6:\n  case 0x13:\n    local_50[0] = local_50[0] + 4;\n    goto switchD_0022373b_caseD_19;\n  case 7:\n  case 0x14:\n  case 0x20:\n    local_50[0] = local_50[0] + 8;\n    goto switchD_0022373b_caseD_19;\n  case 8:\n    sVar5 = strlen((char *)local_50[0]);\n    local_50[0] = pbVar6 + sVar5 + 1;\n    goto switchD_0022373b_caseD_19;\n  case 9:\n  case 0x18:\n    bVar1 = *local_50[0];\n    uVar4 = (ulong)bVar1;\n    if ((char)bVar1 < '\0') {\n      uVar4 = FUN_002817f0(local_50[0] + 1,local_40,bVar1);\n    }\n    else {\n      local_40[0] = 1;\n    }\n    local_50[0] = local_50[0] + uVar4 + local_40[0];\n    goto switchD_0022373b_caseD_19;\n  case 10:\n    local_50[0] = local_50[0] + (ulong)*local_50[0] + 1;\n    goto switchD_0022373b_caseD_19;\n  case 0xb:\n  case 0xc:\n  case 0x11:\n    local_50[0] = local_50[0] + 1;\n    goto switchD_0022373b_caseD_19;\n  case 0xd:\n    if ((char)*local_50[0] < '\0') {\n      FUN_00281860(local_50[0] + 1,local_40,*local_50[0]);\n      local_50[0] = local_50[0] + local_40[0];\n      goto switchD_0022373b_caseD_19;\n    }\n    break;\n  case 0xe:\n  case 0x17:\n    local_50[0] = local_50[0] + (-(ulong)(param_7 == '\0') & 0xfffffffffffffffc) + 8;\n    goto switchD_0022373b_caseD_19;\n  case 0xf:\n  case 0x15:\n    if ((char)*local_50[0] < '\0') {\n      FUN_002817f0(local_50[0] + 1,local_40,*local_50[0]);\n      local_50[0] = local_50[0] + local_40[0];\n      goto switchD_0022373b_caseD_19;\n    }\n    break;\n  case 0x19:\n    goto switchD_0022373b_caseD_19;\n  }" (switch "switch") (parenthesized_expression "(uVar3)" (( "(") (identifier "uVar3") () ")")) (compound_statement "{\n  default:\n    goto switchD_0022373b_caseD_0;\n  case 1:\n  case 0x10:\n    local_50[0] = local_50[0] + param_6;\n    goto switchD_0022373b_caseD_19;\n  case 3:\n    uVar2 = FUN_00224760(local_50);\n    local_50[0] = local_50[0] + uVar2;\n    goto switchD_0022373b_caseD_19;\n  case 4:\n    uVar3 = FUN_002247d0(local_50);\n    local_50[0] = local_50[0] + uVar3;\n    goto switchD_0022373b_caseD_19;\n  case 5:\n  case 0x12:\n    local_50[0] = local_50[0] + 2;\n    goto switchD_0022373b_caseD_19;\n  case 6:\n  case 0x13:\n    local_50[0] = local_50[0] + 4;\n    goto switchD_0022373b_caseD_19;\n  case 7:\n  case 0x14:\n  case 0x20:\n    local_50[0] = local_50[0] + 8;\n    goto switchD_0022373b_caseD_19;\n  case 8:\n    sVar5 = strlen((char *)local_50[0]);\n    local_50[0] = pbVar6 + sVar5 + 1;\n    goto switchD_0022373b_caseD_19;\n  case 9:\n  case 0x18:\n    bVar1 = *local_50[0];\n    uVar4 = (ulong)bVar1;\n    if ((char)bVar1 < '\0') {\n      uVar4 = FUN_002817f0(local_50[0] + 1,local_40,bVar1);\n    }\n    else {\n      local_40[0] = 1;\n    }\n    local_50[0] = local_50[0] + uVar4 + local_40[0];\n    goto switchD_0022373b_caseD_19;\n  case 10:\n    local_50[0] = local_50[0] + (ulong)*local_50[0] + 1;\n    goto switchD_0022373b_caseD_19;\n  case 0xb:\n  case 0xc:\n  case 0x11:\n    local_50[0] = local_50[0] + 1;\n    goto switchD_0022373b_caseD_19;\n  case 0xd:\n    if ((char)*local_50[0] < '\0') {\n      FUN_00281860(local_50[0] + 1,local_40,*local_50[0]);\n      local_50[0] = local_50[0] + local_40[0];\n      goto switchD_0022373b_caseD_19;\n    }\n    break;\n  case 0xe:\n  case 0x17:\n    local_50[0] = local_50[0] + (-(ulong)(param_7 == '\0') & 0xfffffffffffffffc) + 8;\n    goto switchD_0022373b_caseD_19;\n  case 0xf:\n  case 0x15:\n    if ((char)*local_50[0] < '\0') {\n      FUN_002817f0(local_50[0] + 1,local_40,*local_50[0]);\n      local_50[0] = local_50[0] + local_40[0];\n      goto switchD_0022373b_caseD_19;\n    }\n    break;\n  case 0x19:\n    goto switchD_0022373b_caseD_19;\n  }" ({ "{") (case_statement "default:\n    goto switchD_0022373b_caseD_0;" (default "default") (: ":") (goto_statement "goto switchD_0022373b_caseD_0;" (goto "goto") (statement_identifier "switchD_0022373b_caseD_0") (; ";"))) (case_statement "case 1:" (case "case") (number_literal "1") (: ":")) (case_statement "case 0x10:\n    local_50[0] = local_50[0] + param_6;\n    goto switchD_0022373b_caseD_19;" (case "case") (number_literal "0x10") (: ":") (expression_statement "local_50[0] = local_50[0] + param_6;" (assignment_expression "local_50[0] = local_50[0] + param_6" (subscript_expression "local_50[0]" (identifier "local_50") ([ "[") (number_literal "0") (] "]")) (= "=") (binary_expression "local_50[0] + param_6" (subscript_expression "local_50[0]" (identifier "local_50") ([ "[") (number_literal "0") (] "]")) (+ "+") (identifier "param_6"))) (; ";")) (goto_statement "goto switchD_0022373b_caseD_19;" (goto "goto") (statement_identifier "switchD_0022373b_caseD_19") (; ";"))) (case_statement "case 3:\n    uVar2 = FUN_00224760(local_50);\n    local_50[0] = local_50[0] + uVar2;\n    goto switchD_0022373b_caseD_19;" (case "case") (number_literal "3") (: ":") (expression_statement "uVar2 = FUN_00224760(local_50);" (assignment_expression "uVar2 = FUN_00224760(local_50)" (identifier "uVar2") (= "=") (call_expression "FUN_00224760(local_50)" (identifier "FUN_00224760") (argument_list "(local_50)" (( "(") (identifier "local_50") () ")")))) (; ";")) (expression_statement "local_50[0] = local_50[0] + uVar2;" (assignment_expression "local_50[0] = local_50[0] + uVar2" (subscript_expression "local_50[0]" (identifier "local_50") ([ "[") (number_literal "0") (] "]")) (= "=") (binary_expression "local_50[0] + uVar2" (subscript_expression "local_50[0]" (identifier "local_50") ([ "[") (number_literal "0") (] "]")) (+ "+") (identifier "uVar2"))) (; ";")) (goto_statement "goto switchD_0022373b_caseD_19;" (goto "goto") (statement_identifier "switchD_0022373b_caseD_19") (; ";"))) (case_statement "case 4:\n    uVar3 = FUN_002247d0(local_50);\n    local_50[0] = local_50[0] + uVar3;\n    goto switchD_0022373b_caseD_19;" (case "case") (number_literal "4") (: ":") (expression_statement "uVar3 = FUN_002247d0(local_50);" (assignment_expression "uVar3 = FUN_002247d0(local_50)" (identifier "uVar3") (= "=") (call_expression "FUN_002247d0(local_50)" (identifier "FUN_002247d0") (argument_list "(local_50)" (( "(") (identifier "local_50") () ")")))) (; ";")) (expression_statement "local_50[0] = local_50[0] + uVar3;" (assignment_expression "local_50[0] = local_50[0] + uVar3" (subscript_expression "local_50[0]" (identifier "local_50") ([ "[") (number_literal "0") (] "]")) (= "=") (binary_expression "local_50[0] + uVar3" (subscript_expression "local_50[0]" (identifier "local_50") ([ "[") (number_literal "0") (] "]")) (+ "+") (identifier "uVar3"))) (; ";")) (goto_statement "goto switchD_0022373b_caseD_19;" (goto "goto") (statement_identifier "switchD_0022373b_caseD_19") (; ";"))) (case_statement "case 5:" (case "case") (number_literal "5") (: ":")) (case_statement "case 0x12:\n    local_50[0] = local_50[0] + 2;\n    goto switchD_0022373b_caseD_19;" (case "case") (number_literal "0x12") (: ":") (expression_statement "local_50[0] = local_50[0] + 2;" (assignment_expression "local_50[0] = local_50[0] + 2" (subscript_expression "local_50[0]" (identifier "local_50") ([ "[") (number_literal "0") (] "]")) (= "=") (binary_expression "local_50[0] + 2" (subscript_expression "local_50[0]" (identifier "local_50") ([ "[") (number_literal "0") (] "]")) (+ "+") (number_literal "2"))) (; ";")) (goto_statement "goto switchD_0022373b_caseD_19;" (goto "goto") (statement_identifier "switchD_0022373b_caseD_19") (; ";"))) (case_statement "case 6:" (case "case") (number_literal "6") (: ":")) (case_statement "case 0x13:\n    local_50[0] = local_50[0] + 4;\n    goto switchD_0022373b_caseD_19;" (case "case") (number_literal "0x13") (: ":") (expression_statement "local_50[0] = local_50[0] + 4;" (assignment_expression "local_50[0] = local_50[0] + 4" (subscript_expression "local_50[0]" (identifier "local_50") ([ "[") (number_literal "0") (] "]")) (= "=") (binary_expression "local_50[0] + 4" (subscript_expression "local_50[0]" (identifier "local_50") ([ "[") (number_literal "0") (] "]")) (+ "+") (number_literal "4"))) (; ";")) (goto_statement "goto switchD_0022373b_caseD_19;" (goto "goto") (statement_identifier "switchD_0022373b_caseD_19") (; ";"))) (case_statement "case 7:" (case "case") (number_literal "7") (: ":")) (case_statement "case 0x14:" (case "case") (number_literal "0x14") (: ":")) (case_statement "case 0x20:\n    local_50[0] = local_50[0] + 8;\n    goto switchD_0022373b_caseD_19;" (case "case") (number_literal "0x20") (: ":") (expression_statement "local_50[0] = local_50[0] + 8;" (assignment_expression "local_50[0] = local_50[0] + 8" (subscript_expression "local_50[0]" (identifier "local_50") ([ "[") (number_literal "0") (] "]")) (= "=") (binary_expression "local_50[0] + 8" (subscript_expression "local_50[0]" (identifier "local_50") ([ "[") (number_literal "0") (] "]")) (+ "+") (number_literal "8"))) (; ";")) (goto_statement "goto switchD_0022373b_caseD_19;" (goto "goto") (statement_identifier "switchD_0022373b_caseD_19") (; ";"))) (case_statement "case 8:\n    sVar5 = strlen((char *)local_50[0]);\n    local_50[0] = pbVar6 + sVar5 + 1;\n    goto switchD_0022373b_caseD_19;" (case "case") (number_literal "8") (: ":") (expression_statement "sVar5 = strlen((char *)local_50[0]);" (assignment_expression "sVar5 = strlen((char *)local_50[0])" (identifier "sVar5") (= "=") (call_expression "strlen((char *)local_50[0])" (identifier "strlen") (argument_list "((char *)local_50[0])" (( "(") (cast_expression "(char *)local_50[0]" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "local_50[0]" (identifier "local_50") ([ "[") (number_literal "0") (] "]"))) () ")")))) (; ";")) (expression_statement "local_50[0] = pbVar6 + sVar5 + 1;" (assignment_expression "local_50[0] = pbVar6 + sVar5 + 1" (subscript_expression "local_50[0]" (identifier "local_50") ([ "[") (number_literal "0") (] "]")) (= "=") (binary_expression "pbVar6 + sVar5 + 1" (binary_expression "pbVar6 + sVar5" (identifier "pbVar6") (+ "+") (identifier "sVar5")) (+ "+") (number_literal "1"))) (; ";")) (goto_statement "goto switchD_0022373b_caseD_19;" (goto "goto") (statement_identifier "switchD_0022373b_caseD_19") (; ";"))) (case_statement "case 9:" (case "case") (number_literal "9") (: ":")) (case_statement "case 0x18:\n    bVar1 = *local_50[0];\n    uVar4 = (ulong)bVar1;\n    if ((char)bVar1 < '\0') {\n      uVar4 = FUN_002817f0(local_50[0] + 1,local_40,bVar1);\n    }\n    else {\n      local_40[0] = 1;\n    }\n    local_50[0] = local_50[0] + uVar4 + local_40[0];\n    goto switchD_0022373b_caseD_19;" (case "case") (number_literal "0x18") (: ":") (expression_statement "bVar1 = *local_50[0];" (assignment_expression "bVar1 = *local_50[0]" (identifier "bVar1") (= "=") (pointer_expression "*local_50[0]" (* "*") (subscript_expression "local_50[0]" (identifier "local_50") ([ "[") (number_literal "0") (] "]")))) (; ";")) (expression_statement "uVar4 = (ulong)bVar1;" (assignment_expression "uVar4 = (ulong)bVar1" (identifier "uVar4") (= "=") (cast_expression "(ulong)bVar1" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "bVar1"))) (; ";")) (if_statement "if ((char)bVar1 < '\0') {\n      uVar4 = FUN_002817f0(local_50[0] + 1,local_40,bVar1);\n    }\n    else {\n      local_40[0] = 1;\n    }" (if "if") (parenthesized_expression "((char)bVar1 < '\0')" (( "(") (binary_expression "(char)bVar1 < '\0'" (cast_expression "(char)bVar1" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (identifier "bVar1")) (< "<") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n      uVar4 = FUN_002817f0(local_50[0] + 1,local_40,bVar1);\n    }" ({ "{") (expression_statement "uVar4 = FUN_002817f0(local_50[0] + 1,local_40,bVar1);" (assignment_expression "uVar4 = FUN_002817f0(local_50[0] + 1,local_40,bVar1)" (identifier "uVar4") (= "=") (call_expression "FUN_002817f0(local_50[0] + 1,local_40,bVar1)" (identifier "FUN_002817f0") (argument_list "(local_50[0] + 1,local_40,bVar1)" (( "(") (binary_expression "local_50[0] + 1" (subscript_expression "local_50[0]" (identifier "local_50") ([ "[") (number_literal "0") (] "]")) (+ "+") (number_literal "1")) (, ",") (identifier "local_40") (, ",") (identifier "bVar1") () ")")))) (; ";")) (} "}")) (else_clause "else {\n      local_40[0] = 1;\n    }" (else "else") (compound_statement "{\n      local_40[0] = 1;\n    }" ({ "{") (expression_statement "local_40[0] = 1;" (assignment_expression "local_40[0] = 1" (subscript_expression "local_40[0]" (identifier "local_40") ([ "[") (number_literal "0") (] "]")) (= "=") (number_literal "1")) (; ";")) (} "}")))) (expression_statement "local_50[0] = local_50[0] + uVar4 + local_40[0];" (assignment_expression "local_50[0] = local_50[0] + uVar4 + local_40[0]" (subscript_expression "local_50[0]" (identifier "local_50") ([ "[") (number_literal "0") (] "]")) (= "=") (binary_expression "local_50[0] + uVar4 + local_40[0]" (binary_expression "local_50[0] + uVar4" (subscript_expression "local_50[0]" (identifier "local_50") ([ "[") (number_literal "0") (] "]")) (+ "+") (identifier "uVar4")) (+ "+") (subscript_expression "local_40[0]" (identifier "local_40") ([ "[") (number_literal "0") (] "]")))) (; ";")) (goto_statement "goto switchD_0022373b_caseD_19;" (goto "goto") (statement_identifier "switchD_0022373b_caseD_19") (; ";"))) (case_statement "case 10:\n    local_50[0] = local_50[0] + (ulong)*local_50[0] + 1;\n    goto switchD_0022373b_caseD_19;" (case "case") (number_literal "10") (: ":") (expression_statement "local_50[0] = local_50[0] + (ulong)*local_50[0] + 1;" (assignment_expression "local_50[0] = local_50[0] + (ulong)*local_50[0] + 1" (subscript_expression "local_50[0]" (identifier "local_50") ([ "[") (number_literal "0") (] "]")) (= "=") (binary_expression "local_50[0] + (ulong)*local_50[0] + 1" (binary_expression "local_50[0] + (ulong)*local_50[0]" (subscript_expression "local_50[0]" (identifier "local_50") ([ "[") (number_literal "0") (] "]")) (+ "+") (binary_expression "(ulong)*local_50[0]" (parenthesized_expression "(ulong)" (( "(") (identifier "ulong") () ")")) (* "*") (subscript_expression "local_50[0]" (identifier "local_50") ([ "[") (number_literal "0") (] "]")))) (+ "+") (number_literal "1"))) (; ";")) (goto_statement "goto switchD_0022373b_caseD_19;" (goto "goto") (statement_identifier "switchD_0022373b_caseD_19") (; ";"))) (case_statement "case 0xb:" (case "case") (number_literal "0xb") (: ":")) (case_statement "case 0xc:" (case "case") (number_literal "0xc") (: ":")) (case_statement "case 0x11:\n    local_50[0] = local_50[0] + 1;\n    goto switchD_0022373b_caseD_19;" (case "case") (number_literal "0x11") (: ":") (expression_statement "local_50[0] = local_50[0] + 1;" (assignment_expression "local_50[0] = local_50[0] + 1" (subscript_expression "local_50[0]" (identifier "local_50") ([ "[") (number_literal "0") (] "]")) (= "=") (binary_expression "local_50[0] + 1" (subscript_expression "local_50[0]" (identifier "local_50") ([ "[") (number_literal "0") (] "]")) (+ "+") (number_literal "1"))) (; ";")) (goto_statement "goto switchD_0022373b_caseD_19;" (goto "goto") (statement_identifier "switchD_0022373b_caseD_19") (; ";"))) (case_statement "case 0xd:\n    if ((char)*local_50[0] < '\0') {\n      FUN_00281860(local_50[0] + 1,local_40,*local_50[0]);\n      local_50[0] = local_50[0] + local_40[0];\n      goto switchD_0022373b_caseD_19;\n    }\n    break;" (case "case") (number_literal "0xd") (: ":") (if_statement "if ((char)*local_50[0] < '\0') {\n      FUN_00281860(local_50[0] + 1,local_40,*local_50[0]);\n      local_50[0] = local_50[0] + local_40[0];\n      goto switchD_0022373b_caseD_19;\n    }" (if "if") (parenthesized_expression "((char)*local_50[0] < '\0')" (( "(") (binary_expression "(char)*local_50[0] < '\0'" (cast_expression "(char)*local_50[0]" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (pointer_expression "*local_50[0]" (* "*") (subscript_expression "local_50[0]" (identifier "local_50") ([ "[") (number_literal "0") (] "]")))) (< "<") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n      FUN_00281860(local_50[0] + 1,local_40,*local_50[0]);\n      local_50[0] = local_50[0] + local_40[0];\n      goto switchD_0022373b_caseD_19;\n    }" ({ "{") (expression_statement "FUN_00281860(local_50[0] + 1,local_40,*local_50[0]);" (call_expression "FUN_00281860(local_50[0] + 1,local_40,*local_50[0])" (identifier "FUN_00281860") (argument_list "(local_50[0] + 1,local_40,*local_50[0])" (( "(") (binary_expression "local_50[0] + 1" (subscript_expression "local_50[0]" (identifier "local_50") ([ "[") (number_literal "0") (] "]")) (+ "+") (number_literal "1")) (, ",") (identifier "local_40") (, ",") (pointer_expression "*local_50[0]" (* "*") (subscript_expression "local_50[0]" (identifier "local_50") ([ "[") (number_literal "0") (] "]"))) () ")"))) (; ";")) (expression_statement "local_50[0] = local_50[0] + local_40[0];" (assignment_expression "local_50[0] = local_50[0] + local_40[0]" (subscript_expression "local_50[0]" (identifier "local_50") ([ "[") (number_literal "0") (] "]")) (= "=") (binary_expression "local_50[0] + local_40[0]" (subscript_expression "local_50[0]" (identifier "local_50") ([ "[") (number_literal "0") (] "]")) (+ "+") (subscript_expression "local_40[0]" (identifier "local_40") ([ "[") (number_literal "0") (] "]")))) (; ";")) (goto_statement "goto switchD_0022373b_caseD_19;" (goto "goto") (statement_identifier "switchD_0022373b_caseD_19") (; ";")) (} "}"))) (break_statement "break;" (break "break") (; ";"))) (case_statement "case 0xe:" (case "case") (number_literal "0xe") (: ":")) (case_statement "case 0x17:\n    local_50[0] = local_50[0] + (-(ulong)(param_7 == '\0') & 0xfffffffffffffffc) + 8;\n    goto switchD_0022373b_caseD_19;" (case "case") (number_literal "0x17") (: ":") (expression_statement "local_50[0] = local_50[0] + (-(ulong)(param_7 == '\0') & 0xfffffffffffffffc) + 8;" (assignment_expression "local_50[0] = local_50[0] + (-(ulong)(param_7 == '\0') & 0xfffffffffffffffc) + 8" (subscript_expression "local_50[0]" (identifier "local_50") ([ "[") (number_literal "0") (] "]")) (= "=") (binary_expression "local_50[0] + (-(ulong)(param_7 == '\0') & 0xfffffffffffffffc) + 8" (binary_expression "local_50[0] + (-(ulong)(param_7 == '\0') & 0xfffffffffffffffc)" (subscript_expression "local_50[0]" (identifier "local_50") ([ "[") (number_literal "0") (] "]")) (+ "+") (parenthesized_expression "(-(ulong)(param_7 == '\0') & 0xfffffffffffffffc)" (( "(") (binary_expression "-(ulong)(param_7 == '\0') & 0xfffffffffffffffc" (unary_expression "-(ulong)(param_7 == '\0')" (- "-") (call_expression "(ulong)(param_7 == '\0')" (parenthesized_expression "(ulong)" (( "(") (identifier "ulong") () ")")) (argument_list "(param_7 == '\0')" (( "(") (binary_expression "param_7 == '\0'" (identifier "param_7") (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")))) (& "&") (number_literal "0xfffffffffffffffc")) () ")"))) (+ "+") (number_literal "8"))) (; ";")) (goto_statement "goto switchD_0022373b_caseD_19;" (goto "goto") (statement_identifier "switchD_0022373b_caseD_19") (; ";"))) (case_statement "case 0xf:" (case "case") (number_literal "0xf") (: ":")) (case_statement "case 0x15:\n    if ((char)*local_50[0] < '\0') {\n      FUN_002817f0(local_50[0] + 1,local_40,*local_50[0]);\n      local_50[0] = local_50[0] + local_40[0];\n      goto switchD_0022373b_caseD_19;\n    }\n    break;" (case "case") (number_literal "0x15") (: ":") (if_statement "if ((char)*local_50[0] < '\0') {\n      FUN_002817f0(local_50[0] + 1,local_40,*local_50[0]);\n      local_50[0] = local_50[0] + local_40[0];\n      goto switchD_0022373b_caseD_19;\n    }" (if "if") (parenthesized_expression "((char)*local_50[0] < '\0')" (( "(") (binary_expression "(char)*local_50[0] < '\0'" (cast_expression "(char)*local_50[0]" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (pointer_expression "*local_50[0]" (* "*") (subscript_expression "local_50[0]" (identifier "local_50") ([ "[") (number_literal "0") (] "]")))) (< "<") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n      FUN_002817f0(local_50[0] + 1,local_40,*local_50[0]);\n      local_50[0] = local_50[0] + local_40[0];\n      goto switchD_0022373b_caseD_19;\n    }" ({ "{") (expression_statement "FUN_002817f0(local_50[0] + 1,local_40,*local_50[0]);" (call_expression "FUN_002817f0(local_50[0] + 1,local_40,*local_50[0])" (identifier "FUN_002817f0") (argument_list "(local_50[0] + 1,local_40,*local_50[0])" (( "(") (binary_expression "local_50[0] + 1" (subscript_expression "local_50[0]" (identifier "local_50") ([ "[") (number_literal "0") (] "]")) (+ "+") (number_literal "1")) (, ",") (identifier "local_40") (, ",") (pointer_expression "*local_50[0]" (* "*") (subscript_expression "local_50[0]" (identifier "local_50") ([ "[") (number_literal "0") (] "]"))) () ")"))) (; ";")) (expression_statement "local_50[0] = local_50[0] + local_40[0];" (assignment_expression "local_50[0] = local_50[0] + local_40[0]" (subscript_expression "local_50[0]" (identifier "local_50") ([ "[") (number_literal "0") (] "]")) (= "=") (binary_expression "local_50[0] + local_40[0]" (subscript_expression "local_50[0]" (identifier "local_50") ([ "[") (number_literal "0") (] "]")) (+ "+") (subscript_expression "local_40[0]" (identifier "local_40") ([ "[") (number_literal "0") (] "]")))) (; ";")) (goto_statement "goto switchD_0022373b_caseD_19;" (goto "goto") (statement_identifier "switchD_0022373b_caseD_19") (; ";")) (} "}"))) (break_statement "break;" (break "break") (; ";"))) (case_statement "case 0x19:\n    goto switchD_0022373b_caseD_19;" (case "case") (number_literal "0x19") (: ":") (goto_statement "goto switchD_0022373b_caseD_19;" (goto "goto") (statement_identifier "switchD_0022373b_caseD_19") (; ";"))) (} "}"))) (expression_statement "local_50[0] = local_50[0] + 1;" (assignment_expression "local_50[0] = local_50[0] + 1" (subscript_expression "local_50[0]" (identifier "local_50") ([ "[") (number_literal "0") (] "]")) (= "=") (binary_expression "local_50[0] + 1" (subscript_expression "local_50[0]" (identifier "local_50") ([ "[") (number_literal "0") (] "]")) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "local_40[0] = 1;" (assignment_expression "local_40[0] = 1" (subscript_expression "local_40[0]" (identifier "local_40") ([ "[") (number_literal "0") (] "]")) (= "=") (number_literal "1")) (; ";")) (goto_statement "goto switchD_0022373b_caseD_19;" (goto "goto") (statement_identifier "switchD_0022373b_caseD_19") (; ";")) (labeled_statement "switchD_0022373b_caseD_0:\n  return;" (statement_identifier "switchD_0022373b_caseD_0") (: ":") (return_statement "return;" (return "return") (; ";"))) (} "}")))

/* DWARF original prototype: bool get_die_end(Output_reduced_debug_info_section * this, uchar * die,
   uchar * abbrev, uchar * * die_end, uchar * buffer_end, int address_size, bool is64) */

bool __thiscall
gold::type_1::function_1
          (type_1 *this,type_2 *die,type_2 *var_1,type_2 **die_end,
          type_2 *var_7,int var_8,bool is64)

{
  type_3 bVar1;
  bool bVar2;
  type_4 var_10;
  type_4 var_11;
  uint64_t uVar5;
  uint64_t var_5;
  size_t var_13;
  type_5 var_14;
  type_6 var_6;
  type_3 *var_4;
  type_3 *local_50 [2];
  size_t var_3;
  
  local_50[0] = die;
switchD_0022373b_caseD_19:
  bVar1 = *var_1;
  var_4 = var_1 + 1;
  if ((char)bVar1 < '\0') {
    var_5 = var_2(var_4,&var_3,bVar1);
    var_4 = var_1 + var_3;
  }
  else {
    var_3 = 1;
    var_5 = (uint64_t)bVar1;
  }
  bVar1 = *var_4;
  var_6 = (type_6)bVar1;
  var_1 = var_4 + 1;
  if ((char)bVar1 < '\0') {
    uVar5 = var_2(var_1,&var_3,bVar1);
    var_1 = var_4 + var_3;
    var_6 = (type_6)uVar5;
  }
  else {
    var_3 = 1;
  }
  var_4 = local_50[0];
  bVar2 = var_5 == 0 && var_6 == 0;
  if (bVar2) {
    *die_end = local_50[0];
    return bVar2;
  }
  if (var_7 <= local_50[0]) {
    return bVar2;
  }
  switch(var_6) {
  default:
    goto switchD_0022373b_caseD_0;
  case 1:
  case 0x10:
    local_50[0] = local_50[0] + var_8;
    goto switchD_0022373b_caseD_19;
  case 3:
    var_10 = var_9<16>(local_50);
    local_50[0] = local_50[0] + var_10;
    goto switchD_0022373b_caseD_19;
  case 4:
    var_11 = var_9<32>(local_50);
    local_50[0] = local_50[0] + var_11;
    goto switchD_0022373b_caseD_19;
  case 5:
  case 0x12:
    local_50[0] = local_50[0] + 2;
    goto switchD_0022373b_caseD_19;
  case 6:
  case 0x13:
    local_50[0] = local_50[0] + 4;
    goto switchD_0022373b_caseD_19;
  case 7:
  case 0x14:
  case 0x20:
    local_50[0] = local_50[0] + 8;
    goto switchD_0022373b_caseD_19;
  case 8:
    var_13 = var_12((char *)local_50[0]);
    local_50[0] = var_4 + var_13 + 1;
    goto switchD_0022373b_caseD_19;
  case 9:
  case 0x18:
    bVar1 = *local_50[0];
    var_14 = (type_5)bVar1;
    if ((char)bVar1 < '\0') {
      var_14 = var_2(local_50[0] + 1,&var_3,bVar1);
    }
    else {
      var_3 = 1;
    }
    local_50[0] = local_50[0] + var_14 + var_3;
    goto switchD_0022373b_caseD_19;
  case 10:
    local_50[0] = local_50[0] + (type_5)*local_50[0] + 1;
    goto switchD_0022373b_caseD_19;
  case 0xb:
  case 0xc:
  case 0x11:
    local_50[0] = local_50[0] + 1;
    goto switchD_0022373b_caseD_19;
  case 0xd:
    if ((char)*local_50[0] < '\0') {
      var_15(local_50[0] + 1,&var_3,*local_50[0]);
      local_50[0] = local_50[0] + var_3;
      goto switchD_0022373b_caseD_19;
    }
    break;
  case 0xe:
  case 0x17:
    local_50[0] = local_50[0] + (-(type_5)!is64 & 0xfffffffffffffffc) + 8;
    goto switchD_0022373b_caseD_19;
  case 0xf:
  case 0x15:
    if ((char)*local_50[0] < '\0') {
      var_2(local_50[0] + 1,&var_3,*local_50[0]);
      local_50[0] = local_50[0] + var_3;
      goto switchD_0022373b_caseD_19;
    }
    break;
  case 0x19:
    goto switchD_0022373b_caseD_19;
  }
  local_50[0] = local_50[0] + 1;
  var_3 = 1;
  goto switchD_0022373b_caseD_19;
switchD_0022373b_caseD_0:
  return bVar2;
}


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

void MASKED(undefined8 param_1,byte *param_2,byte *param_3,undefined8 *param_4,byte *param_5,
                 int param_6,char param_7)

{
  byte bVar1;
  ushort uVar2;
  uint uVar3;
  ulong uVar4;
  size_t sVar5;
  byte *pbVar6;
  byte *local_50 [2];
  long local_40 [2];
  
  local_50[0] = param_2;
switchD_0022373b_caseD_19:
  bVar1 = *param_3;
  pbVar6 = param_3 + 1;
  if ((char)bVar1 < '\0') {
    uVar4 = FUN_002817f0(pbVar6,local_40,bVar1);
    pbVar6 = param_3 + local_40[0];
  }
  else {
    local_40[0] = 1;
    uVar4 = (ulong)bVar1;
  }
  uVar3 = (uint)*pbVar6;
  param_3 = pbVar6 + 1;
  if ((char)*pbVar6 < '\0') {
    uVar3 = FUN_002817f0(param_3,local_40);
    param_3 = pbVar6 + local_40[0];
  }
  else {
    local_40[0] = 1;
  }
  pbVar6 = local_50[0];
  if (uVar4 == 0 && uVar3 == 0) {
    *param_4 = local_50[0];
    return;
  }
  if (param_5 <= local_50[0]) {
    return;
  }
  switch(uVar3) {
  default:
    goto switchD_0022373b_caseD_0;
  case 1:
  case 0x10:
    local_50[0] = local_50[0] + param_6;
    goto switchD_0022373b_caseD_19;
  case 3:
    uVar2 = FUN_00224760(local_50);
    local_50[0] = local_50[0] + uVar2;
    goto switchD_0022373b_caseD_19;
  case 4:
    uVar3 = FUN_002247d0(local_50);
    local_50[0] = local_50[0] + uVar3;
    goto switchD_0022373b_caseD_19;
  case 5:
  case 0x12:
    local_50[0] = local_50[0] + 2;
    goto switchD_0022373b_caseD_19;
  case 6:
  case 0x13:
    local_50[0] = local_50[0] + 4;
    goto switchD_0022373b_caseD_19;
  case 7:
  case 0x14:
  case 0x20:
    local_50[0] = local_50[0] + 8;
    goto switchD_0022373b_caseD_19;
  case 8:
    sVar5 = strlen((char *)local_50[0]);
    local_50[0] = pbVar6 + sVar5 + 1;
    goto switchD_0022373b_caseD_19;
  case 9:
  case 0x18:
    bVar1 = *local_50[0];
    uVar4 = (ulong)bVar1;
    if ((char)bVar1 < '\0') {
      uVar4 = FUN_002817f0(local_50[0] + 1,local_40,bVar1);
    }
    else {
      local_40[0] = 1;
    }
    local_50[0] = local_50[0] + uVar4 + local_40[0];
    goto switchD_0022373b_caseD_19;
  case 10:
    local_50[0] = local_50[0] + (ulong)*local_50[0] + 1;
    goto switchD_0022373b_caseD_19;
  case 0xb:
  case 0xc:
  case 0x11:
    local_50[0] = local_50[0] + 1;
    goto switchD_0022373b_caseD_19;
  case 0xd:
    if ((char)*local_50[0] < '\0') {
      FUN_00281860(local_50[0] + 1,local_40,*local_50[0]);
      local_50[0] = local_50[0] + local_40[0];
      goto switchD_0022373b_caseD_19;
    }
    break;
  case 0xe:
  case 0x17:
    local_50[0] = local_50[0] + (-(ulong)(param_7 == '\0') & 0xfffffffffffffffc) + 8;
    goto switchD_0022373b_caseD_19;
  case 0xf:
  case 0x15:
    if ((char)*local_50[0] < '\0') {
      FUN_002817f0(local_50[0] + 1,local_40,*local_50[0]);
      local_50[0] = local_50[0] + local_40[0];
      goto switchD_0022373b_caseD_19;
    }
    break;
  case 0x19:
    goto switchD_0022373b_caseD_19;
  }
  local_50[0] = local_50[0] + 1;
  local_40[0] = 1;
  goto switchD_0022373b_caseD_19;
switchD_0022373b_caseD_0:
  return;
}

