
/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */
/* WARNING: Unknown calling convention */

COMPSPEC * compspec_copy(COMPSPEC *cs)

{
  COMPSPEC *pCVar1;
  size_t sVar2;
  char *pcVar3;
  char *pcVar4;
  
  pCVar1 = (COMPSPEC *)xmalloc(0x2c);
  pcVar4 = cs->globpat;
  pCVar1->refcount = 1;
  pCVar1->actions = cs->actions;
  pCVar1->options = cs->options;
  if (pcVar4 != (char *)0x0) {
    sVar2 = strlen(pcVar4);
    pcVar3 = (char *)xmalloc(sVar2 + 1);
    pcVar4 = strcpy(pcVar3,pcVar4);
  }
  pCVar1->globpat = pcVar4;
  pcVar4 = cs->words;
  if (pcVar4 != (char *)0x0) {
    sVar2 = strlen(pcVar4);
    pcVar3 = (char *)xmalloc(sVar2 + 1);
    pcVar4 = strcpy(pcVar3,pcVar4);
  }
  pCVar1->words = pcVar4;
  pcVar4 = cs->prefix;
  if (pcVar4 != (char *)0x0) {
    sVar2 = strlen(pcVar4);
    pcVar3 = (char *)xmalloc(sVar2 + 1);
    pcVar4 = strcpy(pcVar3,pcVar4);
  }
  pCVar1->prefix = pcVar4;
  pcVar4 = cs->suffix;
  if (pcVar4 != (char *)0x0) {
    sVar2 = strlen(pcVar4);
    pcVar3 = (char *)xmalloc(sVar2 + 1);
    pcVar4 = strcpy(pcVar3,pcVar4);
  }
  pCVar1->suffix = pcVar4;
  pcVar4 = cs->funcname;
  if (pcVar4 != (char *)0x0) {
    sVar2 = strlen(pcVar4);
    pcVar3 = (char *)xmalloc(sVar2 + 1);
    pcVar4 = strcpy(pcVar3,pcVar4);
  }
  pCVar1->funcname = pcVar4;
  pcVar4 = cs->command;
  if (pcVar4 != (char *)0x0) {
    sVar2 = strlen(pcVar4);
    pcVar3 = (char *)xmalloc(sVar2 + 1);
    pcVar4 = strcpy(pcVar3,pcVar4);
  }
  pCVar1->command = pcVar4;
  pcVar4 = cs->lcommand;
  if (pcVar4 != (char *)0x0) {
    sVar2 = strlen(pcVar4);
    pcVar3 = (char *)xmalloc(sVar2 + 1);
    pcVar4 = strcpy(pcVar3,pcVar4);
  }
  pcVar3 = cs->filterpat;
  pCVar1->lcommand = pcVar4;
  if (pcVar3 != (char *)0x0) {
    sVar2 = strlen(pcVar3);
    pcVar4 = (char *)xmalloc(sVar2 + 1);
    pcVar3 = strcpy(pcVar4,pcVar3);
  }
  pCVar1->filterpat = pcVar3;
  return pCVar1;
}



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

undefined4 * compspec_copy(int param_1)

{
  undefined4 *puVar1;
  size_t sVar2;
  char *pcVar3;
  char *pcVar4;
  
  puVar1 = (undefined4 *)xmalloc(0x2c);
  pcVar4 = *(char **)(param_1 + 0xc);
  *puVar1 = 1;
  puVar1[1] = *(undefined4 *)(param_1 + 4);
  puVar1[2] = *(undefined4 *)(param_1 + 8);
  if (pcVar4 != (char *)0x0) {
    sVar2 = strlen(pcVar4);
    pcVar3 = (char *)xmalloc(sVar2 + 1);
    pcVar4 = strcpy(pcVar3,pcVar4);
  }
  puVar1[3] = pcVar4;
  pcVar4 = *(char **)(param_1 + 0x10);
  if (pcVar4 != (char *)0x0) {
    sVar2 = strlen(pcVar4);
    pcVar3 = (char *)xmalloc(sVar2 + 1);
    pcVar4 = strcpy(pcVar3,pcVar4);
  }
  puVar1[4] = pcVar4;
  pcVar4 = *(char **)(param_1 + 0x14);
  if (pcVar4 != (char *)0x0) {
    sVar2 = strlen(pcVar4);
    pcVar3 = (char *)xmalloc(sVar2 + 1);
    pcVar4 = strcpy(pcVar3,pcVar4);
  }
  puVar1[5] = pcVar4;
  pcVar4 = *(char **)(param_1 + 0x18);
  if (pcVar4 != (char *)0x0) {
    sVar2 = strlen(pcVar4);
    pcVar3 = (char *)xmalloc(sVar2 + 1);
    pcVar4 = strcpy(pcVar3,pcVar4);
  }
  puVar1[6] = pcVar4;
  pcVar4 = *(char **)(param_1 + 0x1c);
  if (pcVar4 != (char *)0x0) {
    sVar2 = strlen(pcVar4);
    pcVar3 = (char *)xmalloc(sVar2 + 1);
    pcVar4 = strcpy(pcVar3,pcVar4);
  }
  puVar1[7] = pcVar4;
  pcVar4 = *(char **)(param_1 + 0x20);
  if (pcVar4 != (char *)0x0) {
    sVar2 = strlen(pcVar4);
    pcVar3 = (char *)xmalloc(sVar2 + 1);
    pcVar4 = strcpy(pcVar3,pcVar4);
  }
  puVar1[8] = pcVar4;
  pcVar4 = *(char **)(param_1 + 0x24);
  if (pcVar4 != (char *)0x0) {
    sVar2 = strlen(pcVar4);
    pcVar3 = (char *)xmalloc(sVar2 + 1);
    pcVar4 = strcpy(pcVar3,pcVar4);
  }
  pcVar3 = *(char **)(param_1 + 0x28);
  puVar1[9] = pcVar4;
  if (pcVar3 != (char *)0x0) {
    sVar2 = strlen(pcVar3);
    pcVar4 = (char *)xmalloc(sVar2 + 1);
    pcVar3 = strcpy(pcVar4,pcVar3);
  }
  puVar1[10] = pcVar3;
  return puVar1;
}


