
/* WARNING: Enum "DT": Some values do not have unique names */
/* WARNING: Enum "ELFOSABI": Some values do not have unique names */
/* DWARF original prototype: void print_output_section(Mapfile * this, Output_section * os) */

void __thiscall gold::Mapfile::print_output_section(Mapfile *this,Output_section *os)

{
  _func_int_varargs *p_Var1;
  byte bVar2;
  int iVar3;
  size_t from;
  undefined4 extraout_var;
  int iVar5;
  FILE *__s;
  char sizebuf [50];
  uint64_t uVar4;
  
  if (this->printed_memory_map_header_ == false) {
    print_memory_map_header(this);
  }
  fprintf((FILE *)this->map_file_,"\n%s",os->name_);
  from = strlen(os->name_);
  advance_to_column(this,from,0x10);
  snprintf(sizebuf,0x32,"0x%llx",(os->super_Output_data).data_size_);
  if (((os->super_Output_data).field_0x20 & 1) == 0) {
                    /* WARNING: Subroutine does not return */
    do_gold_unreachable("../../gold/output.h",0xc5,"address");
  }
  if (parameters->target_ != (Target *)0x0) {
    iVar3 = parameters->target_->pti_->size;
    iVar5 = iVar3 + 3;
    if (-1 < iVar3) {
      iVar5 = iVar3;
    }
    fprintf((FILE *)this->map_file_,"0x%0*llx %10s",(ulong)(uint)(iVar5 >> 2),
            (os->super_Output_data).address_,sizebuf);
    p_Var1 = (os->super_Output_data)._vptr_Output_data[4];
    if (p_Var1 == Output_section::do_has_load_address) {
      bVar2 = (byte)os->field_0xc8 >> 7;
    }
    else {
      iVar3 = (*p_Var1)(os);
      bVar2 = (byte)iVar3;
    }
    if (bVar2 != 0) {
      p_Var1 = (os->super_Output_data)._vptr_Output_data[5];
      if (p_Var1 == Output_section::do_load_address) {
        if (-1 < (char)os->field_0xc8) {
                    /* WARNING: Subroutine does not return */
          do_gold_unreachable("../../gold/output.h",0x107b,"do_load_address");
        }
        uVar4 = os->load_address_;
      }
      else {
        iVar3 = (*p_Var1)(os);
        uVar4 = CONCAT44(extraout_var,iVar3);
      }
      if (parameters->target_ == (Target *)0x0) goto LAB_001c6f2d;
      iVar3 = parameters->target_->pti_->size;
      iVar5 = iVar3 + 3;
      if (-1 < iVar3) {
        iVar5 = iVar3;
      }
      fprintf((FILE *)this->map_file_," load address 0x%-*llx",(ulong)(uint)(iVar5 >> 2),uVar4);
    }
    __s = (FILE *)this->map_file_;
    if ((os->field_0xc8 & 0x20) != 0) {
      fwrite(" (before compression)",1,0x15,__s);
      __s = (FILE *)this->map_file_;
    }
    putc(10,__s);
    return;
  }
LAB_001c6f2d:
                    /* WARNING: Subroutine does not return */
  do_gold_unreachable("../../gold/parameters.h",0x69,"target");
}



void FUN_001c6d90(undefined8 *param_1,long *param_2)

{
  int iVar1;
  byte bVar2;
  size_t sVar3;
  long lVar4;
  int iVar5;
  FILE *__s;
  char acStack_58 [64];
  
  if (*(char *)((long)param_1 + 10) == '\0') {
    FUN_001c6840();
  }
  fprintf((FILE *)*param_1,"\n%s",param_2[5]);
  sVar3 = strlen((char *)param_2[5]);
  FUN_001c69a0(param_1,sVar3,0x10);
  snprintf(acStack_58,0x32,"0x%llx",param_2[2]);
  if ((*(byte *)(param_2 + 4) & 1) == 0) {
                    /* WARNING: Subroutine does not return */
    FUN_00199900("../../gold/output.h",0xc5,"address");
  }
  lVar4 = param_2[1];
  if (*(long *)(PTR_DAT_003f85c0 + 0x18) != 0) {
    iVar1 = **(int **)(*(long *)(PTR_DAT_003f85c0 + 0x18) + 8);
    iVar5 = iVar1 + 3;
    if (-1 < iVar1) {
      iVar5 = iVar1;
    }
    fprintf((FILE *)*param_1,"0x%0*llx %10s",(ulong)(uint)(iVar5 >> 2),lVar4,acStack_58);
    if (*(code **)(*param_2 + 0x20) == FUN_001bfec0) {
      bVar2 = *(byte *)(param_2 + 0x19) >> 7;
    }
    else {
      bVar2 = (**(code **)(*param_2 + 0x20))(param_2);
    }
    if (bVar2 != 0) {
      if (*(code **)(*param_2 + 0x28) == FUN_001c0060) {
        if (-1 < (char)param_2[0x19]) {
                    /* WARNING: Subroutine does not return */
          FUN_00199900("../../gold/output.h",0x107b,"do_load_address");
        }
        lVar4 = param_2[8];
      }
      else {
        lVar4 = (**(code **)(*param_2 + 0x28))(param_2);
      }
      if (*(long *)(PTR_DAT_003f85c0 + 0x18) == 0) goto LAB_001c6f2d;
      iVar1 = **(int **)(*(long *)(PTR_DAT_003f85c0 + 0x18) + 8);
      iVar5 = iVar1 + 3;
      if (-1 < iVar1) {
        iVar5 = iVar1;
      }
      fprintf((FILE *)*param_1," load address 0x%-*llx",(ulong)(uint)(iVar5 >> 2));
    }
    __s = (FILE *)*param_1;
    if ((*(byte *)(param_2 + 0x19) & 0x20) != 0) {
      fwrite(" (before compression)",1,0x15,__s);
      __s = (FILE *)*param_1;
    }
    putc(10,__s);
    return;
  }
LAB_001c6f2d:
                    /* WARNING: Subroutine does not return */
  FUN_00199900("../../gold/parameters.h",0x69,"target",lVar4);
}


