
/* WARNING: Function: __x86.get_pc_thunk.dx replaced with injection: get_pc_thunk_dx */
/* WARNING: Unknown calling convention */

void adjust_addresses(bfd *abfd,asection *section,void *arg)

{
  bfd_vma *pbVar1;
  int *piVar2;
  bfd_vma bVar3;
  uint uVar4;
  int iVar5;
  bool bVar6;
  
  iVar5 = adjust_section_vma._4_4_;
  uVar4 = (uint)adjust_section_vma;
  if ((section->flags & 0x2000) == 0) {
    pbVar1 = &section->vma;
    bVar6 = CARRY4((uint)*pbVar1,(uint)adjust_section_vma);
    *(uint *)pbVar1 = (int)*pbVar1 + (uint)adjust_section_vma;
    piVar2 = (int *)((int)&section->vma + 4);
    *piVar2 = *piVar2 + iVar5 + (uint)bVar6;
                    /* WARNING: Load size is inaccurate */
    if (*arg != 0) {
      pbVar1 = &section->lma;
      bVar3 = *pbVar1;
      *(uint *)pbVar1 = (int)*pbVar1 + uVar4;
      piVar2 = (int *)((int)&section->lma + 4);
      *piVar2 = *piVar2 + iVar5 + (uint)CARRY4((uint)bVar3,uVar4);
    }
  }
  return;
}



/* WARNING: Function: __i686.get_pc_thunk.dx replaced with injection: get_pc_thunk_dx */

void FUN_00017560(undefined4 param_1,int param_2,int *param_3)

{
  uint *puVar1;
  uint uVar2;
  uint uVar3;
  int iVar4;
  bool bVar5;
  
  iVar4 = DAT_000740ac;
  uVar3 = DAT_000740a8;
  if ((*(byte *)(param_2 + 0x15) & 0x20) == 0) {
    puVar1 = (uint *)(param_2 + 0x1c);
    bVar5 = CARRY4(*puVar1,DAT_000740a8);
    *puVar1 = *puVar1 + DAT_000740a8;
    *(int *)(param_2 + 0x20) = *(int *)(param_2 + 0x20) + iVar4 + (uint)bVar5;
    if (*param_3 != 0) {
      puVar1 = (uint *)(param_2 + 0x24);
      uVar2 = *puVar1;
      *puVar1 = *puVar1 + uVar3;
      *(int *)(param_2 + 0x28) = *(int *)(param_2 + 0x28) + iVar4 + (uint)CARRY4(uVar2,uVar3);
    }
  }
  return;
}


