
/* DWARF original prototype: void extend_match(match * m, Sym * sym, Sym_Table * tab, bfd_boolean
   second_pass, Sym_Table * tab) */

void __regparm3
extend_match(match *m,Sym *sym,Sym_Table *tab,bfd_boolean second_pass,Sym_Table *tab_1)

{
  uint uVar1;
  int iVar2;
  Sym *pSVar3;
  Sym *pSVar4;
  Sym *pSVar5;
  
  iVar2 = *(int *)second_pass;
  if (m->prev_match != sym + -1) {
    uVar1 = tab->len;
    pSVar3 = (Sym *)(iVar2 + uVar1 * 200);
    pSVar4 = sym;
    pSVar5 = pSVar3;
    for (iVar2 = 0x32; iVar2 != 0; iVar2 = iVar2 + -1) {
      pSVar5->addr = pSVar4->addr;
      pSVar4 = (Sym *)&pSVar4->end_addr;
      pSVar5 = (Sym *)&pSVar5->end_addr;
    }
    m->prev_index = uVar1;
    pSVar3->next = m->first_match;
    m->first_match = pSVar3;
    tab->len = tab->len + 1;
    iVar2 = *(int *)second_pass;
  }
  *(bfd_vma *)(iVar2 + 4 + m->prev_index * 200) = sym->end_addr;
  m->prev_match = sym;
  return;
}



void __regparm3 FUN_0001cda0(int *param_1,undefined4 *param_2,int *param_3,int *param_4)

{
  int iVar1;
  int iVar2;
  undefined4 *puVar3;
  undefined4 *puVar4;
  undefined4 *puVar5;
  
  iVar2 = *param_4;
  if ((undefined4 *)param_1[1] != param_2 + -0x32) {
    iVar1 = *param_3;
    puVar3 = (undefined4 *)(iVar2 + iVar1 * 200);
    puVar4 = param_2;
    puVar5 = puVar3;
    for (iVar2 = 0x32; iVar2 != 0; iVar2 = iVar2 + -1) {
      *puVar5 = *puVar4;
      puVar4 = puVar4 + 1;
      puVar5 = puVar5 + 1;
    }
    *param_1 = iVar1;
    puVar3[0x1c] = param_1[2];
    param_1[2] = (int)puVar3;
    *param_3 = *param_3 + 1;
    iVar2 = *param_4;
  }
  *(undefined4 *)(iVar2 + 4 + *param_1 * 200) = param_2[1];
  param_1[1] = (int)param_2;
  return;
}


