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

void __regparm3 cmdline_save_param(char *p,char *value,int pri)

{
  char *pcVar1;
  cmdline_saved_param *pcVar2;
  int iVar3;
  
  iVar3 = saves[pri].nsaved;
  if (iVar3 < saves[pri].savesize) {
    pcVar2 = saves[pri].params;
  }
  else {
    saves[pri].savesize = iVar3 + 0x20U;
    pcVar2 = (cmdline_saved_param *)saferealloc(saves[pri].params,iVar3 + 0x20U,8);
    saves[pri].params = pcVar2;
    iVar3 = saves[pri].nsaved;
  }
  pcVar1 = dupstr(p);
  pcVar2[iVar3].p = pcVar1;
  pcVar2 = saves[pri].params;
  iVar3 = saves[pri].nsaved;
  pcVar1 = dupstr(value);
  saves[pri].nsaved = saves[pri].nsaved + 1;
  pcVar2[iVar3].value = pcVar1;
  return;
}



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

void __regparm3 FUN_00014ff0(undefined4 param_1,undefined4 param_2,int param_3)

{
  undefined4 uVar1;
  int iVar2;
  int iVar3;
  
  iVar3 = (&DAT_000aa3ac)[param_3 * 3];
  if (iVar3 < (int)(&DAT_000aa3b0)[param_3 * 3]) {
    iVar2 = (&DAT_000aa3a8)[param_3 * 3];
  }
  else {
    (&DAT_000aa3b0)[param_3 * 3] = iVar3 + 0x20;
    iVar2 = FUN_0001adb0((&DAT_000aa3a8)[param_3 * 3],iVar3 + 0x20,8);
    (&DAT_000aa3a8)[param_3 * 3] = iVar2;
    iVar3 = (&DAT_000aa3ac)[param_3 * 3];
  }
  uVar1 = FUN_0001aac0(param_1);
  *(undefined4 *)(iVar2 + iVar3 * 8) = uVar1;
  iVar3 = (&DAT_000aa3a8)[param_3 * 3];
  iVar2 = (&DAT_000aa3ac)[param_3 * 3];
  uVar1 = FUN_0001aac0(param_2);
  (&DAT_000aa3ac)[param_3 * 3] = (&DAT_000aa3ac)[param_3 * 3] + 1;
  *(undefined4 *)(iVar3 + iVar2 * 8 + 4) = uVar1;
  return;
}