CALL 0x00015505
ADD EDX,0x5ba9b
PUSH EBX
MOV EAX,dword ptr [ESP + 0xc]
TEST byte ptr [EAX + 0x15],0x20
JNZ 0x00017598
MOV ECX,dword ptr [EDX + 0x10a8]
MOV EBX,dword ptr [EDX + 0x10ac]
MOV EDX,dword ptr [ESP + 0x10]
ADD dword ptr [EAX + 0x1c],ECX
ADC dword ptr [EAX + 0x20],EBX
MOV EDX,dword ptr [EDX]
TEST EDX,EDX
JZ 0x00017598
ADD dword ptr [EAX + 0x24],ECX
ADC dword ptr [EAX + 0x28],EBX
POP EBX
RET
(translation_unit "/* WARNING: Function: __i686.get_pc_thunk.dx replaced with injection: get_pc_thunk_dx */\n\nvoid FUN_00017560(undefined4 param_1,int param_2,int *param_3)\n\n{\n  uint *puVar1;\n  uint uVar2;\n  uint uVar3;\n  int iVar4;\n  bool bVar5;\n  \n  iVar4 = DAT_000740ac;\n  uVar3 = DAT_000740a8;\n  if ((*(byte *)(param_2 + 0x15) & 0x20) == 0) {\n    puVar1 = (uint *)(param_2 + 0x1c);\n    bVar5 = CARRY4(*puVar1,DAT_000740a8);\n    *puVar1 = *puVar1 + DAT_000740a8;\n    *(int *)(param_2 + 0x20) = *(int *)(param_2 + 0x20) + iVar4 + (uint)bVar5;\n    if (*param_3 != 0) {\n      puVar1 = (uint *)(param_2 + 0x24);\n      uVar2 = *puVar1;\n      *puVar1 = *puVar1 + uVar3;\n      *(int *)(param_2 + 0x28) = *(int *)(param_2 + 0x28) + iVar4 + (uint)CARRY4(uVar2,uVar3);\n    }\n  }\n  return;\n}\n\n" comment (function_definition "void FUN_00017560(undefined4 param_1,int param_2,int *param_3)\n\n{\n  uint *puVar1;\n  uint uVar2;\n  uint uVar3;\n  int iVar4;\n  bool bVar5;\n  \n  iVar4 = DAT_000740ac;\n  uVar3 = DAT_000740a8;\n  if ((*(byte *)(param_2 + 0x15) & 0x20) == 0) {\n    puVar1 = (uint *)(param_2 + 0x1c);\n    bVar5 = CARRY4(*puVar1,DAT_000740a8);\n    *puVar1 = *puVar1 + DAT_000740a8;\n    *(int *)(param_2 + 0x20) = *(int *)(param_2 + 0x20) + iVar4 + (uint)bVar5;\n    if (*param_3 != 0) {\n      puVar1 = (uint *)(param_2 + 0x24);\n      uVar2 = *puVar1;\n      *puVar1 = *puVar1 + uVar3;\n      *(int *)(param_2 + 0x28) = *(int *)(param_2 + 0x28) + iVar4 + (uint)CARRY4(uVar2,uVar3);\n    }\n  }\n  return;\n}" primitive_type (function_declarator "FUN_00017560(undefined4 param_1,int param_2,int *param_3)" identifier (parameter_list "(undefined4 param_1,int param_2,int *param_3)" ( (parameter_declaration "undefined4 param_1" type_identifier identifier) , (parameter_declaration "int param_2" primitive_type identifier) , (parameter_declaration "int *param_3" primitive_type (pointer_declarator "*param_3" * identifier)) ))) (compound_statement "{\n  uint *puVar1;\n  uint uVar2;\n  uint uVar3;\n  int iVar4;\n  bool bVar5;\n  \n  iVar4 = DAT_000740ac;\n  uVar3 = DAT_000740a8;\n  if ((*(byte *)(param_2 + 0x15) & 0x20) == 0) {\n    puVar1 = (uint *)(param_2 + 0x1c);\n    bVar5 = CARRY4(*puVar1,DAT_000740a8);\n    *puVar1 = *puVar1 + DAT_000740a8;\n    *(int *)(param_2 + 0x20) = *(int *)(param_2 + 0x20) + iVar4 + (uint)bVar5;\n    if (*param_3 != 0) {\n      puVar1 = (uint *)(param_2 + 0x24);\n      uVar2 = *puVar1;\n      *puVar1 = *puVar1 + uVar3;\n      *(int *)(param_2 + 0x28) = *(int *)(param_2 + 0x28) + iVar4 + (uint)CARRY4(uVar2,uVar3);\n    }\n  }\n  return;\n}" { (declaration "uint *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "uint uVar2;" type_identifier identifier ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "bool bVar5;" primitive_type identifier ;) (expression_statement "iVar4 = DAT_000740ac;" (assignment_expression "iVar4 = DAT_000740ac" identifier = identifier) ;) (expression_statement "uVar3 = DAT_000740a8;" (assignment_expression "uVar3 = DAT_000740a8" identifier = identifier) ;) (if_statement "if ((*(byte *)(param_2 + 0x15) & 0x20) == 0) {\n    puVar1 = (uint *)(param_2 + 0x1c);\n    bVar5 = CARRY4(*puVar1,DAT_000740a8);\n    *puVar1 = *puVar1 + DAT_000740a8;\n    *(int *)(param_2 + 0x20) = *(int *)(param_2 + 0x20) + iVar4 + (uint)bVar5;\n    if (*param_3 != 0) {\n      puVar1 = (uint *)(param_2 + 0x24);\n      uVar2 = *puVar1;\n      *puVar1 = *puVar1 + uVar3;\n      *(int *)(param_2 + 0x28) = *(int *)(param_2 + 0x28) + iVar4 + (uint)CARRY4(uVar2,uVar3);\n    }\n  }" if (parenthesized_expression "((*(byte *)(param_2 + 0x15) & 0x20) == 0)" ( (binary_expression "(*(byte *)(param_2 + 0x15) & 0x20) == 0" (parenthesized_expression "(*(byte *)(param_2 + 0x15) & 0x20)" ( (binary_expression "*(byte *)(param_2 + 0x15) & 0x20" (pointer_expression "*(byte *)(param_2 + 0x15)" * (cast_expression "(byte *)(param_2 + 0x15)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x15)" ( (binary_expression "param_2 + 0x15" identifier + number_literal) )))) & number_literal) )) == number_literal) )) (compound_statement "{\n    puVar1 = (uint *)(param_2 + 0x1c);\n    bVar5 = CARRY4(*puVar1,DAT_000740a8);\n    *puVar1 = *puVar1 + DAT_000740a8;\n    *(int *)(param_2 + 0x20) = *(int *)(param_2 + 0x20) + iVar4 + (uint)bVar5;\n    if (*param_3 != 0) {\n      puVar1 = (uint *)(param_2 + 0x24);\n      uVar2 = *puVar1;\n      *puVar1 = *puVar1 + uVar3;\n      *(int *)(param_2 + 0x28) = *(int *)(param_2 + 0x28) + iVar4 + (uint)CARRY4(uVar2,uVar3);\n    }\n  }" { (expression_statement "puVar1 = (uint *)(param_2 + 0x1c);" (assignment_expression "puVar1 = (uint *)(param_2 + 0x1c)" identifier = (cast_expression "(uint *)(param_2 + 0x1c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x1c)" ( (binary_expression "param_2 + 0x1c" identifier + number_literal) )))) ;) (expression_statement "bVar5 = CARRY4(*puVar1,DAT_000740a8);" (assignment_expression "bVar5 = CARRY4(*puVar1,DAT_000740a8)" identifier = (call_expression "CARRY4(*puVar1,DAT_000740a8)" identifier (argument_list "(*puVar1,DAT_000740a8)" ( (pointer_expression "*puVar1" * identifier) , identifier )))) ;) (expression_statement "*puVar1 = *puVar1 + DAT_000740a8;" (assignment_expression "*puVar1 = *puVar1 + DAT_000740a8" (pointer_expression "*puVar1" * identifier) = (binary_expression "*puVar1 + DAT_000740a8" (pointer_expression "*puVar1" * identifier) + identifier)) ;) (expression_statement "*(int *)(param_2 + 0x20) = *(int *)(param_2 + 0x20) + iVar4 + (uint)bVar5;" (assignment_expression "*(int *)(param_2 + 0x20) = *(int *)(param_2 + 0x20) + iVar4 + (uint)bVar5" (pointer_expression "*(int *)(param_2 + 0x20)" * (cast_expression "(int *)(param_2 + 0x20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x20)" ( (binary_expression "param_2 + 0x20" identifier + number_literal) )))) = (binary_expression "*(int *)(param_2 + 0x20) + iVar4 + (uint)bVar5" (binary_expression "*(int *)(param_2 + 0x20) + iVar4" (pointer_expression "*(int *)(param_2 + 0x20)" * (cast_expression "(int *)(param_2 + 0x20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x20)" ( (binary_expression "param_2 + 0x20" identifier + number_literal) )))) + identifier) + (cast_expression "(uint)bVar5" ( (type_descriptor "uint" type_identifier) ) identifier))) ;) (if_statement "if (*param_3 != 0) {\n      puVar1 = (uint *)(param_2 + 0x24);\n      uVar2 = *puVar1;\n      *puVar1 = *puVar1 + uVar3;\n      *(int *)(param_2 + 0x28) = *(int *)(param_2 + 0x28) + iVar4 + (uint)CARRY4(uVar2,uVar3);\n    }" if (parenthesized_expression "(*param_3 != 0)" ( (binary_expression "*param_3 != 0" (pointer_expression "*param_3" * identifier) != number_literal) )) (compound_statement "{\n      puVar1 = (uint *)(param_2 + 0x24);\n      uVar2 = *puVar1;\n      *puVar1 = *puVar1 + uVar3;\n      *(int *)(param_2 + 0x28) = *(int *)(param_2 + 0x28) + iVar4 + (uint)CARRY4(uVar2,uVar3);\n    }" { (expression_statement "puVar1 = (uint *)(param_2 + 0x24);" (assignment_expression "puVar1 = (uint *)(param_2 + 0x24)" identifier = (cast_expression "(uint *)(param_2 + 0x24)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x24)" ( (binary_expression "param_2 + 0x24" identifier + number_literal) )))) ;) (expression_statement "uVar2 = *puVar1;" (assignment_expression "uVar2 = *puVar1" identifier = (pointer_expression "*puVar1" * identifier)) ;) (expression_statement "*puVar1 = *puVar1 + uVar3;" (assignment_expression "*puVar1 = *puVar1 + uVar3" (pointer_expression "*puVar1" * identifier) = (binary_expression "*puVar1 + uVar3" (pointer_expression "*puVar1" * identifier) + identifier)) ;) (expression_statement "*(int *)(param_2 + 0x28) = *(int *)(param_2 + 0x28) + iVar4 + (uint)CARRY4(uVar2,uVar3);" (assignment_expression "*(int *)(param_2 + 0x28) = *(int *)(param_2 + 0x28) + iVar4 + (uint)CARRY4(uVar2,uVar3)" (pointer_expression "*(int *)(param_2 + 0x28)" * (cast_expression "(int *)(param_2 + 0x28)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x28)" ( (binary_expression "param_2 + 0x28" identifier + number_literal) )))) = (binary_expression "*(int *)(param_2 + 0x28) + iVar4 + (uint)CARRY4(uVar2,uVar3)" (binary_expression "*(int *)(param_2 + 0x28) + iVar4" (pointer_expression "*(int *)(param_2 + 0x28)" * (cast_expression "(int *)(param_2 + 0x28)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x28)" ( (binary_expression "param_2 + 0x28" identifier + number_literal) )))) + identifier) + (cast_expression "(uint)CARRY4(uVar2,uVar3)" ( (type_descriptor "uint" type_identifier) ) (call_expression "CARRY4(uVar2,uVar3)" identifier (argument_list "(uVar2,uVar3)" ( identifier , identifier )))))) ;) })) })) (return_statement "return;" return ;) })))
(translation_unit "/* WARNING: Function: __x86.get_pc_thunk.dx replaced with injection: get_pc_thunk_dx */\n/* WARNING: Unknown calling convention */\n\nvoid adjust_addresses(bfd *abfd,asection *section,void *arg)\n\n{\n  bfd_vma *pbVar1;\n  int *piVar2;\n  bfd_vma bVar3;\n  uint uVar4;\n  int iVar5;\n  bool bVar6;\n  \n  iVar5 = adjust_section_vma._4_4_;\n  uVar4 = (uint)adjust_section_vma;\n  if ((section->flags & 0x2000) == 0) {\n    pbVar1 = &section->vma;\n    bVar6 = CARRY4((uint)*pbVar1,(uint)adjust_section_vma);\n    *(uint *)pbVar1 = (int)*pbVar1 + (uint)adjust_section_vma;\n    piVar2 = (int *)((int)&section->vma + 4);\n    *piVar2 = *piVar2 + iVar5 + (uint)bVar6;\n                    /* WARNING: Load size is inaccurate */\n    if (*arg != 0) {\n      pbVar1 = &section->lma;\n      bVar3 = *pbVar1;\n      *(uint *)pbVar1 = (int)*pbVar1 + uVar4;\n      piVar2 = (int *)((int)&section->lma + 4);\n      *piVar2 = *piVar2 + iVar5 + (uint)CARRY4((uint)bVar3,uVar4);\n    }\n  }\n  return;\n}\n\n" comment comment (function_definition "void adjust_addresses(bfd *abfd,asection *section,void *arg)\n\n{\n  bfd_vma *pbVar1;\n  int *piVar2;\n  bfd_vma bVar3;\n  uint uVar4;\n  int iVar5;\n  bool bVar6;\n  \n  iVar5 = adjust_section_vma._4_4_;\n  uVar4 = (uint)adjust_section_vma;\n  if ((section->flags & 0x2000) == 0) {\n    pbVar1 = &section->vma;\n    bVar6 = CARRY4((uint)*pbVar1,(uint)adjust_section_vma);\n    *(uint *)pbVar1 = (int)*pbVar1 + (uint)adjust_section_vma;\n    piVar2 = (int *)((int)&section->vma + 4);\n    *piVar2 = *piVar2 + iVar5 + (uint)bVar6;\n                    /* WARNING: Load size is inaccurate */\n    if (*arg != 0) {\n      pbVar1 = &section->lma;\n      bVar3 = *pbVar1;\n      *(uint *)pbVar1 = (int)*pbVar1 + uVar4;\n      piVar2 = (int *)((int)&section->lma + 4);\n      *piVar2 = *piVar2 + iVar5 + (uint)CARRY4((uint)bVar3,uVar4);\n    }\n  }\n  return;\n}" primitive_type (function_declarator "adjust_addresses(bfd *abfd,asection *section,void *arg)" identifier (parameter_list "(bfd *abfd,asection *section,void *arg)" ( (parameter_declaration "bfd *abfd" type_identifier (pointer_declarator "*abfd" * identifier)) , (parameter_declaration "asection *section" type_identifier (pointer_declarator "*section" * identifier)) , (parameter_declaration "void *arg" primitive_type (pointer_declarator "*arg" * identifier)) ))) (compound_statement "{\n  bfd_vma *pbVar1;\n  int *piVar2;\n  bfd_vma bVar3;\n  uint uVar4;\n  int iVar5;\n  bool bVar6;\n  \n  iVar5 = adjust_section_vma._4_4_;\n  uVar4 = (uint)adjust_section_vma;\n  if ((section->flags & 0x2000) == 0) {\n    pbVar1 = &section->vma;\n    bVar6 = CARRY4((uint)*pbVar1,(uint)adjust_section_vma);\n    *(uint *)pbVar1 = (int)*pbVar1 + (uint)adjust_section_vma;\n    piVar2 = (int *)((int)&section->vma + 4);\n    *piVar2 = *piVar2 + iVar5 + (uint)bVar6;\n                    /* WARNING: Load size is inaccurate */\n    if (*arg != 0) {\n      pbVar1 = &section->lma;\n      bVar3 = *pbVar1;\n      *(uint *)pbVar1 = (int)*pbVar1 + uVar4;\n      piVar2 = (int *)((int)&section->lma + 4);\n      *piVar2 = *piVar2 + iVar5 + (uint)CARRY4((uint)bVar3,uVar4);\n    }\n  }\n  return;\n}" { (declaration "bfd_vma *pbVar1;" type_identifier (pointer_declarator "*pbVar1" * identifier) ;) (declaration "int *piVar2;" primitive_type (pointer_declarator "*piVar2" * identifier) ;) (declaration "bfd_vma bVar3;" type_identifier identifier ;) (declaration "uint uVar4;" type_identifier identifier ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "bool bVar6;" primitive_type identifier ;) (expression_statement "iVar5 = adjust_section_vma._4_4_;" (assignment_expression "iVar5 = adjust_section_vma._4_4_" identifier = (field_expression "adjust_section_vma._4_4_" identifier . field_identifier)) ;) (expression_statement "uVar4 = (uint)adjust_section_vma;" (assignment_expression "uVar4 = (uint)adjust_section_vma" identifier = (cast_expression "(uint)adjust_section_vma" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (if_statement "if ((section->flags & 0x2000) == 0) {\n    pbVar1 = &section->vma;\n    bVar6 = CARRY4((uint)*pbVar1,(uint)adjust_section_vma);\n    *(uint *)pbVar1 = (int)*pbVar1 + (uint)adjust_section_vma;\n    piVar2 = (int *)((int)&section->vma + 4);\n    *piVar2 = *piVar2 + iVar5 + (uint)bVar6;\n                    /* WARNING: Load size is inaccurate */\n    if (*arg != 0) {\n      pbVar1 = &section->lma;\n      bVar3 = *pbVar1;\n      *(uint *)pbVar1 = (int)*pbVar1 + uVar4;\n      piVar2 = (int *)((int)&section->lma + 4);\n      *piVar2 = *piVar2 + iVar5 + (uint)CARRY4((uint)bVar3,uVar4);\n    }\n  }" if (parenthesized_expression "((section->flags & 0x2000) == 0)" ( (binary_expression "(section->flags & 0x2000) == 0" (parenthesized_expression "(section->flags & 0x2000)" ( (binary_expression "section->flags & 0x2000" (field_expression "section->flags" identifier -> field_identifier) & number_literal) )) == number_literal) )) (compound_statement "{\n    pbVar1 = &section->vma;\n    bVar6 = CARRY4((uint)*pbVar1,(uint)adjust_section_vma);\n    *(uint *)pbVar1 = (int)*pbVar1 + (uint)adjust_section_vma;\n    piVar2 = (int *)((int)&section->vma + 4);\n    *piVar2 = *piVar2 + iVar5 + (uint)bVar6;\n                    /* WARNING: Load size is inaccurate */\n    if (*arg != 0) {\n      pbVar1 = &section->lma;\n      bVar3 = *pbVar1;\n      *(uint *)pbVar1 = (int)*pbVar1 + uVar4;\n      piVar2 = (int *)((int)&section->lma + 4);\n      *piVar2 = *piVar2 + iVar5 + (uint)CARRY4((uint)bVar3,uVar4);\n    }\n  }" { (expression_statement "pbVar1 = &section->vma;" (assignment_expression "pbVar1 = &section->vma" identifier = (pointer_expression "&section->vma" & (field_expression "section->vma" identifier -> field_identifier))) ;) (expression_statement "bVar6 = CARRY4((uint)*pbVar1,(uint)adjust_section_vma);" (assignment_expression "bVar6 = CARRY4((uint)*pbVar1,(uint)adjust_section_vma)" identifier = (call_expression "CARRY4((uint)*pbVar1,(uint)adjust_section_vma)" identifier (argument_list "((uint)*pbVar1,(uint)adjust_section_vma)" ( (binary_expression "(uint)*pbVar1" (parenthesized_expression "(uint)" ( identifier )) * identifier) , (cast_expression "(uint)adjust_section_vma" ( (type_descriptor "uint" type_identifier) ) identifier) )))) ;) (expression_statement "*(uint *)pbVar1 = (int)*pbVar1 + (uint)adjust_section_vma;" (assignment_expression "*(uint *)pbVar1 = (int)*pbVar1 + (uint)adjust_section_vma" (pointer_expression "*(uint *)pbVar1" * (cast_expression "(uint *)pbVar1" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) = (binary_expression "(int)*pbVar1 + (uint)adjust_section_vma" (cast_expression "(int)*pbVar1" ( (type_descriptor "int" primitive_type) ) (pointer_expression "*pbVar1" * identifier)) + (cast_expression "(uint)adjust_section_vma" ( (type_descriptor "uint" type_identifier) ) identifier))) ;) (expression_statement "piVar2 = (int *)((int)&section->vma + 4);" (assignment_expression "piVar2 = (int *)((int)&section->vma + 4)" identifier = (cast_expression "(int *)((int)&section->vma + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&section->vma + 4)" ( (binary_expression "(int)&section->vma + 4" (cast_expression "(int)&section->vma" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&section->vma" & (field_expression "section->vma" identifier -> field_identifier))) + number_literal) )))) ;) (expression_statement "*piVar2 = *piVar2 + iVar5 + (uint)bVar6;" (assignment_expression "*piVar2 = *piVar2 + iVar5 + (uint)bVar6" (pointer_expression "*piVar2" * identifier) = (binary_expression "*piVar2 + iVar5 + (uint)bVar6" (binary_expression "*piVar2 + iVar5" (pointer_expression "*piVar2" * identifier) + identifier) + (cast_expression "(uint)bVar6" ( (type_descriptor "uint" type_identifier) ) identifier))) ;) comment (if_statement "if (*arg != 0) {\n      pbVar1 = &section->lma;\n      bVar3 = *pbVar1;\n      *(uint *)pbVar1 = (int)*pbVar1 + uVar4;\n      piVar2 = (int *)((int)&section->lma + 4);\n      *piVar2 = *piVar2 + iVar5 + (uint)CARRY4((uint)bVar3,uVar4);\n    }" if (parenthesized_expression "(*arg != 0)" ( (binary_expression "*arg != 0" (pointer_expression "*arg" * identifier) != number_literal) )) (compound_statement "{\n      pbVar1 = &section->lma;\n      bVar3 = *pbVar1;\n      *(uint *)pbVar1 = (int)*pbVar1 + uVar4;\n      piVar2 = (int *)((int)&section->lma + 4);\n      *piVar2 = *piVar2 + iVar5 + (uint)CARRY4((uint)bVar3,uVar4);\n    }" { (expression_statement "pbVar1 = &section->lma;" (assignment_expression "pbVar1 = &section->lma" identifier = (pointer_expression "&section->lma" & (field_expression "section->lma" identifier -> field_identifier))) ;) (expression_statement "bVar3 = *pbVar1;" (assignment_expression "bVar3 = *pbVar1" identifier = (pointer_expression "*pbVar1" * identifier)) ;) (expression_statement "*(uint *)pbVar1 = (int)*pbVar1 + uVar4;" (assignment_expression "*(uint *)pbVar1 = (int)*pbVar1 + uVar4" (pointer_expression "*(uint *)pbVar1" * (cast_expression "(uint *)pbVar1" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) = (binary_expression "(int)*pbVar1 + uVar4" (cast_expression "(int)*pbVar1" ( (type_descriptor "int" primitive_type) ) (pointer_expression "*pbVar1" * identifier)) + identifier)) ;) (expression_statement "piVar2 = (int *)((int)&section->lma + 4);" (assignment_expression "piVar2 = (int *)((int)&section->lma + 4)" identifier = (cast_expression "(int *)((int)&section->lma + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&section->lma + 4)" ( (binary_expression "(int)&section->lma + 4" (cast_expression "(int)&section->lma" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&section->lma" & (field_expression "section->lma" identifier -> field_identifier))) + number_literal) )))) ;) (expression_statement "*piVar2 = *piVar2 + iVar5 + (uint)CARRY4((uint)bVar3,uVar4);" (assignment_expression "*piVar2 = *piVar2 + iVar5 + (uint)CARRY4((uint)bVar3,uVar4)" (pointer_expression "*piVar2" * identifier) = (binary_expression "*piVar2 + iVar5 + (uint)CARRY4((uint)bVar3,uVar4)" (binary_expression "*piVar2 + iVar5" (pointer_expression "*piVar2" * identifier) + identifier) + (cast_expression "(uint)CARRY4((uint)bVar3,uVar4)" ( (type_descriptor "uint" type_identifier) ) (call_expression "CARRY4((uint)bVar3,uVar4)" identifier (argument_list "((uint)bVar3,uVar4)" ( (cast_expression "(uint)bVar3" ( (type_descriptor "uint" type_identifier) ) identifier) , identifier )))))) ;) })) })) (return_statement "return;" return ;) })))
(translation_unit "void FUN_00017560(undefined4 param_1,int param_2,int *param_3)\n\n{\n  uint *puVar1;\n  uint uVar2;\n  uint uVar3;\n  int iVar4;\n  bool bVar5;\n  \n  iVar4 = DAT_000740ac;\n  uVar3 = DAT_000740a8;\n  if ((*(byte *)(param_2 + 0x15) & 0x20) == 0) {\n    puVar1 = (uint *)(param_2 + 0x1c);\n    bVar5 = CARRY4(*puVar1,DAT_000740a8);\n    *puVar1 = *puVar1 + DAT_000740a8;\n    *(int *)(param_2 + 0x20) = *(int *)(param_2 + 0x20) + iVar4 + (uint)bVar5;\n    if (*param_3 != 0) {\n      puVar1 = (uint *)(param_2 + 0x24);\n      uVar2 = *puVar1;\n      *puVar1 = *puVar1 + uVar3;\n      *(int *)(param_2 + 0x28) = *(int *)(param_2 + 0x28) + iVar4 + (uint)CARRY4(uVar2,uVar3);\n    }\n  }\n  return;\n}\n\n" (function_definition "void FUN_00017560(undefined4 param_1,int param_2,int *param_3)\n\n{\n  uint *puVar1;\n  uint uVar2;\n  uint uVar3;\n  int iVar4;\n  bool bVar5;\n  \n  iVar4 = DAT_000740ac;\n  uVar3 = DAT_000740a8;\n  if ((*(byte *)(param_2 + 0x15) & 0x20) == 0) {\n    puVar1 = (uint *)(param_2 + 0x1c);\n    bVar5 = CARRY4(*puVar1,DAT_000740a8);\n    *puVar1 = *puVar1 + DAT_000740a8;\n    *(int *)(param_2 + 0x20) = *(int *)(param_2 + 0x20) + iVar4 + (uint)bVar5;\n    if (*param_3 != 0) {\n      puVar1 = (uint *)(param_2 + 0x24);\n      uVar2 = *puVar1;\n      *puVar1 = *puVar1 + uVar3;\n      *(int *)(param_2 + 0x28) = *(int *)(param_2 + 0x28) + iVar4 + (uint)CARRY4(uVar2,uVar3);\n    }\n  }\n  return;\n}" primitive_type (function_declarator "FUN_00017560(undefined4 param_1,int param_2,int *param_3)" identifier (parameter_list "(undefined4 param_1,int param_2,int *param_3)" ( (parameter_declaration "undefined4 param_1" type_identifier identifier) , (parameter_declaration "int param_2" primitive_type identifier) , (parameter_declaration "int *param_3" primitive_type (pointer_declarator "*param_3" * identifier)) ))) (compound_statement "{\n  uint *puVar1;\n  uint uVar2;\n  uint uVar3;\n  int iVar4;\n  bool bVar5;\n  \n  iVar4 = DAT_000740ac;\n  uVar3 = DAT_000740a8;\n  if ((*(byte *)(param_2 + 0x15) & 0x20) == 0) {\n    puVar1 = (uint *)(param_2 + 0x1c);\n    bVar5 = CARRY4(*puVar1,DAT_000740a8);\n    *puVar1 = *puVar1 + DAT_000740a8;\n    *(int *)(param_2 + 0x20) = *(int *)(param_2 + 0x20) + iVar4 + (uint)bVar5;\n    if (*param_3 != 0) {\n      puVar1 = (uint *)(param_2 + 0x24);\n      uVar2 = *puVar1;\n      *puVar1 = *puVar1 + uVar3;\n      *(int *)(param_2 + 0x28) = *(int *)(param_2 + 0x28) + iVar4 + (uint)CARRY4(uVar2,uVar3);\n    }\n  }\n  return;\n}" { (declaration "uint *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "uint uVar2;" type_identifier identifier ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "bool bVar5;" primitive_type identifier ;) (expression_statement "iVar4 = DAT_000740ac;" (assignment_expression "iVar4 = DAT_000740ac" identifier = identifier) ;) (expression_statement "uVar3 = DAT_000740a8;" (assignment_expression "uVar3 = DAT_000740a8" identifier = identifier) ;) (if_statement "if ((*(byte *)(param_2 + 0x15) & 0x20) == 0) {\n    puVar1 = (uint *)(param_2 + 0x1c);\n    bVar5 = CARRY4(*puVar1,DAT_000740a8);\n    *puVar1 = *puVar1 + DAT_000740a8;\n    *(int *)(param_2 + 0x20) = *(int *)(param_2 + 0x20) + iVar4 + (uint)bVar5;\n    if (*param_3 != 0) {\n      puVar1 = (uint *)(param_2 + 0x24);\n      uVar2 = *puVar1;\n      *puVar1 = *puVar1 + uVar3;\n      *(int *)(param_2 + 0x28) = *(int *)(param_2 + 0x28) + iVar4 + (uint)CARRY4(uVar2,uVar3);\n    }\n  }" if (parenthesized_expression "((*(byte *)(param_2 + 0x15) & 0x20) == 0)" ( (binary_expression "(*(byte *)(param_2 + 0x15) & 0x20) == 0" (parenthesized_expression "(*(byte *)(param_2 + 0x15) & 0x20)" ( (binary_expression "*(byte *)(param_2 + 0x15) & 0x20" (pointer_expression "*(byte *)(param_2 + 0x15)" * (cast_expression "(byte *)(param_2 + 0x15)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x15)" ( (binary_expression "param_2 + 0x15" identifier + number_literal) )))) & number_literal) )) == number_literal) )) (compound_statement "{\n    puVar1 = (uint *)(param_2 + 0x1c);\n    bVar5 = CARRY4(*puVar1,DAT_000740a8);\n    *puVar1 = *puVar1 + DAT_000740a8;\n    *(int *)(param_2 + 0x20) = *(int *)(param_2 + 0x20) + iVar4 + (uint)bVar5;\n    if (*param_3 != 0) {\n      puVar1 = (uint *)(param_2 + 0x24);\n      uVar2 = *puVar1;\n      *puVar1 = *puVar1 + uVar3;\n      *(int *)(param_2 + 0x28) = *(int *)(param_2 + 0x28) + iVar4 + (uint)CARRY4(uVar2,uVar3);\n    }\n  }" { (expression_statement "puVar1 = (uint *)(param_2 + 0x1c);" (assignment_expression "puVar1 = (uint *)(param_2 + 0x1c)" identifier = (cast_expression "(uint *)(param_2 + 0x1c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x1c)" ( (binary_expression "param_2 + 0x1c" identifier + number_literal) )))) ;) (expression_statement "bVar5 = CARRY4(*puVar1,DAT_000740a8);" (assignment_expression "bVar5 = CARRY4(*puVar1,DAT_000740a8)" identifier = (call_expression "CARRY4(*puVar1,DAT_000740a8)" identifier (argument_list "(*puVar1,DAT_000740a8)" ( (pointer_expression "*puVar1" * identifier) , identifier )))) ;) (expression_statement "*puVar1 = *puVar1 + DAT_000740a8;" (assignment_expression "*puVar1 = *puVar1 + DAT_000740a8" (pointer_expression "*puVar1" * identifier) = (binary_expression "*puVar1 + DAT_000740a8" (pointer_expression "*puVar1" * identifier) + identifier)) ;) (expression_statement "*(int *)(param_2 + 0x20) = *(int *)(param_2 + 0x20) + iVar4 + (uint)bVar5;" (assignment_expression "*(int *)(param_2 + 0x20) = *(int *)(param_2 + 0x20) + iVar4 + (uint)bVar5" (pointer_expression "*(int *)(param_2 + 0x20)" * (cast_expression "(int *)(param_2 + 0x20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x20)" ( (binary_expression "param_2 + 0x20" identifier + number_literal) )))) = (binary_expression "*(int *)(param_2 + 0x20) + iVar4 + (uint)bVar5" (binary_expression "*(int *)(param_2 + 0x20) + iVar4" (pointer_expression "*(int *)(param_2 + 0x20)" * (cast_expression "(int *)(param_2 + 0x20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x20)" ( (binary_expression "param_2 + 0x20" identifier + number_literal) )))) + identifier) + (cast_expression "(uint)bVar5" ( (type_descriptor "uint" type_identifier) ) identifier))) ;) (if_statement "if (*param_3 != 0) {\n      puVar1 = (uint *)(param_2 + 0x24);\n      uVar2 = *puVar1;\n      *puVar1 = *puVar1 + uVar3;\n      *(int *)(param_2 + 0x28) = *(int *)(param_2 + 0x28) + iVar4 + (uint)CARRY4(uVar2,uVar3);\n    }" if (parenthesized_expression "(*param_3 != 0)" ( (binary_expression "*param_3 != 0" (pointer_expression "*param_3" * identifier) != number_literal) )) (compound_statement "{\n      puVar1 = (uint *)(param_2 + 0x24);\n      uVar2 = *puVar1;\n      *puVar1 = *puVar1 + uVar3;\n      *(int *)(param_2 + 0x28) = *(int *)(param_2 + 0x28) + iVar4 + (uint)CARRY4(uVar2,uVar3);\n    }" { (expression_statement "puVar1 = (uint *)(param_2 + 0x24);" (assignment_expression "puVar1 = (uint *)(param_2 + 0x24)" identifier = (cast_expression "(uint *)(param_2 + 0x24)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x24)" ( (binary_expression "param_2 + 0x24" identifier + number_literal) )))) ;) (expression_statement "uVar2 = *puVar1;" (assignment_expression "uVar2 = *puVar1" identifier = (pointer_expression "*puVar1" * identifier)) ;) (expression_statement "*puVar1 = *puVar1 + uVar3;" (assignment_expression "*puVar1 = *puVar1 + uVar3" (pointer_expression "*puVar1" * identifier) = (binary_expression "*puVar1 + uVar3" (pointer_expression "*puVar1" * identifier) + identifier)) ;) (expression_statement "*(int *)(param_2 + 0x28) = *(int *)(param_2 + 0x28) + iVar4 + (uint)CARRY4(uVar2,uVar3);" (assignment_expression "*(int *)(param_2 + 0x28) = *(int *)(param_2 + 0x28) + iVar4 + (uint)CARRY4(uVar2,uVar3)" (pointer_expression "*(int *)(param_2 + 0x28)" * (cast_expression "(int *)(param_2 + 0x28)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x28)" ( (binary_expression "param_2 + 0x28" identifier + number_literal) )))) = (binary_expression "*(int *)(param_2 + 0x28) + iVar4 + (uint)CARRY4(uVar2,uVar3)" (binary_expression "*(int *)(param_2 + 0x28) + iVar4" (pointer_expression "*(int *)(param_2 + 0x28)" * (cast_expression "(int *)(param_2 + 0x28)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x28)" ( (binary_expression "param_2 + 0x28" identifier + number_literal) )))) + identifier) + (cast_expression "(uint)CARRY4(uVar2,uVar3)" ( (type_descriptor "uint" type_identifier) ) (call_expression "CARRY4(uVar2,uVar3)" identifier (argument_list "(uVar2,uVar3)" ( identifier , identifier )))))) ;) })) })) (return_statement "return;" return ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE (pointer_declarator * IDENT)) ))) (compound_statement { (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT) )) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (pointer_expression * IDENT) , IDENT )))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression (pointer_expression * IDENT) + IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + IDENT) + (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression (pointer_expression * IDENT) + IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + IDENT) + (cast_expression ( (type_descriptor TYPE) ) (call_expression IDENT (argument_list ( IDENT , IDENT )))))) ;) })) })) (return_statement return ;) })))
(function_definition "void FUN_00017560(undefined4 param_1,int param_2,int *param_3)\n\n{\n  uint *puVar1;\n  uint uVar2;\n  uint uVar3;\n  int iVar4;\n  bool bVar5;\n  \n  iVar4 = DAT_000740ac;\n  uVar3 = DAT_000740a8;\n  if ((*(byte *)(param_2 + 0x15) & 0x20) == 0) {\n    puVar1 = (uint *)(param_2 + 0x1c);\n    bVar5 = CARRY4(*puVar1,DAT_000740a8);\n    *puVar1 = *puVar1 + DAT_000740a8;\n    *(int *)(param_2 + 0x20) = *(int *)(param_2 + 0x20) + iVar4 + (uint)bVar5;\n    if (*param_3 != 0) {\n      puVar1 = (uint *)(param_2 + 0x24);\n      uVar2 = *puVar1;\n      *puVar1 = *puVar1 + uVar3;\n      *(int *)(param_2 + 0x28) = *(int *)(param_2 + 0x28) + iVar4 + (uint)CARRY4(uVar2,uVar3);\n    }\n  }\n  return;\n}" (primitive_type "void") (function_declarator "FUN_00017560(undefined4 param_1,int param_2,int *param_3)" (identifier "FUN_00017560") (parameter_list "(undefined4 param_1,int param_2,int *param_3)" (( "(") (parameter_declaration "undefined4 param_1" (type_identifier "undefined4") (identifier "param_1")) (, ",") (parameter_declaration "int param_2" (primitive_type "int") (identifier "param_2")) (, ",") (parameter_declaration "int *param_3" (primitive_type "int") (pointer_declarator "*param_3" (* "*") (identifier "param_3"))) () ")"))) (compound_statement "{\n  uint *puVar1;\n  uint uVar2;\n  uint uVar3;\n  int iVar4;\n  bool bVar5;\n  \n  iVar4 = DAT_000740ac;\n  uVar3 = DAT_000740a8;\n  if ((*(byte *)(param_2 + 0x15) & 0x20) == 0) {\n    puVar1 = (uint *)(param_2 + 0x1c);\n    bVar5 = CARRY4(*puVar1,DAT_000740a8);\n    *puVar1 = *puVar1 + DAT_000740a8;\n    *(int *)(param_2 + 0x20) = *(int *)(param_2 + 0x20) + iVar4 + (uint)bVar5;\n    if (*param_3 != 0) {\n      puVar1 = (uint *)(param_2 + 0x24);\n      uVar2 = *puVar1;\n      *puVar1 = *puVar1 + uVar3;\n      *(int *)(param_2 + 0x28) = *(int *)(param_2 + 0x28) + iVar4 + (uint)CARRY4(uVar2,uVar3);\n    }\n  }\n  return;\n}" ({ "{") (declaration "uint *puVar1;" (type_identifier "uint") (pointer_declarator "*puVar1" (* "*") (identifier "puVar1")) (; ";")) (declaration "uint uVar2;" (type_identifier "uint") (identifier "uVar2") (; ";")) (declaration "uint uVar3;" (type_identifier "uint") (identifier "uVar3") (; ";")) (declaration "int iVar4;" (primitive_type "int") (identifier "iVar4") (; ";")) (declaration "bool bVar5;" (primitive_type "bool") (identifier "bVar5") (; ";")) (expression_statement "iVar4 = DAT_000740ac;" (assignment_expression "iVar4 = DAT_000740ac" (identifier "iVar4") (= "=") (identifier "DAT_000740ac")) (; ";")) (expression_statement "uVar3 = DAT_000740a8;" (assignment_expression "uVar3 = DAT_000740a8" (identifier "uVar3") (= "=") (identifier "DAT_000740a8")) (; ";")) (if_statement "if ((*(byte *)(param_2 + 0x15) & 0x20) == 0) {\n    puVar1 = (uint *)(param_2 + 0x1c);\n    bVar5 = CARRY4(*puVar1,DAT_000740a8);\n    *puVar1 = *puVar1 + DAT_000740a8;\n    *(int *)(param_2 + 0x20) = *(int *)(param_2 + 0x20) + iVar4 + (uint)bVar5;\n    if (*param_3 != 0) {\n      puVar1 = (uint *)(param_2 + 0x24);\n      uVar2 = *puVar1;\n      *puVar1 = *puVar1 + uVar3;\n      *(int *)(param_2 + 0x28) = *(int *)(param_2 + 0x28) + iVar4 + (uint)CARRY4(uVar2,uVar3);\n    }\n  }" (if "if") (parenthesized_expression "((*(byte *)(param_2 + 0x15) & 0x20) == 0)" (( "(") (binary_expression "(*(byte *)(param_2 + 0x15) & 0x20) == 0" (parenthesized_expression "(*(byte *)(param_2 + 0x15) & 0x20)" (( "(") (binary_expression "*(byte *)(param_2 + 0x15) & 0x20" (pointer_expression "*(byte *)(param_2 + 0x15)" (* "*") (cast_expression "(byte *)(param_2 + 0x15)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x15)" (( "(") (binary_expression "param_2 + 0x15" (identifier "param_2") (+ "+") (number_literal "0x15")) () ")")))) (& "&") (number_literal "0x20")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    puVar1 = (uint *)(param_2 + 0x1c);\n    bVar5 = CARRY4(*puVar1,DAT_000740a8);\n    *puVar1 = *puVar1 + DAT_000740a8;\n    *(int *)(param_2 + 0x20) = *(int *)(param_2 + 0x20) + iVar4 + (uint)bVar5;\n    if (*param_3 != 0) {\n      puVar1 = (uint *)(param_2 + 0x24);\n      uVar2 = *puVar1;\n      *puVar1 = *puVar1 + uVar3;\n      *(int *)(param_2 + 0x28) = *(int *)(param_2 + 0x28) + iVar4 + (uint)CARRY4(uVar2,uVar3);\n    }\n  }" ({ "{") (expression_statement "puVar1 = (uint *)(param_2 + 0x1c);" (assignment_expression "puVar1 = (uint *)(param_2 + 0x1c)" (identifier "puVar1") (= "=") (cast_expression "(uint *)(param_2 + 0x1c)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x1c)" (( "(") (binary_expression "param_2 + 0x1c" (identifier "param_2") (+ "+") (number_literal "0x1c")) () ")")))) (; ";")) (expression_statement "bVar5 = CARRY4(*puVar1,DAT_000740a8);" (assignment_expression "bVar5 = CARRY4(*puVar1,DAT_000740a8)" (identifier "bVar5") (= "=") (call_expression "CARRY4(*puVar1,DAT_000740a8)" (identifier "CARRY4") (argument_list "(*puVar1,DAT_000740a8)" (( "(") (pointer_expression "*puVar1" (* "*") (identifier "puVar1")) (, ",") (identifier "DAT_000740a8") () ")")))) (; ";")) (expression_statement "*puVar1 = *puVar1 + DAT_000740a8;" (assignment_expression "*puVar1 = *puVar1 + DAT_000740a8" (pointer_expression "*puVar1" (* "*") (identifier "puVar1")) (= "=") (binary_expression "*puVar1 + DAT_000740a8" (pointer_expression "*puVar1" (* "*") (identifier "puVar1")) (+ "+") (identifier "DAT_000740a8"))) (; ";")) (expression_statement "*(int *)(param_2 + 0x20) = *(int *)(param_2 + 0x20) + iVar4 + (uint)bVar5;" (assignment_expression "*(int *)(param_2 + 0x20) = *(int *)(param_2 + 0x20) + iVar4 + (uint)bVar5" (pointer_expression "*(int *)(param_2 + 0x20)" (* "*") (cast_expression "(int *)(param_2 + 0x20)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x20)" (( "(") (binary_expression "param_2 + 0x20" (identifier "param_2") (+ "+") (number_literal "0x20")) () ")")))) (= "=") (binary_expression "*(int *)(param_2 + 0x20) + iVar4 + (uint)bVar5" (binary_expression "*(int *)(param_2 + 0x20) + iVar4" (pointer_expression "*(int *)(param_2 + 0x20)" (* "*") (cast_expression "(int *)(param_2 + 0x20)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x20)" (( "(") (binary_expression "param_2 + 0x20" (identifier "param_2") (+ "+") (number_literal "0x20")) () ")")))) (+ "+") (identifier "iVar4")) (+ "+") (cast_expression "(uint)bVar5" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar5")))) (; ";")) (if_statement "if (*param_3 != 0) {\n      puVar1 = (uint *)(param_2 + 0x24);\n      uVar2 = *puVar1;\n      *puVar1 = *puVar1 + uVar3;\n      *(int *)(param_2 + 0x28) = *(int *)(param_2 + 0x28) + iVar4 + (uint)CARRY4(uVar2,uVar3);\n    }" (if "if") (parenthesized_expression "(*param_3 != 0)" (( "(") (binary_expression "*param_3 != 0" (pointer_expression "*param_3" (* "*") (identifier "param_3")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      puVar1 = (uint *)(param_2 + 0x24);\n      uVar2 = *puVar1;\n      *puVar1 = *puVar1 + uVar3;\n      *(int *)(param_2 + 0x28) = *(int *)(param_2 + 0x28) + iVar4 + (uint)CARRY4(uVar2,uVar3);\n    }" ({ "{") (expression_statement "puVar1 = (uint *)(param_2 + 0x24);" (assignment_expression "puVar1 = (uint *)(param_2 + 0x24)" (identifier "puVar1") (= "=") (cast_expression "(uint *)(param_2 + 0x24)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x24)" (( "(") (binary_expression "param_2 + 0x24" (identifier "param_2") (+ "+") (number_literal "0x24")) () ")")))) (; ";")) (expression_statement "uVar2 = *puVar1;" (assignment_expression "uVar2 = *puVar1" (identifier "uVar2") (= "=") (pointer_expression "*puVar1" (* "*") (identifier "puVar1"))) (; ";")) (expression_statement "*puVar1 = *puVar1 + uVar3;" (assignment_expression "*puVar1 = *puVar1 + uVar3" (pointer_expression "*puVar1" (* "*") (identifier "puVar1")) (= "=") (binary_expression "*puVar1 + uVar3" (pointer_expression "*puVar1" (* "*") (identifier "puVar1")) (+ "+") (identifier "uVar3"))) (; ";")) (expression_statement "*(int *)(param_2 + 0x28) = *(int *)(param_2 + 0x28) + iVar4 + (uint)CARRY4(uVar2,uVar3);" (assignment_expression "*(int *)(param_2 + 0x28) = *(int *)(param_2 + 0x28) + iVar4 + (uint)CARRY4(uVar2,uVar3)" (pointer_expression "*(int *)(param_2 + 0x28)" (* "*") (cast_expression "(int *)(param_2 + 0x28)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x28)" (( "(") (binary_expression "param_2 + 0x28" (identifier "param_2") (+ "+") (number_literal "0x28")) () ")")))) (= "=") (binary_expression "*(int *)(param_2 + 0x28) + iVar4 + (uint)CARRY4(uVar2,uVar3)" (binary_expression "*(int *)(param_2 + 0x28) + iVar4" (pointer_expression "*(int *)(param_2 + 0x28)" (* "*") (cast_expression "(int *)(param_2 + 0x28)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x28)" (( "(") (binary_expression "param_2 + 0x28" (identifier "param_2") (+ "+") (number_literal "0x28")) () ")")))) (+ "+") (identifier "iVar4")) (+ "+") (cast_expression "(uint)CARRY4(uVar2,uVar3)" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (call_expression "CARRY4(uVar2,uVar3)" (identifier "CARRY4") (argument_list "(uVar2,uVar3)" (( "(") (identifier "uVar2") (, ",") (identifier "uVar3") () ")")))))) (; ";")) (} "}"))) (} "}"))) (return_statement "return;" (return "return") (; ";")) (} "}")))

/* WARNING: Function: __x86.get_pc_thunk.dx replaced with injection: get_pc_thunk_dx */
/* WARNING: Unknown calling convention */

void function_1(type_1 *abfd,type_2 *section,void *arg)

{
  type_3 *var_2;
  int *piVar2;
  type_3 bVar3;
  type_4 var_4;
  int var_3;
  bool bVar6;
  
  var_3 = adjust_section_vma._4_4_;
  var_4 = (type_4)adjust_section_vma;
  if ((section->flags & 0x2000) == 0) {
    var_2 = &section->vma;
    bVar6 = var_1((type_4)*var_2,(type_4)adjust_section_vma);
    *(type_4 *)var_2 = (int)*var_2 + (type_4)adjust_section_vma;
    piVar2 = (int *)((int)&section->vma + 4);
    *piVar2 = *piVar2 + var_3 + (type_4)bVar6;
                    /* WARNING: Load size is inaccurate */
    if (*arg != 0) {
      var_2 = &section->lma;
      bVar3 = *var_2;
      *(type_4 *)var_2 = (int)*var_2 + var_4;
      piVar2 = (int *)((int)&section->lma + 4);
      *piVar2 = *piVar2 + var_3 + (type_4)var_1((type_4)bVar3,var_4);
    }
  }
  return;
}


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

/* WARNING: Function: __i686.get_pc_thunk.dx replaced with injection: get_pc_thunk_dx */

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

{
  uint *puVar1;
  uint uVar2;
  uint uVar3;
  int iVar4;
  bool bVar5;
  
  iVar4 = DAT_000740ac;
  uVar3 = DAT_000740a8;
  if ((*(byte *)(param_2 + 0x15) & 0x20) == 0) {
    puVar1 = (uint *)(param_2 + 0x1c);
    bVar5 = CARRY4(*puVar1,DAT_000740a8);
    *puVar1 = *puVar1 + DAT_000740a8;
    *(int *)(param_2 + 0x20) = *(int *)(param_2 + 0x20) + iVar4 + (uint)bVar5;
    if (*param_3 != 0) {
      puVar1 = (uint *)(param_2 + 0x24);
      uVar2 = *puVar1;
      *puVar1 = *puVar1 + uVar3;
      *(int *)(param_2 + 0x28) = *(int *)(param_2 + 0x28) + iVar4 + (uint)CARRY4(uVar2,uVar3);
    }
  }
  return;
}