PUSH EBP
PUSH EDI
PUSH ESI
PUSH EBX
MOV EBX,ECX
LEA ECX,[EDX + 0xffffff38]
SUB ESP,0x4
MOV EDI,dword ptr [ESP + 0x18]
MOV EBP,dword ptr [EDI]
CMP dword ptr [EAX + 0x4],ECX
JZ 0x0001cde9
MOV ESI,dword ptr [EBX]
IMUL ECX,ESI,0xc8
MOV dword ptr [ESP],ESI
MOV ESI,EDX
ADD EBP,ECX
MOV ECX,0x32
MOV EDI,EBP
MOVSD.REP ES:EDI,ESI
MOV ECX,dword ptr [EAX + 0x8]
MOV ESI,dword ptr [ESP]
MOV EDI,dword ptr [ESP + 0x18]
MOV dword ptr [EAX],ESI
MOV dword ptr [EBP + 0x70],ECX
MOV dword ptr [EAX + 0x8],EBP
ADD dword ptr [EBX],0x1
MOV EBP,dword ptr [EDI]
IMUL ECX,dword ptr [EAX],0xc8
MOV EBX,dword ptr [EDX + 0x4]
MOV dword ptr [EBP + ECX*0x1 + 0x4],EBX
MOV dword ptr [EAX + 0x4],EDX
ADD ESP,0x4
POP EBX
POP ESI
POP EDI
POP EBP
RET
(translation_unit "void __regparm3 FUN_0001cda0(int *param_1,undefined4 *param_2,int *param_3,int *param_4)\n\n{\n  int iVar1;\n  int iVar2;\n  undefined4 *puVar3;\n  undefined4 *puVar4;\n  undefined4 *puVar5;\n  \n  iVar2 = *param_4;\n  if ((undefined4 *)param_1[1] != param_2 + -0x32) {\n    iVar1 = *param_3;\n    puVar3 = (undefined4 *)(iVar2 + iVar1 * 200);\n    puVar4 = param_2;\n    puVar5 = puVar3;\n    for (iVar2 = 0x32; iVar2 != 0; iVar2 = iVar2 + -1) {\n      *puVar5 = *puVar4;\n      puVar4 = puVar4 + 1;\n      puVar5 = puVar5 + 1;\n    }\n    *param_1 = iVar1;\n    puVar3[0x1c] = param_1[2];\n    param_1[2] = (int)puVar3;\n    *param_3 = *param_3 + 1;\n    iVar2 = *param_4;\n  }\n  *(undefined4 *)(iVar2 + 4 + *param_1 * 200) = param_2[1];\n  param_1[1] = (int)param_2;\n  return;\n}\n\n" (function_definition "void __regparm3 FUN_0001cda0(int *param_1,undefined4 *param_2,int *param_3,int *param_4)\n\n{\n  int iVar1;\n  int iVar2;\n  undefined4 *puVar3;\n  undefined4 *puVar4;\n  undefined4 *puVar5;\n  \n  iVar2 = *param_4;\n  if ((undefined4 *)param_1[1] != param_2 + -0x32) {\n    iVar1 = *param_3;\n    puVar3 = (undefined4 *)(iVar2 + iVar1 * 200);\n    puVar4 = param_2;\n    puVar5 = puVar3;\n    for (iVar2 = 0x32; iVar2 != 0; iVar2 = iVar2 + -1) {\n      *puVar5 = *puVar4;\n      puVar4 = puVar4 + 1;\n      puVar5 = puVar5 + 1;\n    }\n    *param_1 = iVar1;\n    puVar3[0x1c] = param_1[2];\n    param_1[2] = (int)puVar3;\n    *param_3 = *param_3 + 1;\n    iVar2 = *param_4;\n  }\n  *(undefined4 *)(iVar2 + 4 + *param_1 * 200) = param_2[1];\n  param_1[1] = (int)param_2;\n  return;\n}" primitive_type (ERROR "__regparm3" identifier) (function_declarator "FUN_0001cda0(int *param_1,undefined4 *param_2,int *param_3,int *param_4)" identifier (parameter_list "(int *param_1,undefined4 *param_2,int *param_3,int *param_4)" ( (parameter_declaration "int *param_1" primitive_type (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "undefined4 *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "int *param_3" primitive_type (pointer_declarator "*param_3" * identifier)) , (parameter_declaration "int *param_4" primitive_type (pointer_declarator "*param_4" * identifier)) ))) (compound_statement "{\n  int iVar1;\n  int iVar2;\n  undefined4 *puVar3;\n  undefined4 *puVar4;\n  undefined4 *puVar5;\n  \n  iVar2 = *param_4;\n  if ((undefined4 *)param_1[1] != param_2 + -0x32) {\n    iVar1 = *param_3;\n    puVar3 = (undefined4 *)(iVar2 + iVar1 * 200);\n    puVar4 = param_2;\n    puVar5 = puVar3;\n    for (iVar2 = 0x32; iVar2 != 0; iVar2 = iVar2 + -1) {\n      *puVar5 = *puVar4;\n      puVar4 = puVar4 + 1;\n      puVar5 = puVar5 + 1;\n    }\n    *param_1 = iVar1;\n    puVar3[0x1c] = param_1[2];\n    param_1[2] = (int)puVar3;\n    *param_3 = *param_3 + 1;\n    iVar2 = *param_4;\n  }\n  *(undefined4 *)(iVar2 + 4 + *param_1 * 200) = param_2[1];\n  param_1[1] = (int)param_2;\n  return;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "undefined4 *puVar3;" type_identifier (pointer_declarator "*puVar3" * identifier) ;) (declaration "undefined4 *puVar4;" type_identifier (pointer_declarator "*puVar4" * identifier) ;) (declaration "undefined4 *puVar5;" type_identifier (pointer_declarator "*puVar5" * identifier) ;) (expression_statement "iVar2 = *param_4;" (assignment_expression "iVar2 = *param_4" identifier = (pointer_expression "*param_4" * identifier)) ;) (if_statement "if ((undefined4 *)param_1[1] != param_2 + -0x32) {\n    iVar1 = *param_3;\n    puVar3 = (undefined4 *)(iVar2 + iVar1 * 200);\n    puVar4 = param_2;\n    puVar5 = puVar3;\n    for (iVar2 = 0x32; iVar2 != 0; iVar2 = iVar2 + -1) {\n      *puVar5 = *puVar4;\n      puVar4 = puVar4 + 1;\n      puVar5 = puVar5 + 1;\n    }\n    *param_1 = iVar1;\n    puVar3[0x1c] = param_1[2];\n    param_1[2] = (int)puVar3;\n    *param_3 = *param_3 + 1;\n    iVar2 = *param_4;\n  }" if (parenthesized_expression "((undefined4 *)param_1[1] != param_2 + -0x32)" ( (binary_expression "(undefined4 *)param_1[1] != param_2 + -0x32" (cast_expression "(undefined4 *)param_1[1]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[1]" identifier [ number_literal ])) != (binary_expression "param_2 + -0x32" identifier + number_literal)) )) (compound_statement "{\n    iVar1 = *param_3;\n    puVar3 = (undefined4 *)(iVar2 + iVar1 * 200);\n    puVar4 = param_2;\n    puVar5 = puVar3;\n    for (iVar2 = 0x32; iVar2 != 0; iVar2 = iVar2 + -1) {\n      *puVar5 = *puVar4;\n      puVar4 = puVar4 + 1;\n      puVar5 = puVar5 + 1;\n    }\n    *param_1 = iVar1;\n    puVar3[0x1c] = param_1[2];\n    param_1[2] = (int)puVar3;\n    *param_3 = *param_3 + 1;\n    iVar2 = *param_4;\n  }" { (expression_statement "iVar1 = *param_3;" (assignment_expression "iVar1 = *param_3" identifier = (pointer_expression "*param_3" * identifier)) ;) (expression_statement "puVar3 = (undefined4 *)(iVar2 + iVar1 * 200);" (assignment_expression "puVar3 = (undefined4 *)(iVar2 + iVar1 * 200)" identifier = (cast_expression "(undefined4 *)(iVar2 + iVar1 * 200)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + iVar1 * 200)" ( (binary_expression "iVar2 + iVar1 * 200" identifier + (binary_expression "iVar1 * 200" identifier * number_literal)) )))) ;) (expression_statement "puVar4 = param_2;" (assignment_expression "puVar4 = param_2" identifier = identifier) ;) (expression_statement "puVar5 = puVar3;" (assignment_expression "puVar5 = puVar3" identifier = identifier) ;) (for_statement "for (iVar2 = 0x32; iVar2 != 0; iVar2 = iVar2 + -1) {\n      *puVar5 = *puVar4;\n      puVar4 = puVar4 + 1;\n      puVar5 = puVar5 + 1;\n    }" for ( (assignment_expression "iVar2 = 0x32" identifier = number_literal) ; (binary_expression "iVar2 != 0" identifier != number_literal) ; (assignment_expression "iVar2 = iVar2 + -1" identifier = (binary_expression "iVar2 + -1" identifier + number_literal)) ) (compound_statement "{\n      *puVar5 = *puVar4;\n      puVar4 = puVar4 + 1;\n      puVar5 = puVar5 + 1;\n    }" { (expression_statement "*puVar5 = *puVar4;" (assignment_expression "*puVar5 = *puVar4" (pointer_expression "*puVar5" * identifier) = (pointer_expression "*puVar4" * identifier)) ;) (expression_statement "puVar4 = puVar4 + 1;" (assignment_expression "puVar4 = puVar4 + 1" identifier = (binary_expression "puVar4 + 1" identifier + number_literal)) ;) (expression_statement "puVar5 = puVar5 + 1;" (assignment_expression "puVar5 = puVar5 + 1" identifier = (binary_expression "puVar5 + 1" identifier + number_literal)) ;) })) (expression_statement "*param_1 = iVar1;" (assignment_expression "*param_1 = iVar1" (pointer_expression "*param_1" * identifier) = identifier) ;) (expression_statement "puVar3[0x1c] = param_1[2];" (assignment_expression "puVar3[0x1c] = param_1[2]" (subscript_expression "puVar3[0x1c]" identifier [ number_literal ]) = (subscript_expression "param_1[2]" identifier [ number_literal ])) ;) (expression_statement "param_1[2] = (int)puVar3;" (assignment_expression "param_1[2] = (int)puVar3" (subscript_expression "param_1[2]" identifier [ number_literal ]) = (cast_expression "(int)puVar3" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "*param_3 = *param_3 + 1;" (assignment_expression "*param_3 = *param_3 + 1" (pointer_expression "*param_3" * identifier) = (binary_expression "*param_3 + 1" (pointer_expression "*param_3" * identifier) + number_literal)) ;) (expression_statement "iVar2 = *param_4;" (assignment_expression "iVar2 = *param_4" identifier = (pointer_expression "*param_4" * identifier)) ;) })) (expression_statement "*(undefined4 *)(iVar2 + 4 + *param_1 * 200) = param_2[1];" (assignment_expression "*(undefined4 *)(iVar2 + 4 + *param_1 * 200) = param_2[1]" (pointer_expression "*(undefined4 *)(iVar2 + 4 + *param_1 * 200)" * (cast_expression "(undefined4 *)(iVar2 + 4 + *param_1 * 200)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 4 + *param_1 * 200)" ( (binary_expression "iVar2 + 4 + *param_1 * 200" (binary_expression "iVar2 + 4" identifier + number_literal) + (binary_expression "*param_1 * 200" (pointer_expression "*param_1" * identifier) * number_literal)) )))) = (subscript_expression "param_2[1]" identifier [ number_literal ])) ;) (expression_statement "param_1[1] = (int)param_2;" (assignment_expression "param_1[1] = (int)param_2" (subscript_expression "param_1[1]" identifier [ number_literal ]) = (cast_expression "(int)param_2" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (return_statement "return;" return ;) })))
(translation_unit "/* DWARF original prototype: void extend_match(match * m, Sym * sym, Sym_Table * tab, bfd_boolean\n   second_pass, Sym_Table * tab) */\n\nvoid __regparm3\nextend_match(match *m,Sym *sym,Sym_Table *tab,bfd_boolean second_pass,Sym_Table *tab_1)\n\n{\n  uint uVar1;\n  int iVar2;\n  Sym *pSVar3;\n  Sym *pSVar4;\n  Sym *pSVar5;\n  \n  iVar2 = *(int *)second_pass;\n  if (m->prev_match != sym + -1) {\n    uVar1 = tab->len;\n    pSVar3 = (Sym *)(iVar2 + uVar1 * 200);\n    pSVar4 = sym;\n    pSVar5 = pSVar3;\n    for (iVar2 = 0x32; iVar2 != 0; iVar2 = iVar2 + -1) {\n      pSVar5->addr = pSVar4->addr;\n      pSVar4 = (Sym *)&pSVar4->end_addr;\n      pSVar5 = (Sym *)&pSVar5->end_addr;\n    }\n    m->prev_index = uVar1;\n    pSVar3->next = m->first_match;\n    m->first_match = pSVar3;\n    tab->len = tab->len + 1;\n    iVar2 = *(int *)second_pass;\n  }\n  *(bfd_vma *)(iVar2 + 4 + m->prev_index * 200) = sym->end_addr;\n  m->prev_match = sym;\n  return;\n}\n\n" comment (function_definition "void __regparm3\nextend_match(match *m,Sym *sym,Sym_Table *tab,bfd_boolean second_pass,Sym_Table *tab_1)\n\n{\n  uint uVar1;\n  int iVar2;\n  Sym *pSVar3;\n  Sym *pSVar4;\n  Sym *pSVar5;\n  \n  iVar2 = *(int *)second_pass;\n  if (m->prev_match != sym + -1) {\n    uVar1 = tab->len;\n    pSVar3 = (Sym *)(iVar2 + uVar1 * 200);\n    pSVar4 = sym;\n    pSVar5 = pSVar3;\n    for (iVar2 = 0x32; iVar2 != 0; iVar2 = iVar2 + -1) {\n      pSVar5->addr = pSVar4->addr;\n      pSVar4 = (Sym *)&pSVar4->end_addr;\n      pSVar5 = (Sym *)&pSVar5->end_addr;\n    }\n    m->prev_index = uVar1;\n    pSVar3->next = m->first_match;\n    m->first_match = pSVar3;\n    tab->len = tab->len + 1;\n    iVar2 = *(int *)second_pass;\n  }\n  *(bfd_vma *)(iVar2 + 4 + m->prev_index * 200) = sym->end_addr;\n  m->prev_match = sym;\n  return;\n}" primitive_type (ERROR "__regparm3" identifier) (function_declarator "extend_match(match *m,Sym *sym,Sym_Table *tab,bfd_boolean second_pass,Sym_Table *tab_1)" identifier (parameter_list "(match *m,Sym *sym,Sym_Table *tab,bfd_boolean second_pass,Sym_Table *tab_1)" ( (parameter_declaration "match *m" type_identifier (pointer_declarator "*m" * identifier)) , (parameter_declaration "Sym *sym" type_identifier (pointer_declarator "*sym" * identifier)) , (parameter_declaration "Sym_Table *tab" type_identifier (pointer_declarator "*tab" * identifier)) , (parameter_declaration "bfd_boolean second_pass" type_identifier identifier) , (parameter_declaration "Sym_Table *tab_1" type_identifier (pointer_declarator "*tab_1" * identifier)) ))) (compound_statement "{\n  uint uVar1;\n  int iVar2;\n  Sym *pSVar3;\n  Sym *pSVar4;\n  Sym *pSVar5;\n  \n  iVar2 = *(int *)second_pass;\n  if (m->prev_match != sym + -1) {\n    uVar1 = tab->len;\n    pSVar3 = (Sym *)(iVar2 + uVar1 * 200);\n    pSVar4 = sym;\n    pSVar5 = pSVar3;\n    for (iVar2 = 0x32; iVar2 != 0; iVar2 = iVar2 + -1) {\n      pSVar5->addr = pSVar4->addr;\n      pSVar4 = (Sym *)&pSVar4->end_addr;\n      pSVar5 = (Sym *)&pSVar5->end_addr;\n    }\n    m->prev_index = uVar1;\n    pSVar3->next = m->first_match;\n    m->first_match = pSVar3;\n    tab->len = tab->len + 1;\n    iVar2 = *(int *)second_pass;\n  }\n  *(bfd_vma *)(iVar2 + 4 + m->prev_index * 200) = sym->end_addr;\n  m->prev_match = sym;\n  return;\n}" { (declaration "uint uVar1;" type_identifier identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "Sym *pSVar3;" type_identifier (pointer_declarator "*pSVar3" * identifier) ;) (declaration "Sym *pSVar4;" type_identifier (pointer_declarator "*pSVar4" * identifier) ;) (declaration "Sym *pSVar5;" type_identifier (pointer_declarator "*pSVar5" * identifier) ;) (expression_statement "iVar2 = *(int *)second_pass;" (assignment_expression "iVar2 = *(int *)second_pass" identifier = (pointer_expression "*(int *)second_pass" * (cast_expression "(int *)second_pass" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) ;) (if_statement "if (m->prev_match != sym + -1) {\n    uVar1 = tab->len;\n    pSVar3 = (Sym *)(iVar2 + uVar1 * 200);\n    pSVar4 = sym;\n    pSVar5 = pSVar3;\n    for (iVar2 = 0x32; iVar2 != 0; iVar2 = iVar2 + -1) {\n      pSVar5->addr = pSVar4->addr;\n      pSVar4 = (Sym *)&pSVar4->end_addr;\n      pSVar5 = (Sym *)&pSVar5->end_addr;\n    }\n    m->prev_index = uVar1;\n    pSVar3->next = m->first_match;\n    m->first_match = pSVar3;\n    tab->len = tab->len + 1;\n    iVar2 = *(int *)second_pass;\n  }" if (parenthesized_expression "(m->prev_match != sym + -1)" ( (binary_expression "m->prev_match != sym + -1" (field_expression "m->prev_match" identifier -> field_identifier) != (binary_expression "sym + -1" identifier + number_literal)) )) (compound_statement "{\n    uVar1 = tab->len;\n    pSVar3 = (Sym *)(iVar2 + uVar1 * 200);\n    pSVar4 = sym;\n    pSVar5 = pSVar3;\n    for (iVar2 = 0x32; iVar2 != 0; iVar2 = iVar2 + -1) {\n      pSVar5->addr = pSVar4->addr;\n      pSVar4 = (Sym *)&pSVar4->end_addr;\n      pSVar5 = (Sym *)&pSVar5->end_addr;\n    }\n    m->prev_index = uVar1;\n    pSVar3->next = m->first_match;\n    m->first_match = pSVar3;\n    tab->len = tab->len + 1;\n    iVar2 = *(int *)second_pass;\n  }" { (expression_statement "uVar1 = tab->len;" (assignment_expression "uVar1 = tab->len" identifier = (field_expression "tab->len" identifier -> field_identifier)) ;) (expression_statement "pSVar3 = (Sym *)(iVar2 + uVar1 * 200);" (assignment_expression "pSVar3 = (Sym *)(iVar2 + uVar1 * 200)" identifier = (cast_expression "(Sym *)(iVar2 + uVar1 * 200)" ( (type_descriptor "Sym *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + uVar1 * 200)" ( (binary_expression "iVar2 + uVar1 * 200" identifier + (binary_expression "uVar1 * 200" identifier * number_literal)) )))) ;) (expression_statement "pSVar4 = sym;" (assignment_expression "pSVar4 = sym" identifier = identifier) ;) (expression_statement "pSVar5 = pSVar3;" (assignment_expression "pSVar5 = pSVar3" identifier = identifier) ;) (for_statement "for (iVar2 = 0x32; iVar2 != 0; iVar2 = iVar2 + -1) {\n      pSVar5->addr = pSVar4->addr;\n      pSVar4 = (Sym *)&pSVar4->end_addr;\n      pSVar5 = (Sym *)&pSVar5->end_addr;\n    }" for ( (assignment_expression "iVar2 = 0x32" identifier = number_literal) ; (binary_expression "iVar2 != 0" identifier != number_literal) ; (assignment_expression "iVar2 = iVar2 + -1" identifier = (binary_expression "iVar2 + -1" identifier + number_literal)) ) (compound_statement "{\n      pSVar5->addr = pSVar4->addr;\n      pSVar4 = (Sym *)&pSVar4->end_addr;\n      pSVar5 = (Sym *)&pSVar5->end_addr;\n    }" { (expression_statement "pSVar5->addr = pSVar4->addr;" (assignment_expression "pSVar5->addr = pSVar4->addr" (field_expression "pSVar5->addr" identifier -> field_identifier) = (field_expression "pSVar4->addr" identifier -> field_identifier)) ;) (expression_statement "pSVar4 = (Sym *)&pSVar4->end_addr;" (assignment_expression "pSVar4 = (Sym *)&pSVar4->end_addr" identifier = (cast_expression "(Sym *)&pSVar4->end_addr" ( (type_descriptor "Sym *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&pSVar4->end_addr" & (field_expression "pSVar4->end_addr" identifier -> field_identifier)))) ;) (expression_statement "pSVar5 = (Sym *)&pSVar5->end_addr;" (assignment_expression "pSVar5 = (Sym *)&pSVar5->end_addr" identifier = (cast_expression "(Sym *)&pSVar5->end_addr" ( (type_descriptor "Sym *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&pSVar5->end_addr" & (field_expression "pSVar5->end_addr" identifier -> field_identifier)))) ;) })) (expression_statement "m->prev_index = uVar1;" (assignment_expression "m->prev_index = uVar1" (field_expression "m->prev_index" identifier -> field_identifier) = identifier) ;) (expression_statement "pSVar3->next = m->first_match;" (assignment_expression "pSVar3->next = m->first_match" (field_expression "pSVar3->next" identifier -> field_identifier) = (field_expression "m->first_match" identifier -> field_identifier)) ;) (expression_statement "m->first_match = pSVar3;" (assignment_expression "m->first_match = pSVar3" (field_expression "m->first_match" identifier -> field_identifier) = identifier) ;) (expression_statement "tab->len = tab->len + 1;" (assignment_expression "tab->len = tab->len + 1" (field_expression "tab->len" identifier -> field_identifier) = (binary_expression "tab->len + 1" (field_expression "tab->len" identifier -> field_identifier) + number_literal)) ;) (expression_statement "iVar2 = *(int *)second_pass;" (assignment_expression "iVar2 = *(int *)second_pass" identifier = (pointer_expression "*(int *)second_pass" * (cast_expression "(int *)second_pass" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) ;) })) (expression_statement "*(bfd_vma *)(iVar2 + 4 + m->prev_index * 200) = sym->end_addr;" (assignment_expression "*(bfd_vma *)(iVar2 + 4 + m->prev_index * 200) = sym->end_addr" (pointer_expression "*(bfd_vma *)(iVar2 + 4 + m->prev_index * 200)" * (cast_expression "(bfd_vma *)(iVar2 + 4 + m->prev_index * 200)" ( (type_descriptor "bfd_vma *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 4 + m->prev_index * 200)" ( (binary_expression "iVar2 + 4 + m->prev_index * 200" (binary_expression "iVar2 + 4" identifier + number_literal) + (binary_expression "m->prev_index * 200" (field_expression "m->prev_index" identifier -> field_identifier) * number_literal)) )))) = (field_expression "sym->end_addr" identifier -> field_identifier)) ;) (expression_statement "m->prev_match = sym;" (assignment_expression "m->prev_match = sym" (field_expression "m->prev_match" identifier -> field_identifier) = identifier) ;) (return_statement "return;" return ;) })))
(translation_unit "void __regparm3 FUN_0001cda0(int *param_1,undefined4 *param_2,int *param_3,int *param_4)\n\n{\n  int iVar1;\n  int iVar2;\n  undefined4 *puVar3;\n  undefined4 *puVar4;\n  undefined4 *puVar5;\n  \n  iVar2 = *param_4;\n  if ((undefined4 *)param_1[1] != param_2 + -0x32) {\n    iVar1 = *param_3;\n    puVar3 = (undefined4 *)(iVar2 + iVar1 * 200);\n    puVar4 = param_2;\n    puVar5 = puVar3;\n    for (iVar2 = 0x32; iVar2 != 0; iVar2 = iVar2 + -1) {\n      *puVar5 = *puVar4;\n      puVar4 = puVar4 + 1;\n      puVar5 = puVar5 + 1;\n    }\n    *param_1 = iVar1;\n    puVar3[0x1c] = param_1[2];\n    param_1[2] = (int)puVar3;\n    *param_3 = *param_3 + 1;\n    iVar2 = *param_4;\n  }\n  *(undefined4 *)(iVar2 + 4 + *param_1 * 200) = param_2[1];\n  param_1[1] = (int)param_2;\n  return;\n}\n\n" (function_definition "void __regparm3 FUN_0001cda0(int *param_1,undefined4 *param_2,int *param_3,int *param_4)\n\n{\n  int iVar1;\n  int iVar2;\n  undefined4 *puVar3;\n  undefined4 *puVar4;\n  undefined4 *puVar5;\n  \n  iVar2 = *param_4;\n  if ((undefined4 *)param_1[1] != param_2 + -0x32) {\n    iVar1 = *param_3;\n    puVar3 = (undefined4 *)(iVar2 + iVar1 * 200);\n    puVar4 = param_2;\n    puVar5 = puVar3;\n    for (iVar2 = 0x32; iVar2 != 0; iVar2 = iVar2 + -1) {\n      *puVar5 = *puVar4;\n      puVar4 = puVar4 + 1;\n      puVar5 = puVar5 + 1;\n    }\n    *param_1 = iVar1;\n    puVar3[0x1c] = param_1[2];\n    param_1[2] = (int)puVar3;\n    *param_3 = *param_3 + 1;\n    iVar2 = *param_4;\n  }\n  *(undefined4 *)(iVar2 + 4 + *param_1 * 200) = param_2[1];\n  param_1[1] = (int)param_2;\n  return;\n}" primitive_type (ERROR "__regparm3" identifier) (function_declarator "FUN_0001cda0(int *param_1,undefined4 *param_2,int *param_3,int *param_4)" identifier (parameter_list "(int *param_1,undefined4 *param_2,int *param_3,int *param_4)" ( (parameter_declaration "int *param_1" primitive_type (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "undefined4 *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "int *param_3" primitive_type (pointer_declarator "*param_3" * identifier)) , (parameter_declaration "int *param_4" primitive_type (pointer_declarator "*param_4" * identifier)) ))) (compound_statement "{\n  int iVar1;\n  int iVar2;\n  undefined4 *puVar3;\n  undefined4 *puVar4;\n  undefined4 *puVar5;\n  \n  iVar2 = *param_4;\n  if ((undefined4 *)param_1[1] != param_2 + -0x32) {\n    iVar1 = *param_3;\n    puVar3 = (undefined4 *)(iVar2 + iVar1 * 200);\n    puVar4 = param_2;\n    puVar5 = puVar3;\n    for (iVar2 = 0x32; iVar2 != 0; iVar2 = iVar2 + -1) {\n      *puVar5 = *puVar4;\n      puVar4 = puVar4 + 1;\n      puVar5 = puVar5 + 1;\n    }\n    *param_1 = iVar1;\n    puVar3[0x1c] = param_1[2];\n    param_1[2] = (int)puVar3;\n    *param_3 = *param_3 + 1;\n    iVar2 = *param_4;\n  }\n  *(undefined4 *)(iVar2 + 4 + *param_1 * 200) = param_2[1];\n  param_1[1] = (int)param_2;\n  return;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "undefined4 *puVar3;" type_identifier (pointer_declarator "*puVar3" * identifier) ;) (declaration "undefined4 *puVar4;" type_identifier (pointer_declarator "*puVar4" * identifier) ;) (declaration "undefined4 *puVar5;" type_identifier (pointer_declarator "*puVar5" * identifier) ;) (expression_statement "iVar2 = *param_4;" (assignment_expression "iVar2 = *param_4" identifier = (pointer_expression "*param_4" * identifier)) ;) (if_statement "if ((undefined4 *)param_1[1] != param_2 + -0x32) {\n    iVar1 = *param_3;\n    puVar3 = (undefined4 *)(iVar2 + iVar1 * 200);\n    puVar4 = param_2;\n    puVar5 = puVar3;\n    for (iVar2 = 0x32; iVar2 != 0; iVar2 = iVar2 + -1) {\n      *puVar5 = *puVar4;\n      puVar4 = puVar4 + 1;\n      puVar5 = puVar5 + 1;\n    }\n    *param_1 = iVar1;\n    puVar3[0x1c] = param_1[2];\n    param_1[2] = (int)puVar3;\n    *param_3 = *param_3 + 1;\n    iVar2 = *param_4;\n  }" if (parenthesized_expression "((undefined4 *)param_1[1] != param_2 + -0x32)" ( (binary_expression "(undefined4 *)param_1[1] != param_2 + -0x32" (cast_expression "(undefined4 *)param_1[1]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[1]" identifier [ number_literal ])) != (binary_expression "param_2 + -0x32" identifier + number_literal)) )) (compound_statement "{\n    iVar1 = *param_3;\n    puVar3 = (undefined4 *)(iVar2 + iVar1 * 200);\n    puVar4 = param_2;\n    puVar5 = puVar3;\n    for (iVar2 = 0x32; iVar2 != 0; iVar2 = iVar2 + -1) {\n      *puVar5 = *puVar4;\n      puVar4 = puVar4 + 1;\n      puVar5 = puVar5 + 1;\n    }\n    *param_1 = iVar1;\n    puVar3[0x1c] = param_1[2];\n    param_1[2] = (int)puVar3;\n    *param_3 = *param_3 + 1;\n    iVar2 = *param_4;\n  }" { (expression_statement "iVar1 = *param_3;" (assignment_expression "iVar1 = *param_3" identifier = (pointer_expression "*param_3" * identifier)) ;) (expression_statement "puVar3 = (undefined4 *)(iVar2 + iVar1 * 200);" (assignment_expression "puVar3 = (undefined4 *)(iVar2 + iVar1 * 200)" identifier = (cast_expression "(undefined4 *)(iVar2 + iVar1 * 200)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + iVar1 * 200)" ( (binary_expression "iVar2 + iVar1 * 200" identifier + (binary_expression "iVar1 * 200" identifier * number_literal)) )))) ;) (expression_statement "puVar4 = param_2;" (assignment_expression "puVar4 = param_2" identifier = identifier) ;) (expression_statement "puVar5 = puVar3;" (assignment_expression "puVar5 = puVar3" identifier = identifier) ;) (for_statement "for (iVar2 = 0x32; iVar2 != 0; iVar2 = iVar2 + -1) {\n      *puVar5 = *puVar4;\n      puVar4 = puVar4 + 1;\n      puVar5 = puVar5 + 1;\n    }" for ( (assignment_expression "iVar2 = 0x32" identifier = number_literal) ; (binary_expression "iVar2 != 0" identifier != number_literal) ; (assignment_expression "iVar2 = iVar2 + -1" identifier = (binary_expression "iVar2 + -1" identifier + number_literal)) ) (compound_statement "{\n      *puVar5 = *puVar4;\n      puVar4 = puVar4 + 1;\n      puVar5 = puVar5 + 1;\n    }" { (expression_statement "*puVar5 = *puVar4;" (assignment_expression "*puVar5 = *puVar4" (pointer_expression "*puVar5" * identifier) = (pointer_expression "*puVar4" * identifier)) ;) (expression_statement "puVar4 = puVar4 + 1;" (assignment_expression "puVar4 = puVar4 + 1" identifier = (binary_expression "puVar4 + 1" identifier + number_literal)) ;) (expression_statement "puVar5 = puVar5 + 1;" (assignment_expression "puVar5 = puVar5 + 1" identifier = (binary_expression "puVar5 + 1" identifier + number_literal)) ;) })) (expression_statement "*param_1 = iVar1;" (assignment_expression "*param_1 = iVar1" (pointer_expression "*param_1" * identifier) = identifier) ;) (expression_statement "puVar3[0x1c] = param_1[2];" (assignment_expression "puVar3[0x1c] = param_1[2]" (subscript_expression "puVar3[0x1c]" identifier [ number_literal ]) = (subscript_expression "param_1[2]" identifier [ number_literal ])) ;) (expression_statement "param_1[2] = (int)puVar3;" (assignment_expression "param_1[2] = (int)puVar3" (subscript_expression "param_1[2]" identifier [ number_literal ]) = (cast_expression "(int)puVar3" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "*param_3 = *param_3 + 1;" (assignment_expression "*param_3 = *param_3 + 1" (pointer_expression "*param_3" * identifier) = (binary_expression "*param_3 + 1" (pointer_expression "*param_3" * identifier) + number_literal)) ;) (expression_statement "iVar2 = *param_4;" (assignment_expression "iVar2 = *param_4" identifier = (pointer_expression "*param_4" * identifier)) ;) })) (expression_statement "*(undefined4 *)(iVar2 + 4 + *param_1 * 200) = param_2[1];" (assignment_expression "*(undefined4 *)(iVar2 + 4 + *param_1 * 200) = param_2[1]" (pointer_expression "*(undefined4 *)(iVar2 + 4 + *param_1 * 200)" * (cast_expression "(undefined4 *)(iVar2 + 4 + *param_1 * 200)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 4 + *param_1 * 200)" ( (binary_expression "iVar2 + 4 + *param_1 * 200" (binary_expression "iVar2 + 4" identifier + number_literal) + (binary_expression "*param_1 * 200" (pointer_expression "*param_1" * identifier) * number_literal)) )))) = (subscript_expression "param_2[1]" identifier [ number_literal ])) ;) (expression_statement "param_1[1] = (int)param_2;" (assignment_expression "param_1[1] = (int)param_2" (subscript_expression "param_1[1]" identifier [ number_literal ]) = (cast_expression "(int)param_2" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (return_statement "return;" return ;) })))
(translation_unit (function_definition TYPE (ERROR IDENT) (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE (pointer_declarator * IDENT)) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ])) != (binary_expression IDENT + LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression IDENT * LIT)) )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (for_statement for ( (assignment_expression IDENT = LIT) ; (binary_expression IDENT != LIT) ; (assignment_expression IDENT = (binary_expression IDENT + LIT)) ) (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) })) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression (pointer_expression * IDENT) + LIT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) })) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) + (binary_expression (pointer_expression * IDENT) * LIT)) )))) = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (return_statement return ;) })))
(function_definition "void __regparm3 FUN_0001cda0(int *param_1,undefined4 *param_2,int *param_3,int *param_4)\n\n{\n  int iVar1;\n  int iVar2;\n  undefined4 *puVar3;\n  undefined4 *puVar4;\n  undefined4 *puVar5;\n  \n  iVar2 = *param_4;\n  if ((undefined4 *)param_1[1] != param_2 + -0x32) {\n    iVar1 = *param_3;\n    puVar3 = (undefined4 *)(iVar2 + iVar1 * 200);\n    puVar4 = param_2;\n    puVar5 = puVar3;\n    for (iVar2 = 0x32; iVar2 != 0; iVar2 = iVar2 + -1) {\n      *puVar5 = *puVar4;\n      puVar4 = puVar4 + 1;\n      puVar5 = puVar5 + 1;\n    }\n    *param_1 = iVar1;\n    puVar3[0x1c] = param_1[2];\n    param_1[2] = (int)puVar3;\n    *param_3 = *param_3 + 1;\n    iVar2 = *param_4;\n  }\n  *(undefined4 *)(iVar2 + 4 + *param_1 * 200) = param_2[1];\n  param_1[1] = (int)param_2;\n  return;\n}" (primitive_type "void") (ERROR "__regparm3" (identifier "__regparm3")) (function_declarator "FUN_0001cda0(int *param_1,undefined4 *param_2,int *param_3,int *param_4)" (identifier "FUN_0001cda0") (parameter_list "(int *param_1,undefined4 *param_2,int *param_3,int *param_4)" (( "(") (parameter_declaration "int *param_1" (primitive_type "int") (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) (, ",") (parameter_declaration "undefined4 *param_2" (type_identifier "undefined4") (pointer_declarator "*param_2" (* "*") (identifier "param_2"))) (, ",") (parameter_declaration "int *param_3" (primitive_type "int") (pointer_declarator "*param_3" (* "*") (identifier "param_3"))) (, ",") (parameter_declaration "int *param_4" (primitive_type "int") (pointer_declarator "*param_4" (* "*") (identifier "param_4"))) () ")"))) (compound_statement "{\n  int iVar1;\n  int iVar2;\n  undefined4 *puVar3;\n  undefined4 *puVar4;\n  undefined4 *puVar5;\n  \n  iVar2 = *param_4;\n  if ((undefined4 *)param_1[1] != param_2 + -0x32) {\n    iVar1 = *param_3;\n    puVar3 = (undefined4 *)(iVar2 + iVar1 * 200);\n    puVar4 = param_2;\n    puVar5 = puVar3;\n    for (iVar2 = 0x32; iVar2 != 0; iVar2 = iVar2 + -1) {\n      *puVar5 = *puVar4;\n      puVar4 = puVar4 + 1;\n      puVar5 = puVar5 + 1;\n    }\n    *param_1 = iVar1;\n    puVar3[0x1c] = param_1[2];\n    param_1[2] = (int)puVar3;\n    *param_3 = *param_3 + 1;\n    iVar2 = *param_4;\n  }\n  *(undefined4 *)(iVar2 + 4 + *param_1 * 200) = param_2[1];\n  param_1[1] = (int)param_2;\n  return;\n}" ({ "{") (declaration "int iVar1;" (primitive_type "int") (identifier "iVar1") (; ";")) (declaration "int iVar2;" (primitive_type "int") (identifier "iVar2") (; ";")) (declaration "undefined4 *puVar3;" (type_identifier "undefined4") (pointer_declarator "*puVar3" (* "*") (identifier "puVar3")) (; ";")) (declaration "undefined4 *puVar4;" (type_identifier "undefined4") (pointer_declarator "*puVar4" (* "*") (identifier "puVar4")) (; ";")) (declaration "undefined4 *puVar5;" (type_identifier "undefined4") (pointer_declarator "*puVar5" (* "*") (identifier "puVar5")) (; ";")) (expression_statement "iVar2 = *param_4;" (assignment_expression "iVar2 = *param_4" (identifier "iVar2") (= "=") (pointer_expression "*param_4" (* "*") (identifier "param_4"))) (; ";")) (if_statement "if ((undefined4 *)param_1[1] != param_2 + -0x32) {\n    iVar1 = *param_3;\n    puVar3 = (undefined4 *)(iVar2 + iVar1 * 200);\n    puVar4 = param_2;\n    puVar5 = puVar3;\n    for (iVar2 = 0x32; iVar2 != 0; iVar2 = iVar2 + -1) {\n      *puVar5 = *puVar4;\n      puVar4 = puVar4 + 1;\n      puVar5 = puVar5 + 1;\n    }\n    *param_1 = iVar1;\n    puVar3[0x1c] = param_1[2];\n    param_1[2] = (int)puVar3;\n    *param_3 = *param_3 + 1;\n    iVar2 = *param_4;\n  }" (if "if") (parenthesized_expression "((undefined4 *)param_1[1] != param_2 + -0x32)" (( "(") (binary_expression "(undefined4 *)param_1[1] != param_2 + -0x32" (cast_expression "(undefined4 *)param_1[1]" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]"))) (!= "!=") (binary_expression "param_2 + -0x32" (identifier "param_2") (+ "+") (number_literal "-0x32"))) () ")")) (compound_statement "{\n    iVar1 = *param_3;\n    puVar3 = (undefined4 *)(iVar2 + iVar1 * 200);\n    puVar4 = param_2;\n    puVar5 = puVar3;\n    for (iVar2 = 0x32; iVar2 != 0; iVar2 = iVar2 + -1) {\n      *puVar5 = *puVar4;\n      puVar4 = puVar4 + 1;\n      puVar5 = puVar5 + 1;\n    }\n    *param_1 = iVar1;\n    puVar3[0x1c] = param_1[2];\n    param_1[2] = (int)puVar3;\n    *param_3 = *param_3 + 1;\n    iVar2 = *param_4;\n  }" ({ "{") (expression_statement "iVar1 = *param_3;" (assignment_expression "iVar1 = *param_3" (identifier "iVar1") (= "=") (pointer_expression "*param_3" (* "*") (identifier "param_3"))) (; ";")) (expression_statement "puVar3 = (undefined4 *)(iVar2 + iVar1 * 200);" (assignment_expression "puVar3 = (undefined4 *)(iVar2 + iVar1 * 200)" (identifier "puVar3") (= "=") (cast_expression "(undefined4 *)(iVar2 + iVar1 * 200)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar2 + iVar1 * 200)" (( "(") (binary_expression "iVar2 + iVar1 * 200" (identifier "iVar2") (+ "+") (binary_expression "iVar1 * 200" (identifier "iVar1") (* "*") (number_literal "200"))) () ")")))) (; ";")) (expression_statement "puVar4 = param_2;" (assignment_expression "puVar4 = param_2" (identifier "puVar4") (= "=") (identifier "param_2")) (; ";")) (expression_statement "puVar5 = puVar3;" (assignment_expression "puVar5 = puVar3" (identifier "puVar5") (= "=") (identifier "puVar3")) (; ";")) (for_statement "for (iVar2 = 0x32; iVar2 != 0; iVar2 = iVar2 + -1) {\n      *puVar5 = *puVar4;\n      puVar4 = puVar4 + 1;\n      puVar5 = puVar5 + 1;\n    }" (for "for") (( "(") (assignment_expression "iVar2 = 0x32" (identifier "iVar2") (= "=") (number_literal "0x32")) (; ";") (binary_expression "iVar2 != 0" (identifier "iVar2") (!= "!=") (number_literal "0")) (; ";") (assignment_expression "iVar2 = iVar2 + -1" (identifier "iVar2") (= "=") (binary_expression "iVar2 + -1" (identifier "iVar2") (+ "+") (number_literal "-1"))) () ")") (compound_statement "{\n      *puVar5 = *puVar4;\n      puVar4 = puVar4 + 1;\n      puVar5 = puVar5 + 1;\n    }" ({ "{") (expression_statement "*puVar5 = *puVar4;" (assignment_expression "*puVar5 = *puVar4" (pointer_expression "*puVar5" (* "*") (identifier "puVar5")) (= "=") (pointer_expression "*puVar4" (* "*") (identifier "puVar4"))) (; ";")) (expression_statement "puVar4 = puVar4 + 1;" (assignment_expression "puVar4 = puVar4 + 1" (identifier "puVar4") (= "=") (binary_expression "puVar4 + 1" (identifier "puVar4") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "puVar5 = puVar5 + 1;" (assignment_expression "puVar5 = puVar5 + 1" (identifier "puVar5") (= "=") (binary_expression "puVar5 + 1" (identifier "puVar5") (+ "+") (number_literal "1"))) (; ";")) (} "}"))) (expression_statement "*param_1 = iVar1;" (assignment_expression "*param_1 = iVar1" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (= "=") (identifier "iVar1")) (; ";")) (expression_statement "puVar3[0x1c] = param_1[2];" (assignment_expression "puVar3[0x1c] = param_1[2]" (subscript_expression "puVar3[0x1c]" (identifier "puVar3") ([ "[") (number_literal "0x1c") (] "]")) (= "=") (subscript_expression "param_1[2]" (identifier "param_1") ([ "[") (number_literal "2") (] "]"))) (; ";")) (expression_statement "param_1[2] = (int)puVar3;" (assignment_expression "param_1[2] = (int)puVar3" (subscript_expression "param_1[2]" (identifier "param_1") ([ "[") (number_literal "2") (] "]")) (= "=") (cast_expression "(int)puVar3" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar3"))) (; ";")) (expression_statement "*param_3 = *param_3 + 1;" (assignment_expression "*param_3 = *param_3 + 1" (pointer_expression "*param_3" (* "*") (identifier "param_3")) (= "=") (binary_expression "*param_3 + 1" (pointer_expression "*param_3" (* "*") (identifier "param_3")) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "iVar2 = *param_4;" (assignment_expression "iVar2 = *param_4" (identifier "iVar2") (= "=") (pointer_expression "*param_4" (* "*") (identifier "param_4"))) (; ";")) (} "}"))) (expression_statement "*(undefined4 *)(iVar2 + 4 + *param_1 * 200) = param_2[1];" (assignment_expression "*(undefined4 *)(iVar2 + 4 + *param_1 * 200) = param_2[1]" (pointer_expression "*(undefined4 *)(iVar2 + 4 + *param_1 * 200)" (* "*") (cast_expression "(undefined4 *)(iVar2 + 4 + *param_1 * 200)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar2 + 4 + *param_1 * 200)" (( "(") (binary_expression "iVar2 + 4 + *param_1 * 200" (binary_expression "iVar2 + 4" (identifier "iVar2") (+ "+") (number_literal "4")) (+ "+") (binary_expression "*param_1 * 200" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (* "*") (number_literal "200"))) () ")")))) (= "=") (subscript_expression "param_2[1]" (identifier "param_2") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "param_1[1] = (int)param_2;" (assignment_expression "param_1[1] = (int)param_2" (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]")) (= "=") (cast_expression "(int)param_2" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_2"))) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}")))

/* DWARF original prototype: void extend_match(match * m, Sym * sym, Sym_Table * tab, bfd_boolean
   second_pass, Sym_Table * tab) */

void __regparm3
function_1(type_1 *m,type_2 *var_1,type_3 *tab,type_4 second_pass,type_3 *tab_1)

{
  type_5 var_3;
  int var_2;
  type_2 *pSVar3;
  type_2 *pSVar4;
  type_2 *pSVar5;
  
  var_2 = *(int *)second_pass;
  if (m->prev_match != var_1 + -1) {
    var_3 = tab->len;
    pSVar3 = (type_2 *)(var_2 + var_3 * 200);
    pSVar4 = var_1;
    pSVar5 = pSVar3;
    for (var_2 = 0x32; var_2 != 0; var_2 = var_2 + -1) {
      pSVar5->addr = pSVar4->addr;
      pSVar4 = (type_2 *)&pSVar4->end_addr;
      pSVar5 = (type_2 *)&pSVar5->end_addr;
    }
    m->prev_index = var_3;
    pSVar3->next = m->first_match;
    m->first_match = pSVar3;
    tab->len = tab->len + 1;
    var_2 = *(int *)second_pass;
  }
  *(type_6 *)(var_2 + 4 + m->prev_index * 200) = var_1->end_addr;
  m->prev_match = var_1;
  return;
}


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

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

{
  int iVar1;
  int iVar2;
  undefined4 *puVar3;
  undefined4 *puVar4;
  undefined4 *puVar5;
  
  iVar2 = *param_4;
  if ((undefined4 *)param_1[1] != param_2 + -0x32) {
    iVar1 = *param_3;
    puVar3 = (undefined4 *)(iVar2 + iVar1 * 200);
    puVar4 = param_2;
    puVar5 = puVar3;
    for (iVar2 = 0x32; iVar2 != 0; iVar2 = iVar2 + -1) {
      *puVar5 = *puVar4;
      puVar4 = puVar4 + 1;
      puVar5 = puVar5 + 1;
    }
    *param_1 = iVar1;
    puVar3[0x1c] = param_1[2];
    param_1[2] = (int)puVar3;
    *param_3 = *param_3 + 1;
    iVar2 = *param_4;
  }
  *(undefined4 *)(iVar2 + 4 + *param_1 * 200) = param_2[1];
  param_1[1] = (int)param_2;
  return;
}

