
char * quotearg_n_options(wchar_t n,char *arg,size_t argsize,quoting_options *options)

{
  int iVar1;
  ulong buffersize;
  int *piVar2;
  slotvec *psVar3;
  size_t sVar4;
  char *buffer;
  wchar_t wVar5;
  
  piVar2 = __errno_location();
  iVar1 = *piVar2;
  if (n < L'\0') {
                    /* WARNING: Subroutine does not return */
    abort();
  }
  psVar3 = slotvec;
  if (nslots <= n) {
    if (n == L'\x7fffffff') {
                    /* WARNING: Subroutine does not return */
      xalloc_die();
    }
    wVar5 = n + L'\x01';
    if (slotvec == &slotvec0) {
      psVar3 = (slotvec *)xrealloc((void *)0x0,(long)wVar5 << 4);
      slotvec = psVar3;
      *psVar3 = slotvec0;
    }
    else {
      psVar3 = (slotvec *)xrealloc(slotvec,(long)wVar5 << 4);
      slotvec = psVar3;
    }
    memset(psVar3 + nslots,0,(long)(wVar5 - nslots) << 4);
    nslots = wVar5;
  }
  psVar3 = psVar3 + n;
  buffersize = psVar3->size;
  buffer = psVar3->val;
  wVar5 = options->flags | 1;
  sVar4 = quotearg_buffer_restyled
                    (buffer,buffersize,arg,argsize,options->style,wVar5,options->quote_these_too,
                     options->left_quote,options->right_quote);
  if (buffersize <= sVar4) {
    sVar4 = sVar4 + 1;
    psVar3->size = sVar4;
    if (buffer != slot0) {
      free(buffer);
    }
    buffer = (char *)xmalloc(sVar4);
    psVar3->val = buffer;
    quotearg_buffer_restyled
              (buffer,sVar4,arg,argsize,options->style,wVar5,options->quote_these_too,
               options->left_quote,options->right_quote);
  }
  *piVar2 = iVar1;
  return buffer;
}



/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

undefined * FUN_0010475a(int param_1,undefined8 param_2,undefined8 param_3,undefined4 *param_4)

{
  int iVar1;
  int iVar2;
  uint uVar3;
  ulong uVar4;
  int *piVar5;
  undefined8 *puVar6;
  ulong uVar7;
  undefined *puVar8;
  ulong *puVar9;
  
  piVar5 = __errno_location();
  iVar2 = *piVar5;
  if (param_1 < 0) {
                    /* WARNING: Subroutine does not return */
    abort();
  }
  puVar6 = (undefined8 *)PTR_DAT_0010a200;
  if (DAT_0010a1f8 <= param_1) {
    if (param_1 == 0x7fffffff) {
                    /* WARNING: Subroutine does not return */
      FUN_00105944();
    }
    iVar1 = param_1 + 1;
    if (PTR_DAT_0010a200 == &DAT_0010a210) {
      puVar6 = (undefined8 *)FUN_0010575d(0,(long)iVar1 << 4);
      puVar8 = PTR_DAT_0010a218;
      PTR_DAT_0010a200 = (undefined *)puVar6;
      *puVar6 = _DAT_0010a210;
      puVar6[1] = puVar8;
    }
    else {
      puVar6 = (undefined8 *)FUN_0010575d(PTR_DAT_0010a200,(long)iVar1 << 4);
      PTR_DAT_0010a200 = (undefined *)puVar6;
    }
    memset(puVar6 + (long)DAT_0010a1f8 * 2,0,(long)(iVar1 - DAT_0010a1f8) << 4);
    DAT_0010a1f8 = iVar1;
  }
  puVar9 = puVar6 + (long)param_1 * 2;
  uVar4 = *puVar9;
  puVar8 = (undefined *)puVar9[1];
  uVar3 = param_4[1];
  uVar7 = FUN_00103707(puVar8,uVar4,param_2,param_3,*param_4,uVar3 | 1,param_4 + 2,
                       *(undefined8 *)(param_4 + 10),*(undefined8 *)(param_4 + 0xc));
  if (uVar4 <= uVar7) {
    uVar7 = uVar7 + 1;
    *puVar9 = uVar7;
    if (puVar8 != &DAT_0010a260) {
      free(puVar8);
    }
    puVar8 = (undefined *)FUN_00105702(uVar7);
    puVar9[1] = (ulong)puVar8;
    FUN_00103707(puVar8,uVar7,param_2,param_3,*param_4,uVar3 | 1,param_4 + 2,
                 *(undefined8 *)(param_4 + 10),*(undefined8 *)(param_4 + 0xc));
  }
  *piVar5 = iVar2;
  return puVar8;
}