PUSH R12
PUSH RBP
MOV RBP,RDI
PUSH RBX
MOV RBX,RSI
SUB RSP,0x40
CMP byte ptr [RDI + 0xa],0x0
JZ 0x001c6ee0
MOV RDX,qword ptr [RBX + 0x28]
MOV RDI,qword ptr [RBP]
XOR EAX,EAX
MOV R12,RSP
LEA RSI,[0x343faf]
CALL 0x001449f0
MOV RDI,qword ptr [RBX + 0x28]
CALL 0x00144490
MOV EDX,0x10
MOV RDI,RBP
MOV RSI,RAX
CALL 0x001c69a0
MOV RCX,qword ptr [RBX + 0x10]
XOR EAX,EAX
MOV ESI,0x32
LEA RDX,[0x343f99]
MOV RDI,R12
CALL 0x00144130
TEST byte ptr [RBX + 0x20],0x1
JZ 0x001c6f45
MOV RAX,qword ptr [0x003f85c0]
MOV RCX,qword ptr [RBX + 0x8]
MOV RAX,qword ptr [RAX + 0x18]
TEST RAX,RAX
JZ 0x001c6f2d
MOV RAX,qword ptr [RAX + 0x8]
MOV RDI,qword ptr [RBP]
MOV R8,R12
LEA RSI,[0x343fb3]
MOV EAX,dword ptr [RAX]
TEST EAX,EAX
LEA EDX,[RAX + 0x3]
CMOVNS EDX,EAX
XOR EAX,EAX
SAR EDX,0x2
CALL 0x001449f0
MOV RAX,qword ptr [RBX]
LEA RDX,[0x1bfec0]
MOV RAX,qword ptr [RAX + 0x20]
CMP RAX,RDX
JNZ 0x001c6f10
MOVZX EAX,byte ptr [RBX + 0xc8]
SHR AL,0x7
TEST AL,AL
JZ 0x001c6ec0
MOV RAX,qword ptr [RBX]
LEA RDX,[0x1c0060]
MOV RAX,qword ptr [RAX + 0x28]
CMP RAX,RDX
JNZ 0x001c6f20
CMP byte ptr [RBX + 0xc8],0x0
JNS 0x001c6f5d
MOV RCX,qword ptr [RBX + 0x40]
MOV RDX,qword ptr [0x003f85c0]
MOV RDX,qword ptr [RDX + 0x18]
TEST RDX,RDX
JZ 0x001c6f2d
MOV RDX,qword ptr [RDX + 0x8]
MOV RDI,qword ptr [RBP]
MOV ESI,dword ptr [RDX]
TEST ESI,ESI
LEA EDX,[RSI + 0x3]
CMOVNS EDX,ESI
LEA RSI,[0x343fc1]
XOR EAX,EAX
SAR EDX,0x2
CALL 0x001449f0
MOV RSI,qword ptr [RBP]
TEST byte ptr [RBX + 0xc8],0x20
JNZ 0x001c6ef0
MOV EDI,0xa
CALL 0x001446b0
ADD RSP,0x40
POP RBX
POP RBP
POP R12
RET
CALL 0x001c6840
JMP 0x001c6da8
MOV RCX,RSI
MOV EDX,0x15
MOV ESI,0x1
LEA RDI,[0x343fd8]
CALL 0x00144990
MOV RSI,qword ptr [RBP]
JMP 0x001c6ecd
MOV RDI,RBX
CALL RAX
JMP 0x001c6e5d
MOV RDI,RBX
CALL RAX
MOV RCX,RAX
JMP 0x001c6e89
LEA RDX,[0x3440de]
MOV ESI,0x69
LEA RDI,[0x333279]
CALL 0x00199900
LEA RDX,[0x3440e8]
MOV ESI,0xc5
LEA RDI,[0x338384]
CALL 0x00199900
LEA RDX,[0x3440b0]
MOV ESI,0x107b
LEA RDI,[0x338384]
CALL 0x00199900
(translation_unit "void FUN_001c6d90(undefined8 *param_1,long *param_2)\n\n{\n  int iVar1;\n  byte bVar2;\n  size_t sVar3;\n  long lVar4;\n  int iVar5;\n  FILE *__s;\n  char acStack_58 [64];\n  \n  if (*(char *)((long)param_1 + 10) == '\0') {\n    FUN_001c6840();\n  }\n  fprintf((FILE *)*param_1,"\n%s",param_2[5]);\n  sVar3 = strlen((char *)param_2[5]);\n  FUN_001c69a0(param_1,sVar3,0x10);\n  snprintf(acStack_58,0x32,"0x%llx",param_2[2]);\n  if ((*(byte *)(param_2 + 4) & 1) == 0) {\n                    /* WARNING: Subroutine does not return */\n    FUN_00199900("../../gold/output.h",0xc5,"address");\n  }\n  lVar4 = param_2[1];\n  if (*(long *)(PTR_DAT_003f85c0 + 0x18) != 0) {\n    iVar1 = **(int **)(*(long *)(PTR_DAT_003f85c0 + 0x18) + 8);\n    iVar5 = iVar1 + 3;\n    if (-1 < iVar1) {\n      iVar5 = iVar1;\n    }\n    fprintf((FILE *)*param_1,"0x%0*llx %10s",(ulong)(uint)(iVar5 >> 2),lVar4,acStack_58);\n    if (*(code **)(*param_2 + 0x20) == FUN_001bfec0) {\n      bVar2 = *(byte *)(param_2 + 0x19) >> 7;\n    }\n    else {\n      bVar2 = (**(code **)(*param_2 + 0x20))(param_2);\n    }\n    if (bVar2 != 0) {\n      if (*(code **)(*param_2 + 0x28) == FUN_001c0060) {\n        if (-1 < (char)param_2[0x19]) {\n                    /* WARNING: Subroutine does not return */\n          FUN_00199900("../../gold/output.h",0x107b,"do_load_address");\n        }\n        lVar4 = param_2[8];\n      }\n      else {\n        lVar4 = (**(code **)(*param_2 + 0x28))(param_2);\n      }\n      if (*(long *)(PTR_DAT_003f85c0 + 0x18) == 0) goto LAB_001c6f2d;\n      iVar1 = **(int **)(*(long *)(PTR_DAT_003f85c0 + 0x18) + 8);\n      iVar5 = iVar1 + 3;\n      if (-1 < iVar1) {\n        iVar5 = iVar1;\n      }\n      fprintf((FILE *)*param_1," load address 0x%-*llx",(ulong)(uint)(iVar5 >> 2));\n    }\n    __s = (FILE *)*param_1;\n    if ((*(byte *)(param_2 + 0x19) & 0x20) != 0) {\n      fwrite(" (before compression)",1,0x15,__s);\n      __s = (FILE *)*param_1;\n    }\n    putc(10,__s);\n    return;\n  }\nLAB_001c6f2d:\n                    /* WARNING: Subroutine does not return */\n  FUN_00199900("../../gold/parameters.h",0x69,"target",lVar4);\n}\n\n" (function_definition "void FUN_001c6d90(undefined8 *param_1,long *param_2)\n\n{\n  int iVar1;\n  byte bVar2;\n  size_t sVar3;\n  long lVar4;\n  int iVar5;\n  FILE *__s;\n  char acStack_58 [64];\n  \n  if (*(char *)((long)param_1 + 10) == '\0') {\n    FUN_001c6840();\n  }\n  fprintf((FILE *)*param_1,"\n%s",param_2[5]);\n  sVar3 = strlen((char *)param_2[5]);\n  FUN_001c69a0(param_1,sVar3,0x10);\n  snprintf(acStack_58,0x32,"0x%llx",param_2[2]);\n  if ((*(byte *)(param_2 + 4) & 1) == 0) {\n                    /* WARNING: Subroutine does not return */\n    FUN_00199900("../../gold/output.h",0xc5,"address");\n  }\n  lVar4 = param_2[1];\n  if (*(long *)(PTR_DAT_003f85c0 + 0x18) != 0) {\n    iVar1 = **(int **)(*(long *)(PTR_DAT_003f85c0 + 0x18) + 8);\n    iVar5 = iVar1 + 3;\n    if (-1 < iVar1) {\n      iVar5 = iVar1;\n    }\n    fprintf((FILE *)*param_1,"0x%0*llx %10s",(ulong)(uint)(iVar5 >> 2),lVar4,acStack_58);\n    if (*(code **)(*param_2 + 0x20) == FUN_001bfec0) {\n      bVar2 = *(byte *)(param_2 + 0x19) >> 7;\n    }\n    else {\n      bVar2 = (**(code **)(*param_2 + 0x20))(param_2);\n    }\n    if (bVar2 != 0) {\n      if (*(code **)(*param_2 + 0x28) == FUN_001c0060) {\n        if (-1 < (char)param_2[0x19]) {\n                    /* WARNING: Subroutine does not return */\n          FUN_00199900("../../gold/output.h",0x107b,"do_load_address");\n        }\n        lVar4 = param_2[8];\n      }\n      else {\n        lVar4 = (**(code **)(*param_2 + 0x28))(param_2);\n      }\n      if (*(long *)(PTR_DAT_003f85c0 + 0x18) == 0) goto LAB_001c6f2d;\n      iVar1 = **(int **)(*(long *)(PTR_DAT_003f85c0 + 0x18) + 8);\n      iVar5 = iVar1 + 3;\n      if (-1 < iVar1) {\n        iVar5 = iVar1;\n      }\n      fprintf((FILE *)*param_1," load address 0x%-*llx",(ulong)(uint)(iVar5 >> 2));\n    }\n    __s = (FILE *)*param_1;\n    if ((*(byte *)(param_2 + 0x19) & 0x20) != 0) {\n      fwrite(" (before compression)",1,0x15,__s);\n      __s = (FILE *)*param_1;\n    }\n    putc(10,__s);\n    return;\n  }\nLAB_001c6f2d:\n                    /* WARNING: Subroutine does not return */\n  FUN_00199900("../../gold/parameters.h",0x69,"target",lVar4);\n}" primitive_type (function_declarator "FUN_001c6d90(undefined8 *param_1,long *param_2)" identifier (parameter_list "(undefined8 *param_1,long *param_2)" ( (parameter_declaration "undefined8 *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "long *param_2" (sized_type_specifier "long" long) (pointer_declarator "*param_2" * identifier)) ))) (compound_statement "{\n  int iVar1;\n  byte bVar2;\n  size_t sVar3;\n  long lVar4;\n  int iVar5;\n  FILE *__s;\n  char acStack_58 [64];\n  \n  if (*(char *)((long)param_1 + 10) == '\0') {\n    FUN_001c6840();\n  }\n  fprintf((FILE *)*param_1,"\n%s",param_2[5]);\n  sVar3 = strlen((char *)param_2[5]);\n  FUN_001c69a0(param_1,sVar3,0x10);\n  snprintf(acStack_58,0x32,"0x%llx",param_2[2]);\n  if ((*(byte *)(param_2 + 4) & 1) == 0) {\n                    /* WARNING: Subroutine does not return */\n    FUN_00199900("../../gold/output.h",0xc5,"address");\n  }\n  lVar4 = param_2[1];\n  if (*(long *)(PTR_DAT_003f85c0 + 0x18) != 0) {\n    iVar1 = **(int **)(*(long *)(PTR_DAT_003f85c0 + 0x18) + 8);\n    iVar5 = iVar1 + 3;\n    if (-1 < iVar1) {\n      iVar5 = iVar1;\n    }\n    fprintf((FILE *)*param_1,"0x%0*llx %10s",(ulong)(uint)(iVar5 >> 2),lVar4,acStack_58);\n    if (*(code **)(*param_2 + 0x20) == FUN_001bfec0) {\n      bVar2 = *(byte *)(param_2 + 0x19) >> 7;\n    }\n    else {\n      bVar2 = (**(code **)(*param_2 + 0x20))(param_2);\n    }\n    if (bVar2 != 0) {\n      if (*(code **)(*param_2 + 0x28) == FUN_001c0060) {\n        if (-1 < (char)param_2[0x19]) {\n                    /* WARNING: Subroutine does not return */\n          FUN_00199900("../../gold/output.h",0x107b,"do_load_address");\n        }\n        lVar4 = param_2[8];\n      }\n      else {\n        lVar4 = (**(code **)(*param_2 + 0x28))(param_2);\n      }\n      if (*(long *)(PTR_DAT_003f85c0 + 0x18) == 0) goto LAB_001c6f2d;\n      iVar1 = **(int **)(*(long *)(PTR_DAT_003f85c0 + 0x18) + 8);\n      iVar5 = iVar1 + 3;\n      if (-1 < iVar1) {\n        iVar5 = iVar1;\n      }\n      fprintf((FILE *)*param_1," load address 0x%-*llx",(ulong)(uint)(iVar5 >> 2));\n    }\n    __s = (FILE *)*param_1;\n    if ((*(byte *)(param_2 + 0x19) & 0x20) != 0) {\n      fwrite(" (before compression)",1,0x15,__s);\n      __s = (FILE *)*param_1;\n    }\n    putc(10,__s);\n    return;\n  }\nLAB_001c6f2d:\n                    /* WARNING: Subroutine does not return */\n  FUN_00199900("../../gold/parameters.h",0x69,"target",lVar4);\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "byte bVar2;" type_identifier identifier ;) (declaration "size_t sVar3;" primitive_type identifier ;) (declaration "long lVar4;" (sized_type_specifier "long" long) identifier ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "FILE *__s;" type_identifier (pointer_declarator "*__s" * identifier) ;) (declaration "char acStack_58 [64];" primitive_type (array_declarator "acStack_58 [64]" identifier [ number_literal ]) ;) (if_statement "if (*(char *)((long)param_1 + 10) == '\0') {\n    FUN_001c6840();\n  }" if (parenthesized_expression "(*(char *)((long)param_1 + 10) == '\0')" ( (binary_expression "*(char *)((long)param_1 + 10) == '\0'" (pointer_expression "*(char *)((long)param_1 + 10)" * (cast_expression "(char *)((long)param_1 + 10)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_1 + 10)" ( (binary_expression "(long)param_1 + 10" (cast_expression "(long)param_1" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    FUN_001c6840();\n  }" { (expression_statement "FUN_001c6840();" (call_expression "FUN_001c6840()" identifier (argument_list "()" ( ))) ;) })) (expression_statement "fprintf((FILE *)*param_1,"\n%s",param_2[5]);" (call_expression "fprintf((FILE *)*param_1,"\n%s",param_2[5])" identifier (argument_list "((FILE *)*param_1,"\n%s",param_2[5])" ( (cast_expression "(FILE *)*param_1" ( (type_descriptor "FILE *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_1" * identifier)) , (string_literal ""\n%s"" " escape_sequence string_content ") , (subscript_expression "param_2[5]" identifier [ number_literal ]) ))) ;) (expression_statement "sVar3 = strlen((char *)param_2[5]);" (assignment_expression "sVar3 = strlen((char *)param_2[5])" identifier = (call_expression "strlen((char *)param_2[5])" identifier (argument_list "((char *)param_2[5])" ( (cast_expression "(char *)param_2[5]" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_2[5]" identifier [ number_literal ])) )))) ;) (expression_statement "FUN_001c69a0(param_1,sVar3,0x10);" (call_expression "FUN_001c69a0(param_1,sVar3,0x10)" identifier (argument_list "(param_1,sVar3,0x10)" ( identifier , identifier , number_literal ))) ;) (expression_statement "snprintf(acStack_58,0x32,"0x%llx",param_2[2]);" (call_expression "snprintf(acStack_58,0x32,"0x%llx",param_2[2])" identifier (argument_list "(acStack_58,0x32,"0x%llx",param_2[2])" ( identifier , number_literal , (string_literal ""0x%llx"" " string_content ") , (subscript_expression "param_2[2]" identifier [ number_literal ]) ))) ;) (if_statement "if ((*(byte *)(param_2 + 4) & 1) == 0) {\n                    /* WARNING: Subroutine does not return */\n    FUN_00199900("../../gold/output.h",0xc5,"address");\n  }" if (parenthesized_expression "((*(byte *)(param_2 + 4) & 1) == 0)" ( (binary_expression "(*(byte *)(param_2 + 4) & 1) == 0" (parenthesized_expression "(*(byte *)(param_2 + 4) & 1)" ( (binary_expression "*(byte *)(param_2 + 4) & 1" (pointer_expression "*(byte *)(param_2 + 4)" * (cast_expression "(byte *)(param_2 + 4)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 4)" ( (binary_expression "param_2 + 4" identifier + number_literal) )))) & number_literal) )) == number_literal) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    FUN_00199900("../../gold/output.h",0xc5,"address");\n  }" { comment (expression_statement "FUN_00199900("../../gold/output.h",0xc5,"address");" (call_expression "FUN_00199900("../../gold/output.h",0xc5,"address")" identifier (argument_list "("../../gold/output.h",0xc5,"address")" ( (string_literal ""../../gold/output.h"" " string_content ") , number_literal , (string_literal ""address"" " string_content ") ))) ;) })) (expression_statement "lVar4 = param_2[1];" (assignment_expression "lVar4 = param_2[1]" identifier = (subscript_expression "param_2[1]" identifier [ number_literal ])) ;) (if_statement "if (*(long *)(PTR_DAT_003f85c0 + 0x18) != 0) {\n    iVar1 = **(int **)(*(long *)(PTR_DAT_003f85c0 + 0x18) + 8);\n    iVar5 = iVar1 + 3;\n    if (-1 < iVar1) {\n      iVar5 = iVar1;\n    }\n    fprintf((FILE *)*param_1,"0x%0*llx %10s",(ulong)(uint)(iVar5 >> 2),lVar4,acStack_58);\n    if (*(code **)(*param_2 + 0x20) == FUN_001bfec0) {\n      bVar2 = *(byte *)(param_2 + 0x19) >> 7;\n    }\n    else {\n      bVar2 = (**(code **)(*param_2 + 0x20))(param_2);\n    }\n    if (bVar2 != 0) {\n      if (*(code **)(*param_2 + 0x28) == FUN_001c0060) {\n        if (-1 < (char)param_2[0x19]) {\n                    /* WARNING: Subroutine does not return */\n          FUN_00199900("../../gold/output.h",0x107b,"do_load_address");\n        }\n        lVar4 = param_2[8];\n      }\n      else {\n        lVar4 = (**(code **)(*param_2 + 0x28))(param_2);\n      }\n      if (*(long *)(PTR_DAT_003f85c0 + 0x18) == 0) goto LAB_001c6f2d;\n      iVar1 = **(int **)(*(long *)(PTR_DAT_003f85c0 + 0x18) + 8);\n      iVar5 = iVar1 + 3;\n      if (-1 < iVar1) {\n        iVar5 = iVar1;\n      }\n      fprintf((FILE *)*param_1," load address 0x%-*llx",(ulong)(uint)(iVar5 >> 2));\n    }\n    __s = (FILE *)*param_1;\n    if ((*(byte *)(param_2 + 0x19) & 0x20) != 0) {\n      fwrite(" (before compression)",1,0x15,__s);\n      __s = (FILE *)*param_1;\n    }\n    putc(10,__s);\n    return;\n  }" if (parenthesized_expression "(*(long *)(PTR_DAT_003f85c0 + 0x18) != 0)" ( (binary_expression "*(long *)(PTR_DAT_003f85c0 + 0x18) != 0" (pointer_expression "*(long *)(PTR_DAT_003f85c0 + 0x18)" * (cast_expression "(long *)(PTR_DAT_003f85c0 + 0x18)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_003f85c0 + 0x18)" ( (binary_expression "PTR_DAT_003f85c0 + 0x18" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n    iVar1 = **(int **)(*(long *)(PTR_DAT_003f85c0 + 0x18) + 8);\n    iVar5 = iVar1 + 3;\n    if (-1 < iVar1) {\n      iVar5 = iVar1;\n    }\n    fprintf((FILE *)*param_1,"0x%0*llx %10s",(ulong)(uint)(iVar5 >> 2),lVar4,acStack_58);\n    if (*(code **)(*param_2 + 0x20) == FUN_001bfec0) {\n      bVar2 = *(byte *)(param_2 + 0x19) >> 7;\n    }\n    else {\n      bVar2 = (**(code **)(*param_2 + 0x20))(param_2);\n    }\n    if (bVar2 != 0) {\n      if (*(code **)(*param_2 + 0x28) == FUN_001c0060) {\n        if (-1 < (char)param_2[0x19]) {\n                    /* WARNING: Subroutine does not return */\n          FUN_00199900("../../gold/output.h",0x107b,"do_load_address");\n        }\n        lVar4 = param_2[8];\n      }\n      else {\n        lVar4 = (**(code **)(*param_2 + 0x28))(param_2);\n      }\n      if (*(long *)(PTR_DAT_003f85c0 + 0x18) == 0) goto LAB_001c6f2d;\n      iVar1 = **(int **)(*(long *)(PTR_DAT_003f85c0 + 0x18) + 8);\n      iVar5 = iVar1 + 3;\n      if (-1 < iVar1) {\n        iVar5 = iVar1;\n      }\n      fprintf((FILE *)*param_1," load address 0x%-*llx",(ulong)(uint)(iVar5 >> 2));\n    }\n    __s = (FILE *)*param_1;\n    if ((*(byte *)(param_2 + 0x19) & 0x20) != 0) {\n      fwrite(" (before compression)",1,0x15,__s);\n      __s = (FILE *)*param_1;\n    }\n    putc(10,__s);\n    return;\n  }" { (expression_statement "iVar1 = **(int **)(*(long *)(PTR_DAT_003f85c0 + 0x18) + 8);" (assignment_expression "iVar1 = **(int **)(*(long *)(PTR_DAT_003f85c0 + 0x18) + 8)" identifier = (pointer_expression "**(int **)(*(long *)(PTR_DAT_003f85c0 + 0x18) + 8)" * (pointer_expression "*(int **)(*(long *)(PTR_DAT_003f85c0 + 0x18) + 8)" * (cast_expression "(int **)(*(long *)(PTR_DAT_003f85c0 + 0x18) + 8)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(long *)(PTR_DAT_003f85c0 + 0x18) + 8)" ( (binary_expression "*(long *)(PTR_DAT_003f85c0 + 0x18) + 8" (pointer_expression "*(long *)(PTR_DAT_003f85c0 + 0x18)" * (cast_expression "(long *)(PTR_DAT_003f85c0 + 0x18)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_003f85c0 + 0x18)" ( (binary_expression "PTR_DAT_003f85c0 + 0x18" identifier + number_literal) )))) + number_literal) )))))) ;) (expression_statement "iVar5 = iVar1 + 3;" (assignment_expression "iVar5 = iVar1 + 3" identifier = (binary_expression "iVar1 + 3" identifier + number_literal)) ;) (if_statement "if (-1 < iVar1) {\n      iVar5 = iVar1;\n    }" if (parenthesized_expression "(-1 < iVar1)" ( (binary_expression "-1 < iVar1" number_literal < identifier) )) (compound_statement "{\n      iVar5 = iVar1;\n    }" { (expression_statement "iVar5 = iVar1;" (assignment_expression "iVar5 = iVar1" identifier = identifier) ;) })) (expression_statement "fprintf((FILE *)*param_1,"0x%0*llx %10s",(ulong)(uint)(iVar5 >> 2),lVar4,acStack_58);" (call_expression "fprintf((FILE *)*param_1,"0x%0*llx %10s",(ulong)(uint)(iVar5 >> 2),lVar4,acStack_58)" identifier (argument_list "((FILE *)*param_1,"0x%0*llx %10s",(ulong)(uint)(iVar5 >> 2),lVar4,acStack_58)" ( (cast_expression "(FILE *)*param_1" ( (type_descriptor "FILE *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_1" * identifier)) , (string_literal ""0x%0*llx %10s"" " string_content ") , (call_expression "(ulong)(uint)(iVar5 >> 2)" (call_expression "(ulong)(uint)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(uint)" ( identifier ))) (argument_list "(iVar5 >> 2)" ( (binary_expression "iVar5 >> 2" identifier >> number_literal) ))) , identifier , identifier ))) ;) (if_statement "if (*(code **)(*param_2 + 0x20) == FUN_001bfec0) {\n      bVar2 = *(byte *)(param_2 + 0x19) >> 7;\n    }\n    else {\n      bVar2 = (**(code **)(*param_2 + 0x20))(param_2);\n    }" if (parenthesized_expression "(*(code **)(*param_2 + 0x20) == FUN_001bfec0)" ( (binary_expression "*(code **)(*param_2 + 0x20) == FUN_001bfec0" (pointer_expression "*(code **)(*param_2 + 0x20)" * (cast_expression "(code **)(*param_2 + 0x20)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_2 + 0x20)" ( (binary_expression "*param_2 + 0x20" (pointer_expression "*param_2" * identifier) + number_literal) )))) == identifier) )) (compound_statement "{\n      bVar2 = *(byte *)(param_2 + 0x19) >> 7;\n    }" { (expression_statement "bVar2 = *(byte *)(param_2 + 0x19) >> 7;" (assignment_expression "bVar2 = *(byte *)(param_2 + 0x19) >> 7" identifier = (binary_expression "*(byte *)(param_2 + 0x19) >> 7" (pointer_expression "*(byte *)(param_2 + 0x19)" * (cast_expression "(byte *)(param_2 + 0x19)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x19)" ( (binary_expression "param_2 + 0x19" identifier + number_literal) )))) >> number_literal)) ;) }) (else_clause "else {\n      bVar2 = (**(code **)(*param_2 + 0x20))(param_2);\n    }" else (compound_statement "{\n      bVar2 = (**(code **)(*param_2 + 0x20))(param_2);\n    }" { (expression_statement "bVar2 = (**(code **)(*param_2 + 0x20))(param_2);" (assignment_expression "bVar2 = (**(code **)(*param_2 + 0x20))(param_2)" identifier = (call_expression "(**(code **)(*param_2 + 0x20))(param_2)" (parenthesized_expression "(**(code **)(*param_2 + 0x20))" ( (pointer_expression "**(code **)(*param_2 + 0x20)" * (pointer_expression "*(code **)(*param_2 + 0x20)" * (cast_expression "(code **)(*param_2 + 0x20)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_2 + 0x20)" ( (binary_expression "*param_2 + 0x20" (pointer_expression "*param_2" * identifier) + number_literal) ))))) )) (argument_list "(param_2)" ( identifier )))) ;) }))) (if_statement "if (bVar2 != 0) {\n      if (*(code **)(*param_2 + 0x28) == FUN_001c0060) {\n        if (-1 < (char)param_2[0x19]) {\n                    /* WARNING: Subroutine does not return */\n          FUN_00199900("../../gold/output.h",0x107b,"do_load_address");\n        }\n        lVar4 = param_2[8];\n      }\n      else {\n        lVar4 = (**(code **)(*param_2 + 0x28))(param_2);\n      }\n      if (*(long *)(PTR_DAT_003f85c0 + 0x18) == 0) goto LAB_001c6f2d;\n      iVar1 = **(int **)(*(long *)(PTR_DAT_003f85c0 + 0x18) + 8);\n      iVar5 = iVar1 + 3;\n      if (-1 < iVar1) {\n        iVar5 = iVar1;\n      }\n      fprintf((FILE *)*param_1," load address 0x%-*llx",(ulong)(uint)(iVar5 >> 2));\n    }" if (parenthesized_expression "(bVar2 != 0)" ( (binary_expression "bVar2 != 0" identifier != number_literal) )) (compound_statement "{\n      if (*(code **)(*param_2 + 0x28) == FUN_001c0060) {\n        if (-1 < (char)param_2[0x19]) {\n                    /* WARNING: Subroutine does not return */\n          FUN_00199900("../../gold/output.h",0x107b,"do_load_address");\n        }\n        lVar4 = param_2[8];\n      }\n      else {\n        lVar4 = (**(code **)(*param_2 + 0x28))(param_2);\n      }\n      if (*(long *)(PTR_DAT_003f85c0 + 0x18) == 0) goto LAB_001c6f2d;\n      iVar1 = **(int **)(*(long *)(PTR_DAT_003f85c0 + 0x18) + 8);\n      iVar5 = iVar1 + 3;\n      if (-1 < iVar1) {\n        iVar5 = iVar1;\n      }\n      fprintf((FILE *)*param_1," load address 0x%-*llx",(ulong)(uint)(iVar5 >> 2));\n    }" { (if_statement "if (*(code **)(*param_2 + 0x28) == FUN_001c0060) {\n        if (-1 < (char)param_2[0x19]) {\n                    /* WARNING: Subroutine does not return */\n          FUN_00199900("../../gold/output.h",0x107b,"do_load_address");\n        }\n        lVar4 = param_2[8];\n      }\n      else {\n        lVar4 = (**(code **)(*param_2 + 0x28))(param_2);\n      }" if (parenthesized_expression "(*(code **)(*param_2 + 0x28) == FUN_001c0060)" ( (binary_expression "*(code **)(*param_2 + 0x28) == FUN_001c0060" (pointer_expression "*(code **)(*param_2 + 0x28)" * (cast_expression "(code **)(*param_2 + 0x28)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_2 + 0x28)" ( (binary_expression "*param_2 + 0x28" (pointer_expression "*param_2" * identifier) + number_literal) )))) == identifier) )) (compound_statement "{\n        if (-1 < (char)param_2[0x19]) {\n                    /* WARNING: Subroutine does not return */\n          FUN_00199900("../../gold/output.h",0x107b,"do_load_address");\n        }\n        lVar4 = param_2[8];\n      }" { (if_statement "if (-1 < (char)param_2[0x19]) {\n                    /* WARNING: Subroutine does not return */\n          FUN_00199900("../../gold/output.h",0x107b,"do_load_address");\n        }" if (parenthesized_expression "(-1 < (char)param_2[0x19])" ( (binary_expression "-1 < (char)param_2[0x19]" number_literal < (cast_expression "(char)param_2[0x19]" ( (type_descriptor "char" primitive_type) ) (subscript_expression "param_2[0x19]" identifier [ number_literal ]))) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n          FUN_00199900("../../gold/output.h",0x107b,"do_load_address");\n        }" { comment (expression_statement "FUN_00199900("../../gold/output.h",0x107b,"do_load_address");" (call_expression "FUN_00199900("../../gold/output.h",0x107b,"do_load_address")" identifier (argument_list "("../../gold/output.h",0x107b,"do_load_address")" ( (string_literal ""../../gold/output.h"" " string_content ") , number_literal , (string_literal ""do_load_address"" " string_content ") ))) ;) })) (expression_statement "lVar4 = param_2[8];" (assignment_expression "lVar4 = param_2[8]" identifier = (subscript_expression "param_2[8]" identifier [ number_literal ])) ;) }) (else_clause "else {\n        lVar4 = (**(code **)(*param_2 + 0x28))(param_2);\n      }" else (compound_statement "{\n        lVar4 = (**(code **)(*param_2 + 0x28))(param_2);\n      }" { (expression_statement "lVar4 = (**(code **)(*param_2 + 0x28))(param_2);" (assignment_expression "lVar4 = (**(code **)(*param_2 + 0x28))(param_2)" identifier = (call_expression "(**(code **)(*param_2 + 0x28))(param_2)" (parenthesized_expression "(**(code **)(*param_2 + 0x28))" ( (pointer_expression "**(code **)(*param_2 + 0x28)" * (pointer_expression "*(code **)(*param_2 + 0x28)" * (cast_expression "(code **)(*param_2 + 0x28)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_2 + 0x28)" ( (binary_expression "*param_2 + 0x28" (pointer_expression "*param_2" * identifier) + number_literal) ))))) )) (argument_list "(param_2)" ( identifier )))) ;) }))) (if_statement "if (*(long *)(PTR_DAT_003f85c0 + 0x18) == 0) goto LAB_001c6f2d;" if (parenthesized_expression "(*(long *)(PTR_DAT_003f85c0 + 0x18) == 0)" ( (binary_expression "*(long *)(PTR_DAT_003f85c0 + 0x18) == 0" (pointer_expression "*(long *)(PTR_DAT_003f85c0 + 0x18)" * (cast_expression "(long *)(PTR_DAT_003f85c0 + 0x18)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_003f85c0 + 0x18)" ( (binary_expression "PTR_DAT_003f85c0 + 0x18" identifier + number_literal) )))) == number_literal) )) (goto_statement "goto LAB_001c6f2d;" goto statement_identifier ;)) (expression_statement "iVar1 = **(int **)(*(long *)(PTR_DAT_003f85c0 + 0x18) + 8);" (assignment_expression "iVar1 = **(int **)(*(long *)(PTR_DAT_003f85c0 + 0x18) + 8)" identifier = (pointer_expression "**(int **)(*(long *)(PTR_DAT_003f85c0 + 0x18) + 8)" * (pointer_expression "*(int **)(*(long *)(PTR_DAT_003f85c0 + 0x18) + 8)" * (cast_expression "(int **)(*(long *)(PTR_DAT_003f85c0 + 0x18) + 8)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(long *)(PTR_DAT_003f85c0 + 0x18) + 8)" ( (binary_expression "*(long *)(PTR_DAT_003f85c0 + 0x18) + 8" (pointer_expression "*(long *)(PTR_DAT_003f85c0 + 0x18)" * (cast_expression "(long *)(PTR_DAT_003f85c0 + 0x18)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_003f85c0 + 0x18)" ( (binary_expression "PTR_DAT_003f85c0 + 0x18" identifier + number_literal) )))) + number_literal) )))))) ;) (expression_statement "iVar5 = iVar1 + 3;" (assignment_expression "iVar5 = iVar1 + 3" identifier = (binary_expression "iVar1 + 3" identifier + number_literal)) ;) (if_statement "if (-1 < iVar1) {\n        iVar5 = iVar1;\n      }" if (parenthesized_expression "(-1 < iVar1)" ( (binary_expression "-1 < iVar1" number_literal < identifier) )) (compound_statement "{\n        iVar5 = iVar1;\n      }" { (expression_statement "iVar5 = iVar1;" (assignment_expression "iVar5 = iVar1" identifier = identifier) ;) })) (expression_statement "fprintf((FILE *)*param_1," load address 0x%-*llx",(ulong)(uint)(iVar5 >> 2));" (call_expression "fprintf((FILE *)*param_1," load address 0x%-*llx",(ulong)(uint)(iVar5 >> 2))" identifier (argument_list "((FILE *)*param_1," load address 0x%-*llx",(ulong)(uint)(iVar5 >> 2))" ( (cast_expression "(FILE *)*param_1" ( (type_descriptor "FILE *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_1" * identifier)) , (string_literal "" load address 0x%-*llx"" " string_content ") , (call_expression "(ulong)(uint)(iVar5 >> 2)" (call_expression "(ulong)(uint)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(uint)" ( identifier ))) (argument_list "(iVar5 >> 2)" ( (binary_expression "iVar5 >> 2" identifier >> number_literal) ))) ))) ;) })) (expression_statement "__s = (FILE *)*param_1;" (assignment_expression "__s = (FILE *)*param_1" identifier = (cast_expression "(FILE *)*param_1" ( (type_descriptor "FILE *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_1" * identifier))) ;) (if_statement "if ((*(byte *)(param_2 + 0x19) & 0x20) != 0) {\n      fwrite(" (before compression)",1,0x15,__s);\n      __s = (FILE *)*param_1;\n    }" if (parenthesized_expression "((*(byte *)(param_2 + 0x19) & 0x20) != 0)" ( (binary_expression "(*(byte *)(param_2 + 0x19) & 0x20) != 0" (parenthesized_expression "(*(byte *)(param_2 + 0x19) & 0x20)" ( (binary_expression "*(byte *)(param_2 + 0x19) & 0x20" (pointer_expression "*(byte *)(param_2 + 0x19)" * (cast_expression "(byte *)(param_2 + 0x19)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x19)" ( (binary_expression "param_2 + 0x19" identifier + number_literal) )))) & number_literal) )) != number_literal) )) (compound_statement "{\n      fwrite(" (before compression)",1,0x15,__s);\n      __s = (FILE *)*param_1;\n    }" { (expression_statement "fwrite(" (before compression)",1,0x15,__s);" (call_expression "fwrite(" (before compression)",1,0x15,__s)" identifier (argument_list "(" (before compression)",1,0x15,__s)" ( (string_literal "" (before compression)"" " string_content ") , number_literal , number_literal , identifier ))) ;) (expression_statement "__s = (FILE *)*param_1;" (assignment_expression "__s = (FILE *)*param_1" identifier = (cast_expression "(FILE *)*param_1" ( (type_descriptor "FILE *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_1" * identifier))) ;) })) (expression_statement "putc(10,__s);" (call_expression "putc(10,__s)" identifier (argument_list "(10,__s)" ( number_literal , identifier ))) ;) (return_statement "return;" return ;) })) (labeled_statement "LAB_001c6f2d:\n                    /* WARNING: Subroutine does not return */\n  FUN_00199900("../../gold/parameters.h",0x69,"target",lVar4);" statement_identifier : comment (expression_statement "FUN_00199900("../../gold/parameters.h",0x69,"target",lVar4);" (call_expression "FUN_00199900("../../gold/parameters.h",0x69,"target",lVar4)" identifier (argument_list "("../../gold/parameters.h",0x69,"target",lVar4)" ( (string_literal ""../../gold/parameters.h"" " string_content ") , number_literal , (string_literal ""target"" " string_content ") , identifier ))) ;)) })))
(translation_unit "/* WARNING: Enum "DT": Some values do not have unique names */\n/* WARNING: Enum "ELFOSABI": Some values do not have unique names */\n/* DWARF original prototype: void print_output_section(Mapfile * this, Output_section * os) */\n\nvoid __thiscall gold::Mapfile::print_output_section(Mapfile *this,Output_section *os)\n\n{\n  _func_int_varargs *p_Var1;\n  byte bVar2;\n  int iVar3;\n  size_t from;\n  undefined4 extraout_var;\n  int iVar5;\n  FILE *__s;\n  char sizebuf [50];\n  uint64_t uVar4;\n  \n  if (this->printed_memory_map_header_ == false) {\n    print_memory_map_header(this);\n  }\n  fprintf((FILE *)this->map_file_,"\n%s",os->name_);\n  from = strlen(os->name_);\n  advance_to_column(this,from,0x10);\n  snprintf(sizebuf,0x32,"0x%llx",(os->super_Output_data).data_size_);\n  if (((os->super_Output_data).field_0x20 & 1) == 0) {\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable("../../gold/output.h",0xc5,"address");\n  }\n  if (parameters->target_ != (Target *)0x0) {\n    iVar3 = parameters->target_->pti_->size;\n    iVar5 = iVar3 + 3;\n    if (-1 < iVar3) {\n      iVar5 = iVar3;\n    }\n    fprintf((FILE *)this->map_file_,"0x%0*llx %10s",(ulong)(uint)(iVar5 >> 2),\n            (os->super_Output_data).address_,sizebuf);\n    p_Var1 = (os->super_Output_data)._vptr_Output_data[4];\n    if (p_Var1 == Output_section::do_has_load_address) {\n      bVar2 = (byte)os->field_0xc8 >> 7;\n    }\n    else {\n      iVar3 = (*p_Var1)(os);\n      bVar2 = (byte)iVar3;\n    }\n    if (bVar2 != 0) {\n      p_Var1 = (os->super_Output_data)._vptr_Output_data[5];\n      if (p_Var1 == Output_section::do_load_address) {\n        if (-1 < (char)os->field_0xc8) {\n                    /* WARNING: Subroutine does not return */\n          do_gold_unreachable("../../gold/output.h",0x107b,"do_load_address");\n        }\n        uVar4 = os->load_address_;\n      }\n      else {\n        iVar3 = (*p_Var1)(os);\n        uVar4 = CONCAT44(extraout_var,iVar3);\n      }\n      if (parameters->target_ == (Target *)0x0) goto LAB_001c6f2d;\n      iVar3 = parameters->target_->pti_->size;\n      iVar5 = iVar3 + 3;\n      if (-1 < iVar3) {\n        iVar5 = iVar3;\n      }\n      fprintf((FILE *)this->map_file_," load address 0x%-*llx",(ulong)(uint)(iVar5 >> 2),uVar4);\n    }\n    __s = (FILE *)this->map_file_;\n    if ((os->field_0xc8 & 0x20) != 0) {\n      fwrite(" (before compression)",1,0x15,__s);\n      __s = (FILE *)this->map_file_;\n    }\n    putc(10,__s);\n    return;\n  }\nLAB_001c6f2d:\n                    /* WARNING: Subroutine does not return */\n  do_gold_unreachable("../../gold/parameters.h",0x69,"target");\n}\n\n" comment comment comment (function_definition "void __thiscall gold::Mapfile::print_output_section(Mapfile *this,Output_section *os)\n\n{\n  _func_int_varargs *p_Var1;\n  byte bVar2;\n  int iVar3;\n  size_t from;\n  undefined4 extraout_var;\n  int iVar5;\n  FILE *__s;\n  char sizebuf [50];\n  uint64_t uVar4;\n  \n  if (this->printed_memory_map_header_ == false) {\n    print_memory_map_header(this);\n  }\n  fprintf((FILE *)this->map_file_,"\n%s",os->name_);\n  from = strlen(os->name_);\n  advance_to_column(this,from,0x10);\n  snprintf(sizebuf,0x32,"0x%llx",(os->super_Output_data).data_size_);\n  if (((os->super_Output_data).field_0x20 & 1) == 0) {\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable("../../gold/output.h",0xc5,"address");\n  }\n  if (parameters->target_ != (Target *)0x0) {\n    iVar3 = parameters->target_->pti_->size;\n    iVar5 = iVar3 + 3;\n    if (-1 < iVar3) {\n      iVar5 = iVar3;\n    }\n    fprintf((FILE *)this->map_file_,"0x%0*llx %10s",(ulong)(uint)(iVar5 >> 2),\n            (os->super_Output_data).address_,sizebuf);\n    p_Var1 = (os->super_Output_data)._vptr_Output_data[4];\n    if (p_Var1 == Output_section::do_has_load_address) {\n      bVar2 = (byte)os->field_0xc8 >> 7;\n    }\n    else {\n      iVar3 = (*p_Var1)(os);\n      bVar2 = (byte)iVar3;\n    }\n    if (bVar2 != 0) {\n      p_Var1 = (os->super_Output_data)._vptr_Output_data[5];\n      if (p_Var1 == Output_section::do_load_address) {\n        if (-1 < (char)os->field_0xc8) {\n                    /* WARNING: Subroutine does not return */\n          do_gold_unreachable("../../gold/output.h",0x107b,"do_load_address");\n        }\n        uVar4 = os->load_address_;\n      }\n      else {\n        iVar3 = (*p_Var1)(os);\n        uVar4 = CONCAT44(extraout_var,iVar3);\n      }\n      if (parameters->target_ == (Target *)0x0) goto LAB_001c6f2d;\n      iVar3 = parameters->target_->pti_->size;\n      iVar5 = iVar3 + 3;\n      if (-1 < iVar3) {\n        iVar5 = iVar3;\n      }\n      fprintf((FILE *)this->map_file_," load address 0x%-*llx",(ulong)(uint)(iVar5 >> 2),uVar4);\n    }\n    __s = (FILE *)this->map_file_;\n    if ((os->field_0xc8 & 0x20) != 0) {\n      fwrite(" (before compression)",1,0x15,__s);\n      __s = (FILE *)this->map_file_;\n    }\n    putc(10,__s);\n    return;\n  }\nLAB_001c6f2d:\n                    /* WARNING: Subroutine does not return */\n  do_gold_unreachable("../../gold/parameters.h",0x69,"target");\n}" primitive_type (ms_call_modifier "__thiscall" __thiscall) (ERROR "gold::Mapfile::" identifier : : identifier : :) (function_declarator "print_output_section(Mapfile *this,Output_section *os)" identifier (parameter_list "(Mapfile *this,Output_section *os)" ( (parameter_declaration "Mapfile *this" type_identifier (pointer_declarator "*this" * identifier)) , (parameter_declaration "Output_section *os" type_identifier (pointer_declarator "*os" * identifier)) ))) (compound_statement "{\n  _func_int_varargs *p_Var1;\n  byte bVar2;\n  int iVar3;\n  size_t from;\n  undefined4 extraout_var;\n  int iVar5;\n  FILE *__s;\n  char sizebuf [50];\n  uint64_t uVar4;\n  \n  if (this->printed_memory_map_header_ == false) {\n    print_memory_map_header(this);\n  }\n  fprintf((FILE *)this->map_file_,"\n%s",os->name_);\n  from = strlen(os->name_);\n  advance_to_column(this,from,0x10);\n  snprintf(sizebuf,0x32,"0x%llx",(os->super_Output_data).data_size_);\n  if (((os->super_Output_data).field_0x20 & 1) == 0) {\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable("../../gold/output.h",0xc5,"address");\n  }\n  if (parameters->target_ != (Target *)0x0) {\n    iVar3 = parameters->target_->pti_->size;\n    iVar5 = iVar3 + 3;\n    if (-1 < iVar3) {\n      iVar5 = iVar3;\n    }\n    fprintf((FILE *)this->map_file_,"0x%0*llx %10s",(ulong)(uint)(iVar5 >> 2),\n            (os->super_Output_data).address_,sizebuf);\n    p_Var1 = (os->super_Output_data)._vptr_Output_data[4];\n    if (p_Var1 == Output_section::do_has_load_address) {\n      bVar2 = (byte)os->field_0xc8 >> 7;\n    }\n    else {\n      iVar3 = (*p_Var1)(os);\n      bVar2 = (byte)iVar3;\n    }\n    if (bVar2 != 0) {\n      p_Var1 = (os->super_Output_data)._vptr_Output_data[5];\n      if (p_Var1 == Output_section::do_load_address) {\n        if (-1 < (char)os->field_0xc8) {\n                    /* WARNING: Subroutine does not return */\n          do_gold_unreachable("../../gold/output.h",0x107b,"do_load_address");\n        }\n        uVar4 = os->load_address_;\n      }\n      else {\n        iVar3 = (*p_Var1)(os);\n        uVar4 = CONCAT44(extraout_var,iVar3);\n      }\n      if (parameters->target_ == (Target *)0x0) goto LAB_001c6f2d;\n      iVar3 = parameters->target_->pti_->size;\n      iVar5 = iVar3 + 3;\n      if (-1 < iVar3) {\n        iVar5 = iVar3;\n      }\n      fprintf((FILE *)this->map_file_," load address 0x%-*llx",(ulong)(uint)(iVar5 >> 2),uVar4);\n    }\n    __s = (FILE *)this->map_file_;\n    if ((os->field_0xc8 & 0x20) != 0) {\n      fwrite(" (before compression)",1,0x15,__s);\n      __s = (FILE *)this->map_file_;\n    }\n    putc(10,__s);\n    return;\n  }\nLAB_001c6f2d:\n                    /* WARNING: Subroutine does not return */\n  do_gold_unreachable("../../gold/parameters.h",0x69,"target");\n}" { (declaration "_func_int_varargs *p_Var1;" type_identifier (pointer_declarator "*p_Var1" * identifier) ;) (declaration "byte bVar2;" type_identifier identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "size_t from;" primitive_type identifier ;) (declaration "undefined4 extraout_var;" type_identifier identifier ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "FILE *__s;" type_identifier (pointer_declarator "*__s" * identifier) ;) (declaration "char sizebuf [50];" primitive_type (array_declarator "sizebuf [50]" identifier [ number_literal ]) ;) (declaration "uint64_t uVar4;" primitive_type identifier ;) (if_statement "if (this->printed_memory_map_header_ == false) {\n    print_memory_map_header(this);\n  }" if (parenthesized_expression "(this->printed_memory_map_header_ == false)" ( (binary_expression "this->printed_memory_map_header_ == false" (field_expression "this->printed_memory_map_header_" identifier -> field_identifier) == false) )) (compound_statement "{\n    print_memory_map_header(this);\n  }" { (expression_statement "print_memory_map_header(this);" (call_expression "print_memory_map_header(this)" identifier (argument_list "(this)" ( identifier ))) ;) })) (expression_statement "fprintf((FILE *)this->map_file_,"\n%s",os->name_);" (call_expression "fprintf((FILE *)this->map_file_,"\n%s",os->name_)" identifier (argument_list "((FILE *)this->map_file_,"\n%s",os->name_)" ( (cast_expression "(FILE *)this->map_file_" ( (type_descriptor "FILE *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "this->map_file_" identifier -> field_identifier)) , (string_literal ""\n%s"" " escape_sequence string_content ") , (field_expression "os->name_" identifier -> field_identifier) ))) ;) (expression_statement "from = strlen(os->name_);" (assignment_expression "from = strlen(os->name_)" identifier = (call_expression "strlen(os->name_)" identifier (argument_list "(os->name_)" ( (field_expression "os->name_" identifier -> field_identifier) )))) ;) (expression_statement "advance_to_column(this,from,0x10);" (call_expression "advance_to_column(this,from,0x10)" identifier (argument_list "(this,from,0x10)" ( identifier , identifier , number_literal ))) ;) (expression_statement "snprintf(sizebuf,0x32,"0x%llx",(os->super_Output_data).data_size_);" (call_expression "snprintf(sizebuf,0x32,"0x%llx",(os->super_Output_data).data_size_)" identifier (argument_list "(sizebuf,0x32,"0x%llx",(os->super_Output_data).data_size_)" ( identifier , number_literal , (string_literal ""0x%llx"" " string_content ") , (field_expression "(os->super_Output_data).data_size_" (parenthesized_expression "(os->super_Output_data)" ( (field_expression "os->super_Output_data" identifier -> field_identifier) )) . field_identifier) ))) ;) (if_statement "if (((os->super_Output_data).field_0x20 & 1) == 0) {\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable("../../gold/output.h",0xc5,"address");\n  }" if (parenthesized_expression "(((os->super_Output_data).field_0x20 & 1) == 0)" ( (binary_expression "((os->super_Output_data).field_0x20 & 1) == 0" (parenthesized_expression "((os->super_Output_data).field_0x20 & 1)" ( (binary_expression "(os->super_Output_data).field_0x20 & 1" (field_expression "(os->super_Output_data).field_0x20" (parenthesized_expression "(os->super_Output_data)" ( (field_expression "os->super_Output_data" identifier -> field_identifier) )) . field_identifier) & number_literal) )) == number_literal) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable("../../gold/output.h",0xc5,"address");\n  }" { comment (expression_statement "do_gold_unreachable("../../gold/output.h",0xc5,"address");" (call_expression "do_gold_unreachable("../../gold/output.h",0xc5,"address")" identifier (argument_list "("../../gold/output.h",0xc5,"address")" ( (string_literal ""../../gold/output.h"" " string_content ") , number_literal , (string_literal ""address"" " string_content ") ))) ;) })) (if_statement "if (parameters->target_ != (Target *)0x0) {\n    iVar3 = parameters->target_->pti_->size;\n    iVar5 = iVar3 + 3;\n    if (-1 < iVar3) {\n      iVar5 = iVar3;\n    }\n    fprintf((FILE *)this->map_file_,"0x%0*llx %10s",(ulong)(uint)(iVar5 >> 2),\n            (os->super_Output_data).address_,sizebuf);\n    p_Var1 = (os->super_Output_data)._vptr_Output_data[4];\n    if (p_Var1 == Output_section::do_has_load_address) {\n      bVar2 = (byte)os->field_0xc8 >> 7;\n    }\n    else {\n      iVar3 = (*p_Var1)(os);\n      bVar2 = (byte)iVar3;\n    }\n    if (bVar2 != 0) {\n      p_Var1 = (os->super_Output_data)._vptr_Output_data[5];\n      if (p_Var1 == Output_section::do_load_address) {\n        if (-1 < (char)os->field_0xc8) {\n                    /* WARNING: Subroutine does not return */\n          do_gold_unreachable("../../gold/output.h",0x107b,"do_load_address");\n        }\n        uVar4 = os->load_address_;\n      }\n      else {\n        iVar3 = (*p_Var1)(os);\n        uVar4 = CONCAT44(extraout_var,iVar3);\n      }\n      if (parameters->target_ == (Target *)0x0) goto LAB_001c6f2d;\n      iVar3 = parameters->target_->pti_->size;\n      iVar5 = iVar3 + 3;\n      if (-1 < iVar3) {\n        iVar5 = iVar3;\n      }\n      fprintf((FILE *)this->map_file_," load address 0x%-*llx",(ulong)(uint)(iVar5 >> 2),uVar4);\n    }\n    __s = (FILE *)this->map_file_;\n    if ((os->field_0xc8 & 0x20) != 0) {\n      fwrite(" (before compression)",1,0x15,__s);\n      __s = (FILE *)this->map_file_;\n    }\n    putc(10,__s);\n    return;\n  }" if (parenthesized_expression "(parameters->target_ != (Target *)0x0)" ( (binary_expression "parameters->target_ != (Target *)0x0" (field_expression "parameters->target_" identifier -> field_identifier) != (cast_expression "(Target *)0x0" ( (type_descriptor "Target *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    iVar3 = parameters->target_->pti_->size;\n    iVar5 = iVar3 + 3;\n    if (-1 < iVar3) {\n      iVar5 = iVar3;\n    }\n    fprintf((FILE *)this->map_file_,"0x%0*llx %10s",(ulong)(uint)(iVar5 >> 2),\n            (os->super_Output_data).address_,sizebuf);\n    p_Var1 = (os->super_Output_data)._vptr_Output_data[4];\n    if (p_Var1 == Output_section::do_has_load_address) {\n      bVar2 = (byte)os->field_0xc8 >> 7;\n    }\n    else {\n      iVar3 = (*p_Var1)(os);\n      bVar2 = (byte)iVar3;\n    }\n    if (bVar2 != 0) {\n      p_Var1 = (os->super_Output_data)._vptr_Output_data[5];\n      if (p_Var1 == Output_section::do_load_address) {\n        if (-1 < (char)os->field_0xc8) {\n                    /* WARNING: Subroutine does not return */\n          do_gold_unreachable("../../gold/output.h",0x107b,"do_load_address");\n        }\n        uVar4 = os->load_address_;\n      }\n      else {\n        iVar3 = (*p_Var1)(os);\n        uVar4 = CONCAT44(extraout_var,iVar3);\n      }\n      if (parameters->target_ == (Target *)0x0) goto LAB_001c6f2d;\n      iVar3 = parameters->target_->pti_->size;\n      iVar5 = iVar3 + 3;\n      if (-1 < iVar3) {\n        iVar5 = iVar3;\n      }\n      fprintf((FILE *)this->map_file_," load address 0x%-*llx",(ulong)(uint)(iVar5 >> 2),uVar4);\n    }\n    __s = (FILE *)this->map_file_;\n    if ((os->field_0xc8 & 0x20) != 0) {\n      fwrite(" (before compression)",1,0x15,__s);\n      __s = (FILE *)this->map_file_;\n    }\n    putc(10,__s);\n    return;\n  }" { (expression_statement "iVar3 = parameters->target_->pti_->size;" (assignment_expression "iVar3 = parameters->target_->pti_->size" identifier = (field_expression "parameters->target_->pti_->size" (field_expression "parameters->target_->pti_" (field_expression "parameters->target_" identifier -> field_identifier) -> field_identifier) -> field_identifier)) ;) (expression_statement "iVar5 = iVar3 + 3;" (assignment_expression "iVar5 = iVar3 + 3" identifier = (binary_expression "iVar3 + 3" identifier + number_literal)) ;) (if_statement "if (-1 < iVar3) {\n      iVar5 = iVar3;\n    }" if (parenthesized_expression "(-1 < iVar3)" ( (binary_expression "-1 < iVar3" number_literal < identifier) )) (compound_statement "{\n      iVar5 = iVar3;\n    }" { (expression_statement "iVar5 = iVar3;" (assignment_expression "iVar5 = iVar3" identifier = identifier) ;) })) (expression_statement "fprintf((FILE *)this->map_file_,"0x%0*llx %10s",(ulong)(uint)(iVar5 >> 2),\n            (os->super_Output_data).address_,sizebuf);" (call_expression "fprintf((FILE *)this->map_file_,"0x%0*llx %10s",(ulong)(uint)(iVar5 >> 2),\n            (os->super_Output_data).address_,sizebuf)" identifier (argument_list "((FILE *)this->map_file_,"0x%0*llx %10s",(ulong)(uint)(iVar5 >> 2),\n            (os->super_Output_data).address_,sizebuf)" ( (cast_expression "(FILE *)this->map_file_" ( (type_descriptor "FILE *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "this->map_file_" identifier -> field_identifier)) , (string_literal ""0x%0*llx %10s"" " string_content ") , (call_expression "(ulong)(uint)(iVar5 >> 2)" (call_expression "(ulong)(uint)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(uint)" ( identifier ))) (argument_list "(iVar5 >> 2)" ( (binary_expression "iVar5 >> 2" identifier >> number_literal) ))) , (field_expression "(os->super_Output_data).address_" (parenthesized_expression "(os->super_Output_data)" ( (field_expression "os->super_Output_data" identifier -> field_identifier) )) . field_identifier) , identifier ))) ;) (expression_statement "p_Var1 = (os->super_Output_data)._vptr_Output_data[4];" (assignment_expression "p_Var1 = (os->super_Output_data)._vptr_Output_data[4]" identifier = (subscript_expression "(os->super_Output_data)._vptr_Output_data[4]" (field_expression "(os->super_Output_data)._vptr_Output_data" (parenthesized_expression "(os->super_Output_data)" ( (field_expression "os->super_Output_data" identifier -> field_identifier) )) . field_identifier) [ number_literal ])) ;) (if_statement "if (p_Var1 == Output_section::do_has_load_address) {\n      bVar2 = (byte)os->field_0xc8 >> 7;\n    }\n    else {\n      iVar3 = (*p_Var1)(os);\n      bVar2 = (byte)iVar3;\n    }" if (parenthesized_expression "(p_Var1 == Output_section::do_has_load_address)" ( (binary_expression "p_Var1 == Output_section" identifier == identifier) (ERROR "::do_has_load_address" : : identifier) )) (compound_statement "{\n      bVar2 = (byte)os->field_0xc8 >> 7;\n    }" { (expression_statement "bVar2 = (byte)os->field_0xc8 >> 7;" (assignment_expression "bVar2 = (byte)os->field_0xc8 >> 7" identifier = (binary_expression "(byte)os->field_0xc8 >> 7" (cast_expression "(byte)os->field_0xc8" ( (type_descriptor "byte" type_identifier) ) (field_expression "os->field_0xc8" identifier -> field_identifier)) >> number_literal)) ;) }) (else_clause "else {\n      iVar3 = (*p_Var1)(os);\n      bVar2 = (byte)iVar3;\n    }" else (compound_statement "{\n      iVar3 = (*p_Var1)(os);\n      bVar2 = (byte)iVar3;\n    }" { (expression_statement "iVar3 = (*p_Var1)(os);" (assignment_expression "iVar3 = (*p_Var1)(os)" identifier = (call_expression "(*p_Var1)(os)" (parenthesized_expression "(*p_Var1)" ( (pointer_expression "*p_Var1" * identifier) )) (argument_list "(os)" ( identifier )))) ;) (expression_statement "bVar2 = (byte)iVar3;" (assignment_expression "bVar2 = (byte)iVar3" identifier = (cast_expression "(byte)iVar3" ( (type_descriptor "byte" type_identifier) ) identifier)) ;) }))) (if_statement "if (bVar2 != 0) {\n      p_Var1 = (os->super_Output_data)._vptr_Output_data[5];\n      if (p_Var1 == Output_section::do_load_address) {\n        if (-1 < (char)os->field_0xc8) {\n                    /* WARNING: Subroutine does not return */\n          do_gold_unreachable("../../gold/output.h",0x107b,"do_load_address");\n        }\n        uVar4 = os->load_address_;\n      }\n      else {\n        iVar3 = (*p_Var1)(os);\n        uVar4 = CONCAT44(extraout_var,iVar3);\n      }\n      if (parameters->target_ == (Target *)0x0) goto LAB_001c6f2d;\n      iVar3 = parameters->target_->pti_->size;\n      iVar5 = iVar3 + 3;\n      if (-1 < iVar3) {\n        iVar5 = iVar3;\n      }\n      fprintf((FILE *)this->map_file_," load address 0x%-*llx",(ulong)(uint)(iVar5 >> 2),uVar4);\n    }" if (parenthesized_expression "(bVar2 != 0)" ( (binary_expression "bVar2 != 0" identifier != number_literal) )) (compound_statement "{\n      p_Var1 = (os->super_Output_data)._vptr_Output_data[5];\n      if (p_Var1 == Output_section::do_load_address) {\n        if (-1 < (char)os->field_0xc8) {\n                    /* WARNING: Subroutine does not return */\n          do_gold_unreachable("../../gold/output.h",0x107b,"do_load_address");\n        }\n        uVar4 = os->load_address_;\n      }\n      else {\n        iVar3 = (*p_Var1)(os);\n        uVar4 = CONCAT44(extraout_var,iVar3);\n      }\n      if (parameters->target_ == (Target *)0x0) goto LAB_001c6f2d;\n      iVar3 = parameters->target_->pti_->size;\n      iVar5 = iVar3 + 3;\n      if (-1 < iVar3) {\n        iVar5 = iVar3;\n      }\n      fprintf((FILE *)this->map_file_," load address 0x%-*llx",(ulong)(uint)(iVar5 >> 2),uVar4);\n    }" { (expression_statement "p_Var1 = (os->super_Output_data)._vptr_Output_data[5];" (assignment_expression "p_Var1 = (os->super_Output_data)._vptr_Output_data[5]" identifier = (subscript_expression "(os->super_Output_data)._vptr_Output_data[5]" (field_expression "(os->super_Output_data)._vptr_Output_data" (parenthesized_expression "(os->super_Output_data)" ( (field_expression "os->super_Output_data" identifier -> field_identifier) )) . field_identifier) [ number_literal ])) ;) (if_statement "if (p_Var1 == Output_section::do_load_address) {\n        if (-1 < (char)os->field_0xc8) {\n                    /* WARNING: Subroutine does not return */\n          do_gold_unreachable("../../gold/output.h",0x107b,"do_load_address");\n        }\n        uVar4 = os->load_address_;\n      }\n      else {\n        iVar3 = (*p_Var1)(os);\n        uVar4 = CONCAT44(extraout_var,iVar3);\n      }" if (parenthesized_expression "(p_Var1 == Output_section::do_load_address)" ( (binary_expression "p_Var1 == Output_section" identifier == identifier) (ERROR "::do_load_address" : : identifier) )) (compound_statement "{\n        if (-1 < (char)os->field_0xc8) {\n                    /* WARNING: Subroutine does not return */\n          do_gold_unreachable("../../gold/output.h",0x107b,"do_load_address");\n        }\n        uVar4 = os->load_address_;\n      }" { (if_statement "if (-1 < (char)os->field_0xc8) {\n                    /* WARNING: Subroutine does not return */\n          do_gold_unreachable("../../gold/output.h",0x107b,"do_load_address");\n        }" if (parenthesized_expression "(-1 < (char)os->field_0xc8)" ( (binary_expression "-1 < (char)os->field_0xc8" number_literal < (cast_expression "(char)os->field_0xc8" ( (type_descriptor "char" primitive_type) ) (field_expression "os->field_0xc8" identifier -> field_identifier))) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n          do_gold_unreachable("../../gold/output.h",0x107b,"do_load_address");\n        }" { comment (expression_statement "do_gold_unreachable("../../gold/output.h",0x107b,"do_load_address");" (call_expression "do_gold_unreachable("../../gold/output.h",0x107b,"do_load_address")" identifier (argument_list "("../../gold/output.h",0x107b,"do_load_address")" ( (string_literal ""../../gold/output.h"" " string_content ") , number_literal , (string_literal ""do_load_address"" " string_content ") ))) ;) })) (expression_statement "uVar4 = os->load_address_;" (assignment_expression "uVar4 = os->load_address_" identifier = (field_expression "os->load_address_" identifier -> field_identifier)) ;) }) (else_clause "else {\n        iVar3 = (*p_Var1)(os);\n        uVar4 = CONCAT44(extraout_var,iVar3);\n      }" else (compound_statement "{\n        iVar3 = (*p_Var1)(os);\n        uVar4 = CONCAT44(extraout_var,iVar3);\n      }" { (expression_statement "iVar3 = (*p_Var1)(os);" (assignment_expression "iVar3 = (*p_Var1)(os)" identifier = (call_expression "(*p_Var1)(os)" (parenthesized_expression "(*p_Var1)" ( (pointer_expression "*p_Var1" * identifier) )) (argument_list "(os)" ( identifier )))) ;) (expression_statement "uVar4 = CONCAT44(extraout_var,iVar3);" (assignment_expression "uVar4 = CONCAT44(extraout_var,iVar3)" identifier = (call_expression "CONCAT44(extraout_var,iVar3)" identifier (argument_list "(extraout_var,iVar3)" ( identifier , identifier )))) ;) }))) (if_statement "if (parameters->target_ == (Target *)0x0) goto LAB_001c6f2d;" if (parenthesized_expression "(parameters->target_ == (Target *)0x0)" ( (binary_expression "parameters->target_ == (Target *)0x0" (field_expression "parameters->target_" identifier -> field_identifier) == (cast_expression "(Target *)0x0" ( (type_descriptor "Target *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_001c6f2d;" goto statement_identifier ;)) (expression_statement "iVar3 = parameters->target_->pti_->size;" (assignment_expression "iVar3 = parameters->target_->pti_->size" identifier = (field_expression "parameters->target_->pti_->size" (field_expression "parameters->target_->pti_" (field_expression "parameters->target_" identifier -> field_identifier) -> field_identifier) -> field_identifier)) ;) (expression_statement "iVar5 = iVar3 + 3;" (assignment_expression "iVar5 = iVar3 + 3" identifier = (binary_expression "iVar3 + 3" identifier + number_literal)) ;) (if_statement "if (-1 < iVar3) {\n        iVar5 = iVar3;\n      }" if (parenthesized_expression "(-1 < iVar3)" ( (binary_expression "-1 < iVar3" number_literal < identifier) )) (compound_statement "{\n        iVar5 = iVar3;\n      }" { (expression_statement "iVar5 = iVar3;" (assignment_expression "iVar5 = iVar3" identifier = identifier) ;) })) (expression_statement "fprintf((FILE *)this->map_file_," load address 0x%-*llx",(ulong)(uint)(iVar5 >> 2),uVar4);" (call_expression "fprintf((FILE *)this->map_file_," load address 0x%-*llx",(ulong)(uint)(iVar5 >> 2),uVar4)" identifier (argument_list "((FILE *)this->map_file_," load address 0x%-*llx",(ulong)(uint)(iVar5 >> 2),uVar4)" ( (cast_expression "(FILE *)this->map_file_" ( (type_descriptor "FILE *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "this->map_file_" identifier -> field_identifier)) , (string_literal "" load address 0x%-*llx"" " string_content ") , (call_expression "(ulong)(uint)(iVar5 >> 2)" (call_expression "(ulong)(uint)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(uint)" ( identifier ))) (argument_list "(iVar5 >> 2)" ( (binary_expression "iVar5 >> 2" identifier >> number_literal) ))) , identifier ))) ;) })) (expression_statement "__s = (FILE *)this->map_file_;" (assignment_expression "__s = (FILE *)this->map_file_" identifier = (cast_expression "(FILE *)this->map_file_" ( (type_descriptor "FILE *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "this->map_file_" identifier -> field_identifier))) ;) (if_statement "if ((os->field_0xc8 & 0x20) != 0) {\n      fwrite(" (before compression)",1,0x15,__s);\n      __s = (FILE *)this->map_file_;\n    }" if (parenthesized_expression "((os->field_0xc8 & 0x20) != 0)" ( (binary_expression "(os->field_0xc8 & 0x20) != 0" (parenthesized_expression "(os->field_0xc8 & 0x20)" ( (binary_expression "os->field_0xc8 & 0x20" (field_expression "os->field_0xc8" identifier -> field_identifier) & number_literal) )) != number_literal) )) (compound_statement "{\n      fwrite(" (before compression)",1,0x15,__s);\n      __s = (FILE *)this->map_file_;\n    }" { (expression_statement "fwrite(" (before compression)",1,0x15,__s);" (call_expression "fwrite(" (before compression)",1,0x15,__s)" identifier (argument_list "(" (before compression)",1,0x15,__s)" ( (string_literal "" (before compression)"" " string_content ") , number_literal , number_literal , identifier ))) ;) (expression_statement "__s = (FILE *)this->map_file_;" (assignment_expression "__s = (FILE *)this->map_file_" identifier = (cast_expression "(FILE *)this->map_file_" ( (type_descriptor "FILE *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "this->map_file_" identifier -> field_identifier))) ;) })) (expression_statement "putc(10,__s);" (call_expression "putc(10,__s)" identifier (argument_list "(10,__s)" ( number_literal , identifier ))) ;) (return_statement "return;" return ;) })) (labeled_statement "LAB_001c6f2d:\n                    /* WARNING: Subroutine does not return */\n  do_gold_unreachable("../../gold/parameters.h",0x69,"target");" statement_identifier : comment (expression_statement "do_gold_unreachable("../../gold/parameters.h",0x69,"target");" (call_expression "do_gold_unreachable("../../gold/parameters.h",0x69,"target")" identifier (argument_list "("../../gold/parameters.h",0x69,"target")" ( (string_literal ""../../gold/parameters.h"" " string_content ") , number_literal , (string_literal ""target"" " string_content ") ))) ;)) })))
(translation_unit "void FUN_001c6d90(undefined8 *param_1,long *param_2)\n\n{\n  int iVar1;\n  byte bVar2;\n  size_t sVar3;\n  long lVar4;\n  int iVar5;\n  FILE *__s;\n  char acStack_58 [64];\n  \n  if (*(char *)((long)param_1 + 10) == '\0') {\n    FUN_001c6840();\n  }\n  fprintf((FILE *)*param_1,"\n%s",param_2[5]);\n  sVar3 = strlen((char *)param_2[5]);\n  FUN_001c69a0(param_1,sVar3,0x10);\n  snprintf(acStack_58,0x32,"0x%llx",param_2[2]);\n  if ((*(byte *)(param_2 + 4) & 1) == 0) {\n                    \n    FUN_00199900("../../gold/output.h",0xc5,"address");\n  }\n  lVar4 = param_2[1];\n  if (*(long *)(PTR_DAT_003f85c0 + 0x18) != 0) {\n    iVar1 = **(int **)(*(long *)(PTR_DAT_003f85c0 + 0x18) + 8);\n    iVar5 = iVar1 + 3;\n    if (-1 < iVar1) {\n      iVar5 = iVar1;\n    }\n    fprintf((FILE *)*param_1,"0x%0*llx %10s",(ulong)(uint)(iVar5 >> 2),lVar4,acStack_58);\n    if (*(code **)(*param_2 + 0x20) == FUN_001bfec0) {\n      bVar2 = *(byte *)(param_2 + 0x19) >> 7;\n    }\n    else {\n      bVar2 = (**(code **)(*param_2 + 0x20))(param_2);\n    }\n    if (bVar2 != 0) {\n      if (*(code **)(*param_2 + 0x28) == FUN_001c0060) {\n        if (-1 < (char)param_2[0x19]) {\n                    \n          FUN_00199900("../../gold/output.h",0x107b,"do_load_address");\n        }\n        lVar4 = param_2[8];\n      }\n      else {\n        lVar4 = (**(code **)(*param_2 + 0x28))(param_2);\n      }\n      if (*(long *)(PTR_DAT_003f85c0 + 0x18) == 0) goto LAB_001c6f2d;\n      iVar1 = **(int **)(*(long *)(PTR_DAT_003f85c0 + 0x18) + 8);\n      iVar5 = iVar1 + 3;\n      if (-1 < iVar1) {\n        iVar5 = iVar1;\n      }\n      fprintf((FILE *)*param_1," load address 0x%-*llx",(ulong)(uint)(iVar5 >> 2));\n    }\n    __s = (FILE *)*param_1;\n    if ((*(byte *)(param_2 + 0x19) & 0x20) != 0) {\n      fwrite(" (before compression)",1,0x15,__s);\n      __s = (FILE *)*param_1;\n    }\n    putc(10,__s);\n    return;\n  }\nLAB_001c6f2d:\n                    \n  FUN_00199900("../../gold/parameters.h",0x69,"target",lVar4);\n}\n\n" (function_definition "void FUN_001c6d90(undefined8 *param_1,long *param_2)\n\n{\n  int iVar1;\n  byte bVar2;\n  size_t sVar3;\n  long lVar4;\n  int iVar5;\n  FILE *__s;\n  char acStack_58 [64];\n  \n  if (*(char *)((long)param_1 + 10) == '\0') {\n    FUN_001c6840();\n  }\n  fprintf((FILE *)*param_1,"\n%s",param_2[5]);\n  sVar3 = strlen((char *)param_2[5]);\n  FUN_001c69a0(param_1,sVar3,0x10);\n  snprintf(acStack_58,0x32,"0x%llx",param_2[2]);\n  if ((*(byte *)(param_2 + 4) & 1) == 0) {\n                    \n    FUN_00199900("../../gold/output.h",0xc5,"address");\n  }\n  lVar4 = param_2[1];\n  if (*(long *)(PTR_DAT_003f85c0 + 0x18) != 0) {\n    iVar1 = **(int **)(*(long *)(PTR_DAT_003f85c0 + 0x18) + 8);\n    iVar5 = iVar1 + 3;\n    if (-1 < iVar1) {\n      iVar5 = iVar1;\n    }\n    fprintf((FILE *)*param_1,"0x%0*llx %10s",(ulong)(uint)(iVar5 >> 2),lVar4,acStack_58);\n    if (*(code **)(*param_2 + 0x20) == FUN_001bfec0) {\n      bVar2 = *(byte *)(param_2 + 0x19) >> 7;\n    }\n    else {\n      bVar2 = (**(code **)(*param_2 + 0x20))(param_2);\n    }\n    if (bVar2 != 0) {\n      if (*(code **)(*param_2 + 0x28) == FUN_001c0060) {\n        if (-1 < (char)param_2[0x19]) {\n                    \n          FUN_00199900("../../gold/output.h",0x107b,"do_load_address");\n        }\n        lVar4 = param_2[8];\n      }\n      else {\n        lVar4 = (**(code **)(*param_2 + 0x28))(param_2);\n      }\n      if (*(long *)(PTR_DAT_003f85c0 + 0x18) == 0) goto LAB_001c6f2d;\n      iVar1 = **(int **)(*(long *)(PTR_DAT_003f85c0 + 0x18) + 8);\n      iVar5 = iVar1 + 3;\n      if (-1 < iVar1) {\n        iVar5 = iVar1;\n      }\n      fprintf((FILE *)*param_1," load address 0x%-*llx",(ulong)(uint)(iVar5 >> 2));\n    }\n    __s = (FILE *)*param_1;\n    if ((*(byte *)(param_2 + 0x19) & 0x20) != 0) {\n      fwrite(" (before compression)",1,0x15,__s);\n      __s = (FILE *)*param_1;\n    }\n    putc(10,__s);\n    return;\n  }\nLAB_001c6f2d:\n                    \n  FUN_00199900("../../gold/parameters.h",0x69,"target",lVar4);\n}" primitive_type (function_declarator "FUN_001c6d90(undefined8 *param_1,long *param_2)" identifier (parameter_list "(undefined8 *param_1,long *param_2)" ( (parameter_declaration "undefined8 *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "long *param_2" (sized_type_specifier "long" long) (pointer_declarator "*param_2" * identifier)) ))) (compound_statement "{\n  int iVar1;\n  byte bVar2;\n  size_t sVar3;\n  long lVar4;\n  int iVar5;\n  FILE *__s;\n  char acStack_58 [64];\n  \n  if (*(char *)((long)param_1 + 10) == '\0') {\n    FUN_001c6840();\n  }\n  fprintf((FILE *)*param_1,"\n%s",param_2[5]);\n  sVar3 = strlen((char *)param_2[5]);\n  FUN_001c69a0(param_1,sVar3,0x10);\n  snprintf(acStack_58,0x32,"0x%llx",param_2[2]);\n  if ((*(byte *)(param_2 + 4) & 1) == 0) {\n                    \n    FUN_00199900("../../gold/output.h",0xc5,"address");\n  }\n  lVar4 = param_2[1];\n  if (*(long *)(PTR_DAT_003f85c0 + 0x18) != 0) {\n    iVar1 = **(int **)(*(long *)(PTR_DAT_003f85c0 + 0x18) + 8);\n    iVar5 = iVar1 + 3;\n    if (-1 < iVar1) {\n      iVar5 = iVar1;\n    }\n    fprintf((FILE *)*param_1,"0x%0*llx %10s",(ulong)(uint)(iVar5 >> 2),lVar4,acStack_58);\n    if (*(code **)(*param_2 + 0x20) == FUN_001bfec0) {\n      bVar2 = *(byte *)(param_2 + 0x19) >> 7;\n    }\n    else {\n      bVar2 = (**(code **)(*param_2 + 0x20))(param_2);\n    }\n    if (bVar2 != 0) {\n      if (*(code **)(*param_2 + 0x28) == FUN_001c0060) {\n        if (-1 < (char)param_2[0x19]) {\n                    \n          FUN_00199900("../../gold/output.h",0x107b,"do_load_address");\n        }\n        lVar4 = param_2[8];\n      }\n      else {\n        lVar4 = (**(code **)(*param_2 + 0x28))(param_2);\n      }\n      if (*(long *)(PTR_DAT_003f85c0 + 0x18) == 0) goto LAB_001c6f2d;\n      iVar1 = **(int **)(*(long *)(PTR_DAT_003f85c0 + 0x18) + 8);\n      iVar5 = iVar1 + 3;\n      if (-1 < iVar1) {\n        iVar5 = iVar1;\n      }\n      fprintf((FILE *)*param_1," load address 0x%-*llx",(ulong)(uint)(iVar5 >> 2));\n    }\n    __s = (FILE *)*param_1;\n    if ((*(byte *)(param_2 + 0x19) & 0x20) != 0) {\n      fwrite(" (before compression)",1,0x15,__s);\n      __s = (FILE *)*param_1;\n    }\n    putc(10,__s);\n    return;\n  }\nLAB_001c6f2d:\n                    \n  FUN_00199900("../../gold/parameters.h",0x69,"target",lVar4);\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "byte bVar2;" type_identifier identifier ;) (declaration "size_t sVar3;" primitive_type identifier ;) (declaration "long lVar4;" (sized_type_specifier "long" long) identifier ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "FILE *__s;" type_identifier (pointer_declarator "*__s" * identifier) ;) (declaration "char acStack_58 [64];" primitive_type (array_declarator "acStack_58 [64]" identifier [ number_literal ]) ;) (if_statement "if (*(char *)((long)param_1 + 10) == '\0') {\n    FUN_001c6840();\n  }" if (parenthesized_expression "(*(char *)((long)param_1 + 10) == '\0')" ( (binary_expression "*(char *)((long)param_1 + 10) == '\0'" (pointer_expression "*(char *)((long)param_1 + 10)" * (cast_expression "(char *)((long)param_1 + 10)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_1 + 10)" ( (binary_expression "(long)param_1 + 10" (cast_expression "(long)param_1" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    FUN_001c6840();\n  }" { (expression_statement "FUN_001c6840();" (call_expression "FUN_001c6840()" identifier (argument_list "()" ( ))) ;) })) (expression_statement "fprintf((FILE *)*param_1,"\n%s",param_2[5]);" (call_expression "fprintf((FILE *)*param_1,"\n%s",param_2[5])" identifier (argument_list "((FILE *)*param_1,"\n%s",param_2[5])" ( (cast_expression "(FILE *)*param_1" ( (type_descriptor "FILE *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_1" * identifier)) , (string_literal ""\n%s"" " escape_sequence string_content ") , (subscript_expression "param_2[5]" identifier [ number_literal ]) ))) ;) (expression_statement "sVar3 = strlen((char *)param_2[5]);" (assignment_expression "sVar3 = strlen((char *)param_2[5])" identifier = (call_expression "strlen((char *)param_2[5])" identifier (argument_list "((char *)param_2[5])" ( (cast_expression "(char *)param_2[5]" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_2[5]" identifier [ number_literal ])) )))) ;) (expression_statement "FUN_001c69a0(param_1,sVar3,0x10);" (call_expression "FUN_001c69a0(param_1,sVar3,0x10)" identifier (argument_list "(param_1,sVar3,0x10)" ( identifier , identifier , number_literal ))) ;) (expression_statement "snprintf(acStack_58,0x32,"0x%llx",param_2[2]);" (call_expression "snprintf(acStack_58,0x32,"0x%llx",param_2[2])" identifier (argument_list "(acStack_58,0x32,"0x%llx",param_2[2])" ( identifier , number_literal , (string_literal ""0x%llx"" " string_content ") , (subscript_expression "param_2[2]" identifier [ number_literal ]) ))) ;) (if_statement "if ((*(byte *)(param_2 + 4) & 1) == 0) {\n                    \n    FUN_00199900("../../gold/output.h",0xc5,"address");\n  }" if (parenthesized_expression "((*(byte *)(param_2 + 4) & 1) == 0)" ( (binary_expression "(*(byte *)(param_2 + 4) & 1) == 0" (parenthesized_expression "(*(byte *)(param_2 + 4) & 1)" ( (binary_expression "*(byte *)(param_2 + 4) & 1" (pointer_expression "*(byte *)(param_2 + 4)" * (cast_expression "(byte *)(param_2 + 4)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 4)" ( (binary_expression "param_2 + 4" identifier + number_literal) )))) & number_literal) )) == number_literal) )) (compound_statement "{\n                    \n    FUN_00199900("../../gold/output.h",0xc5,"address");\n  }" { (expression_statement "FUN_00199900("../../gold/output.h",0xc5,"address");" (call_expression "FUN_00199900("../../gold/output.h",0xc5,"address")" identifier (argument_list "("../../gold/output.h",0xc5,"address")" ( (string_literal ""../../gold/output.h"" " string_content ") , number_literal , (string_literal ""address"" " string_content ") ))) ;) })) (expression_statement "lVar4 = param_2[1];" (assignment_expression "lVar4 = param_2[1]" identifier = (subscript_expression "param_2[1]" identifier [ number_literal ])) ;) (if_statement "if (*(long *)(PTR_DAT_003f85c0 + 0x18) != 0) {\n    iVar1 = **(int **)(*(long *)(PTR_DAT_003f85c0 + 0x18) + 8);\n    iVar5 = iVar1 + 3;\n    if (-1 < iVar1) {\n      iVar5 = iVar1;\n    }\n    fprintf((FILE *)*param_1,"0x%0*llx %10s",(ulong)(uint)(iVar5 >> 2),lVar4,acStack_58);\n    if (*(code **)(*param_2 + 0x20) == FUN_001bfec0) {\n      bVar2 = *(byte *)(param_2 + 0x19) >> 7;\n    }\n    else {\n      bVar2 = (**(code **)(*param_2 + 0x20))(param_2);\n    }\n    if (bVar2 != 0) {\n      if (*(code **)(*param_2 + 0x28) == FUN_001c0060) {\n        if (-1 < (char)param_2[0x19]) {\n                    \n          FUN_00199900("../../gold/output.h",0x107b,"do_load_address");\n        }\n        lVar4 = param_2[8];\n      }\n      else {\n        lVar4 = (**(code **)(*param_2 + 0x28))(param_2);\n      }\n      if (*(long *)(PTR_DAT_003f85c0 + 0x18) == 0) goto LAB_001c6f2d;\n      iVar1 = **(int **)(*(long *)(PTR_DAT_003f85c0 + 0x18) + 8);\n      iVar5 = iVar1 + 3;\n      if (-1 < iVar1) {\n        iVar5 = iVar1;\n      }\n      fprintf((FILE *)*param_1," load address 0x%-*llx",(ulong)(uint)(iVar5 >> 2));\n    }\n    __s = (FILE *)*param_1;\n    if ((*(byte *)(param_2 + 0x19) & 0x20) != 0) {\n      fwrite(" (before compression)",1,0x15,__s);\n      __s = (FILE *)*param_1;\n    }\n    putc(10,__s);\n    return;\n  }" if (parenthesized_expression "(*(long *)(PTR_DAT_003f85c0 + 0x18) != 0)" ( (binary_expression "*(long *)(PTR_DAT_003f85c0 + 0x18) != 0" (pointer_expression "*(long *)(PTR_DAT_003f85c0 + 0x18)" * (cast_expression "(long *)(PTR_DAT_003f85c0 + 0x18)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_003f85c0 + 0x18)" ( (binary_expression "PTR_DAT_003f85c0 + 0x18" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n    iVar1 = **(int **)(*(long *)(PTR_DAT_003f85c0 + 0x18) + 8);\n    iVar5 = iVar1 + 3;\n    if (-1 < iVar1) {\n      iVar5 = iVar1;\n    }\n    fprintf((FILE *)*param_1,"0x%0*llx %10s",(ulong)(uint)(iVar5 >> 2),lVar4,acStack_58);\n    if (*(code **)(*param_2 + 0x20) == FUN_001bfec0) {\n      bVar2 = *(byte *)(param_2 + 0x19) >> 7;\n    }\n    else {\n      bVar2 = (**(code **)(*param_2 + 0x20))(param_2);\n    }\n    if (bVar2 != 0) {\n      if (*(code **)(*param_2 + 0x28) == FUN_001c0060) {\n        if (-1 < (char)param_2[0x19]) {\n                    \n          FUN_00199900("../../gold/output.h",0x107b,"do_load_address");\n        }\n        lVar4 = param_2[8];\n      }\n      else {\n        lVar4 = (**(code **)(*param_2 + 0x28))(param_2);\n      }\n      if (*(long *)(PTR_DAT_003f85c0 + 0x18) == 0) goto LAB_001c6f2d;\n      iVar1 = **(int **)(*(long *)(PTR_DAT_003f85c0 + 0x18) + 8);\n      iVar5 = iVar1 + 3;\n      if (-1 < iVar1) {\n        iVar5 = iVar1;\n      }\n      fprintf((FILE *)*param_1," load address 0x%-*llx",(ulong)(uint)(iVar5 >> 2));\n    }\n    __s = (FILE *)*param_1;\n    if ((*(byte *)(param_2 + 0x19) & 0x20) != 0) {\n      fwrite(" (before compression)",1,0x15,__s);\n      __s = (FILE *)*param_1;\n    }\n    putc(10,__s);\n    return;\n  }" { (expression_statement "iVar1 = **(int **)(*(long *)(PTR_DAT_003f85c0 + 0x18) + 8);" (assignment_expression "iVar1 = **(int **)(*(long *)(PTR_DAT_003f85c0 + 0x18) + 8)" identifier = (pointer_expression "**(int **)(*(long *)(PTR_DAT_003f85c0 + 0x18) + 8)" * (pointer_expression "*(int **)(*(long *)(PTR_DAT_003f85c0 + 0x18) + 8)" * (cast_expression "(int **)(*(long *)(PTR_DAT_003f85c0 + 0x18) + 8)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(long *)(PTR_DAT_003f85c0 + 0x18) + 8)" ( (binary_expression "*(long *)(PTR_DAT_003f85c0 + 0x18) + 8" (pointer_expression "*(long *)(PTR_DAT_003f85c0 + 0x18)" * (cast_expression "(long *)(PTR_DAT_003f85c0 + 0x18)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_003f85c0 + 0x18)" ( (binary_expression "PTR_DAT_003f85c0 + 0x18" identifier + number_literal) )))) + number_literal) )))))) ;) (expression_statement "iVar5 = iVar1 + 3;" (assignment_expression "iVar5 = iVar1 + 3" identifier = (binary_expression "iVar1 + 3" identifier + number_literal)) ;) (if_statement "if (-1 < iVar1) {\n      iVar5 = iVar1;\n    }" if (parenthesized_expression "(-1 < iVar1)" ( (binary_expression "-1 < iVar1" number_literal < identifier) )) (compound_statement "{\n      iVar5 = iVar1;\n    }" { (expression_statement "iVar5 = iVar1;" (assignment_expression "iVar5 = iVar1" identifier = identifier) ;) })) (expression_statement "fprintf((FILE *)*param_1,"0x%0*llx %10s",(ulong)(uint)(iVar5 >> 2),lVar4,acStack_58);" (call_expression "fprintf((FILE *)*param_1,"0x%0*llx %10s",(ulong)(uint)(iVar5 >> 2),lVar4,acStack_58)" identifier (argument_list "((FILE *)*param_1,"0x%0*llx %10s",(ulong)(uint)(iVar5 >> 2),lVar4,acStack_58)" ( (cast_expression "(FILE *)*param_1" ( (type_descriptor "FILE *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_1" * identifier)) , (string_literal ""0x%0*llx %10s"" " string_content ") , (call_expression "(ulong)(uint)(iVar5 >> 2)" (call_expression "(ulong)(uint)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(uint)" ( identifier ))) (argument_list "(iVar5 >> 2)" ( (binary_expression "iVar5 >> 2" identifier >> number_literal) ))) , identifier , identifier ))) ;) (if_statement "if (*(code **)(*param_2 + 0x20) == FUN_001bfec0) {\n      bVar2 = *(byte *)(param_2 + 0x19) >> 7;\n    }\n    else {\n      bVar2 = (**(code **)(*param_2 + 0x20))(param_2);\n    }" if (parenthesized_expression "(*(code **)(*param_2 + 0x20) == FUN_001bfec0)" ( (binary_expression "*(code **)(*param_2 + 0x20) == FUN_001bfec0" (pointer_expression "*(code **)(*param_2 + 0x20)" * (cast_expression "(code **)(*param_2 + 0x20)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_2 + 0x20)" ( (binary_expression "*param_2 + 0x20" (pointer_expression "*param_2" * identifier) + number_literal) )))) == identifier) )) (compound_statement "{\n      bVar2 = *(byte *)(param_2 + 0x19) >> 7;\n    }" { (expression_statement "bVar2 = *(byte *)(param_2 + 0x19) >> 7;" (assignment_expression "bVar2 = *(byte *)(param_2 + 0x19) >> 7" identifier = (binary_expression "*(byte *)(param_2 + 0x19) >> 7" (pointer_expression "*(byte *)(param_2 + 0x19)" * (cast_expression "(byte *)(param_2 + 0x19)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x19)" ( (binary_expression "param_2 + 0x19" identifier + number_literal) )))) >> number_literal)) ;) }) (else_clause "else {\n      bVar2 = (**(code **)(*param_2 + 0x20))(param_2);\n    }" else (compound_statement "{\n      bVar2 = (**(code **)(*param_2 + 0x20))(param_2);\n    }" { (expression_statement "bVar2 = (**(code **)(*param_2 + 0x20))(param_2);" (assignment_expression "bVar2 = (**(code **)(*param_2 + 0x20))(param_2)" identifier = (call_expression "(**(code **)(*param_2 + 0x20))(param_2)" (parenthesized_expression "(**(code **)(*param_2 + 0x20))" ( (pointer_expression "**(code **)(*param_2 + 0x20)" * (pointer_expression "*(code **)(*param_2 + 0x20)" * (cast_expression "(code **)(*param_2 + 0x20)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_2 + 0x20)" ( (binary_expression "*param_2 + 0x20" (pointer_expression "*param_2" * identifier) + number_literal) ))))) )) (argument_list "(param_2)" ( identifier )))) ;) }))) (if_statement "if (bVar2 != 0) {\n      if (*(code **)(*param_2 + 0x28) == FUN_001c0060) {\n        if (-1 < (char)param_2[0x19]) {\n                    \n          FUN_00199900("../../gold/output.h",0x107b,"do_load_address");\n        }\n        lVar4 = param_2[8];\n      }\n      else {\n        lVar4 = (**(code **)(*param_2 + 0x28))(param_2);\n      }\n      if (*(long *)(PTR_DAT_003f85c0 + 0x18) == 0) goto LAB_001c6f2d;\n      iVar1 = **(int **)(*(long *)(PTR_DAT_003f85c0 + 0x18) + 8);\n      iVar5 = iVar1 + 3;\n      if (-1 < iVar1) {\n        iVar5 = iVar1;\n      }\n      fprintf((FILE *)*param_1," load address 0x%-*llx",(ulong)(uint)(iVar5 >> 2));\n    }" if (parenthesized_expression "(bVar2 != 0)" ( (binary_expression "bVar2 != 0" identifier != number_literal) )) (compound_statement "{\n      if (*(code **)(*param_2 + 0x28) == FUN_001c0060) {\n        if (-1 < (char)param_2[0x19]) {\n                    \n          FUN_00199900("../../gold/output.h",0x107b,"do_load_address");\n        }\n        lVar4 = param_2[8];\n      }\n      else {\n        lVar4 = (**(code **)(*param_2 + 0x28))(param_2);\n      }\n      if (*(long *)(PTR_DAT_003f85c0 + 0x18) == 0) goto LAB_001c6f2d;\n      iVar1 = **(int **)(*(long *)(PTR_DAT_003f85c0 + 0x18) + 8);\n      iVar5 = iVar1 + 3;\n      if (-1 < iVar1) {\n        iVar5 = iVar1;\n      }\n      fprintf((FILE *)*param_1," load address 0x%-*llx",(ulong)(uint)(iVar5 >> 2));\n    }" { (if_statement "if (*(code **)(*param_2 + 0x28) == FUN_001c0060) {\n        if (-1 < (char)param_2[0x19]) {\n                    \n          FUN_00199900("../../gold/output.h",0x107b,"do_load_address");\n        }\n        lVar4 = param_2[8];\n      }\n      else {\n        lVar4 = (**(code **)(*param_2 + 0x28))(param_2);\n      }" if (parenthesized_expression "(*(code **)(*param_2 + 0x28) == FUN_001c0060)" ( (binary_expression "*(code **)(*param_2 + 0x28) == FUN_001c0060" (pointer_expression "*(code **)(*param_2 + 0x28)" * (cast_expression "(code **)(*param_2 + 0x28)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_2 + 0x28)" ( (binary_expression "*param_2 + 0x28" (pointer_expression "*param_2" * identifier) + number_literal) )))) == identifier) )) (compound_statement "{\n        if (-1 < (char)param_2[0x19]) {\n                    \n          FUN_00199900("../../gold/output.h",0x107b,"do_load_address");\n        }\n        lVar4 = param_2[8];\n      }" { (if_statement "if (-1 < (char)param_2[0x19]) {\n                    \n          FUN_00199900("../../gold/output.h",0x107b,"do_load_address");\n        }" if (parenthesized_expression "(-1 < (char)param_2[0x19])" ( (binary_expression "-1 < (char)param_2[0x19]" number_literal < (cast_expression "(char)param_2[0x19]" ( (type_descriptor "char" primitive_type) ) (subscript_expression "param_2[0x19]" identifier [ number_literal ]))) )) (compound_statement "{\n                    \n          FUN_00199900("../../gold/output.h",0x107b,"do_load_address");\n        }" { (expression_statement "FUN_00199900("../../gold/output.h",0x107b,"do_load_address");" (call_expression "FUN_00199900("../../gold/output.h",0x107b,"do_load_address")" identifier (argument_list "("../../gold/output.h",0x107b,"do_load_address")" ( (string_literal ""../../gold/output.h"" " string_content ") , number_literal , (string_literal ""do_load_address"" " string_content ") ))) ;) })) (expression_statement "lVar4 = param_2[8];" (assignment_expression "lVar4 = param_2[8]" identifier = (subscript_expression "param_2[8]" identifier [ number_literal ])) ;) }) (else_clause "else {\n        lVar4 = (**(code **)(*param_2 + 0x28))(param_2);\n      }" else (compound_statement "{\n        lVar4 = (**(code **)(*param_2 + 0x28))(param_2);\n      }" { (expression_statement "lVar4 = (**(code **)(*param_2 + 0x28))(param_2);" (assignment_expression "lVar4 = (**(code **)(*param_2 + 0x28))(param_2)" identifier = (call_expression "(**(code **)(*param_2 + 0x28))(param_2)" (parenthesized_expression "(**(code **)(*param_2 + 0x28))" ( (pointer_expression "**(code **)(*param_2 + 0x28)" * (pointer_expression "*(code **)(*param_2 + 0x28)" * (cast_expression "(code **)(*param_2 + 0x28)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_2 + 0x28)" ( (binary_expression "*param_2 + 0x28" (pointer_expression "*param_2" * identifier) + number_literal) ))))) )) (argument_list "(param_2)" ( identifier )))) ;) }))) (if_statement "if (*(long *)(PTR_DAT_003f85c0 + 0x18) == 0) goto LAB_001c6f2d;" if (parenthesized_expression "(*(long *)(PTR_DAT_003f85c0 + 0x18) == 0)" ( (binary_expression "*(long *)(PTR_DAT_003f85c0 + 0x18) == 0" (pointer_expression "*(long *)(PTR_DAT_003f85c0 + 0x18)" * (cast_expression "(long *)(PTR_DAT_003f85c0 + 0x18)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_003f85c0 + 0x18)" ( (binary_expression "PTR_DAT_003f85c0 + 0x18" identifier + number_literal) )))) == number_literal) )) (goto_statement "goto LAB_001c6f2d;" goto statement_identifier ;)) (expression_statement "iVar1 = **(int **)(*(long *)(PTR_DAT_003f85c0 + 0x18) + 8);" (assignment_expression "iVar1 = **(int **)(*(long *)(PTR_DAT_003f85c0 + 0x18) + 8)" identifier = (pointer_expression "**(int **)(*(long *)(PTR_DAT_003f85c0 + 0x18) + 8)" * (pointer_expression "*(int **)(*(long *)(PTR_DAT_003f85c0 + 0x18) + 8)" * (cast_expression "(int **)(*(long *)(PTR_DAT_003f85c0 + 0x18) + 8)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(long *)(PTR_DAT_003f85c0 + 0x18) + 8)" ( (binary_expression "*(long *)(PTR_DAT_003f85c0 + 0x18) + 8" (pointer_expression "*(long *)(PTR_DAT_003f85c0 + 0x18)" * (cast_expression "(long *)(PTR_DAT_003f85c0 + 0x18)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_003f85c0 + 0x18)" ( (binary_expression "PTR_DAT_003f85c0 + 0x18" identifier + number_literal) )))) + number_literal) )))))) ;) (expression_statement "iVar5 = iVar1 + 3;" (assignment_expression "iVar5 = iVar1 + 3" identifier = (binary_expression "iVar1 + 3" identifier + number_literal)) ;) (if_statement "if (-1 < iVar1) {\n        iVar5 = iVar1;\n      }" if (parenthesized_expression "(-1 < iVar1)" ( (binary_expression "-1 < iVar1" number_literal < identifier) )) (compound_statement "{\n        iVar5 = iVar1;\n      }" { (expression_statement "iVar5 = iVar1;" (assignment_expression "iVar5 = iVar1" identifier = identifier) ;) })) (expression_statement "fprintf((FILE *)*param_1," load address 0x%-*llx",(ulong)(uint)(iVar5 >> 2));" (call_expression "fprintf((FILE *)*param_1," load address 0x%-*llx",(ulong)(uint)(iVar5 >> 2))" identifier (argument_list "((FILE *)*param_1," load address 0x%-*llx",(ulong)(uint)(iVar5 >> 2))" ( (cast_expression "(FILE *)*param_1" ( (type_descriptor "FILE *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_1" * identifier)) , (string_literal "" load address 0x%-*llx"" " string_content ") , (call_expression "(ulong)(uint)(iVar5 >> 2)" (call_expression "(ulong)(uint)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(uint)" ( identifier ))) (argument_list "(iVar5 >> 2)" ( (binary_expression "iVar5 >> 2" identifier >> number_literal) ))) ))) ;) })) (expression_statement "__s = (FILE *)*param_1;" (assignment_expression "__s = (FILE *)*param_1" identifier = (cast_expression "(FILE *)*param_1" ( (type_descriptor "FILE *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_1" * identifier))) ;) (if_statement "if ((*(byte *)(param_2 + 0x19) & 0x20) != 0) {\n      fwrite(" (before compression)",1,0x15,__s);\n      __s = (FILE *)*param_1;\n    }" if (parenthesized_expression "((*(byte *)(param_2 + 0x19) & 0x20) != 0)" ( (binary_expression "(*(byte *)(param_2 + 0x19) & 0x20) != 0" (parenthesized_expression "(*(byte *)(param_2 + 0x19) & 0x20)" ( (binary_expression "*(byte *)(param_2 + 0x19) & 0x20" (pointer_expression "*(byte *)(param_2 + 0x19)" * (cast_expression "(byte *)(param_2 + 0x19)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x19)" ( (binary_expression "param_2 + 0x19" identifier + number_literal) )))) & number_literal) )) != number_literal) )) (compound_statement "{\n      fwrite(" (before compression)",1,0x15,__s);\n      __s = (FILE *)*param_1;\n    }" { (expression_statement "fwrite(" (before compression)",1,0x15,__s);" (call_expression "fwrite(" (before compression)",1,0x15,__s)" identifier (argument_list "(" (before compression)",1,0x15,__s)" ( (string_literal "" (before compression)"" " string_content ") , number_literal , number_literal , identifier ))) ;) (expression_statement "__s = (FILE *)*param_1;" (assignment_expression "__s = (FILE *)*param_1" identifier = (cast_expression "(FILE *)*param_1" ( (type_descriptor "FILE *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_1" * identifier))) ;) })) (expression_statement "putc(10,__s);" (call_expression "putc(10,__s)" identifier (argument_list "(10,__s)" ( number_literal , identifier ))) ;) (return_statement "return;" return ;) })) (labeled_statement "LAB_001c6f2d:\n                    \n  FUN_00199900("../../gold/parameters.h",0x69,"target",lVar4);" statement_identifier : (expression_statement "FUN_00199900("../../gold/parameters.h",0x69,"target",lVar4);" (call_expression "FUN_00199900("../../gold/parameters.h",0x69,"target",lVar4)" identifier (argument_list "("../../gold/parameters.h",0x69,"target",lVar4)" ( (string_literal ""../../gold/parameters.h"" " string_content ") , number_literal , (string_literal ""target"" " string_content ") , identifier ))) ;)) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration (sized_type_specifier long) (pointer_declarator * IDENT)) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + LIT) )))) == (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) })) (expression_statement (call_expression IDENT (argument_list ( (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT)) , (string_literal " escape_sequence string_content ") , (subscript_expression IDENT [ LIT ]) ))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ])) )))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , LIT ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , LIT , (string_literal " string_content ") , (subscript_expression IDENT [ LIT ]) ))) ;) (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 (call_expression IDENT (argument_list ( (string_literal " string_content ") , LIT , (string_literal " string_content ") ))) ;) })) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) )))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) })) (expression_statement (call_expression IDENT (argument_list ( (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT)) , (string_literal " string_content ") , (call_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( IDENT ))) (argument_list ( (binary_expression IDENT >> LIT) ))) , IDENT , IDENT ))) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) )))) == IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) >> LIT)) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) ))))) )) (argument_list ( IDENT )))) ;) }))) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) )))) == IDENT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression LIT < (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ]))) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") , LIT , (string_literal " string_content ") ))) ;) })) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) ))))) )) (argument_list ( IDENT )))) ;) }))) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) )))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) })) (expression_statement (call_expression IDENT (argument_list ( (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT)) , (string_literal " string_content ") , (call_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( IDENT ))) (argument_list ( (binary_expression IDENT >> LIT) ))) ))) ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * 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 (call_expression IDENT (argument_list ( (string_literal " string_content ") , LIT , LIT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) })) (expression_statement (call_expression IDENT (argument_list ( LIT , IDENT ))) ;) (return_statement return ;) })) (labeled_statement statement_identifier : (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") , LIT , (string_literal " string_content ") , IDENT ))) ;)) })))
(function_definition "void FUN_001c6d90(undefined8 *param_1,long *param_2)\n\n{\n  int iVar1;\n  byte bVar2;\n  size_t sVar3;\n  long lVar4;\n  int iVar5;\n  FILE *__s;\n  char acStack_58 [64];\n  \n  if (*(char *)((long)param_1 + 10) == '\0') {\n    FUN_001c6840();\n  }\n  fprintf((FILE *)*param_1,"\n%s",param_2[5]);\n  sVar3 = strlen((char *)param_2[5]);\n  FUN_001c69a0(param_1,sVar3,0x10);\n  snprintf(acStack_58,0x32,"0x%llx",param_2[2]);\n  if ((*(byte *)(param_2 + 4) & 1) == 0) {\n                    \n    FUN_00199900("../../gold/output.h",0xc5,"address");\n  }\n  lVar4 = param_2[1];\n  if (*(long *)(PTR_DAT_003f85c0 + 0x18) != 0) {\n    iVar1 = **(int **)(*(long *)(PTR_DAT_003f85c0 + 0x18) + 8);\n    iVar5 = iVar1 + 3;\n    if (-1 < iVar1) {\n      iVar5 = iVar1;\n    }\n    fprintf((FILE *)*param_1,"0x%0*llx %10s",(ulong)(uint)(iVar5 >> 2),lVar4,acStack_58);\n    if (*(code **)(*param_2 + 0x20) == FUN_001bfec0) {\n      bVar2 = *(byte *)(param_2 + 0x19) >> 7;\n    }\n    else {\n      bVar2 = (**(code **)(*param_2 + 0x20))(param_2);\n    }\n    if (bVar2 != 0) {\n      if (*(code **)(*param_2 + 0x28) == FUN_001c0060) {\n        if (-1 < (char)param_2[0x19]) {\n                    \n          FUN_00199900("../../gold/output.h",0x107b,"do_load_address");\n        }\n        lVar4 = param_2[8];\n      }\n      else {\n        lVar4 = (**(code **)(*param_2 + 0x28))(param_2);\n      }\n      if (*(long *)(PTR_DAT_003f85c0 + 0x18) == 0) goto LAB_001c6f2d;\n      iVar1 = **(int **)(*(long *)(PTR_DAT_003f85c0 + 0x18) + 8);\n      iVar5 = iVar1 + 3;\n      if (-1 < iVar1) {\n        iVar5 = iVar1;\n      }\n      fprintf((FILE *)*param_1," load address 0x%-*llx",(ulong)(uint)(iVar5 >> 2));\n    }\n    __s = (FILE *)*param_1;\n    if ((*(byte *)(param_2 + 0x19) & 0x20) != 0) {\n      fwrite(" (before compression)",1,0x15,__s);\n      __s = (FILE *)*param_1;\n    }\n    putc(10,__s);\n    return;\n  }\nLAB_001c6f2d:\n                    \n  FUN_00199900("../../gold/parameters.h",0x69,"target",lVar4);\n}" (primitive_type "void") (function_declarator "FUN_001c6d90(undefined8 *param_1,long *param_2)" (identifier "FUN_001c6d90") (parameter_list "(undefined8 *param_1,long *param_2)" (( "(") (parameter_declaration "undefined8 *param_1" (type_identifier "undefined8") (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) (, ",") (parameter_declaration "long *param_2" (sized_type_specifier "long" (long "long")) (pointer_declarator "*param_2" (* "*") (identifier "param_2"))) () ")"))) (compound_statement "{\n  int iVar1;\n  byte bVar2;\n  size_t sVar3;\n  long lVar4;\n  int iVar5;\n  FILE *__s;\n  char acStack_58 [64];\n  \n  if (*(char *)((long)param_1 + 10) == '\0') {\n    FUN_001c6840();\n  }\n  fprintf((FILE *)*param_1,"\n%s",param_2[5]);\n  sVar3 = strlen((char *)param_2[5]);\n  FUN_001c69a0(param_1,sVar3,0x10);\n  snprintf(acStack_58,0x32,"0x%llx",param_2[2]);\n  if ((*(byte *)(param_2 + 4) & 1) == 0) {\n                    \n    FUN_00199900("../../gold/output.h",0xc5,"address");\n  }\n  lVar4 = param_2[1];\n  if (*(long *)(PTR_DAT_003f85c0 + 0x18) != 0) {\n    iVar1 = **(int **)(*(long *)(PTR_DAT_003f85c0 + 0x18) + 8);\n    iVar5 = iVar1 + 3;\n    if (-1 < iVar1) {\n      iVar5 = iVar1;\n    }\n    fprintf((FILE *)*param_1,"0x%0*llx %10s",(ulong)(uint)(iVar5 >> 2),lVar4,acStack_58);\n    if (*(code **)(*param_2 + 0x20) == FUN_001bfec0) {\n      bVar2 = *(byte *)(param_2 + 0x19) >> 7;\n    }\n    else {\n      bVar2 = (**(code **)(*param_2 + 0x20))(param_2);\n    }\n    if (bVar2 != 0) {\n      if (*(code **)(*param_2 + 0x28) == FUN_001c0060) {\n        if (-1 < (char)param_2[0x19]) {\n                    \n          FUN_00199900("../../gold/output.h",0x107b,"do_load_address");\n        }\n        lVar4 = param_2[8];\n      }\n      else {\n        lVar4 = (**(code **)(*param_2 + 0x28))(param_2);\n      }\n      if (*(long *)(PTR_DAT_003f85c0 + 0x18) == 0) goto LAB_001c6f2d;\n      iVar1 = **(int **)(*(long *)(PTR_DAT_003f85c0 + 0x18) + 8);\n      iVar5 = iVar1 + 3;\n      if (-1 < iVar1) {\n        iVar5 = iVar1;\n      }\n      fprintf((FILE *)*param_1," load address 0x%-*llx",(ulong)(uint)(iVar5 >> 2));\n    }\n    __s = (FILE *)*param_1;\n    if ((*(byte *)(param_2 + 0x19) & 0x20) != 0) {\n      fwrite(" (before compression)",1,0x15,__s);\n      __s = (FILE *)*param_1;\n    }\n    putc(10,__s);\n    return;\n  }\nLAB_001c6f2d:\n                    \n  FUN_00199900("../../gold/parameters.h",0x69,"target",lVar4);\n}" ({ "{") (declaration "int iVar1;" (primitive_type "int") (identifier "iVar1") (; ";")) (declaration "byte bVar2;" (type_identifier "byte") (identifier "bVar2") (; ";")) (declaration "size_t sVar3;" (primitive_type "size_t") (identifier "sVar3") (; ";")) (declaration "long lVar4;" (sized_type_specifier "long" (long "long")) (identifier "lVar4") (; ";")) (declaration "int iVar5;" (primitive_type "int") (identifier "iVar5") (; ";")) (declaration "FILE *__s;" (type_identifier "FILE") (pointer_declarator "*__s" (* "*") (identifier "__s")) (; ";")) (declaration "char acStack_58 [64];" (primitive_type "char") (array_declarator "acStack_58 [64]" (identifier "acStack_58") ([ "[") (number_literal "64") (] "]")) (; ";")) (if_statement "if (*(char *)((long)param_1 + 10) == '\0') {\n    FUN_001c6840();\n  }" (if "if") (parenthesized_expression "(*(char *)((long)param_1 + 10) == '\0')" (( "(") (binary_expression "*(char *)((long)param_1 + 10) == '\0'" (pointer_expression "*(char *)((long)param_1 + 10)" (* "*") (cast_expression "(char *)((long)param_1 + 10)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)param_1 + 10)" (( "(") (binary_expression "(long)param_1 + 10" (cast_expression "(long)param_1" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "param_1")) (+ "+") (number_literal "10")) () ")")))) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n    FUN_001c6840();\n  }" ({ "{") (expression_statement "FUN_001c6840();" (call_expression "FUN_001c6840()" (identifier "FUN_001c6840") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (expression_statement "fprintf((FILE *)*param_1,"\n%s",param_2[5]);" (call_expression "fprintf((FILE *)*param_1,"\n%s",param_2[5])" (identifier "fprintf") (argument_list "((FILE *)*param_1,"\n%s",param_2[5])" (( "(") (cast_expression "(FILE *)*param_1" (( "(") (type_descriptor "FILE *" (type_identifier "FILE") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*param_1" (* "*") (identifier "param_1"))) (, ",") (string_literal ""\n%s"" (" """) (escape_sequence "\n") (string_content "%s") (" """)) (, ",") (subscript_expression "param_2[5]" (identifier "param_2") ([ "[") (number_literal "5") (] "]")) () ")"))) (; ";")) (expression_statement "sVar3 = strlen((char *)param_2[5]);" (assignment_expression "sVar3 = strlen((char *)param_2[5])" (identifier "sVar3") (= "=") (call_expression "strlen((char *)param_2[5])" (identifier "strlen") (argument_list "((char *)param_2[5])" (( "(") (cast_expression "(char *)param_2[5]" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_2[5]" (identifier "param_2") ([ "[") (number_literal "5") (] "]"))) () ")")))) (; ";")) (expression_statement "FUN_001c69a0(param_1,sVar3,0x10);" (call_expression "FUN_001c69a0(param_1,sVar3,0x10)" (identifier "FUN_001c69a0") (argument_list "(param_1,sVar3,0x10)" (( "(") (identifier "param_1") (, ",") (identifier "sVar3") (, ",") (number_literal "0x10") () ")"))) (; ";")) (expression_statement "snprintf(acStack_58,0x32,"0x%llx",param_2[2]);" (call_expression "snprintf(acStack_58,0x32,"0x%llx",param_2[2])" (identifier "snprintf") (argument_list "(acStack_58,0x32,"0x%llx",param_2[2])" (( "(") (identifier "acStack_58") (, ",") (number_literal "0x32") (, ",") (string_literal ""0x%llx"" (" """) (string_content "0x%llx") (" """)) (, ",") (subscript_expression "param_2[2]" (identifier "param_2") ([ "[") (number_literal "2") (] "]")) () ")"))) (; ";")) (if_statement "if ((*(byte *)(param_2 + 4) & 1) == 0) {\n                    \n    FUN_00199900("../../gold/output.h",0xc5,"address");\n  }" (if "if") (parenthesized_expression "((*(byte *)(param_2 + 4) & 1) == 0)" (( "(") (binary_expression "(*(byte *)(param_2 + 4) & 1) == 0" (parenthesized_expression "(*(byte *)(param_2 + 4) & 1)" (( "(") (binary_expression "*(byte *)(param_2 + 4) & 1" (pointer_expression "*(byte *)(param_2 + 4)" (* "*") (cast_expression "(byte *)(param_2 + 4)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 4)" (( "(") (binary_expression "param_2 + 4" (identifier "param_2") (+ "+") (number_literal "4")) () ")")))) (& "&") (number_literal "1")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                    \n    FUN_00199900("../../gold/output.h",0xc5,"address");\n  }" ({ "{") (expression_statement "FUN_00199900("../../gold/output.h",0xc5,"address");" (call_expression "FUN_00199900("../../gold/output.h",0xc5,"address")" (identifier "FUN_00199900") (argument_list "("../../gold/output.h",0xc5,"address")" (( "(") (string_literal ""../../gold/output.h"" (" """) (string_content "../../gold/output.h") (" """)) (, ",") (number_literal "0xc5") (, ",") (string_literal ""address"" (" """) (string_content "address") (" """)) () ")"))) (; ";")) (} "}"))) (expression_statement "lVar4 = param_2[1];" (assignment_expression "lVar4 = param_2[1]" (identifier "lVar4") (= "=") (subscript_expression "param_2[1]" (identifier "param_2") ([ "[") (number_literal "1") (] "]"))) (; ";")) (if_statement "if (*(long *)(PTR_DAT_003f85c0 + 0x18) != 0) {\n    iVar1 = **(int **)(*(long *)(PTR_DAT_003f85c0 + 0x18) + 8);\n    iVar5 = iVar1 + 3;\n    if (-1 < iVar1) {\n      iVar5 = iVar1;\n    }\n    fprintf((FILE *)*param_1,"0x%0*llx %10s",(ulong)(uint)(iVar5 >> 2),lVar4,acStack_58);\n    if (*(code **)(*param_2 + 0x20) == FUN_001bfec0) {\n      bVar2 = *(byte *)(param_2 + 0x19) >> 7;\n    }\n    else {\n      bVar2 = (**(code **)(*param_2 + 0x20))(param_2);\n    }\n    if (bVar2 != 0) {\n      if (*(code **)(*param_2 + 0x28) == FUN_001c0060) {\n        if (-1 < (char)param_2[0x19]) {\n                    \n          FUN_00199900("../../gold/output.h",0x107b,"do_load_address");\n        }\n        lVar4 = param_2[8];\n      }\n      else {\n        lVar4 = (**(code **)(*param_2 + 0x28))(param_2);\n      }\n      if (*(long *)(PTR_DAT_003f85c0 + 0x18) == 0) goto LAB_001c6f2d;\n      iVar1 = **(int **)(*(long *)(PTR_DAT_003f85c0 + 0x18) + 8);\n      iVar5 = iVar1 + 3;\n      if (-1 < iVar1) {\n        iVar5 = iVar1;\n      }\n      fprintf((FILE *)*param_1," load address 0x%-*llx",(ulong)(uint)(iVar5 >> 2));\n    }\n    __s = (FILE *)*param_1;\n    if ((*(byte *)(param_2 + 0x19) & 0x20) != 0) {\n      fwrite(" (before compression)",1,0x15,__s);\n      __s = (FILE *)*param_1;\n    }\n    putc(10,__s);\n    return;\n  }" (if "if") (parenthesized_expression "(*(long *)(PTR_DAT_003f85c0 + 0x18) != 0)" (( "(") (binary_expression "*(long *)(PTR_DAT_003f85c0 + 0x18) != 0" (pointer_expression "*(long *)(PTR_DAT_003f85c0 + 0x18)" (* "*") (cast_expression "(long *)(PTR_DAT_003f85c0 + 0x18)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_DAT_003f85c0 + 0x18)" (( "(") (binary_expression "PTR_DAT_003f85c0 + 0x18" (identifier "PTR_DAT_003f85c0") (+ "+") (number_literal "0x18")) () ")")))) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    iVar1 = **(int **)(*(long *)(PTR_DAT_003f85c0 + 0x18) + 8);\n    iVar5 = iVar1 + 3;\n    if (-1 < iVar1) {\n      iVar5 = iVar1;\n    }\n    fprintf((FILE *)*param_1,"0x%0*llx %10s",(ulong)(uint)(iVar5 >> 2),lVar4,acStack_58);\n    if (*(code **)(*param_2 + 0x20) == FUN_001bfec0) {\n      bVar2 = *(byte *)(param_2 + 0x19) >> 7;\n    }\n    else {\n      bVar2 = (**(code **)(*param_2 + 0x20))(param_2);\n    }\n    if (bVar2 != 0) {\n      if (*(code **)(*param_2 + 0x28) == FUN_001c0060) {\n        if (-1 < (char)param_2[0x19]) {\n                    \n          FUN_00199900("../../gold/output.h",0x107b,"do_load_address");\n        }\n        lVar4 = param_2[8];\n      }\n      else {\n        lVar4 = (**(code **)(*param_2 + 0x28))(param_2);\n      }\n      if (*(long *)(PTR_DAT_003f85c0 + 0x18) == 0) goto LAB_001c6f2d;\n      iVar1 = **(int **)(*(long *)(PTR_DAT_003f85c0 + 0x18) + 8);\n      iVar5 = iVar1 + 3;\n      if (-1 < iVar1) {\n        iVar5 = iVar1;\n      }\n      fprintf((FILE *)*param_1," load address 0x%-*llx",(ulong)(uint)(iVar5 >> 2));\n    }\n    __s = (FILE *)*param_1;\n    if ((*(byte *)(param_2 + 0x19) & 0x20) != 0) {\n      fwrite(" (before compression)",1,0x15,__s);\n      __s = (FILE *)*param_1;\n    }\n    putc(10,__s);\n    return;\n  }" ({ "{") (expression_statement "iVar1 = **(int **)(*(long *)(PTR_DAT_003f85c0 + 0x18) + 8);" (assignment_expression "iVar1 = **(int **)(*(long *)(PTR_DAT_003f85c0 + 0x18) + 8)" (identifier "iVar1") (= "=") (pointer_expression "**(int **)(*(long *)(PTR_DAT_003f85c0 + 0x18) + 8)" (* "*") (pointer_expression "*(int **)(*(long *)(PTR_DAT_003f85c0 + 0x18) + 8)" (* "*") (cast_expression "(int **)(*(long *)(PTR_DAT_003f85c0 + 0x18) + 8)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*(long *)(PTR_DAT_003f85c0 + 0x18) + 8)" (( "(") (binary_expression "*(long *)(PTR_DAT_003f85c0 + 0x18) + 8" (pointer_expression "*(long *)(PTR_DAT_003f85c0 + 0x18)" (* "*") (cast_expression "(long *)(PTR_DAT_003f85c0 + 0x18)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_DAT_003f85c0 + 0x18)" (( "(") (binary_expression "PTR_DAT_003f85c0 + 0x18" (identifier "PTR_DAT_003f85c0") (+ "+") (number_literal "0x18")) () ")")))) (+ "+") (number_literal "8")) () ")")))))) (; ";")) (expression_statement "iVar5 = iVar1 + 3;" (assignment_expression "iVar5 = iVar1 + 3" (identifier "iVar5") (= "=") (binary_expression "iVar1 + 3" (identifier "iVar1") (+ "+") (number_literal "3"))) (; ";")) (if_statement "if (-1 < iVar1) {\n      iVar5 = iVar1;\n    }" (if "if") (parenthesized_expression "(-1 < iVar1)" (( "(") (binary_expression "-1 < iVar1" (number_literal "-1") (< "<") (identifier "iVar1")) () ")")) (compound_statement "{\n      iVar5 = iVar1;\n    }" ({ "{") (expression_statement "iVar5 = iVar1;" (assignment_expression "iVar5 = iVar1" (identifier "iVar5") (= "=") (identifier "iVar1")) (; ";")) (} "}"))) (expression_statement "fprintf((FILE *)*param_1,"0x%0*llx %10s",(ulong)(uint)(iVar5 >> 2),lVar4,acStack_58);" (call_expression "fprintf((FILE *)*param_1,"0x%0*llx %10s",(ulong)(uint)(iVar5 >> 2),lVar4,acStack_58)" (identifier "fprintf") (argument_list "((FILE *)*param_1,"0x%0*llx %10s",(ulong)(uint)(iVar5 >> 2),lVar4,acStack_58)" (( "(") (cast_expression "(FILE *)*param_1" (( "(") (type_descriptor "FILE *" (type_identifier "FILE") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*param_1" (* "*") (identifier "param_1"))) (, ",") (string_literal ""0x%0*llx %10s"" (" """) (string_content "0x%0*llx %10s") (" """)) (, ",") (call_expression "(ulong)(uint)(iVar5 >> 2)" (call_expression "(ulong)(uint)" (parenthesized_expression "(ulong)" (( "(") (identifier "ulong") () ")")) (argument_list "(uint)" (( "(") (identifier "uint") () ")"))) (argument_list "(iVar5 >> 2)" (( "(") (binary_expression "iVar5 >> 2" (identifier "iVar5") (>> ">>") (number_literal "2")) () ")"))) (, ",") (identifier "lVar4") (, ",") (identifier "acStack_58") () ")"))) (; ";")) (if_statement "if (*(code **)(*param_2 + 0x20) == FUN_001bfec0) {\n      bVar2 = *(byte *)(param_2 + 0x19) >> 7;\n    }\n    else {\n      bVar2 = (**(code **)(*param_2 + 0x20))(param_2);\n    }" (if "if") (parenthesized_expression "(*(code **)(*param_2 + 0x20) == FUN_001bfec0)" (( "(") (binary_expression "*(code **)(*param_2 + 0x20) == FUN_001bfec0" (pointer_expression "*(code **)(*param_2 + 0x20)" (* "*") (cast_expression "(code **)(*param_2 + 0x20)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*param_2 + 0x20)" (( "(") (binary_expression "*param_2 + 0x20" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (+ "+") (number_literal "0x20")) () ")")))) (== "==") (identifier "FUN_001bfec0")) () ")")) (compound_statement "{\n      bVar2 = *(byte *)(param_2 + 0x19) >> 7;\n    }" ({ "{") (expression_statement "bVar2 = *(byte *)(param_2 + 0x19) >> 7;" (assignment_expression "bVar2 = *(byte *)(param_2 + 0x19) >> 7" (identifier "bVar2") (= "=") (binary_expression "*(byte *)(param_2 + 0x19) >> 7" (pointer_expression "*(byte *)(param_2 + 0x19)" (* "*") (cast_expression "(byte *)(param_2 + 0x19)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x19)" (( "(") (binary_expression "param_2 + 0x19" (identifier "param_2") (+ "+") (number_literal "0x19")) () ")")))) (>> ">>") (number_literal "7"))) (; ";")) (} "}")) (else_clause "else {\n      bVar2 = (**(code **)(*param_2 + 0x20))(param_2);\n    }" (else "else") (compound_statement "{\n      bVar2 = (**(code **)(*param_2 + 0x20))(param_2);\n    }" ({ "{") (expression_statement "bVar2 = (**(code **)(*param_2 + 0x20))(param_2);" (assignment_expression "bVar2 = (**(code **)(*param_2 + 0x20))(param_2)" (identifier "bVar2") (= "=") (call_expression "(**(code **)(*param_2 + 0x20))(param_2)" (parenthesized_expression "(**(code **)(*param_2 + 0x20))" (( "(") (pointer_expression "**(code **)(*param_2 + 0x20)" (* "*") (pointer_expression "*(code **)(*param_2 + 0x20)" (* "*") (cast_expression "(code **)(*param_2 + 0x20)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*param_2 + 0x20)" (( "(") (binary_expression "*param_2 + 0x20" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (+ "+") (number_literal "0x20")) () ")"))))) () ")")) (argument_list "(param_2)" (( "(") (identifier "param_2") () ")")))) (; ";")) (} "}")))) (if_statement "if (bVar2 != 0) {\n      if (*(code **)(*param_2 + 0x28) == FUN_001c0060) {\n        if (-1 < (char)param_2[0x19]) {\n                    \n          FUN_00199900("../../gold/output.h",0x107b,"do_load_address");\n        }\n        lVar4 = param_2[8];\n      }\n      else {\n        lVar4 = (**(code **)(*param_2 + 0x28))(param_2);\n      }\n      if (*(long *)(PTR_DAT_003f85c0 + 0x18) == 0) goto LAB_001c6f2d;\n      iVar1 = **(int **)(*(long *)(PTR_DAT_003f85c0 + 0x18) + 8);\n      iVar5 = iVar1 + 3;\n      if (-1 < iVar1) {\n        iVar5 = iVar1;\n      }\n      fprintf((FILE *)*param_1," load address 0x%-*llx",(ulong)(uint)(iVar5 >> 2));\n    }" (if "if") (parenthesized_expression "(bVar2 != 0)" (( "(") (binary_expression "bVar2 != 0" (identifier "bVar2") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      if (*(code **)(*param_2 + 0x28) == FUN_001c0060) {\n        if (-1 < (char)param_2[0x19]) {\n                    \n          FUN_00199900("../../gold/output.h",0x107b,"do_load_address");\n        }\n        lVar4 = param_2[8];\n      }\n      else {\n        lVar4 = (**(code **)(*param_2 + 0x28))(param_2);\n      }\n      if (*(long *)(PTR_DAT_003f85c0 + 0x18) == 0) goto LAB_001c6f2d;\n      iVar1 = **(int **)(*(long *)(PTR_DAT_003f85c0 + 0x18) + 8);\n      iVar5 = iVar1 + 3;\n      if (-1 < iVar1) {\n        iVar5 = iVar1;\n      }\n      fprintf((FILE *)*param_1," load address 0x%-*llx",(ulong)(uint)(iVar5 >> 2));\n    }" ({ "{") (if_statement "if (*(code **)(*param_2 + 0x28) == FUN_001c0060) {\n        if (-1 < (char)param_2[0x19]) {\n                    \n          FUN_00199900("../../gold/output.h",0x107b,"do_load_address");\n        }\n        lVar4 = param_2[8];\n      }\n      else {\n        lVar4 = (**(code **)(*param_2 + 0x28))(param_2);\n      }" (if "if") (parenthesized_expression "(*(code **)(*param_2 + 0x28) == FUN_001c0060)" (( "(") (binary_expression "*(code **)(*param_2 + 0x28) == FUN_001c0060" (pointer_expression "*(code **)(*param_2 + 0x28)" (* "*") (cast_expression "(code **)(*param_2 + 0x28)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*param_2 + 0x28)" (( "(") (binary_expression "*param_2 + 0x28" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (+ "+") (number_literal "0x28")) () ")")))) (== "==") (identifier "FUN_001c0060")) () ")")) (compound_statement "{\n        if (-1 < (char)param_2[0x19]) {\n                    \n          FUN_00199900("../../gold/output.h",0x107b,"do_load_address");\n        }\n        lVar4 = param_2[8];\n      }" ({ "{") (if_statement "if (-1 < (char)param_2[0x19]) {\n                    \n          FUN_00199900("../../gold/output.h",0x107b,"do_load_address");\n        }" (if "if") (parenthesized_expression "(-1 < (char)param_2[0x19])" (( "(") (binary_expression "-1 < (char)param_2[0x19]" (number_literal "-1") (< "<") (cast_expression "(char)param_2[0x19]" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (subscript_expression "param_2[0x19]" (identifier "param_2") ([ "[") (number_literal "0x19") (] "]")))) () ")")) (compound_statement "{\n                    \n          FUN_00199900("../../gold/output.h",0x107b,"do_load_address");\n        }" ({ "{") (expression_statement "FUN_00199900("../../gold/output.h",0x107b,"do_load_address");" (call_expression "FUN_00199900("../../gold/output.h",0x107b,"do_load_address")" (identifier "FUN_00199900") (argument_list "("../../gold/output.h",0x107b,"do_load_address")" (( "(") (string_literal ""../../gold/output.h"" (" """) (string_content "../../gold/output.h") (" """)) (, ",") (number_literal "0x107b") (, ",") (string_literal ""do_load_address"" (" """) (string_content "do_load_address") (" """)) () ")"))) (; ";")) (} "}"))) (expression_statement "lVar4 = param_2[8];" (assignment_expression "lVar4 = param_2[8]" (identifier "lVar4") (= "=") (subscript_expression "param_2[8]" (identifier "param_2") ([ "[") (number_literal "8") (] "]"))) (; ";")) (} "}")) (else_clause "else {\n        lVar4 = (**(code **)(*param_2 + 0x28))(param_2);\n      }" (else "else") (compound_statement "{\n        lVar4 = (**(code **)(*param_2 + 0x28))(param_2);\n      }" ({ "{") (expression_statement "lVar4 = (**(code **)(*param_2 + 0x28))(param_2);" (assignment_expression "lVar4 = (**(code **)(*param_2 + 0x28))(param_2)" (identifier "lVar4") (= "=") (call_expression "(**(code **)(*param_2 + 0x28))(param_2)" (parenthesized_expression "(**(code **)(*param_2 + 0x28))" (( "(") (pointer_expression "**(code **)(*param_2 + 0x28)" (* "*") (pointer_expression "*(code **)(*param_2 + 0x28)" (* "*") (cast_expression "(code **)(*param_2 + 0x28)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*param_2 + 0x28)" (( "(") (binary_expression "*param_2 + 0x28" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (+ "+") (number_literal "0x28")) () ")"))))) () ")")) (argument_list "(param_2)" (( "(") (identifier "param_2") () ")")))) (; ";")) (} "}")))) (if_statement "if (*(long *)(PTR_DAT_003f85c0 + 0x18) == 0) goto LAB_001c6f2d;" (if "if") (parenthesized_expression "(*(long *)(PTR_DAT_003f85c0 + 0x18) == 0)" (( "(") (binary_expression "*(long *)(PTR_DAT_003f85c0 + 0x18) == 0" (pointer_expression "*(long *)(PTR_DAT_003f85c0 + 0x18)" (* "*") (cast_expression "(long *)(PTR_DAT_003f85c0 + 0x18)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_DAT_003f85c0 + 0x18)" (( "(") (binary_expression "PTR_DAT_003f85c0 + 0x18" (identifier "PTR_DAT_003f85c0") (+ "+") (number_literal "0x18")) () ")")))) (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_001c6f2d;" (goto "goto") (statement_identifier "LAB_001c6f2d") (; ";"))) (expression_statement "iVar1 = **(int **)(*(long *)(PTR_DAT_003f85c0 + 0x18) + 8);" (assignment_expression "iVar1 = **(int **)(*(long *)(PTR_DAT_003f85c0 + 0x18) + 8)" (identifier "iVar1") (= "=") (pointer_expression "**(int **)(*(long *)(PTR_DAT_003f85c0 + 0x18) + 8)" (* "*") (pointer_expression "*(int **)(*(long *)(PTR_DAT_003f85c0 + 0x18) + 8)" (* "*") (cast_expression "(int **)(*(long *)(PTR_DAT_003f85c0 + 0x18) + 8)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*(long *)(PTR_DAT_003f85c0 + 0x18) + 8)" (( "(") (binary_expression "*(long *)(PTR_DAT_003f85c0 + 0x18) + 8" (pointer_expression "*(long *)(PTR_DAT_003f85c0 + 0x18)" (* "*") (cast_expression "(long *)(PTR_DAT_003f85c0 + 0x18)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_DAT_003f85c0 + 0x18)" (( "(") (binary_expression "PTR_DAT_003f85c0 + 0x18" (identifier "PTR_DAT_003f85c0") (+ "+") (number_literal "0x18")) () ")")))) (+ "+") (number_literal "8")) () ")")))))) (; ";")) (expression_statement "iVar5 = iVar1 + 3;" (assignment_expression "iVar5 = iVar1 + 3" (identifier "iVar5") (= "=") (binary_expression "iVar1 + 3" (identifier "iVar1") (+ "+") (number_literal "3"))) (; ";")) (if_statement "if (-1 < iVar1) {\n        iVar5 = iVar1;\n      }" (if "if") (parenthesized_expression "(-1 < iVar1)" (( "(") (binary_expression "-1 < iVar1" (number_literal "-1") (< "<") (identifier "iVar1")) () ")")) (compound_statement "{\n        iVar5 = iVar1;\n      }" ({ "{") (expression_statement "iVar5 = iVar1;" (assignment_expression "iVar5 = iVar1" (identifier "iVar5") (= "=") (identifier "iVar1")) (; ";")) (} "}"))) (expression_statement "fprintf((FILE *)*param_1," load address 0x%-*llx",(ulong)(uint)(iVar5 >> 2));" (call_expression "fprintf((FILE *)*param_1," load address 0x%-*llx",(ulong)(uint)(iVar5 >> 2))" (identifier "fprintf") (argument_list "((FILE *)*param_1," load address 0x%-*llx",(ulong)(uint)(iVar5 >> 2))" (( "(") (cast_expression "(FILE *)*param_1" (( "(") (type_descriptor "FILE *" (type_identifier "FILE") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*param_1" (* "*") (identifier "param_1"))) (, ",") (string_literal "" load address 0x%-*llx"" (" """) (string_content " load address 0x%-*llx") (" """)) (, ",") (call_expression "(ulong)(uint)(iVar5 >> 2)" (call_expression "(ulong)(uint)" (parenthesized_expression "(ulong)" (( "(") (identifier "ulong") () ")")) (argument_list "(uint)" (( "(") (identifier "uint") () ")"))) (argument_list "(iVar5 >> 2)" (( "(") (binary_expression "iVar5 >> 2" (identifier "iVar5") (>> ">>") (number_literal "2")) () ")"))) () ")"))) (; ";")) (} "}"))) (expression_statement "__s = (FILE *)*param_1;" (assignment_expression "__s = (FILE *)*param_1" (identifier "__s") (= "=") (cast_expression "(FILE *)*param_1" (( "(") (type_descriptor "FILE *" (type_identifier "FILE") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*param_1" (* "*") (identifier "param_1")))) (; ";")) (if_statement "if ((*(byte *)(param_2 + 0x19) & 0x20) != 0) {\n      fwrite(" (before compression)",1,0x15,__s);\n      __s = (FILE *)*param_1;\n    }" (if "if") (parenthesized_expression "((*(byte *)(param_2 + 0x19) & 0x20) != 0)" (( "(") (binary_expression "(*(byte *)(param_2 + 0x19) & 0x20) != 0" (parenthesized_expression "(*(byte *)(param_2 + 0x19) & 0x20)" (( "(") (binary_expression "*(byte *)(param_2 + 0x19) & 0x20" (pointer_expression "*(byte *)(param_2 + 0x19)" (* "*") (cast_expression "(byte *)(param_2 + 0x19)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x19)" (( "(") (binary_expression "param_2 + 0x19" (identifier "param_2") (+ "+") (number_literal "0x19")) () ")")))) (& "&") (number_literal "0x20")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      fwrite(" (before compression)",1,0x15,__s);\n      __s = (FILE *)*param_1;\n    }" ({ "{") (expression_statement "fwrite(" (before compression)",1,0x15,__s);" (call_expression "fwrite(" (before compression)",1,0x15,__s)" (identifier "fwrite") (argument_list "(" (before compression)",1,0x15,__s)" (( "(") (string_literal "" (before compression)"" (" """) (string_content " (before compression)") (" """)) (, ",") (number_literal "1") (, ",") (number_literal "0x15") (, ",") (identifier "__s") () ")"))) (; ";")) (expression_statement "__s = (FILE *)*param_1;" (assignment_expression "__s = (FILE *)*param_1" (identifier "__s") (= "=") (cast_expression "(FILE *)*param_1" (( "(") (type_descriptor "FILE *" (type_identifier "FILE") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*param_1" (* "*") (identifier "param_1")))) (; ";")) (} "}"))) (expression_statement "putc(10,__s);" (call_expression "putc(10,__s)" (identifier "putc") (argument_list "(10,__s)" (( "(") (number_literal "10") (, ",") (identifier "__s") () ")"))) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}"))) (labeled_statement "LAB_001c6f2d:\n                    \n  FUN_00199900("../../gold/parameters.h",0x69,"target",lVar4);" (statement_identifier "LAB_001c6f2d") (: ":") (expression_statement "FUN_00199900("../../gold/parameters.h",0x69,"target",lVar4);" (call_expression "FUN_00199900("../../gold/parameters.h",0x69,"target",lVar4)" (identifier "FUN_00199900") (argument_list "("../../gold/parameters.h",0x69,"target",lVar4)" (( "(") (string_literal ""../../gold/parameters.h"" (" """) (string_content "../../gold/parameters.h") (" """)) (, ",") (number_literal "0x69") (, ",") (string_literal ""target"" (" """) (string_content "target") (" """)) (, ",") (identifier "lVar4") () ")"))) (; ";"))) (} "}")))

/* WARNING: Enum "DT": Some values do not have unique names */
/* WARNING: Enum "ELFOSABI": Some values do not have unique names */
/* DWARF original prototype: void print_output_section(Mapfile * this, Output_section * os) */

void __thiscall gold::type_1::function_1(type_1 *this,type_2 *os)

{
  type_3 *var_9;
  type_4 var_10;
  int var_7;
  size_t from;
  type_5 extraout_var;
  int var_8;
  type_6 *__s;
  char sizebuf [50];
  uint64_t uVar4;
  
  if (this->printed_memory_map_header_ == false) {
    var_1(this);
  }
  var_2((type_6 *)this->map_file_,"\n%s",os->name_);
  from = var_3(os->name_);
  var_4(this,from,0x10);
  var_5(sizebuf,0x32,"0x%llx",(os->super_Output_data).data_size_);
  if (((os->super_Output_data).field_0x20 & 1) == 0) {
                    /* WARNING: Subroutine does not return */
    var_6("../../gold/output.h",0xc5,"address");
  }
  if (parameters->target_ != (type_7 *)0x0) {
    var_7 = parameters->target_->pti_->size;
    var_8 = var_7 + 3;
    if (-1 < var_7) {
      var_8 = var_7;
    }
    var_2((type_6 *)this->map_file_,"0x%0*llx %10s",(ulong)(uint)(var_8 >> 2),
            (os->super_Output_data).address_,sizebuf);
    var_9 = (os->super_Output_data)._vptr_Output_data[4];
    if (var_9 == type_2::do_has_load_address) {
      var_10 = (type_4)os->field_0xc8 >> 7;
    }
    else {
      var_7 = (*var_9)(os);
      var_10 = (type_4)var_7;
    }
    if (var_10 != 0) {
      var_9 = (os->super_Output_data)._vptr_Output_data[5];
      if (var_9 == type_2::do_load_address) {
        if (-1 < (char)os->field_0xc8) {
                    /* WARNING: Subroutine does not return */
          var_6("../../gold/output.h",0x107b,"do_load_address");
        }
        uVar4 = os->load_address_;
      }
      else {
        var_7 = (*var_9)(os);
        uVar4 = var_11(extraout_var,var_7);
      }
      if (parameters->target_ == (type_7 *)0x0) goto LAB_001c6f2d;
      var_7 = parameters->target_->pti_->size;
      var_8 = var_7 + 3;
      if (-1 < var_7) {
        var_8 = var_7;
      }
      var_2((type_6 *)this->map_file_," load address 0x%-*llx",(ulong)(uint)(var_8 >> 2),uVar4);
    }
    __s = (type_6 *)this->map_file_;
    if ((os->field_0xc8 & 0x20) != 0) {
      var_12(" (before compression)",1,0x15,__s);
      __s = (type_6 *)this->map_file_;
    }
    var_13(10,__s);
    return;
  }
LAB_001c6f2d:
                    /* WARNING: Subroutine does not return */
  var_6("../../gold/parameters.h",0x69,"target");
}


(translation_unit (function_definition type: (primitive_type) declarator: (function_declarator declarator: (identifier) parameters: (parameter_list (parameter_declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (parameter_declaration type: (sized_type_specifier) declarator: (pointer_declarator declarator: (identifier))))) body: (compound_statement (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (sized_type_specifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (array_declarator declarator: (identifier) size: (number_literal))) (if_statement condition: (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: (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (identifier)) right: (number_literal))))) right: (char_literal (escape_sequence)))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (pointer_expression argument: (identifier))) (string_literal (escape_sequence) (string_content)) (subscript_expression argument: (identifier) index: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (subscript_expression argument: (identifier) index: (number_literal))))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier) (number_literal)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (number_literal) (string_literal (string_content)) (subscript_expression argument: (identifier) index: (number_literal))))) (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 (call_expression function: (identifier) arguments: (argument_list (string_literal (string_content)) (number_literal) (string_literal (string_content))))))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal)))))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (number_literal) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (identifier))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (pointer_expression argument: (identifier))) (string_literal (string_content)) (call_expression function: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (identifier))) arguments: (argument_list (binary_expression left: (identifier) right: (number_literal)))) (identifier) (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (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: (identifier)) right: (number_literal))))) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) 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))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (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: (identifier)) right: (number_literal))))))) arguments: (argument_list (identifier)))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (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: (identifier)) right: (number_literal))))) right: (identifier))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (number_literal) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (subscript_expression argument: (identifier) index: (number_literal))))) 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: (subscript_expression argument: (identifier) index: (number_literal))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (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: (identifier)) right: (number_literal))))))) arguments: (argument_list (identifier)))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) consequence: (goto_statement label: (statement_identifier))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal)))))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (number_literal) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (identifier))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (pointer_expression argument: (identifier))) (string_literal (string_content)) (call_expression function: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (identifier))) arguments: (argument_list (binary_expression left: (identifier) right: (number_literal))))))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (pointer_expression argument: (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 (call_expression function: (identifier) arguments: (argument_list (string_literal (string_content)) (number_literal) (number_literal) (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (pointer_expression argument: (identifier))))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (number_literal) (identifier)))) (return_statement))) (labeled_statement label: (statement_identifier) (expression_statement (call_expression function: (identifier) arguments: (argument_list (string_literal (string_content)) (number_literal) (string_literal (string_content)) (identifier))))))))

