
/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */
/* 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;
  uchar *puVar2;
  Valtype VVar3;
  uint uVar4;
  size_t sVar5;
  Valtype VVar6;
  bool bVar7;
  byte *buffer;
  byte *buffer_00;
  bool bVar8;
  uint64_t uVar9;
  ulonglong uVar10;
  uint local_44;
  size_t LEB_size;
  undefined4 uStack_14;
  
  uStack_14 = 0x144599;
  bVar8 = !is64;
  buffer = abbrev;
_L80:
  bVar1 = *buffer;
  buffer_00 = buffer + 1;
  if ((char)bVar1 < '\0') {
    uVar10 = read_unsigned_LEB_128_x(buffer_00,&LEB_size,bVar1);
    buffer_00 = buffer + LEB_size;
  }
  else {
    LEB_size = 1;
    uVar10 = (ulonglong)bVar1;
  }
  bVar1 = *buffer_00;
  buffer = buffer_00 + 1;
  if ((char)bVar1 < '\0') {
    uVar9 = read_unsigned_LEB_128_x(buffer,&LEB_size,bVar1);
    local_44 = (uint)uVar9;
    buffer = buffer_00 + LEB_size;
  }
  else {
    LEB_size = 1;
    local_44 = (uint)bVar1;
  }
  puVar2 = die;
  bVar7 = local_44 == 0 && uVar10 == 0;
  if (bVar7) {
    *die_end = die;
    return bVar7;
  }
  if (buffer_end <= die) {
    return bVar7;
  }
  switch(local_44) {
  default:
    goto _L79;
  case 1:
  case 0x10:
    die = die + address_size;
    goto _L80;
  case 3:
    VVar3 = read_from_pointer<16>(&die);
    die = die + VVar3;
    goto _L80;
  case 4:
    VVar6 = read_from_pointer<32>(&die);
    die = die + VVar6;
    goto _L80;
  case 5:
  case 0x12:
    die = die + 2;
    goto _L80;
  case 6:
  case 0x13:
    die = die + 4;
    goto _L80;
  case 7:
  case 0x14:
  case 0x20:
    die = die + 8;
    goto _L80;
  case 8:
    sVar5 = strlen((char *)die);
    die = puVar2 + sVar5 + 1;
    goto _L80;
  case 9:
  case 0x18:
    bVar1 = *die;
    uVar4 = (uint)bVar1;
    if ((char)bVar1 < '\0') {
      uVar9 = read_unsigned_LEB_128_x(die + 1,&LEB_size,bVar1);
      uVar4 = (uint)uVar9;
    }
    else {
      LEB_size = 1;
    }
    die = die + uVar4 + LEB_size;
    goto _L80;
  case 10:
    die = die + *die + 1;
    goto _L80;
  case 0xb:
  case 0xc:
  case 0x11:
    die = die + 1;
    goto _L80;
  case 0xd:
    if ((char)*die < '\0') {
      read_signed_LEB_128_x(die + 1,&LEB_size,*die);
      die = die + LEB_size;
      goto _L80;
    }
    break;
  case 0xe:
  case 0x17:
    die = die + (-(uint)bVar8 & 0xfffffffc) + 8;
    goto _L80;
  case 0xf:
  case 0x15:
    if ((char)*die < '\0') {
      read_unsigned_LEB_128_x(die + 1,&LEB_size,*die);
      die = die + LEB_size;
      goto _L80;
    }
    break;
  case 0x19:
    goto _L80;
  }
  die = die + 1;
  LEB_size = 1;
  goto _L80;
_L79:
  return bVar7;
}



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

undefined4
FUN_00144590(undefined4 param_1,byte *param_2,byte *param_3,undefined4 *param_4,byte *param_5,
            int param_6,char param_7)

{
  byte bVar1;
  byte *pbVar2;
  uint uVar3;
  size_t sVar4;
  int iVar5;
  bool bVar6;
  byte *pbVar8;
  byte *pbVar9;
  bool bVar10;
  ulonglong uVar11;
  uint local_44;
  int local_20 [3];
  undefined4 uStack_14;
  undefined4 uVar7;
  
  uStack_14 = 0x144599;
  bVar10 = param_7 == '\0';
  pbVar9 = param_3;
code_r0x001445d0:
  bVar1 = *pbVar9;
  pbVar8 = pbVar9 + 1;
  if ((char)bVar1 < '\0') {
    uVar11 = FUN_00095970(pbVar8,local_20,(uint)bVar1);
    pbVar8 = pbVar9 + local_20[0];
  }
  else {
    local_20[0] = 1;
    uVar11 = (ulonglong)(uint)bVar1;
  }
  local_44 = (uint)*pbVar8;
  if ((char)*pbVar8 < '\0') {
    local_44 = FUN_00095970(pbVar8 + 1,local_20,local_44);
    pbVar8 = pbVar8 + local_20[0];
    pbVar9 = pbVar8;
  }
  else {
    local_20[0] = 1;
    pbVar9 = pbVar8 + 1;
  }
  pbVar2 = param_2;
  bVar6 = local_44 == 0 && uVar11 == 0;
  uVar7 = CONCAT31((int3)((uint)pbVar8 >> 8),bVar6);
  if (bVar6) {
    *param_4 = param_2;
    return uVar7;
  }
  if (param_5 <= param_2) {
    return uVar7;
  }
  switch(local_44) {
  default:
    goto LAB_00144646;
  case 1:
  case 0x10:
    param_2 = param_2 + param_6;
    goto code_r0x001445d0;
  case 3:
    uVar3 = FUN_00145ad0(&param_2);
    param_2 = param_2 + (uVar3 & 0xffff);
    goto code_r0x001445d0;
  case 4:
    iVar5 = FUN_00145b50(&param_2);
    param_2 = param_2 + iVar5;
    goto code_r0x001445d0;
  case 5:
  case 0x12:
    param_2 = param_2 + 2;
    goto code_r0x001445d0;
  case 6:
  case 0x13:
    param_2 = param_2 + 4;
    goto code_r0x001445d0;
  case 7:
  case 0x14:
  case 0x20:
    param_2 = param_2 + 8;
    goto code_r0x001445d0;
  case 8:
    sVar4 = strlen((char *)param_2);
    param_2 = pbVar2 + sVar4 + 1;
    goto code_r0x001445d0;
  case 9:
  case 0x18:
    uVar3 = (uint)*param_2;
    if ((char)*param_2 < '\0') {
      uVar3 = FUN_00095970(param_2 + 1,local_20,uVar3);
    }
    else {
      local_20[0] = 1;
    }
    param_2 = param_2 + uVar3 + local_20[0];
    goto code_r0x001445d0;
  case 10:
    param_2 = param_2 + *param_2 + 1;
    goto code_r0x001445d0;
  case 0xb:
  case 0xc:
  case 0x11:
    param_2 = param_2 + 1;
    goto code_r0x001445d0;
  case 0xd:
    if ((char)*param_2 < '\0') {
      FUN_00095a30(param_2 + 1,local_20,*param_2);
      param_2 = param_2 + local_20[0];
      goto code_r0x001445d0;
    }
    break;
  case 0xe:
  case 0x17:
    param_2 = param_2 + (-(uint)bVar10 & 0xfffffffc) + 8;
    goto code_r0x001445d0;
  case 0xf:
  case 0x15:
    if ((char)*param_2 < '\0') {
      FUN_00095970(param_2 + 1,local_20,*param_2);
      param_2 = param_2 + local_20[0];
      goto code_r0x001445d0;
    }
    break;
  case 0x19:
    goto code_r0x001445d0;
  }
  param_2 = param_2 + 1;
  local_20[0] = 1;
  goto code_r0x001445d0;
LAB_00144646:
  return uVar7;
}


PUSH EBP
PUSH EDI
PUSH ESI
PUSH EBX
CALL 0x00035840
ADD EBX,0x24aa67
SUB ESP,0x3c
CMP byte ptr [ESP + 0x68],0x1
MOV EBP,dword ptr [ESP + 0x58]
SBB EAX,EAX
AND EAX,0xfffffffc
ADD EAX,0x8
MOV dword ptr [ESP + 0x1c],EAX
LEA EAX,[ESP + 0x2c]
MOV dword ptr [ESP + 0x10],EAX
LEA EAX,[ESP + 0x54]
MOV dword ptr [ESP + 0x18],EAX
LEA ESI,[ESI]
NOP
MOVZX EAX,byte ptr [EBP]
LEA ECX,[EBP + 0x1]
TEST AL,AL
JS 0x00144680
MOV dword ptr [ESP + 0x2c],0x1
MOVZX ESI,AL
XOR EDI,EDI
MOVZX EAX,byte ptr [ECX]
LEA EBP,[ECX + 0x1]
TEST AL,AL
JS 0x00144650
MOV dword ptr [ESP + 0x2c],0x1
MOV dword ptr [ESP + 0x8],EAX
MOV dword ptr [ESP + 0xc],0x0
MOV EAX,ESI
MOV ESI,dword ptr [ESP + 0x54]
OR EAX,EDI
MOV EAX,dword ptr [ESP + 0x8]
SETZ CL
MOV EDI,ECX
TEST EAX,EAX
SETZ CL
MOV EAX,EDI
AND CL,AL
JNZ 0x00144640
CMP dword ptr [ESP + 0x60],ESI
JBE 0x00144646
MOV EAX,dword ptr [ESP + 0x8]
CMP EAX,0x20
JA 0x00144646
MOV EDX,dword ptr [EBX + EAX*0x4 + 0xfff07084]
ADD EDX,EBX
JMP EDX
MOV EAX,dword ptr [ESP + 0x5c]
MOV dword ptr [EAX],ESI
ADD ESP,0x3c
MOV EAX,ECX
POP EBX
POP ESI
POP EDI
POP EBP
RET
MOV dword ptr [ESP + 0x14],ECX
SUB ESP,0x4
PUSH EAX
PUSH dword ptr [ESP + 0x18]
PUSH EBP
CALL 0x00095970
MOV ECX,dword ptr [ESP + 0x24]
ADD ECX,dword ptr [ESP + 0x3c]
MOV dword ptr [ESP + 0x18],EAX
MOV EBP,ECX
MOV dword ptr [ESP + 0x1c],EDX
ADD ESP,0x10
JMP 0x0014460a
SUB ESP,0x4
PUSH EAX
PUSH dword ptr [ESP + 0x18]
PUSH ECX
CALL 0x00095970
MOV ECX,dword ptr [ESP + 0x3c]
ADD ESP,0x10
MOV ESI,EAX
MOV EDI,EDX
ADD ECX,EBP
JMP 0x001445ec
(translation_unit "/* WARNING: Function: __i686.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n\nundefined4\nFUN_00144590(undefined4 param_1,byte *param_2,byte *param_3,undefined4 *param_4,byte *param_5,\n            int param_6,char param_7)\n\n{\n  byte bVar1;\n  byte *pbVar2;\n  uint uVar3;\n  size_t sVar4;\n  int iVar5;\n  bool bVar6;\n  byte *pbVar8;\n  byte *pbVar9;\n  bool bVar10;\n  ulonglong uVar11;\n  uint local_44;\n  int local_20 [3];\n  undefined4 uStack_14;\n  undefined4 uVar7;\n  \n  uStack_14 = 0x144599;\n  bVar10 = param_7 == '\0';\n  pbVar9 = param_3;\ncode_r0x001445d0:\n  bVar1 = *pbVar9;\n  pbVar8 = pbVar9 + 1;\n  if ((char)bVar1 < '\0') {\n    uVar11 = FUN_00095970(pbVar8,local_20,(uint)bVar1);\n    pbVar8 = pbVar9 + local_20[0];\n  }\n  else {\n    local_20[0] = 1;\n    uVar11 = (ulonglong)(uint)bVar1;\n  }\n  local_44 = (uint)*pbVar8;\n  if ((char)*pbVar8 < '\0') {\n    local_44 = FUN_00095970(pbVar8 + 1,local_20,local_44);\n    pbVar8 = pbVar8 + local_20[0];\n    pbVar9 = pbVar8;\n  }\n  else {\n    local_20[0] = 1;\n    pbVar9 = pbVar8 + 1;\n  }\n  pbVar2 = param_2;\n  bVar6 = local_44 == 0 && uVar11 == 0;\n  uVar7 = CONCAT31((int3)((uint)pbVar8 >> 8),bVar6);\n  if (bVar6) {\n    *param_4 = param_2;\n    return uVar7;\n  }\n  if (param_5 <= param_2) {\n    return uVar7;\n  }\n  switch(local_44) {\n  default:\n    goto LAB_00144646;\n  case 1:\n  case 0x10:\n    param_2 = param_2 + param_6;\n    goto code_r0x001445d0;\n  case 3:\n    uVar3 = FUN_00145ad0(&param_2);\n    param_2 = param_2 + (uVar3 & 0xffff);\n    goto code_r0x001445d0;\n  case 4:\n    iVar5 = FUN_00145b50(&param_2);\n    param_2 = param_2 + iVar5;\n    goto code_r0x001445d0;\n  case 5:\n  case 0x12:\n    param_2 = param_2 + 2;\n    goto code_r0x001445d0;\n  case 6:\n  case 0x13:\n    param_2 = param_2 + 4;\n    goto code_r0x001445d0;\n  case 7:\n  case 0x14:\n  case 0x20:\n    param_2 = param_2 + 8;\n    goto code_r0x001445d0;\n  case 8:\n    sVar4 = strlen((char *)param_2);\n    param_2 = pbVar2 + sVar4 + 1;\n    goto code_r0x001445d0;\n  case 9:\n  case 0x18:\n    uVar3 = (uint)*param_2;\n    if ((char)*param_2 < '\0') {\n      uVar3 = FUN_00095970(param_2 + 1,local_20,uVar3);\n    }\n    else {\n      local_20[0] = 1;\n    }\n    param_2 = param_2 + uVar3 + local_20[0];\n    goto code_r0x001445d0;\n  case 10:\n    param_2 = param_2 + *param_2 + 1;\n    goto code_r0x001445d0;\n  case 0xb:\n  case 0xc:\n  case 0x11:\n    param_2 = param_2 + 1;\n    goto code_r0x001445d0;\n  case 0xd:\n    if ((char)*param_2 < '\0') {\n      FUN_00095a30(param_2 + 1,local_20,*param_2);\n      param_2 = param_2 + local_20[0];\n      goto code_r0x001445d0;\n    }\n    break;\n  case 0xe:\n  case 0x17:\n    param_2 = param_2 + (-(uint)bVar10 & 0xfffffffc) + 8;\n    goto code_r0x001445d0;\n  case 0xf:\n  case 0x15:\n    if ((char)*param_2 < '\0') {\n      FUN_00095970(param_2 + 1,local_20,*param_2);\n      param_2 = param_2 + local_20[0];\n      goto code_r0x001445d0;\n    }\n    break;\n  case 0x19:\n    goto code_r0x001445d0;\n  }\n  param_2 = param_2 + 1;\n  local_20[0] = 1;\n  goto code_r0x001445d0;\nLAB_00144646:\n  return uVar7;\n}\n\n" comment (function_definition "undefined4\nFUN_00144590(undefined4 param_1,byte *param_2,byte *param_3,undefined4 *param_4,byte *param_5,\n            int param_6,char param_7)\n\n{\n  byte bVar1;\n  byte *pbVar2;\n  uint uVar3;\n  size_t sVar4;\n  int iVar5;\n  bool bVar6;\n  byte *pbVar8;\n  byte *pbVar9;\n  bool bVar10;\n  ulonglong uVar11;\n  uint local_44;\n  int local_20 [3];\n  undefined4 uStack_14;\n  undefined4 uVar7;\n  \n  uStack_14 = 0x144599;\n  bVar10 = param_7 == '\0';\n  pbVar9 = param_3;\ncode_r0x001445d0:\n  bVar1 = *pbVar9;\n  pbVar8 = pbVar9 + 1;\n  if ((char)bVar1 < '\0') {\n    uVar11 = FUN_00095970(pbVar8,local_20,(uint)bVar1);\n    pbVar8 = pbVar9 + local_20[0];\n  }\n  else {\n    local_20[0] = 1;\n    uVar11 = (ulonglong)(uint)bVar1;\n  }\n  local_44 = (uint)*pbVar8;\n  if ((char)*pbVar8 < '\0') {\n    local_44 = FUN_00095970(pbVar8 + 1,local_20,local_44);\n    pbVar8 = pbVar8 + local_20[0];\n    pbVar9 = pbVar8;\n  }\n  else {\n    local_20[0] = 1;\n    pbVar9 = pbVar8 + 1;\n  }\n  pbVar2 = param_2;\n  bVar6 = local_44 == 0 && uVar11 == 0;\n  uVar7 = CONCAT31((int3)((uint)pbVar8 >> 8),bVar6);\n  if (bVar6) {\n    *param_4 = param_2;\n    return uVar7;\n  }\n  if (param_5 <= param_2) {\n    return uVar7;\n  }\n  switch(local_44) {\n  default:\n    goto LAB_00144646;\n  case 1:\n  case 0x10:\n    param_2 = param_2 + param_6;\n    goto code_r0x001445d0;\n  case 3:\n    uVar3 = FUN_00145ad0(&param_2);\n    param_2 = param_2 + (uVar3 & 0xffff);\n    goto code_r0x001445d0;\n  case 4:\n    iVar5 = FUN_00145b50(&param_2);\n    param_2 = param_2 + iVar5;\n    goto code_r0x001445d0;\n  case 5:\n  case 0x12:\n    param_2 = param_2 + 2;\n    goto code_r0x001445d0;\n  case 6:\n  case 0x13:\n    param_2 = param_2 + 4;\n    goto code_r0x001445d0;\n  case 7:\n  case 0x14:\n  case 0x20:\n    param_2 = param_2 + 8;\n    goto code_r0x001445d0;\n  case 8:\n    sVar4 = strlen((char *)param_2);\n    param_2 = pbVar2 + sVar4 + 1;\n    goto code_r0x001445d0;\n  case 9:\n  case 0x18:\n    uVar3 = (uint)*param_2;\n    if ((char)*param_2 < '\0') {\n      uVar3 = FUN_00095970(param_2 + 1,local_20,uVar3);\n    }\n    else {\n      local_20[0] = 1;\n    }\n    param_2 = param_2 + uVar3 + local_20[0];\n    goto code_r0x001445d0;\n  case 10:\n    param_2 = param_2 + *param_2 + 1;\n    goto code_r0x001445d0;\n  case 0xb:\n  case 0xc:\n  case 0x11:\n    param_2 = param_2 + 1;\n    goto code_r0x001445d0;\n  case 0xd:\n    if ((char)*param_2 < '\0') {\n      FUN_00095a30(param_2 + 1,local_20,*param_2);\n      param_2 = param_2 + local_20[0];\n      goto code_r0x001445d0;\n    }\n    break;\n  case 0xe:\n  case 0x17:\n    param_2 = param_2 + (-(uint)bVar10 & 0xfffffffc) + 8;\n    goto code_r0x001445d0;\n  case 0xf:\n  case 0x15:\n    if ((char)*param_2 < '\0') {\n      FUN_00095970(param_2 + 1,local_20,*param_2);\n      param_2 = param_2 + local_20[0];\n      goto code_r0x001445d0;\n    }\n    break;\n  case 0x19:\n    goto code_r0x001445d0;\n  }\n  param_2 = param_2 + 1;\n  local_20[0] = 1;\n  goto code_r0x001445d0;\nLAB_00144646:\n  return uVar7;\n}" type_identifier (function_declarator "FUN_00144590(undefined4 param_1,byte *param_2,byte *param_3,undefined4 *param_4,byte *param_5,\n            int param_6,char param_7)" identifier (parameter_list "(undefined4 param_1,byte *param_2,byte *param_3,undefined4 *param_4,byte *param_5,\n            int param_6,char param_7)" ( (parameter_declaration "undefined4 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 "undefined4 *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  byte *pbVar2;\n  uint uVar3;\n  size_t sVar4;\n  int iVar5;\n  bool bVar6;\n  byte *pbVar8;\n  byte *pbVar9;\n  bool bVar10;\n  ulonglong uVar11;\n  uint local_44;\n  int local_20 [3];\n  undefined4 uStack_14;\n  undefined4 uVar7;\n  \n  uStack_14 = 0x144599;\n  bVar10 = param_7 == '\0';\n  pbVar9 = param_3;\ncode_r0x001445d0:\n  bVar1 = *pbVar9;\n  pbVar8 = pbVar9 + 1;\n  if ((char)bVar1 < '\0') {\n    uVar11 = FUN_00095970(pbVar8,local_20,(uint)bVar1);\n    pbVar8 = pbVar9 + local_20[0];\n  }\n  else {\n    local_20[0] = 1;\n    uVar11 = (ulonglong)(uint)bVar1;\n  }\n  local_44 = (uint)*pbVar8;\n  if ((char)*pbVar8 < '\0') {\n    local_44 = FUN_00095970(pbVar8 + 1,local_20,local_44);\n    pbVar8 = pbVar8 + local_20[0];\n    pbVar9 = pbVar8;\n  }\n  else {\n    local_20[0] = 1;\n    pbVar9 = pbVar8 + 1;\n  }\n  pbVar2 = param_2;\n  bVar6 = local_44 == 0 && uVar11 == 0;\n  uVar7 = CONCAT31((int3)((uint)pbVar8 >> 8),bVar6);\n  if (bVar6) {\n    *param_4 = param_2;\n    return uVar7;\n  }\n  if (param_5 <= param_2) {\n    return uVar7;\n  }\n  switch(local_44) {\n  default:\n    goto LAB_00144646;\n  case 1:\n  case 0x10:\n    param_2 = param_2 + param_6;\n    goto code_r0x001445d0;\n  case 3:\n    uVar3 = FUN_00145ad0(&param_2);\n    param_2 = param_2 + (uVar3 & 0xffff);\n    goto code_r0x001445d0;\n  case 4:\n    iVar5 = FUN_00145b50(&param_2);\n    param_2 = param_2 + iVar5;\n    goto code_r0x001445d0;\n  case 5:\n  case 0x12:\n    param_2 = param_2 + 2;\n    goto code_r0x001445d0;\n  case 6:\n  case 0x13:\n    param_2 = param_2 + 4;\n    goto code_r0x001445d0;\n  case 7:\n  case 0x14:\n  case 0x20:\n    param_2 = param_2 + 8;\n    goto code_r0x001445d0;\n  case 8:\n    sVar4 = strlen((char *)param_2);\n    param_2 = pbVar2 + sVar4 + 1;\n    goto code_r0x001445d0;\n  case 9:\n  case 0x18:\n    uVar3 = (uint)*param_2;\n    if ((char)*param_2 < '\0') {\n      uVar3 = FUN_00095970(param_2 + 1,local_20,uVar3);\n    }\n    else {\n      local_20[0] = 1;\n    }\n    param_2 = param_2 + uVar3 + local_20[0];\n    goto code_r0x001445d0;\n  case 10:\n    param_2 = param_2 + *param_2 + 1;\n    goto code_r0x001445d0;\n  case 0xb:\n  case 0xc:\n  case 0x11:\n    param_2 = param_2 + 1;\n    goto code_r0x001445d0;\n  case 0xd:\n    if ((char)*param_2 < '\0') {\n      FUN_00095a30(param_2 + 1,local_20,*param_2);\n      param_2 = param_2 + local_20[0];\n      goto code_r0x001445d0;\n    }\n    break;\n  case 0xe:\n  case 0x17:\n    param_2 = param_2 + (-(uint)bVar10 & 0xfffffffc) + 8;\n    goto code_r0x001445d0;\n  case 0xf:\n  case 0x15:\n    if ((char)*param_2 < '\0') {\n      FUN_00095970(param_2 + 1,local_20,*param_2);\n      param_2 = param_2 + local_20[0];\n      goto code_r0x001445d0;\n    }\n    break;\n  case 0x19:\n    goto code_r0x001445d0;\n  }\n  param_2 = param_2 + 1;\n  local_20[0] = 1;\n  goto code_r0x001445d0;\nLAB_00144646:\n  return uVar7;\n}" { (declaration "byte bVar1;" type_identifier identifier ;) (declaration "byte *pbVar2;" type_identifier (pointer_declarator "*pbVar2" * identifier) ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "size_t sVar4;" primitive_type identifier ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "bool bVar6;" primitive_type identifier ;) (declaration "byte *pbVar8;" type_identifier (pointer_declarator "*pbVar8" * identifier) ;) (declaration "byte *pbVar9;" type_identifier (pointer_declarator "*pbVar9" * identifier) ;) (declaration "bool bVar10;" primitive_type identifier ;) (declaration "ulonglong uVar11;" type_identifier identifier ;) (declaration "uint local_44;" type_identifier identifier ;) (declaration "int local_20 [3];" primitive_type (array_declarator "local_20 [3]" identifier [ number_literal ]) ;) (declaration "undefined4 uStack_14;" type_identifier identifier ;) (declaration "undefined4 uVar7;" type_identifier identifier ;) (expression_statement "uStack_14 = 0x144599;" (assignment_expression "uStack_14 = 0x144599" identifier = number_literal) ;) (expression_statement "bVar10 = param_7 == '\0';" (assignment_expression "bVar10 = param_7 == '\0'" identifier = (binary_expression "param_7 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence '))) ;) (expression_statement "pbVar9 = param_3;" (assignment_expression "pbVar9 = param_3" identifier = identifier) ;) (labeled_statement "code_r0x001445d0:\n  bVar1 = *pbVar9;" statement_identifier : (expression_statement "bVar1 = *pbVar9;" (assignment_expression "bVar1 = *pbVar9" identifier = (pointer_expression "*pbVar9" * identifier)) ;)) (expression_statement "pbVar8 = pbVar9 + 1;" (assignment_expression "pbVar8 = pbVar9 + 1" identifier = (binary_expression "pbVar9 + 1" identifier + number_literal)) ;) (if_statement "if ((char)bVar1 < '\0') {\n    uVar11 = FUN_00095970(pbVar8,local_20,(uint)bVar1);\n    pbVar8 = pbVar9 + local_20[0];\n  }\n  else {\n    local_20[0] = 1;\n    uVar11 = (ulonglong)(uint)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    uVar11 = FUN_00095970(pbVar8,local_20,(uint)bVar1);\n    pbVar8 = pbVar9 + local_20[0];\n  }" { (expression_statement "uVar11 = FUN_00095970(pbVar8,local_20,(uint)bVar1);" (assignment_expression "uVar11 = FUN_00095970(pbVar8,local_20,(uint)bVar1)" identifier = (call_expression "FUN_00095970(pbVar8,local_20,(uint)bVar1)" identifier (argument_list "(pbVar8,local_20,(uint)bVar1)" ( identifier , identifier , (cast_expression "(uint)bVar1" ( (type_descriptor "uint" type_identifier) ) identifier) )))) ;) (expression_statement "pbVar8 = pbVar9 + local_20[0];" (assignment_expression "pbVar8 = pbVar9 + local_20[0]" identifier = (binary_expression "pbVar9 + local_20[0]" identifier + (subscript_expression "local_20[0]" identifier [ number_literal ]))) ;) }) (else_clause "else {\n    local_20[0] = 1;\n    uVar11 = (ulonglong)(uint)bVar1;\n  }" else (compound_statement "{\n    local_20[0] = 1;\n    uVar11 = (ulonglong)(uint)bVar1;\n  }" { (expression_statement "local_20[0] = 1;" (assignment_expression "local_20[0] = 1" (subscript_expression "local_20[0]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "uVar11 = (ulonglong)(uint)bVar1;" (assignment_expression "uVar11 = (ulonglong)(uint)bVar1" identifier = (cast_expression "(ulonglong)(uint)bVar1" ( (type_descriptor "ulonglong" type_identifier) ) (cast_expression "(uint)bVar1" ( (type_descriptor "uint" type_identifier) ) identifier))) ;) }))) (expression_statement "local_44 = (uint)*pbVar8;" (assignment_expression "local_44 = (uint)*pbVar8" identifier = (binary_expression "(uint)*pbVar8" (parenthesized_expression "(uint)" ( identifier )) * identifier)) ;) (if_statement "if ((char)*pbVar8 < '\0') {\n    local_44 = FUN_00095970(pbVar8 + 1,local_20,local_44);\n    pbVar8 = pbVar8 + local_20[0];\n    pbVar9 = pbVar8;\n  }\n  else {\n    local_20[0] = 1;\n    pbVar9 = pbVar8 + 1;\n  }" if (parenthesized_expression "((char)*pbVar8 < '\0')" ( (binary_expression "(char)*pbVar8 < '\0'" (cast_expression "(char)*pbVar8" ( (type_descriptor "char" primitive_type) ) (pointer_expression "*pbVar8" * identifier)) < (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    local_44 = FUN_00095970(pbVar8 + 1,local_20,local_44);\n    pbVar8 = pbVar8 + local_20[0];\n    pbVar9 = pbVar8;\n  }" { (expression_statement "local_44 = FUN_00095970(pbVar8 + 1,local_20,local_44);" (assignment_expression "local_44 = FUN_00095970(pbVar8 + 1,local_20,local_44)" identifier = (call_expression "FUN_00095970(pbVar8 + 1,local_20,local_44)" identifier (argument_list "(pbVar8 + 1,local_20,local_44)" ( (binary_expression "pbVar8 + 1" identifier + number_literal) , identifier , identifier )))) ;) (expression_statement "pbVar8 = pbVar8 + local_20[0];" (assignment_expression "pbVar8 = pbVar8 + local_20[0]" identifier = (binary_expression "pbVar8 + local_20[0]" identifier + (subscript_expression "local_20[0]" identifier [ number_literal ]))) ;) (expression_statement "pbVar9 = pbVar8;" (assignment_expression "pbVar9 = pbVar8" identifier = identifier) ;) }) (else_clause "else {\n    local_20[0] = 1;\n    pbVar9 = pbVar8 + 1;\n  }" else (compound_statement "{\n    local_20[0] = 1;\n    pbVar9 = pbVar8 + 1;\n  }" { (expression_statement "local_20[0] = 1;" (assignment_expression "local_20[0] = 1" (subscript_expression "local_20[0]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "pbVar9 = pbVar8 + 1;" (assignment_expression "pbVar9 = pbVar8 + 1" identifier = (binary_expression "pbVar8 + 1" identifier + number_literal)) ;) }))) (expression_statement "pbVar2 = param_2;" (assignment_expression "pbVar2 = param_2" identifier = identifier) ;) (expression_statement "bVar6 = local_44 == 0 && uVar11 == 0;" (assignment_expression "bVar6 = local_44 == 0 && uVar11 == 0" identifier = (binary_expression "local_44 == 0 && uVar11 == 0" (binary_expression "local_44 == 0" identifier == number_literal) && (binary_expression "uVar11 == 0" identifier == number_literal))) ;) (expression_statement "uVar7 = CONCAT31((int3)((uint)pbVar8 >> 8),bVar6);" (assignment_expression "uVar7 = CONCAT31((int3)((uint)pbVar8 >> 8),bVar6)" identifier = (call_expression "CONCAT31((int3)((uint)pbVar8 >> 8),bVar6)" identifier (argument_list "((int3)((uint)pbVar8 >> 8),bVar6)" ( (call_expression "(int3)((uint)pbVar8 >> 8)" (parenthesized_expression "(int3)" ( identifier )) (argument_list "((uint)pbVar8 >> 8)" ( (binary_expression "(uint)pbVar8 >> 8" (cast_expression "(uint)pbVar8" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) ))) , identifier )))) ;) (if_statement "if (bVar6) {\n    *param_4 = param_2;\n    return uVar7;\n  }" if (parenthesized_expression "(bVar6)" ( identifier )) (compound_statement "{\n    *param_4 = param_2;\n    return uVar7;\n  }" { (expression_statement "*param_4 = param_2;" (assignment_expression "*param_4 = param_2" (pointer_expression "*param_4" * identifier) = identifier) ;) (return_statement "return uVar7;" return identifier ;) })) (if_statement "if (param_5 <= param_2) {\n    return uVar7;\n  }" if (parenthesized_expression "(param_5 <= param_2)" ( (binary_expression "param_5 <= param_2" identifier <= identifier) )) (compound_statement "{\n    return uVar7;\n  }" { (return_statement "return uVar7;" return identifier ;) })) (switch_statement "switch(local_44) {\n  default:\n    goto LAB_00144646;\n  case 1:\n  case 0x10:\n    param_2 = param_2 + param_6;\n    goto code_r0x001445d0;\n  case 3:\n    uVar3 = FUN_00145ad0(&param_2);\n    param_2 = param_2 + (uVar3 & 0xffff);\n    goto code_r0x001445d0;\n  case 4:\n    iVar5 = FUN_00145b50(&param_2);\n    param_2 = param_2 + iVar5;\n    goto code_r0x001445d0;\n  case 5:\n  case 0x12:\n    param_2 = param_2 + 2;\n    goto code_r0x001445d0;\n  case 6:\n  case 0x13:\n    param_2 = param_2 + 4;\n    goto code_r0x001445d0;\n  case 7:\n  case 0x14:\n  case 0x20:\n    param_2 = param_2 + 8;\n    goto code_r0x001445d0;\n  case 8:\n    sVar4 = strlen((char *)param_2);\n    param_2 = pbVar2 + sVar4 + 1;\n    goto code_r0x001445d0;\n  case 9:\n  case 0x18:\n    uVar3 = (uint)*param_2;\n    if ((char)*param_2 < '\0') {\n      uVar3 = FUN_00095970(param_2 + 1,local_20,uVar3);\n    }\n    else {\n      local_20[0] = 1;\n    }\n    param_2 = param_2 + uVar3 + local_20[0];\n    goto code_r0x001445d0;\n  case 10:\n    param_2 = param_2 + *param_2 + 1;\n    goto code_r0x001445d0;\n  case 0xb:\n  case 0xc:\n  case 0x11:\n    param_2 = param_2 + 1;\n    goto code_r0x001445d0;\n  case 0xd:\n    if ((char)*param_2 < '\0') {\n      FUN_00095a30(param_2 + 1,local_20,*param_2);\n      param_2 = param_2 + local_20[0];\n      goto code_r0x001445d0;\n    }\n    break;\n  case 0xe:\n  case 0x17:\n    param_2 = param_2 + (-(uint)bVar10 & 0xfffffffc) + 8;\n    goto code_r0x001445d0;\n  case 0xf:\n  case 0x15:\n    if ((char)*param_2 < '\0') {\n      FUN_00095970(param_2 + 1,local_20,*param_2);\n      param_2 = param_2 + local_20[0];\n      goto code_r0x001445d0;\n    }\n    break;\n  case 0x19:\n    goto code_r0x001445d0;\n  }" switch (parenthesized_expression "(local_44)" ( identifier )) (compound_statement "{\n  default:\n    goto LAB_00144646;\n  case 1:\n  case 0x10:\n    param_2 = param_2 + param_6;\n    goto code_r0x001445d0;\n  case 3:\n    uVar3 = FUN_00145ad0(&param_2);\n    param_2 = param_2 + (uVar3 & 0xffff);\n    goto code_r0x001445d0;\n  case 4:\n    iVar5 = FUN_00145b50(&param_2);\n    param_2 = param_2 + iVar5;\n    goto code_r0x001445d0;\n  case 5:\n  case 0x12:\n    param_2 = param_2 + 2;\n    goto code_r0x001445d0;\n  case 6:\n  case 0x13:\n    param_2 = param_2 + 4;\n    goto code_r0x001445d0;\n  case 7:\n  case 0x14:\n  case 0x20:\n    param_2 = param_2 + 8;\n    goto code_r0x001445d0;\n  case 8:\n    sVar4 = strlen((char *)param_2);\n    param_2 = pbVar2 + sVar4 + 1;\n    goto code_r0x001445d0;\n  case 9:\n  case 0x18:\n    uVar3 = (uint)*param_2;\n    if ((char)*param_2 < '\0') {\n      uVar3 = FUN_00095970(param_2 + 1,local_20,uVar3);\n    }\n    else {\n      local_20[0] = 1;\n    }\n    param_2 = param_2 + uVar3 + local_20[0];\n    goto code_r0x001445d0;\n  case 10:\n    param_2 = param_2 + *param_2 + 1;\n    goto code_r0x001445d0;\n  case 0xb:\n  case 0xc:\n  case 0x11:\n    param_2 = param_2 + 1;\n    goto code_r0x001445d0;\n  case 0xd:\n    if ((char)*param_2 < '\0') {\n      FUN_00095a30(param_2 + 1,local_20,*param_2);\n      param_2 = param_2 + local_20[0];\n      goto code_r0x001445d0;\n    }\n    break;\n  case 0xe:\n  case 0x17:\n    param_2 = param_2 + (-(uint)bVar10 & 0xfffffffc) + 8;\n    goto code_r0x001445d0;\n  case 0xf:\n  case 0x15:\n    if ((char)*param_2 < '\0') {\n      FUN_00095970(param_2 + 1,local_20,*param_2);\n      param_2 = param_2 + local_20[0];\n      goto code_r0x001445d0;\n    }\n    break;\n  case 0x19:\n    goto code_r0x001445d0;\n  }" { (case_statement "default:\n    goto LAB_00144646;" default : (goto_statement "goto LAB_00144646;" goto statement_identifier ;)) (case_statement "case 1:" case number_literal :) (case_statement "case 0x10:\n    param_2 = param_2 + param_6;\n    goto code_r0x001445d0;" case number_literal : (expression_statement "param_2 = param_2 + param_6;" (assignment_expression "param_2 = param_2 + param_6" identifier = (binary_expression "param_2 + param_6" identifier + identifier)) ;) (goto_statement "goto code_r0x001445d0;" goto statement_identifier ;)) (case_statement "case 3:\n    uVar3 = FUN_00145ad0(&param_2);\n    param_2 = param_2 + (uVar3 & 0xffff);\n    goto code_r0x001445d0;" case number_literal : (expression_statement "uVar3 = FUN_00145ad0(&param_2);" (assignment_expression "uVar3 = FUN_00145ad0(&param_2)" identifier = (call_expression "FUN_00145ad0(&param_2)" identifier (argument_list "(&param_2)" ( (pointer_expression "&param_2" & identifier) )))) ;) (expression_statement "param_2 = param_2 + (uVar3 & 0xffff);" (assignment_expression "param_2 = param_2 + (uVar3 & 0xffff)" identifier = (binary_expression "param_2 + (uVar3 & 0xffff)" identifier + (parenthesized_expression "(uVar3 & 0xffff)" ( (binary_expression "uVar3 & 0xffff" identifier & number_literal) )))) ;) (goto_statement "goto code_r0x001445d0;" goto statement_identifier ;)) (case_statement "case 4:\n    iVar5 = FUN_00145b50(&param_2);\n    param_2 = param_2 + iVar5;\n    goto code_r0x001445d0;" case number_literal : (expression_statement "iVar5 = FUN_00145b50(&param_2);" (assignment_expression "iVar5 = FUN_00145b50(&param_2)" identifier = (call_expression "FUN_00145b50(&param_2)" identifier (argument_list "(&param_2)" ( (pointer_expression "&param_2" & identifier) )))) ;) (expression_statement "param_2 = param_2 + iVar5;" (assignment_expression "param_2 = param_2 + iVar5" identifier = (binary_expression "param_2 + iVar5" identifier + identifier)) ;) (goto_statement "goto code_r0x001445d0;" goto statement_identifier ;)) (case_statement "case 5:" case number_literal :) (case_statement "case 0x12:\n    param_2 = param_2 + 2;\n    goto code_r0x001445d0;" case number_literal : (expression_statement "param_2 = param_2 + 2;" (assignment_expression "param_2 = param_2 + 2" identifier = (binary_expression "param_2 + 2" identifier + number_literal)) ;) (goto_statement "goto code_r0x001445d0;" goto statement_identifier ;)) (case_statement "case 6:" case number_literal :) (case_statement "case 0x13:\n    param_2 = param_2 + 4;\n    goto code_r0x001445d0;" case number_literal : (expression_statement "param_2 = param_2 + 4;" (assignment_expression "param_2 = param_2 + 4" identifier = (binary_expression "param_2 + 4" identifier + number_literal)) ;) (goto_statement "goto code_r0x001445d0;" goto statement_identifier ;)) (case_statement "case 7:" case number_literal :) (case_statement "case 0x14:" case number_literal :) (case_statement "case 0x20:\n    param_2 = param_2 + 8;\n    goto code_r0x001445d0;" case number_literal : (expression_statement "param_2 = param_2 + 8;" (assignment_expression "param_2 = param_2 + 8" identifier = (binary_expression "param_2 + 8" identifier + number_literal)) ;) (goto_statement "goto code_r0x001445d0;" goto statement_identifier ;)) (case_statement "case 8:\n    sVar4 = strlen((char *)param_2);\n    param_2 = pbVar2 + sVar4 + 1;\n    goto code_r0x001445d0;" case number_literal : (expression_statement "sVar4 = strlen((char *)param_2);" (assignment_expression "sVar4 = strlen((char *)param_2)" identifier = (call_expression "strlen((char *)param_2)" identifier (argument_list "((char *)param_2)" ( (cast_expression "(char *)param_2" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) )))) ;) (expression_statement "param_2 = pbVar2 + sVar4 + 1;" (assignment_expression "param_2 = pbVar2 + sVar4 + 1" identifier = (binary_expression "pbVar2 + sVar4 + 1" (binary_expression "pbVar2 + sVar4" identifier + identifier) + number_literal)) ;) (goto_statement "goto code_r0x001445d0;" goto statement_identifier ;)) (case_statement "case 9:" case number_literal :) (case_statement "case 0x18:\n    uVar3 = (uint)*param_2;\n    if ((char)*param_2 < '\0') {\n      uVar3 = FUN_00095970(param_2 + 1,local_20,uVar3);\n    }\n    else {\n      local_20[0] = 1;\n    }\n    param_2 = param_2 + uVar3 + local_20[0];\n    goto code_r0x001445d0;" case number_literal : (expression_statement "uVar3 = (uint)*param_2;" (assignment_expression "uVar3 = (uint)*param_2" identifier = (binary_expression "(uint)*param_2" (parenthesized_expression "(uint)" ( identifier )) * identifier)) ;) (if_statement "if ((char)*param_2 < '\0') {\n      uVar3 = FUN_00095970(param_2 + 1,local_20,uVar3);\n    }\n    else {\n      local_20[0] = 1;\n    }" if (parenthesized_expression "((char)*param_2 < '\0')" ( (binary_expression "(char)*param_2 < '\0'" (cast_expression "(char)*param_2" ( (type_descriptor "char" primitive_type) ) (pointer_expression "*param_2" * identifier)) < (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      uVar3 = FUN_00095970(param_2 + 1,local_20,uVar3);\n    }" { (expression_statement "uVar3 = FUN_00095970(param_2 + 1,local_20,uVar3);" (assignment_expression "uVar3 = FUN_00095970(param_2 + 1,local_20,uVar3)" identifier = (call_expression "FUN_00095970(param_2 + 1,local_20,uVar3)" identifier (argument_list "(param_2 + 1,local_20,uVar3)" ( (binary_expression "param_2 + 1" identifier + number_literal) , identifier , identifier )))) ;) }) (else_clause "else {\n      local_20[0] = 1;\n    }" else (compound_statement "{\n      local_20[0] = 1;\n    }" { (expression_statement "local_20[0] = 1;" (assignment_expression "local_20[0] = 1" (subscript_expression "local_20[0]" identifier [ number_literal ]) = number_literal) ;) }))) (expression_statement "param_2 = param_2 + uVar3 + local_20[0];" (assignment_expression "param_2 = param_2 + uVar3 + local_20[0]" identifier = (binary_expression "param_2 + uVar3 + local_20[0]" (binary_expression "param_2 + uVar3" identifier + identifier) + (subscript_expression "local_20[0]" identifier [ number_literal ]))) ;) (goto_statement "goto code_r0x001445d0;" goto statement_identifier ;)) (case_statement "case 10:\n    param_2 = param_2 + *param_2 + 1;\n    goto code_r0x001445d0;" case number_literal : (expression_statement "param_2 = param_2 + *param_2 + 1;" (assignment_expression "param_2 = param_2 + *param_2 + 1" identifier = (binary_expression "param_2 + *param_2 + 1" (binary_expression "param_2 + *param_2" identifier + (pointer_expression "*param_2" * identifier)) + number_literal)) ;) (goto_statement "goto code_r0x001445d0;" goto statement_identifier ;)) (case_statement "case 0xb:" case number_literal :) (case_statement "case 0xc:" case number_literal :) (case_statement "case 0x11:\n    param_2 = param_2 + 1;\n    goto code_r0x001445d0;" case number_literal : (expression_statement "param_2 = param_2 + 1;" (assignment_expression "param_2 = param_2 + 1" identifier = (binary_expression "param_2 + 1" identifier + number_literal)) ;) (goto_statement "goto code_r0x001445d0;" goto statement_identifier ;)) (case_statement "case 0xd:\n    if ((char)*param_2 < '\0') {\n      FUN_00095a30(param_2 + 1,local_20,*param_2);\n      param_2 = param_2 + local_20[0];\n      goto code_r0x001445d0;\n    }\n    break;" case number_literal : (if_statement "if ((char)*param_2 < '\0') {\n      FUN_00095a30(param_2 + 1,local_20,*param_2);\n      param_2 = param_2 + local_20[0];\n      goto code_r0x001445d0;\n    }" if (parenthesized_expression "((char)*param_2 < '\0')" ( (binary_expression "(char)*param_2 < '\0'" (cast_expression "(char)*param_2" ( (type_descriptor "char" primitive_type) ) (pointer_expression "*param_2" * identifier)) < (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      FUN_00095a30(param_2 + 1,local_20,*param_2);\n      param_2 = param_2 + local_20[0];\n      goto code_r0x001445d0;\n    }" { (expression_statement "FUN_00095a30(param_2 + 1,local_20,*param_2);" (call_expression "FUN_00095a30(param_2 + 1,local_20,*param_2)" identifier (argument_list "(param_2 + 1,local_20,*param_2)" ( (binary_expression "param_2 + 1" identifier + number_literal) , identifier , (pointer_expression "*param_2" * identifier) ))) ;) (expression_statement "param_2 = param_2 + local_20[0];" (assignment_expression "param_2 = param_2 + local_20[0]" identifier = (binary_expression "param_2 + local_20[0]" identifier + (subscript_expression "local_20[0]" identifier [ number_literal ]))) ;) (goto_statement "goto code_r0x001445d0;" goto statement_identifier ;) })) (break_statement "break;" break ;)) (case_statement "case 0xe:" case number_literal :) (case_statement "case 0x17:\n    param_2 = param_2 + (-(uint)bVar10 & 0xfffffffc) + 8;\n    goto code_r0x001445d0;" case number_literal : (expression_statement "param_2 = param_2 + (-(uint)bVar10 & 0xfffffffc) + 8;" (assignment_expression "param_2 = param_2 + (-(uint)bVar10 & 0xfffffffc) + 8" identifier = (binary_expression "param_2 + (-(uint)bVar10 & 0xfffffffc) + 8" (binary_expression "param_2 + (-(uint)bVar10 & 0xfffffffc)" identifier + (parenthesized_expression "(-(uint)bVar10 & 0xfffffffc)" ( (binary_expression "-(uint)bVar10 & 0xfffffffc" (unary_expression "-(uint)bVar10" - (cast_expression "(uint)bVar10" ( (type_descriptor "uint" type_identifier) ) identifier)) & number_literal) ))) + number_literal)) ;) (goto_statement "goto code_r0x001445d0;" goto statement_identifier ;)) (case_statement "case 0xf:" case number_literal :) (case_statement "case 0x15:\n    if ((char)*param_2 < '\0') {\n      FUN_00095970(param_2 + 1,local_20,*param_2);\n      param_2 = param_2 + local_20[0];\n      goto code_r0x001445d0;\n    }\n    break;" case number_literal : (if_statement "if ((char)*param_2 < '\0') {\n      FUN_00095970(param_2 + 1,local_20,*param_2);\n      param_2 = param_2 + local_20[0];\n      goto code_r0x001445d0;\n    }" if (parenthesized_expression "((char)*param_2 < '\0')" ( (binary_expression "(char)*param_2 < '\0'" (cast_expression "(char)*param_2" ( (type_descriptor "char" primitive_type) ) (pointer_expression "*param_2" * identifier)) < (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      FUN_00095970(param_2 + 1,local_20,*param_2);\n      param_2 = param_2 + local_20[0];\n      goto code_r0x001445d0;\n    }" { (expression_statement "FUN_00095970(param_2 + 1,local_20,*param_2);" (call_expression "FUN_00095970(param_2 + 1,local_20,*param_2)" identifier (argument_list "(param_2 + 1,local_20,*param_2)" ( (binary_expression "param_2 + 1" identifier + number_literal) , identifier , (pointer_expression "*param_2" * identifier) ))) ;) (expression_statement "param_2 = param_2 + local_20[0];" (assignment_expression "param_2 = param_2 + local_20[0]" identifier = (binary_expression "param_2 + local_20[0]" identifier + (subscript_expression "local_20[0]" identifier [ number_literal ]))) ;) (goto_statement "goto code_r0x001445d0;" goto statement_identifier ;) })) (break_statement "break;" break ;)) (case_statement "case 0x19:\n    goto code_r0x001445d0;" case number_literal : (goto_statement "goto code_r0x001445d0;" goto statement_identifier ;)) })) (expression_statement "param_2 = param_2 + 1;" (assignment_expression "param_2 = param_2 + 1" identifier = (binary_expression "param_2 + 1" identifier + number_literal)) ;) (expression_statement "local_20[0] = 1;" (assignment_expression "local_20[0] = 1" (subscript_expression "local_20[0]" identifier [ number_literal ]) = number_literal) ;) (goto_statement "goto code_r0x001445d0;" goto statement_identifier ;) (labeled_statement "LAB_00144646:\n  return uVar7;" statement_identifier : (return_statement "return uVar7;" return identifier ;)) })))
(translation_unit "/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n/* 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  uchar *puVar2;\n  Valtype VVar3;\n  uint uVar4;\n  size_t sVar5;\n  Valtype VVar6;\n  bool bVar7;\n  byte *buffer;\n  byte *buffer_00;\n  bool bVar8;\n  uint64_t uVar9;\n  ulonglong uVar10;\n  uint local_44;\n  size_t LEB_size;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x144599;\n  bVar8 = !is64;\n  buffer = abbrev;\n_L80:\n  bVar1 = *buffer;\n  buffer_00 = buffer + 1;\n  if ((char)bVar1 < '\0') {\n    uVar10 = read_unsigned_LEB_128_x(buffer_00,&LEB_size,bVar1);\n    buffer_00 = buffer + LEB_size;\n  }\n  else {\n    LEB_size = 1;\n    uVar10 = (ulonglong)bVar1;\n  }\n  bVar1 = *buffer_00;\n  buffer = buffer_00 + 1;\n  if ((char)bVar1 < '\0') {\n    uVar9 = read_unsigned_LEB_128_x(buffer,&LEB_size,bVar1);\n    local_44 = (uint)uVar9;\n    buffer = buffer_00 + LEB_size;\n  }\n  else {\n    LEB_size = 1;\n    local_44 = (uint)bVar1;\n  }\n  puVar2 = die;\n  bVar7 = local_44 == 0 && uVar10 == 0;\n  if (bVar7) {\n    *die_end = die;\n    return bVar7;\n  }\n  if (buffer_end <= die) {\n    return bVar7;\n  }\n  switch(local_44) {\n  default:\n    goto _L79;\n  case 1:\n  case 0x10:\n    die = die + address_size;\n    goto _L80;\n  case 3:\n    VVar3 = read_from_pointer<16>(&die);\n    die = die + VVar3;\n    goto _L80;\n  case 4:\n    VVar6 = read_from_pointer<32>(&die);\n    die = die + VVar6;\n    goto _L80;\n  case 5:\n  case 0x12:\n    die = die + 2;\n    goto _L80;\n  case 6:\n  case 0x13:\n    die = die + 4;\n    goto _L80;\n  case 7:\n  case 0x14:\n  case 0x20:\n    die = die + 8;\n    goto _L80;\n  case 8:\n    sVar5 = strlen((char *)die);\n    die = puVar2 + sVar5 + 1;\n    goto _L80;\n  case 9:\n  case 0x18:\n    bVar1 = *die;\n    uVar4 = (uint)bVar1;\n    if ((char)bVar1 < '\0') {\n      uVar9 = read_unsigned_LEB_128_x(die + 1,&LEB_size,bVar1);\n      uVar4 = (uint)uVar9;\n    }\n    else {\n      LEB_size = 1;\n    }\n    die = die + uVar4 + LEB_size;\n    goto _L80;\n  case 10:\n    die = die + *die + 1;\n    goto _L80;\n  case 0xb:\n  case 0xc:\n  case 0x11:\n    die = die + 1;\n    goto _L80;\n  case 0xd:\n    if ((char)*die < '\0') {\n      read_signed_LEB_128_x(die + 1,&LEB_size,*die);\n      die = die + LEB_size;\n      goto _L80;\n    }\n    break;\n  case 0xe:\n  case 0x17:\n    die = die + (-(uint)bVar8 & 0xfffffffc) + 8;\n    goto _L80;\n  case 0xf:\n  case 0x15:\n    if ((char)*die < '\0') {\n      read_unsigned_LEB_128_x(die + 1,&LEB_size,*die);\n      die = die + LEB_size;\n      goto _L80;\n    }\n    break;\n  case 0x19:\n    goto _L80;\n  }\n  die = die + 1;\n  LEB_size = 1;\n  goto _L80;\n_L79:\n  return bVar7;\n}\n\n" comment 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  uchar *puVar2;\n  Valtype VVar3;\n  uint uVar4;\n  size_t sVar5;\n  Valtype VVar6;\n  bool bVar7;\n  byte *buffer;\n  byte *buffer_00;\n  bool bVar8;\n  uint64_t uVar9;\n  ulonglong uVar10;\n  uint local_44;\n  size_t LEB_size;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x144599;\n  bVar8 = !is64;\n  buffer = abbrev;\n_L80:\n  bVar1 = *buffer;\n  buffer_00 = buffer + 1;\n  if ((char)bVar1 < '\0') {\n    uVar10 = read_unsigned_LEB_128_x(buffer_00,&LEB_size,bVar1);\n    buffer_00 = buffer + LEB_size;\n  }\n  else {\n    LEB_size = 1;\n    uVar10 = (ulonglong)bVar1;\n  }\n  bVar1 = *buffer_00;\n  buffer = buffer_00 + 1;\n  if ((char)bVar1 < '\0') {\n    uVar9 = read_unsigned_LEB_128_x(buffer,&LEB_size,bVar1);\n    local_44 = (uint)uVar9;\n    buffer = buffer_00 + LEB_size;\n  }\n  else {\n    LEB_size = 1;\n    local_44 = (uint)bVar1;\n  }\n  puVar2 = die;\n  bVar7 = local_44 == 0 && uVar10 == 0;\n  if (bVar7) {\n    *die_end = die;\n    return bVar7;\n  }\n  if (buffer_end <= die) {\n    return bVar7;\n  }\n  switch(local_44) {\n  default:\n    goto _L79;\n  case 1:\n  case 0x10:\n    die = die + address_size;\n    goto _L80;\n  case 3:\n    VVar3 = read_from_pointer<16>(&die);\n    die = die + VVar3;\n    goto _L80;\n  case 4:\n    VVar6 = read_from_pointer<32>(&die);\n    die = die + VVar6;\n    goto _L80;\n  case 5:\n  case 0x12:\n    die = die + 2;\n    goto _L80;\n  case 6:\n  case 0x13:\n    die = die + 4;\n    goto _L80;\n  case 7:\n  case 0x14:\n  case 0x20:\n    die = die + 8;\n    goto _L80;\n  case 8:\n    sVar5 = strlen((char *)die);\n    die = puVar2 + sVar5 + 1;\n    goto _L80;\n  case 9:\n  case 0x18:\n    bVar1 = *die;\n    uVar4 = (uint)bVar1;\n    if ((char)bVar1 < '\0') {\n      uVar9 = read_unsigned_LEB_128_x(die + 1,&LEB_size,bVar1);\n      uVar4 = (uint)uVar9;\n    }\n    else {\n      LEB_size = 1;\n    }\n    die = die + uVar4 + LEB_size;\n    goto _L80;\n  case 10:\n    die = die + *die + 1;\n    goto _L80;\n  case 0xb:\n  case 0xc:\n  case 0x11:\n    die = die + 1;\n    goto _L80;\n  case 0xd:\n    if ((char)*die < '\0') {\n      read_signed_LEB_128_x(die + 1,&LEB_size,*die);\n      die = die + LEB_size;\n      goto _L80;\n    }\n    break;\n  case 0xe:\n  case 0x17:\n    die = die + (-(uint)bVar8 & 0xfffffffc) + 8;\n    goto _L80;\n  case 0xf:\n  case 0x15:\n    if ((char)*die < '\0') {\n      read_unsigned_LEB_128_x(die + 1,&LEB_size,*die);\n      die = die + LEB_size;\n      goto _L80;\n    }\n    break;\n  case 0x19:\n    goto _L80;\n  }\n  die = die + 1;\n  LEB_size = 1;\n  goto _L80;\n_L79:\n  return bVar7;\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  uchar *puVar2;\n  Valtype VVar3;\n  uint uVar4;\n  size_t sVar5;\n  Valtype VVar6;\n  bool bVar7;\n  byte *buffer;\n  byte *buffer_00;\n  bool bVar8;\n  uint64_t uVar9;\n  ulonglong uVar10;\n  uint local_44;\n  size_t LEB_size;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x144599;\n  bVar8 = !is64;\n  buffer = abbrev;\n_L80:\n  bVar1 = *buffer;\n  buffer_00 = buffer + 1;\n  if ((char)bVar1 < '\0') {\n    uVar10 = read_unsigned_LEB_128_x(buffer_00,&LEB_size,bVar1);\n    buffer_00 = buffer + LEB_size;\n  }\n  else {\n    LEB_size = 1;\n    uVar10 = (ulonglong)bVar1;\n  }\n  bVar1 = *buffer_00;\n  buffer = buffer_00 + 1;\n  if ((char)bVar1 < '\0') {\n    uVar9 = read_unsigned_LEB_128_x(buffer,&LEB_size,bVar1);\n    local_44 = (uint)uVar9;\n    buffer = buffer_00 + LEB_size;\n  }\n  else {\n    LEB_size = 1;\n    local_44 = (uint)bVar1;\n  }\n  puVar2 = die;\n  bVar7 = local_44 == 0 && uVar10 == 0;\n  if (bVar7) {\n    *die_end = die;\n    return bVar7;\n  }\n  if (buffer_end <= die) {\n    return bVar7;\n  }\n  switch(local_44) {\n  default:\n    goto _L79;\n  case 1:\n  case 0x10:\n    die = die + address_size;\n    goto _L80;\n  case 3:\n    VVar3 = read_from_pointer<16>(&die);\n    die = die + VVar3;\n    goto _L80;\n  case 4:\n    VVar6 = read_from_pointer<32>(&die);\n    die = die + VVar6;\n    goto _L80;\n  case 5:\n  case 0x12:\n    die = die + 2;\n    goto _L80;\n  case 6:\n  case 0x13:\n    die = die + 4;\n    goto _L80;\n  case 7:\n  case 0x14:\n  case 0x20:\n    die = die + 8;\n    goto _L80;\n  case 8:\n    sVar5 = strlen((char *)die);\n    die = puVar2 + sVar5 + 1;\n    goto _L80;\n  case 9:\n  case 0x18:\n    bVar1 = *die;\n    uVar4 = (uint)bVar1;\n    if ((char)bVar1 < '\0') {\n      uVar9 = read_unsigned_LEB_128_x(die + 1,&LEB_size,bVar1);\n      uVar4 = (uint)uVar9;\n    }\n    else {\n      LEB_size = 1;\n    }\n    die = die + uVar4 + LEB_size;\n    goto _L80;\n  case 10:\n    die = die + *die + 1;\n    goto _L80;\n  case 0xb:\n  case 0xc:\n  case 0x11:\n    die = die + 1;\n    goto _L80;\n  case 0xd:\n    if ((char)*die < '\0') {\n      read_signed_LEB_128_x(die + 1,&LEB_size,*die);\n      die = die + LEB_size;\n      goto _L80;\n    }\n    break;\n  case 0xe:\n  case 0x17:\n    die = die + (-(uint)bVar8 & 0xfffffffc) + 8;\n    goto _L80;\n  case 0xf:\n  case 0x15:\n    if ((char)*die < '\0') {\n      read_unsigned_LEB_128_x(die + 1,&LEB_size,*die);\n      die = die + LEB_size;\n      goto _L80;\n    }\n    break;\n  case 0x19:\n    goto _L80;\n  }\n  die = die + 1;\n  LEB_size = 1;\n  goto _L80;\n_L79:\n  return bVar7;\n}" { (declaration "byte bVar1;" type_identifier identifier ;) (declaration "uchar *puVar2;" type_identifier (pointer_declarator "*puVar2" * identifier) ;) (declaration "Valtype VVar3;" type_identifier identifier ;) (declaration "uint uVar4;" type_identifier identifier ;) (declaration "size_t sVar5;" primitive_type identifier ;) (declaration "Valtype VVar6;" type_identifier identifier ;) (declaration "bool bVar7;" primitive_type identifier ;) (declaration "byte *buffer;" type_identifier (pointer_declarator "*buffer" * identifier) ;) (declaration "byte *buffer_00;" type_identifier (pointer_declarator "*buffer_00" * identifier) ;) (declaration "bool bVar8;" primitive_type identifier ;) (declaration "uint64_t uVar9;" primitive_type identifier ;) (declaration "ulonglong uVar10;" type_identifier identifier ;) (declaration "uint local_44;" type_identifier identifier ;) (declaration "size_t LEB_size;" primitive_type identifier ;) (declaration "undefined4 uStack_14;" type_identifier identifier ;) (expression_statement "uStack_14 = 0x144599;" (assignment_expression "uStack_14 = 0x144599" identifier = number_literal) ;) (expression_statement "bVar8 = !is64;" (assignment_expression "bVar8 = !is64" identifier = (unary_expression "!is64" ! identifier)) ;) (expression_statement "buffer = abbrev;" (assignment_expression "buffer = abbrev" identifier = identifier) ;) (labeled_statement "_L80:\n  bVar1 = *buffer;" statement_identifier : (expression_statement "bVar1 = *buffer;" (assignment_expression "bVar1 = *buffer" identifier = (pointer_expression "*buffer" * identifier)) ;)) (expression_statement "buffer_00 = buffer + 1;" (assignment_expression "buffer_00 = buffer + 1" identifier = (binary_expression "buffer + 1" identifier + number_literal)) ;) (if_statement "if ((char)bVar1 < '\0') {\n    uVar10 = read_unsigned_LEB_128_x(buffer_00,&LEB_size,bVar1);\n    buffer_00 = buffer + LEB_size;\n  }\n  else {\n    LEB_size = 1;\n    uVar10 = (ulonglong)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    uVar10 = read_unsigned_LEB_128_x(buffer_00,&LEB_size,bVar1);\n    buffer_00 = buffer + LEB_size;\n  }" { (expression_statement "uVar10 = read_unsigned_LEB_128_x(buffer_00,&LEB_size,bVar1);" (assignment_expression "uVar10 = read_unsigned_LEB_128_x(buffer_00,&LEB_size,bVar1)" identifier = (call_expression "read_unsigned_LEB_128_x(buffer_00,&LEB_size,bVar1)" identifier (argument_list "(buffer_00,&LEB_size,bVar1)" ( identifier , (pointer_expression "&LEB_size" & identifier) , identifier )))) ;) (expression_statement "buffer_00 = buffer + LEB_size;" (assignment_expression "buffer_00 = buffer + LEB_size" identifier = (binary_expression "buffer + LEB_size" identifier + identifier)) ;) }) (else_clause "else {\n    LEB_size = 1;\n    uVar10 = (ulonglong)bVar1;\n  }" else (compound_statement "{\n    LEB_size = 1;\n    uVar10 = (ulonglong)bVar1;\n  }" { (expression_statement "LEB_size = 1;" (assignment_expression "LEB_size = 1" identifier = number_literal) ;) (expression_statement "uVar10 = (ulonglong)bVar1;" (assignment_expression "uVar10 = (ulonglong)bVar1" identifier = (cast_expression "(ulonglong)bVar1" ( (type_descriptor "ulonglong" type_identifier) ) identifier)) ;) }))) (expression_statement "bVar1 = *buffer_00;" (assignment_expression "bVar1 = *buffer_00" identifier = (pointer_expression "*buffer_00" * identifier)) ;) (expression_statement "buffer = buffer_00 + 1;" (assignment_expression "buffer = buffer_00 + 1" identifier = (binary_expression "buffer_00 + 1" identifier + number_literal)) ;) (if_statement "if ((char)bVar1 < '\0') {\n    uVar9 = read_unsigned_LEB_128_x(buffer,&LEB_size,bVar1);\n    local_44 = (uint)uVar9;\n    buffer = buffer_00 + LEB_size;\n  }\n  else {\n    LEB_size = 1;\n    local_44 = (uint)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    uVar9 = read_unsigned_LEB_128_x(buffer,&LEB_size,bVar1);\n    local_44 = (uint)uVar9;\n    buffer = buffer_00 + LEB_size;\n  }" { (expression_statement "uVar9 = read_unsigned_LEB_128_x(buffer,&LEB_size,bVar1);" (assignment_expression "uVar9 = read_unsigned_LEB_128_x(buffer,&LEB_size,bVar1)" identifier = (call_expression "read_unsigned_LEB_128_x(buffer,&LEB_size,bVar1)" identifier (argument_list "(buffer,&LEB_size,bVar1)" ( identifier , (pointer_expression "&LEB_size" & identifier) , identifier )))) ;) (expression_statement "local_44 = (uint)uVar9;" (assignment_expression "local_44 = (uint)uVar9" identifier = (cast_expression "(uint)uVar9" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "buffer = buffer_00 + LEB_size;" (assignment_expression "buffer = buffer_00 + LEB_size" identifier = (binary_expression "buffer_00 + LEB_size" identifier + identifier)) ;) }) (else_clause "else {\n    LEB_size = 1;\n    local_44 = (uint)bVar1;\n  }" else (compound_statement "{\n    LEB_size = 1;\n    local_44 = (uint)bVar1;\n  }" { (expression_statement "LEB_size = 1;" (assignment_expression "LEB_size = 1" identifier = number_literal) ;) (expression_statement "local_44 = (uint)bVar1;" (assignment_expression "local_44 = (uint)bVar1" identifier = (cast_expression "(uint)bVar1" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) }))) (expression_statement "puVar2 = die;" (assignment_expression "puVar2 = die" identifier = identifier) ;) (expression_statement "bVar7 = local_44 == 0 && uVar10 == 0;" (assignment_expression "bVar7 = local_44 == 0 && uVar10 == 0" identifier = (binary_expression "local_44 == 0 && uVar10 == 0" (binary_expression "local_44 == 0" identifier == number_literal) && (binary_expression "uVar10 == 0" identifier == number_literal))) ;) (if_statement "if (bVar7) {\n    *die_end = die;\n    return bVar7;\n  }" if (parenthesized_expression "(bVar7)" ( identifier )) (compound_statement "{\n    *die_end = die;\n    return bVar7;\n  }" { (expression_statement "*die_end = die;" (assignment_expression "*die_end = die" (pointer_expression "*die_end" * identifier) = identifier) ;) (return_statement "return bVar7;" return identifier ;) })) (if_statement "if (buffer_end <= die) {\n    return bVar7;\n  }" if (parenthesized_expression "(buffer_end <= die)" ( (binary_expression "buffer_end <= die" identifier <= identifier) )) (compound_statement "{\n    return bVar7;\n  }" { (return_statement "return bVar7;" return identifier ;) })) (switch_statement "switch(local_44) {\n  default:\n    goto _L79;\n  case 1:\n  case 0x10:\n    die = die + address_size;\n    goto _L80;\n  case 3:\n    VVar3 = read_from_pointer<16>(&die);\n    die = die + VVar3;\n    goto _L80;\n  case 4:\n    VVar6 = read_from_pointer<32>(&die);\n    die = die + VVar6;\n    goto _L80;\n  case 5:\n  case 0x12:\n    die = die + 2;\n    goto _L80;\n  case 6:\n  case 0x13:\n    die = die + 4;\n    goto _L80;\n  case 7:\n  case 0x14:\n  case 0x20:\n    die = die + 8;\n    goto _L80;\n  case 8:\n    sVar5 = strlen((char *)die);\n    die = puVar2 + sVar5 + 1;\n    goto _L80;\n  case 9:\n  case 0x18:\n    bVar1 = *die;\n    uVar4 = (uint)bVar1;\n    if ((char)bVar1 < '\0') {\n      uVar9 = read_unsigned_LEB_128_x(die + 1,&LEB_size,bVar1);\n      uVar4 = (uint)uVar9;\n    }\n    else {\n      LEB_size = 1;\n    }\n    die = die + uVar4 + LEB_size;\n    goto _L80;\n  case 10:\n    die = die + *die + 1;\n    goto _L80;\n  case 0xb:\n  case 0xc:\n  case 0x11:\n    die = die + 1;\n    goto _L80;\n  case 0xd:\n    if ((char)*die < '\0') {\n      read_signed_LEB_128_x(die + 1,&LEB_size,*die);\n      die = die + LEB_size;\n      goto _L80;\n    }\n    break;\n  case 0xe:\n  case 0x17:\n    die = die + (-(uint)bVar8 & 0xfffffffc) + 8;\n    goto _L80;\n  case 0xf:\n  case 0x15:\n    if ((char)*die < '\0') {\n      read_unsigned_LEB_128_x(die + 1,&LEB_size,*die);\n      die = die + LEB_size;\n      goto _L80;\n    }\n    break;\n  case 0x19:\n    goto _L80;\n  }" switch (parenthesized_expression "(local_44)" ( identifier )) (compound_statement "{\n  default:\n    goto _L79;\n  case 1:\n  case 0x10:\n    die = die + address_size;\n    goto _L80;\n  case 3:\n    VVar3 = read_from_pointer<16>(&die);\n    die = die + VVar3;\n    goto _L80;\n  case 4:\n    VVar6 = read_from_pointer<32>(&die);\n    die = die + VVar6;\n    goto _L80;\n  case 5:\n  case 0x12:\n    die = die + 2;\n    goto _L80;\n  case 6:\n  case 0x13:\n    die = die + 4;\n    goto _L80;\n  case 7:\n  case 0x14:\n  case 0x20:\n    die = die + 8;\n    goto _L80;\n  case 8:\n    sVar5 = strlen((char *)die);\n    die = puVar2 + sVar5 + 1;\n    goto _L80;\n  case 9:\n  case 0x18:\n    bVar1 = *die;\n    uVar4 = (uint)bVar1;\n    if ((char)bVar1 < '\0') {\n      uVar9 = read_unsigned_LEB_128_x(die + 1,&LEB_size,bVar1);\n      uVar4 = (uint)uVar9;\n    }\n    else {\n      LEB_size = 1;\n    }\n    die = die + uVar4 + LEB_size;\n    goto _L80;\n  case 10:\n    die = die + *die + 1;\n    goto _L80;\n  case 0xb:\n  case 0xc:\n  case 0x11:\n    die = die + 1;\n    goto _L80;\n  case 0xd:\n    if ((char)*die < '\0') {\n      read_signed_LEB_128_x(die + 1,&LEB_size,*die);\n      die = die + LEB_size;\n      goto _L80;\n    }\n    break;\n  case 0xe:\n  case 0x17:\n    die = die + (-(uint)bVar8 & 0xfffffffc) + 8;\n    goto _L80;\n  case 0xf:\n  case 0x15:\n    if ((char)*die < '\0') {\n      read_unsigned_LEB_128_x(die + 1,&LEB_size,*die);\n      die = die + LEB_size;\n      goto _L80;\n    }\n    break;\n  case 0x19:\n    goto _L80;\n  }" { (case_statement "default:\n    goto _L79;" default : (goto_statement "goto _L79;" goto statement_identifier ;)) (case_statement "case 1:" case number_literal :) (case_statement "case 0x10:\n    die = die + address_size;\n    goto _L80;" case number_literal : (expression_statement "die = die + address_size;" (assignment_expression "die = die + address_size" identifier = (binary_expression "die + address_size" identifier + identifier)) ;) (goto_statement "goto _L80;" goto statement_identifier ;)) (case_statement "case 3:\n    VVar3 = read_from_pointer<16>(&die);\n    die = die + VVar3;\n    goto _L80;" case number_literal : (expression_statement "VVar3 = read_from_pointer<16>(&die);" (assignment_expression "VVar3 = read_from_pointer<16>(&die)" identifier = (binary_expression "read_from_pointer<16>(&die)" (binary_expression "read_from_pointer<16" identifier < number_literal) > (parenthesized_expression "(&die)" ( (pointer_expression "&die" & identifier) )))) ;) (expression_statement "die = die + VVar3;" (assignment_expression "die = die + VVar3" identifier = (binary_expression "die + VVar3" identifier + identifier)) ;) (goto_statement "goto _L80;" goto statement_identifier ;)) (case_statement "case 4:\n    VVar6 = read_from_pointer<32>(&die);\n    die = die + VVar6;\n    goto _L80;" case number_literal : (expression_statement "VVar6 = read_from_pointer<32>(&die);" (assignment_expression "VVar6 = read_from_pointer<32>(&die)" identifier = (binary_expression "read_from_pointer<32>(&die)" (binary_expression "read_from_pointer<32" identifier < number_literal) > (parenthesized_expression "(&die)" ( (pointer_expression "&die" & identifier) )))) ;) (expression_statement "die = die + VVar6;" (assignment_expression "die = die + VVar6" identifier = (binary_expression "die + VVar6" identifier + identifier)) ;) (goto_statement "goto _L80;" goto statement_identifier ;)) (case_statement "case 5:" case number_literal :) (case_statement "case 0x12:\n    die = die + 2;\n    goto _L80;" case number_literal : (expression_statement "die = die + 2;" (assignment_expression "die = die + 2" identifier = (binary_expression "die + 2" identifier + number_literal)) ;) (goto_statement "goto _L80;" goto statement_identifier ;)) (case_statement "case 6:" case number_literal :) (case_statement "case 0x13:\n    die = die + 4;\n    goto _L80;" case number_literal : (expression_statement "die = die + 4;" (assignment_expression "die = die + 4" identifier = (binary_expression "die + 4" identifier + number_literal)) ;) (goto_statement "goto _L80;" goto statement_identifier ;)) (case_statement "case 7:" case number_literal :) (case_statement "case 0x14:" case number_literal :) (case_statement "case 0x20:\n    die = die + 8;\n    goto _L80;" case number_literal : (expression_statement "die = die + 8;" (assignment_expression "die = die + 8" identifier = (binary_expression "die + 8" identifier + number_literal)) ;) (goto_statement "goto _L80;" goto statement_identifier ;)) (case_statement "case 8:\n    sVar5 = strlen((char *)die);\n    die = puVar2 + sVar5 + 1;\n    goto _L80;" case number_literal : (expression_statement "sVar5 = strlen((char *)die);" (assignment_expression "sVar5 = strlen((char *)die)" identifier = (call_expression "strlen((char *)die)" identifier (argument_list "((char *)die)" ( (cast_expression "(char *)die" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) )))) ;) (expression_statement "die = puVar2 + sVar5 + 1;" (assignment_expression "die = puVar2 + sVar5 + 1" identifier = (binary_expression "puVar2 + sVar5 + 1" (binary_expression "puVar2 + sVar5" identifier + identifier) + number_literal)) ;) (goto_statement "goto _L80;" goto statement_identifier ;)) (case_statement "case 9:" case number_literal :) (case_statement "case 0x18:\n    bVar1 = *die;\n    uVar4 = (uint)bVar1;\n    if ((char)bVar1 < '\0') {\n      uVar9 = read_unsigned_LEB_128_x(die + 1,&LEB_size,bVar1);\n      uVar4 = (uint)uVar9;\n    }\n    else {\n      LEB_size = 1;\n    }\n    die = die + uVar4 + LEB_size;\n    goto _L80;" case number_literal : (expression_statement "bVar1 = *die;" (assignment_expression "bVar1 = *die" identifier = (pointer_expression "*die" * identifier)) ;) (expression_statement "uVar4 = (uint)bVar1;" (assignment_expression "uVar4 = (uint)bVar1" identifier = (cast_expression "(uint)bVar1" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (if_statement "if ((char)bVar1 < '\0') {\n      uVar9 = read_unsigned_LEB_128_x(die + 1,&LEB_size,bVar1);\n      uVar4 = (uint)uVar9;\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      uVar9 = read_unsigned_LEB_128_x(die + 1,&LEB_size,bVar1);\n      uVar4 = (uint)uVar9;\n    }" { (expression_statement "uVar9 = read_unsigned_LEB_128_x(die + 1,&LEB_size,bVar1);" (assignment_expression "uVar9 = read_unsigned_LEB_128_x(die + 1,&LEB_size,bVar1)" identifier = (call_expression "read_unsigned_LEB_128_x(die + 1,&LEB_size,bVar1)" identifier (argument_list "(die + 1,&LEB_size,bVar1)" ( (binary_expression "die + 1" identifier + number_literal) , (pointer_expression "&LEB_size" & identifier) , identifier )))) ;) (expression_statement "uVar4 = (uint)uVar9;" (assignment_expression "uVar4 = (uint)uVar9" identifier = (cast_expression "(uint)uVar9" ( (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 "die = die + uVar4 + LEB_size;" (assignment_expression "die = die + uVar4 + LEB_size" identifier = (binary_expression "die + uVar4 + LEB_size" (binary_expression "die + uVar4" identifier + identifier) + identifier)) ;) (goto_statement "goto _L80;" goto statement_identifier ;)) (case_statement "case 10:\n    die = die + *die + 1;\n    goto _L80;" case number_literal : (expression_statement "die = die + *die + 1;" (assignment_expression "die = die + *die + 1" identifier = (binary_expression "die + *die + 1" (binary_expression "die + *die" identifier + (pointer_expression "*die" * identifier)) + number_literal)) ;) (goto_statement "goto _L80;" goto statement_identifier ;)) (case_statement "case 0xb:" case number_literal :) (case_statement "case 0xc:" case number_literal :) (case_statement "case 0x11:\n    die = die + 1;\n    goto _L80;" case number_literal : (expression_statement "die = die + 1;" (assignment_expression "die = die + 1" identifier = (binary_expression "die + 1" identifier + number_literal)) ;) (goto_statement "goto _L80;" goto statement_identifier ;)) (case_statement "case 0xd:\n    if ((char)*die < '\0') {\n      read_signed_LEB_128_x(die + 1,&LEB_size,*die);\n      die = die + LEB_size;\n      goto _L80;\n    }\n    break;" case number_literal : (if_statement "if ((char)*die < '\0') {\n      read_signed_LEB_128_x(die + 1,&LEB_size,*die);\n      die = die + LEB_size;\n      goto _L80;\n    }" if (parenthesized_expression "((char)*die < '\0')" ( (binary_expression "(char)*die < '\0'" (cast_expression "(char)*die" ( (type_descriptor "char" primitive_type) ) (pointer_expression "*die" * identifier)) < (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      read_signed_LEB_128_x(die + 1,&LEB_size,*die);\n      die = die + LEB_size;\n      goto _L80;\n    }" { (expression_statement "read_signed_LEB_128_x(die + 1,&LEB_size,*die);" (call_expression "read_signed_LEB_128_x(die + 1,&LEB_size,*die)" identifier (argument_list "(die + 1,&LEB_size,*die)" ( (binary_expression "die + 1" identifier + number_literal) , (pointer_expression "&LEB_size" & identifier) , (pointer_expression "*die" * identifier) ))) ;) (expression_statement "die = die + LEB_size;" (assignment_expression "die = die + LEB_size" identifier = (binary_expression "die + LEB_size" identifier + identifier)) ;) (goto_statement "goto _L80;" goto statement_identifier ;) })) (break_statement "break;" break ;)) (case_statement "case 0xe:" case number_literal :) (case_statement "case 0x17:\n    die = die + (-(uint)bVar8 & 0xfffffffc) + 8;\n    goto _L80;" case number_literal : (expression_statement "die = die + (-(uint)bVar8 & 0xfffffffc) + 8;" (assignment_expression "die = die + (-(uint)bVar8 & 0xfffffffc) + 8" identifier = (binary_expression "die + (-(uint)bVar8 & 0xfffffffc) + 8" (binary_expression "die + (-(uint)bVar8 & 0xfffffffc)" identifier + (parenthesized_expression "(-(uint)bVar8 & 0xfffffffc)" ( (binary_expression "-(uint)bVar8 & 0xfffffffc" (unary_expression "-(uint)bVar8" - (cast_expression "(uint)bVar8" ( (type_descriptor "uint" type_identifier) ) identifier)) & number_literal) ))) + number_literal)) ;) (goto_statement "goto _L80;" goto statement_identifier ;)) (case_statement "case 0xf:" case number_literal :) (case_statement "case 0x15:\n    if ((char)*die < '\0') {\n      read_unsigned_LEB_128_x(die + 1,&LEB_size,*die);\n      die = die + LEB_size;\n      goto _L80;\n    }\n    break;" case number_literal : (if_statement "if ((char)*die < '\0') {\n      read_unsigned_LEB_128_x(die + 1,&LEB_size,*die);\n      die = die + LEB_size;\n      goto _L80;\n    }" if (parenthesized_expression "((char)*die < '\0')" ( (binary_expression "(char)*die < '\0'" (cast_expression "(char)*die" ( (type_descriptor "char" primitive_type) ) (pointer_expression "*die" * identifier)) < (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      read_unsigned_LEB_128_x(die + 1,&LEB_size,*die);\n      die = die + LEB_size;\n      goto _L80;\n    }" { (expression_statement "read_unsigned_LEB_128_x(die + 1,&LEB_size,*die);" (call_expression "read_unsigned_LEB_128_x(die + 1,&LEB_size,*die)" identifier (argument_list "(die + 1,&LEB_size,*die)" ( (binary_expression "die + 1" identifier + number_literal) , (pointer_expression "&LEB_size" & identifier) , (pointer_expression "*die" * identifier) ))) ;) (expression_statement "die = die + LEB_size;" (assignment_expression "die = die + LEB_size" identifier = (binary_expression "die + LEB_size" identifier + identifier)) ;) (goto_statement "goto _L80;" goto statement_identifier ;) })) (break_statement "break;" break ;)) (case_statement "case 0x19:\n    goto _L80;" case number_literal : (goto_statement "goto _L80;" goto statement_identifier ;)) })) (expression_statement "die = die + 1;" (assignment_expression "die = die + 1" identifier = (binary_expression "die + 1" identifier + number_literal)) ;) (expression_statement "LEB_size = 1;" (assignment_expression "LEB_size = 1" identifier = number_literal) ;) (goto_statement "goto _L80;" goto statement_identifier ;) (labeled_statement "_L79:\n  return bVar7;" statement_identifier : (return_statement "return bVar7;" return identifier ;)) })))
(translation_unit "undefined4\nFUN_00144590(undefined4 param_1,byte *param_2,byte *param_3,undefined4 *param_4,byte *param_5,\n            int param_6,char param_7)\n\n{\n  byte bVar1;\n  byte *pbVar2;\n  uint uVar3;\n  size_t sVar4;\n  int iVar5;\n  bool bVar6;\n  byte *pbVar8;\n  byte *pbVar9;\n  bool bVar10;\n  ulonglong uVar11;\n  uint local_44;\n  int local_20 [3];\n  undefined4 uStack_14;\n  undefined4 uVar7;\n  \n  uStack_14 = 0x144599;\n  bVar10 = param_7 == '\0';\n  pbVar9 = param_3;\ncode_r0x001445d0:\n  bVar1 = *pbVar9;\n  pbVar8 = pbVar9 + 1;\n  if ((char)bVar1 < '\0') {\n    uVar11 = FUN_00095970(pbVar8,local_20,(uint)bVar1);\n    pbVar8 = pbVar9 + local_20[0];\n  }\n  else {\n    local_20[0] = 1;\n    uVar11 = (ulonglong)(uint)bVar1;\n  }\n  local_44 = (uint)*pbVar8;\n  if ((char)*pbVar8 < '\0') {\n    local_44 = FUN_00095970(pbVar8 + 1,local_20,local_44);\n    pbVar8 = pbVar8 + local_20[0];\n    pbVar9 = pbVar8;\n  }\n  else {\n    local_20[0] = 1;\n    pbVar9 = pbVar8 + 1;\n  }\n  pbVar2 = param_2;\n  bVar6 = local_44 == 0 && uVar11 == 0;\n  uVar7 = CONCAT31((int3)((uint)pbVar8 >> 8),bVar6);\n  if (bVar6) {\n    *param_4 = param_2;\n    return uVar7;\n  }\n  if (param_5 <= param_2) {\n    return uVar7;\n  }\n  switch(local_44) {\n  default:\n    goto LAB_00144646;\n  case 1:\n  case 0x10:\n    param_2 = param_2 + param_6;\n    goto code_r0x001445d0;\n  case 3:\n    uVar3 = FUN_00145ad0(&param_2);\n    param_2 = param_2 + (uVar3 & 0xffff);\n    goto code_r0x001445d0;\n  case 4:\n    iVar5 = FUN_00145b50(&param_2);\n    param_2 = param_2 + iVar5;\n    goto code_r0x001445d0;\n  case 5:\n  case 0x12:\n    param_2 = param_2 + 2;\n    goto code_r0x001445d0;\n  case 6:\n  case 0x13:\n    param_2 = param_2 + 4;\n    goto code_r0x001445d0;\n  case 7:\n  case 0x14:\n  case 0x20:\n    param_2 = param_2 + 8;\n    goto code_r0x001445d0;\n  case 8:\n    sVar4 = strlen((char *)param_2);\n    param_2 = pbVar2 + sVar4 + 1;\n    goto code_r0x001445d0;\n  case 9:\n  case 0x18:\n    uVar3 = (uint)*param_2;\n    if ((char)*param_2 < '\0') {\n      uVar3 = FUN_00095970(param_2 + 1,local_20,uVar3);\n    }\n    else {\n      local_20[0] = 1;\n    }\n    param_2 = param_2 + uVar3 + local_20[0];\n    goto code_r0x001445d0;\n  case 10:\n    param_2 = param_2 + *param_2 + 1;\n    goto code_r0x001445d0;\n  case 0xb:\n  case 0xc:\n  case 0x11:\n    param_2 = param_2 + 1;\n    goto code_r0x001445d0;\n  case 0xd:\n    if ((char)*param_2 < '\0') {\n      FUN_00095a30(param_2 + 1,local_20,*param_2);\n      param_2 = param_2 + local_20[0];\n      goto code_r0x001445d0;\n    }\n    break;\n  case 0xe:\n  case 0x17:\n    param_2 = param_2 + (-(uint)bVar10 & 0xfffffffc) + 8;\n    goto code_r0x001445d0;\n  case 0xf:\n  case 0x15:\n    if ((char)*param_2 < '\0') {\n      FUN_00095970(param_2 + 1,local_20,*param_2);\n      param_2 = param_2 + local_20[0];\n      goto code_r0x001445d0;\n    }\n    break;\n  case 0x19:\n    goto code_r0x001445d0;\n  }\n  param_2 = param_2 + 1;\n  local_20[0] = 1;\n  goto code_r0x001445d0;\nLAB_00144646:\n  return uVar7;\n}\n\n" (function_definition "undefined4\nFUN_00144590(undefined4 param_1,byte *param_2,byte *param_3,undefined4 *param_4,byte *param_5,\n            int param_6,char param_7)\n\n{\n  byte bVar1;\n  byte *pbVar2;\n  uint uVar3;\n  size_t sVar4;\n  int iVar5;\n  bool bVar6;\n  byte *pbVar8;\n  byte *pbVar9;\n  bool bVar10;\n  ulonglong uVar11;\n  uint local_44;\n  int local_20 [3];\n  undefined4 uStack_14;\n  undefined4 uVar7;\n  \n  uStack_14 = 0x144599;\n  bVar10 = param_7 == '\0';\n  pbVar9 = param_3;\ncode_r0x001445d0:\n  bVar1 = *pbVar9;\n  pbVar8 = pbVar9 + 1;\n  if ((char)bVar1 < '\0') {\n    uVar11 = FUN_00095970(pbVar8,local_20,(uint)bVar1);\n    pbVar8 = pbVar9 + local_20[0];\n  }\n  else {\n    local_20[0] = 1;\n    uVar11 = (ulonglong)(uint)bVar1;\n  }\n  local_44 = (uint)*pbVar8;\n  if ((char)*pbVar8 < '\0') {\n    local_44 = FUN_00095970(pbVar8 + 1,local_20,local_44);\n    pbVar8 = pbVar8 + local_20[0];\n    pbVar9 = pbVar8;\n  }\n  else {\n    local_20[0] = 1;\n    pbVar9 = pbVar8 + 1;\n  }\n  pbVar2 = param_2;\n  bVar6 = local_44 == 0 && uVar11 == 0;\n  uVar7 = CONCAT31((int3)((uint)pbVar8 >> 8),bVar6);\n  if (bVar6) {\n    *param_4 = param_2;\n    return uVar7;\n  }\n  if (param_5 <= param_2) {\n    return uVar7;\n  }\n  switch(local_44) {\n  default:\n    goto LAB_00144646;\n  case 1:\n  case 0x10:\n    param_2 = param_2 + param_6;\n    goto code_r0x001445d0;\n  case 3:\n    uVar3 = FUN_00145ad0(&param_2);\n    param_2 = param_2 + (uVar3 & 0xffff);\n    goto code_r0x001445d0;\n  case 4:\n    iVar5 = FUN_00145b50(&param_2);\n    param_2 = param_2 + iVar5;\n    goto code_r0x001445d0;\n  case 5:\n  case 0x12:\n    param_2 = param_2 + 2;\n    goto code_r0x001445d0;\n  case 6:\n  case 0x13:\n    param_2 = param_2 + 4;\n    goto code_r0x001445d0;\n  case 7:\n  case 0x14:\n  case 0x20:\n    param_2 = param_2 + 8;\n    goto code_r0x001445d0;\n  case 8:\n    sVar4 = strlen((char *)param_2);\n    param_2 = pbVar2 + sVar4 + 1;\n    goto code_r0x001445d0;\n  case 9:\n  case 0x18:\n    uVar3 = (uint)*param_2;\n    if ((char)*param_2 < '\0') {\n      uVar3 = FUN_00095970(param_2 + 1,local_20,uVar3);\n    }\n    else {\n      local_20[0] = 1;\n    }\n    param_2 = param_2 + uVar3 + local_20[0];\n    goto code_r0x001445d0;\n  case 10:\n    param_2 = param_2 + *param_2 + 1;\n    goto code_r0x001445d0;\n  case 0xb:\n  case 0xc:\n  case 0x11:\n    param_2 = param_2 + 1;\n    goto code_r0x001445d0;\n  case 0xd:\n    if ((char)*param_2 < '\0') {\n      FUN_00095a30(param_2 + 1,local_20,*param_2);\n      param_2 = param_2 + local_20[0];\n      goto code_r0x001445d0;\n    }\n    break;\n  case 0xe:\n  case 0x17:\n    param_2 = param_2 + (-(uint)bVar10 & 0xfffffffc) + 8;\n    goto code_r0x001445d0;\n  case 0xf:\n  case 0x15:\n    if ((char)*param_2 < '\0') {\n      FUN_00095970(param_2 + 1,local_20,*param_2);\n      param_2 = param_2 + local_20[0];\n      goto code_r0x001445d0;\n    }\n    break;\n  case 0x19:\n    goto code_r0x001445d0;\n  }\n  param_2 = param_2 + 1;\n  local_20[0] = 1;\n  goto code_r0x001445d0;\nLAB_00144646:\n  return uVar7;\n}" type_identifier (function_declarator "FUN_00144590(undefined4 param_1,byte *param_2,byte *param_3,undefined4 *param_4,byte *param_5,\n            int param_6,char param_7)" identifier (parameter_list "(undefined4 param_1,byte *param_2,byte *param_3,undefined4 *param_4,byte *param_5,\n            int param_6,char param_7)" ( (parameter_declaration "undefined4 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 "undefined4 *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  byte *pbVar2;\n  uint uVar3;\n  size_t sVar4;\n  int iVar5;\n  bool bVar6;\n  byte *pbVar8;\n  byte *pbVar9;\n  bool bVar10;\n  ulonglong uVar11;\n  uint local_44;\n  int local_20 [3];\n  undefined4 uStack_14;\n  undefined4 uVar7;\n  \n  uStack_14 = 0x144599;\n  bVar10 = param_7 == '\0';\n  pbVar9 = param_3;\ncode_r0x001445d0:\n  bVar1 = *pbVar9;\n  pbVar8 = pbVar9 + 1;\n  if ((char)bVar1 < '\0') {\n    uVar11 = FUN_00095970(pbVar8,local_20,(uint)bVar1);\n    pbVar8 = pbVar9 + local_20[0];\n  }\n  else {\n    local_20[0] = 1;\n    uVar11 = (ulonglong)(uint)bVar1;\n  }\n  local_44 = (uint)*pbVar8;\n  if ((char)*pbVar8 < '\0') {\n    local_44 = FUN_00095970(pbVar8 + 1,local_20,local_44);\n    pbVar8 = pbVar8 + local_20[0];\n    pbVar9 = pbVar8;\n  }\n  else {\n    local_20[0] = 1;\n    pbVar9 = pbVar8 + 1;\n  }\n  pbVar2 = param_2;\n  bVar6 = local_44 == 0 && uVar11 == 0;\n  uVar7 = CONCAT31((int3)((uint)pbVar8 >> 8),bVar6);\n  if (bVar6) {\n    *param_4 = param_2;\n    return uVar7;\n  }\n  if (param_5 <= param_2) {\n    return uVar7;\n  }\n  switch(local_44) {\n  default:\n    goto LAB_00144646;\n  case 1:\n  case 0x10:\n    param_2 = param_2 + param_6;\n    goto code_r0x001445d0;\n  case 3:\n    uVar3 = FUN_00145ad0(&param_2);\n    param_2 = param_2 + (uVar3 & 0xffff);\n    goto code_r0x001445d0;\n  case 4:\n    iVar5 = FUN_00145b50(&param_2);\n    param_2 = param_2 + iVar5;\n    goto code_r0x001445d0;\n  case 5:\n  case 0x12:\n    param_2 = param_2 + 2;\n    goto code_r0x001445d0;\n  case 6:\n  case 0x13:\n    param_2 = param_2 + 4;\n    goto code_r0x001445d0;\n  case 7:\n  case 0x14:\n  case 0x20:\n    param_2 = param_2 + 8;\n    goto code_r0x001445d0;\n  case 8:\n    sVar4 = strlen((char *)param_2);\n    param_2 = pbVar2 + sVar4 + 1;\n    goto code_r0x001445d0;\n  case 9:\n  case 0x18:\n    uVar3 = (uint)*param_2;\n    if ((char)*param_2 < '\0') {\n      uVar3 = FUN_00095970(param_2 + 1,local_20,uVar3);\n    }\n    else {\n      local_20[0] = 1;\n    }\n    param_2 = param_2 + uVar3 + local_20[0];\n    goto code_r0x001445d0;\n  case 10:\n    param_2 = param_2 + *param_2 + 1;\n    goto code_r0x001445d0;\n  case 0xb:\n  case 0xc:\n  case 0x11:\n    param_2 = param_2 + 1;\n    goto code_r0x001445d0;\n  case 0xd:\n    if ((char)*param_2 < '\0') {\n      FUN_00095a30(param_2 + 1,local_20,*param_2);\n      param_2 = param_2 + local_20[0];\n      goto code_r0x001445d0;\n    }\n    break;\n  case 0xe:\n  case 0x17:\n    param_2 = param_2 + (-(uint)bVar10 & 0xfffffffc) + 8;\n    goto code_r0x001445d0;\n  case 0xf:\n  case 0x15:\n    if ((char)*param_2 < '\0') {\n      FUN_00095970(param_2 + 1,local_20,*param_2);\n      param_2 = param_2 + local_20[0];\n      goto code_r0x001445d0;\n    }\n    break;\n  case 0x19:\n    goto code_r0x001445d0;\n  }\n  param_2 = param_2 + 1;\n  local_20[0] = 1;\n  goto code_r0x001445d0;\nLAB_00144646:\n  return uVar7;\n}" { (declaration "byte bVar1;" type_identifier identifier ;) (declaration "byte *pbVar2;" type_identifier (pointer_declarator "*pbVar2" * identifier) ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "size_t sVar4;" primitive_type identifier ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "bool bVar6;" primitive_type identifier ;) (declaration "byte *pbVar8;" type_identifier (pointer_declarator "*pbVar8" * identifier) ;) (declaration "byte *pbVar9;" type_identifier (pointer_declarator "*pbVar9" * identifier) ;) (declaration "bool bVar10;" primitive_type identifier ;) (declaration "ulonglong uVar11;" type_identifier identifier ;) (declaration "uint local_44;" type_identifier identifier ;) (declaration "int local_20 [3];" primitive_type (array_declarator "local_20 [3]" identifier [ number_literal ]) ;) (declaration "undefined4 uStack_14;" type_identifier identifier ;) (declaration "undefined4 uVar7;" type_identifier identifier ;) (expression_statement "uStack_14 = 0x144599;" (assignment_expression "uStack_14 = 0x144599" identifier = number_literal) ;) (expression_statement "bVar10 = param_7 == '\0';" (assignment_expression "bVar10 = param_7 == '\0'" identifier = (binary_expression "param_7 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence '))) ;) (expression_statement "pbVar9 = param_3;" (assignment_expression "pbVar9 = param_3" identifier = identifier) ;) (labeled_statement "code_r0x001445d0:\n  bVar1 = *pbVar9;" statement_identifier : (expression_statement "bVar1 = *pbVar9;" (assignment_expression "bVar1 = *pbVar9" identifier = (pointer_expression "*pbVar9" * identifier)) ;)) (expression_statement "pbVar8 = pbVar9 + 1;" (assignment_expression "pbVar8 = pbVar9 + 1" identifier = (binary_expression "pbVar9 + 1" identifier + number_literal)) ;) (if_statement "if ((char)bVar1 < '\0') {\n    uVar11 = FUN_00095970(pbVar8,local_20,(uint)bVar1);\n    pbVar8 = pbVar9 + local_20[0];\n  }\n  else {\n    local_20[0] = 1;\n    uVar11 = (ulonglong)(uint)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    uVar11 = FUN_00095970(pbVar8,local_20,(uint)bVar1);\n    pbVar8 = pbVar9 + local_20[0];\n  }" { (expression_statement "uVar11 = FUN_00095970(pbVar8,local_20,(uint)bVar1);" (assignment_expression "uVar11 = FUN_00095970(pbVar8,local_20,(uint)bVar1)" identifier = (call_expression "FUN_00095970(pbVar8,local_20,(uint)bVar1)" identifier (argument_list "(pbVar8,local_20,(uint)bVar1)" ( identifier , identifier , (cast_expression "(uint)bVar1" ( (type_descriptor "uint" type_identifier) ) identifier) )))) ;) (expression_statement "pbVar8 = pbVar9 + local_20[0];" (assignment_expression "pbVar8 = pbVar9 + local_20[0]" identifier = (binary_expression "pbVar9 + local_20[0]" identifier + (subscript_expression "local_20[0]" identifier [ number_literal ]))) ;) }) (else_clause "else {\n    local_20[0] = 1;\n    uVar11 = (ulonglong)(uint)bVar1;\n  }" else (compound_statement "{\n    local_20[0] = 1;\n    uVar11 = (ulonglong)(uint)bVar1;\n  }" { (expression_statement "local_20[0] = 1;" (assignment_expression "local_20[0] = 1" (subscript_expression "local_20[0]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "uVar11 = (ulonglong)(uint)bVar1;" (assignment_expression "uVar11 = (ulonglong)(uint)bVar1" identifier = (cast_expression "(ulonglong)(uint)bVar1" ( (type_descriptor "ulonglong" type_identifier) ) (cast_expression "(uint)bVar1" ( (type_descriptor "uint" type_identifier) ) identifier))) ;) }))) (expression_statement "local_44 = (uint)*pbVar8;" (assignment_expression "local_44 = (uint)*pbVar8" identifier = (binary_expression "(uint)*pbVar8" (parenthesized_expression "(uint)" ( identifier )) * identifier)) ;) (if_statement "if ((char)*pbVar8 < '\0') {\n    local_44 = FUN_00095970(pbVar8 + 1,local_20,local_44);\n    pbVar8 = pbVar8 + local_20[0];\n    pbVar9 = pbVar8;\n  }\n  else {\n    local_20[0] = 1;\n    pbVar9 = pbVar8 + 1;\n  }" if (parenthesized_expression "((char)*pbVar8 < '\0')" ( (binary_expression "(char)*pbVar8 < '\0'" (cast_expression "(char)*pbVar8" ( (type_descriptor "char" primitive_type) ) (pointer_expression "*pbVar8" * identifier)) < (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    local_44 = FUN_00095970(pbVar8 + 1,local_20,local_44);\n    pbVar8 = pbVar8 + local_20[0];\n    pbVar9 = pbVar8;\n  }" { (expression_statement "local_44 = FUN_00095970(pbVar8 + 1,local_20,local_44);" (assignment_expression "local_44 = FUN_00095970(pbVar8 + 1,local_20,local_44)" identifier = (call_expression "FUN_00095970(pbVar8 + 1,local_20,local_44)" identifier (argument_list "(pbVar8 + 1,local_20,local_44)" ( (binary_expression "pbVar8 + 1" identifier + number_literal) , identifier , identifier )))) ;) (expression_statement "pbVar8 = pbVar8 + local_20[0];" (assignment_expression "pbVar8 = pbVar8 + local_20[0]" identifier = (binary_expression "pbVar8 + local_20[0]" identifier + (subscript_expression "local_20[0]" identifier [ number_literal ]))) ;) (expression_statement "pbVar9 = pbVar8;" (assignment_expression "pbVar9 = pbVar8" identifier = identifier) ;) }) (else_clause "else {\n    local_20[0] = 1;\n    pbVar9 = pbVar8 + 1;\n  }" else (compound_statement "{\n    local_20[0] = 1;\n    pbVar9 = pbVar8 + 1;\n  }" { (expression_statement "local_20[0] = 1;" (assignment_expression "local_20[0] = 1" (subscript_expression "local_20[0]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "pbVar9 = pbVar8 + 1;" (assignment_expression "pbVar9 = pbVar8 + 1" identifier = (binary_expression "pbVar8 + 1" identifier + number_literal)) ;) }))) (expression_statement "pbVar2 = param_2;" (assignment_expression "pbVar2 = param_2" identifier = identifier) ;) (expression_statement "bVar6 = local_44 == 0 && uVar11 == 0;" (assignment_expression "bVar6 = local_44 == 0 && uVar11 == 0" identifier = (binary_expression "local_44 == 0 && uVar11 == 0" (binary_expression "local_44 == 0" identifier == number_literal) && (binary_expression "uVar11 == 0" identifier == number_literal))) ;) (expression_statement "uVar7 = CONCAT31((int3)((uint)pbVar8 >> 8),bVar6);" (assignment_expression "uVar7 = CONCAT31((int3)((uint)pbVar8 >> 8),bVar6)" identifier = (call_expression "CONCAT31((int3)((uint)pbVar8 >> 8),bVar6)" identifier (argument_list "((int3)((uint)pbVar8 >> 8),bVar6)" ( (call_expression "(int3)((uint)pbVar8 >> 8)" (parenthesized_expression "(int3)" ( identifier )) (argument_list "((uint)pbVar8 >> 8)" ( (binary_expression "(uint)pbVar8 >> 8" (cast_expression "(uint)pbVar8" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) ))) , identifier )))) ;) (if_statement "if (bVar6) {\n    *param_4 = param_2;\n    return uVar7;\n  }" if (parenthesized_expression "(bVar6)" ( identifier )) (compound_statement "{\n    *param_4 = param_2;\n    return uVar7;\n  }" { (expression_statement "*param_4 = param_2;" (assignment_expression "*param_4 = param_2" (pointer_expression "*param_4" * identifier) = identifier) ;) (return_statement "return uVar7;" return identifier ;) })) (if_statement "if (param_5 <= param_2) {\n    return uVar7;\n  }" if (parenthesized_expression "(param_5 <= param_2)" ( (binary_expression "param_5 <= param_2" identifier <= identifier) )) (compound_statement "{\n    return uVar7;\n  }" { (return_statement "return uVar7;" return identifier ;) })) (switch_statement "switch(local_44) {\n  default:\n    goto LAB_00144646;\n  case 1:\n  case 0x10:\n    param_2 = param_2 + param_6;\n    goto code_r0x001445d0;\n  case 3:\n    uVar3 = FUN_00145ad0(&param_2);\n    param_2 = param_2 + (uVar3 & 0xffff);\n    goto code_r0x001445d0;\n  case 4:\n    iVar5 = FUN_00145b50(&param_2);\n    param_2 = param_2 + iVar5;\n    goto code_r0x001445d0;\n  case 5:\n  case 0x12:\n    param_2 = param_2 + 2;\n    goto code_r0x001445d0;\n  case 6:\n  case 0x13:\n    param_2 = param_2 + 4;\n    goto code_r0x001445d0;\n  case 7:\n  case 0x14:\n  case 0x20:\n    param_2 = param_2 + 8;\n    goto code_r0x001445d0;\n  case 8:\n    sVar4 = strlen((char *)param_2);\n    param_2 = pbVar2 + sVar4 + 1;\n    goto code_r0x001445d0;\n  case 9:\n  case 0x18:\n    uVar3 = (uint)*param_2;\n    if ((char)*param_2 < '\0') {\n      uVar3 = FUN_00095970(param_2 + 1,local_20,uVar3);\n    }\n    else {\n      local_20[0] = 1;\n    }\n    param_2 = param_2 + uVar3 + local_20[0];\n    goto code_r0x001445d0;\n  case 10:\n    param_2 = param_2 + *param_2 + 1;\n    goto code_r0x001445d0;\n  case 0xb:\n  case 0xc:\n  case 0x11:\n    param_2 = param_2 + 1;\n    goto code_r0x001445d0;\n  case 0xd:\n    if ((char)*param_2 < '\0') {\n      FUN_00095a30(param_2 + 1,local_20,*param_2);\n      param_2 = param_2 + local_20[0];\n      goto code_r0x001445d0;\n    }\n    break;\n  case 0xe:\n  case 0x17:\n    param_2 = param_2 + (-(uint)bVar10 & 0xfffffffc) + 8;\n    goto code_r0x001445d0;\n  case 0xf:\n  case 0x15:\n    if ((char)*param_2 < '\0') {\n      FUN_00095970(param_2 + 1,local_20,*param_2);\n      param_2 = param_2 + local_20[0];\n      goto code_r0x001445d0;\n    }\n    break;\n  case 0x19:\n    goto code_r0x001445d0;\n  }" switch (parenthesized_expression "(local_44)" ( identifier )) (compound_statement "{\n  default:\n    goto LAB_00144646;\n  case 1:\n  case 0x10:\n    param_2 = param_2 + param_6;\n    goto code_r0x001445d0;\n  case 3:\n    uVar3 = FUN_00145ad0(&param_2);\n    param_2 = param_2 + (uVar3 & 0xffff);\n    goto code_r0x001445d0;\n  case 4:\n    iVar5 = FUN_00145b50(&param_2);\n    param_2 = param_2 + iVar5;\n    goto code_r0x001445d0;\n  case 5:\n  case 0x12:\n    param_2 = param_2 + 2;\n    goto code_r0x001445d0;\n  case 6:\n  case 0x13:\n    param_2 = param_2 + 4;\n    goto code_r0x001445d0;\n  case 7:\n  case 0x14:\n  case 0x20:\n    param_2 = param_2 + 8;\n    goto code_r0x001445d0;\n  case 8:\n    sVar4 = strlen((char *)param_2);\n    param_2 = pbVar2 + sVar4 + 1;\n    goto code_r0x001445d0;\n  case 9:\n  case 0x18:\n    uVar3 = (uint)*param_2;\n    if ((char)*param_2 < '\0') {\n      uVar3 = FUN_00095970(param_2 + 1,local_20,uVar3);\n    }\n    else {\n      local_20[0] = 1;\n    }\n    param_2 = param_2 + uVar3 + local_20[0];\n    goto code_r0x001445d0;\n  case 10:\n    param_2 = param_2 + *param_2 + 1;\n    goto code_r0x001445d0;\n  case 0xb:\n  case 0xc:\n  case 0x11:\n    param_2 = param_2 + 1;\n    goto code_r0x001445d0;\n  case 0xd:\n    if ((char)*param_2 < '\0') {\n      FUN_00095a30(param_2 + 1,local_20,*param_2);\n      param_2 = param_2 + local_20[0];\n      goto code_r0x001445d0;\n    }\n    break;\n  case 0xe:\n  case 0x17:\n    param_2 = param_2 + (-(uint)bVar10 & 0xfffffffc) + 8;\n    goto code_r0x001445d0;\n  case 0xf:\n  case 0x15:\n    if ((char)*param_2 < '\0') {\n      FUN_00095970(param_2 + 1,local_20,*param_2);\n      param_2 = param_2 + local_20[0];\n      goto code_r0x001445d0;\n    }\n    break;\n  case 0x19:\n    goto code_r0x001445d0;\n  }" { (case_statement "default:\n    goto LAB_00144646;" default : (goto_statement "goto LAB_00144646;" goto statement_identifier ;)) (case_statement "case 1:" case number_literal :) (case_statement "case 0x10:\n    param_2 = param_2 + param_6;\n    goto code_r0x001445d0;" case number_literal : (expression_statement "param_2 = param_2 + param_6;" (assignment_expression "param_2 = param_2 + param_6" identifier = (binary_expression "param_2 + param_6" identifier + identifier)) ;) (goto_statement "goto code_r0x001445d0;" goto statement_identifier ;)) (case_statement "case 3:\n    uVar3 = FUN_00145ad0(&param_2);\n    param_2 = param_2 + (uVar3 & 0xffff);\n    goto code_r0x001445d0;" case number_literal : (expression_statement "uVar3 = FUN_00145ad0(&param_2);" (assignment_expression "uVar3 = FUN_00145ad0(&param_2)" identifier = (call_expression "FUN_00145ad0(&param_2)" identifier (argument_list "(&param_2)" ( (pointer_expression "&param_2" & identifier) )))) ;) (expression_statement "param_2 = param_2 + (uVar3 & 0xffff);" (assignment_expression "param_2 = param_2 + (uVar3 & 0xffff)" identifier = (binary_expression "param_2 + (uVar3 & 0xffff)" identifier + (parenthesized_expression "(uVar3 & 0xffff)" ( (binary_expression "uVar3 & 0xffff" identifier & number_literal) )))) ;) (goto_statement "goto code_r0x001445d0;" goto statement_identifier ;)) (case_statement "case 4:\n    iVar5 = FUN_00145b50(&param_2);\n    param_2 = param_2 + iVar5;\n    goto code_r0x001445d0;" case number_literal : (expression_statement "iVar5 = FUN_00145b50(&param_2);" (assignment_expression "iVar5 = FUN_00145b50(&param_2)" identifier = (call_expression "FUN_00145b50(&param_2)" identifier (argument_list "(&param_2)" ( (pointer_expression "&param_2" & identifier) )))) ;) (expression_statement "param_2 = param_2 + iVar5;" (assignment_expression "param_2 = param_2 + iVar5" identifier = (binary_expression "param_2 + iVar5" identifier + identifier)) ;) (goto_statement "goto code_r0x001445d0;" goto statement_identifier ;)) (case_statement "case 5:" case number_literal :) (case_statement "case 0x12:\n    param_2 = param_2 + 2;\n    goto code_r0x001445d0;" case number_literal : (expression_statement "param_2 = param_2 + 2;" (assignment_expression "param_2 = param_2 + 2" identifier = (binary_expression "param_2 + 2" identifier + number_literal)) ;) (goto_statement "goto code_r0x001445d0;" goto statement_identifier ;)) (case_statement "case 6:" case number_literal :) (case_statement "case 0x13:\n    param_2 = param_2 + 4;\n    goto code_r0x001445d0;" case number_literal : (expression_statement "param_2 = param_2 + 4;" (assignment_expression "param_2 = param_2 + 4" identifier = (binary_expression "param_2 + 4" identifier + number_literal)) ;) (goto_statement "goto code_r0x001445d0;" goto statement_identifier ;)) (case_statement "case 7:" case number_literal :) (case_statement "case 0x14:" case number_literal :) (case_statement "case 0x20:\n    param_2 = param_2 + 8;\n    goto code_r0x001445d0;" case number_literal : (expression_statement "param_2 = param_2 + 8;" (assignment_expression "param_2 = param_2 + 8" identifier = (binary_expression "param_2 + 8" identifier + number_literal)) ;) (goto_statement "goto code_r0x001445d0;" goto statement_identifier ;)) (case_statement "case 8:\n    sVar4 = strlen((char *)param_2);\n    param_2 = pbVar2 + sVar4 + 1;\n    goto code_r0x001445d0;" case number_literal : (expression_statement "sVar4 = strlen((char *)param_2);" (assignment_expression "sVar4 = strlen((char *)param_2)" identifier = (call_expression "strlen((char *)param_2)" identifier (argument_list "((char *)param_2)" ( (cast_expression "(char *)param_2" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) )))) ;) (expression_statement "param_2 = pbVar2 + sVar4 + 1;" (assignment_expression "param_2 = pbVar2 + sVar4 + 1" identifier = (binary_expression "pbVar2 + sVar4 + 1" (binary_expression "pbVar2 + sVar4" identifier + identifier) + number_literal)) ;) (goto_statement "goto code_r0x001445d0;" goto statement_identifier ;)) (case_statement "case 9:" case number_literal :) (case_statement "case 0x18:\n    uVar3 = (uint)*param_2;\n    if ((char)*param_2 < '\0') {\n      uVar3 = FUN_00095970(param_2 + 1,local_20,uVar3);\n    }\n    else {\n      local_20[0] = 1;\n    }\n    param_2 = param_2 + uVar3 + local_20[0];\n    goto code_r0x001445d0;" case number_literal : (expression_statement "uVar3 = (uint)*param_2;" (assignment_expression "uVar3 = (uint)*param_2" identifier = (binary_expression "(uint)*param_2" (parenthesized_expression "(uint)" ( identifier )) * identifier)) ;) (if_statement "if ((char)*param_2 < '\0') {\n      uVar3 = FUN_00095970(param_2 + 1,local_20,uVar3);\n    }\n    else {\n      local_20[0] = 1;\n    }" if (parenthesized_expression "((char)*param_2 < '\0')" ( (binary_expression "(char)*param_2 < '\0'" (cast_expression "(char)*param_2" ( (type_descriptor "char" primitive_type) ) (pointer_expression "*param_2" * identifier)) < (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      uVar3 = FUN_00095970(param_2 + 1,local_20,uVar3);\n    }" { (expression_statement "uVar3 = FUN_00095970(param_2 + 1,local_20,uVar3);" (assignment_expression "uVar3 = FUN_00095970(param_2 + 1,local_20,uVar3)" identifier = (call_expression "FUN_00095970(param_2 + 1,local_20,uVar3)" identifier (argument_list "(param_2 + 1,local_20,uVar3)" ( (binary_expression "param_2 + 1" identifier + number_literal) , identifier , identifier )))) ;) }) (else_clause "else {\n      local_20[0] = 1;\n    }" else (compound_statement "{\n      local_20[0] = 1;\n    }" { (expression_statement "local_20[0] = 1;" (assignment_expression "local_20[0] = 1" (subscript_expression "local_20[0]" identifier [ number_literal ]) = number_literal) ;) }))) (expression_statement "param_2 = param_2 + uVar3 + local_20[0];" (assignment_expression "param_2 = param_2 + uVar3 + local_20[0]" identifier = (binary_expression "param_2 + uVar3 + local_20[0]" (binary_expression "param_2 + uVar3" identifier + identifier) + (subscript_expression "local_20[0]" identifier [ number_literal ]))) ;) (goto_statement "goto code_r0x001445d0;" goto statement_identifier ;)) (case_statement "case 10:\n    param_2 = param_2 + *param_2 + 1;\n    goto code_r0x001445d0;" case number_literal : (expression_statement "param_2 = param_2 + *param_2 + 1;" (assignment_expression "param_2 = param_2 + *param_2 + 1" identifier = (binary_expression "param_2 + *param_2 + 1" (binary_expression "param_2 + *param_2" identifier + (pointer_expression "*param_2" * identifier)) + number_literal)) ;) (goto_statement "goto code_r0x001445d0;" goto statement_identifier ;)) (case_statement "case 0xb:" case number_literal :) (case_statement "case 0xc:" case number_literal :) (case_statement "case 0x11:\n    param_2 = param_2 + 1;\n    goto code_r0x001445d0;" case number_literal : (expression_statement "param_2 = param_2 + 1;" (assignment_expression "param_2 = param_2 + 1" identifier = (binary_expression "param_2 + 1" identifier + number_literal)) ;) (goto_statement "goto code_r0x001445d0;" goto statement_identifier ;)) (case_statement "case 0xd:\n    if ((char)*param_2 < '\0') {\n      FUN_00095a30(param_2 + 1,local_20,*param_2);\n      param_2 = param_2 + local_20[0];\n      goto code_r0x001445d0;\n    }\n    break;" case number_literal : (if_statement "if ((char)*param_2 < '\0') {\n      FUN_00095a30(param_2 + 1,local_20,*param_2);\n      param_2 = param_2 + local_20[0];\n      goto code_r0x001445d0;\n    }" if (parenthesized_expression "((char)*param_2 < '\0')" ( (binary_expression "(char)*param_2 < '\0'" (cast_expression "(char)*param_2" ( (type_descriptor "char" primitive_type) ) (pointer_expression "*param_2" * identifier)) < (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      FUN_00095a30(param_2 + 1,local_20,*param_2);\n      param_2 = param_2 + local_20[0];\n      goto code_r0x001445d0;\n    }" { (expression_statement "FUN_00095a30(param_2 + 1,local_20,*param_2);" (call_expression "FUN_00095a30(param_2 + 1,local_20,*param_2)" identifier (argument_list "(param_2 + 1,local_20,*param_2)" ( (binary_expression "param_2 + 1" identifier + number_literal) , identifier , (pointer_expression "*param_2" * identifier) ))) ;) (expression_statement "param_2 = param_2 + local_20[0];" (assignment_expression "param_2 = param_2 + local_20[0]" identifier = (binary_expression "param_2 + local_20[0]" identifier + (subscript_expression "local_20[0]" identifier [ number_literal ]))) ;) (goto_statement "goto code_r0x001445d0;" goto statement_identifier ;) })) (break_statement "break;" break ;)) (case_statement "case 0xe:" case number_literal :) (case_statement "case 0x17:\n    param_2 = param_2 + (-(uint)bVar10 & 0xfffffffc) + 8;\n    goto code_r0x001445d0;" case number_literal : (expression_statement "param_2 = param_2 + (-(uint)bVar10 & 0xfffffffc) + 8;" (assignment_expression "param_2 = param_2 + (-(uint)bVar10 & 0xfffffffc) + 8" identifier = (binary_expression "param_2 + (-(uint)bVar10 & 0xfffffffc) + 8" (binary_expression "param_2 + (-(uint)bVar10 & 0xfffffffc)" identifier + (parenthesized_expression "(-(uint)bVar10 & 0xfffffffc)" ( (binary_expression "-(uint)bVar10 & 0xfffffffc" (unary_expression "-(uint)bVar10" - (cast_expression "(uint)bVar10" ( (type_descriptor "uint" type_identifier) ) identifier)) & number_literal) ))) + number_literal)) ;) (goto_statement "goto code_r0x001445d0;" goto statement_identifier ;)) (case_statement "case 0xf:" case number_literal :) (case_statement "case 0x15:\n    if ((char)*param_2 < '\0') {\n      FUN_00095970(param_2 + 1,local_20,*param_2);\n      param_2 = param_2 + local_20[0];\n      goto code_r0x001445d0;\n    }\n    break;" case number_literal : (if_statement "if ((char)*param_2 < '\0') {\n      FUN_00095970(param_2 + 1,local_20,*param_2);\n      param_2 = param_2 + local_20[0];\n      goto code_r0x001445d0;\n    }" if (parenthesized_expression "((char)*param_2 < '\0')" ( (binary_expression "(char)*param_2 < '\0'" (cast_expression "(char)*param_2" ( (type_descriptor "char" primitive_type) ) (pointer_expression "*param_2" * identifier)) < (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      FUN_00095970(param_2 + 1,local_20,*param_2);\n      param_2 = param_2 + local_20[0];\n      goto code_r0x001445d0;\n    }" { (expression_statement "FUN_00095970(param_2 + 1,local_20,*param_2);" (call_expression "FUN_00095970(param_2 + 1,local_20,*param_2)" identifier (argument_list "(param_2 + 1,local_20,*param_2)" ( (binary_expression "param_2 + 1" identifier + number_literal) , identifier , (pointer_expression "*param_2" * identifier) ))) ;) (expression_statement "param_2 = param_2 + local_20[0];" (assignment_expression "param_2 = param_2 + local_20[0]" identifier = (binary_expression "param_2 + local_20[0]" identifier + (subscript_expression "local_20[0]" identifier [ number_literal ]))) ;) (goto_statement "goto code_r0x001445d0;" goto statement_identifier ;) })) (break_statement "break;" break ;)) (case_statement "case 0x19:\n    goto code_r0x001445d0;" case number_literal : (goto_statement "goto code_r0x001445d0;" goto statement_identifier ;)) })) (expression_statement "param_2 = param_2 + 1;" (assignment_expression "param_2 = param_2 + 1" identifier = (binary_expression "param_2 + 1" identifier + number_literal)) ;) (expression_statement "local_20[0] = 1;" (assignment_expression "local_20[0] = 1" (subscript_expression "local_20[0]" identifier [ number_literal ]) = number_literal) ;) (goto_statement "goto code_r0x001445d0;" goto statement_identifier ;) (labeled_statement "LAB_00144646:\n  return uVar7;" statement_identifier : (return_statement "return uVar7;" return identifier ;)) })))
(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 (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT == (char_literal ' escape_sequence '))) ;) (expression_statement (assignment_expression IDENT = 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 , (cast_expression ( (type_descriptor TYPE) ) 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) ) (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) }))) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( IDENT )) * IDENT)) ;) (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 ( (binary_expression IDENT + LIT) , IDENT , IDENT )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }))) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT == LIT) && (binary_expression IDENT == LIT))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) ))) , IDENT )))) ;) (if_statement if (parenthesized_expression ( IDENT )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (return_statement return IDENT ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT <= IDENT) )) (compound_statement { (return_statement return IDENT ;) })) (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 IDENT = (binary_expression IDENT + IDENT)) ;) (goto_statement goto statement_identifier ;)) (case_statement case LIT : (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (pointer_expression & IDENT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (parenthesized_expression ( (binary_expression IDENT & LIT) )))) ;) (goto_statement goto statement_identifier ;)) (case_statement case LIT : (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (pointer_expression & IDENT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (goto_statement goto statement_identifier ;)) (case_statement case LIT :) (case_statement case LIT : (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (goto_statement goto statement_identifier ;)) (case_statement case LIT :) (case_statement case LIT : (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (goto_statement goto statement_identifier ;)) (case_statement case LIT :) (case_statement case LIT :) (case_statement case LIT : (expression_statement (assignment_expression IDENT = (binary_expression IDENT + 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 *)) ) IDENT) )))) ;) (expression_statement (assignment_expression IDENT = (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 = (binary_expression (parenthesized_expression ( IDENT )) * IDENT)) ;) (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 ( (binary_expression IDENT + LIT) , IDENT , IDENT )))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) }))) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + IDENT) + (subscript_expression IDENT [ LIT ]))) ;) (goto_statement goto statement_identifier ;)) (case_statement case LIT : (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + (pointer_expression * IDENT)) + LIT)) ;) (goto_statement goto statement_identifier ;)) (case_statement case LIT :) (case_statement case LIT :) (case_statement case LIT : (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (goto_statement goto statement_identifier ;)) (case_statement case LIT : (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (pointer_expression * IDENT)) < (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) , IDENT , (pointer_expression * IDENT) ))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (subscript_expression IDENT [ LIT ]))) ;) (goto_statement goto statement_identifier ;) })) (break_statement break ;)) (case_statement case LIT :) (case_statement case LIT : (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + (parenthesized_expression ( (binary_expression (unary_expression - (cast_expression ( (type_descriptor TYPE) ) IDENT)) & 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 * IDENT)) < (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) , IDENT , (pointer_expression * IDENT) ))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (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 IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (goto_statement goto statement_identifier ;) (labeled_statement statement_identifier : (return_statement return IDENT ;)) })))
(function_definition "undefined4\nFUN_00144590(undefined4 param_1,byte *param_2,byte *param_3,undefined4 *param_4,byte *param_5,\n            int param_6,char param_7)\n\n{\n  byte bVar1;\n  byte *pbVar2;\n  uint uVar3;\n  size_t sVar4;\n  int iVar5;\n  bool bVar6;\n  byte *pbVar8;\n  byte *pbVar9;\n  bool bVar10;\n  ulonglong uVar11;\n  uint local_44;\n  int local_20 [3];\n  undefined4 uStack_14;\n  undefined4 uVar7;\n  \n  uStack_14 = 0x144599;\n  bVar10 = param_7 == '\0';\n  pbVar9 = param_3;\ncode_r0x001445d0:\n  bVar1 = *pbVar9;\n  pbVar8 = pbVar9 + 1;\n  if ((char)bVar1 < '\0') {\n    uVar11 = FUN_00095970(pbVar8,local_20,(uint)bVar1);\n    pbVar8 = pbVar9 + local_20[0];\n  }\n  else {\n    local_20[0] = 1;\n    uVar11 = (ulonglong)(uint)bVar1;\n  }\n  local_44 = (uint)*pbVar8;\n  if ((char)*pbVar8 < '\0') {\n    local_44 = FUN_00095970(pbVar8 + 1,local_20,local_44);\n    pbVar8 = pbVar8 + local_20[0];\n    pbVar9 = pbVar8;\n  }\n  else {\n    local_20[0] = 1;\n    pbVar9 = pbVar8 + 1;\n  }\n  pbVar2 = param_2;\n  bVar6 = local_44 == 0 && uVar11 == 0;\n  uVar7 = CONCAT31((int3)((uint)pbVar8 >> 8),bVar6);\n  if (bVar6) {\n    *param_4 = param_2;\n    return uVar7;\n  }\n  if (param_5 <= param_2) {\n    return uVar7;\n  }\n  switch(local_44) {\n  default:\n    goto LAB_00144646;\n  case 1:\n  case 0x10:\n    param_2 = param_2 + param_6;\n    goto code_r0x001445d0;\n  case 3:\n    uVar3 = FUN_00145ad0(&param_2);\n    param_2 = param_2 + (uVar3 & 0xffff);\n    goto code_r0x001445d0;\n  case 4:\n    iVar5 = FUN_00145b50(&param_2);\n    param_2 = param_2 + iVar5;\n    goto code_r0x001445d0;\n  case 5:\n  case 0x12:\n    param_2 = param_2 + 2;\n    goto code_r0x001445d0;\n  case 6:\n  case 0x13:\n    param_2 = param_2 + 4;\n    goto code_r0x001445d0;\n  case 7:\n  case 0x14:\n  case 0x20:\n    param_2 = param_2 + 8;\n    goto code_r0x001445d0;\n  case 8:\n    sVar4 = strlen((char *)param_2);\n    param_2 = pbVar2 + sVar4 + 1;\n    goto code_r0x001445d0;\n  case 9:\n  case 0x18:\n    uVar3 = (uint)*param_2;\n    if ((char)*param_2 < '\0') {\n      uVar3 = FUN_00095970(param_2 + 1,local_20,uVar3);\n    }\n    else {\n      local_20[0] = 1;\n    }\n    param_2 = param_2 + uVar3 + local_20[0];\n    goto code_r0x001445d0;\n  case 10:\n    param_2 = param_2 + *param_2 + 1;\n    goto code_r0x001445d0;\n  case 0xb:\n  case 0xc:\n  case 0x11:\n    param_2 = param_2 + 1;\n    goto code_r0x001445d0;\n  case 0xd:\n    if ((char)*param_2 < '\0') {\n      FUN_00095a30(param_2 + 1,local_20,*param_2);\n      param_2 = param_2 + local_20[0];\n      goto code_r0x001445d0;\n    }\n    break;\n  case 0xe:\n  case 0x17:\n    param_2 = param_2 + (-(uint)bVar10 & 0xfffffffc) + 8;\n    goto code_r0x001445d0;\n  case 0xf:\n  case 0x15:\n    if ((char)*param_2 < '\0') {\n      FUN_00095970(param_2 + 1,local_20,*param_2);\n      param_2 = param_2 + local_20[0];\n      goto code_r0x001445d0;\n    }\n    break;\n  case 0x19:\n    goto code_r0x001445d0;\n  }\n  param_2 = param_2 + 1;\n  local_20[0] = 1;\n  goto code_r0x001445d0;\nLAB_00144646:\n  return uVar7;\n}" (type_identifier "undefined4") (function_declarator "FUN_00144590(undefined4 param_1,byte *param_2,byte *param_3,undefined4 *param_4,byte *param_5,\n            int param_6,char param_7)" (identifier "FUN_00144590") (parameter_list "(undefined4 param_1,byte *param_2,byte *param_3,undefined4 *param_4,byte *param_5,\n            int param_6,char param_7)" (( "(") (parameter_declaration "undefined4 param_1" (type_identifier "undefined4") (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 "undefined4 *param_4" (type_identifier "undefined4") (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  byte *pbVar2;\n  uint uVar3;\n  size_t sVar4;\n  int iVar5;\n  bool bVar6;\n  byte *pbVar8;\n  byte *pbVar9;\n  bool bVar10;\n  ulonglong uVar11;\n  uint local_44;\n  int local_20 [3];\n  undefined4 uStack_14;\n  undefined4 uVar7;\n  \n  uStack_14 = 0x144599;\n  bVar10 = param_7 == '\0';\n  pbVar9 = param_3;\ncode_r0x001445d0:\n  bVar1 = *pbVar9;\n  pbVar8 = pbVar9 + 1;\n  if ((char)bVar1 < '\0') {\n    uVar11 = FUN_00095970(pbVar8,local_20,(uint)bVar1);\n    pbVar8 = pbVar9 + local_20[0];\n  }\n  else {\n    local_20[0] = 1;\n    uVar11 = (ulonglong)(uint)bVar1;\n  }\n  local_44 = (uint)*pbVar8;\n  if ((char)*pbVar8 < '\0') {\n    local_44 = FUN_00095970(pbVar8 + 1,local_20,local_44);\n    pbVar8 = pbVar8 + local_20[0];\n    pbVar9 = pbVar8;\n  }\n  else {\n    local_20[0] = 1;\n    pbVar9 = pbVar8 + 1;\n  }\n  pbVar2 = param_2;\n  bVar6 = local_44 == 0 && uVar11 == 0;\n  uVar7 = CONCAT31((int3)((uint)pbVar8 >> 8),bVar6);\n  if (bVar6) {\n    *param_4 = param_2;\n    return uVar7;\n  }\n  if (param_5 <= param_2) {\n    return uVar7;\n  }\n  switch(local_44) {\n  default:\n    goto LAB_00144646;\n  case 1:\n  case 0x10:\n    param_2 = param_2 + param_6;\n    goto code_r0x001445d0;\n  case 3:\n    uVar3 = FUN_00145ad0(&param_2);\n    param_2 = param_2 + (uVar3 & 0xffff);\n    goto code_r0x001445d0;\n  case 4:\n    iVar5 = FUN_00145b50(&param_2);\n    param_2 = param_2 + iVar5;\n    goto code_r0x001445d0;\n  case 5:\n  case 0x12:\n    param_2 = param_2 + 2;\n    goto code_r0x001445d0;\n  case 6:\n  case 0x13:\n    param_2 = param_2 + 4;\n    goto code_r0x001445d0;\n  case 7:\n  case 0x14:\n  case 0x20:\n    param_2 = param_2 + 8;\n    goto code_r0x001445d0;\n  case 8:\n    sVar4 = strlen((char *)param_2);\n    param_2 = pbVar2 + sVar4 + 1;\n    goto code_r0x001445d0;\n  case 9:\n  case 0x18:\n    uVar3 = (uint)*param_2;\n    if ((char)*param_2 < '\0') {\n      uVar3 = FUN_00095970(param_2 + 1,local_20,uVar3);\n    }\n    else {\n      local_20[0] = 1;\n    }\n    param_2 = param_2 + uVar3 + local_20[0];\n    goto code_r0x001445d0;\n  case 10:\n    param_2 = param_2 + *param_2 + 1;\n    goto code_r0x001445d0;\n  case 0xb:\n  case 0xc:\n  case 0x11:\n    param_2 = param_2 + 1;\n    goto code_r0x001445d0;\n  case 0xd:\n    if ((char)*param_2 < '\0') {\n      FUN_00095a30(param_2 + 1,local_20,*param_2);\n      param_2 = param_2 + local_20[0];\n      goto code_r0x001445d0;\n    }\n    break;\n  case 0xe:\n  case 0x17:\n    param_2 = param_2 + (-(uint)bVar10 & 0xfffffffc) + 8;\n    goto code_r0x001445d0;\n  case 0xf:\n  case 0x15:\n    if ((char)*param_2 < '\0') {\n      FUN_00095970(param_2 + 1,local_20,*param_2);\n      param_2 = param_2 + local_20[0];\n      goto code_r0x001445d0;\n    }\n    break;\n  case 0x19:\n    goto code_r0x001445d0;\n  }\n  param_2 = param_2 + 1;\n  local_20[0] = 1;\n  goto code_r0x001445d0;\nLAB_00144646:\n  return uVar7;\n}" ({ "{") (declaration "byte bVar1;" (type_identifier "byte") (identifier "bVar1") (; ";")) (declaration "byte *pbVar2;" (type_identifier "byte") (pointer_declarator "*pbVar2" (* "*") (identifier "pbVar2")) (; ";")) (declaration "uint uVar3;" (type_identifier "uint") (identifier "uVar3") (; ";")) (declaration "size_t sVar4;" (primitive_type "size_t") (identifier "sVar4") (; ";")) (declaration "int iVar5;" (primitive_type "int") (identifier "iVar5") (; ";")) (declaration "bool bVar6;" (primitive_type "bool") (identifier "bVar6") (; ";")) (declaration "byte *pbVar8;" (type_identifier "byte") (pointer_declarator "*pbVar8" (* "*") (identifier "pbVar8")) (; ";")) (declaration "byte *pbVar9;" (type_identifier "byte") (pointer_declarator "*pbVar9" (* "*") (identifier "pbVar9")) (; ";")) (declaration "bool bVar10;" (primitive_type "bool") (identifier "bVar10") (; ";")) (declaration "ulonglong uVar11;" (type_identifier "ulonglong") (identifier "uVar11") (; ";")) (declaration "uint local_44;" (type_identifier "uint") (identifier "local_44") (; ";")) (declaration "int local_20 [3];" (primitive_type "int") (array_declarator "local_20 [3]" (identifier "local_20") ([ "[") (number_literal "3") (] "]")) (; ";")) (declaration "undefined4 uStack_14;" (type_identifier "undefined4") (identifier "uStack_14") (; ";")) (declaration "undefined4 uVar7;" (type_identifier "undefined4") (identifier "uVar7") (; ";")) (expression_statement "uStack_14 = 0x144599;" (assignment_expression "uStack_14 = 0x144599" (identifier "uStack_14") (= "=") (number_literal "0x144599")) (; ";")) (expression_statement "bVar10 = param_7 == '\0';" (assignment_expression "bVar10 = param_7 == '\0'" (identifier "bVar10") (= "=") (binary_expression "param_7 == '\0'" (identifier "param_7") (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'")))) (; ";")) (expression_statement "pbVar9 = param_3;" (assignment_expression "pbVar9 = param_3" (identifier "pbVar9") (= "=") (identifier "param_3")) (; ";")) (labeled_statement "code_r0x001445d0:\n  bVar1 = *pbVar9;" (statement_identifier "code_r0x001445d0") (: ":") (expression_statement "bVar1 = *pbVar9;" (assignment_expression "bVar1 = *pbVar9" (identifier "bVar1") (= "=") (pointer_expression "*pbVar9" (* "*") (identifier "pbVar9"))) (; ";"))) (expression_statement "pbVar8 = pbVar9 + 1;" (assignment_expression "pbVar8 = pbVar9 + 1" (identifier "pbVar8") (= "=") (binary_expression "pbVar9 + 1" (identifier "pbVar9") (+ "+") (number_literal "1"))) (; ";")) (if_statement "if ((char)bVar1 < '\0') {\n    uVar11 = FUN_00095970(pbVar8,local_20,(uint)bVar1);\n    pbVar8 = pbVar9 + local_20[0];\n  }\n  else {\n    local_20[0] = 1;\n    uVar11 = (ulonglong)(uint)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    uVar11 = FUN_00095970(pbVar8,local_20,(uint)bVar1);\n    pbVar8 = pbVar9 + local_20[0];\n  }" ({ "{") (expression_statement "uVar11 = FUN_00095970(pbVar8,local_20,(uint)bVar1);" (assignment_expression "uVar11 = FUN_00095970(pbVar8,local_20,(uint)bVar1)" (identifier "uVar11") (= "=") (call_expression "FUN_00095970(pbVar8,local_20,(uint)bVar1)" (identifier "FUN_00095970") (argument_list "(pbVar8,local_20,(uint)bVar1)" (( "(") (identifier "pbVar8") (, ",") (identifier "local_20") (, ",") (cast_expression "(uint)bVar1" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar1")) () ")")))) (; ";")) (expression_statement "pbVar8 = pbVar9 + local_20[0];" (assignment_expression "pbVar8 = pbVar9 + local_20[0]" (identifier "pbVar8") (= "=") (binary_expression "pbVar9 + local_20[0]" (identifier "pbVar9") (+ "+") (subscript_expression "local_20[0]" (identifier "local_20") ([ "[") (number_literal "0") (] "]")))) (; ";")) (} "}")) (else_clause "else {\n    local_20[0] = 1;\n    uVar11 = (ulonglong)(uint)bVar1;\n  }" (else "else") (compound_statement "{\n    local_20[0] = 1;\n    uVar11 = (ulonglong)(uint)bVar1;\n  }" ({ "{") (expression_statement "local_20[0] = 1;" (assignment_expression "local_20[0] = 1" (subscript_expression "local_20[0]" (identifier "local_20") ([ "[") (number_literal "0") (] "]")) (= "=") (number_literal "1")) (; ";")) (expression_statement "uVar11 = (ulonglong)(uint)bVar1;" (assignment_expression "uVar11 = (ulonglong)(uint)bVar1" (identifier "uVar11") (= "=") (cast_expression "(ulonglong)(uint)bVar1" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (cast_expression "(uint)bVar1" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar1")))) (; ";")) (} "}")))) (expression_statement "local_44 = (uint)*pbVar8;" (assignment_expression "local_44 = (uint)*pbVar8" (identifier "local_44") (= "=") (binary_expression "(uint)*pbVar8" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (* "*") (identifier "pbVar8"))) (; ";")) (if_statement "if ((char)*pbVar8 < '\0') {\n    local_44 = FUN_00095970(pbVar8 + 1,local_20,local_44);\n    pbVar8 = pbVar8 + local_20[0];\n    pbVar9 = pbVar8;\n  }\n  else {\n    local_20[0] = 1;\n    pbVar9 = pbVar8 + 1;\n  }" (if "if") (parenthesized_expression "((char)*pbVar8 < '\0')" (( "(") (binary_expression "(char)*pbVar8 < '\0'" (cast_expression "(char)*pbVar8" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (pointer_expression "*pbVar8" (* "*") (identifier "pbVar8"))) (< "<") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n    local_44 = FUN_00095970(pbVar8 + 1,local_20,local_44);\n    pbVar8 = pbVar8 + local_20[0];\n    pbVar9 = pbVar8;\n  }" ({ "{") (expression_statement "local_44 = FUN_00095970(pbVar8 + 1,local_20,local_44);" (assignment_expression "local_44 = FUN_00095970(pbVar8 + 1,local_20,local_44)" (identifier "local_44") (= "=") (call_expression "FUN_00095970(pbVar8 + 1,local_20,local_44)" (identifier "FUN_00095970") (argument_list "(pbVar8 + 1,local_20,local_44)" (( "(") (binary_expression "pbVar8 + 1" (identifier "pbVar8") (+ "+") (number_literal "1")) (, ",") (identifier "local_20") (, ",") (identifier "local_44") () ")")))) (; ";")) (expression_statement "pbVar8 = pbVar8 + local_20[0];" (assignment_expression "pbVar8 = pbVar8 + local_20[0]" (identifier "pbVar8") (= "=") (binary_expression "pbVar8 + local_20[0]" (identifier "pbVar8") (+ "+") (subscript_expression "local_20[0]" (identifier "local_20") ([ "[") (number_literal "0") (] "]")))) (; ";")) (expression_statement "pbVar9 = pbVar8;" (assignment_expression "pbVar9 = pbVar8" (identifier "pbVar9") (= "=") (identifier "pbVar8")) (; ";")) (} "}")) (else_clause "else {\n    local_20[0] = 1;\n    pbVar9 = pbVar8 + 1;\n  }" (else "else") (compound_statement "{\n    local_20[0] = 1;\n    pbVar9 = pbVar8 + 1;\n  }" ({ "{") (expression_statement "local_20[0] = 1;" (assignment_expression "local_20[0] = 1" (subscript_expression "local_20[0]" (identifier "local_20") ([ "[") (number_literal "0") (] "]")) (= "=") (number_literal "1")) (; ";")) (expression_statement "pbVar9 = pbVar8 + 1;" (assignment_expression "pbVar9 = pbVar8 + 1" (identifier "pbVar9") (= "=") (binary_expression "pbVar8 + 1" (identifier "pbVar8") (+ "+") (number_literal "1"))) (; ";")) (} "}")))) (expression_statement "pbVar2 = param_2;" (assignment_expression "pbVar2 = param_2" (identifier "pbVar2") (= "=") (identifier "param_2")) (; ";")) (expression_statement "bVar6 = local_44 == 0 && uVar11 == 0;" (assignment_expression "bVar6 = local_44 == 0 && uVar11 == 0" (identifier "bVar6") (= "=") (binary_expression "local_44 == 0 && uVar11 == 0" (binary_expression "local_44 == 0" (identifier "local_44") (== "==") (number_literal "0")) (&& "&&") (binary_expression "uVar11 == 0" (identifier "uVar11") (== "==") (number_literal "0")))) (; ";")) (expression_statement "uVar7 = CONCAT31((int3)((uint)pbVar8 >> 8),bVar6);" (assignment_expression "uVar7 = CONCAT31((int3)((uint)pbVar8 >> 8),bVar6)" (identifier "uVar7") (= "=") (call_expression "CONCAT31((int3)((uint)pbVar8 >> 8),bVar6)" (identifier "CONCAT31") (argument_list "((int3)((uint)pbVar8 >> 8),bVar6)" (( "(") (call_expression "(int3)((uint)pbVar8 >> 8)" (parenthesized_expression "(int3)" (( "(") (identifier "int3") () ")")) (argument_list "((uint)pbVar8 >> 8)" (( "(") (binary_expression "(uint)pbVar8 >> 8" (cast_expression "(uint)pbVar8" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "pbVar8")) (>> ">>") (number_literal "8")) () ")"))) (, ",") (identifier "bVar6") () ")")))) (; ";")) (if_statement "if (bVar6) {\n    *param_4 = param_2;\n    return uVar7;\n  }" (if "if") (parenthesized_expression "(bVar6)" (( "(") (identifier "bVar6") () ")")) (compound_statement "{\n    *param_4 = param_2;\n    return uVar7;\n  }" ({ "{") (expression_statement "*param_4 = param_2;" (assignment_expression "*param_4 = param_2" (pointer_expression "*param_4" (* "*") (identifier "param_4")) (= "=") (identifier "param_2")) (; ";")) (return_statement "return uVar7;" (return "return") (identifier "uVar7") (; ";")) (} "}"))) (if_statement "if (param_5 <= param_2) {\n    return uVar7;\n  }" (if "if") (parenthesized_expression "(param_5 <= param_2)" (( "(") (binary_expression "param_5 <= param_2" (identifier "param_5") (<= "<=") (identifier "param_2")) () ")")) (compound_statement "{\n    return uVar7;\n  }" ({ "{") (return_statement "return uVar7;" (return "return") (identifier "uVar7") (; ";")) (} "}"))) (switch_statement "switch(local_44) {\n  default:\n    goto LAB_00144646;\n  case 1:\n  case 0x10:\n    param_2 = param_2 + param_6;\n    goto code_r0x001445d0;\n  case 3:\n    uVar3 = FUN_00145ad0(&param_2);\n    param_2 = param_2 + (uVar3 & 0xffff);\n    goto code_r0x001445d0;\n  case 4:\n    iVar5 = FUN_00145b50(&param_2);\n    param_2 = param_2 + iVar5;\n    goto code_r0x001445d0;\n  case 5:\n  case 0x12:\n    param_2 = param_2 + 2;\n    goto code_r0x001445d0;\n  case 6:\n  case 0x13:\n    param_2 = param_2 + 4;\n    goto code_r0x001445d0;\n  case 7:\n  case 0x14:\n  case 0x20:\n    param_2 = param_2 + 8;\n    goto code_r0x001445d0;\n  case 8:\n    sVar4 = strlen((char *)param_2);\n    param_2 = pbVar2 + sVar4 + 1;\n    goto code_r0x001445d0;\n  case 9:\n  case 0x18:\n    uVar3 = (uint)*param_2;\n    if ((char)*param_2 < '\0') {\n      uVar3 = FUN_00095970(param_2 + 1,local_20,uVar3);\n    }\n    else {\n      local_20[0] = 1;\n    }\n    param_2 = param_2 + uVar3 + local_20[0];\n    goto code_r0x001445d0;\n  case 10:\n    param_2 = param_2 + *param_2 + 1;\n    goto code_r0x001445d0;\n  case 0xb:\n  case 0xc:\n  case 0x11:\n    param_2 = param_2 + 1;\n    goto code_r0x001445d0;\n  case 0xd:\n    if ((char)*param_2 < '\0') {\n      FUN_00095a30(param_2 + 1,local_20,*param_2);\n      param_2 = param_2 + local_20[0];\n      goto code_r0x001445d0;\n    }\n    break;\n  case 0xe:\n  case 0x17:\n    param_2 = param_2 + (-(uint)bVar10 & 0xfffffffc) + 8;\n    goto code_r0x001445d0;\n  case 0xf:\n  case 0x15:\n    if ((char)*param_2 < '\0') {\n      FUN_00095970(param_2 + 1,local_20,*param_2);\n      param_2 = param_2 + local_20[0];\n      goto code_r0x001445d0;\n    }\n    break;\n  case 0x19:\n    goto code_r0x001445d0;\n  }" (switch "switch") (parenthesized_expression "(local_44)" (( "(") (identifier "local_44") () ")")) (compound_statement "{\n  default:\n    goto LAB_00144646;\n  case 1:\n  case 0x10:\n    param_2 = param_2 + param_6;\n    goto code_r0x001445d0;\n  case 3:\n    uVar3 = FUN_00145ad0(&param_2);\n    param_2 = param_2 + (uVar3 & 0xffff);\n    goto code_r0x001445d0;\n  case 4:\n    iVar5 = FUN_00145b50(&param_2);\n    param_2 = param_2 + iVar5;\n    goto code_r0x001445d0;\n  case 5:\n  case 0x12:\n    param_2 = param_2 + 2;\n    goto code_r0x001445d0;\n  case 6:\n  case 0x13:\n    param_2 = param_2 + 4;\n    goto code_r0x001445d0;\n  case 7:\n  case 0x14:\n  case 0x20:\n    param_2 = param_2 + 8;\n    goto code_r0x001445d0;\n  case 8:\n    sVar4 = strlen((char *)param_2);\n    param_2 = pbVar2 + sVar4 + 1;\n    goto code_r0x001445d0;\n  case 9:\n  case 0x18:\n    uVar3 = (uint)*param_2;\n    if ((char)*param_2 < '\0') {\n      uVar3 = FUN_00095970(param_2 + 1,local_20,uVar3);\n    }\n    else {\n      local_20[0] = 1;\n    }\n    param_2 = param_2 + uVar3 + local_20[0];\n    goto code_r0x001445d0;\n  case 10:\n    param_2 = param_2 + *param_2 + 1;\n    goto code_r0x001445d0;\n  case 0xb:\n  case 0xc:\n  case 0x11:\n    param_2 = param_2 + 1;\n    goto code_r0x001445d0;\n  case 0xd:\n    if ((char)*param_2 < '\0') {\n      FUN_00095a30(param_2 + 1,local_20,*param_2);\n      param_2 = param_2 + local_20[0];\n      goto code_r0x001445d0;\n    }\n    break;\n  case 0xe:\n  case 0x17:\n    param_2 = param_2 + (-(uint)bVar10 & 0xfffffffc) + 8;\n    goto code_r0x001445d0;\n  case 0xf:\n  case 0x15:\n    if ((char)*param_2 < '\0') {\n      FUN_00095970(param_2 + 1,local_20,*param_2);\n      param_2 = param_2 + local_20[0];\n      goto code_r0x001445d0;\n    }\n    break;\n  case 0x19:\n    goto code_r0x001445d0;\n  }" ({ "{") (case_statement "default:\n    goto LAB_00144646;" (default "default") (: ":") (goto_statement "goto LAB_00144646;" (goto "goto") (statement_identifier "LAB_00144646") (; ";"))) (case_statement "case 1:" (case "case") (number_literal "1") (: ":")) (case_statement "case 0x10:\n    param_2 = param_2 + param_6;\n    goto code_r0x001445d0;" (case "case") (number_literal "0x10") (: ":") (expression_statement "param_2 = param_2 + param_6;" (assignment_expression "param_2 = param_2 + param_6" (identifier "param_2") (= "=") (binary_expression "param_2 + param_6" (identifier "param_2") (+ "+") (identifier "param_6"))) (; ";")) (goto_statement "goto code_r0x001445d0;" (goto "goto") (statement_identifier "code_r0x001445d0") (; ";"))) (case_statement "case 3:\n    uVar3 = FUN_00145ad0(&param_2);\n    param_2 = param_2 + (uVar3 & 0xffff);\n    goto code_r0x001445d0;" (case "case") (number_literal "3") (: ":") (expression_statement "uVar3 = FUN_00145ad0(&param_2);" (assignment_expression "uVar3 = FUN_00145ad0(&param_2)" (identifier "uVar3") (= "=") (call_expression "FUN_00145ad0(&param_2)" (identifier "FUN_00145ad0") (argument_list "(&param_2)" (( "(") (pointer_expression "&param_2" (& "&") (identifier "param_2")) () ")")))) (; ";")) (expression_statement "param_2 = param_2 + (uVar3 & 0xffff);" (assignment_expression "param_2 = param_2 + (uVar3 & 0xffff)" (identifier "param_2") (= "=") (binary_expression "param_2 + (uVar3 & 0xffff)" (identifier "param_2") (+ "+") (parenthesized_expression "(uVar3 & 0xffff)" (( "(") (binary_expression "uVar3 & 0xffff" (identifier "uVar3") (& "&") (number_literal "0xffff")) () ")")))) (; ";")) (goto_statement "goto code_r0x001445d0;" (goto "goto") (statement_identifier "code_r0x001445d0") (; ";"))) (case_statement "case 4:\n    iVar5 = FUN_00145b50(&param_2);\n    param_2 = param_2 + iVar5;\n    goto code_r0x001445d0;" (case "case") (number_literal "4") (: ":") (expression_statement "iVar5 = FUN_00145b50(&param_2);" (assignment_expression "iVar5 = FUN_00145b50(&param_2)" (identifier "iVar5") (= "=") (call_expression "FUN_00145b50(&param_2)" (identifier "FUN_00145b50") (argument_list "(&param_2)" (( "(") (pointer_expression "&param_2" (& "&") (identifier "param_2")) () ")")))) (; ";")) (expression_statement "param_2 = param_2 + iVar5;" (assignment_expression "param_2 = param_2 + iVar5" (identifier "param_2") (= "=") (binary_expression "param_2 + iVar5" (identifier "param_2") (+ "+") (identifier "iVar5"))) (; ";")) (goto_statement "goto code_r0x001445d0;" (goto "goto") (statement_identifier "code_r0x001445d0") (; ";"))) (case_statement "case 5:" (case "case") (number_literal "5") (: ":")) (case_statement "case 0x12:\n    param_2 = param_2 + 2;\n    goto code_r0x001445d0;" (case "case") (number_literal "0x12") (: ":") (expression_statement "param_2 = param_2 + 2;" (assignment_expression "param_2 = param_2 + 2" (identifier "param_2") (= "=") (binary_expression "param_2 + 2" (identifier "param_2") (+ "+") (number_literal "2"))) (; ";")) (goto_statement "goto code_r0x001445d0;" (goto "goto") (statement_identifier "code_r0x001445d0") (; ";"))) (case_statement "case 6:" (case "case") (number_literal "6") (: ":")) (case_statement "case 0x13:\n    param_2 = param_2 + 4;\n    goto code_r0x001445d0;" (case "case") (number_literal "0x13") (: ":") (expression_statement "param_2 = param_2 + 4;" (assignment_expression "param_2 = param_2 + 4" (identifier "param_2") (= "=") (binary_expression "param_2 + 4" (identifier "param_2") (+ "+") (number_literal "4"))) (; ";")) (goto_statement "goto code_r0x001445d0;" (goto "goto") (statement_identifier "code_r0x001445d0") (; ";"))) (case_statement "case 7:" (case "case") (number_literal "7") (: ":")) (case_statement "case 0x14:" (case "case") (number_literal "0x14") (: ":")) (case_statement "case 0x20:\n    param_2 = param_2 + 8;\n    goto code_r0x001445d0;" (case "case") (number_literal "0x20") (: ":") (expression_statement "param_2 = param_2 + 8;" (assignment_expression "param_2 = param_2 + 8" (identifier "param_2") (= "=") (binary_expression "param_2 + 8" (identifier "param_2") (+ "+") (number_literal "8"))) (; ";")) (goto_statement "goto code_r0x001445d0;" (goto "goto") (statement_identifier "code_r0x001445d0") (; ";"))) (case_statement "case 8:\n    sVar4 = strlen((char *)param_2);\n    param_2 = pbVar2 + sVar4 + 1;\n    goto code_r0x001445d0;" (case "case") (number_literal "8") (: ":") (expression_statement "sVar4 = strlen((char *)param_2);" (assignment_expression "sVar4 = strlen((char *)param_2)" (identifier "sVar4") (= "=") (call_expression "strlen((char *)param_2)" (identifier "strlen") (argument_list "((char *)param_2)" (( "(") (cast_expression "(char *)param_2" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "param_2")) () ")")))) (; ";")) (expression_statement "param_2 = pbVar2 + sVar4 + 1;" (assignment_expression "param_2 = pbVar2 + sVar4 + 1" (identifier "param_2") (= "=") (binary_expression "pbVar2 + sVar4 + 1" (binary_expression "pbVar2 + sVar4" (identifier "pbVar2") (+ "+") (identifier "sVar4")) (+ "+") (number_literal "1"))) (; ";")) (goto_statement "goto code_r0x001445d0;" (goto "goto") (statement_identifier "code_r0x001445d0") (; ";"))) (case_statement "case 9:" (case "case") (number_literal "9") (: ":")) (case_statement "case 0x18:\n    uVar3 = (uint)*param_2;\n    if ((char)*param_2 < '\0') {\n      uVar3 = FUN_00095970(param_2 + 1,local_20,uVar3);\n    }\n    else {\n      local_20[0] = 1;\n    }\n    param_2 = param_2 + uVar3 + local_20[0];\n    goto code_r0x001445d0;" (case "case") (number_literal "0x18") (: ":") (expression_statement "uVar3 = (uint)*param_2;" (assignment_expression "uVar3 = (uint)*param_2" (identifier "uVar3") (= "=") (binary_expression "(uint)*param_2" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (* "*") (identifier "param_2"))) (; ";")) (if_statement "if ((char)*param_2 < '\0') {\n      uVar3 = FUN_00095970(param_2 + 1,local_20,uVar3);\n    }\n    else {\n      local_20[0] = 1;\n    }" (if "if") (parenthesized_expression "((char)*param_2 < '\0')" (( "(") (binary_expression "(char)*param_2 < '\0'" (cast_expression "(char)*param_2" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (pointer_expression "*param_2" (* "*") (identifier "param_2"))) (< "<") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n      uVar3 = FUN_00095970(param_2 + 1,local_20,uVar3);\n    }" ({ "{") (expression_statement "uVar3 = FUN_00095970(param_2 + 1,local_20,uVar3);" (assignment_expression "uVar3 = FUN_00095970(param_2 + 1,local_20,uVar3)" (identifier "uVar3") (= "=") (call_expression "FUN_00095970(param_2 + 1,local_20,uVar3)" (identifier "FUN_00095970") (argument_list "(param_2 + 1,local_20,uVar3)" (( "(") (binary_expression "param_2 + 1" (identifier "param_2") (+ "+") (number_literal "1")) (, ",") (identifier "local_20") (, ",") (identifier "uVar3") () ")")))) (; ";")) (} "}")) (else_clause "else {\n      local_20[0] = 1;\n    }" (else "else") (compound_statement "{\n      local_20[0] = 1;\n    }" ({ "{") (expression_statement "local_20[0] = 1;" (assignment_expression "local_20[0] = 1" (subscript_expression "local_20[0]" (identifier "local_20") ([ "[") (number_literal "0") (] "]")) (= "=") (number_literal "1")) (; ";")) (} "}")))) (expression_statement "param_2 = param_2 + uVar3 + local_20[0];" (assignment_expression "param_2 = param_2 + uVar3 + local_20[0]" (identifier "param_2") (= "=") (binary_expression "param_2 + uVar3 + local_20[0]" (binary_expression "param_2 + uVar3" (identifier "param_2") (+ "+") (identifier "uVar3")) (+ "+") (subscript_expression "local_20[0]" (identifier "local_20") ([ "[") (number_literal "0") (] "]")))) (; ";")) (goto_statement "goto code_r0x001445d0;" (goto "goto") (statement_identifier "code_r0x001445d0") (; ";"))) (case_statement "case 10:\n    param_2 = param_2 + *param_2 + 1;\n    goto code_r0x001445d0;" (case "case") (number_literal "10") (: ":") (expression_statement "param_2 = param_2 + *param_2 + 1;" (assignment_expression "param_2 = param_2 + *param_2 + 1" (identifier "param_2") (= "=") (binary_expression "param_2 + *param_2 + 1" (binary_expression "param_2 + *param_2" (identifier "param_2") (+ "+") (pointer_expression "*param_2" (* "*") (identifier "param_2"))) (+ "+") (number_literal "1"))) (; ";")) (goto_statement "goto code_r0x001445d0;" (goto "goto") (statement_identifier "code_r0x001445d0") (; ";"))) (case_statement "case 0xb:" (case "case") (number_literal "0xb") (: ":")) (case_statement "case 0xc:" (case "case") (number_literal "0xc") (: ":")) (case_statement "case 0x11:\n    param_2 = param_2 + 1;\n    goto code_r0x001445d0;" (case "case") (number_literal "0x11") (: ":") (expression_statement "param_2 = param_2 + 1;" (assignment_expression "param_2 = param_2 + 1" (identifier "param_2") (= "=") (binary_expression "param_2 + 1" (identifier "param_2") (+ "+") (number_literal "1"))) (; ";")) (goto_statement "goto code_r0x001445d0;" (goto "goto") (statement_identifier "code_r0x001445d0") (; ";"))) (case_statement "case 0xd:\n    if ((char)*param_2 < '\0') {\n      FUN_00095a30(param_2 + 1,local_20,*param_2);\n      param_2 = param_2 + local_20[0];\n      goto code_r0x001445d0;\n    }\n    break;" (case "case") (number_literal "0xd") (: ":") (if_statement "if ((char)*param_2 < '\0') {\n      FUN_00095a30(param_2 + 1,local_20,*param_2);\n      param_2 = param_2 + local_20[0];\n      goto code_r0x001445d0;\n    }" (if "if") (parenthesized_expression "((char)*param_2 < '\0')" (( "(") (binary_expression "(char)*param_2 < '\0'" (cast_expression "(char)*param_2" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (pointer_expression "*param_2" (* "*") (identifier "param_2"))) (< "<") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n      FUN_00095a30(param_2 + 1,local_20,*param_2);\n      param_2 = param_2 + local_20[0];\n      goto code_r0x001445d0;\n    }" ({ "{") (expression_statement "FUN_00095a30(param_2 + 1,local_20,*param_2);" (call_expression "FUN_00095a30(param_2 + 1,local_20,*param_2)" (identifier "FUN_00095a30") (argument_list "(param_2 + 1,local_20,*param_2)" (( "(") (binary_expression "param_2 + 1" (identifier "param_2") (+ "+") (number_literal "1")) (, ",") (identifier "local_20") (, ",") (pointer_expression "*param_2" (* "*") (identifier "param_2")) () ")"))) (; ";")) (expression_statement "param_2 = param_2 + local_20[0];" (assignment_expression "param_2 = param_2 + local_20[0]" (identifier "param_2") (= "=") (binary_expression "param_2 + local_20[0]" (identifier "param_2") (+ "+") (subscript_expression "local_20[0]" (identifier "local_20") ([ "[") (number_literal "0") (] "]")))) (; ";")) (goto_statement "goto code_r0x001445d0;" (goto "goto") (statement_identifier "code_r0x001445d0") (; ";")) (} "}"))) (break_statement "break;" (break "break") (; ";"))) (case_statement "case 0xe:" (case "case") (number_literal "0xe") (: ":")) (case_statement "case 0x17:\n    param_2 = param_2 + (-(uint)bVar10 & 0xfffffffc) + 8;\n    goto code_r0x001445d0;" (case "case") (number_literal "0x17") (: ":") (expression_statement "param_2 = param_2 + (-(uint)bVar10 & 0xfffffffc) + 8;" (assignment_expression "param_2 = param_2 + (-(uint)bVar10 & 0xfffffffc) + 8" (identifier "param_2") (= "=") (binary_expression "param_2 + (-(uint)bVar10 & 0xfffffffc) + 8" (binary_expression "param_2 + (-(uint)bVar10 & 0xfffffffc)" (identifier "param_2") (+ "+") (parenthesized_expression "(-(uint)bVar10 & 0xfffffffc)" (( "(") (binary_expression "-(uint)bVar10 & 0xfffffffc" (unary_expression "-(uint)bVar10" (- "-") (cast_expression "(uint)bVar10" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar10"))) (& "&") (number_literal "0xfffffffc")) () ")"))) (+ "+") (number_literal "8"))) (; ";")) (goto_statement "goto code_r0x001445d0;" (goto "goto") (statement_identifier "code_r0x001445d0") (; ";"))) (case_statement "case 0xf:" (case "case") (number_literal "0xf") (: ":")) (case_statement "case 0x15:\n    if ((char)*param_2 < '\0') {\n      FUN_00095970(param_2 + 1,local_20,*param_2);\n      param_2 = param_2 + local_20[0];\n      goto code_r0x001445d0;\n    }\n    break;" (case "case") (number_literal "0x15") (: ":") (if_statement "if ((char)*param_2 < '\0') {\n      FUN_00095970(param_2 + 1,local_20,*param_2);\n      param_2 = param_2 + local_20[0];\n      goto code_r0x001445d0;\n    }" (if "if") (parenthesized_expression "((char)*param_2 < '\0')" (( "(") (binary_expression "(char)*param_2 < '\0'" (cast_expression "(char)*param_2" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (pointer_expression "*param_2" (* "*") (identifier "param_2"))) (< "<") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n      FUN_00095970(param_2 + 1,local_20,*param_2);\n      param_2 = param_2 + local_20[0];\n      goto code_r0x001445d0;\n    }" ({ "{") (expression_statement "FUN_00095970(param_2 + 1,local_20,*param_2);" (call_expression "FUN_00095970(param_2 + 1,local_20,*param_2)" (identifier "FUN_00095970") (argument_list "(param_2 + 1,local_20,*param_2)" (( "(") (binary_expression "param_2 + 1" (identifier "param_2") (+ "+") (number_literal "1")) (, ",") (identifier "local_20") (, ",") (pointer_expression "*param_2" (* "*") (identifier "param_2")) () ")"))) (; ";")) (expression_statement "param_2 = param_2 + local_20[0];" (assignment_expression "param_2 = param_2 + local_20[0]" (identifier "param_2") (= "=") (binary_expression "param_2 + local_20[0]" (identifier "param_2") (+ "+") (subscript_expression "local_20[0]" (identifier "local_20") ([ "[") (number_literal "0") (] "]")))) (; ";")) (goto_statement "goto code_r0x001445d0;" (goto "goto") (statement_identifier "code_r0x001445d0") (; ";")) (} "}"))) (break_statement "break;" (break "break") (; ";"))) (case_statement "case 0x19:\n    goto code_r0x001445d0;" (case "case") (number_literal "0x19") (: ":") (goto_statement "goto code_r0x001445d0;" (goto "goto") (statement_identifier "code_r0x001445d0") (; ";"))) (} "}"))) (expression_statement "param_2 = param_2 + 1;" (assignment_expression "param_2 = param_2 + 1" (identifier "param_2") (= "=") (binary_expression "param_2 + 1" (identifier "param_2") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "local_20[0] = 1;" (assignment_expression "local_20[0] = 1" (subscript_expression "local_20[0]" (identifier "local_20") ([ "[") (number_literal "0") (] "]")) (= "=") (number_literal "1")) (; ";")) (goto_statement "goto code_r0x001445d0;" (goto "goto") (statement_identifier "code_r0x001445d0") (; ";")) (labeled_statement "LAB_00144646:\n  return uVar7;" (statement_identifier "LAB_00144646") (: ":") (return_statement "return uVar7;" (return "return") (identifier "uVar7") (; ";"))) (} "}")))

/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */
/* 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 *var_8,type_2 *abbrev,type_2 **die_end,
          type_2 *var_7,int var_9,bool is64)

{
  type_3 bVar1;
  type_2 *var_14;
  type_4 var_11;
  type_5 var_16;
  size_t var_15;
  type_4 var_12;
  bool bVar7;
  type_3 *var_1;
  type_3 *var_4;
  bool bVar8;
  uint64_t uVar9;
  type_6 var_6;
  type_5 var_5;
  size_t var_3;
  type_7 uStack_14;
  
  uStack_14 = 0x144599;
  bVar8 = !is64;
  var_1 = abbrev;
_L80:
  bVar1 = *var_1;
  var_4 = var_1 + 1;
  if ((char)bVar1 < '\0') {
    var_6 = var_2(var_4,&var_3,bVar1);
    var_4 = var_1 + var_3;
  }
  else {
    var_3 = 1;
    var_6 = (type_6)bVar1;
  }
  bVar1 = *var_4;
  var_1 = var_4 + 1;
  if ((char)bVar1 < '\0') {
    uVar9 = var_2(var_1,&var_3,bVar1);
    var_5 = (type_5)uVar9;
    var_1 = var_4 + var_3;
  }
  else {
    var_3 = 1;
    var_5 = (type_5)bVar1;
  }
  var_14 = var_8;
  bVar7 = var_5 == 0 && var_6 == 0;
  if (bVar7) {
    *die_end = var_8;
    return bVar7;
  }
  if (var_7 <= var_8) {
    return bVar7;
  }
  switch(var_5) {
  default:
    goto _L79;
  case 1:
  case 0x10:
    var_8 = var_8 + var_9;
    goto _L80;
  case 3:
    var_11 = var_10<16>(&var_8);
    var_8 = var_8 + var_11;
    goto _L80;
  case 4:
    var_12 = var_10<32>(&var_8);
    var_8 = var_8 + var_12;
    goto _L80;
  case 5:
  case 0x12:
    var_8 = var_8 + 2;
    goto _L80;
  case 6:
  case 0x13:
    var_8 = var_8 + 4;
    goto _L80;
  case 7:
  case 0x14:
  case 0x20:
    var_8 = var_8 + 8;
    goto _L80;
  case 8:
    var_15 = var_13((char *)var_8);
    var_8 = var_14 + var_15 + 1;
    goto _L80;
  case 9:
  case 0x18:
    bVar1 = *var_8;
    var_16 = (type_5)bVar1;
    if ((char)bVar1 < '\0') {
      uVar9 = var_2(var_8 + 1,&var_3,bVar1);
      var_16 = (type_5)uVar9;
    }
    else {
      var_3 = 1;
    }
    var_8 = var_8 + var_16 + var_3;
    goto _L80;
  case 10:
    var_8 = var_8 + *var_8 + 1;
    goto _L80;
  case 0xb:
  case 0xc:
  case 0x11:
    var_8 = var_8 + 1;
    goto _L80;
  case 0xd:
    if ((char)*var_8 < '\0') {
      var_17(var_8 + 1,&var_3,*var_8);
      var_8 = var_8 + var_3;
      goto _L80;
    }
    break;
  case 0xe:
  case 0x17:
    var_8 = var_8 + (-(type_5)bVar8 & 0xfffffffc) + 8;
    goto _L80;
  case 0xf:
  case 0x15:
    if ((char)*var_8 < '\0') {
      var_2(var_8 + 1,&var_3,*var_8);
      var_8 = var_8 + var_3;
      goto _L80;
    }
    break;
  case 0x19:
    goto _L80;
  }
  var_8 = var_8 + 1;
  var_3 = 1;
  goto _L80;
_L79:
  return bVar7;
}


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

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

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

{
  byte bVar1;
  byte *pbVar2;
  uint uVar3;
  size_t sVar4;
  int iVar5;
  bool bVar6;
  byte *pbVar8;
  byte *pbVar9;
  bool bVar10;
  ulonglong uVar11;
  uint local_44;
  int local_20 [3];
  undefined4 uStack_14;
  undefined4 uVar7;
  
  uStack_14 = 0x144599;
  bVar10 = param_7 == '\0';
  pbVar9 = param_3;
code_r0x001445d0:
  bVar1 = *pbVar9;
  pbVar8 = pbVar9 + 1;
  if ((char)bVar1 < '\0') {
    uVar11 = FUN_00095970(pbVar8,local_20,(uint)bVar1);
    pbVar8 = pbVar9 + local_20[0];
  }
  else {
    local_20[0] = 1;
    uVar11 = (ulonglong)(uint)bVar1;
  }
  local_44 = (uint)*pbVar8;
  if ((char)*pbVar8 < '\0') {
    local_44 = FUN_00095970(pbVar8 + 1,local_20,local_44);
    pbVar8 = pbVar8 + local_20[0];
    pbVar9 = pbVar8;
  }
  else {
    local_20[0] = 1;
    pbVar9 = pbVar8 + 1;
  }
  pbVar2 = param_2;
  bVar6 = local_44 == 0 && uVar11 == 0;
  uVar7 = CONCAT31((int3)((uint)pbVar8 >> 8),bVar6);
  if (bVar6) {
    *param_4 = param_2;
    return uVar7;
  }
  if (param_5 <= param_2) {
    return uVar7;
  }
  switch(local_44) {
  default:
    goto LAB_00144646;
  case 1:
  case 0x10:
    param_2 = param_2 + param_6;
    goto code_r0x001445d0;
  case 3:
    uVar3 = FUN_00145ad0(&param_2);
    param_2 = param_2 + (uVar3 & 0xffff);
    goto code_r0x001445d0;
  case 4:
    iVar5 = FUN_00145b50(&param_2);
    param_2 = param_2 + iVar5;
    goto code_r0x001445d0;
  case 5:
  case 0x12:
    param_2 = param_2 + 2;
    goto code_r0x001445d0;
  case 6:
  case 0x13:
    param_2 = param_2 + 4;
    goto code_r0x001445d0;
  case 7:
  case 0x14:
  case 0x20:
    param_2 = param_2 + 8;
    goto code_r0x001445d0;
  case 8:
    sVar4 = strlen((char *)param_2);
    param_2 = pbVar2 + sVar4 + 1;
    goto code_r0x001445d0;
  case 9:
  case 0x18:
    uVar3 = (uint)*param_2;
    if ((char)*param_2 < '\0') {
      uVar3 = FUN_00095970(param_2 + 1,local_20,uVar3);
    }
    else {
      local_20[0] = 1;
    }
    param_2 = param_2 + uVar3 + local_20[0];
    goto code_r0x001445d0;
  case 10:
    param_2 = param_2 + *param_2 + 1;
    goto code_r0x001445d0;
  case 0xb:
  case 0xc:
  case 0x11:
    param_2 = param_2 + 1;
    goto code_r0x001445d0;
  case 0xd:
    if ((char)*param_2 < '\0') {
      FUN_00095a30(param_2 + 1,local_20,*param_2);
      param_2 = param_2 + local_20[0];
      goto code_r0x001445d0;
    }
    break;
  case 0xe:
  case 0x17:
    param_2 = param_2 + (-(uint)bVar10 & 0xfffffffc) + 8;
    goto code_r0x001445d0;
  case 0xf:
  case 0x15:
    if ((char)*param_2 < '\0') {
      FUN_00095970(param_2 + 1,local_20,*param_2);
      param_2 = param_2 + local_20[0];
      goto code_r0x001445d0;
    }
    break;
  case 0x19:
    goto code_r0x001445d0;
  }
  param_2 = param_2 + 1;
  local_20[0] = 1;
  goto code_r0x001445d0;
LAB_00144646:
  return uVar7;
}