PUSH R15
PUSH R14
PUSH R13
PUSH R12
PUSH RBP
PUSH RBX
SUB RSP,0x28
MOV EBX,EDI
MOV qword ptr [RSP],RSI
MOV qword ptr [RSP + 0x8],RDX
MOV RBP,RCX
CALL 0x00102060
MOV qword ptr [RSP + 0x10],RAX
MOV EAX,dword ptr [RAX]
MOV dword ptr [RSP + 0x1c],EAX
MOV R12,qword ptr [0x0010a200]
TEST EBX,EBX
JS 0x001048c4
CMP dword ptr [0x0010a1f8],EBX
JG 0x00104803
CMP EBX,0x7fffffff
JZ 0x001048c9
LEA R13D,[RBX + 0x1]
MOVSXD RSI,R13D
SHL RSI,0x4
LEA RAX,[0x10a210]
CMP R12,RAX
JZ 0x001048ce
MOV RDI,R12
CALL 0x0010575d
MOV R12,RAX
MOV qword ptr [0x0010a200],RAX
MOV EDI,dword ptr [0x0010a1f8]
MOV EDX,R13D
SUB EDX,EDI
MOVSXD RDX,EDX
SHL RDX,0x4
MOVSXD RDI,EDI
SHL RDI,0x4
ADD RDI,R12
MOV ESI,0x0
CALL 0x00102160
MOV dword ptr [0x0010a1f8],R13D
MOVSXD RBX,EBX
SHL RBX,0x4
ADD RBX,R12
MOV R14,qword ptr [RBX]
MOV R12,qword ptr [RBX + 0x8]
MOV R13D,dword ptr [RBP + 0x4]
OR R13D,0x1
LEA R15,[RBP + 0x8]
SUB RSP,0x8
PUSH qword ptr [RBP + 0x30]
PUSH qword ptr [RBP + 0x28]
PUSH R15
MOV R9D,R13D
MOV R8D,dword ptr [RBP]
MOV RCX,qword ptr [RSP + 0x28]
MOV RDX,qword ptr [RSP + 0x20]
MOV RSI,R14
MOV RDI,R12
CALL 0x00103707
ADD RSP,0x20
CMP R14,RAX
JA 0x001048a7
LEA R14,[RAX + 0x1]
MOV qword ptr [RBX],R14
LEA RAX,[0x10a260]
CMP R12,RAX
JZ 0x0010486c
MOV RDI,R12
CALL 0x00102040
MOV RDI,R14
CALL 0x00105702
MOV R12,RAX
MOV qword ptr [RBX + 0x8],RAX
SUB RSP,0x8
PUSH qword ptr [RBP + 0x30]
PUSH qword ptr [RBP + 0x28]
PUSH R15
MOV R9D,R13D
MOV R8D,dword ptr [RBP]
MOV RCX,qword ptr [RSP + 0x28]
MOV RDX,qword ptr [RSP + 0x20]
MOV RSI,R14
MOV RDI,RAX
CALL 0x00103707
ADD RSP,0x20
MOV RAX,qword ptr [RSP + 0x10]
MOV ECX,dword ptr [RSP + 0x1c]
MOV dword ptr [RAX],ECX
MOV RAX,R12
ADD RSP,0x28
POP RBX
POP RBP
POP R12
POP R13
POP R14
POP R15
RET
CALL 0x00102050
CALL 0x00105944
MOV EDI,0x0
CALL 0x0010575d
MOV R12,RAX
MOV qword ptr [0x0010a200],RAX
MOVDQA XMM0,xmmword ptr [0x0010a210]
MOVUPS xmmword ptr [RAX],XMM0
JMP 0x001047d6
(translation_unit "/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */\n\nundefined * FUN_0010475a(int param_1,undefined8 param_2,undefined8 param_3,undefined4 *param_4)\n\n{\n  int iVar1;\n  int iVar2;\n  uint uVar3;\n  ulong uVar4;\n  int *piVar5;\n  undefined8 *puVar6;\n  ulong uVar7;\n  undefined *puVar8;\n  ulong *puVar9;\n  \n  piVar5 = __errno_location();\n  iVar2 = *piVar5;\n  if (param_1 < 0) {\n                    /* WARNING: Subroutine does not return */\n    abort();\n  }\n  puVar6 = (undefined8 *)PTR_DAT_0010a200;\n  if (DAT_0010a1f8 <= param_1) {\n    if (param_1 == 0x7fffffff) {\n                    /* WARNING: Subroutine does not return */\n      FUN_00105944();\n    }\n    iVar1 = param_1 + 1;\n    if (PTR_DAT_0010a200 == &DAT_0010a210) {\n      puVar6 = (undefined8 *)FUN_0010575d(0,(long)iVar1 << 4);\n      puVar8 = PTR_DAT_0010a218;\n      PTR_DAT_0010a200 = (undefined *)puVar6;\n      *puVar6 = _DAT_0010a210;\n      puVar6[1] = puVar8;\n    }\n    else {\n      puVar6 = (undefined8 *)FUN_0010575d(PTR_DAT_0010a200,(long)iVar1 << 4);\n      PTR_DAT_0010a200 = (undefined *)puVar6;\n    }\n    memset(puVar6 + (long)DAT_0010a1f8 * 2,0,(long)(iVar1 - DAT_0010a1f8) << 4);\n    DAT_0010a1f8 = iVar1;\n  }\n  puVar9 = puVar6 + (long)param_1 * 2;\n  uVar4 = *puVar9;\n  puVar8 = (undefined *)puVar9[1];\n  uVar3 = param_4[1];\n  uVar7 = FUN_00103707(puVar8,uVar4,param_2,param_3,*param_4,uVar3 | 1,param_4 + 2,\n                       *(undefined8 *)(param_4 + 10),*(undefined8 *)(param_4 + 0xc));\n  if (uVar4 <= uVar7) {\n    uVar7 = uVar7 + 1;\n    *puVar9 = uVar7;\n    if (puVar8 != &DAT_0010a260) {\n      free(puVar8);\n    }\n    puVar8 = (undefined *)FUN_00105702(uVar7);\n    puVar9[1] = (ulong)puVar8;\n    FUN_00103707(puVar8,uVar7,param_2,param_3,*param_4,uVar3 | 1,param_4 + 2,\n                 *(undefined8 *)(param_4 + 10),*(undefined8 *)(param_4 + 0xc));\n  }\n  *piVar5 = iVar2;\n  return puVar8;\n}\n\n" comment (function_definition "undefined * FUN_0010475a(int param_1,undefined8 param_2,undefined8 param_3,undefined4 *param_4)\n\n{\n  int iVar1;\n  int iVar2;\n  uint uVar3;\n  ulong uVar4;\n  int *piVar5;\n  undefined8 *puVar6;\n  ulong uVar7;\n  undefined *puVar8;\n  ulong *puVar9;\n  \n  piVar5 = __errno_location();\n  iVar2 = *piVar5;\n  if (param_1 < 0) {\n                    /* WARNING: Subroutine does not return */\n    abort();\n  }\n  puVar6 = (undefined8 *)PTR_DAT_0010a200;\n  if (DAT_0010a1f8 <= param_1) {\n    if (param_1 == 0x7fffffff) {\n                    /* WARNING: Subroutine does not return */\n      FUN_00105944();\n    }\n    iVar1 = param_1 + 1;\n    if (PTR_DAT_0010a200 == &DAT_0010a210) {\n      puVar6 = (undefined8 *)FUN_0010575d(0,(long)iVar1 << 4);\n      puVar8 = PTR_DAT_0010a218;\n      PTR_DAT_0010a200 = (undefined *)puVar6;\n      *puVar6 = _DAT_0010a210;\n      puVar6[1] = puVar8;\n    }\n    else {\n      puVar6 = (undefined8 *)FUN_0010575d(PTR_DAT_0010a200,(long)iVar1 << 4);\n      PTR_DAT_0010a200 = (undefined *)puVar6;\n    }\n    memset(puVar6 + (long)DAT_0010a1f8 * 2,0,(long)(iVar1 - DAT_0010a1f8) << 4);\n    DAT_0010a1f8 = iVar1;\n  }\n  puVar9 = puVar6 + (long)param_1 * 2;\n  uVar4 = *puVar9;\n  puVar8 = (undefined *)puVar9[1];\n  uVar3 = param_4[1];\n  uVar7 = FUN_00103707(puVar8,uVar4,param_2,param_3,*param_4,uVar3 | 1,param_4 + 2,\n                       *(undefined8 *)(param_4 + 10),*(undefined8 *)(param_4 + 0xc));\n  if (uVar4 <= uVar7) {\n    uVar7 = uVar7 + 1;\n    *puVar9 = uVar7;\n    if (puVar8 != &DAT_0010a260) {\n      free(puVar8);\n    }\n    puVar8 = (undefined *)FUN_00105702(uVar7);\n    puVar9[1] = (ulong)puVar8;\n    FUN_00103707(puVar8,uVar7,param_2,param_3,*param_4,uVar3 | 1,param_4 + 2,\n                 *(undefined8 *)(param_4 + 10),*(undefined8 *)(param_4 + 0xc));\n  }\n  *piVar5 = iVar2;\n  return puVar8;\n}" type_identifier (pointer_declarator "* FUN_0010475a(int param_1,undefined8 param_2,undefined8 param_3,undefined4 *param_4)" * (function_declarator "FUN_0010475a(int param_1,undefined8 param_2,undefined8 param_3,undefined4 *param_4)" identifier (parameter_list "(int param_1,undefined8 param_2,undefined8 param_3,undefined4 *param_4)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "undefined8 param_2" type_identifier identifier) , (parameter_declaration "undefined8 param_3" type_identifier identifier) , (parameter_declaration "undefined4 *param_4" type_identifier (pointer_declarator "*param_4" * identifier)) )))) (compound_statement "{\n  int iVar1;\n  int iVar2;\n  uint uVar3;\n  ulong uVar4;\n  int *piVar5;\n  undefined8 *puVar6;\n  ulong uVar7;\n  undefined *puVar8;\n  ulong *puVar9;\n  \n  piVar5 = __errno_location();\n  iVar2 = *piVar5;\n  if (param_1 < 0) {\n                    /* WARNING: Subroutine does not return */\n    abort();\n  }\n  puVar6 = (undefined8 *)PTR_DAT_0010a200;\n  if (DAT_0010a1f8 <= param_1) {\n    if (param_1 == 0x7fffffff) {\n                    /* WARNING: Subroutine does not return */\n      FUN_00105944();\n    }\n    iVar1 = param_1 + 1;\n    if (PTR_DAT_0010a200 == &DAT_0010a210) {\n      puVar6 = (undefined8 *)FUN_0010575d(0,(long)iVar1 << 4);\n      puVar8 = PTR_DAT_0010a218;\n      PTR_DAT_0010a200 = (undefined *)puVar6;\n      *puVar6 = _DAT_0010a210;\n      puVar6[1] = puVar8;\n    }\n    else {\n      puVar6 = (undefined8 *)FUN_0010575d(PTR_DAT_0010a200,(long)iVar1 << 4);\n      PTR_DAT_0010a200 = (undefined *)puVar6;\n    }\n    memset(puVar6 + (long)DAT_0010a1f8 * 2,0,(long)(iVar1 - DAT_0010a1f8) << 4);\n    DAT_0010a1f8 = iVar1;\n  }\n  puVar9 = puVar6 + (long)param_1 * 2;\n  uVar4 = *puVar9;\n  puVar8 = (undefined *)puVar9[1];\n  uVar3 = param_4[1];\n  uVar7 = FUN_00103707(puVar8,uVar4,param_2,param_3,*param_4,uVar3 | 1,param_4 + 2,\n                       *(undefined8 *)(param_4 + 10),*(undefined8 *)(param_4 + 0xc));\n  if (uVar4 <= uVar7) {\n    uVar7 = uVar7 + 1;\n    *puVar9 = uVar7;\n    if (puVar8 != &DAT_0010a260) {\n      free(puVar8);\n    }\n    puVar8 = (undefined *)FUN_00105702(uVar7);\n    puVar9[1] = (ulong)puVar8;\n    FUN_00103707(puVar8,uVar7,param_2,param_3,*param_4,uVar3 | 1,param_4 + 2,\n                 *(undefined8 *)(param_4 + 10),*(undefined8 *)(param_4 + 0xc));\n  }\n  *piVar5 = iVar2;\n  return puVar8;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "ulong uVar4;" type_identifier identifier ;) (declaration "int *piVar5;" primitive_type (pointer_declarator "*piVar5" * identifier) ;) (declaration "undefined8 *puVar6;" type_identifier (pointer_declarator "*puVar6" * identifier) ;) (declaration "ulong uVar7;" type_identifier identifier ;) (declaration "undefined *puVar8;" type_identifier (pointer_declarator "*puVar8" * identifier) ;) (declaration "ulong *puVar9;" type_identifier (pointer_declarator "*puVar9" * identifier) ;) (expression_statement "piVar5 = __errno_location();" (assignment_expression "piVar5 = __errno_location()" identifier = (call_expression "__errno_location()" identifier (argument_list "()" ( )))) ;) (expression_statement "iVar2 = *piVar5;" (assignment_expression "iVar2 = *piVar5" identifier = (pointer_expression "*piVar5" * identifier)) ;) (if_statement "if (param_1 < 0) {\n                    /* WARNING: Subroutine does not return */\n    abort();\n  }" if (parenthesized_expression "(param_1 < 0)" ( (binary_expression "param_1 < 0" identifier < number_literal) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    abort();\n  }" { comment (expression_statement "abort();" (call_expression "abort()" identifier (argument_list "()" ( ))) ;) })) (expression_statement "puVar6 = (undefined8 *)PTR_DAT_0010a200;" (assignment_expression "puVar6 = (undefined8 *)PTR_DAT_0010a200" identifier = (cast_expression "(undefined8 *)PTR_DAT_0010a200" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (if_statement "if (DAT_0010a1f8 <= param_1) {\n    if (param_1 == 0x7fffffff) {\n                    /* WARNING: Subroutine does not return */\n      FUN_00105944();\n    }\n    iVar1 = param_1 + 1;\n    if (PTR_DAT_0010a200 == &DAT_0010a210) {\n      puVar6 = (undefined8 *)FUN_0010575d(0,(long)iVar1 << 4);\n      puVar8 = PTR_DAT_0010a218;\n      PTR_DAT_0010a200 = (undefined *)puVar6;\n      *puVar6 = _DAT_0010a210;\n      puVar6[1] = puVar8;\n    }\n    else {\n      puVar6 = (undefined8 *)FUN_0010575d(PTR_DAT_0010a200,(long)iVar1 << 4);\n      PTR_DAT_0010a200 = (undefined *)puVar6;\n    }\n    memset(puVar6 + (long)DAT_0010a1f8 * 2,0,(long)(iVar1 - DAT_0010a1f8) << 4);\n    DAT_0010a1f8 = iVar1;\n  }" if (parenthesized_expression "(DAT_0010a1f8 <= param_1)" ( (binary_expression "DAT_0010a1f8 <= param_1" identifier <= identifier) )) (compound_statement "{\n    if (param_1 == 0x7fffffff) {\n                    /* WARNING: Subroutine does not return */\n      FUN_00105944();\n    }\n    iVar1 = param_1 + 1;\n    if (PTR_DAT_0010a200 == &DAT_0010a210) {\n      puVar6 = (undefined8 *)FUN_0010575d(0,(long)iVar1 << 4);\n      puVar8 = PTR_DAT_0010a218;\n      PTR_DAT_0010a200 = (undefined *)puVar6;\n      *puVar6 = _DAT_0010a210;\n      puVar6[1] = puVar8;\n    }\n    else {\n      puVar6 = (undefined8 *)FUN_0010575d(PTR_DAT_0010a200,(long)iVar1 << 4);\n      PTR_DAT_0010a200 = (undefined *)puVar6;\n    }\n    memset(puVar6 + (long)DAT_0010a1f8 * 2,0,(long)(iVar1 - DAT_0010a1f8) << 4);\n    DAT_0010a1f8 = iVar1;\n  }" { (if_statement "if (param_1 == 0x7fffffff) {\n                    /* WARNING: Subroutine does not return */\n      FUN_00105944();\n    }" if (parenthesized_expression "(param_1 == 0x7fffffff)" ( (binary_expression "param_1 == 0x7fffffff" identifier == number_literal) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n      FUN_00105944();\n    }" { comment (expression_statement "FUN_00105944();" (call_expression "FUN_00105944()" identifier (argument_list "()" ( ))) ;) })) (expression_statement "iVar1 = param_1 + 1;" (assignment_expression "iVar1 = param_1 + 1" identifier = (binary_expression "param_1 + 1" identifier + number_literal)) ;) (if_statement "if (PTR_DAT_0010a200 == &DAT_0010a210) {\n      puVar6 = (undefined8 *)FUN_0010575d(0,(long)iVar1 << 4);\n      puVar8 = PTR_DAT_0010a218;\n      PTR_DAT_0010a200 = (undefined *)puVar6;\n      *puVar6 = _DAT_0010a210;\n      puVar6[1] = puVar8;\n    }\n    else {\n      puVar6 = (undefined8 *)FUN_0010575d(PTR_DAT_0010a200,(long)iVar1 << 4);\n      PTR_DAT_0010a200 = (undefined *)puVar6;\n    }" if (parenthesized_expression "(PTR_DAT_0010a200 == &DAT_0010a210)" ( (binary_expression "PTR_DAT_0010a200 == &DAT_0010a210" identifier == (pointer_expression "&DAT_0010a210" & identifier)) )) (compound_statement "{\n      puVar6 = (undefined8 *)FUN_0010575d(0,(long)iVar1 << 4);\n      puVar8 = PTR_DAT_0010a218;\n      PTR_DAT_0010a200 = (undefined *)puVar6;\n      *puVar6 = _DAT_0010a210;\n      puVar6[1] = puVar8;\n    }" { (expression_statement "puVar6 = (undefined8 *)FUN_0010575d(0,(long)iVar1 << 4);" (assignment_expression "puVar6 = (undefined8 *)FUN_0010575d(0,(long)iVar1 << 4)" identifier = (cast_expression "(undefined8 *)FUN_0010575d(0,(long)iVar1 << 4)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_0010575d(0,(long)iVar1 << 4)" identifier (argument_list "(0,(long)iVar1 << 4)" ( number_literal , (binary_expression "(long)iVar1 << 4" (cast_expression "(long)iVar1" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) << number_literal) ))))) ;) (expression_statement "puVar8 = PTR_DAT_0010a218;" (assignment_expression "puVar8 = PTR_DAT_0010a218" identifier = identifier) ;) (expression_statement "PTR_DAT_0010a200 = (undefined *)puVar6;" (assignment_expression "PTR_DAT_0010a200 = (undefined *)puVar6" identifier = (cast_expression "(undefined *)puVar6" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "*puVar6 = _DAT_0010a210;" (assignment_expression "*puVar6 = _DAT_0010a210" (pointer_expression "*puVar6" * identifier) = identifier) ;) (expression_statement "puVar6[1] = puVar8;" (assignment_expression "puVar6[1] = puVar8" (subscript_expression "puVar6[1]" identifier [ number_literal ]) = identifier) ;) }) (else_clause "else {\n      puVar6 = (undefined8 *)FUN_0010575d(PTR_DAT_0010a200,(long)iVar1 << 4);\n      PTR_DAT_0010a200 = (undefined *)puVar6;\n    }" else (compound_statement "{\n      puVar6 = (undefined8 *)FUN_0010575d(PTR_DAT_0010a200,(long)iVar1 << 4);\n      PTR_DAT_0010a200 = (undefined *)puVar6;\n    }" { (expression_statement "puVar6 = (undefined8 *)FUN_0010575d(PTR_DAT_0010a200,(long)iVar1 << 4);" (assignment_expression "puVar6 = (undefined8 *)FUN_0010575d(PTR_DAT_0010a200,(long)iVar1 << 4)" identifier = (cast_expression "(undefined8 *)FUN_0010575d(PTR_DAT_0010a200,(long)iVar1 << 4)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_0010575d(PTR_DAT_0010a200,(long)iVar1 << 4)" identifier (argument_list "(PTR_DAT_0010a200,(long)iVar1 << 4)" ( identifier , (binary_expression "(long)iVar1 << 4" (cast_expression "(long)iVar1" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) << number_literal) ))))) ;) (expression_statement "PTR_DAT_0010a200 = (undefined *)puVar6;" (assignment_expression "PTR_DAT_0010a200 = (undefined *)puVar6" identifier = (cast_expression "(undefined *)puVar6" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) }))) (expression_statement "memset(puVar6 + (long)DAT_0010a1f8 * 2,0,(long)(iVar1 - DAT_0010a1f8) << 4);" (call_expression "memset(puVar6 + (long)DAT_0010a1f8 * 2,0,(long)(iVar1 - DAT_0010a1f8) << 4)" identifier (argument_list "(puVar6 + (long)DAT_0010a1f8 * 2,0,(long)(iVar1 - DAT_0010a1f8) << 4)" ( (binary_expression "puVar6 + (long)DAT_0010a1f8 * 2" identifier + (binary_expression "(long)DAT_0010a1f8 * 2" (cast_expression "(long)DAT_0010a1f8" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) * number_literal)) , number_literal , (binary_expression "(long)(iVar1 - DAT_0010a1f8) << 4" (cast_expression "(long)(iVar1 - DAT_0010a1f8)" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (parenthesized_expression "(iVar1 - DAT_0010a1f8)" ( (binary_expression "iVar1 - DAT_0010a1f8" identifier - identifier) ))) << number_literal) ))) ;) (expression_statement "DAT_0010a1f8 = iVar1;" (assignment_expression "DAT_0010a1f8 = iVar1" identifier = identifier) ;) })) (expression_statement "puVar9 = puVar6 + (long)param_1 * 2;" (assignment_expression "puVar9 = puVar6 + (long)param_1 * 2" identifier = (binary_expression "puVar6 + (long)param_1 * 2" identifier + (binary_expression "(long)param_1 * 2" (cast_expression "(long)param_1" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) * number_literal))) ;) (expression_statement "uVar4 = *puVar9;" (assignment_expression "uVar4 = *puVar9" identifier = (pointer_expression "*puVar9" * identifier)) ;) (expression_statement "puVar8 = (undefined *)puVar9[1];" (assignment_expression "puVar8 = (undefined *)puVar9[1]" identifier = (cast_expression "(undefined *)puVar9[1]" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar9[1]" identifier [ number_literal ]))) ;) (expression_statement "uVar3 = param_4[1];" (assignment_expression "uVar3 = param_4[1]" identifier = (subscript_expression "param_4[1]" identifier [ number_literal ])) ;) (expression_statement "uVar7 = FUN_00103707(puVar8,uVar4,param_2,param_3,*param_4,uVar3 | 1,param_4 + 2,\n                       *(undefined8 *)(param_4 + 10),*(undefined8 *)(param_4 + 0xc));" (assignment_expression "uVar7 = FUN_00103707(puVar8,uVar4,param_2,param_3,*param_4,uVar3 | 1,param_4 + 2,\n                       *(undefined8 *)(param_4 + 10),*(undefined8 *)(param_4 + 0xc))" identifier = (call_expression "FUN_00103707(puVar8,uVar4,param_2,param_3,*param_4,uVar3 | 1,param_4 + 2,\n                       *(undefined8 *)(param_4 + 10),*(undefined8 *)(param_4 + 0xc))" identifier (argument_list "(puVar8,uVar4,param_2,param_3,*param_4,uVar3 | 1,param_4 + 2,\n                       *(undefined8 *)(param_4 + 10),*(undefined8 *)(param_4 + 0xc))" ( identifier , identifier , identifier , identifier , (pointer_expression "*param_4" * identifier) , (binary_expression "uVar3 | 1" identifier | number_literal) , (binary_expression "param_4 + 2" identifier + number_literal) , (pointer_expression "*(undefined8 *)(param_4 + 10)" * (cast_expression "(undefined8 *)(param_4 + 10)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_4 + 10)" ( (binary_expression "param_4 + 10" identifier + number_literal) )))) , (pointer_expression "*(undefined8 *)(param_4 + 0xc)" * (cast_expression "(undefined8 *)(param_4 + 0xc)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_4 + 0xc)" ( (binary_expression "param_4 + 0xc" identifier + number_literal) )))) )))) ;) (if_statement "if (uVar4 <= uVar7) {\n    uVar7 = uVar7 + 1;\n    *puVar9 = uVar7;\n    if (puVar8 != &DAT_0010a260) {\n      free(puVar8);\n    }\n    puVar8 = (undefined *)FUN_00105702(uVar7);\n    puVar9[1] = (ulong)puVar8;\n    FUN_00103707(puVar8,uVar7,param_2,param_3,*param_4,uVar3 | 1,param_4 + 2,\n                 *(undefined8 *)(param_4 + 10),*(undefined8 *)(param_4 + 0xc));\n  }" if (parenthesized_expression "(uVar4 <= uVar7)" ( (binary_expression "uVar4 <= uVar7" identifier <= identifier) )) (compound_statement "{\n    uVar7 = uVar7 + 1;\n    *puVar9 = uVar7;\n    if (puVar8 != &DAT_0010a260) {\n      free(puVar8);\n    }\n    puVar8 = (undefined *)FUN_00105702(uVar7);\n    puVar9[1] = (ulong)puVar8;\n    FUN_00103707(puVar8,uVar7,param_2,param_3,*param_4,uVar3 | 1,param_4 + 2,\n                 *(undefined8 *)(param_4 + 10),*(undefined8 *)(param_4 + 0xc));\n  }" { (expression_statement "uVar7 = uVar7 + 1;" (assignment_expression "uVar7 = uVar7 + 1" identifier = (binary_expression "uVar7 + 1" identifier + number_literal)) ;) (expression_statement "*puVar9 = uVar7;" (assignment_expression "*puVar9 = uVar7" (pointer_expression "*puVar9" * identifier) = identifier) ;) (if_statement "if (puVar8 != &DAT_0010a260) {\n      free(puVar8);\n    }" if (parenthesized_expression "(puVar8 != &DAT_0010a260)" ( (binary_expression "puVar8 != &DAT_0010a260" identifier != (pointer_expression "&DAT_0010a260" & identifier)) )) (compound_statement "{\n      free(puVar8);\n    }" { (expression_statement "free(puVar8);" (call_expression "free(puVar8)" identifier (argument_list "(puVar8)" ( identifier ))) ;) })) (expression_statement "puVar8 = (undefined *)FUN_00105702(uVar7);" (assignment_expression "puVar8 = (undefined *)FUN_00105702(uVar7)" identifier = (cast_expression "(undefined *)FUN_00105702(uVar7)" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00105702(uVar7)" identifier (argument_list "(uVar7)" ( identifier ))))) ;) (expression_statement "puVar9[1] = (ulong)puVar8;" (assignment_expression "puVar9[1] = (ulong)puVar8" (subscript_expression "puVar9[1]" identifier [ number_literal ]) = (cast_expression "(ulong)puVar8" ( (type_descriptor "ulong" type_identifier) ) identifier)) ;) (expression_statement "FUN_00103707(puVar8,uVar7,param_2,param_3,*param_4,uVar3 | 1,param_4 + 2,\n                 *(undefined8 *)(param_4 + 10),*(undefined8 *)(param_4 + 0xc));" (call_expression "FUN_00103707(puVar8,uVar7,param_2,param_3,*param_4,uVar3 | 1,param_4 + 2,\n                 *(undefined8 *)(param_4 + 10),*(undefined8 *)(param_4 + 0xc))" identifier (argument_list "(puVar8,uVar7,param_2,param_3,*param_4,uVar3 | 1,param_4 + 2,\n                 *(undefined8 *)(param_4 + 10),*(undefined8 *)(param_4 + 0xc))" ( identifier , identifier , identifier , identifier , (pointer_expression "*param_4" * identifier) , (binary_expression "uVar3 | 1" identifier | number_literal) , (binary_expression "param_4 + 2" identifier + number_literal) , (pointer_expression "*(undefined8 *)(param_4 + 10)" * (cast_expression "(undefined8 *)(param_4 + 10)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_4 + 10)" ( (binary_expression "param_4 + 10" identifier + number_literal) )))) , (pointer_expression "*(undefined8 *)(param_4 + 0xc)" * (cast_expression "(undefined8 *)(param_4 + 0xc)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_4 + 0xc)" ( (binary_expression "param_4 + 0xc" identifier + number_literal) )))) ))) ;) })) (expression_statement "*piVar5 = iVar2;" (assignment_expression "*piVar5 = iVar2" (pointer_expression "*piVar5" * identifier) = identifier) ;) (return_statement "return puVar8;" return identifier ;) })))
(translation_unit "char * quotearg_n_options(wchar_t n,char *arg,size_t argsize,quoting_options *options)\n\n{\n  int iVar1;\n  ulong buffersize;\n  int *piVar2;\n  slotvec *psVar3;\n  size_t sVar4;\n  char *buffer;\n  wchar_t wVar5;\n  \n  piVar2 = __errno_location();\n  iVar1 = *piVar2;\n  if (n < L'\0') {\n                    /* WARNING: Subroutine does not return */\n    abort();\n  }\n  psVar3 = slotvec;\n  if (nslots <= n) {\n    if (n == L'\x7fffffff') {\n                    /* WARNING: Subroutine does not return */\n      xalloc_die();\n    }\n    wVar5 = n + L'\x01';\n    if (slotvec == &slotvec0) {\n      psVar3 = (slotvec *)xrealloc((void *)0x0,(long)wVar5 << 4);\n      slotvec = psVar3;\n      *psVar3 = slotvec0;\n    }\n    else {\n      psVar3 = (slotvec *)xrealloc(slotvec,(long)wVar5 << 4);\n      slotvec = psVar3;\n    }\n    memset(psVar3 + nslots,0,(long)(wVar5 - nslots) << 4);\n    nslots = wVar5;\n  }\n  psVar3 = psVar3 + n;\n  buffersize = psVar3->size;\n  buffer = psVar3->val;\n  wVar5 = options->flags | 1;\n  sVar4 = quotearg_buffer_restyled\n                    (buffer,buffersize,arg,argsize,options->style,wVar5,options->quote_these_too,\n                     options->left_quote,options->right_quote);\n  if (buffersize <= sVar4) {\n    sVar4 = sVar4 + 1;\n    psVar3->size = sVar4;\n    if (buffer != slot0) {\n      free(buffer);\n    }\n    buffer = (char *)xmalloc(sVar4);\n    psVar3->val = buffer;\n    quotearg_buffer_restyled\n              (buffer,sVar4,arg,argsize,options->style,wVar5,options->quote_these_too,\n               options->left_quote,options->right_quote);\n  }\n  *piVar2 = iVar1;\n  return buffer;\n}\n\n" (function_definition "char * quotearg_n_options(wchar_t n,char *arg,size_t argsize,quoting_options *options)\n\n{\n  int iVar1;\n  ulong buffersize;\n  int *piVar2;\n  slotvec *psVar3;\n  size_t sVar4;\n  char *buffer;\n  wchar_t wVar5;\n  \n  piVar2 = __errno_location();\n  iVar1 = *piVar2;\n  if (n < L'\0') {\n                    /* WARNING: Subroutine does not return */\n    abort();\n  }\n  psVar3 = slotvec;\n  if (nslots <= n) {\n    if (n == L'\x7fffffff') {\n                    /* WARNING: Subroutine does not return */\n      xalloc_die();\n    }\n    wVar5 = n + L'\x01';\n    if (slotvec == &slotvec0) {\n      psVar3 = (slotvec *)xrealloc((void *)0x0,(long)wVar5 << 4);\n      slotvec = psVar3;\n      *psVar3 = slotvec0;\n    }\n    else {\n      psVar3 = (slotvec *)xrealloc(slotvec,(long)wVar5 << 4);\n      slotvec = psVar3;\n    }\n    memset(psVar3 + nslots,0,(long)(wVar5 - nslots) << 4);\n    nslots = wVar5;\n  }\n  psVar3 = psVar3 + n;\n  buffersize = psVar3->size;\n  buffer = psVar3->val;\n  wVar5 = options->flags | 1;\n  sVar4 = quotearg_buffer_restyled\n                    (buffer,buffersize,arg,argsize,options->style,wVar5,options->quote_these_too,\n                     options->left_quote,options->right_quote);\n  if (buffersize <= sVar4) {\n    sVar4 = sVar4 + 1;\n    psVar3->size = sVar4;\n    if (buffer != slot0) {\n      free(buffer);\n    }\n    buffer = (char *)xmalloc(sVar4);\n    psVar3->val = buffer;\n    quotearg_buffer_restyled\n              (buffer,sVar4,arg,argsize,options->style,wVar5,options->quote_these_too,\n               options->left_quote,options->right_quote);\n  }\n  *piVar2 = iVar1;\n  return buffer;\n}" primitive_type (pointer_declarator "* quotearg_n_options(wchar_t n,char *arg,size_t argsize,quoting_options *options)" * (function_declarator "quotearg_n_options(wchar_t n,char *arg,size_t argsize,quoting_options *options)" identifier (parameter_list "(wchar_t n,char *arg,size_t argsize,quoting_options *options)" ( (parameter_declaration "wchar_t n" type_identifier identifier) , (parameter_declaration "char *arg" primitive_type (pointer_declarator "*arg" * identifier)) , (parameter_declaration "size_t argsize" primitive_type identifier) , (parameter_declaration "quoting_options *options" type_identifier (pointer_declarator "*options" * identifier)) )))) (compound_statement "{\n  int iVar1;\n  ulong buffersize;\n  int *piVar2;\n  slotvec *psVar3;\n  size_t sVar4;\n  char *buffer;\n  wchar_t wVar5;\n  \n  piVar2 = __errno_location();\n  iVar1 = *piVar2;\n  if (n < L'\0') {\n                    /* WARNING: Subroutine does not return */\n    abort();\n  }\n  psVar3 = slotvec;\n  if (nslots <= n) {\n    if (n == L'\x7fffffff') {\n                    /* WARNING: Subroutine does not return */\n      xalloc_die();\n    }\n    wVar5 = n + L'\x01';\n    if (slotvec == &slotvec0) {\n      psVar3 = (slotvec *)xrealloc((void *)0x0,(long)wVar5 << 4);\n      slotvec = psVar3;\n      *psVar3 = slotvec0;\n    }\n    else {\n      psVar3 = (slotvec *)xrealloc(slotvec,(long)wVar5 << 4);\n      slotvec = psVar3;\n    }\n    memset(psVar3 + nslots,0,(long)(wVar5 - nslots) << 4);\n    nslots = wVar5;\n  }\n  psVar3 = psVar3 + n;\n  buffersize = psVar3->size;\n  buffer = psVar3->val;\n  wVar5 = options->flags | 1;\n  sVar4 = quotearg_buffer_restyled\n                    (buffer,buffersize,arg,argsize,options->style,wVar5,options->quote_these_too,\n                     options->left_quote,options->right_quote);\n  if (buffersize <= sVar4) {\n    sVar4 = sVar4 + 1;\n    psVar3->size = sVar4;\n    if (buffer != slot0) {\n      free(buffer);\n    }\n    buffer = (char *)xmalloc(sVar4);\n    psVar3->val = buffer;\n    quotearg_buffer_restyled\n              (buffer,sVar4,arg,argsize,options->style,wVar5,options->quote_these_too,\n               options->left_quote,options->right_quote);\n  }\n  *piVar2 = iVar1;\n  return buffer;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "ulong buffersize;" type_identifier identifier ;) (declaration "int *piVar2;" primitive_type (pointer_declarator "*piVar2" * identifier) ;) (declaration "slotvec *psVar3;" type_identifier (pointer_declarator "*psVar3" * identifier) ;) (declaration "size_t sVar4;" primitive_type identifier ;) (declaration "char *buffer;" primitive_type (pointer_declarator "*buffer" * identifier) ;) (declaration "wchar_t wVar5;" type_identifier identifier ;) (expression_statement "piVar2 = __errno_location();" (assignment_expression "piVar2 = __errno_location()" identifier = (call_expression "__errno_location()" identifier (argument_list "()" ( )))) ;) (expression_statement "iVar1 = *piVar2;" (assignment_expression "iVar1 = *piVar2" identifier = (pointer_expression "*piVar2" * identifier)) ;) (if_statement "if (n < L'\0') {\n                    /* WARNING: Subroutine does not return */\n    abort();\n  }" if (parenthesized_expression "(n < L'\0')" ( (binary_expression "n < L'\0'" identifier < (char_literal "L'\0'" L' escape_sequence ')) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    abort();\n  }" { comment (expression_statement "abort();" (call_expression "abort()" identifier (argument_list "()" ( ))) ;) })) (expression_statement "psVar3 = slotvec;" (assignment_expression "psVar3 = slotvec" identifier = identifier) ;) (if_statement "if (nslots <= n) {\n    if (n == L'\x7fffffff') {\n                    /* WARNING: Subroutine does not return */\n      xalloc_die();\n    }\n    wVar5 = n + L'\x01';\n    if (slotvec == &slotvec0) {\n      psVar3 = (slotvec *)xrealloc((void *)0x0,(long)wVar5 << 4);\n      slotvec = psVar3;\n      *psVar3 = slotvec0;\n    }\n    else {\n      psVar3 = (slotvec *)xrealloc(slotvec,(long)wVar5 << 4);\n      slotvec = psVar3;\n    }\n    memset(psVar3 + nslots,0,(long)(wVar5 - nslots) << 4);\n    nslots = wVar5;\n  }" if (parenthesized_expression "(nslots <= n)" ( (binary_expression "nslots <= n" identifier <= identifier) )) (compound_statement "{\n    if (n == L'\x7fffffff') {\n                    /* WARNING: Subroutine does not return */\n      xalloc_die();\n    }\n    wVar5 = n + L'\x01';\n    if (slotvec == &slotvec0) {\n      psVar3 = (slotvec *)xrealloc((void *)0x0,(long)wVar5 << 4);\n      slotvec = psVar3;\n      *psVar3 = slotvec0;\n    }\n    else {\n      psVar3 = (slotvec *)xrealloc(slotvec,(long)wVar5 << 4);\n      slotvec = psVar3;\n    }\n    memset(psVar3 + nslots,0,(long)(wVar5 - nslots) << 4);\n    nslots = wVar5;\n  }" { (if_statement "if (n == L'\x7fffffff') {\n                    /* WARNING: Subroutine does not return */\n      xalloc_die();\n    }" if (parenthesized_expression "(n == L'\x7fffffff')" ( (binary_expression "n == L'\x7fffffff'" identifier == (char_literal "L'\x7fffffff'" L' escape_sequence character character character character ')) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n      xalloc_die();\n    }" { comment (expression_statement "xalloc_die();" (call_expression "xalloc_die()" identifier (argument_list "()" ( ))) ;) })) (expression_statement "wVar5 = n + L'\x01';" (assignment_expression "wVar5 = n + L'\x01'" identifier = (binary_expression "n + L'\x01'" identifier + (char_literal "L'\x01'" L' escape_sequence '))) ;) (if_statement "if (slotvec == &slotvec0) {\n      psVar3 = (slotvec *)xrealloc((void *)0x0,(long)wVar5 << 4);\n      slotvec = psVar3;\n      *psVar3 = slotvec0;\n    }\n    else {\n      psVar3 = (slotvec *)xrealloc(slotvec,(long)wVar5 << 4);\n      slotvec = psVar3;\n    }" if (parenthesized_expression "(slotvec == &slotvec0)" ( (binary_expression "slotvec == &slotvec0" identifier == (pointer_expression "&slotvec0" & identifier)) )) (compound_statement "{\n      psVar3 = (slotvec *)xrealloc((void *)0x0,(long)wVar5 << 4);\n      slotvec = psVar3;\n      *psVar3 = slotvec0;\n    }" { (expression_statement "psVar3 = (slotvec *)xrealloc((void *)0x0,(long)wVar5 << 4);" (assignment_expression "psVar3 = (slotvec *)xrealloc((void *)0x0,(long)wVar5 << 4)" identifier = (cast_expression "(slotvec *)xrealloc((void *)0x0,(long)wVar5 << 4)" ( (type_descriptor "slotvec *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "xrealloc((void *)0x0,(long)wVar5 << 4)" identifier (argument_list "((void *)0x0,(long)wVar5 << 4)" ( (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal) , (binary_expression "(long)wVar5 << 4" (cast_expression "(long)wVar5" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) << number_literal) ))))) ;) (expression_statement "slotvec = psVar3;" (assignment_expression "slotvec = psVar3" identifier = identifier) ;) (expression_statement "*psVar3 = slotvec0;" (assignment_expression "*psVar3 = slotvec0" (pointer_expression "*psVar3" * identifier) = identifier) ;) }) (else_clause "else {\n      psVar3 = (slotvec *)xrealloc(slotvec,(long)wVar5 << 4);\n      slotvec = psVar3;\n    }" else (compound_statement "{\n      psVar3 = (slotvec *)xrealloc(slotvec,(long)wVar5 << 4);\n      slotvec = psVar3;\n    }" { (expression_statement "psVar3 = (slotvec *)xrealloc(slotvec,(long)wVar5 << 4);" (assignment_expression "psVar3 = (slotvec *)xrealloc(slotvec,(long)wVar5 << 4)" identifier = (cast_expression "(slotvec *)xrealloc(slotvec,(long)wVar5 << 4)" ( (type_descriptor "slotvec *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "xrealloc(slotvec,(long)wVar5 << 4)" identifier (argument_list "(slotvec,(long)wVar5 << 4)" ( identifier , (binary_expression "(long)wVar5 << 4" (cast_expression "(long)wVar5" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) << number_literal) ))))) ;) (expression_statement "slotvec = psVar3;" (assignment_expression "slotvec = psVar3" identifier = identifier) ;) }))) (expression_statement "memset(psVar3 + nslots,0,(long)(wVar5 - nslots) << 4);" (call_expression "memset(psVar3 + nslots,0,(long)(wVar5 - nslots) << 4)" identifier (argument_list "(psVar3 + nslots,0,(long)(wVar5 - nslots) << 4)" ( (binary_expression "psVar3 + nslots" identifier + identifier) , number_literal , (binary_expression "(long)(wVar5 - nslots) << 4" (cast_expression "(long)(wVar5 - nslots)" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (parenthesized_expression "(wVar5 - nslots)" ( (binary_expression "wVar5 - nslots" identifier - identifier) ))) << number_literal) ))) ;) (expression_statement "nslots = wVar5;" (assignment_expression "nslots = wVar5" identifier = identifier) ;) })) (expression_statement "psVar3 = psVar3 + n;" (assignment_expression "psVar3 = psVar3 + n" identifier = (binary_expression "psVar3 + n" identifier + identifier)) ;) (expression_statement "buffersize = psVar3->size;" (assignment_expression "buffersize = psVar3->size" identifier = (field_expression "psVar3->size" identifier -> field_identifier)) ;) (expression_statement "buffer = psVar3->val;" (assignment_expression "buffer = psVar3->val" identifier = (field_expression "psVar3->val" identifier -> field_identifier)) ;) (expression_statement "wVar5 = options->flags | 1;" (assignment_expression "wVar5 = options->flags | 1" identifier = (binary_expression "options->flags | 1" (field_expression "options->flags" identifier -> field_identifier) | number_literal)) ;) (expression_statement "sVar4 = quotearg_buffer_restyled\n                    (buffer,buffersize,arg,argsize,options->style,wVar5,options->quote_these_too,\n                     options->left_quote,options->right_quote);" (assignment_expression "sVar4 = quotearg_buffer_restyled\n                    (buffer,buffersize,arg,argsize,options->style,wVar5,options->quote_these_too,\n                     options->left_quote,options->right_quote)" identifier = (call_expression "quotearg_buffer_restyled\n                    (buffer,buffersize,arg,argsize,options->style,wVar5,options->quote_these_too,\n                     options->left_quote,options->right_quote)" identifier (argument_list "(buffer,buffersize,arg,argsize,options->style,wVar5,options->quote_these_too,\n                     options->left_quote,options->right_quote)" ( identifier , identifier , identifier , identifier , (field_expression "options->style" identifier -> field_identifier) , identifier , (field_expression "options->quote_these_too" identifier -> field_identifier) , (field_expression "options->left_quote" identifier -> field_identifier) , (field_expression "options->right_quote" identifier -> field_identifier) )))) ;) (if_statement "if (buffersize <= sVar4) {\n    sVar4 = sVar4 + 1;\n    psVar3->size = sVar4;\n    if (buffer != slot0) {\n      free(buffer);\n    }\n    buffer = (char *)xmalloc(sVar4);\n    psVar3->val = buffer;\n    quotearg_buffer_restyled\n              (buffer,sVar4,arg,argsize,options->style,wVar5,options->quote_these_too,\n               options->left_quote,options->right_quote);\n  }" if (parenthesized_expression "(buffersize <= sVar4)" ( (binary_expression "buffersize <= sVar4" identifier <= identifier) )) (compound_statement "{\n    sVar4 = sVar4 + 1;\n    psVar3->size = sVar4;\n    if (buffer != slot0) {\n      free(buffer);\n    }\n    buffer = (char *)xmalloc(sVar4);\n    psVar3->val = buffer;\n    quotearg_buffer_restyled\n              (buffer,sVar4,arg,argsize,options->style,wVar5,options->quote_these_too,\n               options->left_quote,options->right_quote);\n  }" { (expression_statement "sVar4 = sVar4 + 1;" (assignment_expression "sVar4 = sVar4 + 1" identifier = (binary_expression "sVar4 + 1" identifier + number_literal)) ;) (expression_statement "psVar3->size = sVar4;" (assignment_expression "psVar3->size = sVar4" (field_expression "psVar3->size" identifier -> field_identifier) = identifier) ;) (if_statement "if (buffer != slot0) {\n      free(buffer);\n    }" if (parenthesized_expression "(buffer != slot0)" ( (binary_expression "buffer != slot0" identifier != identifier) )) (compound_statement "{\n      free(buffer);\n    }" { (expression_statement "free(buffer);" (call_expression "free(buffer)" identifier (argument_list "(buffer)" ( identifier ))) ;) })) (expression_statement "buffer = (char *)xmalloc(sVar4);" (assignment_expression "buffer = (char *)xmalloc(sVar4)" identifier = (cast_expression "(char *)xmalloc(sVar4)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "xmalloc(sVar4)" identifier (argument_list "(sVar4)" ( identifier ))))) ;) (expression_statement "psVar3->val = buffer;" (assignment_expression "psVar3->val = buffer" (field_expression "psVar3->val" identifier -> field_identifier) = identifier) ;) (expression_statement "quotearg_buffer_restyled\n              (buffer,sVar4,arg,argsize,options->style,wVar5,options->quote_these_too,\n               options->left_quote,options->right_quote);" (call_expression "quotearg_buffer_restyled\n              (buffer,sVar4,arg,argsize,options->style,wVar5,options->quote_these_too,\n               options->left_quote,options->right_quote)" identifier (argument_list "(buffer,sVar4,arg,argsize,options->style,wVar5,options->quote_these_too,\n               options->left_quote,options->right_quote)" ( identifier , identifier , identifier , identifier , (field_expression "options->style" identifier -> field_identifier) , identifier , (field_expression "options->quote_these_too" identifier -> field_identifier) , (field_expression "options->left_quote" identifier -> field_identifier) , (field_expression "options->right_quote" identifier -> field_identifier) ))) ;) })) (expression_statement "*piVar2 = iVar1;" (assignment_expression "*piVar2 = iVar1" (pointer_expression "*piVar2" * identifier) = identifier) ;) (return_statement "return buffer;" return identifier ;) })))
(translation_unit "undefined * FUN_0010475a(int param_1,undefined8 param_2,undefined8 param_3,undefined4 *param_4)\n\n{\n  int iVar1;\n  int iVar2;\n  uint uVar3;\n  ulong uVar4;\n  int *piVar5;\n  undefined8 *puVar6;\n  ulong uVar7;\n  undefined *puVar8;\n  ulong *puVar9;\n  \n  piVar5 = __errno_location();\n  iVar2 = *piVar5;\n  if (param_1 < 0) {\n                    \n    abort();\n  }\n  puVar6 = (undefined8 *)PTR_DAT_0010a200;\n  if (DAT_0010a1f8 <= param_1) {\n    if (param_1 == 0x7fffffff) {\n                    \n      FUN_00105944();\n    }\n    iVar1 = param_1 + 1;\n    if (PTR_DAT_0010a200 == &DAT_0010a210) {\n      puVar6 = (undefined8 *)FUN_0010575d(0,(long)iVar1 << 4);\n      puVar8 = PTR_DAT_0010a218;\n      PTR_DAT_0010a200 = (undefined *)puVar6;\n      *puVar6 = _DAT_0010a210;\n      puVar6[1] = puVar8;\n    }\n    else {\n      puVar6 = (undefined8 *)FUN_0010575d(PTR_DAT_0010a200,(long)iVar1 << 4);\n      PTR_DAT_0010a200 = (undefined *)puVar6;\n    }\n    memset(puVar6 + (long)DAT_0010a1f8 * 2,0,(long)(iVar1 - DAT_0010a1f8) << 4);\n    DAT_0010a1f8 = iVar1;\n  }\n  puVar9 = puVar6 + (long)param_1 * 2;\n  uVar4 = *puVar9;\n  puVar8 = (undefined *)puVar9[1];\n  uVar3 = param_4[1];\n  uVar7 = FUN_00103707(puVar8,uVar4,param_2,param_3,*param_4,uVar3 | 1,param_4 + 2,\n                       *(undefined8 *)(param_4 + 10),*(undefined8 *)(param_4 + 0xc));\n  if (uVar4 <= uVar7) {\n    uVar7 = uVar7 + 1;\n    *puVar9 = uVar7;\n    if (puVar8 != &DAT_0010a260) {\n      free(puVar8);\n    }\n    puVar8 = (undefined *)FUN_00105702(uVar7);\n    puVar9[1] = (ulong)puVar8;\n    FUN_00103707(puVar8,uVar7,param_2,param_3,*param_4,uVar3 | 1,param_4 + 2,\n                 *(undefined8 *)(param_4 + 10),*(undefined8 *)(param_4 + 0xc));\n  }\n  *piVar5 = iVar2;\n  return puVar8;\n}\n\n" (function_definition "undefined * FUN_0010475a(int param_1,undefined8 param_2,undefined8 param_3,undefined4 *param_4)\n\n{\n  int iVar1;\n  int iVar2;\n  uint uVar3;\n  ulong uVar4;\n  int *piVar5;\n  undefined8 *puVar6;\n  ulong uVar7;\n  undefined *puVar8;\n  ulong *puVar9;\n  \n  piVar5 = __errno_location();\n  iVar2 = *piVar5;\n  if (param_1 < 0) {\n                    \n    abort();\n  }\n  puVar6 = (undefined8 *)PTR_DAT_0010a200;\n  if (DAT_0010a1f8 <= param_1) {\n    if (param_1 == 0x7fffffff) {\n                    \n      FUN_00105944();\n    }\n    iVar1 = param_1 + 1;\n    if (PTR_DAT_0010a200 == &DAT_0010a210) {\n      puVar6 = (undefined8 *)FUN_0010575d(0,(long)iVar1 << 4);\n      puVar8 = PTR_DAT_0010a218;\n      PTR_DAT_0010a200 = (undefined *)puVar6;\n      *puVar6 = _DAT_0010a210;\n      puVar6[1] = puVar8;\n    }\n    else {\n      puVar6 = (undefined8 *)FUN_0010575d(PTR_DAT_0010a200,(long)iVar1 << 4);\n      PTR_DAT_0010a200 = (undefined *)puVar6;\n    }\n    memset(puVar6 + (long)DAT_0010a1f8 * 2,0,(long)(iVar1 - DAT_0010a1f8) << 4);\n    DAT_0010a1f8 = iVar1;\n  }\n  puVar9 = puVar6 + (long)param_1 * 2;\n  uVar4 = *puVar9;\n  puVar8 = (undefined *)puVar9[1];\n  uVar3 = param_4[1];\n  uVar7 = FUN_00103707(puVar8,uVar4,param_2,param_3,*param_4,uVar3 | 1,param_4 + 2,\n                       *(undefined8 *)(param_4 + 10),*(undefined8 *)(param_4 + 0xc));\n  if (uVar4 <= uVar7) {\n    uVar7 = uVar7 + 1;\n    *puVar9 = uVar7;\n    if (puVar8 != &DAT_0010a260) {\n      free(puVar8);\n    }\n    puVar8 = (undefined *)FUN_00105702(uVar7);\n    puVar9[1] = (ulong)puVar8;\n    FUN_00103707(puVar8,uVar7,param_2,param_3,*param_4,uVar3 | 1,param_4 + 2,\n                 *(undefined8 *)(param_4 + 10),*(undefined8 *)(param_4 + 0xc));\n  }\n  *piVar5 = iVar2;\n  return puVar8;\n}" type_identifier (pointer_declarator "* FUN_0010475a(int param_1,undefined8 param_2,undefined8 param_3,undefined4 *param_4)" * (function_declarator "FUN_0010475a(int param_1,undefined8 param_2,undefined8 param_3,undefined4 *param_4)" identifier (parameter_list "(int param_1,undefined8 param_2,undefined8 param_3,undefined4 *param_4)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "undefined8 param_2" type_identifier identifier) , (parameter_declaration "undefined8 param_3" type_identifier identifier) , (parameter_declaration "undefined4 *param_4" type_identifier (pointer_declarator "*param_4" * identifier)) )))) (compound_statement "{\n  int iVar1;\n  int iVar2;\n  uint uVar3;\n  ulong uVar4;\n  int *piVar5;\n  undefined8 *puVar6;\n  ulong uVar7;\n  undefined *puVar8;\n  ulong *puVar9;\n  \n  piVar5 = __errno_location();\n  iVar2 = *piVar5;\n  if (param_1 < 0) {\n                    \n    abort();\n  }\n  puVar6 = (undefined8 *)PTR_DAT_0010a200;\n  if (DAT_0010a1f8 <= param_1) {\n    if (param_1 == 0x7fffffff) {\n                    \n      FUN_00105944();\n    }\n    iVar1 = param_1 + 1;\n    if (PTR_DAT_0010a200 == &DAT_0010a210) {\n      puVar6 = (undefined8 *)FUN_0010575d(0,(long)iVar1 << 4);\n      puVar8 = PTR_DAT_0010a218;\n      PTR_DAT_0010a200 = (undefined *)puVar6;\n      *puVar6 = _DAT_0010a210;\n      puVar6[1] = puVar8;\n    }\n    else {\n      puVar6 = (undefined8 *)FUN_0010575d(PTR_DAT_0010a200,(long)iVar1 << 4);\n      PTR_DAT_0010a200 = (undefined *)puVar6;\n    }\n    memset(puVar6 + (long)DAT_0010a1f8 * 2,0,(long)(iVar1 - DAT_0010a1f8) << 4);\n    DAT_0010a1f8 = iVar1;\n  }\n  puVar9 = puVar6 + (long)param_1 * 2;\n  uVar4 = *puVar9;\n  puVar8 = (undefined *)puVar9[1];\n  uVar3 = param_4[1];\n  uVar7 = FUN_00103707(puVar8,uVar4,param_2,param_3,*param_4,uVar3 | 1,param_4 + 2,\n                       *(undefined8 *)(param_4 + 10),*(undefined8 *)(param_4 + 0xc));\n  if (uVar4 <= uVar7) {\n    uVar7 = uVar7 + 1;\n    *puVar9 = uVar7;\n    if (puVar8 != &DAT_0010a260) {\n      free(puVar8);\n    }\n    puVar8 = (undefined *)FUN_00105702(uVar7);\n    puVar9[1] = (ulong)puVar8;\n    FUN_00103707(puVar8,uVar7,param_2,param_3,*param_4,uVar3 | 1,param_4 + 2,\n                 *(undefined8 *)(param_4 + 10),*(undefined8 *)(param_4 + 0xc));\n  }\n  *piVar5 = iVar2;\n  return puVar8;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "ulong uVar4;" type_identifier identifier ;) (declaration "int *piVar5;" primitive_type (pointer_declarator "*piVar5" * identifier) ;) (declaration "undefined8 *puVar6;" type_identifier (pointer_declarator "*puVar6" * identifier) ;) (declaration "ulong uVar7;" type_identifier identifier ;) (declaration "undefined *puVar8;" type_identifier (pointer_declarator "*puVar8" * identifier) ;) (declaration "ulong *puVar9;" type_identifier (pointer_declarator "*puVar9" * identifier) ;) (expression_statement "piVar5 = __errno_location();" (assignment_expression "piVar5 = __errno_location()" identifier = (call_expression "__errno_location()" identifier (argument_list "()" ( )))) ;) (expression_statement "iVar2 = *piVar5;" (assignment_expression "iVar2 = *piVar5" identifier = (pointer_expression "*piVar5" * identifier)) ;) (if_statement "if (param_1 < 0) {\n                    \n    abort();\n  }" if (parenthesized_expression "(param_1 < 0)" ( (binary_expression "param_1 < 0" identifier < number_literal) )) (compound_statement "{\n                    \n    abort();\n  }" { (expression_statement "abort();" (call_expression "abort()" identifier (argument_list "()" ( ))) ;) })) (expression_statement "puVar6 = (undefined8 *)PTR_DAT_0010a200;" (assignment_expression "puVar6 = (undefined8 *)PTR_DAT_0010a200" identifier = (cast_expression "(undefined8 *)PTR_DAT_0010a200" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (if_statement "if (DAT_0010a1f8 <= param_1) {\n    if (param_1 == 0x7fffffff) {\n                    \n      FUN_00105944();\n    }\n    iVar1 = param_1 + 1;\n    if (PTR_DAT_0010a200 == &DAT_0010a210) {\n      puVar6 = (undefined8 *)FUN_0010575d(0,(long)iVar1 << 4);\n      puVar8 = PTR_DAT_0010a218;\n      PTR_DAT_0010a200 = (undefined *)puVar6;\n      *puVar6 = _DAT_0010a210;\n      puVar6[1] = puVar8;\n    }\n    else {\n      puVar6 = (undefined8 *)FUN_0010575d(PTR_DAT_0010a200,(long)iVar1 << 4);\n      PTR_DAT_0010a200 = (undefined *)puVar6;\n    }\n    memset(puVar6 + (long)DAT_0010a1f8 * 2,0,(long)(iVar1 - DAT_0010a1f8) << 4);\n    DAT_0010a1f8 = iVar1;\n  }" if (parenthesized_expression "(DAT_0010a1f8 <= param_1)" ( (binary_expression "DAT_0010a1f8 <= param_1" identifier <= identifier) )) (compound_statement "{\n    if (param_1 == 0x7fffffff) {\n                    \n      FUN_00105944();\n    }\n    iVar1 = param_1 + 1;\n    if (PTR_DAT_0010a200 == &DAT_0010a210) {\n      puVar6 = (undefined8 *)FUN_0010575d(0,(long)iVar1 << 4);\n      puVar8 = PTR_DAT_0010a218;\n      PTR_DAT_0010a200 = (undefined *)puVar6;\n      *puVar6 = _DAT_0010a210;\n      puVar6[1] = puVar8;\n    }\n    else {\n      puVar6 = (undefined8 *)FUN_0010575d(PTR_DAT_0010a200,(long)iVar1 << 4);\n      PTR_DAT_0010a200 = (undefined *)puVar6;\n    }\n    memset(puVar6 + (long)DAT_0010a1f8 * 2,0,(long)(iVar1 - DAT_0010a1f8) << 4);\n    DAT_0010a1f8 = iVar1;\n  }" { (if_statement "if (param_1 == 0x7fffffff) {\n                    \n      FUN_00105944();\n    }" if (parenthesized_expression "(param_1 == 0x7fffffff)" ( (binary_expression "param_1 == 0x7fffffff" identifier == number_literal) )) (compound_statement "{\n                    \n      FUN_00105944();\n    }" { (expression_statement "FUN_00105944();" (call_expression "FUN_00105944()" identifier (argument_list "()" ( ))) ;) })) (expression_statement "iVar1 = param_1 + 1;" (assignment_expression "iVar1 = param_1 + 1" identifier = (binary_expression "param_1 + 1" identifier + number_literal)) ;) (if_statement "if (PTR_DAT_0010a200 == &DAT_0010a210) {\n      puVar6 = (undefined8 *)FUN_0010575d(0,(long)iVar1 << 4);\n      puVar8 = PTR_DAT_0010a218;\n      PTR_DAT_0010a200 = (undefined *)puVar6;\n      *puVar6 = _DAT_0010a210;\n      puVar6[1] = puVar8;\n    }\n    else {\n      puVar6 = (undefined8 *)FUN_0010575d(PTR_DAT_0010a200,(long)iVar1 << 4);\n      PTR_DAT_0010a200 = (undefined *)puVar6;\n    }" if (parenthesized_expression "(PTR_DAT_0010a200 == &DAT_0010a210)" ( (binary_expression "PTR_DAT_0010a200 == &DAT_0010a210" identifier == (pointer_expression "&DAT_0010a210" & identifier)) )) (compound_statement "{\n      puVar6 = (undefined8 *)FUN_0010575d(0,(long)iVar1 << 4);\n      puVar8 = PTR_DAT_0010a218;\n      PTR_DAT_0010a200 = (undefined *)puVar6;\n      *puVar6 = _DAT_0010a210;\n      puVar6[1] = puVar8;\n    }" { (expression_statement "puVar6 = (undefined8 *)FUN_0010575d(0,(long)iVar1 << 4);" (assignment_expression "puVar6 = (undefined8 *)FUN_0010575d(0,(long)iVar1 << 4)" identifier = (cast_expression "(undefined8 *)FUN_0010575d(0,(long)iVar1 << 4)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_0010575d(0,(long)iVar1 << 4)" identifier (argument_list "(0,(long)iVar1 << 4)" ( number_literal , (binary_expression "(long)iVar1 << 4" (cast_expression "(long)iVar1" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) << number_literal) ))))) ;) (expression_statement "puVar8 = PTR_DAT_0010a218;" (assignment_expression "puVar8 = PTR_DAT_0010a218" identifier = identifier) ;) (expression_statement "PTR_DAT_0010a200 = (undefined *)puVar6;" (assignment_expression "PTR_DAT_0010a200 = (undefined *)puVar6" identifier = (cast_expression "(undefined *)puVar6" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "*puVar6 = _DAT_0010a210;" (assignment_expression "*puVar6 = _DAT_0010a210" (pointer_expression "*puVar6" * identifier) = identifier) ;) (expression_statement "puVar6[1] = puVar8;" (assignment_expression "puVar6[1] = puVar8" (subscript_expression "puVar6[1]" identifier [ number_literal ]) = identifier) ;) }) (else_clause "else {\n      puVar6 = (undefined8 *)FUN_0010575d(PTR_DAT_0010a200,(long)iVar1 << 4);\n      PTR_DAT_0010a200 = (undefined *)puVar6;\n    }" else (compound_statement "{\n      puVar6 = (undefined8 *)FUN_0010575d(PTR_DAT_0010a200,(long)iVar1 << 4);\n      PTR_DAT_0010a200 = (undefined *)puVar6;\n    }" { (expression_statement "puVar6 = (undefined8 *)FUN_0010575d(PTR_DAT_0010a200,(long)iVar1 << 4);" (assignment_expression "puVar6 = (undefined8 *)FUN_0010575d(PTR_DAT_0010a200,(long)iVar1 << 4)" identifier = (cast_expression "(undefined8 *)FUN_0010575d(PTR_DAT_0010a200,(long)iVar1 << 4)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_0010575d(PTR_DAT_0010a200,(long)iVar1 << 4)" identifier (argument_list "(PTR_DAT_0010a200,(long)iVar1 << 4)" ( identifier , (binary_expression "(long)iVar1 << 4" (cast_expression "(long)iVar1" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) << number_literal) ))))) ;) (expression_statement "PTR_DAT_0010a200 = (undefined *)puVar6;" (assignment_expression "PTR_DAT_0010a200 = (undefined *)puVar6" identifier = (cast_expression "(undefined *)puVar6" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) }))) (expression_statement "memset(puVar6 + (long)DAT_0010a1f8 * 2,0,(long)(iVar1 - DAT_0010a1f8) << 4);" (call_expression "memset(puVar6 + (long)DAT_0010a1f8 * 2,0,(long)(iVar1 - DAT_0010a1f8) << 4)" identifier (argument_list "(puVar6 + (long)DAT_0010a1f8 * 2,0,(long)(iVar1 - DAT_0010a1f8) << 4)" ( (binary_expression "puVar6 + (long)DAT_0010a1f8 * 2" identifier + (binary_expression "(long)DAT_0010a1f8 * 2" (cast_expression "(long)DAT_0010a1f8" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) * number_literal)) , number_literal , (binary_expression "(long)(iVar1 - DAT_0010a1f8) << 4" (cast_expression "(long)(iVar1 - DAT_0010a1f8)" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (parenthesized_expression "(iVar1 - DAT_0010a1f8)" ( (binary_expression "iVar1 - DAT_0010a1f8" identifier - identifier) ))) << number_literal) ))) ;) (expression_statement "DAT_0010a1f8 = iVar1;" (assignment_expression "DAT_0010a1f8 = iVar1" identifier = identifier) ;) })) (expression_statement "puVar9 = puVar6 + (long)param_1 * 2;" (assignment_expression "puVar9 = puVar6 + (long)param_1 * 2" identifier = (binary_expression "puVar6 + (long)param_1 * 2" identifier + (binary_expression "(long)param_1 * 2" (cast_expression "(long)param_1" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) * number_literal))) ;) (expression_statement "uVar4 = *puVar9;" (assignment_expression "uVar4 = *puVar9" identifier = (pointer_expression "*puVar9" * identifier)) ;) (expression_statement "puVar8 = (undefined *)puVar9[1];" (assignment_expression "puVar8 = (undefined *)puVar9[1]" identifier = (cast_expression "(undefined *)puVar9[1]" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar9[1]" identifier [ number_literal ]))) ;) (expression_statement "uVar3 = param_4[1];" (assignment_expression "uVar3 = param_4[1]" identifier = (subscript_expression "param_4[1]" identifier [ number_literal ])) ;) (expression_statement "uVar7 = FUN_00103707(puVar8,uVar4,param_2,param_3,*param_4,uVar3 | 1,param_4 + 2,\n                       *(undefined8 *)(param_4 + 10),*(undefined8 *)(param_4 + 0xc));" (assignment_expression "uVar7 = FUN_00103707(puVar8,uVar4,param_2,param_3,*param_4,uVar3 | 1,param_4 + 2,\n                       *(undefined8 *)(param_4 + 10),*(undefined8 *)(param_4 + 0xc))" identifier = (call_expression "FUN_00103707(puVar8,uVar4,param_2,param_3,*param_4,uVar3 | 1,param_4 + 2,\n                       *(undefined8 *)(param_4 + 10),*(undefined8 *)(param_4 + 0xc))" identifier (argument_list "(puVar8,uVar4,param_2,param_3,*param_4,uVar3 | 1,param_4 + 2,\n                       *(undefined8 *)(param_4 + 10),*(undefined8 *)(param_4 + 0xc))" ( identifier , identifier , identifier , identifier , (pointer_expression "*param_4" * identifier) , (binary_expression "uVar3 | 1" identifier | number_literal) , (binary_expression "param_4 + 2" identifier + number_literal) , (pointer_expression "*(undefined8 *)(param_4 + 10)" * (cast_expression "(undefined8 *)(param_4 + 10)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_4 + 10)" ( (binary_expression "param_4 + 10" identifier + number_literal) )))) , (pointer_expression "*(undefined8 *)(param_4 + 0xc)" * (cast_expression "(undefined8 *)(param_4 + 0xc)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_4 + 0xc)" ( (binary_expression "param_4 + 0xc" identifier + number_literal) )))) )))) ;) (if_statement "if (uVar4 <= uVar7) {\n    uVar7 = uVar7 + 1;\n    *puVar9 = uVar7;\n    if (puVar8 != &DAT_0010a260) {\n      free(puVar8);\n    }\n    puVar8 = (undefined *)FUN_00105702(uVar7);\n    puVar9[1] = (ulong)puVar8;\n    FUN_00103707(puVar8,uVar7,param_2,param_3,*param_4,uVar3 | 1,param_4 + 2,\n                 *(undefined8 *)(param_4 + 10),*(undefined8 *)(param_4 + 0xc));\n  }" if (parenthesized_expression "(uVar4 <= uVar7)" ( (binary_expression "uVar4 <= uVar7" identifier <= identifier) )) (compound_statement "{\n    uVar7 = uVar7 + 1;\n    *puVar9 = uVar7;\n    if (puVar8 != &DAT_0010a260) {\n      free(puVar8);\n    }\n    puVar8 = (undefined *)FUN_00105702(uVar7);\n    puVar9[1] = (ulong)puVar8;\n    FUN_00103707(puVar8,uVar7,param_2,param_3,*param_4,uVar3 | 1,param_4 + 2,\n                 *(undefined8 *)(param_4 + 10),*(undefined8 *)(param_4 + 0xc));\n  }" { (expression_statement "uVar7 = uVar7 + 1;" (assignment_expression "uVar7 = uVar7 + 1" identifier = (binary_expression "uVar7 + 1" identifier + number_literal)) ;) (expression_statement "*puVar9 = uVar7;" (assignment_expression "*puVar9 = uVar7" (pointer_expression "*puVar9" * identifier) = identifier) ;) (if_statement "if (puVar8 != &DAT_0010a260) {\n      free(puVar8);\n    }" if (parenthesized_expression "(puVar8 != &DAT_0010a260)" ( (binary_expression "puVar8 != &DAT_0010a260" identifier != (pointer_expression "&DAT_0010a260" & identifier)) )) (compound_statement "{\n      free(puVar8);\n    }" { (expression_statement "free(puVar8);" (call_expression "free(puVar8)" identifier (argument_list "(puVar8)" ( identifier ))) ;) })) (expression_statement "puVar8 = (undefined *)FUN_00105702(uVar7);" (assignment_expression "puVar8 = (undefined *)FUN_00105702(uVar7)" identifier = (cast_expression "(undefined *)FUN_00105702(uVar7)" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00105702(uVar7)" identifier (argument_list "(uVar7)" ( identifier ))))) ;) (expression_statement "puVar9[1] = (ulong)puVar8;" (assignment_expression "puVar9[1] = (ulong)puVar8" (subscript_expression "puVar9[1]" identifier [ number_literal ]) = (cast_expression "(ulong)puVar8" ( (type_descriptor "ulong" type_identifier) ) identifier)) ;) (expression_statement "FUN_00103707(puVar8,uVar7,param_2,param_3,*param_4,uVar3 | 1,param_4 + 2,\n                 *(undefined8 *)(param_4 + 10),*(undefined8 *)(param_4 + 0xc));" (call_expression "FUN_00103707(puVar8,uVar7,param_2,param_3,*param_4,uVar3 | 1,param_4 + 2,\n                 *(undefined8 *)(param_4 + 10),*(undefined8 *)(param_4 + 0xc))" identifier (argument_list "(puVar8,uVar7,param_2,param_3,*param_4,uVar3 | 1,param_4 + 2,\n                 *(undefined8 *)(param_4 + 10),*(undefined8 *)(param_4 + 0xc))" ( identifier , identifier , identifier , identifier , (pointer_expression "*param_4" * identifier) , (binary_expression "uVar3 | 1" identifier | number_literal) , (binary_expression "param_4 + 2" identifier + number_literal) , (pointer_expression "*(undefined8 *)(param_4 + 10)" * (cast_expression "(undefined8 *)(param_4 + 10)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_4 + 10)" ( (binary_expression "param_4 + 10" identifier + number_literal) )))) , (pointer_expression "*(undefined8 *)(param_4 + 0xc)" * (cast_expression "(undefined8 *)(param_4 + 0xc)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_4 + 0xc)" ( (binary_expression "param_4 + 0xc" identifier + number_literal) )))) ))) ;) })) (expression_statement "*piVar5 = iVar2;" (assignment_expression "*piVar5 = iVar2" (pointer_expression "*piVar5" * identifier) = identifier) ;) (return_statement "return puVar8;" return identifier ;) })))
(translation_unit (function_definition TYPE (pointer_declarator * (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE (pointer_declarator * IDENT)) )))) (compound_statement { (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 (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT <= IDENT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (pointer_expression & IDENT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( LIT , (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) << LIT) ))))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( IDENT , (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) << LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) ;) }))) (expression_statement (call_expression IDENT (argument_list ( (binary_expression IDENT + (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) * LIT)) , LIT , (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) (parenthesized_expression ( (binary_expression IDENT - IDENT) ))) << LIT) ))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) * LIT))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT , IDENT , (pointer_expression * IDENT) , (binary_expression IDENT | LIT) , (binary_expression IDENT + LIT) , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT <= IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (pointer_expression & IDENT)) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( IDENT ))))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT , IDENT , (pointer_expression * IDENT) , (binary_expression IDENT | LIT) , (binary_expression IDENT + LIT) , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ))) ;) })) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (return_statement return IDENT ;) })))
(function_definition "undefined * FUN_0010475a(int param_1,undefined8 param_2,undefined8 param_3,undefined4 *param_4)\n\n{\n  int iVar1;\n  int iVar2;\n  uint uVar3;\n  ulong uVar4;\n  int *piVar5;\n  undefined8 *puVar6;\n  ulong uVar7;\n  undefined *puVar8;\n  ulong *puVar9;\n  \n  piVar5 = __errno_location();\n  iVar2 = *piVar5;\n  if (param_1 < 0) {\n                    \n    abort();\n  }\n  puVar6 = (undefined8 *)PTR_DAT_0010a200;\n  if (DAT_0010a1f8 <= param_1) {\n    if (param_1 == 0x7fffffff) {\n                    \n      FUN_00105944();\n    }\n    iVar1 = param_1 + 1;\n    if (PTR_DAT_0010a200 == &DAT_0010a210) {\n      puVar6 = (undefined8 *)FUN_0010575d(0,(long)iVar1 << 4);\n      puVar8 = PTR_DAT_0010a218;\n      PTR_DAT_0010a200 = (undefined *)puVar6;\n      *puVar6 = _DAT_0010a210;\n      puVar6[1] = puVar8;\n    }\n    else {\n      puVar6 = (undefined8 *)FUN_0010575d(PTR_DAT_0010a200,(long)iVar1 << 4);\n      PTR_DAT_0010a200 = (undefined *)puVar6;\n    }\n    memset(puVar6 + (long)DAT_0010a1f8 * 2,0,(long)(iVar1 - DAT_0010a1f8) << 4);\n    DAT_0010a1f8 = iVar1;\n  }\n  puVar9 = puVar6 + (long)param_1 * 2;\n  uVar4 = *puVar9;\n  puVar8 = (undefined *)puVar9[1];\n  uVar3 = param_4[1];\n  uVar7 = FUN_00103707(puVar8,uVar4,param_2,param_3,*param_4,uVar3 | 1,param_4 + 2,\n                       *(undefined8 *)(param_4 + 10),*(undefined8 *)(param_4 + 0xc));\n  if (uVar4 <= uVar7) {\n    uVar7 = uVar7 + 1;\n    *puVar9 = uVar7;\n    if (puVar8 != &DAT_0010a260) {\n      free(puVar8);\n    }\n    puVar8 = (undefined *)FUN_00105702(uVar7);\n    puVar9[1] = (ulong)puVar8;\n    FUN_00103707(puVar8,uVar7,param_2,param_3,*param_4,uVar3 | 1,param_4 + 2,\n                 *(undefined8 *)(param_4 + 10),*(undefined8 *)(param_4 + 0xc));\n  }\n  *piVar5 = iVar2;\n  return puVar8;\n}" (type_identifier "undefined") (pointer_declarator "* FUN_0010475a(int param_1,undefined8 param_2,undefined8 param_3,undefined4 *param_4)" (* "*") (function_declarator "FUN_0010475a(int param_1,undefined8 param_2,undefined8 param_3,undefined4 *param_4)" (identifier "FUN_0010475a") (parameter_list "(int param_1,undefined8 param_2,undefined8 param_3,undefined4 *param_4)" (( "(") (parameter_declaration "int param_1" (primitive_type "int") (identifier "param_1")) (, ",") (parameter_declaration "undefined8 param_2" (type_identifier "undefined8") (identifier "param_2")) (, ",") (parameter_declaration "undefined8 param_3" (type_identifier "undefined8") (identifier "param_3")) (, ",") (parameter_declaration "undefined4 *param_4" (type_identifier "undefined4") (pointer_declarator "*param_4" (* "*") (identifier "param_4"))) () ")")))) (compound_statement "{\n  int iVar1;\n  int iVar2;\n  uint uVar3;\n  ulong uVar4;\n  int *piVar5;\n  undefined8 *puVar6;\n  ulong uVar7;\n  undefined *puVar8;\n  ulong *puVar9;\n  \n  piVar5 = __errno_location();\n  iVar2 = *piVar5;\n  if (param_1 < 0) {\n                    \n    abort();\n  }\n  puVar6 = (undefined8 *)PTR_DAT_0010a200;\n  if (DAT_0010a1f8 <= param_1) {\n    if (param_1 == 0x7fffffff) {\n                    \n      FUN_00105944();\n    }\n    iVar1 = param_1 + 1;\n    if (PTR_DAT_0010a200 == &DAT_0010a210) {\n      puVar6 = (undefined8 *)FUN_0010575d(0,(long)iVar1 << 4);\n      puVar8 = PTR_DAT_0010a218;\n      PTR_DAT_0010a200 = (undefined *)puVar6;\n      *puVar6 = _DAT_0010a210;\n      puVar6[1] = puVar8;\n    }\n    else {\n      puVar6 = (undefined8 *)FUN_0010575d(PTR_DAT_0010a200,(long)iVar1 << 4);\n      PTR_DAT_0010a200 = (undefined *)puVar6;\n    }\n    memset(puVar6 + (long)DAT_0010a1f8 * 2,0,(long)(iVar1 - DAT_0010a1f8) << 4);\n    DAT_0010a1f8 = iVar1;\n  }\n  puVar9 = puVar6 + (long)param_1 * 2;\n  uVar4 = *puVar9;\n  puVar8 = (undefined *)puVar9[1];\n  uVar3 = param_4[1];\n  uVar7 = FUN_00103707(puVar8,uVar4,param_2,param_3,*param_4,uVar3 | 1,param_4 + 2,\n                       *(undefined8 *)(param_4 + 10),*(undefined8 *)(param_4 + 0xc));\n  if (uVar4 <= uVar7) {\n    uVar7 = uVar7 + 1;\n    *puVar9 = uVar7;\n    if (puVar8 != &DAT_0010a260) {\n      free(puVar8);\n    }\n    puVar8 = (undefined *)FUN_00105702(uVar7);\n    puVar9[1] = (ulong)puVar8;\n    FUN_00103707(puVar8,uVar7,param_2,param_3,*param_4,uVar3 | 1,param_4 + 2,\n                 *(undefined8 *)(param_4 + 10),*(undefined8 *)(param_4 + 0xc));\n  }\n  *piVar5 = iVar2;\n  return puVar8;\n}" ({ "{") (declaration "int iVar1;" (primitive_type "int") (identifier "iVar1") (; ";")) (declaration "int iVar2;" (primitive_type "int") (identifier "iVar2") (; ";")) (declaration "uint uVar3;" (type_identifier "uint") (identifier "uVar3") (; ";")) (declaration "ulong uVar4;" (type_identifier "ulong") (identifier "uVar4") (; ";")) (declaration "int *piVar5;" (primitive_type "int") (pointer_declarator "*piVar5" (* "*") (identifier "piVar5")) (; ";")) (declaration "undefined8 *puVar6;" (type_identifier "undefined8") (pointer_declarator "*puVar6" (* "*") (identifier "puVar6")) (; ";")) (declaration "ulong uVar7;" (type_identifier "ulong") (identifier "uVar7") (; ";")) (declaration "undefined *puVar8;" (type_identifier "undefined") (pointer_declarator "*puVar8" (* "*") (identifier "puVar8")) (; ";")) (declaration "ulong *puVar9;" (type_identifier "ulong") (pointer_declarator "*puVar9" (* "*") (identifier "puVar9")) (; ";")) (expression_statement "piVar5 = __errno_location();" (assignment_expression "piVar5 = __errno_location()" (identifier "piVar5") (= "=") (call_expression "__errno_location()" (identifier "__errno_location") (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "iVar2 = *piVar5;" (assignment_expression "iVar2 = *piVar5" (identifier "iVar2") (= "=") (pointer_expression "*piVar5" (* "*") (identifier "piVar5"))) (; ";")) (if_statement "if (param_1 < 0) {\n                    \n    abort();\n  }" (if "if") (parenthesized_expression "(param_1 < 0)" (( "(") (binary_expression "param_1 < 0" (identifier "param_1") (< "<") (number_literal "0")) () ")")) (compound_statement "{\n                    \n    abort();\n  }" ({ "{") (expression_statement "abort();" (call_expression "abort()" (identifier "abort") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (expression_statement "puVar6 = (undefined8 *)PTR_DAT_0010a200;" (assignment_expression "puVar6 = (undefined8 *)PTR_DAT_0010a200" (identifier "puVar6") (= "=") (cast_expression "(undefined8 *)PTR_DAT_0010a200" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_DAT_0010a200"))) (; ";")) (if_statement "if (DAT_0010a1f8 <= param_1) {\n    if (param_1 == 0x7fffffff) {\n                    \n      FUN_00105944();\n    }\n    iVar1 = param_1 + 1;\n    if (PTR_DAT_0010a200 == &DAT_0010a210) {\n      puVar6 = (undefined8 *)FUN_0010575d(0,(long)iVar1 << 4);\n      puVar8 = PTR_DAT_0010a218;\n      PTR_DAT_0010a200 = (undefined *)puVar6;\n      *puVar6 = _DAT_0010a210;\n      puVar6[1] = puVar8;\n    }\n    else {\n      puVar6 = (undefined8 *)FUN_0010575d(PTR_DAT_0010a200,(long)iVar1 << 4);\n      PTR_DAT_0010a200 = (undefined *)puVar6;\n    }\n    memset(puVar6 + (long)DAT_0010a1f8 * 2,0,(long)(iVar1 - DAT_0010a1f8) << 4);\n    DAT_0010a1f8 = iVar1;\n  }" (if "if") (parenthesized_expression "(DAT_0010a1f8 <= param_1)" (( "(") (binary_expression "DAT_0010a1f8 <= param_1" (identifier "DAT_0010a1f8") (<= "<=") (identifier "param_1")) () ")")) (compound_statement "{\n    if (param_1 == 0x7fffffff) {\n                    \n      FUN_00105944();\n    }\n    iVar1 = param_1 + 1;\n    if (PTR_DAT_0010a200 == &DAT_0010a210) {\n      puVar6 = (undefined8 *)FUN_0010575d(0,(long)iVar1 << 4);\n      puVar8 = PTR_DAT_0010a218;\n      PTR_DAT_0010a200 = (undefined *)puVar6;\n      *puVar6 = _DAT_0010a210;\n      puVar6[1] = puVar8;\n    }\n    else {\n      puVar6 = (undefined8 *)FUN_0010575d(PTR_DAT_0010a200,(long)iVar1 << 4);\n      PTR_DAT_0010a200 = (undefined *)puVar6;\n    }\n    memset(puVar6 + (long)DAT_0010a1f8 * 2,0,(long)(iVar1 - DAT_0010a1f8) << 4);\n    DAT_0010a1f8 = iVar1;\n  }" ({ "{") (if_statement "if (param_1 == 0x7fffffff) {\n                    \n      FUN_00105944();\n    }" (if "if") (parenthesized_expression "(param_1 == 0x7fffffff)" (( "(") (binary_expression "param_1 == 0x7fffffff" (identifier "param_1") (== "==") (number_literal "0x7fffffff")) () ")")) (compound_statement "{\n                    \n      FUN_00105944();\n    }" ({ "{") (expression_statement "FUN_00105944();" (call_expression "FUN_00105944()" (identifier "FUN_00105944") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (expression_statement "iVar1 = param_1 + 1;" (assignment_expression "iVar1 = param_1 + 1" (identifier "iVar1") (= "=") (binary_expression "param_1 + 1" (identifier "param_1") (+ "+") (number_literal "1"))) (; ";")) (if_statement "if (PTR_DAT_0010a200 == &DAT_0010a210) {\n      puVar6 = (undefined8 *)FUN_0010575d(0,(long)iVar1 << 4);\n      puVar8 = PTR_DAT_0010a218;\n      PTR_DAT_0010a200 = (undefined *)puVar6;\n      *puVar6 = _DAT_0010a210;\n      puVar6[1] = puVar8;\n    }\n    else {\n      puVar6 = (undefined8 *)FUN_0010575d(PTR_DAT_0010a200,(long)iVar1 << 4);\n      PTR_DAT_0010a200 = (undefined *)puVar6;\n    }" (if "if") (parenthesized_expression "(PTR_DAT_0010a200 == &DAT_0010a210)" (( "(") (binary_expression "PTR_DAT_0010a200 == &DAT_0010a210" (identifier "PTR_DAT_0010a200") (== "==") (pointer_expression "&DAT_0010a210" (& "&") (identifier "DAT_0010a210"))) () ")")) (compound_statement "{\n      puVar6 = (undefined8 *)FUN_0010575d(0,(long)iVar1 << 4);\n      puVar8 = PTR_DAT_0010a218;\n      PTR_DAT_0010a200 = (undefined *)puVar6;\n      *puVar6 = _DAT_0010a210;\n      puVar6[1] = puVar8;\n    }" ({ "{") (expression_statement "puVar6 = (undefined8 *)FUN_0010575d(0,(long)iVar1 << 4);" (assignment_expression "puVar6 = (undefined8 *)FUN_0010575d(0,(long)iVar1 << 4)" (identifier "puVar6") (= "=") (cast_expression "(undefined8 *)FUN_0010575d(0,(long)iVar1 << 4)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_0010575d(0,(long)iVar1 << 4)" (identifier "FUN_0010575d") (argument_list "(0,(long)iVar1 << 4)" (( "(") (number_literal "0") (, ",") (binary_expression "(long)iVar1 << 4" (cast_expression "(long)iVar1" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "iVar1")) (<< "<<") (number_literal "4")) () ")"))))) (; ";")) (expression_statement "puVar8 = PTR_DAT_0010a218;" (assignment_expression "puVar8 = PTR_DAT_0010a218" (identifier "puVar8") (= "=") (identifier "PTR_DAT_0010a218")) (; ";")) (expression_statement "PTR_DAT_0010a200 = (undefined *)puVar6;" (assignment_expression "PTR_DAT_0010a200 = (undefined *)puVar6" (identifier "PTR_DAT_0010a200") (= "=") (cast_expression "(undefined *)puVar6" (( "(") (type_descriptor "undefined *" (type_identifier "undefined") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "puVar6"))) (; ";")) (expression_statement "*puVar6 = _DAT_0010a210;" (assignment_expression "*puVar6 = _DAT_0010a210" (pointer_expression "*puVar6" (* "*") (identifier "puVar6")) (= "=") (identifier "_DAT_0010a210")) (; ";")) (expression_statement "puVar6[1] = puVar8;" (assignment_expression "puVar6[1] = puVar8" (subscript_expression "puVar6[1]" (identifier "puVar6") ([ "[") (number_literal "1") (] "]")) (= "=") (identifier "puVar8")) (; ";")) (} "}")) (else_clause "else {\n      puVar6 = (undefined8 *)FUN_0010575d(PTR_DAT_0010a200,(long)iVar1 << 4);\n      PTR_DAT_0010a200 = (undefined *)puVar6;\n    }" (else "else") (compound_statement "{\n      puVar6 = (undefined8 *)FUN_0010575d(PTR_DAT_0010a200,(long)iVar1 << 4);\n      PTR_DAT_0010a200 = (undefined *)puVar6;\n    }" ({ "{") (expression_statement "puVar6 = (undefined8 *)FUN_0010575d(PTR_DAT_0010a200,(long)iVar1 << 4);" (assignment_expression "puVar6 = (undefined8 *)FUN_0010575d(PTR_DAT_0010a200,(long)iVar1 << 4)" (identifier "puVar6") (= "=") (cast_expression "(undefined8 *)FUN_0010575d(PTR_DAT_0010a200,(long)iVar1 << 4)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_0010575d(PTR_DAT_0010a200,(long)iVar1 << 4)" (identifier "FUN_0010575d") (argument_list "(PTR_DAT_0010a200,(long)iVar1 << 4)" (( "(") (identifier "PTR_DAT_0010a200") (, ",") (binary_expression "(long)iVar1 << 4" (cast_expression "(long)iVar1" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "iVar1")) (<< "<<") (number_literal "4")) () ")"))))) (; ";")) (expression_statement "PTR_DAT_0010a200 = (undefined *)puVar6;" (assignment_expression "PTR_DAT_0010a200 = (undefined *)puVar6" (identifier "PTR_DAT_0010a200") (= "=") (cast_expression "(undefined *)puVar6" (( "(") (type_descriptor "undefined *" (type_identifier "undefined") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "puVar6"))) (; ";")) (} "}")))) (expression_statement "memset(puVar6 + (long)DAT_0010a1f8 * 2,0,(long)(iVar1 - DAT_0010a1f8) << 4);" (call_expression "memset(puVar6 + (long)DAT_0010a1f8 * 2,0,(long)(iVar1 - DAT_0010a1f8) << 4)" (identifier "memset") (argument_list "(puVar6 + (long)DAT_0010a1f8 * 2,0,(long)(iVar1 - DAT_0010a1f8) << 4)" (( "(") (binary_expression "puVar6 + (long)DAT_0010a1f8 * 2" (identifier "puVar6") (+ "+") (binary_expression "(long)DAT_0010a1f8 * 2" (cast_expression "(long)DAT_0010a1f8" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "DAT_0010a1f8")) (* "*") (number_literal "2"))) (, ",") (number_literal "0") (, ",") (binary_expression "(long)(iVar1 - DAT_0010a1f8) << 4" (cast_expression "(long)(iVar1 - DAT_0010a1f8)" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (parenthesized_expression "(iVar1 - DAT_0010a1f8)" (( "(") (binary_expression "iVar1 - DAT_0010a1f8" (identifier "iVar1") (- "-") (identifier "DAT_0010a1f8")) () ")"))) (<< "<<") (number_literal "4")) () ")"))) (; ";")) (expression_statement "DAT_0010a1f8 = iVar1;" (assignment_expression "DAT_0010a1f8 = iVar1" (identifier "DAT_0010a1f8") (= "=") (identifier "iVar1")) (; ";")) (} "}"))) (expression_statement "puVar9 = puVar6 + (long)param_1 * 2;" (assignment_expression "puVar9 = puVar6 + (long)param_1 * 2" (identifier "puVar9") (= "=") (binary_expression "puVar6 + (long)param_1 * 2" (identifier "puVar6") (+ "+") (binary_expression "(long)param_1 * 2" (cast_expression "(long)param_1" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "param_1")) (* "*") (number_literal "2")))) (; ";")) (expression_statement "uVar4 = *puVar9;" (assignment_expression "uVar4 = *puVar9" (identifier "uVar4") (= "=") (pointer_expression "*puVar9" (* "*") (identifier "puVar9"))) (; ";")) (expression_statement "puVar8 = (undefined *)puVar9[1];" (assignment_expression "puVar8 = (undefined *)puVar9[1]" (identifier "puVar8") (= "=") (cast_expression "(undefined *)puVar9[1]" (( "(") (type_descriptor "undefined *" (type_identifier "undefined") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "puVar9[1]" (identifier "puVar9") ([ "[") (number_literal "1") (] "]")))) (; ";")) (expression_statement "uVar3 = param_4[1];" (assignment_expression "uVar3 = param_4[1]" (identifier "uVar3") (= "=") (subscript_expression "param_4[1]" (identifier "param_4") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "uVar7 = FUN_00103707(puVar8,uVar4,param_2,param_3,*param_4,uVar3 | 1,param_4 + 2,\n                       *(undefined8 *)(param_4 + 10),*(undefined8 *)(param_4 + 0xc));" (assignment_expression "uVar7 = FUN_00103707(puVar8,uVar4,param_2,param_3,*param_4,uVar3 | 1,param_4 + 2,\n                       *(undefined8 *)(param_4 + 10),*(undefined8 *)(param_4 + 0xc))" (identifier "uVar7") (= "=") (call_expression "FUN_00103707(puVar8,uVar4,param_2,param_3,*param_4,uVar3 | 1,param_4 + 2,\n                       *(undefined8 *)(param_4 + 10),*(undefined8 *)(param_4 + 0xc))" (identifier "FUN_00103707") (argument_list "(puVar8,uVar4,param_2,param_3,*param_4,uVar3 | 1,param_4 + 2,\n                       *(undefined8 *)(param_4 + 10),*(undefined8 *)(param_4 + 0xc))" (( "(") (identifier "puVar8") (, ",") (identifier "uVar4") (, ",") (identifier "param_2") (, ",") (identifier "param_3") (, ",") (pointer_expression "*param_4" (* "*") (identifier "param_4")) (, ",") (binary_expression "uVar3 | 1" (identifier "uVar3") (| "|") (number_literal "1")) (, ",") (binary_expression "param_4 + 2" (identifier "param_4") (+ "+") (number_literal "2")) (, ",") (pointer_expression "*(undefined8 *)(param_4 + 10)" (* "*") (cast_expression "(undefined8 *)(param_4 + 10)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_4 + 10)" (( "(") (binary_expression "param_4 + 10" (identifier "param_4") (+ "+") (number_literal "10")) () ")")))) (, ",") (pointer_expression "*(undefined8 *)(param_4 + 0xc)" (* "*") (cast_expression "(undefined8 *)(param_4 + 0xc)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_4 + 0xc)" (( "(") (binary_expression "param_4 + 0xc" (identifier "param_4") (+ "+") (number_literal "0xc")) () ")")))) () ")")))) (; ";")) (if_statement "if (uVar4 <= uVar7) {\n    uVar7 = uVar7 + 1;\n    *puVar9 = uVar7;\n    if (puVar8 != &DAT_0010a260) {\n      free(puVar8);\n    }\n    puVar8 = (undefined *)FUN_00105702(uVar7);\n    puVar9[1] = (ulong)puVar8;\n    FUN_00103707(puVar8,uVar7,param_2,param_3,*param_4,uVar3 | 1,param_4 + 2,\n                 *(undefined8 *)(param_4 + 10),*(undefined8 *)(param_4 + 0xc));\n  }" (if "if") (parenthesized_expression "(uVar4 <= uVar7)" (( "(") (binary_expression "uVar4 <= uVar7" (identifier "uVar4") (<= "<=") (identifier "uVar7")) () ")")) (compound_statement "{\n    uVar7 = uVar7 + 1;\n    *puVar9 = uVar7;\n    if (puVar8 != &DAT_0010a260) {\n      free(puVar8);\n    }\n    puVar8 = (undefined *)FUN_00105702(uVar7);\n    puVar9[1] = (ulong)puVar8;\n    FUN_00103707(puVar8,uVar7,param_2,param_3,*param_4,uVar3 | 1,param_4 + 2,\n                 *(undefined8 *)(param_4 + 10),*(undefined8 *)(param_4 + 0xc));\n  }" ({ "{") (expression_statement "uVar7 = uVar7 + 1;" (assignment_expression "uVar7 = uVar7 + 1" (identifier "uVar7") (= "=") (binary_expression "uVar7 + 1" (identifier "uVar7") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "*puVar9 = uVar7;" (assignment_expression "*puVar9 = uVar7" (pointer_expression "*puVar9" (* "*") (identifier "puVar9")) (= "=") (identifier "uVar7")) (; ";")) (if_statement "if (puVar8 != &DAT_0010a260) {\n      free(puVar8);\n    }" (if "if") (parenthesized_expression "(puVar8 != &DAT_0010a260)" (( "(") (binary_expression "puVar8 != &DAT_0010a260" (identifier "puVar8") (!= "!=") (pointer_expression "&DAT_0010a260" (& "&") (identifier "DAT_0010a260"))) () ")")) (compound_statement "{\n      free(puVar8);\n    }" ({ "{") (expression_statement "free(puVar8);" (call_expression "free(puVar8)" (identifier "free") (argument_list "(puVar8)" (( "(") (identifier "puVar8") () ")"))) (; ";")) (} "}"))) (expression_statement "puVar8 = (undefined *)FUN_00105702(uVar7);" (assignment_expression "puVar8 = (undefined *)FUN_00105702(uVar7)" (identifier "puVar8") (= "=") (cast_expression "(undefined *)FUN_00105702(uVar7)" (( "(") (type_descriptor "undefined *" (type_identifier "undefined") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_00105702(uVar7)" (identifier "FUN_00105702") (argument_list "(uVar7)" (( "(") (identifier "uVar7") () ")"))))) (; ";")) (expression_statement "puVar9[1] = (ulong)puVar8;" (assignment_expression "puVar9[1] = (ulong)puVar8" (subscript_expression "puVar9[1]" (identifier "puVar9") ([ "[") (number_literal "1") (] "]")) (= "=") (cast_expression "(ulong)puVar8" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "puVar8"))) (; ";")) (expression_statement "FUN_00103707(puVar8,uVar7,param_2,param_3,*param_4,uVar3 | 1,param_4 + 2,\n                 *(undefined8 *)(param_4 + 10),*(undefined8 *)(param_4 + 0xc));" (call_expression "FUN_00103707(puVar8,uVar7,param_2,param_3,*param_4,uVar3 | 1,param_4 + 2,\n                 *(undefined8 *)(param_4 + 10),*(undefined8 *)(param_4 + 0xc))" (identifier "FUN_00103707") (argument_list "(puVar8,uVar7,param_2,param_3,*param_4,uVar3 | 1,param_4 + 2,\n                 *(undefined8 *)(param_4 + 10),*(undefined8 *)(param_4 + 0xc))" (( "(") (identifier "puVar8") (, ",") (identifier "uVar7") (, ",") (identifier "param_2") (, ",") (identifier "param_3") (, ",") (pointer_expression "*param_4" (* "*") (identifier "param_4")) (, ",") (binary_expression "uVar3 | 1" (identifier "uVar3") (| "|") (number_literal "1")) (, ",") (binary_expression "param_4 + 2" (identifier "param_4") (+ "+") (number_literal "2")) (, ",") (pointer_expression "*(undefined8 *)(param_4 + 10)" (* "*") (cast_expression "(undefined8 *)(param_4 + 10)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_4 + 10)" (( "(") (binary_expression "param_4 + 10" (identifier "param_4") (+ "+") (number_literal "10")) () ")")))) (, ",") (pointer_expression "*(undefined8 *)(param_4 + 0xc)" (* "*") (cast_expression "(undefined8 *)(param_4 + 0xc)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_4 + 0xc)" (( "(") (binary_expression "param_4 + 0xc" (identifier "param_4") (+ "+") (number_literal "0xc")) () ")")))) () ")"))) (; ";")) (} "}"))) (expression_statement "*piVar5 = iVar2;" (assignment_expression "*piVar5 = iVar2" (pointer_expression "*piVar5" (* "*") (identifier "piVar5")) (= "=") (identifier "iVar2")) (; ";")) (return_statement "return puVar8;" (return "return") (identifier "puVar8") (; ";")) (} "}")))

char * function_1(type_1 var_2,char *arg,size_t argsize,type_2 *options)

{
  int iVar1;
  type_3 var_11;
  int *piVar2;
  type_4 *var_8;
  size_t var_12;
  char *var_13;
  type_1 var_9;
  
  piVar2 = var_1();
  iVar1 = *piVar2;
  if (var_2 < L'\0') {
                    /* WARNING: Subroutine does not return */
    var_3();
  }
  var_8 = type_4;
  if (var_4 <= var_2) {
    if (var_2 == L'\x7fffffff') {
                    /* WARNING: Subroutine does not return */
      var_5();
    }
    var_9 = var_2 + L'\x01';
    if (type_4 == &slotvec0) {
      var_8 = (type_4 *)var_6((void *)0x0,(long)var_9 << 4);
      type_4 = var_8;
      *var_8 = slotvec0;
    }
    else {
      var_8 = (type_4 *)var_6(type_4,(long)var_9 << 4);
      type_4 = var_8;
    }
    var_7(var_8 + var_4,0,(long)(var_9 - var_4) << 4);
    var_4 = var_9;
  }
  var_8 = var_8 + var_2;
  var_11 = var_8->size;
  var_13 = var_8->val;
  var_9 = options->flags | 1;
  var_12 = var_10
                    (var_13,var_11,arg,argsize,options->style,var_9,options->quote_these_too,
                     options->left_quote,options->right_quote);
  if (var_11 <= var_12) {
    var_12 = var_12 + 1;
    var_8->size = var_12;
    if (var_13 != var_14) {
      var_15(var_13);
    }
    var_13 = (char *)var_16(var_12);
    var_8->val = var_13;
    var_10
              (var_13,var_12,arg,argsize,options->style,var_9,options->quote_these_too,
               options->left_quote,options->right_quote);
  }
  *piVar2 = iVar1;
  return var_13;
}


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

/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

undefined * MASKED(int param_1,undefined8 param_2,undefined8 param_3,undefined4 *param_4)

{
  int iVar1;
  int iVar2;
  uint uVar3;
  ulong uVar4;
  int *piVar5;
  undefined8 *puVar6;
  ulong uVar7;
  undefined *puVar8;
  ulong *puVar9;
  
  piVar5 = __errno_location();
  iVar2 = *piVar5;
  if (param_1 < 0) {
                    /* WARNING: Subroutine does not return */
    abort();
  }
  puVar6 = (undefined8 *)PTR_DAT_0010a200;
  if (DAT_0010a1f8 <= param_1) {
    if (param_1 == 0x7fffffff) {
                    /* WARNING: Subroutine does not return */
      FUN_00105944();
    }
    iVar1 = param_1 + 1;
    if (PTR_DAT_0010a200 == &DAT_0010a210) {
      puVar6 = (undefined8 *)FUN_0010575d(0,(long)iVar1 << 4);
      puVar8 = PTR_DAT_0010a218;
      PTR_DAT_0010a200 = (undefined *)puVar6;
      *puVar6 = _DAT_0010a210;
      puVar6[1] = puVar8;
    }
    else {
      puVar6 = (undefined8 *)FUN_0010575d(PTR_DAT_0010a200,(long)iVar1 << 4);
      PTR_DAT_0010a200 = (undefined *)puVar6;
    }
    memset(puVar6 + (long)DAT_0010a1f8 * 2,0,(long)(iVar1 - DAT_0010a1f8) << 4);
    DAT_0010a1f8 = iVar1;
  }
  puVar9 = puVar6 + (long)param_1 * 2;
  uVar4 = *puVar9;
  puVar8 = (undefined *)puVar9[1];
  uVar3 = param_4[1];
  uVar7 = FUN_00103707(puVar8,uVar4,param_2,param_3,*param_4,uVar3 | 1,param_4 + 2,
                       *(undefined8 *)(param_4 + 10),*(undefined8 *)(param_4 + 0xc));
  if (uVar4 <= uVar7) {
    uVar7 = uVar7 + 1;
    *puVar9 = uVar7;
    if (puVar8 != &DAT_0010a260) {
      free(puVar8);
    }
    puVar8 = (undefined *)FUN_00105702(uVar7);
    puVar9[1] = (ulong)puVar8;
    FUN_00103707(puVar8,uVar7,param_2,param_3,*param_4,uVar3 | 1,param_4 + 2,
                 *(undefined8 *)(param_4 + 10),*(undefined8 *)(param_4 + 0xc));
  }
  *piVar5 = iVar2;
  return puVar8;
}