void MASKED(undefined8 *param_1,long *param_2)

{
  int iVar1;
  byte bVar2;
  size_t sVar3;
  long lVar4;
  int iVar5;
  FILE *__s;
  char acStack_58 [64];
  
  if (*(char *)((long)param_1 + 10) == '\0') {
    FUN_001c6840();
  }
  fprintf((FILE *)*param_1,"\n%s",param_2[5]);
  sVar3 = strlen((char *)param_2[5]);
  FUN_001c69a0(param_1,sVar3,0x10);
  snprintf(acStack_58,0x32,"0x%llx",param_2[2]);
  if ((*(byte *)(param_2 + 4) & 1) == 0) {
                    /* WARNING: Subroutine does not return */
    FUN_00199900("../../gold/output.h",0xc5,"address");
  }
  lVar4 = param_2[1];
  if (*(long *)(PTR_DAT_003f85c0 + 0x18) != 0) {
    iVar1 = **(int **)(*(long *)(PTR_DAT_003f85c0 + 0x18) + 8);
    iVar5 = iVar1 + 3;
    if (-1 < iVar1) {
      iVar5 = iVar1;
    }
    fprintf((FILE *)*param_1,"0x%0*llx %10s",(ulong)(uint)(iVar5 >> 2),lVar4,acStack_58);
    if (*(code **)(*param_2 + 0x20) == FUN_001bfec0) {
      bVar2 = *(byte *)(param_2 + 0x19) >> 7;
    }
    else {
      bVar2 = (**(code **)(*param_2 + 0x20))(param_2);
    }
    if (bVar2 != 0) {
      if (*(code **)(*param_2 + 0x28) == FUN_001c0060) {
        if (-1 < (char)param_2[0x19]) {
                    /* WARNING: Subroutine does not return */
          FUN_00199900("../../gold/output.h",0x107b,"do_load_address");
        }
        lVar4 = param_2[8];
      }
      else {
        lVar4 = (**(code **)(*param_2 + 0x28))(param_2);
      }
      if (*(long *)(PTR_DAT_003f85c0 + 0x18) == 0) goto LAB_001c6f2d;
      iVar1 = **(int **)(*(long *)(PTR_DAT_003f85c0 + 0x18) + 8);
      iVar5 = iVar1 + 3;
      if (-1 < iVar1) {
        iVar5 = iVar1;
      }
      fprintf((FILE *)*param_1," load address 0x%-*llx",(ulong)(uint)(iVar5 >> 2));
    }
    __s = (FILE *)*param_1;
    if ((*(byte *)(param_2 + 0x19) & 0x20) != 0) {
      fwrite(" (before compression)",1,0x15,__s);
      __s = (FILE *)*param_1;
    }
    putc(10,__s);
    return;
  }
LAB_001c6f2d:
                    /* WARNING: Subroutine does not return */
  FUN_00199900("../../gold/parameters.h",0x69,"target",lVar4);
}

