
/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */
/* WARNING: Enum "DT": Some values do not have unique names */
/* DWARF original prototype: Output_section * create_shstrtab(Layout * this) */

Output_section * __thiscall gold::Layout::create_shstrtab(Layout *this)

{
}



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

int FUN_0010da20(int param_1)

{
  undefined4 uVar1;
  int iVar2;
  undefined4 *puVar3;
  int iVar4;
  byte *pbVar5;
  byte *pbVar6;
  bool bVar7;
  bool bVar8;
  byte bVar9;
  
  bVar9 = 0;
  uVar1 = FUN_001e3f80(param_1 + 8,".shstrtab",0,0);
  iVar2 = FUN_0010c350(param_1,uVar1,3,0,0,0,0);
  bVar7 = false;
  bVar8 = *(int *)(DAT_004144e8 + 8) == 0;
  if (bVar8) {
                    /* WARNING: Subroutine does not return */
    FUN_000da200("../../gold/parameters.h",0x5c,"options");
  }
  iVar4 = 5;
  pbVar5 = *(byte **)(*(int *)(DAT_004144e8 + 8) + 0x99c);
  pbVar6 = (byte *)0x30178a;
  do {
    if (iVar4 == 0) break;
    iVar4 = iVar4 + -1;
    bVar7 = *pbVar5 < *pbVar6;
    bVar8 = *pbVar5 == *pbVar6;
    pbVar5 = pbVar5 + (uint)bVar9 * -2 + 1;
    pbVar6 = pbVar6 + (uint)bVar9 * -2 + 1;
  } while (bVar8);
  if ((!bVar7 && !bVar8) != bVar7) {
    *(byte *)(iVar2 + 0x90) = *(byte *)(iVar2 + 0x90) | 0x10;
  }
  puVar3 = (undefined4 *)FUN_00246670(0x30);
  *(byte *)(puVar3 + 7) = *(byte *)(puVar3 + 7) & 0xe0;
  puVar3[0xb] = param_1 + 8;
  puVar3[1] = 0;
  puVar3[2] = 0;
  puVar3[3] = 0;
  puVar3[4] = 0;
  puVar3[5] = 0xffffffff;
  puVar3[6] = 0xffffffff;
  puVar3[8] = 0;
  puVar3[9] = 1;
  puVar3[10] = 0;
  *puVar3 = &PTR_FUN_004075bc;
  FUN_00160da0(iVar2,puVar3);
  return iVar2;
}