PUSH EBP
PUSH EDI
MOV EDI,ECX
PUSH ESI
LEA ESI,[ECX + ECX*0x2]
PUSH EBX
CALL 0x00014970
ADD EBX,0x94d92
SUB ESP,0x1c
MOV dword ptr [ESP + 0x4],EAX
LEA EAX,[ESI*0x4 + 0x0]
MOV dword ptr [ESP + 0x8],EDX
LEA EDX,[EBX + EAX*0x1 + 0x618]
MOV ESI,dword ptr [EDX + 0x4]
CMP ESI,dword ptr [EDX + 0x8]
JGE 0x00015070
LEA EBP,[EBX + 0x618]
MOV EAX,dword ptr [EAX + EBP*0x1]
SUB ESP,0xc
LEA ESI,[EAX + ESI*0x8]
PUSH dword ptr [ESP + 0x10]
CALL 0x0001aac0
MOV dword ptr [ESI],EAX
LEA EAX,[EDI + EDI*0x2]
SHL EAX,0x2
LEA ESI,[EBX + EAX*0x1 + 0x618]
MOV EAX,dword ptr [EAX + EBP*0x1]
MOV EDX,dword ptr [ESI + 0x4]
LEA EDI,[EAX + EDX*0x8]
POP EAX
PUSH dword ptr [ESP + 0x14]
CALL 0x0001aac0
ADD dword ptr [ESI + 0x4],0x1
MOV dword ptr [EDI + 0x4],EAX
ADD ESP,0x2c
POP EBX
POP ESI
POP EDI
POP EBP
RET
MOV dword ptr [ESP + 0xc],EDX
ADD ESI,0x20
SUB ESP,0x4
LEA EBP,[EBX + 0x618]
MOV dword ptr [EDX + 0x8],ESI
PUSH 0x8
PUSH ESI
LEA ESI,[EAX + EBP*0x1]
PUSH dword ptr [ESI]
CALL 0x0001adb0
MOV EDX,dword ptr [ESP + 0x1c]
ADD ESP,0x10
MOV dword ptr [ESI],EAX
MOV ESI,dword ptr [EDX + 0x4]
JMP 0x0001502e
(translation_unit "/* WARNING: Function: __i686.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n\nvoid __regparm3 FUN_00014ff0(undefined4 param_1,undefined4 param_2,int param_3)\n\n{\n  undefined4 uVar1;\n  int iVar2;\n  int iVar3;\n  \n  iVar3 = (&DAT_000aa3ac)[param_3 * 3];\n  if (iVar3 < (int)(&DAT_000aa3b0)[param_3 * 3]) {\n    iVar2 = (&DAT_000aa3a8)[param_3 * 3];\n  }\n  else {\n    (&DAT_000aa3b0)[param_3 * 3] = iVar3 + 0x20;\n    iVar2 = FUN_0001adb0((&DAT_000aa3a8)[param_3 * 3],iVar3 + 0x20,8);\n    (&DAT_000aa3a8)[param_3 * 3] = iVar2;\n    iVar3 = (&DAT_000aa3ac)[param_3 * 3];\n  }\n  uVar1 = FUN_0001aac0(param_1);\n  *(undefined4 *)(iVar2 + iVar3 * 8) = uVar1;\n  iVar3 = (&DAT_000aa3a8)[param_3 * 3];\n  iVar2 = (&DAT_000aa3ac)[param_3 * 3];\n  uVar1 = FUN_0001aac0(param_2);\n  (&DAT_000aa3ac)[param_3 * 3] = (&DAT_000aa3ac)[param_3 * 3] + 1;\n  *(undefined4 *)(iVar3 + iVar2 * 8 + 4) = uVar1;\n  return;\n}\n\n" comment (function_definition "void __regparm3 FUN_00014ff0(undefined4 param_1,undefined4 param_2,int param_3)\n\n{\n  undefined4 uVar1;\n  int iVar2;\n  int iVar3;\n  \n  iVar3 = (&DAT_000aa3ac)[param_3 * 3];\n  if (iVar3 < (int)(&DAT_000aa3b0)[param_3 * 3]) {\n    iVar2 = (&DAT_000aa3a8)[param_3 * 3];\n  }\n  else {\n    (&DAT_000aa3b0)[param_3 * 3] = iVar3 + 0x20;\n    iVar2 = FUN_0001adb0((&DAT_000aa3a8)[param_3 * 3],iVar3 + 0x20,8);\n    (&DAT_000aa3a8)[param_3 * 3] = iVar2;\n    iVar3 = (&DAT_000aa3ac)[param_3 * 3];\n  }\n  uVar1 = FUN_0001aac0(param_1);\n  *(undefined4 *)(iVar2 + iVar3 * 8) = uVar1;\n  iVar3 = (&DAT_000aa3a8)[param_3 * 3];\n  iVar2 = (&DAT_000aa3ac)[param_3 * 3];\n  uVar1 = FUN_0001aac0(param_2);\n  (&DAT_000aa3ac)[param_3 * 3] = (&DAT_000aa3ac)[param_3 * 3] + 1;\n  *(undefined4 *)(iVar3 + iVar2 * 8 + 4) = uVar1;\n  return;\n}" primitive_type (ERROR "__regparm3" identifier) (function_declarator "FUN_00014ff0(undefined4 param_1,undefined4 param_2,int param_3)" identifier (parameter_list "(undefined4 param_1,undefined4 param_2,int param_3)" ( (parameter_declaration "undefined4 param_1" type_identifier identifier) , (parameter_declaration "undefined4 param_2" type_identifier identifier) , (parameter_declaration "int param_3" primitive_type identifier) ))) (compound_statement "{\n  undefined4 uVar1;\n  int iVar2;\n  int iVar3;\n  \n  iVar3 = (&DAT_000aa3ac)[param_3 * 3];\n  if (iVar3 < (int)(&DAT_000aa3b0)[param_3 * 3]) {\n    iVar2 = (&DAT_000aa3a8)[param_3 * 3];\n  }\n  else {\n    (&DAT_000aa3b0)[param_3 * 3] = iVar3 + 0x20;\n    iVar2 = FUN_0001adb0((&DAT_000aa3a8)[param_3 * 3],iVar3 + 0x20,8);\n    (&DAT_000aa3a8)[param_3 * 3] = iVar2;\n    iVar3 = (&DAT_000aa3ac)[param_3 * 3];\n  }\n  uVar1 = FUN_0001aac0(param_1);\n  *(undefined4 *)(iVar2 + iVar3 * 8) = uVar1;\n  iVar3 = (&DAT_000aa3a8)[param_3 * 3];\n  iVar2 = (&DAT_000aa3ac)[param_3 * 3];\n  uVar1 = FUN_0001aac0(param_2);\n  (&DAT_000aa3ac)[param_3 * 3] = (&DAT_000aa3ac)[param_3 * 3] + 1;\n  *(undefined4 *)(iVar3 + iVar2 * 8 + 4) = uVar1;\n  return;\n}" { (declaration "undefined4 uVar1;" type_identifier identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (expression_statement "iVar3 = (&DAT_000aa3ac)[param_3 * 3];" (assignment_expression "iVar3 = (&DAT_000aa3ac)[param_3 * 3]" identifier = (subscript_expression "(&DAT_000aa3ac)[param_3 * 3]" (parenthesized_expression "(&DAT_000aa3ac)" ( (pointer_expression "&DAT_000aa3ac" & identifier) )) [ (binary_expression "param_3 * 3" identifier * number_literal) ])) ;) (if_statement "if (iVar3 < (int)(&DAT_000aa3b0)[param_3 * 3]) {\n    iVar2 = (&DAT_000aa3a8)[param_3 * 3];\n  }\n  else {\n    (&DAT_000aa3b0)[param_3 * 3] = iVar3 + 0x20;\n    iVar2 = FUN_0001adb0((&DAT_000aa3a8)[param_3 * 3],iVar3 + 0x20,8);\n    (&DAT_000aa3a8)[param_3 * 3] = iVar2;\n    iVar3 = (&DAT_000aa3ac)[param_3 * 3];\n  }" if (parenthesized_expression "(iVar3 < (int)(&DAT_000aa3b0)[param_3 * 3])" ( (binary_expression "iVar3 < (int)(&DAT_000aa3b0)[param_3 * 3]" identifier < (cast_expression "(int)(&DAT_000aa3b0)[param_3 * 3]" ( (type_descriptor "int" primitive_type) ) (subscript_expression "(&DAT_000aa3b0)[param_3 * 3]" (parenthesized_expression "(&DAT_000aa3b0)" ( (pointer_expression "&DAT_000aa3b0" & identifier) )) [ (binary_expression "param_3 * 3" identifier * number_literal) ]))) )) (compound_statement "{\n    iVar2 = (&DAT_000aa3a8)[param_3 * 3];\n  }" { (expression_statement "iVar2 = (&DAT_000aa3a8)[param_3 * 3];" (assignment_expression "iVar2 = (&DAT_000aa3a8)[param_3 * 3]" identifier = (subscript_expression "(&DAT_000aa3a8)[param_3 * 3]" (parenthesized_expression "(&DAT_000aa3a8)" ( (pointer_expression "&DAT_000aa3a8" & identifier) )) [ (binary_expression "param_3 * 3" identifier * number_literal) ])) ;) }) (else_clause "else {\n    (&DAT_000aa3b0)[param_3 * 3] = iVar3 + 0x20;\n    iVar2 = FUN_0001adb0((&DAT_000aa3a8)[param_3 * 3],iVar3 + 0x20,8);\n    (&DAT_000aa3a8)[param_3 * 3] = iVar2;\n    iVar3 = (&DAT_000aa3ac)[param_3 * 3];\n  }" else (compound_statement "{\n    (&DAT_000aa3b0)[param_3 * 3] = iVar3 + 0x20;\n    iVar2 = FUN_0001adb0((&DAT_000aa3a8)[param_3 * 3],iVar3 + 0x20,8);\n    (&DAT_000aa3a8)[param_3 * 3] = iVar2;\n    iVar3 = (&DAT_000aa3ac)[param_3 * 3];\n  }" { (expression_statement "(&DAT_000aa3b0)[param_3 * 3] = iVar3 + 0x20;" (assignment_expression "(&DAT_000aa3b0)[param_3 * 3] = iVar3 + 0x20" (subscript_expression "(&DAT_000aa3b0)[param_3 * 3]" (parenthesized_expression "(&DAT_000aa3b0)" ( (pointer_expression "&DAT_000aa3b0" & identifier) )) [ (binary_expression "param_3 * 3" identifier * number_literal) ]) = (binary_expression "iVar3 + 0x20" identifier + number_literal)) ;) (expression_statement "iVar2 = FUN_0001adb0((&DAT_000aa3a8)[param_3 * 3],iVar3 + 0x20,8);" (assignment_expression "iVar2 = FUN_0001adb0((&DAT_000aa3a8)[param_3 * 3],iVar3 + 0x20,8)" identifier = (call_expression "FUN_0001adb0((&DAT_000aa3a8)[param_3 * 3],iVar3 + 0x20,8)" identifier (argument_list "((&DAT_000aa3a8)[param_3 * 3],iVar3 + 0x20,8)" ( (subscript_expression "(&DAT_000aa3a8)[param_3 * 3]" (parenthesized_expression "(&DAT_000aa3a8)" ( (pointer_expression "&DAT_000aa3a8" & identifier) )) [ (binary_expression "param_3 * 3" identifier * number_literal) ]) , (binary_expression "iVar3 + 0x20" identifier + number_literal) , number_literal )))) ;) (expression_statement "(&DAT_000aa3a8)[param_3 * 3] = iVar2;" (assignment_expression "(&DAT_000aa3a8)[param_3 * 3] = iVar2" (subscript_expression "(&DAT_000aa3a8)[param_3 * 3]" (parenthesized_expression "(&DAT_000aa3a8)" ( (pointer_expression "&DAT_000aa3a8" & identifier) )) [ (binary_expression "param_3 * 3" identifier * number_literal) ]) = identifier) ;) (expression_statement "iVar3 = (&DAT_000aa3ac)[param_3 * 3];" (assignment_expression "iVar3 = (&DAT_000aa3ac)[param_3 * 3]" identifier = (subscript_expression "(&DAT_000aa3ac)[param_3 * 3]" (parenthesized_expression "(&DAT_000aa3ac)" ( (pointer_expression "&DAT_000aa3ac" & identifier) )) [ (binary_expression "param_3 * 3" identifier * number_literal) ])) ;) }))) (expression_statement "uVar1 = FUN_0001aac0(param_1);" (assignment_expression "uVar1 = FUN_0001aac0(param_1)" identifier = (call_expression "FUN_0001aac0(param_1)" identifier (argument_list "(param_1)" ( identifier )))) ;) (expression_statement "*(undefined4 *)(iVar2 + iVar3 * 8) = uVar1;" (assignment_expression "*(undefined4 *)(iVar2 + iVar3 * 8) = uVar1" (pointer_expression "*(undefined4 *)(iVar2 + iVar3 * 8)" * (cast_expression "(undefined4 *)(iVar2 + iVar3 * 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + iVar3 * 8)" ( (binary_expression "iVar2 + iVar3 * 8" identifier + (binary_expression "iVar3 * 8" identifier * number_literal)) )))) = identifier) ;) (expression_statement "iVar3 = (&DAT_000aa3a8)[param_3 * 3];" (assignment_expression "iVar3 = (&DAT_000aa3a8)[param_3 * 3]" identifier = (subscript_expression "(&DAT_000aa3a8)[param_3 * 3]" (parenthesized_expression "(&DAT_000aa3a8)" ( (pointer_expression "&DAT_000aa3a8" & identifier) )) [ (binary_expression "param_3 * 3" identifier * number_literal) ])) ;) (expression_statement "iVar2 = (&DAT_000aa3ac)[param_3 * 3];" (assignment_expression "iVar2 = (&DAT_000aa3ac)[param_3 * 3]" identifier = (subscript_expression "(&DAT_000aa3ac)[param_3 * 3]" (parenthesized_expression "(&DAT_000aa3ac)" ( (pointer_expression "&DAT_000aa3ac" & identifier) )) [ (binary_expression "param_3 * 3" identifier * number_literal) ])) ;) (expression_statement "uVar1 = FUN_0001aac0(param_2);" (assignment_expression "uVar1 = FUN_0001aac0(param_2)" identifier = (call_expression "FUN_0001aac0(param_2)" identifier (argument_list "(param_2)" ( identifier )))) ;) (expression_statement "(&DAT_000aa3ac)[param_3 * 3] = (&DAT_000aa3ac)[param_3 * 3] + 1;" (assignment_expression "(&DAT_000aa3ac)[param_3 * 3] = (&DAT_000aa3ac)[param_3 * 3] + 1" (subscript_expression "(&DAT_000aa3ac)[param_3 * 3]" (parenthesized_expression "(&DAT_000aa3ac)" ( (pointer_expression "&DAT_000aa3ac" & identifier) )) [ (binary_expression "param_3 * 3" identifier * number_literal) ]) = (binary_expression "(&DAT_000aa3ac)[param_3 * 3] + 1" (subscript_expression "(&DAT_000aa3ac)[param_3 * 3]" (parenthesized_expression "(&DAT_000aa3ac)" ( (pointer_expression "&DAT_000aa3ac" & identifier) )) [ (binary_expression "param_3 * 3" identifier * number_literal) ]) + number_literal)) ;) (expression_statement "*(undefined4 *)(iVar3 + iVar2 * 8 + 4) = uVar1;" (assignment_expression "*(undefined4 *)(iVar3 + iVar2 * 8 + 4) = uVar1" (pointer_expression "*(undefined4 *)(iVar3 + iVar2 * 8 + 4)" * (cast_expression "(undefined4 *)(iVar3 + iVar2 * 8 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + iVar2 * 8 + 4)" ( (binary_expression "iVar3 + iVar2 * 8 + 4" (binary_expression "iVar3 + iVar2 * 8" identifier + (binary_expression "iVar2 * 8" identifier * number_literal)) + number_literal) )))) = identifier) ;) (return_statement "return;" return ;) })))
(translation_unit "/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n\nvoid __regparm3 cmdline_save_param(char *p,char *value,int pri)\n\n{\n  char *pcVar1;\n  cmdline_saved_param *pcVar2;\n  int iVar3;\n  \n  iVar3 = saves[pri].nsaved;\n  if (iVar3 < saves[pri].savesize) {\n    pcVar2 = saves[pri].params;\n  }\n  else {\n    saves[pri].savesize = iVar3 + 0x20U;\n    pcVar2 = (cmdline_saved_param *)saferealloc(saves[pri].params,iVar3 + 0x20U,8);\n    saves[pri].params = pcVar2;\n    iVar3 = saves[pri].nsaved;\n  }\n  pcVar1 = dupstr(p);\n  pcVar2[iVar3].p = pcVar1;\n  pcVar2 = saves[pri].params;\n  iVar3 = saves[pri].nsaved;\n  pcVar1 = dupstr(value);\n  saves[pri].nsaved = saves[pri].nsaved + 1;\n  pcVar2[iVar3].value = pcVar1;\n  return;\n}\n\n" comment (function_definition "void __regparm3 cmdline_save_param(char *p,char *value,int pri)\n\n{\n  char *pcVar1;\n  cmdline_saved_param *pcVar2;\n  int iVar3;\n  \n  iVar3 = saves[pri].nsaved;\n  if (iVar3 < saves[pri].savesize) {\n    pcVar2 = saves[pri].params;\n  }\n  else {\n    saves[pri].savesize = iVar3 + 0x20U;\n    pcVar2 = (cmdline_saved_param *)saferealloc(saves[pri].params,iVar3 + 0x20U,8);\n    saves[pri].params = pcVar2;\n    iVar3 = saves[pri].nsaved;\n  }\n  pcVar1 = dupstr(p);\n  pcVar2[iVar3].p = pcVar1;\n  pcVar2 = saves[pri].params;\n  iVar3 = saves[pri].nsaved;\n  pcVar1 = dupstr(value);\n  saves[pri].nsaved = saves[pri].nsaved + 1;\n  pcVar2[iVar3].value = pcVar1;\n  return;\n}" primitive_type (ERROR "__regparm3" identifier) (function_declarator "cmdline_save_param(char *p,char *value,int pri)" identifier (parameter_list "(char *p,char *value,int pri)" ( (parameter_declaration "char *p" primitive_type (pointer_declarator "*p" * identifier)) , (parameter_declaration "char *value" primitive_type (pointer_declarator "*value" * identifier)) , (parameter_declaration "int pri" primitive_type identifier) ))) (compound_statement "{\n  char *pcVar1;\n  cmdline_saved_param *pcVar2;\n  int iVar3;\n  \n  iVar3 = saves[pri].nsaved;\n  if (iVar3 < saves[pri].savesize) {\n    pcVar2 = saves[pri].params;\n  }\n  else {\n    saves[pri].savesize = iVar3 + 0x20U;\n    pcVar2 = (cmdline_saved_param *)saferealloc(saves[pri].params,iVar3 + 0x20U,8);\n    saves[pri].params = pcVar2;\n    iVar3 = saves[pri].nsaved;\n  }\n  pcVar1 = dupstr(p);\n  pcVar2[iVar3].p = pcVar1;\n  pcVar2 = saves[pri].params;\n  iVar3 = saves[pri].nsaved;\n  pcVar1 = dupstr(value);\n  saves[pri].nsaved = saves[pri].nsaved + 1;\n  pcVar2[iVar3].value = pcVar1;\n  return;\n}" { (declaration "char *pcVar1;" primitive_type (pointer_declarator "*pcVar1" * identifier) ;) (declaration "cmdline_saved_param *pcVar2;" type_identifier (pointer_declarator "*pcVar2" * identifier) ;) (declaration "int iVar3;" primitive_type identifier ;) (expression_statement "iVar3 = saves[pri].nsaved;" (assignment_expression "iVar3 = saves[pri].nsaved" identifier = (field_expression "saves[pri].nsaved" (subscript_expression "saves[pri]" identifier [ identifier ]) . field_identifier)) ;) (if_statement "if (iVar3 < saves[pri].savesize) {\n    pcVar2 = saves[pri].params;\n  }\n  else {\n    saves[pri].savesize = iVar3 + 0x20U;\n    pcVar2 = (cmdline_saved_param *)saferealloc(saves[pri].params,iVar3 + 0x20U,8);\n    saves[pri].params = pcVar2;\n    iVar3 = saves[pri].nsaved;\n  }" if (parenthesized_expression "(iVar3 < saves[pri].savesize)" ( (binary_expression "iVar3 < saves[pri].savesize" identifier < (field_expression "saves[pri].savesize" (subscript_expression "saves[pri]" identifier [ identifier ]) . field_identifier)) )) (compound_statement "{\n    pcVar2 = saves[pri].params;\n  }" { (expression_statement "pcVar2 = saves[pri].params;" (assignment_expression "pcVar2 = saves[pri].params" identifier = (field_expression "saves[pri].params" (subscript_expression "saves[pri]" identifier [ identifier ]) . field_identifier)) ;) }) (else_clause "else {\n    saves[pri].savesize = iVar3 + 0x20U;\n    pcVar2 = (cmdline_saved_param *)saferealloc(saves[pri].params,iVar3 + 0x20U,8);\n    saves[pri].params = pcVar2;\n    iVar3 = saves[pri].nsaved;\n  }" else (compound_statement "{\n    saves[pri].savesize = iVar3 + 0x20U;\n    pcVar2 = (cmdline_saved_param *)saferealloc(saves[pri].params,iVar3 + 0x20U,8);\n    saves[pri].params = pcVar2;\n    iVar3 = saves[pri].nsaved;\n  }" { (expression_statement "saves[pri].savesize = iVar3 + 0x20U;" (assignment_expression "saves[pri].savesize = iVar3 + 0x20U" (field_expression "saves[pri].savesize" (subscript_expression "saves[pri]" identifier [ identifier ]) . field_identifier) = (binary_expression "iVar3 + 0x20U" identifier + number_literal)) ;) (expression_statement "pcVar2 = (cmdline_saved_param *)saferealloc(saves[pri].params,iVar3 + 0x20U,8);" (assignment_expression "pcVar2 = (cmdline_saved_param *)saferealloc(saves[pri].params,iVar3 + 0x20U,8)" identifier = (cast_expression "(cmdline_saved_param *)saferealloc(saves[pri].params,iVar3 + 0x20U,8)" ( (type_descriptor "cmdline_saved_param *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "saferealloc(saves[pri].params,iVar3 + 0x20U,8)" identifier (argument_list "(saves[pri].params,iVar3 + 0x20U,8)" ( (field_expression "saves[pri].params" (subscript_expression "saves[pri]" identifier [ identifier ]) . field_identifier) , (binary_expression "iVar3 + 0x20U" identifier + number_literal) , number_literal ))))) ;) (expression_statement "saves[pri].params = pcVar2;" (assignment_expression "saves[pri].params = pcVar2" (field_expression "saves[pri].params" (subscript_expression "saves[pri]" identifier [ identifier ]) . field_identifier) = identifier) ;) (expression_statement "iVar3 = saves[pri].nsaved;" (assignment_expression "iVar3 = saves[pri].nsaved" identifier = (field_expression "saves[pri].nsaved" (subscript_expression "saves[pri]" identifier [ identifier ]) . field_identifier)) ;) }))) (expression_statement "pcVar1 = dupstr(p);" (assignment_expression "pcVar1 = dupstr(p)" identifier = (call_expression "dupstr(p)" identifier (argument_list "(p)" ( identifier )))) ;) (expression_statement "pcVar2[iVar3].p = pcVar1;" (assignment_expression "pcVar2[iVar3].p = pcVar1" (field_expression "pcVar2[iVar3].p" (subscript_expression "pcVar2[iVar3]" identifier [ identifier ]) . field_identifier) = identifier) ;) (expression_statement "pcVar2 = saves[pri].params;" (assignment_expression "pcVar2 = saves[pri].params" identifier = (field_expression "saves[pri].params" (subscript_expression "saves[pri]" identifier [ identifier ]) . field_identifier)) ;) (expression_statement "iVar3 = saves[pri].nsaved;" (assignment_expression "iVar3 = saves[pri].nsaved" identifier = (field_expression "saves[pri].nsaved" (subscript_expression "saves[pri]" identifier [ identifier ]) . field_identifier)) ;) (expression_statement "pcVar1 = dupstr(value);" (assignment_expression "pcVar1 = dupstr(value)" identifier = (call_expression "dupstr(value)" identifier (argument_list "(value)" ( identifier )))) ;) (expression_statement "saves[pri].nsaved = saves[pri].nsaved + 1;" (assignment_expression "saves[pri].nsaved = saves[pri].nsaved + 1" (field_expression "saves[pri].nsaved" (subscript_expression "saves[pri]" identifier [ identifier ]) . field_identifier) = (binary_expression "saves[pri].nsaved + 1" (field_expression "saves[pri].nsaved" (subscript_expression "saves[pri]" identifier [ identifier ]) . field_identifier) + number_literal)) ;) (expression_statement "pcVar2[iVar3].value = pcVar1;" (assignment_expression "pcVar2[iVar3].value = pcVar1" (field_expression "pcVar2[iVar3].value" (subscript_expression "pcVar2[iVar3]" identifier [ identifier ]) . field_identifier) = identifier) ;) (return_statement "return;" return ;) })))
(translation_unit "void __regparm3 FUN_00014ff0(undefined4 param_1,undefined4 param_2,int param_3)\n\n{\n  undefined4 uVar1;\n  int iVar2;\n  int iVar3;\n  \n  iVar3 = (&DAT_000aa3ac)[param_3 * 3];\n  if (iVar3 < (int)(&DAT_000aa3b0)[param_3 * 3]) {\n    iVar2 = (&DAT_000aa3a8)[param_3 * 3];\n  }\n  else {\n    (&DAT_000aa3b0)[param_3 * 3] = iVar3 + 0x20;\n    iVar2 = FUN_0001adb0((&DAT_000aa3a8)[param_3 * 3],iVar3 + 0x20,8);\n    (&DAT_000aa3a8)[param_3 * 3] = iVar2;\n    iVar3 = (&DAT_000aa3ac)[param_3 * 3];\n  }\n  uVar1 = FUN_0001aac0(param_1);\n  *(undefined4 *)(iVar2 + iVar3 * 8) = uVar1;\n  iVar3 = (&DAT_000aa3a8)[param_3 * 3];\n  iVar2 = (&DAT_000aa3ac)[param_3 * 3];\n  uVar1 = FUN_0001aac0(param_2);\n  (&DAT_000aa3ac)[param_3 * 3] = (&DAT_000aa3ac)[param_3 * 3] + 1;\n  *(undefined4 *)(iVar3 + iVar2 * 8 + 4) = uVar1;\n  return;\n}\n\n" (function_definition "void __regparm3 FUN_00014ff0(undefined4 param_1,undefined4 param_2,int param_3)\n\n{\n  undefined4 uVar1;\n  int iVar2;\n  int iVar3;\n  \n  iVar3 = (&DAT_000aa3ac)[param_3 * 3];\n  if (iVar3 < (int)(&DAT_000aa3b0)[param_3 * 3]) {\n    iVar2 = (&DAT_000aa3a8)[param_3 * 3];\n  }\n  else {\n    (&DAT_000aa3b0)[param_3 * 3] = iVar3 + 0x20;\n    iVar2 = FUN_0001adb0((&DAT_000aa3a8)[param_3 * 3],iVar3 + 0x20,8);\n    (&DAT_000aa3a8)[param_3 * 3] = iVar2;\n    iVar3 = (&DAT_000aa3ac)[param_3 * 3];\n  }\n  uVar1 = FUN_0001aac0(param_1);\n  *(undefined4 *)(iVar2 + iVar3 * 8) = uVar1;\n  iVar3 = (&DAT_000aa3a8)[param_3 * 3];\n  iVar2 = (&DAT_000aa3ac)[param_3 * 3];\n  uVar1 = FUN_0001aac0(param_2);\n  (&DAT_000aa3ac)[param_3 * 3] = (&DAT_000aa3ac)[param_3 * 3] + 1;\n  *(undefined4 *)(iVar3 + iVar2 * 8 + 4) = uVar1;\n  return;\n}" primitive_type (ERROR "__regparm3" identifier) (function_declarator "FUN_00014ff0(undefined4 param_1,undefined4 param_2,int param_3)" identifier (parameter_list "(undefined4 param_1,undefined4 param_2,int param_3)" ( (parameter_declaration "undefined4 param_1" type_identifier identifier) , (parameter_declaration "undefined4 param_2" type_identifier identifier) , (parameter_declaration "int param_3" primitive_type identifier) ))) (compound_statement "{\n  undefined4 uVar1;\n  int iVar2;\n  int iVar3;\n  \n  iVar3 = (&DAT_000aa3ac)[param_3 * 3];\n  if (iVar3 < (int)(&DAT_000aa3b0)[param_3 * 3]) {\n    iVar2 = (&DAT_000aa3a8)[param_3 * 3];\n  }\n  else {\n    (&DAT_000aa3b0)[param_3 * 3] = iVar3 + 0x20;\n    iVar2 = FUN_0001adb0((&DAT_000aa3a8)[param_3 * 3],iVar3 + 0x20,8);\n    (&DAT_000aa3a8)[param_3 * 3] = iVar2;\n    iVar3 = (&DAT_000aa3ac)[param_3 * 3];\n  }\n  uVar1 = FUN_0001aac0(param_1);\n  *(undefined4 *)(iVar2 + iVar3 * 8) = uVar1;\n  iVar3 = (&DAT_000aa3a8)[param_3 * 3];\n  iVar2 = (&DAT_000aa3ac)[param_3 * 3];\n  uVar1 = FUN_0001aac0(param_2);\n  (&DAT_000aa3ac)[param_3 * 3] = (&DAT_000aa3ac)[param_3 * 3] + 1;\n  *(undefined4 *)(iVar3 + iVar2 * 8 + 4) = uVar1;\n  return;\n}" { (declaration "undefined4 uVar1;" type_identifier identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (expression_statement "iVar3 = (&DAT_000aa3ac)[param_3 * 3];" (assignment_expression "iVar3 = (&DAT_000aa3ac)[param_3 * 3]" identifier = (subscript_expression "(&DAT_000aa3ac)[param_3 * 3]" (parenthesized_expression "(&DAT_000aa3ac)" ( (pointer_expression "&DAT_000aa3ac" & identifier) )) [ (binary_expression "param_3 * 3" identifier * number_literal) ])) ;) (if_statement "if (iVar3 < (int)(&DAT_000aa3b0)[param_3 * 3]) {\n    iVar2 = (&DAT_000aa3a8)[param_3 * 3];\n  }\n  else {\n    (&DAT_000aa3b0)[param_3 * 3] = iVar3 + 0x20;\n    iVar2 = FUN_0001adb0((&DAT_000aa3a8)[param_3 * 3],iVar3 + 0x20,8);\n    (&DAT_000aa3a8)[param_3 * 3] = iVar2;\n    iVar3 = (&DAT_000aa3ac)[param_3 * 3];\n  }" if (parenthesized_expression "(iVar3 < (int)(&DAT_000aa3b0)[param_3 * 3])" ( (binary_expression "iVar3 < (int)(&DAT_000aa3b0)[param_3 * 3]" identifier < (cast_expression "(int)(&DAT_000aa3b0)[param_3 * 3]" ( (type_descriptor "int" primitive_type) ) (subscript_expression "(&DAT_000aa3b0)[param_3 * 3]" (parenthesized_expression "(&DAT_000aa3b0)" ( (pointer_expression "&DAT_000aa3b0" & identifier) )) [ (binary_expression "param_3 * 3" identifier * number_literal) ]))) )) (compound_statement "{\n    iVar2 = (&DAT_000aa3a8)[param_3 * 3];\n  }" { (expression_statement "iVar2 = (&DAT_000aa3a8)[param_3 * 3];" (assignment_expression "iVar2 = (&DAT_000aa3a8)[param_3 * 3]" identifier = (subscript_expression "(&DAT_000aa3a8)[param_3 * 3]" (parenthesized_expression "(&DAT_000aa3a8)" ( (pointer_expression "&DAT_000aa3a8" & identifier) )) [ (binary_expression "param_3 * 3" identifier * number_literal) ])) ;) }) (else_clause "else {\n    (&DAT_000aa3b0)[param_3 * 3] = iVar3 + 0x20;\n    iVar2 = FUN_0001adb0((&DAT_000aa3a8)[param_3 * 3],iVar3 + 0x20,8);\n    (&DAT_000aa3a8)[param_3 * 3] = iVar2;\n    iVar3 = (&DAT_000aa3ac)[param_3 * 3];\n  }" else (compound_statement "{\n    (&DAT_000aa3b0)[param_3 * 3] = iVar3 + 0x20;\n    iVar2 = FUN_0001adb0((&DAT_000aa3a8)[param_3 * 3],iVar3 + 0x20,8);\n    (&DAT_000aa3a8)[param_3 * 3] = iVar2;\n    iVar3 = (&DAT_000aa3ac)[param_3 * 3];\n  }" { (expression_statement "(&DAT_000aa3b0)[param_3 * 3] = iVar3 + 0x20;" (assignment_expression "(&DAT_000aa3b0)[param_3 * 3] = iVar3 + 0x20" (subscript_expression "(&DAT_000aa3b0)[param_3 * 3]" (parenthesized_expression "(&DAT_000aa3b0)" ( (pointer_expression "&DAT_000aa3b0" & identifier) )) [ (binary_expression "param_3 * 3" identifier * number_literal) ]) = (binary_expression "iVar3 + 0x20" identifier + number_literal)) ;) (expression_statement "iVar2 = FUN_0001adb0((&DAT_000aa3a8)[param_3 * 3],iVar3 + 0x20,8);" (assignment_expression "iVar2 = FUN_0001adb0((&DAT_000aa3a8)[param_3 * 3],iVar3 + 0x20,8)" identifier = (call_expression "FUN_0001adb0((&DAT_000aa3a8)[param_3 * 3],iVar3 + 0x20,8)" identifier (argument_list "((&DAT_000aa3a8)[param_3 * 3],iVar3 + 0x20,8)" ( (subscript_expression "(&DAT_000aa3a8)[param_3 * 3]" (parenthesized_expression "(&DAT_000aa3a8)" ( (pointer_expression "&DAT_000aa3a8" & identifier) )) [ (binary_expression "param_3 * 3" identifier * number_literal) ]) , (binary_expression "iVar3 + 0x20" identifier + number_literal) , number_literal )))) ;) (expression_statement "(&DAT_000aa3a8)[param_3 * 3] = iVar2;" (assignment_expression "(&DAT_000aa3a8)[param_3 * 3] = iVar2" (subscript_expression "(&DAT_000aa3a8)[param_3 * 3]" (parenthesized_expression "(&DAT_000aa3a8)" ( (pointer_expression "&DAT_000aa3a8" & identifier) )) [ (binary_expression "param_3 * 3" identifier * number_literal) ]) = identifier) ;) (expression_statement "iVar3 = (&DAT_000aa3ac)[param_3 * 3];" (assignment_expression "iVar3 = (&DAT_000aa3ac)[param_3 * 3]" identifier = (subscript_expression "(&DAT_000aa3ac)[param_3 * 3]" (parenthesized_expression "(&DAT_000aa3ac)" ( (pointer_expression "&DAT_000aa3ac" & identifier) )) [ (binary_expression "param_3 * 3" identifier * number_literal) ])) ;) }))) (expression_statement "uVar1 = FUN_0001aac0(param_1);" (assignment_expression "uVar1 = FUN_0001aac0(param_1)" identifier = (call_expression "FUN_0001aac0(param_1)" identifier (argument_list "(param_1)" ( identifier )))) ;) (expression_statement "*(undefined4 *)(iVar2 + iVar3 * 8) = uVar1;" (assignment_expression "*(undefined4 *)(iVar2 + iVar3 * 8) = uVar1" (pointer_expression "*(undefined4 *)(iVar2 + iVar3 * 8)" * (cast_expression "(undefined4 *)(iVar2 + iVar3 * 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + iVar3 * 8)" ( (binary_expression "iVar2 + iVar3 * 8" identifier + (binary_expression "iVar3 * 8" identifier * number_literal)) )))) = identifier) ;) (expression_statement "iVar3 = (&DAT_000aa3a8)[param_3 * 3];" (assignment_expression "iVar3 = (&DAT_000aa3a8)[param_3 * 3]" identifier = (subscript_expression "(&DAT_000aa3a8)[param_3 * 3]" (parenthesized_expression "(&DAT_000aa3a8)" ( (pointer_expression "&DAT_000aa3a8" & identifier) )) [ (binary_expression "param_3 * 3" identifier * number_literal) ])) ;) (expression_statement "iVar2 = (&DAT_000aa3ac)[param_3 * 3];" (assignment_expression "iVar2 = (&DAT_000aa3ac)[param_3 * 3]" identifier = (subscript_expression "(&DAT_000aa3ac)[param_3 * 3]" (parenthesized_expression "(&DAT_000aa3ac)" ( (pointer_expression "&DAT_000aa3ac" & identifier) )) [ (binary_expression "param_3 * 3" identifier * number_literal) ])) ;) (expression_statement "uVar1 = FUN_0001aac0(param_2);" (assignment_expression "uVar1 = FUN_0001aac0(param_2)" identifier = (call_expression "FUN_0001aac0(param_2)" identifier (argument_list "(param_2)" ( identifier )))) ;) (expression_statement "(&DAT_000aa3ac)[param_3 * 3] = (&DAT_000aa3ac)[param_3 * 3] + 1;" (assignment_expression "(&DAT_000aa3ac)[param_3 * 3] = (&DAT_000aa3ac)[param_3 * 3] + 1" (subscript_expression "(&DAT_000aa3ac)[param_3 * 3]" (parenthesized_expression "(&DAT_000aa3ac)" ( (pointer_expression "&DAT_000aa3ac" & identifier) )) [ (binary_expression "param_3 * 3" identifier * number_literal) ]) = (binary_expression "(&DAT_000aa3ac)[param_3 * 3] + 1" (subscript_expression "(&DAT_000aa3ac)[param_3 * 3]" (parenthesized_expression "(&DAT_000aa3ac)" ( (pointer_expression "&DAT_000aa3ac" & identifier) )) [ (binary_expression "param_3 * 3" identifier * number_literal) ]) + number_literal)) ;) (expression_statement "*(undefined4 *)(iVar3 + iVar2 * 8 + 4) = uVar1;" (assignment_expression "*(undefined4 *)(iVar3 + iVar2 * 8 + 4) = uVar1" (pointer_expression "*(undefined4 *)(iVar3 + iVar2 * 8 + 4)" * (cast_expression "(undefined4 *)(iVar3 + iVar2 * 8 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + iVar2 * 8 + 4)" ( (binary_expression "iVar3 + iVar2 * 8 + 4" (binary_expression "iVar3 + iVar2 * 8" identifier + (binary_expression "iVar2 * 8" identifier * number_literal)) + number_literal) )))) = identifier) ;) (return_statement "return;" return ;) })))
(translation_unit (function_definition TYPE (ERROR IDENT) (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = (subscript_expression (parenthesized_expression ( (pointer_expression & IDENT) )) [ (binary_expression IDENT * LIT) ])) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < (cast_expression ( (type_descriptor TYPE) ) (subscript_expression (parenthesized_expression ( (pointer_expression & IDENT) )) [ (binary_expression IDENT * LIT) ]))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression (parenthesized_expression ( (pointer_expression & IDENT) )) [ (binary_expression IDENT * LIT) ])) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression (subscript_expression (parenthesized_expression ( (pointer_expression & IDENT) )) [ (binary_expression IDENT * LIT) ]) = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (subscript_expression (parenthesized_expression ( (pointer_expression & IDENT) )) [ (binary_expression IDENT * LIT) ]) , (binary_expression IDENT + LIT) , LIT )))) ;) (expression_statement (assignment_expression (subscript_expression (parenthesized_expression ( (pointer_expression & IDENT) )) [ (binary_expression IDENT * LIT) ]) = IDENT) ;) (expression_statement (assignment_expression IDENT = (subscript_expression (parenthesized_expression ( (pointer_expression & IDENT) )) [ (binary_expression IDENT * LIT) ])) ;) }))) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression IDENT * LIT)) )))) = IDENT) ;) (expression_statement (assignment_expression IDENT = (subscript_expression (parenthesized_expression ( (pointer_expression & IDENT) )) [ (binary_expression IDENT * LIT) ])) ;) (expression_statement (assignment_expression IDENT = (subscript_expression (parenthesized_expression ( (pointer_expression & IDENT) )) [ (binary_expression IDENT * LIT) ])) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression (subscript_expression (parenthesized_expression ( (pointer_expression & IDENT) )) [ (binary_expression IDENT * LIT) ]) = (binary_expression (subscript_expression (parenthesized_expression ( (pointer_expression & IDENT) )) [ (binary_expression IDENT * LIT) ]) + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + (binary_expression IDENT * LIT)) + LIT) )))) = IDENT) ;) (return_statement return ;) })))
(function_definition "void __regparm3 FUN_00014ff0(undefined4 param_1,undefined4 param_2,int param_3)\n\n{\n  undefined4 uVar1;\n  int iVar2;\n  int iVar3;\n  \n  iVar3 = (&DAT_000aa3ac)[param_3 * 3];\n  if (iVar3 < (int)(&DAT_000aa3b0)[param_3 * 3]) {\n    iVar2 = (&DAT_000aa3a8)[param_3 * 3];\n  }\n  else {\n    (&DAT_000aa3b0)[param_3 * 3] = iVar3 + 0x20;\n    iVar2 = FUN_0001adb0((&DAT_000aa3a8)[param_3 * 3],iVar3 + 0x20,8);\n    (&DAT_000aa3a8)[param_3 * 3] = iVar2;\n    iVar3 = (&DAT_000aa3ac)[param_3 * 3];\n  }\n  uVar1 = FUN_0001aac0(param_1);\n  *(undefined4 *)(iVar2 + iVar3 * 8) = uVar1;\n  iVar3 = (&DAT_000aa3a8)[param_3 * 3];\n  iVar2 = (&DAT_000aa3ac)[param_3 * 3];\n  uVar1 = FUN_0001aac0(param_2);\n  (&DAT_000aa3ac)[param_3 * 3] = (&DAT_000aa3ac)[param_3 * 3] + 1;\n  *(undefined4 *)(iVar3 + iVar2 * 8 + 4) = uVar1;\n  return;\n}" (primitive_type "void") (ERROR "__regparm3" (identifier "__regparm3")) (function_declarator "FUN_00014ff0(undefined4 param_1,undefined4 param_2,int param_3)" (identifier "FUN_00014ff0") (parameter_list "(undefined4 param_1,undefined4 param_2,int param_3)" (( "(") (parameter_declaration "undefined4 param_1" (type_identifier "undefined4") (identifier "param_1")) (, ",") (parameter_declaration "undefined4 param_2" (type_identifier "undefined4") (identifier "param_2")) (, ",") (parameter_declaration "int param_3" (primitive_type "int") (identifier "param_3")) () ")"))) (compound_statement "{\n  undefined4 uVar1;\n  int iVar2;\n  int iVar3;\n  \n  iVar3 = (&DAT_000aa3ac)[param_3 * 3];\n  if (iVar3 < (int)(&DAT_000aa3b0)[param_3 * 3]) {\n    iVar2 = (&DAT_000aa3a8)[param_3 * 3];\n  }\n  else {\n    (&DAT_000aa3b0)[param_3 * 3] = iVar3 + 0x20;\n    iVar2 = FUN_0001adb0((&DAT_000aa3a8)[param_3 * 3],iVar3 + 0x20,8);\n    (&DAT_000aa3a8)[param_3 * 3] = iVar2;\n    iVar3 = (&DAT_000aa3ac)[param_3 * 3];\n  }\n  uVar1 = FUN_0001aac0(param_1);\n  *(undefined4 *)(iVar2 + iVar3 * 8) = uVar1;\n  iVar3 = (&DAT_000aa3a8)[param_3 * 3];\n  iVar2 = (&DAT_000aa3ac)[param_3 * 3];\n  uVar1 = FUN_0001aac0(param_2);\n  (&DAT_000aa3ac)[param_3 * 3] = (&DAT_000aa3ac)[param_3 * 3] + 1;\n  *(undefined4 *)(iVar3 + iVar2 * 8 + 4) = uVar1;\n  return;\n}" ({ "{") (declaration "undefined4 uVar1;" (type_identifier "undefined4") (identifier "uVar1") (; ";")) (declaration "int iVar2;" (primitive_type "int") (identifier "iVar2") (; ";")) (declaration "int iVar3;" (primitive_type "int") (identifier "iVar3") (; ";")) (expression_statement "iVar3 = (&DAT_000aa3ac)[param_3 * 3];" (assignment_expression "iVar3 = (&DAT_000aa3ac)[param_3 * 3]" (identifier "iVar3") (= "=") (subscript_expression "(&DAT_000aa3ac)[param_3 * 3]" (parenthesized_expression "(&DAT_000aa3ac)" (( "(") (pointer_expression "&DAT_000aa3ac" (& "&") (identifier "DAT_000aa3ac")) () ")")) ([ "[") (binary_expression "param_3 * 3" (identifier "param_3") (* "*") (number_literal "3")) (] "]"))) (; ";")) (if_statement "if (iVar3 < (int)(&DAT_000aa3b0)[param_3 * 3]) {\n    iVar2 = (&DAT_000aa3a8)[param_3 * 3];\n  }\n  else {\n    (&DAT_000aa3b0)[param_3 * 3] = iVar3 + 0x20;\n    iVar2 = FUN_0001adb0((&DAT_000aa3a8)[param_3 * 3],iVar3 + 0x20,8);\n    (&DAT_000aa3a8)[param_3 * 3] = iVar2;\n    iVar3 = (&DAT_000aa3ac)[param_3 * 3];\n  }" (if "if") (parenthesized_expression "(iVar3 < (int)(&DAT_000aa3b0)[param_3 * 3])" (( "(") (binary_expression "iVar3 < (int)(&DAT_000aa3b0)[param_3 * 3]" (identifier "iVar3") (< "<") (cast_expression "(int)(&DAT_000aa3b0)[param_3 * 3]" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (subscript_expression "(&DAT_000aa3b0)[param_3 * 3]" (parenthesized_expression "(&DAT_000aa3b0)" (( "(") (pointer_expression "&DAT_000aa3b0" (& "&") (identifier "DAT_000aa3b0")) () ")")) ([ "[") (binary_expression "param_3 * 3" (identifier "param_3") (* "*") (number_literal "3")) (] "]")))) () ")")) (compound_statement "{\n    iVar2 = (&DAT_000aa3a8)[param_3 * 3];\n  }" ({ "{") (expression_statement "iVar2 = (&DAT_000aa3a8)[param_3 * 3];" (assignment_expression "iVar2 = (&DAT_000aa3a8)[param_3 * 3]" (identifier "iVar2") (= "=") (subscript_expression "(&DAT_000aa3a8)[param_3 * 3]" (parenthesized_expression "(&DAT_000aa3a8)" (( "(") (pointer_expression "&DAT_000aa3a8" (& "&") (identifier "DAT_000aa3a8")) () ")")) ([ "[") (binary_expression "param_3 * 3" (identifier "param_3") (* "*") (number_literal "3")) (] "]"))) (; ";")) (} "}")) (else_clause "else {\n    (&DAT_000aa3b0)[param_3 * 3] = iVar3 + 0x20;\n    iVar2 = FUN_0001adb0((&DAT_000aa3a8)[param_3 * 3],iVar3 + 0x20,8);\n    (&DAT_000aa3a8)[param_3 * 3] = iVar2;\n    iVar3 = (&DAT_000aa3ac)[param_3 * 3];\n  }" (else "else") (compound_statement "{\n    (&DAT_000aa3b0)[param_3 * 3] = iVar3 + 0x20;\n    iVar2 = FUN_0001adb0((&DAT_000aa3a8)[param_3 * 3],iVar3 + 0x20,8);\n    (&DAT_000aa3a8)[param_3 * 3] = iVar2;\n    iVar3 = (&DAT_000aa3ac)[param_3 * 3];\n  }" ({ "{") (expression_statement "(&DAT_000aa3b0)[param_3 * 3] = iVar3 + 0x20;" (assignment_expression "(&DAT_000aa3b0)[param_3 * 3] = iVar3 + 0x20" (subscript_expression "(&DAT_000aa3b0)[param_3 * 3]" (parenthesized_expression "(&DAT_000aa3b0)" (( "(") (pointer_expression "&DAT_000aa3b0" (& "&") (identifier "DAT_000aa3b0")) () ")")) ([ "[") (binary_expression "param_3 * 3" (identifier "param_3") (* "*") (number_literal "3")) (] "]")) (= "=") (binary_expression "iVar3 + 0x20" (identifier "iVar3") (+ "+") (number_literal "0x20"))) (; ";")) (expression_statement "iVar2 = FUN_0001adb0((&DAT_000aa3a8)[param_3 * 3],iVar3 + 0x20,8);" (assignment_expression "iVar2 = FUN_0001adb0((&DAT_000aa3a8)[param_3 * 3],iVar3 + 0x20,8)" (identifier "iVar2") (= "=") (call_expression "FUN_0001adb0((&DAT_000aa3a8)[param_3 * 3],iVar3 + 0x20,8)" (identifier "FUN_0001adb0") (argument_list "((&DAT_000aa3a8)[param_3 * 3],iVar3 + 0x20,8)" (( "(") (subscript_expression "(&DAT_000aa3a8)[param_3 * 3]" (parenthesized_expression "(&DAT_000aa3a8)" (( "(") (pointer_expression "&DAT_000aa3a8" (& "&") (identifier "DAT_000aa3a8")) () ")")) ([ "[") (binary_expression "param_3 * 3" (identifier "param_3") (* "*") (number_literal "3")) (] "]")) (, ",") (binary_expression "iVar3 + 0x20" (identifier "iVar3") (+ "+") (number_literal "0x20")) (, ",") (number_literal "8") () ")")))) (; ";")) (expression_statement "(&DAT_000aa3a8)[param_3 * 3] = iVar2;" (assignment_expression "(&DAT_000aa3a8)[param_3 * 3] = iVar2" (subscript_expression "(&DAT_000aa3a8)[param_3 * 3]" (parenthesized_expression "(&DAT_000aa3a8)" (( "(") (pointer_expression "&DAT_000aa3a8" (& "&") (identifier "DAT_000aa3a8")) () ")")) ([ "[") (binary_expression "param_3 * 3" (identifier "param_3") (* "*") (number_literal "3")) (] "]")) (= "=") (identifier "iVar2")) (; ";")) (expression_statement "iVar3 = (&DAT_000aa3ac)[param_3 * 3];" (assignment_expression "iVar3 = (&DAT_000aa3ac)[param_3 * 3]" (identifier "iVar3") (= "=") (subscript_expression "(&DAT_000aa3ac)[param_3 * 3]" (parenthesized_expression "(&DAT_000aa3ac)" (( "(") (pointer_expression "&DAT_000aa3ac" (& "&") (identifier "DAT_000aa3ac")) () ")")) ([ "[") (binary_expression "param_3 * 3" (identifier "param_3") (* "*") (number_literal "3")) (] "]"))) (; ";")) (} "}")))) (expression_statement "uVar1 = FUN_0001aac0(param_1);" (assignment_expression "uVar1 = FUN_0001aac0(param_1)" (identifier "uVar1") (= "=") (call_expression "FUN_0001aac0(param_1)" (identifier "FUN_0001aac0") (argument_list "(param_1)" (( "(") (identifier "param_1") () ")")))) (; ";")) (expression_statement "*(undefined4 *)(iVar2 + iVar3 * 8) = uVar1;" (assignment_expression "*(undefined4 *)(iVar2 + iVar3 * 8) = uVar1" (pointer_expression "*(undefined4 *)(iVar2 + iVar3 * 8)" (* "*") (cast_expression "(undefined4 *)(iVar2 + iVar3 * 8)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar2 + iVar3 * 8)" (( "(") (binary_expression "iVar2 + iVar3 * 8" (identifier "iVar2") (+ "+") (binary_expression "iVar3 * 8" (identifier "iVar3") (* "*") (number_literal "8"))) () ")")))) (= "=") (identifier "uVar1")) (; ";")) (expression_statement "iVar3 = (&DAT_000aa3a8)[param_3 * 3];" (assignment_expression "iVar3 = (&DAT_000aa3a8)[param_3 * 3]" (identifier "iVar3") (= "=") (subscript_expression "(&DAT_000aa3a8)[param_3 * 3]" (parenthesized_expression "(&DAT_000aa3a8)" (( "(") (pointer_expression "&DAT_000aa3a8" (& "&") (identifier "DAT_000aa3a8")) () ")")) ([ "[") (binary_expression "param_3 * 3" (identifier "param_3") (* "*") (number_literal "3")) (] "]"))) (; ";")) (expression_statement "iVar2 = (&DAT_000aa3ac)[param_3 * 3];" (assignment_expression "iVar2 = (&DAT_000aa3ac)[param_3 * 3]" (identifier "iVar2") (= "=") (subscript_expression "(&DAT_000aa3ac)[param_3 * 3]" (parenthesized_expression "(&DAT_000aa3ac)" (( "(") (pointer_expression "&DAT_000aa3ac" (& "&") (identifier "DAT_000aa3ac")) () ")")) ([ "[") (binary_expression "param_3 * 3" (identifier "param_3") (* "*") (number_literal "3")) (] "]"))) (; ";")) (expression_statement "uVar1 = FUN_0001aac0(param_2);" (assignment_expression "uVar1 = FUN_0001aac0(param_2)" (identifier "uVar1") (= "=") (call_expression "FUN_0001aac0(param_2)" (identifier "FUN_0001aac0") (argument_list "(param_2)" (( "(") (identifier "param_2") () ")")))) (; ";")) (expression_statement "(&DAT_000aa3ac)[param_3 * 3] = (&DAT_000aa3ac)[param_3 * 3] + 1;" (assignment_expression "(&DAT_000aa3ac)[param_3 * 3] = (&DAT_000aa3ac)[param_3 * 3] + 1" (subscript_expression "(&DAT_000aa3ac)[param_3 * 3]" (parenthesized_expression "(&DAT_000aa3ac)" (( "(") (pointer_expression "&DAT_000aa3ac" (& "&") (identifier "DAT_000aa3ac")) () ")")) ([ "[") (binary_expression "param_3 * 3" (identifier "param_3") (* "*") (number_literal "3")) (] "]")) (= "=") (binary_expression "(&DAT_000aa3ac)[param_3 * 3] + 1" (subscript_expression "(&DAT_000aa3ac)[param_3 * 3]" (parenthesized_expression "(&DAT_000aa3ac)" (( "(") (pointer_expression "&DAT_000aa3ac" (& "&") (identifier "DAT_000aa3ac")) () ")")) ([ "[") (binary_expression "param_3 * 3" (identifier "param_3") (* "*") (number_literal "3")) (] "]")) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "*(undefined4 *)(iVar3 + iVar2 * 8 + 4) = uVar1;" (assignment_expression "*(undefined4 *)(iVar3 + iVar2 * 8 + 4) = uVar1" (pointer_expression "*(undefined4 *)(iVar3 + iVar2 * 8 + 4)" (* "*") (cast_expression "(undefined4 *)(iVar3 + iVar2 * 8 + 4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar3 + iVar2 * 8 + 4)" (( "(") (binary_expression "iVar3 + iVar2 * 8 + 4" (binary_expression "iVar3 + iVar2 * 8" (identifier "iVar3") (+ "+") (binary_expression "iVar2 * 8" (identifier "iVar2") (* "*") (number_literal "8"))) (+ "+") (number_literal "4")) () ")")))) (= "=") (identifier "uVar1")) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}")))

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

void __regparm3 function_1(char *p,char *value,int pri)

{
  char *pcVar1;
  type_1 *pcVar2;
  int var_1;
  
  var_1 = saves[pri].nsaved;
  if (var_1 < saves[pri].savesize) {
    pcVar2 = saves[pri].params;
  }
  else {
    saves[pri].savesize = var_1 + 0x20U;
    pcVar2 = (type_1 *)var_2(saves[pri].params,var_1 + 0x20U,8);
    saves[pri].params = pcVar2;
    var_1 = saves[pri].nsaved;
  }
  pcVar1 = var_3(p);
  pcVar2[var_1].p = pcVar1;
  pcVar2 = saves[pri].params;
  var_1 = saves[pri].nsaved;
  pcVar1 = var_3(value);
  saves[pri].nsaved = saves[pri].nsaved + 1;
  pcVar2[var_1].value = pcVar1;
  return;
}


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

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

void __regparm3 MASKED(undefined4 param_1,undefined4 param_2,int param_3)

{
  undefined4 uVar1;
  int iVar2;
  int iVar3;
  
  iVar3 = (&DAT_000aa3ac)[param_3 * 3];
  if (iVar3 < (int)(&DAT_000aa3b0)[param_3 * 3]) {
    iVar2 = (&DAT_000aa3a8)[param_3 * 3];
  }
  else {
    (&DAT_000aa3b0)[param_3 * 3] = iVar3 + 0x20;
    iVar2 = FUN_0001adb0((&DAT_000aa3a8)[param_3 * 3],iVar3 + 0x20,8);
    (&DAT_000aa3a8)[param_3 * 3] = iVar2;
    iVar3 = (&DAT_000aa3ac)[param_3 * 3];
  }
  uVar1 = FUN_0001aac0(param_1);
  *(undefined4 *)(iVar2 + iVar3 * 8) = uVar1;
  iVar3 = (&DAT_000aa3a8)[param_3 * 3];
  iVar2 = (&DAT_000aa3ac)[param_3 * 3];
  uVar1 = FUN_0001aac0(param_2);
  (&DAT_000aa3ac)[param_3 * 3] = (&DAT_000aa3ac)[param_3 * 3] + 1;
  *(undefined4 *)(iVar3 + iVar2 * 8 + 4) = uVar1;
  return;
}