PUSH EBP
PUSH EDI
PUSH ESI
PUSH EBX
CALL 0x00031ed0
ADD EBX,0xb1277
SUB ESP,0x18
MOV EDI,dword ptr [ESP + 0x2c]
PUSH 0x2c
CALL 0x00099200
MOV EBP,dword ptr [EDI + 0xc]
ADD ESP,0x10
MOV ESI,EAX
MOV dword ptr [EAX],0x1
MOV EAX,dword ptr [EDI + 0x4]
MOV dword ptr [ESI + 0x4],EAX
MOV EAX,dword ptr [EDI + 0x8]
MOV dword ptr [ESI + 0x8],EAX
TEST EBP,EBP
JZ 0x00098ddd
SUB ESP,0xc
PUSH EBP
CALL 0x0002f760
ADD EAX,0x1
MOV dword ptr [ESP],EAX
CALL 0x00099200
POP EDX
POP ECX
PUSH EBP
PUSH EAX
CALL 0x0002f580
ADD ESP,0x10
MOV EBP,EAX
MOV dword ptr [ESI + 0xc],EBP
MOV EBP,dword ptr [EDI + 0x10]
TEST EBP,EBP
JZ 0x00098e09
SUB ESP,0xc
PUSH EBP
CALL 0x0002f760
ADD EAX,0x1
MOV dword ptr [ESP],EAX
CALL 0x00099200
POP EDX
POP ECX
PUSH EBP
PUSH EAX
CALL 0x0002f580
ADD ESP,0x10
MOV EBP,EAX
MOV dword ptr [ESI + 0x10],EBP
MOV EBP,dword ptr [EDI + 0x14]
TEST EBP,EBP
JZ 0x00098e35
SUB ESP,0xc
PUSH EBP
CALL 0x0002f760
ADD EAX,0x1
MOV dword ptr [ESP],EAX
CALL 0x00099200
POP EDX
POP ECX
PUSH EBP
PUSH EAX
CALL 0x0002f580
ADD ESP,0x10
MOV EBP,EAX
MOV dword ptr [ESI + 0x14],EBP
MOV EBP,dword ptr [EDI + 0x18]
TEST EBP,EBP
JZ 0x00098e61
SUB ESP,0xc
PUSH EBP
CALL 0x0002f760
ADD EAX,0x1
MOV dword ptr [ESP],EAX
CALL 0x00099200
POP EDX
POP ECX
PUSH EBP
PUSH EAX
CALL 0x0002f580
ADD ESP,0x10
MOV EBP,EAX
MOV dword ptr [ESI + 0x18],EBP
MOV EBP,dword ptr [EDI + 0x1c]
TEST EBP,EBP
JZ 0x00098e8d
SUB ESP,0xc
PUSH EBP
CALL 0x0002f760
ADD EAX,0x1
MOV dword ptr [ESP],EAX
CALL 0x00099200
POP EDX
POP ECX
PUSH EBP
PUSH EAX
CALL 0x0002f580
ADD ESP,0x10
MOV EBP,EAX
MOV dword ptr [ESI + 0x1c],EBP
MOV EBP,dword ptr [EDI + 0x20]
TEST EBP,EBP
JZ 0x00098eb9
SUB ESP,0xc
PUSH EBP
CALL 0x0002f760
ADD EAX,0x1
MOV dword ptr [ESP],EAX
CALL 0x00099200
POP EDX
POP ECX
PUSH EBP
PUSH EAX
CALL 0x0002f580
ADD ESP,0x10
MOV EBP,EAX
MOV dword ptr [ESI + 0x20],EBP
MOV EBP,dword ptr [EDI + 0x24]
TEST EBP,EBP
JZ 0x00098ee5
SUB ESP,0xc
PUSH EBP
CALL 0x0002f760
ADD EAX,0x1
MOV dword ptr [ESP],EAX
CALL 0x00099200
POP EDX
POP ECX
PUSH EBP
PUSH EAX
CALL 0x0002f580
ADD ESP,0x10
MOV EBP,EAX
MOV EDI,dword ptr [EDI + 0x28]
MOV dword ptr [ESI + 0x24],EBP
TEST EDI,EDI
JZ 0x00098f11
SUB ESP,0xc
PUSH EDI
CALL 0x0002f760
ADD EAX,0x1
MOV dword ptr [ESP],EAX
CALL 0x00099200
POP EDX
POP ECX
PUSH EDI
PUSH EAX
CALL 0x0002f580
ADD ESP,0x10
MOV EDI,EAX
MOV dword ptr [ESI + 0x28],EDI
ADD ESP,0xc
MOV EAX,ESI
POP EBX
POP ESI
POP EDI
POP EBP
RET
(translation_unit "/* WARNING: Function: __i686.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n\nundefined4 * compspec_copy(int param_1)\n\n{\n  undefined4 *puVar1;\n  size_t sVar2;\n  char *pcVar3;\n  char *pcVar4;\n  \n  puVar1 = (undefined4 *)xmalloc(0x2c);\n  pcVar4 = *(char **)(param_1 + 0xc);\n  *puVar1 = 1;\n  puVar1[1] = *(undefined4 *)(param_1 + 4);\n  puVar1[2] = *(undefined4 *)(param_1 + 8);\n  if (pcVar4 != (char *)0x0) {\n    sVar2 = strlen(pcVar4);\n    pcVar3 = (char *)xmalloc(sVar2 + 1);\n    pcVar4 = strcpy(pcVar3,pcVar4);\n  }\n  puVar1[3] = pcVar4;\n  pcVar4 = *(char **)(param_1 + 0x10);\n  if (pcVar4 != (char *)0x0) {\n    sVar2 = strlen(pcVar4);\n    pcVar3 = (char *)xmalloc(sVar2 + 1);\n    pcVar4 = strcpy(pcVar3,pcVar4);\n  }\n  puVar1[4] = pcVar4;\n  pcVar4 = *(char **)(param_1 + 0x14);\n  if (pcVar4 != (char *)0x0) {\n    sVar2 = strlen(pcVar4);\n    pcVar3 = (char *)xmalloc(sVar2 + 1);\n    pcVar4 = strcpy(pcVar3,pcVar4);\n  }\n  puVar1[5] = pcVar4;\n  pcVar4 = *(char **)(param_1 + 0x18);\n  if (pcVar4 != (char *)0x0) {\n    sVar2 = strlen(pcVar4);\n    pcVar3 = (char *)xmalloc(sVar2 + 1);\n    pcVar4 = strcpy(pcVar3,pcVar4);\n  }\n  puVar1[6] = pcVar4;\n  pcVar4 = *(char **)(param_1 + 0x1c);\n  if (pcVar4 != (char *)0x0) {\n    sVar2 = strlen(pcVar4);\n    pcVar3 = (char *)xmalloc(sVar2 + 1);\n    pcVar4 = strcpy(pcVar3,pcVar4);\n  }\n  puVar1[7] = pcVar4;\n  pcVar4 = *(char **)(param_1 + 0x20);\n  if (pcVar4 != (char *)0x0) {\n    sVar2 = strlen(pcVar4);\n    pcVar3 = (char *)xmalloc(sVar2 + 1);\n    pcVar4 = strcpy(pcVar3,pcVar4);\n  }\n  puVar1[8] = pcVar4;\n  pcVar4 = *(char **)(param_1 + 0x24);\n  if (pcVar4 != (char *)0x0) {\n    sVar2 = strlen(pcVar4);\n    pcVar3 = (char *)xmalloc(sVar2 + 1);\n    pcVar4 = strcpy(pcVar3,pcVar4);\n  }\n  pcVar3 = *(char **)(param_1 + 0x28);\n  puVar1[9] = pcVar4;\n  if (pcVar3 != (char *)0x0) {\n    sVar2 = strlen(pcVar3);\n    pcVar4 = (char *)xmalloc(sVar2 + 1);\n    pcVar3 = strcpy(pcVar4,pcVar3);\n  }\n  puVar1[10] = pcVar3;\n  return puVar1;\n}\n\n" comment (function_definition "undefined4 * compspec_copy(int param_1)\n\n{\n  undefined4 *puVar1;\n  size_t sVar2;\n  char *pcVar3;\n  char *pcVar4;\n  \n  puVar1 = (undefined4 *)xmalloc(0x2c);\n  pcVar4 = *(char **)(param_1 + 0xc);\n  *puVar1 = 1;\n  puVar1[1] = *(undefined4 *)(param_1 + 4);\n  puVar1[2] = *(undefined4 *)(param_1 + 8);\n  if (pcVar4 != (char *)0x0) {\n    sVar2 = strlen(pcVar4);\n    pcVar3 = (char *)xmalloc(sVar2 + 1);\n    pcVar4 = strcpy(pcVar3,pcVar4);\n  }\n  puVar1[3] = pcVar4;\n  pcVar4 = *(char **)(param_1 + 0x10);\n  if (pcVar4 != (char *)0x0) {\n    sVar2 = strlen(pcVar4);\n    pcVar3 = (char *)xmalloc(sVar2 + 1);\n    pcVar4 = strcpy(pcVar3,pcVar4);\n  }\n  puVar1[4] = pcVar4;\n  pcVar4 = *(char **)(param_1 + 0x14);\n  if (pcVar4 != (char *)0x0) {\n    sVar2 = strlen(pcVar4);\n    pcVar3 = (char *)xmalloc(sVar2 + 1);\n    pcVar4 = strcpy(pcVar3,pcVar4);\n  }\n  puVar1[5] = pcVar4;\n  pcVar4 = *(char **)(param_1 + 0x18);\n  if (pcVar4 != (char *)0x0) {\n    sVar2 = strlen(pcVar4);\n    pcVar3 = (char *)xmalloc(sVar2 + 1);\n    pcVar4 = strcpy(pcVar3,pcVar4);\n  }\n  puVar1[6] = pcVar4;\n  pcVar4 = *(char **)(param_1 + 0x1c);\n  if (pcVar4 != (char *)0x0) {\n    sVar2 = strlen(pcVar4);\n    pcVar3 = (char *)xmalloc(sVar2 + 1);\n    pcVar4 = strcpy(pcVar3,pcVar4);\n  }\n  puVar1[7] = pcVar4;\n  pcVar4 = *(char **)(param_1 + 0x20);\n  if (pcVar4 != (char *)0x0) {\n    sVar2 = strlen(pcVar4);\n    pcVar3 = (char *)xmalloc(sVar2 + 1);\n    pcVar4 = strcpy(pcVar3,pcVar4);\n  }\n  puVar1[8] = pcVar4;\n  pcVar4 = *(char **)(param_1 + 0x24);\n  if (pcVar4 != (char *)0x0) {\n    sVar2 = strlen(pcVar4);\n    pcVar3 = (char *)xmalloc(sVar2 + 1);\n    pcVar4 = strcpy(pcVar3,pcVar4);\n  }\n  pcVar3 = *(char **)(param_1 + 0x28);\n  puVar1[9] = pcVar4;\n  if (pcVar3 != (char *)0x0) {\n    sVar2 = strlen(pcVar3);\n    pcVar4 = (char *)xmalloc(sVar2 + 1);\n    pcVar3 = strcpy(pcVar4,pcVar3);\n  }\n  puVar1[10] = pcVar3;\n  return puVar1;\n}" type_identifier (pointer_declarator "* compspec_copy(int param_1)" * (function_declarator "compspec_copy(int param_1)" identifier (parameter_list "(int param_1)" ( (parameter_declaration "int param_1" primitive_type identifier) )))) (compound_statement "{\n  undefined4 *puVar1;\n  size_t sVar2;\n  char *pcVar3;\n  char *pcVar4;\n  \n  puVar1 = (undefined4 *)xmalloc(0x2c);\n  pcVar4 = *(char **)(param_1 + 0xc);\n  *puVar1 = 1;\n  puVar1[1] = *(undefined4 *)(param_1 + 4);\n  puVar1[2] = *(undefined4 *)(param_1 + 8);\n  if (pcVar4 != (char *)0x0) {\n    sVar2 = strlen(pcVar4);\n    pcVar3 = (char *)xmalloc(sVar2 + 1);\n    pcVar4 = strcpy(pcVar3,pcVar4);\n  }\n  puVar1[3] = pcVar4;\n  pcVar4 = *(char **)(param_1 + 0x10);\n  if (pcVar4 != (char *)0x0) {\n    sVar2 = strlen(pcVar4);\n    pcVar3 = (char *)xmalloc(sVar2 + 1);\n    pcVar4 = strcpy(pcVar3,pcVar4);\n  }\n  puVar1[4] = pcVar4;\n  pcVar4 = *(char **)(param_1 + 0x14);\n  if (pcVar4 != (char *)0x0) {\n    sVar2 = strlen(pcVar4);\n    pcVar3 = (char *)xmalloc(sVar2 + 1);\n    pcVar4 = strcpy(pcVar3,pcVar4);\n  }\n  puVar1[5] = pcVar4;\n  pcVar4 = *(char **)(param_1 + 0x18);\n  if (pcVar4 != (char *)0x0) {\n    sVar2 = strlen(pcVar4);\n    pcVar3 = (char *)xmalloc(sVar2 + 1);\n    pcVar4 = strcpy(pcVar3,pcVar4);\n  }\n  puVar1[6] = pcVar4;\n  pcVar4 = *(char **)(param_1 + 0x1c);\n  if (pcVar4 != (char *)0x0) {\n    sVar2 = strlen(pcVar4);\n    pcVar3 = (char *)xmalloc(sVar2 + 1);\n    pcVar4 = strcpy(pcVar3,pcVar4);\n  }\n  puVar1[7] = pcVar4;\n  pcVar4 = *(char **)(param_1 + 0x20);\n  if (pcVar4 != (char *)0x0) {\n    sVar2 = strlen(pcVar4);\n    pcVar3 = (char *)xmalloc(sVar2 + 1);\n    pcVar4 = strcpy(pcVar3,pcVar4);\n  }\n  puVar1[8] = pcVar4;\n  pcVar4 = *(char **)(param_1 + 0x24);\n  if (pcVar4 != (char *)0x0) {\n    sVar2 = strlen(pcVar4);\n    pcVar3 = (char *)xmalloc(sVar2 + 1);\n    pcVar4 = strcpy(pcVar3,pcVar4);\n  }\n  pcVar3 = *(char **)(param_1 + 0x28);\n  puVar1[9] = pcVar4;\n  if (pcVar3 != (char *)0x0) {\n    sVar2 = strlen(pcVar3);\n    pcVar4 = (char *)xmalloc(sVar2 + 1);\n    pcVar3 = strcpy(pcVar4,pcVar3);\n  }\n  puVar1[10] = pcVar3;\n  return puVar1;\n}" { (declaration "undefined4 *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "size_t sVar2;" primitive_type identifier ;) (declaration "char *pcVar3;" primitive_type (pointer_declarator "*pcVar3" * identifier) ;) (declaration "char *pcVar4;" primitive_type (pointer_declarator "*pcVar4" * identifier) ;) (expression_statement "puVar1 = (undefined4 *)xmalloc(0x2c);" (assignment_expression "puVar1 = (undefined4 *)xmalloc(0x2c)" identifier = (cast_expression "(undefined4 *)xmalloc(0x2c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "xmalloc(0x2c)" identifier (argument_list "(0x2c)" ( number_literal ))))) ;) (expression_statement "pcVar4 = *(char **)(param_1 + 0xc);" (assignment_expression "pcVar4 = *(char **)(param_1 + 0xc)" identifier = (pointer_expression "*(char **)(param_1 + 0xc)" * (cast_expression "(char **)(param_1 + 0xc)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0xc)" ( (binary_expression "param_1 + 0xc" identifier + number_literal) ))))) ;) (expression_statement "*puVar1 = 1;" (assignment_expression "*puVar1 = 1" (pointer_expression "*puVar1" * identifier) = number_literal) ;) (expression_statement "puVar1[1] = *(undefined4 *)(param_1 + 4);" (assignment_expression "puVar1[1] = *(undefined4 *)(param_1 + 4)" (subscript_expression "puVar1[1]" identifier [ number_literal ]) = (pointer_expression "*(undefined4 *)(param_1 + 4)" * (cast_expression "(undefined4 *)(param_1 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) ))))) ;) (expression_statement "puVar1[2] = *(undefined4 *)(param_1 + 8);" (assignment_expression "puVar1[2] = *(undefined4 *)(param_1 + 8)" (subscript_expression "puVar1[2]" identifier [ number_literal ]) = (pointer_expression "*(undefined4 *)(param_1 + 8)" * (cast_expression "(undefined4 *)(param_1 + 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) ))))) ;) (if_statement "if (pcVar4 != (char *)0x0) {\n    sVar2 = strlen(pcVar4);\n    pcVar3 = (char *)xmalloc(sVar2 + 1);\n    pcVar4 = strcpy(pcVar3,pcVar4);\n  }" if (parenthesized_expression "(pcVar4 != (char *)0x0)" ( (binary_expression "pcVar4 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    sVar2 = strlen(pcVar4);\n    pcVar3 = (char *)xmalloc(sVar2 + 1);\n    pcVar4 = strcpy(pcVar3,pcVar4);\n  }" { (expression_statement "sVar2 = strlen(pcVar4);" (assignment_expression "sVar2 = strlen(pcVar4)" identifier = (call_expression "strlen(pcVar4)" identifier (argument_list "(pcVar4)" ( identifier )))) ;) (expression_statement "pcVar3 = (char *)xmalloc(sVar2 + 1);" (assignment_expression "pcVar3 = (char *)xmalloc(sVar2 + 1)" identifier = (cast_expression "(char *)xmalloc(sVar2 + 1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "xmalloc(sVar2 + 1)" identifier (argument_list "(sVar2 + 1)" ( (binary_expression "sVar2 + 1" identifier + number_literal) ))))) ;) (expression_statement "pcVar4 = strcpy(pcVar3,pcVar4);" (assignment_expression "pcVar4 = strcpy(pcVar3,pcVar4)" identifier = (call_expression "strcpy(pcVar3,pcVar4)" identifier (argument_list "(pcVar3,pcVar4)" ( identifier , identifier )))) ;) })) (expression_statement "puVar1[3] = pcVar4;" (assignment_expression "puVar1[3] = pcVar4" (subscript_expression "puVar1[3]" identifier [ number_literal ]) = identifier) ;) (expression_statement "pcVar4 = *(char **)(param_1 + 0x10);" (assignment_expression "pcVar4 = *(char **)(param_1 + 0x10)" identifier = (pointer_expression "*(char **)(param_1 + 0x10)" * (cast_expression "(char **)(param_1 + 0x10)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x10)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) ))))) ;) (if_statement "if (pcVar4 != (char *)0x0) {\n    sVar2 = strlen(pcVar4);\n    pcVar3 = (char *)xmalloc(sVar2 + 1);\n    pcVar4 = strcpy(pcVar3,pcVar4);\n  }" if (parenthesized_expression "(pcVar4 != (char *)0x0)" ( (binary_expression "pcVar4 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    sVar2 = strlen(pcVar4);\n    pcVar3 = (char *)xmalloc(sVar2 + 1);\n    pcVar4 = strcpy(pcVar3,pcVar4);\n  }" { (expression_statement "sVar2 = strlen(pcVar4);" (assignment_expression "sVar2 = strlen(pcVar4)" identifier = (call_expression "strlen(pcVar4)" identifier (argument_list "(pcVar4)" ( identifier )))) ;) (expression_statement "pcVar3 = (char *)xmalloc(sVar2 + 1);" (assignment_expression "pcVar3 = (char *)xmalloc(sVar2 + 1)" identifier = (cast_expression "(char *)xmalloc(sVar2 + 1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "xmalloc(sVar2 + 1)" identifier (argument_list "(sVar2 + 1)" ( (binary_expression "sVar2 + 1" identifier + number_literal) ))))) ;) (expression_statement "pcVar4 = strcpy(pcVar3,pcVar4);" (assignment_expression "pcVar4 = strcpy(pcVar3,pcVar4)" identifier = (call_expression "strcpy(pcVar3,pcVar4)" identifier (argument_list "(pcVar3,pcVar4)" ( identifier , identifier )))) ;) })) (expression_statement "puVar1[4] = pcVar4;" (assignment_expression "puVar1[4] = pcVar4" (subscript_expression "puVar1[4]" identifier [ number_literal ]) = identifier) ;) (expression_statement "pcVar4 = *(char **)(param_1 + 0x14);" (assignment_expression "pcVar4 = *(char **)(param_1 + 0x14)" identifier = (pointer_expression "*(char **)(param_1 + 0x14)" * (cast_expression "(char **)(param_1 + 0x14)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x14)" ( (binary_expression "param_1 + 0x14" identifier + number_literal) ))))) ;) (if_statement "if (pcVar4 != (char *)0x0) {\n    sVar2 = strlen(pcVar4);\n    pcVar3 = (char *)xmalloc(sVar2 + 1);\n    pcVar4 = strcpy(pcVar3,pcVar4);\n  }" if (parenthesized_expression "(pcVar4 != (char *)0x0)" ( (binary_expression "pcVar4 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    sVar2 = strlen(pcVar4);\n    pcVar3 = (char *)xmalloc(sVar2 + 1);\n    pcVar4 = strcpy(pcVar3,pcVar4);\n  }" { (expression_statement "sVar2 = strlen(pcVar4);" (assignment_expression "sVar2 = strlen(pcVar4)" identifier = (call_expression "strlen(pcVar4)" identifier (argument_list "(pcVar4)" ( identifier )))) ;) (expression_statement "pcVar3 = (char *)xmalloc(sVar2 + 1);" (assignment_expression "pcVar3 = (char *)xmalloc(sVar2 + 1)" identifier = (cast_expression "(char *)xmalloc(sVar2 + 1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "xmalloc(sVar2 + 1)" identifier (argument_list "(sVar2 + 1)" ( (binary_expression "sVar2 + 1" identifier + number_literal) ))))) ;) (expression_statement "pcVar4 = strcpy(pcVar3,pcVar4);" (assignment_expression "pcVar4 = strcpy(pcVar3,pcVar4)" identifier = (call_expression "strcpy(pcVar3,pcVar4)" identifier (argument_list "(pcVar3,pcVar4)" ( identifier , identifier )))) ;) })) (expression_statement "puVar1[5] = pcVar4;" (assignment_expression "puVar1[5] = pcVar4" (subscript_expression "puVar1[5]" identifier [ number_literal ]) = identifier) ;) (expression_statement "pcVar4 = *(char **)(param_1 + 0x18);" (assignment_expression "pcVar4 = *(char **)(param_1 + 0x18)" identifier = (pointer_expression "*(char **)(param_1 + 0x18)" * (cast_expression "(char **)(param_1 + 0x18)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x18)" ( (binary_expression "param_1 + 0x18" identifier + number_literal) ))))) ;) (if_statement "if (pcVar4 != (char *)0x0) {\n    sVar2 = strlen(pcVar4);\n    pcVar3 = (char *)xmalloc(sVar2 + 1);\n    pcVar4 = strcpy(pcVar3,pcVar4);\n  }" if (parenthesized_expression "(pcVar4 != (char *)0x0)" ( (binary_expression "pcVar4 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    sVar2 = strlen(pcVar4);\n    pcVar3 = (char *)xmalloc(sVar2 + 1);\n    pcVar4 = strcpy(pcVar3,pcVar4);\n  }" { (expression_statement "sVar2 = strlen(pcVar4);" (assignment_expression "sVar2 = strlen(pcVar4)" identifier = (call_expression "strlen(pcVar4)" identifier (argument_list "(pcVar4)" ( identifier )))) ;) (expression_statement "pcVar3 = (char *)xmalloc(sVar2 + 1);" (assignment_expression "pcVar3 = (char *)xmalloc(sVar2 + 1)" identifier = (cast_expression "(char *)xmalloc(sVar2 + 1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "xmalloc(sVar2 + 1)" identifier (argument_list "(sVar2 + 1)" ( (binary_expression "sVar2 + 1" identifier + number_literal) ))))) ;) (expression_statement "pcVar4 = strcpy(pcVar3,pcVar4);" (assignment_expression "pcVar4 = strcpy(pcVar3,pcVar4)" identifier = (call_expression "strcpy(pcVar3,pcVar4)" identifier (argument_list "(pcVar3,pcVar4)" ( identifier , identifier )))) ;) })) (expression_statement "puVar1[6] = pcVar4;" (assignment_expression "puVar1[6] = pcVar4" (subscript_expression "puVar1[6]" identifier [ number_literal ]) = identifier) ;) (expression_statement "pcVar4 = *(char **)(param_1 + 0x1c);" (assignment_expression "pcVar4 = *(char **)(param_1 + 0x1c)" identifier = (pointer_expression "*(char **)(param_1 + 0x1c)" * (cast_expression "(char **)(param_1 + 0x1c)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x1c)" ( (binary_expression "param_1 + 0x1c" identifier + number_literal) ))))) ;) (if_statement "if (pcVar4 != (char *)0x0) {\n    sVar2 = strlen(pcVar4);\n    pcVar3 = (char *)xmalloc(sVar2 + 1);\n    pcVar4 = strcpy(pcVar3,pcVar4);\n  }" if (parenthesized_expression "(pcVar4 != (char *)0x0)" ( (binary_expression "pcVar4 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    sVar2 = strlen(pcVar4);\n    pcVar3 = (char *)xmalloc(sVar2 + 1);\n    pcVar4 = strcpy(pcVar3,pcVar4);\n  }" { (expression_statement "sVar2 = strlen(pcVar4);" (assignment_expression "sVar2 = strlen(pcVar4)" identifier = (call_expression "strlen(pcVar4)" identifier (argument_list "(pcVar4)" ( identifier )))) ;) (expression_statement "pcVar3 = (char *)xmalloc(sVar2 + 1);" (assignment_expression "pcVar3 = (char *)xmalloc(sVar2 + 1)" identifier = (cast_expression "(char *)xmalloc(sVar2 + 1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "xmalloc(sVar2 + 1)" identifier (argument_list "(sVar2 + 1)" ( (binary_expression "sVar2 + 1" identifier + number_literal) ))))) ;) (expression_statement "pcVar4 = strcpy(pcVar3,pcVar4);" (assignment_expression "pcVar4 = strcpy(pcVar3,pcVar4)" identifier = (call_expression "strcpy(pcVar3,pcVar4)" identifier (argument_list "(pcVar3,pcVar4)" ( identifier , identifier )))) ;) })) (expression_statement "puVar1[7] = pcVar4;" (assignment_expression "puVar1[7] = pcVar4" (subscript_expression "puVar1[7]" identifier [ number_literal ]) = identifier) ;) (expression_statement "pcVar4 = *(char **)(param_1 + 0x20);" (assignment_expression "pcVar4 = *(char **)(param_1 + 0x20)" identifier = (pointer_expression "*(char **)(param_1 + 0x20)" * (cast_expression "(char **)(param_1 + 0x20)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x20)" ( (binary_expression "param_1 + 0x20" identifier + number_literal) ))))) ;) (if_statement "if (pcVar4 != (char *)0x0) {\n    sVar2 = strlen(pcVar4);\n    pcVar3 = (char *)xmalloc(sVar2 + 1);\n    pcVar4 = strcpy(pcVar3,pcVar4);\n  }" if (parenthesized_expression "(pcVar4 != (char *)0x0)" ( (binary_expression "pcVar4 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    sVar2 = strlen(pcVar4);\n    pcVar3 = (char *)xmalloc(sVar2 + 1);\n    pcVar4 = strcpy(pcVar3,pcVar4);\n  }" { (expression_statement "sVar2 = strlen(pcVar4);" (assignment_expression "sVar2 = strlen(pcVar4)" identifier = (call_expression "strlen(pcVar4)" identifier (argument_list "(pcVar4)" ( identifier )))) ;) (expression_statement "pcVar3 = (char *)xmalloc(sVar2 + 1);" (assignment_expression "pcVar3 = (char *)xmalloc(sVar2 + 1)" identifier = (cast_expression "(char *)xmalloc(sVar2 + 1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "xmalloc(sVar2 + 1)" identifier (argument_list "(sVar2 + 1)" ( (binary_expression "sVar2 + 1" identifier + number_literal) ))))) ;) (expression_statement "pcVar4 = strcpy(pcVar3,pcVar4);" (assignment_expression "pcVar4 = strcpy(pcVar3,pcVar4)" identifier = (call_expression "strcpy(pcVar3,pcVar4)" identifier (argument_list "(pcVar3,pcVar4)" ( identifier , identifier )))) ;) })) (expression_statement "puVar1[8] = pcVar4;" (assignment_expression "puVar1[8] = pcVar4" (subscript_expression "puVar1[8]" identifier [ number_literal ]) = identifier) ;) (expression_statement "pcVar4 = *(char **)(param_1 + 0x24);" (assignment_expression "pcVar4 = *(char **)(param_1 + 0x24)" identifier = (pointer_expression "*(char **)(param_1 + 0x24)" * (cast_expression "(char **)(param_1 + 0x24)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x24)" ( (binary_expression "param_1 + 0x24" identifier + number_literal) ))))) ;) (if_statement "if (pcVar4 != (char *)0x0) {\n    sVar2 = strlen(pcVar4);\n    pcVar3 = (char *)xmalloc(sVar2 + 1);\n    pcVar4 = strcpy(pcVar3,pcVar4);\n  }" if (parenthesized_expression "(pcVar4 != (char *)0x0)" ( (binary_expression "pcVar4 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    sVar2 = strlen(pcVar4);\n    pcVar3 = (char *)xmalloc(sVar2 + 1);\n    pcVar4 = strcpy(pcVar3,pcVar4);\n  }" { (expression_statement "sVar2 = strlen(pcVar4);" (assignment_expression "sVar2 = strlen(pcVar4)" identifier = (call_expression "strlen(pcVar4)" identifier (argument_list "(pcVar4)" ( identifier )))) ;) (expression_statement "pcVar3 = (char *)xmalloc(sVar2 + 1);" (assignment_expression "pcVar3 = (char *)xmalloc(sVar2 + 1)" identifier = (cast_expression "(char *)xmalloc(sVar2 + 1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "xmalloc(sVar2 + 1)" identifier (argument_list "(sVar2 + 1)" ( (binary_expression "sVar2 + 1" identifier + number_literal) ))))) ;) (expression_statement "pcVar4 = strcpy(pcVar3,pcVar4);" (assignment_expression "pcVar4 = strcpy(pcVar3,pcVar4)" identifier = (call_expression "strcpy(pcVar3,pcVar4)" identifier (argument_list "(pcVar3,pcVar4)" ( identifier , identifier )))) ;) })) (expression_statement "pcVar3 = *(char **)(param_1 + 0x28);" (assignment_expression "pcVar3 = *(char **)(param_1 + 0x28)" identifier = (pointer_expression "*(char **)(param_1 + 0x28)" * (cast_expression "(char **)(param_1 + 0x28)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x28)" ( (binary_expression "param_1 + 0x28" identifier + number_literal) ))))) ;) (expression_statement "puVar1[9] = pcVar4;" (assignment_expression "puVar1[9] = pcVar4" (subscript_expression "puVar1[9]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (pcVar3 != (char *)0x0) {\n    sVar2 = strlen(pcVar3);\n    pcVar4 = (char *)xmalloc(sVar2 + 1);\n    pcVar3 = strcpy(pcVar4,pcVar3);\n  }" if (parenthesized_expression "(pcVar3 != (char *)0x0)" ( (binary_expression "pcVar3 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    sVar2 = strlen(pcVar3);\n    pcVar4 = (char *)xmalloc(sVar2 + 1);\n    pcVar3 = strcpy(pcVar4,pcVar3);\n  }" { (expression_statement "sVar2 = strlen(pcVar3);" (assignment_expression "sVar2 = strlen(pcVar3)" identifier = (call_expression "strlen(pcVar3)" identifier (argument_list "(pcVar3)" ( identifier )))) ;) (expression_statement "pcVar4 = (char *)xmalloc(sVar2 + 1);" (assignment_expression "pcVar4 = (char *)xmalloc(sVar2 + 1)" identifier = (cast_expression "(char *)xmalloc(sVar2 + 1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "xmalloc(sVar2 + 1)" identifier (argument_list "(sVar2 + 1)" ( (binary_expression "sVar2 + 1" identifier + number_literal) ))))) ;) (expression_statement "pcVar3 = strcpy(pcVar4,pcVar3);" (assignment_expression "pcVar3 = strcpy(pcVar4,pcVar3)" identifier = (call_expression "strcpy(pcVar4,pcVar3)" identifier (argument_list "(pcVar4,pcVar3)" ( identifier , identifier )))) ;) })) (expression_statement "puVar1[10] = pcVar3;" (assignment_expression "puVar1[10] = pcVar3" (subscript_expression "puVar1[10]" identifier [ number_literal ]) = identifier) ;) (return_statement "return puVar1;" return identifier ;) })))
(translation_unit "/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n/* WARNING: Unknown calling convention */\n\nCOMPSPEC * compspec_copy(COMPSPEC *cs)\n\n{\n  COMPSPEC *pCVar1;\n  size_t sVar2;\n  char *pcVar3;\n  char *pcVar4;\n  \n  pCVar1 = (COMPSPEC *)xmalloc(0x2c);\n  pcVar4 = cs->globpat;\n  pCVar1->refcount = 1;\n  pCVar1->actions = cs->actions;\n  pCVar1->options = cs->options;\n  if (pcVar4 != (char *)0x0) {\n    sVar2 = strlen(pcVar4);\n    pcVar3 = (char *)xmalloc(sVar2 + 1);\n    pcVar4 = strcpy(pcVar3,pcVar4);\n  }\n  pCVar1->globpat = pcVar4;\n  pcVar4 = cs->words;\n  if (pcVar4 != (char *)0x0) {\n    sVar2 = strlen(pcVar4);\n    pcVar3 = (char *)xmalloc(sVar2 + 1);\n    pcVar4 = strcpy(pcVar3,pcVar4);\n  }\n  pCVar1->words = pcVar4;\n  pcVar4 = cs->prefix;\n  if (pcVar4 != (char *)0x0) {\n    sVar2 = strlen(pcVar4);\n    pcVar3 = (char *)xmalloc(sVar2 + 1);\n    pcVar4 = strcpy(pcVar3,pcVar4);\n  }\n  pCVar1->prefix = pcVar4;\n  pcVar4 = cs->suffix;\n  if (pcVar4 != (char *)0x0) {\n    sVar2 = strlen(pcVar4);\n    pcVar3 = (char *)xmalloc(sVar2 + 1);\n    pcVar4 = strcpy(pcVar3,pcVar4);\n  }\n  pCVar1->suffix = pcVar4;\n  pcVar4 = cs->funcname;\n  if (pcVar4 != (char *)0x0) {\n    sVar2 = strlen(pcVar4);\n    pcVar3 = (char *)xmalloc(sVar2 + 1);\n    pcVar4 = strcpy(pcVar3,pcVar4);\n  }\n  pCVar1->funcname = pcVar4;\n  pcVar4 = cs->command;\n  if (pcVar4 != (char *)0x0) {\n    sVar2 = strlen(pcVar4);\n    pcVar3 = (char *)xmalloc(sVar2 + 1);\n    pcVar4 = strcpy(pcVar3,pcVar4);\n  }\n  pCVar1->command = pcVar4;\n  pcVar4 = cs->lcommand;\n  if (pcVar4 != (char *)0x0) {\n    sVar2 = strlen(pcVar4);\n    pcVar3 = (char *)xmalloc(sVar2 + 1);\n    pcVar4 = strcpy(pcVar3,pcVar4);\n  }\n  pcVar3 = cs->filterpat;\n  pCVar1->lcommand = pcVar4;\n  if (pcVar3 != (char *)0x0) {\n    sVar2 = strlen(pcVar3);\n    pcVar4 = (char *)xmalloc(sVar2 + 1);\n    pcVar3 = strcpy(pcVar4,pcVar3);\n  }\n  pCVar1->filterpat = pcVar3;\n  return pCVar1;\n}\n\n" comment comment (function_definition "COMPSPEC * compspec_copy(COMPSPEC *cs)\n\n{\n  COMPSPEC *pCVar1;\n  size_t sVar2;\n  char *pcVar3;\n  char *pcVar4;\n  \n  pCVar1 = (COMPSPEC *)xmalloc(0x2c);\n  pcVar4 = cs->globpat;\n  pCVar1->refcount = 1;\n  pCVar1->actions = cs->actions;\n  pCVar1->options = cs->options;\n  if (pcVar4 != (char *)0x0) {\n    sVar2 = strlen(pcVar4);\n    pcVar3 = (char *)xmalloc(sVar2 + 1);\n    pcVar4 = strcpy(pcVar3,pcVar4);\n  }\n  pCVar1->globpat = pcVar4;\n  pcVar4 = cs->words;\n  if (pcVar4 != (char *)0x0) {\n    sVar2 = strlen(pcVar4);\n    pcVar3 = (char *)xmalloc(sVar2 + 1);\n    pcVar4 = strcpy(pcVar3,pcVar4);\n  }\n  pCVar1->words = pcVar4;\n  pcVar4 = cs->prefix;\n  if (pcVar4 != (char *)0x0) {\n    sVar2 = strlen(pcVar4);\n    pcVar3 = (char *)xmalloc(sVar2 + 1);\n    pcVar4 = strcpy(pcVar3,pcVar4);\n  }\n  pCVar1->prefix = pcVar4;\n  pcVar4 = cs->suffix;\n  if (pcVar4 != (char *)0x0) {\n    sVar2 = strlen(pcVar4);\n    pcVar3 = (char *)xmalloc(sVar2 + 1);\n    pcVar4 = strcpy(pcVar3,pcVar4);\n  }\n  pCVar1->suffix = pcVar4;\n  pcVar4 = cs->funcname;\n  if (pcVar4 != (char *)0x0) {\n    sVar2 = strlen(pcVar4);\n    pcVar3 = (char *)xmalloc(sVar2 + 1);\n    pcVar4 = strcpy(pcVar3,pcVar4);\n  }\n  pCVar1->funcname = pcVar4;\n  pcVar4 = cs->command;\n  if (pcVar4 != (char *)0x0) {\n    sVar2 = strlen(pcVar4);\n    pcVar3 = (char *)xmalloc(sVar2 + 1);\n    pcVar4 = strcpy(pcVar3,pcVar4);\n  }\n  pCVar1->command = pcVar4;\n  pcVar4 = cs->lcommand;\n  if (pcVar4 != (char *)0x0) {\n    sVar2 = strlen(pcVar4);\n    pcVar3 = (char *)xmalloc(sVar2 + 1);\n    pcVar4 = strcpy(pcVar3,pcVar4);\n  }\n  pcVar3 = cs->filterpat;\n  pCVar1->lcommand = pcVar4;\n  if (pcVar3 != (char *)0x0) {\n    sVar2 = strlen(pcVar3);\n    pcVar4 = (char *)xmalloc(sVar2 + 1);\n    pcVar3 = strcpy(pcVar4,pcVar3);\n  }\n  pCVar1->filterpat = pcVar3;\n  return pCVar1;\n}" type_identifier (pointer_declarator "* compspec_copy(COMPSPEC *cs)" * (function_declarator "compspec_copy(COMPSPEC *cs)" identifier (parameter_list "(COMPSPEC *cs)" ( (parameter_declaration "COMPSPEC *cs" type_identifier (pointer_declarator "*cs" * identifier)) )))) (compound_statement "{\n  COMPSPEC *pCVar1;\n  size_t sVar2;\n  char *pcVar3;\n  char *pcVar4;\n  \n  pCVar1 = (COMPSPEC *)xmalloc(0x2c);\n  pcVar4 = cs->globpat;\n  pCVar1->refcount = 1;\n  pCVar1->actions = cs->actions;\n  pCVar1->options = cs->options;\n  if (pcVar4 != (char *)0x0) {\n    sVar2 = strlen(pcVar4);\n    pcVar3 = (char *)xmalloc(sVar2 + 1);\n    pcVar4 = strcpy(pcVar3,pcVar4);\n  }\n  pCVar1->globpat = pcVar4;\n  pcVar4 = cs->words;\n  if (pcVar4 != (char *)0x0) {\n    sVar2 = strlen(pcVar4);\n    pcVar3 = (char *)xmalloc(sVar2 + 1);\n    pcVar4 = strcpy(pcVar3,pcVar4);\n  }\n  pCVar1->words = pcVar4;\n  pcVar4 = cs->prefix;\n  if (pcVar4 != (char *)0x0) {\n    sVar2 = strlen(pcVar4);\n    pcVar3 = (char *)xmalloc(sVar2 + 1);\n    pcVar4 = strcpy(pcVar3,pcVar4);\n  }\n  pCVar1->prefix = pcVar4;\n  pcVar4 = cs->suffix;\n  if (pcVar4 != (char *)0x0) {\n    sVar2 = strlen(pcVar4);\n    pcVar3 = (char *)xmalloc(sVar2 + 1);\n    pcVar4 = strcpy(pcVar3,pcVar4);\n  }\n  pCVar1->suffix = pcVar4;\n  pcVar4 = cs->funcname;\n  if (pcVar4 != (char *)0x0) {\n    sVar2 = strlen(pcVar4);\n    pcVar3 = (char *)xmalloc(sVar2 + 1);\n    pcVar4 = strcpy(pcVar3,pcVar4);\n  }\n  pCVar1->funcname = pcVar4;\n  pcVar4 = cs->command;\n  if (pcVar4 != (char *)0x0) {\n    sVar2 = strlen(pcVar4);\n    pcVar3 = (char *)xmalloc(sVar2 + 1);\n    pcVar4 = strcpy(pcVar3,pcVar4);\n  }\n  pCVar1->command = pcVar4;\n  pcVar4 = cs->lcommand;\n  if (pcVar4 != (char *)0x0) {\n    sVar2 = strlen(pcVar4);\n    pcVar3 = (char *)xmalloc(sVar2 + 1);\n    pcVar4 = strcpy(pcVar3,pcVar4);\n  }\n  pcVar3 = cs->filterpat;\n  pCVar1->lcommand = pcVar4;\n  if (pcVar3 != (char *)0x0) {\n    sVar2 = strlen(pcVar3);\n    pcVar4 = (char *)xmalloc(sVar2 + 1);\n    pcVar3 = strcpy(pcVar4,pcVar3);\n  }\n  pCVar1->filterpat = pcVar3;\n  return pCVar1;\n}" { (declaration "COMPSPEC *pCVar1;" type_identifier (pointer_declarator "*pCVar1" * identifier) ;) (declaration "size_t sVar2;" primitive_type identifier ;) (declaration "char *pcVar3;" primitive_type (pointer_declarator "*pcVar3" * identifier) ;) (declaration "char *pcVar4;" primitive_type (pointer_declarator "*pcVar4" * identifier) ;) (expression_statement "pCVar1 = (COMPSPEC *)xmalloc(0x2c);" (assignment_expression "pCVar1 = (COMPSPEC *)xmalloc(0x2c)" identifier = (cast_expression "(COMPSPEC *)xmalloc(0x2c)" ( (type_descriptor "COMPSPEC *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "xmalloc(0x2c)" identifier (argument_list "(0x2c)" ( number_literal ))))) ;) (expression_statement "pcVar4 = cs->globpat;" (assignment_expression "pcVar4 = cs->globpat" identifier = (field_expression "cs->globpat" identifier -> field_identifier)) ;) (expression_statement "pCVar1->refcount = 1;" (assignment_expression "pCVar1->refcount = 1" (field_expression "pCVar1->refcount" identifier -> field_identifier) = number_literal) ;) (expression_statement "pCVar1->actions = cs->actions;" (assignment_expression "pCVar1->actions = cs->actions" (field_expression "pCVar1->actions" identifier -> field_identifier) = (field_expression "cs->actions" identifier -> field_identifier)) ;) (expression_statement "pCVar1->options = cs->options;" (assignment_expression "pCVar1->options = cs->options" (field_expression "pCVar1->options" identifier -> field_identifier) = (field_expression "cs->options" identifier -> field_identifier)) ;) (if_statement "if (pcVar4 != (char *)0x0) {\n    sVar2 = strlen(pcVar4);\n    pcVar3 = (char *)xmalloc(sVar2 + 1);\n    pcVar4 = strcpy(pcVar3,pcVar4);\n  }" if (parenthesized_expression "(pcVar4 != (char *)0x0)" ( (binary_expression "pcVar4 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    sVar2 = strlen(pcVar4);\n    pcVar3 = (char *)xmalloc(sVar2 + 1);\n    pcVar4 = strcpy(pcVar3,pcVar4);\n  }" { (expression_statement "sVar2 = strlen(pcVar4);" (assignment_expression "sVar2 = strlen(pcVar4)" identifier = (call_expression "strlen(pcVar4)" identifier (argument_list "(pcVar4)" ( identifier )))) ;) (expression_statement "pcVar3 = (char *)xmalloc(sVar2 + 1);" (assignment_expression "pcVar3 = (char *)xmalloc(sVar2 + 1)" identifier = (cast_expression "(char *)xmalloc(sVar2 + 1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "xmalloc(sVar2 + 1)" identifier (argument_list "(sVar2 + 1)" ( (binary_expression "sVar2 + 1" identifier + number_literal) ))))) ;) (expression_statement "pcVar4 = strcpy(pcVar3,pcVar4);" (assignment_expression "pcVar4 = strcpy(pcVar3,pcVar4)" identifier = (call_expression "strcpy(pcVar3,pcVar4)" identifier (argument_list "(pcVar3,pcVar4)" ( identifier , identifier )))) ;) })) (expression_statement "pCVar1->globpat = pcVar4;" (assignment_expression "pCVar1->globpat = pcVar4" (field_expression "pCVar1->globpat" identifier -> field_identifier) = identifier) ;) (expression_statement "pcVar4 = cs->words;" (assignment_expression "pcVar4 = cs->words" identifier = (field_expression "cs->words" identifier -> field_identifier)) ;) (if_statement "if (pcVar4 != (char *)0x0) {\n    sVar2 = strlen(pcVar4);\n    pcVar3 = (char *)xmalloc(sVar2 + 1);\n    pcVar4 = strcpy(pcVar3,pcVar4);\n  }" if (parenthesized_expression "(pcVar4 != (char *)0x0)" ( (binary_expression "pcVar4 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    sVar2 = strlen(pcVar4);\n    pcVar3 = (char *)xmalloc(sVar2 + 1);\n    pcVar4 = strcpy(pcVar3,pcVar4);\n  }" { (expression_statement "sVar2 = strlen(pcVar4);" (assignment_expression "sVar2 = strlen(pcVar4)" identifier = (call_expression "strlen(pcVar4)" identifier (argument_list "(pcVar4)" ( identifier )))) ;) (expression_statement "pcVar3 = (char *)xmalloc(sVar2 + 1);" (assignment_expression "pcVar3 = (char *)xmalloc(sVar2 + 1)" identifier = (cast_expression "(char *)xmalloc(sVar2 + 1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "xmalloc(sVar2 + 1)" identifier (argument_list "(sVar2 + 1)" ( (binary_expression "sVar2 + 1" identifier + number_literal) ))))) ;) (expression_statement "pcVar4 = strcpy(pcVar3,pcVar4);" (assignment_expression "pcVar4 = strcpy(pcVar3,pcVar4)" identifier = (call_expression "strcpy(pcVar3,pcVar4)" identifier (argument_list "(pcVar3,pcVar4)" ( identifier , identifier )))) ;) })) (expression_statement "pCVar1->words = pcVar4;" (assignment_expression "pCVar1->words = pcVar4" (field_expression "pCVar1->words" identifier -> field_identifier) = identifier) ;) (expression_statement "pcVar4 = cs->prefix;" (assignment_expression "pcVar4 = cs->prefix" identifier = (field_expression "cs->prefix" identifier -> field_identifier)) ;) (if_statement "if (pcVar4 != (char *)0x0) {\n    sVar2 = strlen(pcVar4);\n    pcVar3 = (char *)xmalloc(sVar2 + 1);\n    pcVar4 = strcpy(pcVar3,pcVar4);\n  }" if (parenthesized_expression "(pcVar4 != (char *)0x0)" ( (binary_expression "pcVar4 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    sVar2 = strlen(pcVar4);\n    pcVar3 = (char *)xmalloc(sVar2 + 1);\n    pcVar4 = strcpy(pcVar3,pcVar4);\n  }" { (expression_statement "sVar2 = strlen(pcVar4);" (assignment_expression "sVar2 = strlen(pcVar4)" identifier = (call_expression "strlen(pcVar4)" identifier (argument_list "(pcVar4)" ( identifier )))) ;) (expression_statement "pcVar3 = (char *)xmalloc(sVar2 + 1);" (assignment_expression "pcVar3 = (char *)xmalloc(sVar2 + 1)" identifier = (cast_expression "(char *)xmalloc(sVar2 + 1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "xmalloc(sVar2 + 1)" identifier (argument_list "(sVar2 + 1)" ( (binary_expression "sVar2 + 1" identifier + number_literal) ))))) ;) (expression_statement "pcVar4 = strcpy(pcVar3,pcVar4);" (assignment_expression "pcVar4 = strcpy(pcVar3,pcVar4)" identifier = (call_expression "strcpy(pcVar3,pcVar4)" identifier (argument_list "(pcVar3,pcVar4)" ( identifier , identifier )))) ;) })) (expression_statement "pCVar1->prefix = pcVar4;" (assignment_expression "pCVar1->prefix = pcVar4" (field_expression "pCVar1->prefix" identifier -> field_identifier) = identifier) ;) (expression_statement "pcVar4 = cs->suffix;" (assignment_expression "pcVar4 = cs->suffix" identifier = (field_expression "cs->suffix" identifier -> field_identifier)) ;) (if_statement "if (pcVar4 != (char *)0x0) {\n    sVar2 = strlen(pcVar4);\n    pcVar3 = (char *)xmalloc(sVar2 + 1);\n    pcVar4 = strcpy(pcVar3,pcVar4);\n  }" if (parenthesized_expression "(pcVar4 != (char *)0x0)" ( (binary_expression "pcVar4 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    sVar2 = strlen(pcVar4);\n    pcVar3 = (char *)xmalloc(sVar2 + 1);\n    pcVar4 = strcpy(pcVar3,pcVar4);\n  }" { (expression_statement "sVar2 = strlen(pcVar4);" (assignment_expression "sVar2 = strlen(pcVar4)" identifier = (call_expression "strlen(pcVar4)" identifier (argument_list "(pcVar4)" ( identifier )))) ;) (expression_statement "pcVar3 = (char *)xmalloc(sVar2 + 1);" (assignment_expression "pcVar3 = (char *)xmalloc(sVar2 + 1)" identifier = (cast_expression "(char *)xmalloc(sVar2 + 1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "xmalloc(sVar2 + 1)" identifier (argument_list "(sVar2 + 1)" ( (binary_expression "sVar2 + 1" identifier + number_literal) ))))) ;) (expression_statement "pcVar4 = strcpy(pcVar3,pcVar4);" (assignment_expression "pcVar4 = strcpy(pcVar3,pcVar4)" identifier = (call_expression "strcpy(pcVar3,pcVar4)" identifier (argument_list "(pcVar3,pcVar4)" ( identifier , identifier )))) ;) })) (expression_statement "pCVar1->suffix = pcVar4;" (assignment_expression "pCVar1->suffix = pcVar4" (field_expression "pCVar1->suffix" identifier -> field_identifier) = identifier) ;) (expression_statement "pcVar4 = cs->funcname;" (assignment_expression "pcVar4 = cs->funcname" identifier = (field_expression "cs->funcname" identifier -> field_identifier)) ;) (if_statement "if (pcVar4 != (char *)0x0) {\n    sVar2 = strlen(pcVar4);\n    pcVar3 = (char *)xmalloc(sVar2 + 1);\n    pcVar4 = strcpy(pcVar3,pcVar4);\n  }" if (parenthesized_expression "(pcVar4 != (char *)0x0)" ( (binary_expression "pcVar4 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    sVar2 = strlen(pcVar4);\n    pcVar3 = (char *)xmalloc(sVar2 + 1);\n    pcVar4 = strcpy(pcVar3,pcVar4);\n  }" { (expression_statement "sVar2 = strlen(pcVar4);" (assignment_expression "sVar2 = strlen(pcVar4)" identifier = (call_expression "strlen(pcVar4)" identifier (argument_list "(pcVar4)" ( identifier )))) ;) (expression_statement "pcVar3 = (char *)xmalloc(sVar2 + 1);" (assignment_expression "pcVar3 = (char *)xmalloc(sVar2 + 1)" identifier = (cast_expression "(char *)xmalloc(sVar2 + 1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "xmalloc(sVar2 + 1)" identifier (argument_list "(sVar2 + 1)" ( (binary_expression "sVar2 + 1" identifier + number_literal) ))))) ;) (expression_statement "pcVar4 = strcpy(pcVar3,pcVar4);" (assignment_expression "pcVar4 = strcpy(pcVar3,pcVar4)" identifier = (call_expression "strcpy(pcVar3,pcVar4)" identifier (argument_list "(pcVar3,pcVar4)" ( identifier , identifier )))) ;) })) (expression_statement "pCVar1->funcname = pcVar4;" (assignment_expression "pCVar1->funcname = pcVar4" (field_expression "pCVar1->funcname" identifier -> field_identifier) = identifier) ;) (expression_statement "pcVar4 = cs->command;" (assignment_expression "pcVar4 = cs->command" identifier = (field_expression "cs->command" identifier -> field_identifier)) ;) (if_statement "if (pcVar4 != (char *)0x0) {\n    sVar2 = strlen(pcVar4);\n    pcVar3 = (char *)xmalloc(sVar2 + 1);\n    pcVar4 = strcpy(pcVar3,pcVar4);\n  }" if (parenthesized_expression "(pcVar4 != (char *)0x0)" ( (binary_expression "pcVar4 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    sVar2 = strlen(pcVar4);\n    pcVar3 = (char *)xmalloc(sVar2 + 1);\n    pcVar4 = strcpy(pcVar3,pcVar4);\n  }" { (expression_statement "sVar2 = strlen(pcVar4);" (assignment_expression "sVar2 = strlen(pcVar4)" identifier = (call_expression "strlen(pcVar4)" identifier (argument_list "(pcVar4)" ( identifier )))) ;) (expression_statement "pcVar3 = (char *)xmalloc(sVar2 + 1);" (assignment_expression "pcVar3 = (char *)xmalloc(sVar2 + 1)" identifier = (cast_expression "(char *)xmalloc(sVar2 + 1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "xmalloc(sVar2 + 1)" identifier (argument_list "(sVar2 + 1)" ( (binary_expression "sVar2 + 1" identifier + number_literal) ))))) ;) (expression_statement "pcVar4 = strcpy(pcVar3,pcVar4);" (assignment_expression "pcVar4 = strcpy(pcVar3,pcVar4)" identifier = (call_expression "strcpy(pcVar3,pcVar4)" identifier (argument_list "(pcVar3,pcVar4)" ( identifier , identifier )))) ;) })) (expression_statement "pCVar1->command = pcVar4;" (assignment_expression "pCVar1->command = pcVar4" (field_expression "pCVar1->command" identifier -> field_identifier) = identifier) ;) (expression_statement "pcVar4 = cs->lcommand;" (assignment_expression "pcVar4 = cs->lcommand" identifier = (field_expression "cs->lcommand" identifier -> field_identifier)) ;) (if_statement "if (pcVar4 != (char *)0x0) {\n    sVar2 = strlen(pcVar4);\n    pcVar3 = (char *)xmalloc(sVar2 + 1);\n    pcVar4 = strcpy(pcVar3,pcVar4);\n  }" if (parenthesized_expression "(pcVar4 != (char *)0x0)" ( (binary_expression "pcVar4 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    sVar2 = strlen(pcVar4);\n    pcVar3 = (char *)xmalloc(sVar2 + 1);\n    pcVar4 = strcpy(pcVar3,pcVar4);\n  }" { (expression_statement "sVar2 = strlen(pcVar4);" (assignment_expression "sVar2 = strlen(pcVar4)" identifier = (call_expression "strlen(pcVar4)" identifier (argument_list "(pcVar4)" ( identifier )))) ;) (expression_statement "pcVar3 = (char *)xmalloc(sVar2 + 1);" (assignment_expression "pcVar3 = (char *)xmalloc(sVar2 + 1)" identifier = (cast_expression "(char *)xmalloc(sVar2 + 1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "xmalloc(sVar2 + 1)" identifier (argument_list "(sVar2 + 1)" ( (binary_expression "sVar2 + 1" identifier + number_literal) ))))) ;) (expression_statement "pcVar4 = strcpy(pcVar3,pcVar4);" (assignment_expression "pcVar4 = strcpy(pcVar3,pcVar4)" identifier = (call_expression "strcpy(pcVar3,pcVar4)" identifier (argument_list "(pcVar3,pcVar4)" ( identifier , identifier )))) ;) })) (expression_statement "pcVar3 = cs->filterpat;" (assignment_expression "pcVar3 = cs->filterpat" identifier = (field_expression "cs->filterpat" identifier -> field_identifier)) ;) (expression_statement "pCVar1->lcommand = pcVar4;" (assignment_expression "pCVar1->lcommand = pcVar4" (field_expression "pCVar1->lcommand" identifier -> field_identifier) = identifier) ;) (if_statement "if (pcVar3 != (char *)0x0) {\n    sVar2 = strlen(pcVar3);\n    pcVar4 = (char *)xmalloc(sVar2 + 1);\n    pcVar3 = strcpy(pcVar4,pcVar3);\n  }" if (parenthesized_expression "(pcVar3 != (char *)0x0)" ( (binary_expression "pcVar3 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    sVar2 = strlen(pcVar3);\n    pcVar4 = (char *)xmalloc(sVar2 + 1);\n    pcVar3 = strcpy(pcVar4,pcVar3);\n  }" { (expression_statement "sVar2 = strlen(pcVar3);" (assignment_expression "sVar2 = strlen(pcVar3)" identifier = (call_expression "strlen(pcVar3)" identifier (argument_list "(pcVar3)" ( identifier )))) ;) (expression_statement "pcVar4 = (char *)xmalloc(sVar2 + 1);" (assignment_expression "pcVar4 = (char *)xmalloc(sVar2 + 1)" identifier = (cast_expression "(char *)xmalloc(sVar2 + 1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "xmalloc(sVar2 + 1)" identifier (argument_list "(sVar2 + 1)" ( (binary_expression "sVar2 + 1" identifier + number_literal) ))))) ;) (expression_statement "pcVar3 = strcpy(pcVar4,pcVar3);" (assignment_expression "pcVar3 = strcpy(pcVar4,pcVar3)" identifier = (call_expression "strcpy(pcVar4,pcVar3)" identifier (argument_list "(pcVar4,pcVar3)" ( identifier , identifier )))) ;) })) (expression_statement "pCVar1->filterpat = pcVar3;" (assignment_expression "pCVar1->filterpat = pcVar3" (field_expression "pCVar1->filterpat" identifier -> field_identifier) = identifier) ;) (return_statement "return pCVar1;" return identifier ;) })))
(translation_unit "undefined4 * compspec_copy(int param_1)\n\n{\n  undefined4 *puVar1;\n  size_t sVar2;\n  char *pcVar3;\n  char *pcVar4;\n  \n  puVar1 = (undefined4 *)xmalloc(0x2c);\n  pcVar4 = *(char **)(param_1 + 0xc);\n  *puVar1 = 1;\n  puVar1[1] = *(undefined4 *)(param_1 + 4);\n  puVar1[2] = *(undefined4 *)(param_1 + 8);\n  if (pcVar4 != (char *)0x0) {\n    sVar2 = strlen(pcVar4);\n    pcVar3 = (char *)xmalloc(sVar2 + 1);\n    pcVar4 = strcpy(pcVar3,pcVar4);\n  }\n  puVar1[3] = pcVar4;\n  pcVar4 = *(char **)(param_1 + 0x10);\n  if (pcVar4 != (char *)0x0) {\n    sVar2 = strlen(pcVar4);\n    pcVar3 = (char *)xmalloc(sVar2 + 1);\n    pcVar4 = strcpy(pcVar3,pcVar4);\n  }\n  puVar1[4] = pcVar4;\n  pcVar4 = *(char **)(param_1 + 0x14);\n  if (pcVar4 != (char *)0x0) {\n    sVar2 = strlen(pcVar4);\n    pcVar3 = (char *)xmalloc(sVar2 + 1);\n    pcVar4 = strcpy(pcVar3,pcVar4);\n  }\n  puVar1[5] = pcVar4;\n  pcVar4 = *(char **)(param_1 + 0x18);\n  if (pcVar4 != (char *)0x0) {\n    sVar2 = strlen(pcVar4);\n    pcVar3 = (char *)xmalloc(sVar2 + 1);\n    pcVar4 = strcpy(pcVar3,pcVar4);\n  }\n  puVar1[6] = pcVar4;\n  pcVar4 = *(char **)(param_1 + 0x1c);\n  if (pcVar4 != (char *)0x0) {\n    sVar2 = strlen(pcVar4);\n    pcVar3 = (char *)xmalloc(sVar2 + 1);\n    pcVar4 = strcpy(pcVar3,pcVar4);\n  }\n  puVar1[7] = pcVar4;\n  pcVar4 = *(char **)(param_1 + 0x20);\n  if (pcVar4 != (char *)0x0) {\n    sVar2 = strlen(pcVar4);\n    pcVar3 = (char *)xmalloc(sVar2 + 1);\n    pcVar4 = strcpy(pcVar3,pcVar4);\n  }\n  puVar1[8] = pcVar4;\n  pcVar4 = *(char **)(param_1 + 0x24);\n  if (pcVar4 != (char *)0x0) {\n    sVar2 = strlen(pcVar4);\n    pcVar3 = (char *)xmalloc(sVar2 + 1);\n    pcVar4 = strcpy(pcVar3,pcVar4);\n  }\n  pcVar3 = *(char **)(param_1 + 0x28);\n  puVar1[9] = pcVar4;\n  if (pcVar3 != (char *)0x0) {\n    sVar2 = strlen(pcVar3);\n    pcVar4 = (char *)xmalloc(sVar2 + 1);\n    pcVar3 = strcpy(pcVar4,pcVar3);\n  }\n  puVar1[10] = pcVar3;\n  return puVar1;\n}\n\n" (function_definition "undefined4 * compspec_copy(int param_1)\n\n{\n  undefined4 *puVar1;\n  size_t sVar2;\n  char *pcVar3;\n  char *pcVar4;\n  \n  puVar1 = (undefined4 *)xmalloc(0x2c);\n  pcVar4 = *(char **)(param_1 + 0xc);\n  *puVar1 = 1;\n  puVar1[1] = *(undefined4 *)(param_1 + 4);\n  puVar1[2] = *(undefined4 *)(param_1 + 8);\n  if (pcVar4 != (char *)0x0) {\n    sVar2 = strlen(pcVar4);\n    pcVar3 = (char *)xmalloc(sVar2 + 1);\n    pcVar4 = strcpy(pcVar3,pcVar4);\n  }\n  puVar1[3] = pcVar4;\n  pcVar4 = *(char **)(param_1 + 0x10);\n  if (pcVar4 != (char *)0x0) {\n    sVar2 = strlen(pcVar4);\n    pcVar3 = (char *)xmalloc(sVar2 + 1);\n    pcVar4 = strcpy(pcVar3,pcVar4);\n  }\n  puVar1[4] = pcVar4;\n  pcVar4 = *(char **)(param_1 + 0x14);\n  if (pcVar4 != (char *)0x0) {\n    sVar2 = strlen(pcVar4);\n    pcVar3 = (char *)xmalloc(sVar2 + 1);\n    pcVar4 = strcpy(pcVar3,pcVar4);\n  }\n  puVar1[5] = pcVar4;\n  pcVar4 = *(char **)(param_1 + 0x18);\n  if (pcVar4 != (char *)0x0) {\n    sVar2 = strlen(pcVar4);\n    pcVar3 = (char *)xmalloc(sVar2 + 1);\n    pcVar4 = strcpy(pcVar3,pcVar4);\n  }\n  puVar1[6] = pcVar4;\n  pcVar4 = *(char **)(param_1 + 0x1c);\n  if (pcVar4 != (char *)0x0) {\n    sVar2 = strlen(pcVar4);\n    pcVar3 = (char *)xmalloc(sVar2 + 1);\n    pcVar4 = strcpy(pcVar3,pcVar4);\n  }\n  puVar1[7] = pcVar4;\n  pcVar4 = *(char **)(param_1 + 0x20);\n  if (pcVar4 != (char *)0x0) {\n    sVar2 = strlen(pcVar4);\n    pcVar3 = (char *)xmalloc(sVar2 + 1);\n    pcVar4 = strcpy(pcVar3,pcVar4);\n  }\n  puVar1[8] = pcVar4;\n  pcVar4 = *(char **)(param_1 + 0x24);\n  if (pcVar4 != (char *)0x0) {\n    sVar2 = strlen(pcVar4);\n    pcVar3 = (char *)xmalloc(sVar2 + 1);\n    pcVar4 = strcpy(pcVar3,pcVar4);\n  }\n  pcVar3 = *(char **)(param_1 + 0x28);\n  puVar1[9] = pcVar4;\n  if (pcVar3 != (char *)0x0) {\n    sVar2 = strlen(pcVar3);\n    pcVar4 = (char *)xmalloc(sVar2 + 1);\n    pcVar3 = strcpy(pcVar4,pcVar3);\n  }\n  puVar1[10] = pcVar3;\n  return puVar1;\n}" type_identifier (pointer_declarator "* compspec_copy(int param_1)" * (function_declarator "compspec_copy(int param_1)" identifier (parameter_list "(int param_1)" ( (parameter_declaration "int param_1" primitive_type identifier) )))) (compound_statement "{\n  undefined4 *puVar1;\n  size_t sVar2;\n  char *pcVar3;\n  char *pcVar4;\n  \n  puVar1 = (undefined4 *)xmalloc(0x2c);\n  pcVar4 = *(char **)(param_1 + 0xc);\n  *puVar1 = 1;\n  puVar1[1] = *(undefined4 *)(param_1 + 4);\n  puVar1[2] = *(undefined4 *)(param_1 + 8);\n  if (pcVar4 != (char *)0x0) {\n    sVar2 = strlen(pcVar4);\n    pcVar3 = (char *)xmalloc(sVar2 + 1);\n    pcVar4 = strcpy(pcVar3,pcVar4);\n  }\n  puVar1[3] = pcVar4;\n  pcVar4 = *(char **)(param_1 + 0x10);\n  if (pcVar4 != (char *)0x0) {\n    sVar2 = strlen(pcVar4);\n    pcVar3 = (char *)xmalloc(sVar2 + 1);\n    pcVar4 = strcpy(pcVar3,pcVar4);\n  }\n  puVar1[4] = pcVar4;\n  pcVar4 = *(char **)(param_1 + 0x14);\n  if (pcVar4 != (char *)0x0) {\n    sVar2 = strlen(pcVar4);\n    pcVar3 = (char *)xmalloc(sVar2 + 1);\n    pcVar4 = strcpy(pcVar3,pcVar4);\n  }\n  puVar1[5] = pcVar4;\n  pcVar4 = *(char **)(param_1 + 0x18);\n  if (pcVar4 != (char *)0x0) {\n    sVar2 = strlen(pcVar4);\n    pcVar3 = (char *)xmalloc(sVar2 + 1);\n    pcVar4 = strcpy(pcVar3,pcVar4);\n  }\n  puVar1[6] = pcVar4;\n  pcVar4 = *(char **)(param_1 + 0x1c);\n  if (pcVar4 != (char *)0x0) {\n    sVar2 = strlen(pcVar4);\n    pcVar3 = (char *)xmalloc(sVar2 + 1);\n    pcVar4 = strcpy(pcVar3,pcVar4);\n  }\n  puVar1[7] = pcVar4;\n  pcVar4 = *(char **)(param_1 + 0x20);\n  if (pcVar4 != (char *)0x0) {\n    sVar2 = strlen(pcVar4);\n    pcVar3 = (char *)xmalloc(sVar2 + 1);\n    pcVar4 = strcpy(pcVar3,pcVar4);\n  }\n  puVar1[8] = pcVar4;\n  pcVar4 = *(char **)(param_1 + 0x24);\n  if (pcVar4 != (char *)0x0) {\n    sVar2 = strlen(pcVar4);\n    pcVar3 = (char *)xmalloc(sVar2 + 1);\n    pcVar4 = strcpy(pcVar3,pcVar4);\n  }\n  pcVar3 = *(char **)(param_1 + 0x28);\n  puVar1[9] = pcVar4;\n  if (pcVar3 != (char *)0x0) {\n    sVar2 = strlen(pcVar3);\n    pcVar4 = (char *)xmalloc(sVar2 + 1);\n    pcVar3 = strcpy(pcVar4,pcVar3);\n  }\n  puVar1[10] = pcVar3;\n  return puVar1;\n}" { (declaration "undefined4 *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "size_t sVar2;" primitive_type identifier ;) (declaration "char *pcVar3;" primitive_type (pointer_declarator "*pcVar3" * identifier) ;) (declaration "char *pcVar4;" primitive_type (pointer_declarator "*pcVar4" * identifier) ;) (expression_statement "puVar1 = (undefined4 *)xmalloc(0x2c);" (assignment_expression "puVar1 = (undefined4 *)xmalloc(0x2c)" identifier = (cast_expression "(undefined4 *)xmalloc(0x2c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "xmalloc(0x2c)" identifier (argument_list "(0x2c)" ( number_literal ))))) ;) (expression_statement "pcVar4 = *(char **)(param_1 + 0xc);" (assignment_expression "pcVar4 = *(char **)(param_1 + 0xc)" identifier = (pointer_expression "*(char **)(param_1 + 0xc)" * (cast_expression "(char **)(param_1 + 0xc)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0xc)" ( (binary_expression "param_1 + 0xc" identifier + number_literal) ))))) ;) (expression_statement "*puVar1 = 1;" (assignment_expression "*puVar1 = 1" (pointer_expression "*puVar1" * identifier) = number_literal) ;) (expression_statement "puVar1[1] = *(undefined4 *)(param_1 + 4);" (assignment_expression "puVar1[1] = *(undefined4 *)(param_1 + 4)" (subscript_expression "puVar1[1]" identifier [ number_literal ]) = (pointer_expression "*(undefined4 *)(param_1 + 4)" * (cast_expression "(undefined4 *)(param_1 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) ))))) ;) (expression_statement "puVar1[2] = *(undefined4 *)(param_1 + 8);" (assignment_expression "puVar1[2] = *(undefined4 *)(param_1 + 8)" (subscript_expression "puVar1[2]" identifier [ number_literal ]) = (pointer_expression "*(undefined4 *)(param_1 + 8)" * (cast_expression "(undefined4 *)(param_1 + 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) ))))) ;) (if_statement "if (pcVar4 != (char *)0x0) {\n    sVar2 = strlen(pcVar4);\n    pcVar3 = (char *)xmalloc(sVar2 + 1);\n    pcVar4 = strcpy(pcVar3,pcVar4);\n  }" if (parenthesized_expression "(pcVar4 != (char *)0x0)" ( (binary_expression "pcVar4 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    sVar2 = strlen(pcVar4);\n    pcVar3 = (char *)xmalloc(sVar2 + 1);\n    pcVar4 = strcpy(pcVar3,pcVar4);\n  }" { (expression_statement "sVar2 = strlen(pcVar4);" (assignment_expression "sVar2 = strlen(pcVar4)" identifier = (call_expression "strlen(pcVar4)" identifier (argument_list "(pcVar4)" ( identifier )))) ;) (expression_statement "pcVar3 = (char *)xmalloc(sVar2 + 1);" (assignment_expression "pcVar3 = (char *)xmalloc(sVar2 + 1)" identifier = (cast_expression "(char *)xmalloc(sVar2 + 1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "xmalloc(sVar2 + 1)" identifier (argument_list "(sVar2 + 1)" ( (binary_expression "sVar2 + 1" identifier + number_literal) ))))) ;) (expression_statement "pcVar4 = strcpy(pcVar3,pcVar4);" (assignment_expression "pcVar4 = strcpy(pcVar3,pcVar4)" identifier = (call_expression "strcpy(pcVar3,pcVar4)" identifier (argument_list "(pcVar3,pcVar4)" ( identifier , identifier )))) ;) })) (expression_statement "puVar1[3] = pcVar4;" (assignment_expression "puVar1[3] = pcVar4" (subscript_expression "puVar1[3]" identifier [ number_literal ]) = identifier) ;) (expression_statement "pcVar4 = *(char **)(param_1 + 0x10);" (assignment_expression "pcVar4 = *(char **)(param_1 + 0x10)" identifier = (pointer_expression "*(char **)(param_1 + 0x10)" * (cast_expression "(char **)(param_1 + 0x10)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x10)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) ))))) ;) (if_statement "if (pcVar4 != (char *)0x0) {\n    sVar2 = strlen(pcVar4);\n    pcVar3 = (char *)xmalloc(sVar2 + 1);\n    pcVar4 = strcpy(pcVar3,pcVar4);\n  }" if (parenthesized_expression "(pcVar4 != (char *)0x0)" ( (binary_expression "pcVar4 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    sVar2 = strlen(pcVar4);\n    pcVar3 = (char *)xmalloc(sVar2 + 1);\n    pcVar4 = strcpy(pcVar3,pcVar4);\n  }" { (expression_statement "sVar2 = strlen(pcVar4);" (assignment_expression "sVar2 = strlen(pcVar4)" identifier = (call_expression "strlen(pcVar4)" identifier (argument_list "(pcVar4)" ( identifier )))) ;) (expression_statement "pcVar3 = (char *)xmalloc(sVar2 + 1);" (assignment_expression "pcVar3 = (char *)xmalloc(sVar2 + 1)" identifier = (cast_expression "(char *)xmalloc(sVar2 + 1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "xmalloc(sVar2 + 1)" identifier (argument_list "(sVar2 + 1)" ( (binary_expression "sVar2 + 1" identifier + number_literal) ))))) ;) (expression_statement "pcVar4 = strcpy(pcVar3,pcVar4);" (assignment_expression "pcVar4 = strcpy(pcVar3,pcVar4)" identifier = (call_expression "strcpy(pcVar3,pcVar4)" identifier (argument_list "(pcVar3,pcVar4)" ( identifier , identifier )))) ;) })) (expression_statement "puVar1[4] = pcVar4;" (assignment_expression "puVar1[4] = pcVar4" (subscript_expression "puVar1[4]" identifier [ number_literal ]) = identifier) ;) (expression_statement "pcVar4 = *(char **)(param_1 + 0x14);" (assignment_expression "pcVar4 = *(char **)(param_1 + 0x14)" identifier = (pointer_expression "*(char **)(param_1 + 0x14)" * (cast_expression "(char **)(param_1 + 0x14)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x14)" ( (binary_expression "param_1 + 0x14" identifier + number_literal) ))))) ;) (if_statement "if (pcVar4 != (char *)0x0) {\n    sVar2 = strlen(pcVar4);\n    pcVar3 = (char *)xmalloc(sVar2 + 1);\n    pcVar4 = strcpy(pcVar3,pcVar4);\n  }" if (parenthesized_expression "(pcVar4 != (char *)0x0)" ( (binary_expression "pcVar4 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    sVar2 = strlen(pcVar4);\n    pcVar3 = (char *)xmalloc(sVar2 + 1);\n    pcVar4 = strcpy(pcVar3,pcVar4);\n  }" { (expression_statement "sVar2 = strlen(pcVar4);" (assignment_expression "sVar2 = strlen(pcVar4)" identifier = (call_expression "strlen(pcVar4)" identifier (argument_list "(pcVar4)" ( identifier )))) ;) (expression_statement "pcVar3 = (char *)xmalloc(sVar2 + 1);" (assignment_expression "pcVar3 = (char *)xmalloc(sVar2 + 1)" identifier = (cast_expression "(char *)xmalloc(sVar2 + 1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "xmalloc(sVar2 + 1)" identifier (argument_list "(sVar2 + 1)" ( (binary_expression "sVar2 + 1" identifier + number_literal) ))))) ;) (expression_statement "pcVar4 = strcpy(pcVar3,pcVar4);" (assignment_expression "pcVar4 = strcpy(pcVar3,pcVar4)" identifier = (call_expression "strcpy(pcVar3,pcVar4)" identifier (argument_list "(pcVar3,pcVar4)" ( identifier , identifier )))) ;) })) (expression_statement "puVar1[5] = pcVar4;" (assignment_expression "puVar1[5] = pcVar4" (subscript_expression "puVar1[5]" identifier [ number_literal ]) = identifier) ;) (expression_statement "pcVar4 = *(char **)(param_1 + 0x18);" (assignment_expression "pcVar4 = *(char **)(param_1 + 0x18)" identifier = (pointer_expression "*(char **)(param_1 + 0x18)" * (cast_expression "(char **)(param_1 + 0x18)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x18)" ( (binary_expression "param_1 + 0x18" identifier + number_literal) ))))) ;) (if_statement "if (pcVar4 != (char *)0x0) {\n    sVar2 = strlen(pcVar4);\n    pcVar3 = (char *)xmalloc(sVar2 + 1);\n    pcVar4 = strcpy(pcVar3,pcVar4);\n  }" if (parenthesized_expression "(pcVar4 != (char *)0x0)" ( (binary_expression "pcVar4 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    sVar2 = strlen(pcVar4);\n    pcVar3 = (char *)xmalloc(sVar2 + 1);\n    pcVar4 = strcpy(pcVar3,pcVar4);\n  }" { (expression_statement "sVar2 = strlen(pcVar4);" (assignment_expression "sVar2 = strlen(pcVar4)" identifier = (call_expression "strlen(pcVar4)" identifier (argument_list "(pcVar4)" ( identifier )))) ;) (expression_statement "pcVar3 = (char *)xmalloc(sVar2 + 1);" (assignment_expression "pcVar3 = (char *)xmalloc(sVar2 + 1)" identifier = (cast_expression "(char *)xmalloc(sVar2 + 1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "xmalloc(sVar2 + 1)" identifier (argument_list "(sVar2 + 1)" ( (binary_expression "sVar2 + 1" identifier + number_literal) ))))) ;) (expression_statement "pcVar4 = strcpy(pcVar3,pcVar4);" (assignment_expression "pcVar4 = strcpy(pcVar3,pcVar4)" identifier = (call_expression "strcpy(pcVar3,pcVar4)" identifier (argument_list "(pcVar3,pcVar4)" ( identifier , identifier )))) ;) })) (expression_statement "puVar1[6] = pcVar4;" (assignment_expression "puVar1[6] = pcVar4" (subscript_expression "puVar1[6]" identifier [ number_literal ]) = identifier) ;) (expression_statement "pcVar4 = *(char **)(param_1 + 0x1c);" (assignment_expression "pcVar4 = *(char **)(param_1 + 0x1c)" identifier = (pointer_expression "*(char **)(param_1 + 0x1c)" * (cast_expression "(char **)(param_1 + 0x1c)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x1c)" ( (binary_expression "param_1 + 0x1c" identifier + number_literal) ))))) ;) (if_statement "if (pcVar4 != (char *)0x0) {\n    sVar2 = strlen(pcVar4);\n    pcVar3 = (char *)xmalloc(sVar2 + 1);\n    pcVar4 = strcpy(pcVar3,pcVar4);\n  }" if (parenthesized_expression "(pcVar4 != (char *)0x0)" ( (binary_expression "pcVar4 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    sVar2 = strlen(pcVar4);\n    pcVar3 = (char *)xmalloc(sVar2 + 1);\n    pcVar4 = strcpy(pcVar3,pcVar4);\n  }" { (expression_statement "sVar2 = strlen(pcVar4);" (assignment_expression "sVar2 = strlen(pcVar4)" identifier = (call_expression "strlen(pcVar4)" identifier (argument_list "(pcVar4)" ( identifier )))) ;) (expression_statement "pcVar3 = (char *)xmalloc(sVar2 + 1);" (assignment_expression "pcVar3 = (char *)xmalloc(sVar2 + 1)" identifier = (cast_expression "(char *)xmalloc(sVar2 + 1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "xmalloc(sVar2 + 1)" identifier (argument_list "(sVar2 + 1)" ( (binary_expression "sVar2 + 1" identifier + number_literal) ))))) ;) (expression_statement "pcVar4 = strcpy(pcVar3,pcVar4);" (assignment_expression "pcVar4 = strcpy(pcVar3,pcVar4)" identifier = (call_expression "strcpy(pcVar3,pcVar4)" identifier (argument_list "(pcVar3,pcVar4)" ( identifier , identifier )))) ;) })) (expression_statement "puVar1[7] = pcVar4;" (assignment_expression "puVar1[7] = pcVar4" (subscript_expression "puVar1[7]" identifier [ number_literal ]) = identifier) ;) (expression_statement "pcVar4 = *(char **)(param_1 + 0x20);" (assignment_expression "pcVar4 = *(char **)(param_1 + 0x20)" identifier = (pointer_expression "*(char **)(param_1 + 0x20)" * (cast_expression "(char **)(param_1 + 0x20)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x20)" ( (binary_expression "param_1 + 0x20" identifier + number_literal) ))))) ;) (if_statement "if (pcVar4 != (char *)0x0) {\n    sVar2 = strlen(pcVar4);\n    pcVar3 = (char *)xmalloc(sVar2 + 1);\n    pcVar4 = strcpy(pcVar3,pcVar4);\n  }" if (parenthesized_expression "(pcVar4 != (char *)0x0)" ( (binary_expression "pcVar4 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    sVar2 = strlen(pcVar4);\n    pcVar3 = (char *)xmalloc(sVar2 + 1);\n    pcVar4 = strcpy(pcVar3,pcVar4);\n  }" { (expression_statement "sVar2 = strlen(pcVar4);" (assignment_expression "sVar2 = strlen(pcVar4)" identifier = (call_expression "strlen(pcVar4)" identifier (argument_list "(pcVar4)" ( identifier )))) ;) (expression_statement "pcVar3 = (char *)xmalloc(sVar2 + 1);" (assignment_expression "pcVar3 = (char *)xmalloc(sVar2 + 1)" identifier = (cast_expression "(char *)xmalloc(sVar2 + 1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "xmalloc(sVar2 + 1)" identifier (argument_list "(sVar2 + 1)" ( (binary_expression "sVar2 + 1" identifier + number_literal) ))))) ;) (expression_statement "pcVar4 = strcpy(pcVar3,pcVar4);" (assignment_expression "pcVar4 = strcpy(pcVar3,pcVar4)" identifier = (call_expression "strcpy(pcVar3,pcVar4)" identifier (argument_list "(pcVar3,pcVar4)" ( identifier , identifier )))) ;) })) (expression_statement "puVar1[8] = pcVar4;" (assignment_expression "puVar1[8] = pcVar4" (subscript_expression "puVar1[8]" identifier [ number_literal ]) = identifier) ;) (expression_statement "pcVar4 = *(char **)(param_1 + 0x24);" (assignment_expression "pcVar4 = *(char **)(param_1 + 0x24)" identifier = (pointer_expression "*(char **)(param_1 + 0x24)" * (cast_expression "(char **)(param_1 + 0x24)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x24)" ( (binary_expression "param_1 + 0x24" identifier + number_literal) ))))) ;) (if_statement "if (pcVar4 != (char *)0x0) {\n    sVar2 = strlen(pcVar4);\n    pcVar3 = (char *)xmalloc(sVar2 + 1);\n    pcVar4 = strcpy(pcVar3,pcVar4);\n  }" if (parenthesized_expression "(pcVar4 != (char *)0x0)" ( (binary_expression "pcVar4 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    sVar2 = strlen(pcVar4);\n    pcVar3 = (char *)xmalloc(sVar2 + 1);\n    pcVar4 = strcpy(pcVar3,pcVar4);\n  }" { (expression_statement "sVar2 = strlen(pcVar4);" (assignment_expression "sVar2 = strlen(pcVar4)" identifier = (call_expression "strlen(pcVar4)" identifier (argument_list "(pcVar4)" ( identifier )))) ;) (expression_statement "pcVar3 = (char *)xmalloc(sVar2 + 1);" (assignment_expression "pcVar3 = (char *)xmalloc(sVar2 + 1)" identifier = (cast_expression "(char *)xmalloc(sVar2 + 1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "xmalloc(sVar2 + 1)" identifier (argument_list "(sVar2 + 1)" ( (binary_expression "sVar2 + 1" identifier + number_literal) ))))) ;) (expression_statement "pcVar4 = strcpy(pcVar3,pcVar4);" (assignment_expression "pcVar4 = strcpy(pcVar3,pcVar4)" identifier = (call_expression "strcpy(pcVar3,pcVar4)" identifier (argument_list "(pcVar3,pcVar4)" ( identifier , identifier )))) ;) })) (expression_statement "pcVar3 = *(char **)(param_1 + 0x28);" (assignment_expression "pcVar3 = *(char **)(param_1 + 0x28)" identifier = (pointer_expression "*(char **)(param_1 + 0x28)" * (cast_expression "(char **)(param_1 + 0x28)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x28)" ( (binary_expression "param_1 + 0x28" identifier + number_literal) ))))) ;) (expression_statement "puVar1[9] = pcVar4;" (assignment_expression "puVar1[9] = pcVar4" (subscript_expression "puVar1[9]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (pcVar3 != (char *)0x0) {\n    sVar2 = strlen(pcVar3);\n    pcVar4 = (char *)xmalloc(sVar2 + 1);\n    pcVar3 = strcpy(pcVar4,pcVar3);\n  }" if (parenthesized_expression "(pcVar3 != (char *)0x0)" ( (binary_expression "pcVar3 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    sVar2 = strlen(pcVar3);\n    pcVar4 = (char *)xmalloc(sVar2 + 1);\n    pcVar3 = strcpy(pcVar4,pcVar3);\n  }" { (expression_statement "sVar2 = strlen(pcVar3);" (assignment_expression "sVar2 = strlen(pcVar3)" identifier = (call_expression "strlen(pcVar3)" identifier (argument_list "(pcVar3)" ( identifier )))) ;) (expression_statement "pcVar4 = (char *)xmalloc(sVar2 + 1);" (assignment_expression "pcVar4 = (char *)xmalloc(sVar2 + 1)" identifier = (cast_expression "(char *)xmalloc(sVar2 + 1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "xmalloc(sVar2 + 1)" identifier (argument_list "(sVar2 + 1)" ( (binary_expression "sVar2 + 1" identifier + number_literal) ))))) ;) (expression_statement "pcVar3 = strcpy(pcVar4,pcVar3);" (assignment_expression "pcVar3 = strcpy(pcVar4,pcVar3)" identifier = (call_expression "strcpy(pcVar4,pcVar3)" identifier (argument_list "(pcVar4,pcVar3)" ( identifier , identifier )))) ;) })) (expression_statement "puVar1[10] = pcVar3;" (assignment_expression "puVar1[10] = pcVar3" (subscript_expression "puVar1[10]" identifier [ number_literal ]) = identifier) ;) (return_statement "return puVar1;" return identifier ;) })))
(translation_unit (function_definition TYPE (pointer_declarator * (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) )))) (compound_statement { (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( LIT ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (subscript_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 != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT )))) ;) })) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT )))) ;) })) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT )))) ;) })) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT )))) ;) })) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT )))) ;) })) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT )))) ;) })) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT )))) ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT )))) ;) })) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (return_statement return IDENT ;) })))
(function_definition "undefined4 * compspec_copy(int param_1)\n\n{\n  undefined4 *puVar1;\n  size_t sVar2;\n  char *pcVar3;\n  char *pcVar4;\n  \n  puVar1 = (undefined4 *)xmalloc(0x2c);\n  pcVar4 = *(char **)(param_1 + 0xc);\n  *puVar1 = 1;\n  puVar1[1] = *(undefined4 *)(param_1 + 4);\n  puVar1[2] = *(undefined4 *)(param_1 + 8);\n  if (pcVar4 != (char *)0x0) {\n    sVar2 = strlen(pcVar4);\n    pcVar3 = (char *)xmalloc(sVar2 + 1);\n    pcVar4 = strcpy(pcVar3,pcVar4);\n  }\n  puVar1[3] = pcVar4;\n  pcVar4 = *(char **)(param_1 + 0x10);\n  if (pcVar4 != (char *)0x0) {\n    sVar2 = strlen(pcVar4);\n    pcVar3 = (char *)xmalloc(sVar2 + 1);\n    pcVar4 = strcpy(pcVar3,pcVar4);\n  }\n  puVar1[4] = pcVar4;\n  pcVar4 = *(char **)(param_1 + 0x14);\n  if (pcVar4 != (char *)0x0) {\n    sVar2 = strlen(pcVar4);\n    pcVar3 = (char *)xmalloc(sVar2 + 1);\n    pcVar4 = strcpy(pcVar3,pcVar4);\n  }\n  puVar1[5] = pcVar4;\n  pcVar4 = *(char **)(param_1 + 0x18);\n  if (pcVar4 != (char *)0x0) {\n    sVar2 = strlen(pcVar4);\n    pcVar3 = (char *)xmalloc(sVar2 + 1);\n    pcVar4 = strcpy(pcVar3,pcVar4);\n  }\n  puVar1[6] = pcVar4;\n  pcVar4 = *(char **)(param_1 + 0x1c);\n  if (pcVar4 != (char *)0x0) {\n    sVar2 = strlen(pcVar4);\n    pcVar3 = (char *)xmalloc(sVar2 + 1);\n    pcVar4 = strcpy(pcVar3,pcVar4);\n  }\n  puVar1[7] = pcVar4;\n  pcVar4 = *(char **)(param_1 + 0x20);\n  if (pcVar4 != (char *)0x0) {\n    sVar2 = strlen(pcVar4);\n    pcVar3 = (char *)xmalloc(sVar2 + 1);\n    pcVar4 = strcpy(pcVar3,pcVar4);\n  }\n  puVar1[8] = pcVar4;\n  pcVar4 = *(char **)(param_1 + 0x24);\n  if (pcVar4 != (char *)0x0) {\n    sVar2 = strlen(pcVar4);\n    pcVar3 = (char *)xmalloc(sVar2 + 1);\n    pcVar4 = strcpy(pcVar3,pcVar4);\n  }\n  pcVar3 = *(char **)(param_1 + 0x28);\n  puVar1[9] = pcVar4;\n  if (pcVar3 != (char *)0x0) {\n    sVar2 = strlen(pcVar3);\n    pcVar4 = (char *)xmalloc(sVar2 + 1);\n    pcVar3 = strcpy(pcVar4,pcVar3);\n  }\n  puVar1[10] = pcVar3;\n  return puVar1;\n}" (type_identifier "undefined4") (pointer_declarator "* compspec_copy(int param_1)" (* "*") (function_declarator "compspec_copy(int param_1)" (identifier "compspec_copy") (parameter_list "(int param_1)" (( "(") (parameter_declaration "int param_1" (primitive_type "int") (identifier "param_1")) () ")")))) (compound_statement "{\n  undefined4 *puVar1;\n  size_t sVar2;\n  char *pcVar3;\n  char *pcVar4;\n  \n  puVar1 = (undefined4 *)xmalloc(0x2c);\n  pcVar4 = *(char **)(param_1 + 0xc);\n  *puVar1 = 1;\n  puVar1[1] = *(undefined4 *)(param_1 + 4);\n  puVar1[2] = *(undefined4 *)(param_1 + 8);\n  if (pcVar4 != (char *)0x0) {\n    sVar2 = strlen(pcVar4);\n    pcVar3 = (char *)xmalloc(sVar2 + 1);\n    pcVar4 = strcpy(pcVar3,pcVar4);\n  }\n  puVar1[3] = pcVar4;\n  pcVar4 = *(char **)(param_1 + 0x10);\n  if (pcVar4 != (char *)0x0) {\n    sVar2 = strlen(pcVar4);\n    pcVar3 = (char *)xmalloc(sVar2 + 1);\n    pcVar4 = strcpy(pcVar3,pcVar4);\n  }\n  puVar1[4] = pcVar4;\n  pcVar4 = *(char **)(param_1 + 0x14);\n  if (pcVar4 != (char *)0x0) {\n    sVar2 = strlen(pcVar4);\n    pcVar3 = (char *)xmalloc(sVar2 + 1);\n    pcVar4 = strcpy(pcVar3,pcVar4);\n  }\n  puVar1[5] = pcVar4;\n  pcVar4 = *(char **)(param_1 + 0x18);\n  if (pcVar4 != (char *)0x0) {\n    sVar2 = strlen(pcVar4);\n    pcVar3 = (char *)xmalloc(sVar2 + 1);\n    pcVar4 = strcpy(pcVar3,pcVar4);\n  }\n  puVar1[6] = pcVar4;\n  pcVar4 = *(char **)(param_1 + 0x1c);\n  if (pcVar4 != (char *)0x0) {\n    sVar2 = strlen(pcVar4);\n    pcVar3 = (char *)xmalloc(sVar2 + 1);\n    pcVar4 = strcpy(pcVar3,pcVar4);\n  }\n  puVar1[7] = pcVar4;\n  pcVar4 = *(char **)(param_1 + 0x20);\n  if (pcVar4 != (char *)0x0) {\n    sVar2 = strlen(pcVar4);\n    pcVar3 = (char *)xmalloc(sVar2 + 1);\n    pcVar4 = strcpy(pcVar3,pcVar4);\n  }\n  puVar1[8] = pcVar4;\n  pcVar4 = *(char **)(param_1 + 0x24);\n  if (pcVar4 != (char *)0x0) {\n    sVar2 = strlen(pcVar4);\n    pcVar3 = (char *)xmalloc(sVar2 + 1);\n    pcVar4 = strcpy(pcVar3,pcVar4);\n  }\n  pcVar3 = *(char **)(param_1 + 0x28);\n  puVar1[9] = pcVar4;\n  if (pcVar3 != (char *)0x0) {\n    sVar2 = strlen(pcVar3);\n    pcVar4 = (char *)xmalloc(sVar2 + 1);\n    pcVar3 = strcpy(pcVar4,pcVar3);\n  }\n  puVar1[10] = pcVar3;\n  return puVar1;\n}" ({ "{") (declaration "undefined4 *puVar1;" (type_identifier "undefined4") (pointer_declarator "*puVar1" (* "*") (identifier "puVar1")) (; ";")) (declaration "size_t sVar2;" (primitive_type "size_t") (identifier "sVar2") (; ";")) (declaration "char *pcVar3;" (primitive_type "char") (pointer_declarator "*pcVar3" (* "*") (identifier "pcVar3")) (; ";")) (declaration "char *pcVar4;" (primitive_type "char") (pointer_declarator "*pcVar4" (* "*") (identifier "pcVar4")) (; ";")) (expression_statement "puVar1 = (undefined4 *)xmalloc(0x2c);" (assignment_expression "puVar1 = (undefined4 *)xmalloc(0x2c)" (identifier "puVar1") (= "=") (cast_expression "(undefined4 *)xmalloc(0x2c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "xmalloc(0x2c)" (identifier "xmalloc") (argument_list "(0x2c)" (( "(") (number_literal "0x2c") () ")"))))) (; ";")) (expression_statement "pcVar4 = *(char **)(param_1 + 0xc);" (assignment_expression "pcVar4 = *(char **)(param_1 + 0xc)" (identifier "pcVar4") (= "=") (pointer_expression "*(char **)(param_1 + 0xc)" (* "*") (cast_expression "(char **)(param_1 + 0xc)" (( "(") (type_descriptor "char **" (primitive_type "char") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0xc)" (( "(") (binary_expression "param_1 + 0xc" (identifier "param_1") (+ "+") (number_literal "0xc")) () ")"))))) (; ";")) (expression_statement "*puVar1 = 1;" (assignment_expression "*puVar1 = 1" (pointer_expression "*puVar1" (* "*") (identifier "puVar1")) (= "=") (number_literal "1")) (; ";")) (expression_statement "puVar1[1] = *(undefined4 *)(param_1 + 4);" (assignment_expression "puVar1[1] = *(undefined4 *)(param_1 + 4)" (subscript_expression "puVar1[1]" (identifier "puVar1") ([ "[") (number_literal "1") (] "]")) (= "=") (pointer_expression "*(undefined4 *)(param_1 + 4)" (* "*") (cast_expression "(undefined4 *)(param_1 + 4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 4)" (( "(") (binary_expression "param_1 + 4" (identifier "param_1") (+ "+") (number_literal "4")) () ")"))))) (; ";")) (expression_statement "puVar1[2] = *(undefined4 *)(param_1 + 8);" (assignment_expression "puVar1[2] = *(undefined4 *)(param_1 + 8)" (subscript_expression "puVar1[2]" (identifier "puVar1") ([ "[") (number_literal "2") (] "]")) (= "=") (pointer_expression "*(undefined4 *)(param_1 + 8)" (* "*") (cast_expression "(undefined4 *)(param_1 + 8)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 8)" (( "(") (binary_expression "param_1 + 8" (identifier "param_1") (+ "+") (number_literal "8")) () ")"))))) (; ";")) (if_statement "if (pcVar4 != (char *)0x0) {\n    sVar2 = strlen(pcVar4);\n    pcVar3 = (char *)xmalloc(sVar2 + 1);\n    pcVar4 = strcpy(pcVar3,pcVar4);\n  }" (if "if") (parenthesized_expression "(pcVar4 != (char *)0x0)" (( "(") (binary_expression "pcVar4 != (char *)0x0" (identifier "pcVar4") (!= "!=") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n    sVar2 = strlen(pcVar4);\n    pcVar3 = (char *)xmalloc(sVar2 + 1);\n    pcVar4 = strcpy(pcVar3,pcVar4);\n  }" ({ "{") (expression_statement "sVar2 = strlen(pcVar4);" (assignment_expression "sVar2 = strlen(pcVar4)" (identifier "sVar2") (= "=") (call_expression "strlen(pcVar4)" (identifier "strlen") (argument_list "(pcVar4)" (( "(") (identifier "pcVar4") () ")")))) (; ";")) (expression_statement "pcVar3 = (char *)xmalloc(sVar2 + 1);" (assignment_expression "pcVar3 = (char *)xmalloc(sVar2 + 1)" (identifier "pcVar3") (= "=") (cast_expression "(char *)xmalloc(sVar2 + 1)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "xmalloc(sVar2 + 1)" (identifier "xmalloc") (argument_list "(sVar2 + 1)" (( "(") (binary_expression "sVar2 + 1" (identifier "sVar2") (+ "+") (number_literal "1")) () ")"))))) (; ";")) (expression_statement "pcVar4 = strcpy(pcVar3,pcVar4);" (assignment_expression "pcVar4 = strcpy(pcVar3,pcVar4)" (identifier "pcVar4") (= "=") (call_expression "strcpy(pcVar3,pcVar4)" (identifier "strcpy") (argument_list "(pcVar3,pcVar4)" (( "(") (identifier "pcVar3") (, ",") (identifier "pcVar4") () ")")))) (; ";")) (} "}"))) (expression_statement "puVar1[3] = pcVar4;" (assignment_expression "puVar1[3] = pcVar4" (subscript_expression "puVar1[3]" (identifier "puVar1") ([ "[") (number_literal "3") (] "]")) (= "=") (identifier "pcVar4")) (; ";")) (expression_statement "pcVar4 = *(char **)(param_1 + 0x10);" (assignment_expression "pcVar4 = *(char **)(param_1 + 0x10)" (identifier "pcVar4") (= "=") (pointer_expression "*(char **)(param_1 + 0x10)" (* "*") (cast_expression "(char **)(param_1 + 0x10)" (( "(") (type_descriptor "char **" (primitive_type "char") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0x10)" (( "(") (binary_expression "param_1 + 0x10" (identifier "param_1") (+ "+") (number_literal "0x10")) () ")"))))) (; ";")) (if_statement "if (pcVar4 != (char *)0x0) {\n    sVar2 = strlen(pcVar4);\n    pcVar3 = (char *)xmalloc(sVar2 + 1);\n    pcVar4 = strcpy(pcVar3,pcVar4);\n  }" (if "if") (parenthesized_expression "(pcVar4 != (char *)0x0)" (( "(") (binary_expression "pcVar4 != (char *)0x0" (identifier "pcVar4") (!= "!=") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n    sVar2 = strlen(pcVar4);\n    pcVar3 = (char *)xmalloc(sVar2 + 1);\n    pcVar4 = strcpy(pcVar3,pcVar4);\n  }" ({ "{") (expression_statement "sVar2 = strlen(pcVar4);" (assignment_expression "sVar2 = strlen(pcVar4)" (identifier "sVar2") (= "=") (call_expression "strlen(pcVar4)" (identifier "strlen") (argument_list "(pcVar4)" (( "(") (identifier "pcVar4") () ")")))) (; ";")) (expression_statement "pcVar3 = (char *)xmalloc(sVar2 + 1);" (assignment_expression "pcVar3 = (char *)xmalloc(sVar2 + 1)" (identifier "pcVar3") (= "=") (cast_expression "(char *)xmalloc(sVar2 + 1)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "xmalloc(sVar2 + 1)" (identifier "xmalloc") (argument_list "(sVar2 + 1)" (( "(") (binary_expression "sVar2 + 1" (identifier "sVar2") (+ "+") (number_literal "1")) () ")"))))) (; ";")) (expression_statement "pcVar4 = strcpy(pcVar3,pcVar4);" (assignment_expression "pcVar4 = strcpy(pcVar3,pcVar4)" (identifier "pcVar4") (= "=") (call_expression "strcpy(pcVar3,pcVar4)" (identifier "strcpy") (argument_list "(pcVar3,pcVar4)" (( "(") (identifier "pcVar3") (, ",") (identifier "pcVar4") () ")")))) (; ";")) (} "}"))) (expression_statement "puVar1[4] = pcVar4;" (assignment_expression "puVar1[4] = pcVar4" (subscript_expression "puVar1[4]" (identifier "puVar1") ([ "[") (number_literal "4") (] "]")) (= "=") (identifier "pcVar4")) (; ";")) (expression_statement "pcVar4 = *(char **)(param_1 + 0x14);" (assignment_expression "pcVar4 = *(char **)(param_1 + 0x14)" (identifier "pcVar4") (= "=") (pointer_expression "*(char **)(param_1 + 0x14)" (* "*") (cast_expression "(char **)(param_1 + 0x14)" (( "(") (type_descriptor "char **" (primitive_type "char") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0x14)" (( "(") (binary_expression "param_1 + 0x14" (identifier "param_1") (+ "+") (number_literal "0x14")) () ")"))))) (; ";")) (if_statement "if (pcVar4 != (char *)0x0) {\n    sVar2 = strlen(pcVar4);\n    pcVar3 = (char *)xmalloc(sVar2 + 1);\n    pcVar4 = strcpy(pcVar3,pcVar4);\n  }" (if "if") (parenthesized_expression "(pcVar4 != (char *)0x0)" (( "(") (binary_expression "pcVar4 != (char *)0x0" (identifier "pcVar4") (!= "!=") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n    sVar2 = strlen(pcVar4);\n    pcVar3 = (char *)xmalloc(sVar2 + 1);\n    pcVar4 = strcpy(pcVar3,pcVar4);\n  }" ({ "{") (expression_statement "sVar2 = strlen(pcVar4);" (assignment_expression "sVar2 = strlen(pcVar4)" (identifier "sVar2") (= "=") (call_expression "strlen(pcVar4)" (identifier "strlen") (argument_list "(pcVar4)" (( "(") (identifier "pcVar4") () ")")))) (; ";")) (expression_statement "pcVar3 = (char *)xmalloc(sVar2 + 1);" (assignment_expression "pcVar3 = (char *)xmalloc(sVar2 + 1)" (identifier "pcVar3") (= "=") (cast_expression "(char *)xmalloc(sVar2 + 1)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "xmalloc(sVar2 + 1)" (identifier "xmalloc") (argument_list "(sVar2 + 1)" (( "(") (binary_expression "sVar2 + 1" (identifier "sVar2") (+ "+") (number_literal "1")) () ")"))))) (; ";")) (expression_statement "pcVar4 = strcpy(pcVar3,pcVar4);" (assignment_expression "pcVar4 = strcpy(pcVar3,pcVar4)" (identifier "pcVar4") (= "=") (call_expression "strcpy(pcVar3,pcVar4)" (identifier "strcpy") (argument_list "(pcVar3,pcVar4)" (( "(") (identifier "pcVar3") (, ",") (identifier "pcVar4") () ")")))) (; ";")) (} "}"))) (expression_statement "puVar1[5] = pcVar4;" (assignment_expression "puVar1[5] = pcVar4" (subscript_expression "puVar1[5]" (identifier "puVar1") ([ "[") (number_literal "5") (] "]")) (= "=") (identifier "pcVar4")) (; ";")) (expression_statement "pcVar4 = *(char **)(param_1 + 0x18);" (assignment_expression "pcVar4 = *(char **)(param_1 + 0x18)" (identifier "pcVar4") (= "=") (pointer_expression "*(char **)(param_1 + 0x18)" (* "*") (cast_expression "(char **)(param_1 + 0x18)" (( "(") (type_descriptor "char **" (primitive_type "char") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0x18)" (( "(") (binary_expression "param_1 + 0x18" (identifier "param_1") (+ "+") (number_literal "0x18")) () ")"))))) (; ";")) (if_statement "if (pcVar4 != (char *)0x0) {\n    sVar2 = strlen(pcVar4);\n    pcVar3 = (char *)xmalloc(sVar2 + 1);\n    pcVar4 = strcpy(pcVar3,pcVar4);\n  }" (if "if") (parenthesized_expression "(pcVar4 != (char *)0x0)" (( "(") (binary_expression "pcVar4 != (char *)0x0" (identifier "pcVar4") (!= "!=") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n    sVar2 = strlen(pcVar4);\n    pcVar3 = (char *)xmalloc(sVar2 + 1);\n    pcVar4 = strcpy(pcVar3,pcVar4);\n  }" ({ "{") (expression_statement "sVar2 = strlen(pcVar4);" (assignment_expression "sVar2 = strlen(pcVar4)" (identifier "sVar2") (= "=") (call_expression "strlen(pcVar4)" (identifier "strlen") (argument_list "(pcVar4)" (( "(") (identifier "pcVar4") () ")")))) (; ";")) (expression_statement "pcVar3 = (char *)xmalloc(sVar2 + 1);" (assignment_expression "pcVar3 = (char *)xmalloc(sVar2 + 1)" (identifier "pcVar3") (= "=") (cast_expression "(char *)xmalloc(sVar2 + 1)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "xmalloc(sVar2 + 1)" (identifier "xmalloc") (argument_list "(sVar2 + 1)" (( "(") (binary_expression "sVar2 + 1" (identifier "sVar2") (+ "+") (number_literal "1")) () ")"))))) (; ";")) (expression_statement "pcVar4 = strcpy(pcVar3,pcVar4);" (assignment_expression "pcVar4 = strcpy(pcVar3,pcVar4)" (identifier "pcVar4") (= "=") (call_expression "strcpy(pcVar3,pcVar4)" (identifier "strcpy") (argument_list "(pcVar3,pcVar4)" (( "(") (identifier "pcVar3") (, ",") (identifier "pcVar4") () ")")))) (; ";")) (} "}"))) (expression_statement "puVar1[6] = pcVar4;" (assignment_expression "puVar1[6] = pcVar4" (subscript_expression "puVar1[6]" (identifier "puVar1") ([ "[") (number_literal "6") (] "]")) (= "=") (identifier "pcVar4")) (; ";")) (expression_statement "pcVar4 = *(char **)(param_1 + 0x1c);" (assignment_expression "pcVar4 = *(char **)(param_1 + 0x1c)" (identifier "pcVar4") (= "=") (pointer_expression "*(char **)(param_1 + 0x1c)" (* "*") (cast_expression "(char **)(param_1 + 0x1c)" (( "(") (type_descriptor "char **" (primitive_type "char") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0x1c)" (( "(") (binary_expression "param_1 + 0x1c" (identifier "param_1") (+ "+") (number_literal "0x1c")) () ")"))))) (; ";")) (if_statement "if (pcVar4 != (char *)0x0) {\n    sVar2 = strlen(pcVar4);\n    pcVar3 = (char *)xmalloc(sVar2 + 1);\n    pcVar4 = strcpy(pcVar3,pcVar4);\n  }" (if "if") (parenthesized_expression "(pcVar4 != (char *)0x0)" (( "(") (binary_expression "pcVar4 != (char *)0x0" (identifier "pcVar4") (!= "!=") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n    sVar2 = strlen(pcVar4);\n    pcVar3 = (char *)xmalloc(sVar2 + 1);\n    pcVar4 = strcpy(pcVar3,pcVar4);\n  }" ({ "{") (expression_statement "sVar2 = strlen(pcVar4);" (assignment_expression "sVar2 = strlen(pcVar4)" (identifier "sVar2") (= "=") (call_expression "strlen(pcVar4)" (identifier "strlen") (argument_list "(pcVar4)" (( "(") (identifier "pcVar4") () ")")))) (; ";")) (expression_statement "pcVar3 = (char *)xmalloc(sVar2 + 1);" (assignment_expression "pcVar3 = (char *)xmalloc(sVar2 + 1)" (identifier "pcVar3") (= "=") (cast_expression "(char *)xmalloc(sVar2 + 1)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "xmalloc(sVar2 + 1)" (identifier "xmalloc") (argument_list "(sVar2 + 1)" (( "(") (binary_expression "sVar2 + 1" (identifier "sVar2") (+ "+") (number_literal "1")) () ")"))))) (; ";")) (expression_statement "pcVar4 = strcpy(pcVar3,pcVar4);" (assignment_expression "pcVar4 = strcpy(pcVar3,pcVar4)" (identifier "pcVar4") (= "=") (call_expression "strcpy(pcVar3,pcVar4)" (identifier "strcpy") (argument_list "(pcVar3,pcVar4)" (( "(") (identifier "pcVar3") (, ",") (identifier "pcVar4") () ")")))) (; ";")) (} "}"))) (expression_statement "puVar1[7] = pcVar4;" (assignment_expression "puVar1[7] = pcVar4" (subscript_expression "puVar1[7]" (identifier "puVar1") ([ "[") (number_literal "7") (] "]")) (= "=") (identifier "pcVar4")) (; ";")) (expression_statement "pcVar4 = *(char **)(param_1 + 0x20);" (assignment_expression "pcVar4 = *(char **)(param_1 + 0x20)" (identifier "pcVar4") (= "=") (pointer_expression "*(char **)(param_1 + 0x20)" (* "*") (cast_expression "(char **)(param_1 + 0x20)" (( "(") (type_descriptor "char **" (primitive_type "char") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0x20)" (( "(") (binary_expression "param_1 + 0x20" (identifier "param_1") (+ "+") (number_literal "0x20")) () ")"))))) (; ";")) (if_statement "if (pcVar4 != (char *)0x0) {\n    sVar2 = strlen(pcVar4);\n    pcVar3 = (char *)xmalloc(sVar2 + 1);\n    pcVar4 = strcpy(pcVar3,pcVar4);\n  }" (if "if") (parenthesized_expression "(pcVar4 != (char *)0x0)" (( "(") (binary_expression "pcVar4 != (char *)0x0" (identifier "pcVar4") (!= "!=") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n    sVar2 = strlen(pcVar4);\n    pcVar3 = (char *)xmalloc(sVar2 + 1);\n    pcVar4 = strcpy(pcVar3,pcVar4);\n  }" ({ "{") (expression_statement "sVar2 = strlen(pcVar4);" (assignment_expression "sVar2 = strlen(pcVar4)" (identifier "sVar2") (= "=") (call_expression "strlen(pcVar4)" (identifier "strlen") (argument_list "(pcVar4)" (( "(") (identifier "pcVar4") () ")")))) (; ";")) (expression_statement "pcVar3 = (char *)xmalloc(sVar2 + 1);" (assignment_expression "pcVar3 = (char *)xmalloc(sVar2 + 1)" (identifier "pcVar3") (= "=") (cast_expression "(char *)xmalloc(sVar2 + 1)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "xmalloc(sVar2 + 1)" (identifier "xmalloc") (argument_list "(sVar2 + 1)" (( "(") (binary_expression "sVar2 + 1" (identifier "sVar2") (+ "+") (number_literal "1")) () ")"))))) (; ";")) (expression_statement "pcVar4 = strcpy(pcVar3,pcVar4);" (assignment_expression "pcVar4 = strcpy(pcVar3,pcVar4)" (identifier "pcVar4") (= "=") (call_expression "strcpy(pcVar3,pcVar4)" (identifier "strcpy") (argument_list "(pcVar3,pcVar4)" (( "(") (identifier "pcVar3") (, ",") (identifier "pcVar4") () ")")))) (; ";")) (} "}"))) (expression_statement "puVar1[8] = pcVar4;" (assignment_expression "puVar1[8] = pcVar4" (subscript_expression "puVar1[8]" (identifier "puVar1") ([ "[") (number_literal "8") (] "]")) (= "=") (identifier "pcVar4")) (; ";")) (expression_statement "pcVar4 = *(char **)(param_1 + 0x24);" (assignment_expression "pcVar4 = *(char **)(param_1 + 0x24)" (identifier "pcVar4") (= "=") (pointer_expression "*(char **)(param_1 + 0x24)" (* "*") (cast_expression "(char **)(param_1 + 0x24)" (( "(") (type_descriptor "char **" (primitive_type "char") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0x24)" (( "(") (binary_expression "param_1 + 0x24" (identifier "param_1") (+ "+") (number_literal "0x24")) () ")"))))) (; ";")) (if_statement "if (pcVar4 != (char *)0x0) {\n    sVar2 = strlen(pcVar4);\n    pcVar3 = (char *)xmalloc(sVar2 + 1);\n    pcVar4 = strcpy(pcVar3,pcVar4);\n  }" (if "if") (parenthesized_expression "(pcVar4 != (char *)0x0)" (( "(") (binary_expression "pcVar4 != (char *)0x0" (identifier "pcVar4") (!= "!=") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n    sVar2 = strlen(pcVar4);\n    pcVar3 = (char *)xmalloc(sVar2 + 1);\n    pcVar4 = strcpy(pcVar3,pcVar4);\n  }" ({ "{") (expression_statement "sVar2 = strlen(pcVar4);" (assignment_expression "sVar2 = strlen(pcVar4)" (identifier "sVar2") (= "=") (call_expression "strlen(pcVar4)" (identifier "strlen") (argument_list "(pcVar4)" (( "(") (identifier "pcVar4") () ")")))) (; ";")) (expression_statement "pcVar3 = (char *)xmalloc(sVar2 + 1);" (assignment_expression "pcVar3 = (char *)xmalloc(sVar2 + 1)" (identifier "pcVar3") (= "=") (cast_expression "(char *)xmalloc(sVar2 + 1)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "xmalloc(sVar2 + 1)" (identifier "xmalloc") (argument_list "(sVar2 + 1)" (( "(") (binary_expression "sVar2 + 1" (identifier "sVar2") (+ "+") (number_literal "1")) () ")"))))) (; ";")) (expression_statement "pcVar4 = strcpy(pcVar3,pcVar4);" (assignment_expression "pcVar4 = strcpy(pcVar3,pcVar4)" (identifier "pcVar4") (= "=") (call_expression "strcpy(pcVar3,pcVar4)" (identifier "strcpy") (argument_list "(pcVar3,pcVar4)" (( "(") (identifier "pcVar3") (, ",") (identifier "pcVar4") () ")")))) (; ";")) (} "}"))) (expression_statement "pcVar3 = *(char **)(param_1 + 0x28);" (assignment_expression "pcVar3 = *(char **)(param_1 + 0x28)" (identifier "pcVar3") (= "=") (pointer_expression "*(char **)(param_1 + 0x28)" (* "*") (cast_expression "(char **)(param_1 + 0x28)" (( "(") (type_descriptor "char **" (primitive_type "char") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0x28)" (( "(") (binary_expression "param_1 + 0x28" (identifier "param_1") (+ "+") (number_literal "0x28")) () ")"))))) (; ";")) (expression_statement "puVar1[9] = pcVar4;" (assignment_expression "puVar1[9] = pcVar4" (subscript_expression "puVar1[9]" (identifier "puVar1") ([ "[") (number_literal "9") (] "]")) (= "=") (identifier "pcVar4")) (; ";")) (if_statement "if (pcVar3 != (char *)0x0) {\n    sVar2 = strlen(pcVar3);\n    pcVar4 = (char *)xmalloc(sVar2 + 1);\n    pcVar3 = strcpy(pcVar4,pcVar3);\n  }" (if "if") (parenthesized_expression "(pcVar3 != (char *)0x0)" (( "(") (binary_expression "pcVar3 != (char *)0x0" (identifier "pcVar3") (!= "!=") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n    sVar2 = strlen(pcVar3);\n    pcVar4 = (char *)xmalloc(sVar2 + 1);\n    pcVar3 = strcpy(pcVar4,pcVar3);\n  }" ({ "{") (expression_statement "sVar2 = strlen(pcVar3);" (assignment_expression "sVar2 = strlen(pcVar3)" (identifier "sVar2") (= "=") (call_expression "strlen(pcVar3)" (identifier "strlen") (argument_list "(pcVar3)" (( "(") (identifier "pcVar3") () ")")))) (; ";")) (expression_statement "pcVar4 = (char *)xmalloc(sVar2 + 1);" (assignment_expression "pcVar4 = (char *)xmalloc(sVar2 + 1)" (identifier "pcVar4") (= "=") (cast_expression "(char *)xmalloc(sVar2 + 1)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "xmalloc(sVar2 + 1)" (identifier "xmalloc") (argument_list "(sVar2 + 1)" (( "(") (binary_expression "sVar2 + 1" (identifier "sVar2") (+ "+") (number_literal "1")) () ")"))))) (; ";")) (expression_statement "pcVar3 = strcpy(pcVar4,pcVar3);" (assignment_expression "pcVar3 = strcpy(pcVar4,pcVar3)" (identifier "pcVar3") (= "=") (call_expression "strcpy(pcVar4,pcVar3)" (identifier "strcpy") (argument_list "(pcVar4,pcVar3)" (( "(") (identifier "pcVar4") (, ",") (identifier "pcVar3") () ")")))) (; ";")) (} "}"))) (expression_statement "puVar1[10] = pcVar3;" (assignment_expression "puVar1[10] = pcVar3" (subscript_expression "puVar1[10]" (identifier "puVar1") ([ "[") (number_literal "10") (] "]")) (= "=") (identifier "pcVar3")) (; ";")) (return_statement "return puVar1;" (return "return") (identifier "puVar1") (; ";")) (} "}")))

/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */
/* WARNING: Unknown calling convention */

type_1 * function_1(type_1 *cs)

{
  type_1 *pCVar1;
  size_t var_4;
  char *var_6;
  char *var_2;
  
  pCVar1 = (type_1 *)var_1(0x2c);
  var_2 = cs->globpat;
  pCVar1->refcount = 1;
  pCVar1->actions = cs->actions;
  pCVar1->options = cs->options;
  if (var_2 != (char *)0x0) {
    var_4 = var_3(var_2);
    var_6 = (char *)var_1(var_4 + 1);
    var_2 = var_5(var_6,var_2);
  }
  pCVar1->globpat = var_2;
  var_2 = cs->words;
  if (var_2 != (char *)0x0) {
    var_4 = var_3(var_2);
    var_6 = (char *)var_1(var_4 + 1);
    var_2 = var_5(var_6,var_2);
  }
  pCVar1->words = var_2;
  var_2 = cs->prefix;
  if (var_2 != (char *)0x0) {
    var_4 = var_3(var_2);
    var_6 = (char *)var_1(var_4 + 1);
    var_2 = var_5(var_6,var_2);
  }
  pCVar1->prefix = var_2;
  var_2 = cs->suffix;
  if (var_2 != (char *)0x0) {
    var_4 = var_3(var_2);
    var_6 = (char *)var_1(var_4 + 1);
    var_2 = var_5(var_6,var_2);
  }
  pCVar1->suffix = var_2;
  var_2 = cs->funcname;
  if (var_2 != (char *)0x0) {
    var_4 = var_3(var_2);
    var_6 = (char *)var_1(var_4 + 1);
    var_2 = var_5(var_6,var_2);
  }
  pCVar1->funcname = var_2;
  var_2 = cs->command;
  if (var_2 != (char *)0x0) {
    var_4 = var_3(var_2);
    var_6 = (char *)var_1(var_4 + 1);
    var_2 = var_5(var_6,var_2);
  }
  pCVar1->command = var_2;
  var_2 = cs->lcommand;
  if (var_2 != (char *)0x0) {
    var_4 = var_3(var_2);
    var_6 = (char *)var_1(var_4 + 1);
    var_2 = var_5(var_6,var_2);
  }
  var_6 = cs->filterpat;
  pCVar1->lcommand = var_2;
  if (var_6 != (char *)0x0) {
    var_4 = var_3(var_6);
    var_2 = (char *)var_1(var_4 + 1);
    var_6 = var_5(var_2,var_6);
  }
  pCVar1->filterpat = var_6;
  return pCVar1;
}


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

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

undefined4 * MASKED(int param_1)

{
  undefined4 *puVar1;
  size_t sVar2;
  char *pcVar3;
  char *pcVar4;
  
  puVar1 = (undefined4 *)xmalloc(0x2c);
  pcVar4 = *(char **)(param_1 + 0xc);
  *puVar1 = 1;
  puVar1[1] = *(undefined4 *)(param_1 + 4);
  puVar1[2] = *(undefined4 *)(param_1 + 8);
  if (pcVar4 != (char *)0x0) {
    sVar2 = strlen(pcVar4);
    pcVar3 = (char *)xmalloc(sVar2 + 1);
    pcVar4 = strcpy(pcVar3,pcVar4);
  }
  puVar1[3] = pcVar4;
  pcVar4 = *(char **)(param_1 + 0x10);
  if (pcVar4 != (char *)0x0) {
    sVar2 = strlen(pcVar4);
    pcVar3 = (char *)xmalloc(sVar2 + 1);
    pcVar4 = strcpy(pcVar3,pcVar4);
  }
  puVar1[4] = pcVar4;
  pcVar4 = *(char **)(param_1 + 0x14);
  if (pcVar4 != (char *)0x0) {
    sVar2 = strlen(pcVar4);
    pcVar3 = (char *)xmalloc(sVar2 + 1);
    pcVar4 = strcpy(pcVar3,pcVar4);
  }
  puVar1[5] = pcVar4;
  pcVar4 = *(char **)(param_1 + 0x18);
  if (pcVar4 != (char *)0x0) {
    sVar2 = strlen(pcVar4);
    pcVar3 = (char *)xmalloc(sVar2 + 1);
    pcVar4 = strcpy(pcVar3,pcVar4);
  }
  puVar1[6] = pcVar4;
  pcVar4 = *(char **)(param_1 + 0x1c);
  if (pcVar4 != (char *)0x0) {
    sVar2 = strlen(pcVar4);
    pcVar3 = (char *)xmalloc(sVar2 + 1);
    pcVar4 = strcpy(pcVar3,pcVar4);
  }
  puVar1[7] = pcVar4;
  pcVar4 = *(char **)(param_1 + 0x20);
  if (pcVar4 != (char *)0x0) {
    sVar2 = strlen(pcVar4);
    pcVar3 = (char *)xmalloc(sVar2 + 1);
    pcVar4 = strcpy(pcVar3,pcVar4);
  }
  puVar1[8] = pcVar4;
  pcVar4 = *(char **)(param_1 + 0x24);
  if (pcVar4 != (char *)0x0) {
    sVar2 = strlen(pcVar4);
    pcVar3 = (char *)xmalloc(sVar2 + 1);
    pcVar4 = strcpy(pcVar3,pcVar4);
  }
  pcVar3 = *(char **)(param_1 + 0x28);
  puVar1[9] = pcVar4;
  if (pcVar3 != (char *)0x0) {
    sVar2 = strlen(pcVar3);
    pcVar4 = (char *)xmalloc(sVar2 + 1);
    pcVar3 = strcpy(pcVar4,pcVar3);
  }
  puVar1[10] = pcVar3;
  return puVar1;
}