PUSH EBP
PUSH EDI
PUSH ESI
PUSH EBX
CALL 0x0003a210
ADD EBX,0x3065d7
SUB ESP,0x1c
MOV EBP,dword ptr [ESP + 0x30]
LEA EAX,[EBP + 0x8]
MOV dword ptr [ESP + 0xc],EAX
MOV ECX,EAX
LEA EAX,[EBX + 0xffee95a5]
PUSH 0x0
PUSH 0x0
PUSH EAX
PUSH ECX
CALL 0x001e3f80
ADD ESP,0xc
PUSH 0x0
PUSH 0x0
PUSH 0x0
PUSH 0x0
PUSH 0x3
PUSH EAX
PUSH EBP
CALL 0x0010c350
ADD ESP,0x20
MOV EBP,EAX
LEA EAX,[EBX + 0x4e8]
MOV EAX,dword ptr [EAX]
MOV EAX,dword ptr [EAX + 0x8]
TEST EAX,EAX
JZ 0x0010db11
MOV ESI,dword ptr [EAX + 0x99c]
MOV ECX,0x5
LEA EDI,[EBX + 0xffeed78a]
CMPSB.REPE ES:EDI,ESI
SETA AL
SBB AL,0x0
TEST AL,AL
JZ 0x0010da9f
OR byte ptr [EBP + 0x90],0x10
SUB ESP,0xc
PUSH 0x30
CALL 0x00246670
LEA EDX,[EBX + 0xffff35b4]
MOV ESI,dword ptr [ESP + 0x1c]
AND byte ptr [EAX + 0x1c],0xe0
ADD EDX,0x8
MOV dword ptr [EAX + 0x2c],ESI
MOV dword ptr [EAX + 0x4],0x0
MOV dword ptr [EAX + 0x8],0x0
MOV dword ptr [EAX + 0xc],0x0
MOV dword ptr [EAX + 0x10],0x0
MOV dword ptr [EAX + 0x14],0xffffffff
MOV dword ptr [EAX + 0x18],0xffffffff
MOV dword ptr [EAX + 0x20],0x0
MOV dword ptr [EAX + 0x24],0x1
MOV dword ptr [EAX + 0x28],0x0
MOV dword ptr [EAX],EDX
POP EDX
POP ECX
PUSH EAX
PUSH EBP
CALL 0x00160da0
ADD ESP,0x2c
MOV EAX,EBP
POP EBX
POP ESI
POP EDI
POP EBP
RET
LEA EAX,[EBX + 0xffeea868]
PUSH ESI
PUSH EAX
LEA EAX,[EBX + 0xffece26d]
PUSH 0x5c
PUSH EAX
CALL 0x000da200
(translation_unit "/* WARNING: Function: __i686.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n\nint FUN_0010da20(int param_1)\n\n{\n  undefined4 uVar1;\n  int iVar2;\n  undefined4 *puVar3;\n  int iVar4;\n  byte *pbVar5;\n  byte *pbVar6;\n  bool bVar7;\n  bool bVar8;\n  byte bVar9;\n  \n  bVar9 = 0;\n  uVar1 = FUN_001e3f80(param_1 + 8,".shstrtab",0,0);\n  iVar2 = FUN_0010c350(param_1,uVar1,3,0,0,0,0);\n  bVar7 = false;\n  bVar8 = *(int *)(DAT_004144e8 + 8) == 0;\n  if (bVar8) {\n                    /* WARNING: Subroutine does not return */\n    FUN_000da200("../../gold/parameters.h",0x5c,"options");\n  }\n  iVar4 = 5;\n  pbVar5 = *(byte **)(*(int *)(DAT_004144e8 + 8) + 0x99c);\n  pbVar6 = (byte *)0x30178a;\n  do {\n    if (iVar4 == 0) break;\n    iVar4 = iVar4 + -1;\n    bVar7 = *pbVar5 < *pbVar6;\n    bVar8 = *pbVar5 == *pbVar6;\n    pbVar5 = pbVar5 + (uint)bVar9 * -2 + 1;\n    pbVar6 = pbVar6 + (uint)bVar9 * -2 + 1;\n  } while (bVar8);\n  if ((!bVar7 && !bVar8) != bVar7) {\n    *(byte *)(iVar2 + 0x90) = *(byte *)(iVar2 + 0x90) | 0x10;\n  }\n  puVar3 = (undefined4 *)FUN_00246670(0x30);\n  *(byte *)(puVar3 + 7) = *(byte *)(puVar3 + 7) & 0xe0;\n  puVar3[0xb] = param_1 + 8;\n  puVar3[1] = 0;\n  puVar3[2] = 0;\n  puVar3[3] = 0;\n  puVar3[4] = 0;\n  puVar3[5] = 0xffffffff;\n  puVar3[6] = 0xffffffff;\n  puVar3[8] = 0;\n  puVar3[9] = 1;\n  puVar3[10] = 0;\n  *puVar3 = &PTR_FUN_004075bc;\n  FUN_00160da0(iVar2,puVar3);\n  return iVar2;\n}\n\n" comment (function_definition "int FUN_0010da20(int param_1)\n\n{\n  undefined4 uVar1;\n  int iVar2;\n  undefined4 *puVar3;\n  int iVar4;\n  byte *pbVar5;\n  byte *pbVar6;\n  bool bVar7;\n  bool bVar8;\n  byte bVar9;\n  \n  bVar9 = 0;\n  uVar1 = FUN_001e3f80(param_1 + 8,".shstrtab",0,0);\n  iVar2 = FUN_0010c350(param_1,uVar1,3,0,0,0,0);\n  bVar7 = false;\n  bVar8 = *(int *)(DAT_004144e8 + 8) == 0;\n  if (bVar8) {\n                    /* WARNING: Subroutine does not return */\n    FUN_000da200("../../gold/parameters.h",0x5c,"options");\n  }\n  iVar4 = 5;\n  pbVar5 = *(byte **)(*(int *)(DAT_004144e8 + 8) + 0x99c);\n  pbVar6 = (byte *)0x30178a;\n  do {\n    if (iVar4 == 0) break;\n    iVar4 = iVar4 + -1;\n    bVar7 = *pbVar5 < *pbVar6;\n    bVar8 = *pbVar5 == *pbVar6;\n    pbVar5 = pbVar5 + (uint)bVar9 * -2 + 1;\n    pbVar6 = pbVar6 + (uint)bVar9 * -2 + 1;\n  } while (bVar8);\n  if ((!bVar7 && !bVar8) != bVar7) {\n    *(byte *)(iVar2 + 0x90) = *(byte *)(iVar2 + 0x90) | 0x10;\n  }\n  puVar3 = (undefined4 *)FUN_00246670(0x30);\n  *(byte *)(puVar3 + 7) = *(byte *)(puVar3 + 7) & 0xe0;\n  puVar3[0xb] = param_1 + 8;\n  puVar3[1] = 0;\n  puVar3[2] = 0;\n  puVar3[3] = 0;\n  puVar3[4] = 0;\n  puVar3[5] = 0xffffffff;\n  puVar3[6] = 0xffffffff;\n  puVar3[8] = 0;\n  puVar3[9] = 1;\n  puVar3[10] = 0;\n  *puVar3 = &PTR_FUN_004075bc;\n  FUN_00160da0(iVar2,puVar3);\n  return iVar2;\n}" primitive_type (function_declarator "FUN_0010da20(int param_1)" identifier (parameter_list "(int param_1)" ( (parameter_declaration "int param_1" primitive_type identifier) ))) (compound_statement "{\n  undefined4 uVar1;\n  int iVar2;\n  undefined4 *puVar3;\n  int iVar4;\n  byte *pbVar5;\n  byte *pbVar6;\n  bool bVar7;\n  bool bVar8;\n  byte bVar9;\n  \n  bVar9 = 0;\n  uVar1 = FUN_001e3f80(param_1 + 8,".shstrtab",0,0);\n  iVar2 = FUN_0010c350(param_1,uVar1,3,0,0,0,0);\n  bVar7 = false;\n  bVar8 = *(int *)(DAT_004144e8 + 8) == 0;\n  if (bVar8) {\n                    /* WARNING: Subroutine does not return */\n    FUN_000da200("../../gold/parameters.h",0x5c,"options");\n  }\n  iVar4 = 5;\n  pbVar5 = *(byte **)(*(int *)(DAT_004144e8 + 8) + 0x99c);\n  pbVar6 = (byte *)0x30178a;\n  do {\n    if (iVar4 == 0) break;\n    iVar4 = iVar4 + -1;\n    bVar7 = *pbVar5 < *pbVar6;\n    bVar8 = *pbVar5 == *pbVar6;\n    pbVar5 = pbVar5 + (uint)bVar9 * -2 + 1;\n    pbVar6 = pbVar6 + (uint)bVar9 * -2 + 1;\n  } while (bVar8);\n  if ((!bVar7 && !bVar8) != bVar7) {\n    *(byte *)(iVar2 + 0x90) = *(byte *)(iVar2 + 0x90) | 0x10;\n  }\n  puVar3 = (undefined4 *)FUN_00246670(0x30);\n  *(byte *)(puVar3 + 7) = *(byte *)(puVar3 + 7) & 0xe0;\n  puVar3[0xb] = param_1 + 8;\n  puVar3[1] = 0;\n  puVar3[2] = 0;\n  puVar3[3] = 0;\n  puVar3[4] = 0;\n  puVar3[5] = 0xffffffff;\n  puVar3[6] = 0xffffffff;\n  puVar3[8] = 0;\n  puVar3[9] = 1;\n  puVar3[10] = 0;\n  *puVar3 = &PTR_FUN_004075bc;\n  FUN_00160da0(iVar2,puVar3);\n  return iVar2;\n}" { (declaration "undefined4 uVar1;" type_identifier identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "undefined4 *puVar3;" type_identifier (pointer_declarator "*puVar3" * identifier) ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "byte *pbVar5;" type_identifier (pointer_declarator "*pbVar5" * identifier) ;) (declaration "byte *pbVar6;" type_identifier (pointer_declarator "*pbVar6" * identifier) ;) (declaration "bool bVar7;" primitive_type identifier ;) (declaration "bool bVar8;" primitive_type identifier ;) (declaration "byte bVar9;" type_identifier identifier ;) (expression_statement "bVar9 = 0;" (assignment_expression "bVar9 = 0" identifier = number_literal) ;) (expression_statement "uVar1 = FUN_001e3f80(param_1 + 8,".shstrtab",0,0);" (assignment_expression "uVar1 = FUN_001e3f80(param_1 + 8,".shstrtab",0,0)" identifier = (call_expression "FUN_001e3f80(param_1 + 8,".shstrtab",0,0)" identifier (argument_list "(param_1 + 8,".shstrtab",0,0)" ( (binary_expression "param_1 + 8" identifier + number_literal) , (string_literal "".shstrtab"" " string_content ") , number_literal , number_literal )))) ;) (expression_statement "iVar2 = FUN_0010c350(param_1,uVar1,3,0,0,0,0);" (assignment_expression "iVar2 = FUN_0010c350(param_1,uVar1,3,0,0,0,0)" identifier = (call_expression "FUN_0010c350(param_1,uVar1,3,0,0,0,0)" identifier (argument_list "(param_1,uVar1,3,0,0,0,0)" ( identifier , identifier , number_literal , number_literal , number_literal , number_literal , number_literal )))) ;) (expression_statement "bVar7 = false;" (assignment_expression "bVar7 = false" identifier = false) ;) (expression_statement "bVar8 = *(int *)(DAT_004144e8 + 8) == 0;" (assignment_expression "bVar8 = *(int *)(DAT_004144e8 + 8) == 0" identifier = (binary_expression "*(int *)(DAT_004144e8 + 8) == 0" (pointer_expression "*(int *)(DAT_004144e8 + 8)" * (cast_expression "(int *)(DAT_004144e8 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(DAT_004144e8 + 8)" ( (binary_expression "DAT_004144e8 + 8" identifier + number_literal) )))) == number_literal)) ;) (if_statement "if (bVar8) {\n                    /* WARNING: Subroutine does not return */\n    FUN_000da200("../../gold/parameters.h",0x5c,"options");\n  }" if (parenthesized_expression "(bVar8)" ( identifier )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    FUN_000da200("../../gold/parameters.h",0x5c,"options");\n  }" { comment (expression_statement "FUN_000da200("../../gold/parameters.h",0x5c,"options");" (call_expression "FUN_000da200("../../gold/parameters.h",0x5c,"options")" identifier (argument_list "("../../gold/parameters.h",0x5c,"options")" ( (string_literal ""../../gold/parameters.h"" " string_content ") , number_literal , (string_literal ""options"" " string_content ") ))) ;) })) (expression_statement "iVar4 = 5;" (assignment_expression "iVar4 = 5" identifier = number_literal) ;) (expression_statement "pbVar5 = *(byte **)(*(int *)(DAT_004144e8 + 8) + 0x99c);" (assignment_expression "pbVar5 = *(byte **)(*(int *)(DAT_004144e8 + 8) + 0x99c)" identifier = (pointer_expression "*(byte **)(*(int *)(DAT_004144e8 + 8) + 0x99c)" * (cast_expression "(byte **)(*(int *)(DAT_004144e8 + 8) + 0x99c)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)(DAT_004144e8 + 8) + 0x99c)" ( (binary_expression "*(int *)(DAT_004144e8 + 8) + 0x99c" (pointer_expression "*(int *)(DAT_004144e8 + 8)" * (cast_expression "(int *)(DAT_004144e8 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(DAT_004144e8 + 8)" ( (binary_expression "DAT_004144e8 + 8" identifier + number_literal) )))) + number_literal) ))))) ;) (expression_statement "pbVar6 = (byte *)0x30178a;" (assignment_expression "pbVar6 = (byte *)0x30178a" identifier = (cast_expression "(byte *)0x30178a" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (do_statement "do {\n    if (iVar4 == 0) break;\n    iVar4 = iVar4 + -1;\n    bVar7 = *pbVar5 < *pbVar6;\n    bVar8 = *pbVar5 == *pbVar6;\n    pbVar5 = pbVar5 + (uint)bVar9 * -2 + 1;\n    pbVar6 = pbVar6 + (uint)bVar9 * -2 + 1;\n  } while (bVar8);" do (compound_statement "{\n    if (iVar4 == 0) break;\n    iVar4 = iVar4 + -1;\n    bVar7 = *pbVar5 < *pbVar6;\n    bVar8 = *pbVar5 == *pbVar6;\n    pbVar5 = pbVar5 + (uint)bVar9 * -2 + 1;\n    pbVar6 = pbVar6 + (uint)bVar9 * -2 + 1;\n  }" { (if_statement "if (iVar4 == 0) break;" if (parenthesized_expression "(iVar4 == 0)" ( (binary_expression "iVar4 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar4 = iVar4 + -1;" (assignment_expression "iVar4 = iVar4 + -1" identifier = (binary_expression "iVar4 + -1" identifier + number_literal)) ;) (expression_statement "bVar7 = *pbVar5 < *pbVar6;" (assignment_expression "bVar7 = *pbVar5 < *pbVar6" identifier = (binary_expression "*pbVar5 < *pbVar6" (pointer_expression "*pbVar5" * identifier) < (pointer_expression "*pbVar6" * identifier))) ;) (expression_statement "bVar8 = *pbVar5 == *pbVar6;" (assignment_expression "bVar8 = *pbVar5 == *pbVar6" identifier = (binary_expression "*pbVar5 == *pbVar6" (pointer_expression "*pbVar5" * identifier) == (pointer_expression "*pbVar6" * identifier))) ;) (expression_statement "pbVar5 = pbVar5 + (uint)bVar9 * -2 + 1;" (assignment_expression "pbVar5 = pbVar5 + (uint)bVar9 * -2 + 1" identifier = (binary_expression "pbVar5 + (uint)bVar9 * -2 + 1" (binary_expression "pbVar5 + (uint)bVar9 * -2" identifier + (binary_expression "(uint)bVar9 * -2" (cast_expression "(uint)bVar9" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar6 = pbVar6 + (uint)bVar9 * -2 + 1;" (assignment_expression "pbVar6 = pbVar6 + (uint)bVar9 * -2 + 1" identifier = (binary_expression "pbVar6 + (uint)bVar9 * -2 + 1" (binary_expression "pbVar6 + (uint)bVar9 * -2" identifier + (binary_expression "(uint)bVar9 * -2" (cast_expression "(uint)bVar9" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar8)" ( identifier )) ;) (if_statement "if ((!bVar7 && !bVar8) != bVar7) {\n    *(byte *)(iVar2 + 0x90) = *(byte *)(iVar2 + 0x90) | 0x10;\n  }" if (parenthesized_expression "((!bVar7 && !bVar8) != bVar7)" ( (binary_expression "(!bVar7 && !bVar8) != bVar7" (parenthesized_expression "(!bVar7 && !bVar8)" ( (binary_expression "!bVar7 && !bVar8" (unary_expression "!bVar7" ! identifier) && (unary_expression "!bVar8" ! identifier)) )) != identifier) )) (compound_statement "{\n    *(byte *)(iVar2 + 0x90) = *(byte *)(iVar2 + 0x90) | 0x10;\n  }" { (expression_statement "*(byte *)(iVar2 + 0x90) = *(byte *)(iVar2 + 0x90) | 0x10;" (assignment_expression "*(byte *)(iVar2 + 0x90) = *(byte *)(iVar2 + 0x90) | 0x10" (pointer_expression "*(byte *)(iVar2 + 0x90)" * (cast_expression "(byte *)(iVar2 + 0x90)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x90)" ( (binary_expression "iVar2 + 0x90" identifier + number_literal) )))) = (binary_expression "*(byte *)(iVar2 + 0x90) | 0x10" (pointer_expression "*(byte *)(iVar2 + 0x90)" * (cast_expression "(byte *)(iVar2 + 0x90)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x90)" ( (binary_expression "iVar2 + 0x90" identifier + number_literal) )))) | number_literal)) ;) })) (expression_statement "puVar3 = (undefined4 *)FUN_00246670(0x30);" (assignment_expression "puVar3 = (undefined4 *)FUN_00246670(0x30)" identifier = (cast_expression "(undefined4 *)FUN_00246670(0x30)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00246670(0x30)" identifier (argument_list "(0x30)" ( number_literal ))))) ;) (expression_statement "*(byte *)(puVar3 + 7) = *(byte *)(puVar3 + 7) & 0xe0;" (assignment_expression "*(byte *)(puVar3 + 7) = *(byte *)(puVar3 + 7) & 0xe0" (pointer_expression "*(byte *)(puVar3 + 7)" * (cast_expression "(byte *)(puVar3 + 7)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar3 + 7)" ( (binary_expression "puVar3 + 7" identifier + number_literal) )))) = (binary_expression "*(byte *)(puVar3 + 7) & 0xe0" (pointer_expression "*(byte *)(puVar3 + 7)" * (cast_expression "(byte *)(puVar3 + 7)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar3 + 7)" ( (binary_expression "puVar3 + 7" identifier + number_literal) )))) & number_literal)) ;) (expression_statement "puVar3[0xb] = param_1 + 8;" (assignment_expression "puVar3[0xb] = param_1 + 8" (subscript_expression "puVar3[0xb]" identifier [ number_literal ]) = (binary_expression "param_1 + 8" identifier + number_literal)) ;) (expression_statement "puVar3[1] = 0;" (assignment_expression "puVar3[1] = 0" (subscript_expression "puVar3[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar3[2] = 0;" (assignment_expression "puVar3[2] = 0" (subscript_expression "puVar3[2]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar3[3] = 0;" (assignment_expression "puVar3[3] = 0" (subscript_expression "puVar3[3]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar3[4] = 0;" (assignment_expression "puVar3[4] = 0" (subscript_expression "puVar3[4]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar3[5] = 0xffffffff;" (assignment_expression "puVar3[5] = 0xffffffff" (subscript_expression "puVar3[5]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar3[6] = 0xffffffff;" (assignment_expression "puVar3[6] = 0xffffffff" (subscript_expression "puVar3[6]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar3[8] = 0;" (assignment_expression "puVar3[8] = 0" (subscript_expression "puVar3[8]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar3[9] = 1;" (assignment_expression "puVar3[9] = 1" (subscript_expression "puVar3[9]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar3[10] = 0;" (assignment_expression "puVar3[10] = 0" (subscript_expression "puVar3[10]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*puVar3 = &PTR_FUN_004075bc;" (assignment_expression "*puVar3 = &PTR_FUN_004075bc" (pointer_expression "*puVar3" * identifier) = (pointer_expression "&PTR_FUN_004075bc" & identifier)) ;) (expression_statement "FUN_00160da0(iVar2,puVar3);" (call_expression "FUN_00160da0(iVar2,puVar3)" identifier (argument_list "(iVar2,puVar3)" ( identifier , identifier ))) ;) (return_statement "return iVar2;" return identifier ;) })))
(translation_unit "/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n/* WARNING: Enum "DT": Some values do not have unique names */\n/* DWARF original prototype: Output_section * create_shstrtab(Layout * this) */\n\nOutput_section * __thiscall gold::Layout::create_shstrtab(Layout *this)\n\n{\n}\n\n" comment comment comment (ERROR "Output_section * __thiscall gold::Layout::create_shstrtab(Layout *this)" (binary_expression "Output_section * __thiscall gold::Layout::create_shstrtab(Layout *this" (binary_expression "Output_section * __thiscall" identifier * identifier) (ERROR "gold::Layout::create_shstrtab(Layout" identifier : : identifier : : identifier ( identifier) * identifier) )) (compound_statement "{\n}" { }))
(translation_unit "int FUN_0010da20(int param_1)\n\n{\n  undefined4 uVar1;\n  int iVar2;\n  undefined4 *puVar3;\n  int iVar4;\n  byte *pbVar5;\n  byte *pbVar6;\n  bool bVar7;\n  bool bVar8;\n  byte bVar9;\n  \n  bVar9 = 0;\n  uVar1 = FUN_001e3f80(param_1 + 8,".shstrtab",0,0);\n  iVar2 = FUN_0010c350(param_1,uVar1,3,0,0,0,0);\n  bVar7 = false;\n  bVar8 = *(int *)(DAT_004144e8 + 8) == 0;\n  if (bVar8) {\n                    \n    FUN_000da200("../../gold/parameters.h",0x5c,"options");\n  }\n  iVar4 = 5;\n  pbVar5 = *(byte **)(*(int *)(DAT_004144e8 + 8) + 0x99c);\n  pbVar6 = (byte *)0x30178a;\n  do {\n    if (iVar4 == 0) break;\n    iVar4 = iVar4 + -1;\n    bVar7 = *pbVar5 < *pbVar6;\n    bVar8 = *pbVar5 == *pbVar6;\n    pbVar5 = pbVar5 + (uint)bVar9 * -2 + 1;\n    pbVar6 = pbVar6 + (uint)bVar9 * -2 + 1;\n  } while (bVar8);\n  if ((!bVar7 && !bVar8) != bVar7) {\n    *(byte *)(iVar2 + 0x90) = *(byte *)(iVar2 + 0x90) | 0x10;\n  }\n  puVar3 = (undefined4 *)FUN_00246670(0x30);\n  *(byte *)(puVar3 + 7) = *(byte *)(puVar3 + 7) & 0xe0;\n  puVar3[0xb] = param_1 + 8;\n  puVar3[1] = 0;\n  puVar3[2] = 0;\n  puVar3[3] = 0;\n  puVar3[4] = 0;\n  puVar3[5] = 0xffffffff;\n  puVar3[6] = 0xffffffff;\n  puVar3[8] = 0;\n  puVar3[9] = 1;\n  puVar3[10] = 0;\n  *puVar3 = &PTR_FUN_004075bc;\n  FUN_00160da0(iVar2,puVar3);\n  return iVar2;\n}\n\n" (function_definition "int FUN_0010da20(int param_1)\n\n{\n  undefined4 uVar1;\n  int iVar2;\n  undefined4 *puVar3;\n  int iVar4;\n  byte *pbVar5;\n  byte *pbVar6;\n  bool bVar7;\n  bool bVar8;\n  byte bVar9;\n  \n  bVar9 = 0;\n  uVar1 = FUN_001e3f80(param_1 + 8,".shstrtab",0,0);\n  iVar2 = FUN_0010c350(param_1,uVar1,3,0,0,0,0);\n  bVar7 = false;\n  bVar8 = *(int *)(DAT_004144e8 + 8) == 0;\n  if (bVar8) {\n                    \n    FUN_000da200("../../gold/parameters.h",0x5c,"options");\n  }\n  iVar4 = 5;\n  pbVar5 = *(byte **)(*(int *)(DAT_004144e8 + 8) + 0x99c);\n  pbVar6 = (byte *)0x30178a;\n  do {\n    if (iVar4 == 0) break;\n    iVar4 = iVar4 + -1;\n    bVar7 = *pbVar5 < *pbVar6;\n    bVar8 = *pbVar5 == *pbVar6;\n    pbVar5 = pbVar5 + (uint)bVar9 * -2 + 1;\n    pbVar6 = pbVar6 + (uint)bVar9 * -2 + 1;\n  } while (bVar8);\n  if ((!bVar7 && !bVar8) != bVar7) {\n    *(byte *)(iVar2 + 0x90) = *(byte *)(iVar2 + 0x90) | 0x10;\n  }\n  puVar3 = (undefined4 *)FUN_00246670(0x30);\n  *(byte *)(puVar3 + 7) = *(byte *)(puVar3 + 7) & 0xe0;\n  puVar3[0xb] = param_1 + 8;\n  puVar3[1] = 0;\n  puVar3[2] = 0;\n  puVar3[3] = 0;\n  puVar3[4] = 0;\n  puVar3[5] = 0xffffffff;\n  puVar3[6] = 0xffffffff;\n  puVar3[8] = 0;\n  puVar3[9] = 1;\n  puVar3[10] = 0;\n  *puVar3 = &PTR_FUN_004075bc;\n  FUN_00160da0(iVar2,puVar3);\n  return iVar2;\n}" primitive_type (function_declarator "FUN_0010da20(int param_1)" identifier (parameter_list "(int param_1)" ( (parameter_declaration "int param_1" primitive_type identifier) ))) (compound_statement "{\n  undefined4 uVar1;\n  int iVar2;\n  undefined4 *puVar3;\n  int iVar4;\n  byte *pbVar5;\n  byte *pbVar6;\n  bool bVar7;\n  bool bVar8;\n  byte bVar9;\n  \n  bVar9 = 0;\n  uVar1 = FUN_001e3f80(param_1 + 8,".shstrtab",0,0);\n  iVar2 = FUN_0010c350(param_1,uVar1,3,0,0,0,0);\n  bVar7 = false;\n  bVar8 = *(int *)(DAT_004144e8 + 8) == 0;\n  if (bVar8) {\n                    \n    FUN_000da200("../../gold/parameters.h",0x5c,"options");\n  }\n  iVar4 = 5;\n  pbVar5 = *(byte **)(*(int *)(DAT_004144e8 + 8) + 0x99c);\n  pbVar6 = (byte *)0x30178a;\n  do {\n    if (iVar4 == 0) break;\n    iVar4 = iVar4 + -1;\n    bVar7 = *pbVar5 < *pbVar6;\n    bVar8 = *pbVar5 == *pbVar6;\n    pbVar5 = pbVar5 + (uint)bVar9 * -2 + 1;\n    pbVar6 = pbVar6 + (uint)bVar9 * -2 + 1;\n  } while (bVar8);\n  if ((!bVar7 && !bVar8) != bVar7) {\n    *(byte *)(iVar2 + 0x90) = *(byte *)(iVar2 + 0x90) | 0x10;\n  }\n  puVar3 = (undefined4 *)FUN_00246670(0x30);\n  *(byte *)(puVar3 + 7) = *(byte *)(puVar3 + 7) & 0xe0;\n  puVar3[0xb] = param_1 + 8;\n  puVar3[1] = 0;\n  puVar3[2] = 0;\n  puVar3[3] = 0;\n  puVar3[4] = 0;\n  puVar3[5] = 0xffffffff;\n  puVar3[6] = 0xffffffff;\n  puVar3[8] = 0;\n  puVar3[9] = 1;\n  puVar3[10] = 0;\n  *puVar3 = &PTR_FUN_004075bc;\n  FUN_00160da0(iVar2,puVar3);\n  return iVar2;\n}" { (declaration "undefined4 uVar1;" type_identifier identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "undefined4 *puVar3;" type_identifier (pointer_declarator "*puVar3" * identifier) ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "byte *pbVar5;" type_identifier (pointer_declarator "*pbVar5" * identifier) ;) (declaration "byte *pbVar6;" type_identifier (pointer_declarator "*pbVar6" * identifier) ;) (declaration "bool bVar7;" primitive_type identifier ;) (declaration "bool bVar8;" primitive_type identifier ;) (declaration "byte bVar9;" type_identifier identifier ;) (expression_statement "bVar9 = 0;" (assignment_expression "bVar9 = 0" identifier = number_literal) ;) (expression_statement "uVar1 = FUN_001e3f80(param_1 + 8,".shstrtab",0,0);" (assignment_expression "uVar1 = FUN_001e3f80(param_1 + 8,".shstrtab",0,0)" identifier = (call_expression "FUN_001e3f80(param_1 + 8,".shstrtab",0,0)" identifier (argument_list "(param_1 + 8,".shstrtab",0,0)" ( (binary_expression "param_1 + 8" identifier + number_literal) , (string_literal "".shstrtab"" " string_content ") , number_literal , number_literal )))) ;) (expression_statement "iVar2 = FUN_0010c350(param_1,uVar1,3,0,0,0,0);" (assignment_expression "iVar2 = FUN_0010c350(param_1,uVar1,3,0,0,0,0)" identifier = (call_expression "FUN_0010c350(param_1,uVar1,3,0,0,0,0)" identifier (argument_list "(param_1,uVar1,3,0,0,0,0)" ( identifier , identifier , number_literal , number_literal , number_literal , number_literal , number_literal )))) ;) (expression_statement "bVar7 = false;" (assignment_expression "bVar7 = false" identifier = false) ;) (expression_statement "bVar8 = *(int *)(DAT_004144e8 + 8) == 0;" (assignment_expression "bVar8 = *(int *)(DAT_004144e8 + 8) == 0" identifier = (binary_expression "*(int *)(DAT_004144e8 + 8) == 0" (pointer_expression "*(int *)(DAT_004144e8 + 8)" * (cast_expression "(int *)(DAT_004144e8 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(DAT_004144e8 + 8)" ( (binary_expression "DAT_004144e8 + 8" identifier + number_literal) )))) == number_literal)) ;) (if_statement "if (bVar8) {\n                    \n    FUN_000da200("../../gold/parameters.h",0x5c,"options");\n  }" if (parenthesized_expression "(bVar8)" ( identifier )) (compound_statement "{\n                    \n    FUN_000da200("../../gold/parameters.h",0x5c,"options");\n  }" { (expression_statement "FUN_000da200("../../gold/parameters.h",0x5c,"options");" (call_expression "FUN_000da200("../../gold/parameters.h",0x5c,"options")" identifier (argument_list "("../../gold/parameters.h",0x5c,"options")" ( (string_literal ""../../gold/parameters.h"" " string_content ") , number_literal , (string_literal ""options"" " string_content ") ))) ;) })) (expression_statement "iVar4 = 5;" (assignment_expression "iVar4 = 5" identifier = number_literal) ;) (expression_statement "pbVar5 = *(byte **)(*(int *)(DAT_004144e8 + 8) + 0x99c);" (assignment_expression "pbVar5 = *(byte **)(*(int *)(DAT_004144e8 + 8) + 0x99c)" identifier = (pointer_expression "*(byte **)(*(int *)(DAT_004144e8 + 8) + 0x99c)" * (cast_expression "(byte **)(*(int *)(DAT_004144e8 + 8) + 0x99c)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)(DAT_004144e8 + 8) + 0x99c)" ( (binary_expression "*(int *)(DAT_004144e8 + 8) + 0x99c" (pointer_expression "*(int *)(DAT_004144e8 + 8)" * (cast_expression "(int *)(DAT_004144e8 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(DAT_004144e8 + 8)" ( (binary_expression "DAT_004144e8 + 8" identifier + number_literal) )))) + number_literal) ))))) ;) (expression_statement "pbVar6 = (byte *)0x30178a;" (assignment_expression "pbVar6 = (byte *)0x30178a" identifier = (cast_expression "(byte *)0x30178a" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (do_statement "do {\n    if (iVar4 == 0) break;\n    iVar4 = iVar4 + -1;\n    bVar7 = *pbVar5 < *pbVar6;\n    bVar8 = *pbVar5 == *pbVar6;\n    pbVar5 = pbVar5 + (uint)bVar9 * -2 + 1;\n    pbVar6 = pbVar6 + (uint)bVar9 * -2 + 1;\n  } while (bVar8);" do (compound_statement "{\n    if (iVar4 == 0) break;\n    iVar4 = iVar4 + -1;\n    bVar7 = *pbVar5 < *pbVar6;\n    bVar8 = *pbVar5 == *pbVar6;\n    pbVar5 = pbVar5 + (uint)bVar9 * -2 + 1;\n    pbVar6 = pbVar6 + (uint)bVar9 * -2 + 1;\n  }" { (if_statement "if (iVar4 == 0) break;" if (parenthesized_expression "(iVar4 == 0)" ( (binary_expression "iVar4 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar4 = iVar4 + -1;" (assignment_expression "iVar4 = iVar4 + -1" identifier = (binary_expression "iVar4 + -1" identifier + number_literal)) ;) (expression_statement "bVar7 = *pbVar5 < *pbVar6;" (assignment_expression "bVar7 = *pbVar5 < *pbVar6" identifier = (binary_expression "*pbVar5 < *pbVar6" (pointer_expression "*pbVar5" * identifier) < (pointer_expression "*pbVar6" * identifier))) ;) (expression_statement "bVar8 = *pbVar5 == *pbVar6;" (assignment_expression "bVar8 = *pbVar5 == *pbVar6" identifier = (binary_expression "*pbVar5 == *pbVar6" (pointer_expression "*pbVar5" * identifier) == (pointer_expression "*pbVar6" * identifier))) ;) (expression_statement "pbVar5 = pbVar5 + (uint)bVar9 * -2 + 1;" (assignment_expression "pbVar5 = pbVar5 + (uint)bVar9 * -2 + 1" identifier = (binary_expression "pbVar5 + (uint)bVar9 * -2 + 1" (binary_expression "pbVar5 + (uint)bVar9 * -2" identifier + (binary_expression "(uint)bVar9 * -2" (cast_expression "(uint)bVar9" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar6 = pbVar6 + (uint)bVar9 * -2 + 1;" (assignment_expression "pbVar6 = pbVar6 + (uint)bVar9 * -2 + 1" identifier = (binary_expression "pbVar6 + (uint)bVar9 * -2 + 1" (binary_expression "pbVar6 + (uint)bVar9 * -2" identifier + (binary_expression "(uint)bVar9 * -2" (cast_expression "(uint)bVar9" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar8)" ( identifier )) ;) (if_statement "if ((!bVar7 && !bVar8) != bVar7) {\n    *(byte *)(iVar2 + 0x90) = *(byte *)(iVar2 + 0x90) | 0x10;\n  }" if (parenthesized_expression "((!bVar7 && !bVar8) != bVar7)" ( (binary_expression "(!bVar7 && !bVar8) != bVar7" (parenthesized_expression "(!bVar7 && !bVar8)" ( (binary_expression "!bVar7 && !bVar8" (unary_expression "!bVar7" ! identifier) && (unary_expression "!bVar8" ! identifier)) )) != identifier) )) (compound_statement "{\n    *(byte *)(iVar2 + 0x90) = *(byte *)(iVar2 + 0x90) | 0x10;\n  }" { (expression_statement "*(byte *)(iVar2 + 0x90) = *(byte *)(iVar2 + 0x90) | 0x10;" (assignment_expression "*(byte *)(iVar2 + 0x90) = *(byte *)(iVar2 + 0x90) | 0x10" (pointer_expression "*(byte *)(iVar2 + 0x90)" * (cast_expression "(byte *)(iVar2 + 0x90)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x90)" ( (binary_expression "iVar2 + 0x90" identifier + number_literal) )))) = (binary_expression "*(byte *)(iVar2 + 0x90) | 0x10" (pointer_expression "*(byte *)(iVar2 + 0x90)" * (cast_expression "(byte *)(iVar2 + 0x90)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x90)" ( (binary_expression "iVar2 + 0x90" identifier + number_literal) )))) | number_literal)) ;) })) (expression_statement "puVar3 = (undefined4 *)FUN_00246670(0x30);" (assignment_expression "puVar3 = (undefined4 *)FUN_00246670(0x30)" identifier = (cast_expression "(undefined4 *)FUN_00246670(0x30)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00246670(0x30)" identifier (argument_list "(0x30)" ( number_literal ))))) ;) (expression_statement "*(byte *)(puVar3 + 7) = *(byte *)(puVar3 + 7) & 0xe0;" (assignment_expression "*(byte *)(puVar3 + 7) = *(byte *)(puVar3 + 7) & 0xe0" (pointer_expression "*(byte *)(puVar3 + 7)" * (cast_expression "(byte *)(puVar3 + 7)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar3 + 7)" ( (binary_expression "puVar3 + 7" identifier + number_literal) )))) = (binary_expression "*(byte *)(puVar3 + 7) & 0xe0" (pointer_expression "*(byte *)(puVar3 + 7)" * (cast_expression "(byte *)(puVar3 + 7)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar3 + 7)" ( (binary_expression "puVar3 + 7" identifier + number_literal) )))) & number_literal)) ;) (expression_statement "puVar3[0xb] = param_1 + 8;" (assignment_expression "puVar3[0xb] = param_1 + 8" (subscript_expression "puVar3[0xb]" identifier [ number_literal ]) = (binary_expression "param_1 + 8" identifier + number_literal)) ;) (expression_statement "puVar3[1] = 0;" (assignment_expression "puVar3[1] = 0" (subscript_expression "puVar3[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar3[2] = 0;" (assignment_expression "puVar3[2] = 0" (subscript_expression "puVar3[2]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar3[3] = 0;" (assignment_expression "puVar3[3] = 0" (subscript_expression "puVar3[3]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar3[4] = 0;" (assignment_expression "puVar3[4] = 0" (subscript_expression "puVar3[4]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar3[5] = 0xffffffff;" (assignment_expression "puVar3[5] = 0xffffffff" (subscript_expression "puVar3[5]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar3[6] = 0xffffffff;" (assignment_expression "puVar3[6] = 0xffffffff" (subscript_expression "puVar3[6]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar3[8] = 0;" (assignment_expression "puVar3[8] = 0" (subscript_expression "puVar3[8]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar3[9] = 1;" (assignment_expression "puVar3[9] = 1" (subscript_expression "puVar3[9]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar3[10] = 0;" (assignment_expression "puVar3[10] = 0" (subscript_expression "puVar3[10]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*puVar3 = &PTR_FUN_004075bc;" (assignment_expression "*puVar3 = &PTR_FUN_004075bc" (pointer_expression "*puVar3" * identifier) = (pointer_expression "&PTR_FUN_004075bc" & identifier)) ;) (expression_statement "FUN_00160da0(iVar2,puVar3);" (call_expression "FUN_00160da0(iVar2,puVar3)" identifier (argument_list "(iVar2,puVar3)" ( identifier , identifier ))) ;) (return_statement "return iVar2;" return identifier ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) , (string_literal " string_content ") , LIT , LIT )))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT , LIT , LIT , LIT , LIT , LIT )))) ;) (expression_statement (assignment_expression IDENT = BOOL) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == LIT)) ;) (if_statement if (parenthesized_expression ( IDENT )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") , LIT , (string_literal " string_content ") ))) ;) })) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (do_statement do (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * IDENT) < (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * IDENT) == (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) + LIT)) ;) }) while (parenthesized_expression ( IDENT )) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (unary_expression ! IDENT) && (unary_expression ! IDENT)) )) != IDENT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) | LIT)) ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( LIT ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (pointer_expression & IDENT)) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT ))) ;) (return_statement return IDENT ;) })))
(function_definition "int FUN_0010da20(int param_1)\n\n{\n  undefined4 uVar1;\n  int iVar2;\n  undefined4 *puVar3;\n  int iVar4;\n  byte *pbVar5;\n  byte *pbVar6;\n  bool bVar7;\n  bool bVar8;\n  byte bVar9;\n  \n  bVar9 = 0;\n  uVar1 = FUN_001e3f80(param_1 + 8,".shstrtab",0,0);\n  iVar2 = FUN_0010c350(param_1,uVar1,3,0,0,0,0);\n  bVar7 = false;\n  bVar8 = *(int *)(DAT_004144e8 + 8) == 0;\n  if (bVar8) {\n                    \n    FUN_000da200("../../gold/parameters.h",0x5c,"options");\n  }\n  iVar4 = 5;\n  pbVar5 = *(byte **)(*(int *)(DAT_004144e8 + 8) + 0x99c);\n  pbVar6 = (byte *)0x30178a;\n  do {\n    if (iVar4 == 0) break;\n    iVar4 = iVar4 + -1;\n    bVar7 = *pbVar5 < *pbVar6;\n    bVar8 = *pbVar5 == *pbVar6;\n    pbVar5 = pbVar5 + (uint)bVar9 * -2 + 1;\n    pbVar6 = pbVar6 + (uint)bVar9 * -2 + 1;\n  } while (bVar8);\n  if ((!bVar7 && !bVar8) != bVar7) {\n    *(byte *)(iVar2 + 0x90) = *(byte *)(iVar2 + 0x90) | 0x10;\n  }\n  puVar3 = (undefined4 *)FUN_00246670(0x30);\n  *(byte *)(puVar3 + 7) = *(byte *)(puVar3 + 7) & 0xe0;\n  puVar3[0xb] = param_1 + 8;\n  puVar3[1] = 0;\n  puVar3[2] = 0;\n  puVar3[3] = 0;\n  puVar3[4] = 0;\n  puVar3[5] = 0xffffffff;\n  puVar3[6] = 0xffffffff;\n  puVar3[8] = 0;\n  puVar3[9] = 1;\n  puVar3[10] = 0;\n  *puVar3 = &PTR_FUN_004075bc;\n  FUN_00160da0(iVar2,puVar3);\n  return iVar2;\n}" (primitive_type "int") (function_declarator "FUN_0010da20(int param_1)" (identifier "FUN_0010da20") (parameter_list "(int param_1)" (( "(") (parameter_declaration "int param_1" (primitive_type "int") (identifier "param_1")) () ")"))) (compound_statement "{\n  undefined4 uVar1;\n  int iVar2;\n  undefined4 *puVar3;\n  int iVar4;\n  byte *pbVar5;\n  byte *pbVar6;\n  bool bVar7;\n  bool bVar8;\n  byte bVar9;\n  \n  bVar9 = 0;\n  uVar1 = FUN_001e3f80(param_1 + 8,".shstrtab",0,0);\n  iVar2 = FUN_0010c350(param_1,uVar1,3,0,0,0,0);\n  bVar7 = false;\n  bVar8 = *(int *)(DAT_004144e8 + 8) == 0;\n  if (bVar8) {\n                    \n    FUN_000da200("../../gold/parameters.h",0x5c,"options");\n  }\n  iVar4 = 5;\n  pbVar5 = *(byte **)(*(int *)(DAT_004144e8 + 8) + 0x99c);\n  pbVar6 = (byte *)0x30178a;\n  do {\n    if (iVar4 == 0) break;\n    iVar4 = iVar4 + -1;\n    bVar7 = *pbVar5 < *pbVar6;\n    bVar8 = *pbVar5 == *pbVar6;\n    pbVar5 = pbVar5 + (uint)bVar9 * -2 + 1;\n    pbVar6 = pbVar6 + (uint)bVar9 * -2 + 1;\n  } while (bVar8);\n  if ((!bVar7 && !bVar8) != bVar7) {\n    *(byte *)(iVar2 + 0x90) = *(byte *)(iVar2 + 0x90) | 0x10;\n  }\n  puVar3 = (undefined4 *)FUN_00246670(0x30);\n  *(byte *)(puVar3 + 7) = *(byte *)(puVar3 + 7) & 0xe0;\n  puVar3[0xb] = param_1 + 8;\n  puVar3[1] = 0;\n  puVar3[2] = 0;\n  puVar3[3] = 0;\n  puVar3[4] = 0;\n  puVar3[5] = 0xffffffff;\n  puVar3[6] = 0xffffffff;\n  puVar3[8] = 0;\n  puVar3[9] = 1;\n  puVar3[10] = 0;\n  *puVar3 = &PTR_FUN_004075bc;\n  FUN_00160da0(iVar2,puVar3);\n  return iVar2;\n}" ({ "{") (declaration "undefined4 uVar1;" (type_identifier "undefined4") (identifier "uVar1") (; ";")) (declaration "int iVar2;" (primitive_type "int") (identifier "iVar2") (; ";")) (declaration "undefined4 *puVar3;" (type_identifier "undefined4") (pointer_declarator "*puVar3" (* "*") (identifier "puVar3")) (; ";")) (declaration "int iVar4;" (primitive_type "int") (identifier "iVar4") (; ";")) (declaration "byte *pbVar5;" (type_identifier "byte") (pointer_declarator "*pbVar5" (* "*") (identifier "pbVar5")) (; ";")) (declaration "byte *pbVar6;" (type_identifier "byte") (pointer_declarator "*pbVar6" (* "*") (identifier "pbVar6")) (; ";")) (declaration "bool bVar7;" (primitive_type "bool") (identifier "bVar7") (; ";")) (declaration "bool bVar8;" (primitive_type "bool") (identifier "bVar8") (; ";")) (declaration "byte bVar9;" (type_identifier "byte") (identifier "bVar9") (; ";")) (expression_statement "bVar9 = 0;" (assignment_expression "bVar9 = 0" (identifier "bVar9") (= "=") (number_literal "0")) (; ";")) (expression_statement "uVar1 = FUN_001e3f80(param_1 + 8,".shstrtab",0,0);" (assignment_expression "uVar1 = FUN_001e3f80(param_1 + 8,".shstrtab",0,0)" (identifier "uVar1") (= "=") (call_expression "FUN_001e3f80(param_1 + 8,".shstrtab",0,0)" (identifier "FUN_001e3f80") (argument_list "(param_1 + 8,".shstrtab",0,0)" (( "(") (binary_expression "param_1 + 8" (identifier "param_1") (+ "+") (number_literal "8")) (, ",") (string_literal "".shstrtab"" (" """) (string_content ".shstrtab") (" """)) (, ",") (number_literal "0") (, ",") (number_literal "0") () ")")))) (; ";")) (expression_statement "iVar2 = FUN_0010c350(param_1,uVar1,3,0,0,0,0);" (assignment_expression "iVar2 = FUN_0010c350(param_1,uVar1,3,0,0,0,0)" (identifier "iVar2") (= "=") (call_expression "FUN_0010c350(param_1,uVar1,3,0,0,0,0)" (identifier "FUN_0010c350") (argument_list "(param_1,uVar1,3,0,0,0,0)" (( "(") (identifier "param_1") (, ",") (identifier "uVar1") (, ",") (number_literal "3") (, ",") (number_literal "0") (, ",") (number_literal "0") (, ",") (number_literal "0") (, ",") (number_literal "0") () ")")))) (; ";")) (expression_statement "bVar7 = false;" (assignment_expression "bVar7 = false" (identifier "bVar7") (= "=") (false "false")) (; ";")) (expression_statement "bVar8 = *(int *)(DAT_004144e8 + 8) == 0;" (assignment_expression "bVar8 = *(int *)(DAT_004144e8 + 8) == 0" (identifier "bVar8") (= "=") (binary_expression "*(int *)(DAT_004144e8 + 8) == 0" (pointer_expression "*(int *)(DAT_004144e8 + 8)" (* "*") (cast_expression "(int *)(DAT_004144e8 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(DAT_004144e8 + 8)" (( "(") (binary_expression "DAT_004144e8 + 8" (identifier "DAT_004144e8") (+ "+") (number_literal "8")) () ")")))) (== "==") (number_literal "0"))) (; ";")) (if_statement "if (bVar8) {\n                    \n    FUN_000da200("../../gold/parameters.h",0x5c,"options");\n  }" (if "if") (parenthesized_expression "(bVar8)" (( "(") (identifier "bVar8") () ")")) (compound_statement "{\n                    \n    FUN_000da200("../../gold/parameters.h",0x5c,"options");\n  }" ({ "{") (expression_statement "FUN_000da200("../../gold/parameters.h",0x5c,"options");" (call_expression "FUN_000da200("../../gold/parameters.h",0x5c,"options")" (identifier "FUN_000da200") (argument_list "("../../gold/parameters.h",0x5c,"options")" (( "(") (string_literal ""../../gold/parameters.h"" (" """) (string_content "../../gold/parameters.h") (" """)) (, ",") (number_literal "0x5c") (, ",") (string_literal ""options"" (" """) (string_content "options") (" """)) () ")"))) (; ";")) (} "}"))) (expression_statement "iVar4 = 5;" (assignment_expression "iVar4 = 5" (identifier "iVar4") (= "=") (number_literal "5")) (; ";")) (expression_statement "pbVar5 = *(byte **)(*(int *)(DAT_004144e8 + 8) + 0x99c);" (assignment_expression "pbVar5 = *(byte **)(*(int *)(DAT_004144e8 + 8) + 0x99c)" (identifier "pbVar5") (= "=") (pointer_expression "*(byte **)(*(int *)(DAT_004144e8 + 8) + 0x99c)" (* "*") (cast_expression "(byte **)(*(int *)(DAT_004144e8 + 8) + 0x99c)" (( "(") (type_descriptor "byte **" (type_identifier "byte") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*(int *)(DAT_004144e8 + 8) + 0x99c)" (( "(") (binary_expression "*(int *)(DAT_004144e8 + 8) + 0x99c" (pointer_expression "*(int *)(DAT_004144e8 + 8)" (* "*") (cast_expression "(int *)(DAT_004144e8 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(DAT_004144e8 + 8)" (( "(") (binary_expression "DAT_004144e8 + 8" (identifier "DAT_004144e8") (+ "+") (number_literal "8")) () ")")))) (+ "+") (number_literal "0x99c")) () ")"))))) (; ";")) (expression_statement "pbVar6 = (byte *)0x30178a;" (assignment_expression "pbVar6 = (byte *)0x30178a" (identifier "pbVar6") (= "=") (cast_expression "(byte *)0x30178a" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x30178a"))) (; ";")) (do_statement "do {\n    if (iVar4 == 0) break;\n    iVar4 = iVar4 + -1;\n    bVar7 = *pbVar5 < *pbVar6;\n    bVar8 = *pbVar5 == *pbVar6;\n    pbVar5 = pbVar5 + (uint)bVar9 * -2 + 1;\n    pbVar6 = pbVar6 + (uint)bVar9 * -2 + 1;\n  } while (bVar8);" (do "do") (compound_statement "{\n    if (iVar4 == 0) break;\n    iVar4 = iVar4 + -1;\n    bVar7 = *pbVar5 < *pbVar6;\n    bVar8 = *pbVar5 == *pbVar6;\n    pbVar5 = pbVar5 + (uint)bVar9 * -2 + 1;\n    pbVar6 = pbVar6 + (uint)bVar9 * -2 + 1;\n  }" ({ "{") (if_statement "if (iVar4 == 0) break;" (if "if") (parenthesized_expression "(iVar4 == 0)" (( "(") (binary_expression "iVar4 == 0" (identifier "iVar4") (== "==") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "iVar4 = iVar4 + -1;" (assignment_expression "iVar4 = iVar4 + -1" (identifier "iVar4") (= "=") (binary_expression "iVar4 + -1" (identifier "iVar4") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "bVar7 = *pbVar5 < *pbVar6;" (assignment_expression "bVar7 = *pbVar5 < *pbVar6" (identifier "bVar7") (= "=") (binary_expression "*pbVar5 < *pbVar6" (pointer_expression "*pbVar5" (* "*") (identifier "pbVar5")) (< "<") (pointer_expression "*pbVar6" (* "*") (identifier "pbVar6")))) (; ";")) (expression_statement "bVar8 = *pbVar5 == *pbVar6;" (assignment_expression "bVar8 = *pbVar5 == *pbVar6" (identifier "bVar8") (= "=") (binary_expression "*pbVar5 == *pbVar6" (pointer_expression "*pbVar5" (* "*") (identifier "pbVar5")) (== "==") (pointer_expression "*pbVar6" (* "*") (identifier "pbVar6")))) (; ";")) (expression_statement "pbVar5 = pbVar5 + (uint)bVar9 * -2 + 1;" (assignment_expression "pbVar5 = pbVar5 + (uint)bVar9 * -2 + 1" (identifier "pbVar5") (= "=") (binary_expression "pbVar5 + (uint)bVar9 * -2 + 1" (binary_expression "pbVar5 + (uint)bVar9 * -2" (identifier "pbVar5") (+ "+") (binary_expression "(uint)bVar9 * -2" (cast_expression "(uint)bVar9" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar9")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "pbVar6 = pbVar6 + (uint)bVar9 * -2 + 1;" (assignment_expression "pbVar6 = pbVar6 + (uint)bVar9 * -2 + 1" (identifier "pbVar6") (= "=") (binary_expression "pbVar6 + (uint)bVar9 * -2 + 1" (binary_expression "pbVar6 + (uint)bVar9 * -2" (identifier "pbVar6") (+ "+") (binary_expression "(uint)bVar9 * -2" (cast_expression "(uint)bVar9" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar9")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(bVar8)" (( "(") (identifier "bVar8") () ")")) (; ";")) (if_statement "if ((!bVar7 && !bVar8) != bVar7) {\n    *(byte *)(iVar2 + 0x90) = *(byte *)(iVar2 + 0x90) | 0x10;\n  }" (if "if") (parenthesized_expression "((!bVar7 && !bVar8) != bVar7)" (( "(") (binary_expression "(!bVar7 && !bVar8) != bVar7" (parenthesized_expression "(!bVar7 && !bVar8)" (( "(") (binary_expression "!bVar7 && !bVar8" (unary_expression "!bVar7" (! "!") (identifier "bVar7")) (&& "&&") (unary_expression "!bVar8" (! "!") (identifier "bVar8"))) () ")")) (!= "!=") (identifier "bVar7")) () ")")) (compound_statement "{\n    *(byte *)(iVar2 + 0x90) = *(byte *)(iVar2 + 0x90) | 0x10;\n  }" ({ "{") (expression_statement "*(byte *)(iVar2 + 0x90) = *(byte *)(iVar2 + 0x90) | 0x10;" (assignment_expression "*(byte *)(iVar2 + 0x90) = *(byte *)(iVar2 + 0x90) | 0x10" (pointer_expression "*(byte *)(iVar2 + 0x90)" (* "*") (cast_expression "(byte *)(iVar2 + 0x90)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar2 + 0x90)" (( "(") (binary_expression "iVar2 + 0x90" (identifier "iVar2") (+ "+") (number_literal "0x90")) () ")")))) (= "=") (binary_expression "*(byte *)(iVar2 + 0x90) | 0x10" (pointer_expression "*(byte *)(iVar2 + 0x90)" (* "*") (cast_expression "(byte *)(iVar2 + 0x90)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar2 + 0x90)" (( "(") (binary_expression "iVar2 + 0x90" (identifier "iVar2") (+ "+") (number_literal "0x90")) () ")")))) (| "|") (number_literal "0x10"))) (; ";")) (} "}"))) (expression_statement "puVar3 = (undefined4 *)FUN_00246670(0x30);" (assignment_expression "puVar3 = (undefined4 *)FUN_00246670(0x30)" (identifier "puVar3") (= "=") (cast_expression "(undefined4 *)FUN_00246670(0x30)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_00246670(0x30)" (identifier "FUN_00246670") (argument_list "(0x30)" (( "(") (number_literal "0x30") () ")"))))) (; ";")) (expression_statement "*(byte *)(puVar3 + 7) = *(byte *)(puVar3 + 7) & 0xe0;" (assignment_expression "*(byte *)(puVar3 + 7) = *(byte *)(puVar3 + 7) & 0xe0" (pointer_expression "*(byte *)(puVar3 + 7)" (* "*") (cast_expression "(byte *)(puVar3 + 7)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar3 + 7)" (( "(") (binary_expression "puVar3 + 7" (identifier "puVar3") (+ "+") (number_literal "7")) () ")")))) (= "=") (binary_expression "*(byte *)(puVar3 + 7) & 0xe0" (pointer_expression "*(byte *)(puVar3 + 7)" (* "*") (cast_expression "(byte *)(puVar3 + 7)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar3 + 7)" (( "(") (binary_expression "puVar3 + 7" (identifier "puVar3") (+ "+") (number_literal "7")) () ")")))) (& "&") (number_literal "0xe0"))) (; ";")) (expression_statement "puVar3[0xb] = param_1 + 8;" (assignment_expression "puVar3[0xb] = param_1 + 8" (subscript_expression "puVar3[0xb]" (identifier "puVar3") ([ "[") (number_literal "0xb") (] "]")) (= "=") (binary_expression "param_1 + 8" (identifier "param_1") (+ "+") (number_literal "8"))) (; ";")) (expression_statement "puVar3[1] = 0;" (assignment_expression "puVar3[1] = 0" (subscript_expression "puVar3[1]" (identifier "puVar3") ([ "[") (number_literal "1") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar3[2] = 0;" (assignment_expression "puVar3[2] = 0" (subscript_expression "puVar3[2]" (identifier "puVar3") ([ "[") (number_literal "2") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar3[3] = 0;" (assignment_expression "puVar3[3] = 0" (subscript_expression "puVar3[3]" (identifier "puVar3") ([ "[") (number_literal "3") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar3[4] = 0;" (assignment_expression "puVar3[4] = 0" (subscript_expression "puVar3[4]" (identifier "puVar3") ([ "[") (number_literal "4") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar3[5] = 0xffffffff;" (assignment_expression "puVar3[5] = 0xffffffff" (subscript_expression "puVar3[5]" (identifier "puVar3") ([ "[") (number_literal "5") (] "]")) (= "=") (number_literal "0xffffffff")) (; ";")) (expression_statement "puVar3[6] = 0xffffffff;" (assignment_expression "puVar3[6] = 0xffffffff" (subscript_expression "puVar3[6]" (identifier "puVar3") ([ "[") (number_literal "6") (] "]")) (= "=") (number_literal "0xffffffff")) (; ";")) (expression_statement "puVar3[8] = 0;" (assignment_expression "puVar3[8] = 0" (subscript_expression "puVar3[8]" (identifier "puVar3") ([ "[") (number_literal "8") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar3[9] = 1;" (assignment_expression "puVar3[9] = 1" (subscript_expression "puVar3[9]" (identifier "puVar3") ([ "[") (number_literal "9") (] "]")) (= "=") (number_literal "1")) (; ";")) (expression_statement "puVar3[10] = 0;" (assignment_expression "puVar3[10] = 0" (subscript_expression "puVar3[10]" (identifier "puVar3") ([ "[") (number_literal "10") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "*puVar3 = &PTR_FUN_004075bc;" (assignment_expression "*puVar3 = &PTR_FUN_004075bc" (pointer_expression "*puVar3" (* "*") (identifier "puVar3")) (= "=") (pointer_expression "&PTR_FUN_004075bc" (& "&") (identifier "PTR_FUN_004075bc"))) (; ";")) (expression_statement "FUN_00160da0(iVar2,puVar3);" (call_expression "FUN_00160da0(iVar2,puVar3)" (identifier "FUN_00160da0") (argument_list "(iVar2,puVar3)" (( "(") (identifier "iVar2") (, ",") (identifier "puVar3") () ")"))) (; ";")) (return_statement "return iVar2;" (return "return") (identifier "iVar2") (; ";")) (} "}")))

/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */
/* WARNING: Enum "DT": Some values do not have unique names */
/* DWARF original prototype: Output_section * create_shstrtab(Layout * this) */

Output_section * __thiscall gold::Layout::create_shstrtab(Layout *this)

{
}


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

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

int MASKED(int param_1)

{
  undefined4 uVar1;
  int iVar2;
  undefined4 *puVar3;
  int iVar4;
  byte *pbVar5;
  byte *pbVar6;
  bool bVar7;
  bool bVar8;
  byte bVar9;
  
  bVar9 = 0;
  uVar1 = FUN_001e3f80(param_1 + 8,".shstrtab",0,0);
  iVar2 = FUN_0010c350(param_1,uVar1,3,0,0,0,0);
  bVar7 = false;
  bVar8 = *(int *)(DAT_004144e8 + 8) == 0;
  if (bVar8) {
                    /* WARNING: Subroutine does not return */
    FUN_000da200("../../gold/parameters.h",0x5c,"options");
  }
  iVar4 = 5;
  pbVar5 = *(byte **)(*(int *)(DAT_004144e8 + 8) + 0x99c);
  pbVar6 = (byte *)0x30178a;
  do {
    if (iVar4 == 0) break;
    iVar4 = iVar4 + -1;
    bVar7 = *pbVar5 < *pbVar6;
    bVar8 = *pbVar5 == *pbVar6;
    pbVar5 = pbVar5 + (uint)bVar9 * -2 + 1;
    pbVar6 = pbVar6 + (uint)bVar9 * -2 + 1;
  } while (bVar8);
  if ((!bVar7 && !bVar8) != bVar7) {
    *(byte *)(iVar2 + 0x90) = *(byte *)(iVar2 + 0x90) | 0x10;
  }
  puVar3 = (undefined4 *)FUN_00246670(0x30);
  *(byte *)(puVar3 + 7) = *(byte *)(puVar3 + 7) & 0xe0;
  puVar3[0xb] = param_1 + 8;
  puVar3[1] = 0;
  puVar3[2] = 0;
  puVar3[3] = 0;
  puVar3[4] = 0;
  puVar3[5] = 0xffffffff;
  puVar3[6] = 0xffffffff;
  puVar3[8] = 0;
  puVar3[9] = 1;
  puVar3[10] = 0;
  *puVar3 = &PTR_FUN_004075bc;
  FUN_00160da0(iVar2,puVar3);
  return iVar2;
}

