
/* DWARF original prototype: bool get_output_section_info(Output_section_definition * this, char *
   name, uint64_t * address, uint64_t * load_address, uint64_t * addralign, uint64_t * size) */

bool __thiscall
gold::Output_section_definition::get_output_section_info
          (Output_section_definition *this,char *name,uint64_t *address,uint64_t *load_address,
          uint64_t *addralign,uint64_t *size)

{
  byte bVar1;
  off_t oVar2;
  byte bVar3;
  int iVar4;
  undefined4 uVar5;
  undefined4 extraout_EDX;
  undefined4 extraout_EDX_00;
  int unaff_EDI;
  Output_section *local_28;
  _func_int_varargs **local_24;
  
  __x86_get_pc_thunk_di();
  iVar4 = std::string::compare((char *)&this->name_);
  if (iVar4 != 0) {
    return false;
  }
  local_28 = this->output_section_;
  if (local_28 != (Output_section *)0x0) {
    bVar1 = (local_28->super_Output_data).field_0x1c;
    if ((bVar1 & 1) == 0) {
                    /* WARNING: Subroutine does not return */
      do_gold_unreachable((char *)(unaff_EDI + 0x11d136),0xc5,(char *)(unaff_EDI + 0x1672e1));
    }
    uVar5 = *(undefined4 *)((int)&(local_28->super_Output_data).address_ + 4);
    *(int *)address = (int)(local_28->super_Output_data).address_;
    *(undefined4 *)((int)address + 4) = uVar5;
    local_24 = (local_28->super_Output_data)._vptr_Output_data;
    if (local_24[4] == (_func_int_varargs *)(unaff_EDI + -0x1ec177)) {
      bVar3 = (byte)local_28->field_0x90 >> 7;
    }
    else {
      iVar4 = (*local_24[4])(local_28,name);
      bVar3 = (byte)iVar4;
      local_28 = this->output_section_;
      local_24 = (local_28->super_Output_data)._vptr_Output_data;
    }
    if (bVar3 == 0) {
      uVar5 = *(undefined4 *)((int)address + 4);
      *(int *)load_address = (int)*address;
      *(undefined4 *)((int)load_address + 4) = uVar5;
    }
    else {
      if (local_24[5] == (_func_int_varargs *)(unaff_EDI + -0x1ebfe7)) {
        if (-1 < (char)local_28->field_0x90) {
                    /* WARNING: Subroutine does not return */
          do_gold_unreachable((char *)(unaff_EDI + 0x11d136),0x107b,(char *)(unaff_EDI + 0x1672a5));
        }
        uVar5 = *(undefined4 *)((int)&local_28->load_address_ + 4);
        iVar4 = (int)local_28->load_address_;
      }
      else {
        iVar4 = (*local_24[5])(local_28);
        local_28 = this->output_section_;
        local_24 = (local_28->super_Output_data)._vptr_Output_data;
        uVar5 = extraout_EDX_00;
      }
      *(int *)load_address = iVar4;
      *(undefined4 *)((int)load_address + 4) = uVar5;
    }
    if (local_24[3] == (_func_int_varargs *)(unaff_EDI + -0x22e9f7)) {
      uVar5 = *(undefined4 *)((int)&local_28->addralign_ + 4);
      iVar4 = (int)local_28->addralign_;
    }
    else {
      iVar4 = (*local_24[3])(local_28);
      local_28 = this->output_section_;
      uVar5 = extraout_EDX;
    }
    *(int *)addralign = iVar4;
    *(undefined4 *)((int)addralign + 4) = uVar5;
    oVar2 = (local_28->super_Output_data).data_size_;
    *(undefined4 *)((int)size + 4) =
         *(undefined4 *)((int)&(local_28->super_Output_data).data_size_ + 4);
    *(int *)size = (int)oVar2;
    return (bool)(bVar1 & 1);
  }
  uVar5 = *(undefined4 *)((int)&this->evaluated_address_ + 4);
  *(int *)address = (int)this->evaluated_address_;
  *(undefined4 *)((int)address + 4) = uVar5;
  uVar5 = *(undefined4 *)((int)&this->evaluated_load_address_ + 4);
  *(int *)load_address = (int)this->evaluated_load_address_;
  *(undefined4 *)((int)load_address + 4) = uVar5;
  uVar5 = *(undefined4 *)((int)&this->evaluated_addralign_ + 4);
  *(int *)addralign = (int)this->evaluated_addralign_;
  *(undefined4 *)((int)addralign + 4) = uVar5;
  *(undefined4 *)size = 0;
  *(undefined4 *)((int)size + 4) = 0;
  return true;
}



byte FUN_00330220(int param_1,undefined4 param_2,int *param_3,int *param_4,undefined8 *param_5,
                 int *param_6)

{
  byte bVar1;
  int iVar2;
  undefined4 uVar3;
  byte bVar4;
  int unaff_EDI;
  undefined8 uVar5;
  int *local_28;
  int local_24;
  
  FUN_00074f0a();
  uVar5 = FUN_003b8640(param_1 + 4,param_2);
  if ((int)uVar5 != 0) {
    return 0;
  }
  local_28 = *(int **)(param_1 + 0x44);
  if (local_28 != (int *)0x0) {
    bVar1 = *(byte *)(local_28 + 7);
    if ((bVar1 & 1) == 0) {
                    /* WARNING: Subroutine does not return */
      FUN_002446e0(unaff_EDI + 0x11d136,0xc5,&UNK_001672e1 + unaff_EDI,
                   (int)((ulonglong)uVar5 >> 0x20));
    }
    iVar2 = local_28[2];
    *param_3 = local_28[1];
    param_3[1] = iVar2;
    local_24 = *local_28;
    if (*(code **)(local_24 + 0x10) == (code *)(unaff_EDI + -0x1ec177)) {
      bVar4 = *(byte *)(local_28 + 0x24) >> 7;
    }
    else {
      bVar4 = (**(code **)(local_24 + 0x10))(local_28);
      local_28 = *(int **)(param_1 + 0x44);
      local_24 = *local_28;
    }
    if (bVar4 == 0) {
      iVar2 = param_3[1];
      *param_4 = *param_3;
      param_4[1] = iVar2;
    }
    else {
      if (*(code **)(local_24 + 0x14) == (code *)(unaff_EDI + -0x1ebfe7)) {
        if (-1 < (char)local_28[0x24]) {
                    /* WARNING: Subroutine does not return */
          FUN_002446e0(unaff_EDI + 0x11d136,0x107b,&UNK_001672a5 + unaff_EDI,local_28);
        }
        uVar5 = *(undefined8 *)(local_28 + 0xd);
      }
      else {
        uVar5 = (**(code **)(local_24 + 0x14))(local_28);
        local_28 = *(int **)(param_1 + 0x44);
        local_24 = *local_28;
      }
      *(undefined8 *)param_4 = uVar5;
    }
    if (*(code **)(local_24 + 0xc) == (code *)(unaff_EDI + -0x22e9f7)) {
      uVar5 = *(undefined8 *)(local_28 + 9);
    }
    else {
      uVar5 = (**(code **)(local_24 + 0xc))(local_28);
      local_28 = *(int **)(param_1 + 0x44);
    }
    *param_5 = uVar5;
    iVar2 = local_28[3];
    param_6[1] = local_28[4];
    *param_6 = iVar2;
    return bVar1 & 1;
  }
  iVar2 = *(int *)(param_1 + 0x4c);
  *param_3 = *(int *)(param_1 + 0x48);
  param_3[1] = iVar2;
  iVar2 = *(int *)(param_1 + 0x54);
  *param_4 = *(int *)(param_1 + 0x50);
  param_4[1] = iVar2;
  uVar3 = *(undefined4 *)(param_1 + 0x5c);
  *(undefined4 *)param_5 = *(undefined4 *)(param_1 + 0x58);
  *(undefined4 *)((int)param_5 + 4) = uVar3;
  *param_6 = 0;
  param_6[1] = 0;
  return 1;
}


PUSH EBP
PUSH EDI
CALL 0x00074f0a
ADD EDI,0x2b9dd9
PUSH ESI
PUSH EBX
SUB ESP,0x24
MOV ESI,dword ptr [ESP + 0x38]
PUSH dword ptr [ESP + 0x3c]
MOV EBX,EDI
LEA EAX,[ESI + 0x4]
PUSH EAX
CALL 0x003b8640
ADD ESP,0x10
TEST EAX,EAX
JNZ 0x003302f0
MOV EAX,dword ptr [ESI + 0x44]
MOV dword ptr [ESP + 0x4],EAX
TEST EAX,EAX
JZ 0x00330360
MOVZX EAX,byte ptr [EAX + 0x1c]
MOV EBP,EAX
MOV byte ptr [ESP + 0x8],AL
AND EBP,0x1
JZ 0x0033040e
MOV EAX,dword ptr [ESP + 0x4]
MOV EDX,dword ptr [ESP + 0x38]
MOV ECX,dword ptr [EAX + 0x4]
MOV EBX,dword ptr [EAX + 0x8]
MOV dword ptr [EDX],ECX
MOV dword ptr [EDX + 0x4],EBX
MOV EDX,dword ptr [EAX]
LEA EBX,[EDI + 0xffb5a0b0]
MOV ECX,dword ptr [EDX + 0x10]
MOV dword ptr [ESP + 0x8],EDX
CMP ECX,EBX
JNZ 0x003303b0
MOVZX EAX,byte ptr [EAX + 0x90]
MOV byte ptr [ESP + 0xf],AL
SHR AL,0x7
TEST AL,AL
JZ 0x00330300
MOV EAX,dword ptr [ESP + 0x8]
LEA EBX,[EDI + 0xffb5a240]
MOV ECX,dword ptr [EAX + 0x14]
CMP ECX,EBX
JNZ 0x003303f0
MOV EAX,dword ptr [ESP + 0x4]
CMP byte ptr [EAX + 0x90],0x0
JNS 0x00330427
MOV EAX,dword ptr [ESP + 0x4]
MOV EDX,dword ptr [EAX + 0x38]
MOV EAX,dword ptr [EAX + 0x34]
MOV EBX,dword ptr [ESP + 0x3c]
MOV dword ptr [EBX],EAX
MOV dword ptr [EBX + 0x4],EDX
JMP 0x00330312
ADD ESP,0x1c
XOR EBP,EBP
POP EBX
MOV EAX,EBP
POP ESI
POP EDI
POP EBP
RET
MOV EAX,dword ptr [ESP + 0x38]
MOV ECX,dword ptr [EAX]
MOV EBX,dword ptr [EAX + 0x4]
MOV EAX,dword ptr [ESP + 0x3c]
MOV dword ptr [EAX],ECX
MOV dword ptr [EAX + 0x4],EBX
MOV EAX,dword ptr [ESP + 0x8]
LEA ECX,[EDI + 0xffb17830]
MOV EAX,dword ptr [EAX + 0xc]
CMP EAX,ECX
JNZ 0x003303d0
MOV EAX,dword ptr [ESP + 0x4]
MOV EDX,dword ptr [EAX + 0x28]
MOV EAX,dword ptr [EAX + 0x24]
MOV EBX,dword ptr [ESP + 0x40]
MOV EDI,dword ptr [ESP + 0x44]
MOV dword ptr [EBX],EAX
MOV EAX,dword ptr [ESP + 0x4]
MOV dword ptr [EBX + 0x4],EDX
MOV EDX,dword ptr [EAX + 0x10]
MOV EAX,dword ptr [EAX + 0xc]
MOV dword ptr [EDI + 0x4],EDX
MOV dword ptr [EDI],EAX
ADD ESP,0x1c
MOV EAX,EBP
POP EBX
POP ESI
POP EDI
POP EBP
RET
MOV EAX,dword ptr [ESI + 0x48]
MOV EDX,dword ptr [ESI + 0x4c]
MOV EBP,0x1
MOV EBX,dword ptr [ESP + 0x38]
MOV ECX,dword ptr [ESP + 0x3c]
MOV dword ptr [EBX],EAX
MOV dword ptr [EBX + 0x4],EDX
MOV EAX,dword ptr [ESI + 0x50]
MOV EDX,dword ptr [ESI + 0x54]
MOV dword ptr [ECX],EAX
MOV dword ptr [ECX + 0x4],EDX
MOV EAX,dword ptr [ESI + 0x58]
MOV EDX,dword ptr [ESI + 0x5c]
MOV ESI,dword ptr [ESP + 0x40]
MOV dword ptr [ESI],EAX
MOV EAX,dword ptr [ESP + 0x44]
MOV dword ptr [ESI + 0x4],EDX
MOV dword ptr [EAX],0x0
MOV dword ptr [EAX + 0x4],0x0
ADD ESP,0x1c
MOV EAX,EBP
POP EBX
POP ESI
POP EDI
POP EBP
RET
SUB ESP,0xc
PUSH dword ptr [ESP + 0x10]
CALL ECX
MOV EDX,dword ptr [ESI + 0x44]
MOV EBX,dword ptr [EDX]
MOV dword ptr [ESP + 0x14],EDX
MOV dword ptr [ESP + 0x18],EBX
ADD ESP,0x10
JMP 0x003302aa
SUB ESP,0xc
PUSH dword ptr [ESP + 0x10]
CALL EAX
MOV ESI,dword ptr [ESI + 0x44]
MOV dword ptr [ESP + 0x14],ESI
ADD ESP,0x10
JMP 0x00330331
SUB ESP,0xc
PUSH dword ptr [ESP + 0x10]
CALL ECX
MOV ECX,dword ptr [ESI + 0x44]
MOV EBX,dword ptr [ECX]
MOV dword ptr [ESP + 0x14],ECX
MOV dword ptr [ESP + 0x18],EBX
ADD ESP,0x10
JMP 0x003302de
LEA EAX,[EDI + 0xffead508]
PUSH EDX
PUSH EAX
LEA EAX,[EDI + 0xffe6335d]
PUSH 0xc5
PUSH EAX
CALL 0x002446e0
PUSH EAX
LEA EAX,[EDI + 0xffead4cc]
MOV EBX,EDI
PUSH EAX
LEA EAX,[EDI + 0xffe6335d]
PUSH 0x107b
PUSH EAX
CALL 0x002446e0
(translation_unit "byte FUN_00330220(int param_1,undefined4 param_2,int *param_3,int *param_4,undefined8 *param_5,\n                 int *param_6)\n\n{\n  byte bVar1;\n  int iVar2;\n  undefined4 uVar3;\n  byte bVar4;\n  int unaff_EDI;\n  undefined8 uVar5;\n  int *local_28;\n  int local_24;\n  \n  FUN_00074f0a();\n  uVar5 = FUN_003b8640(param_1 + 4,param_2);\n  if ((int)uVar5 != 0) {\n    return 0;\n  }\n  local_28 = *(int **)(param_1 + 0x44);\n  if (local_28 != (int *)0x0) {\n    bVar1 = *(byte *)(local_28 + 7);\n    if ((bVar1 & 1) == 0) {\n                    /* WARNING: Subroutine does not return */\n      FUN_002446e0(unaff_EDI + 0x11d136,0xc5,&UNK_001672e1 + unaff_EDI,\n                   (int)((ulonglong)uVar5 >> 0x20));\n    }\n    iVar2 = local_28[2];\n    *param_3 = local_28[1];\n    param_3[1] = iVar2;\n    local_24 = *local_28;\n    if (*(code **)(local_24 + 0x10) == (code *)(unaff_EDI + -0x1ec177)) {\n      bVar4 = *(byte *)(local_28 + 0x24) >> 7;\n    }\n    else {\n      bVar4 = (**(code **)(local_24 + 0x10))(local_28);\n      local_28 = *(int **)(param_1 + 0x44);\n      local_24 = *local_28;\n    }\n    if (bVar4 == 0) {\n      iVar2 = param_3[1];\n      *param_4 = *param_3;\n      param_4[1] = iVar2;\n    }\n    else {\n      if (*(code **)(local_24 + 0x14) == (code *)(unaff_EDI + -0x1ebfe7)) {\n        if (-1 < (char)local_28[0x24]) {\n                    /* WARNING: Subroutine does not return */\n          FUN_002446e0(unaff_EDI + 0x11d136,0x107b,&UNK_001672a5 + unaff_EDI,local_28);\n        }\n        uVar5 = *(undefined8 *)(local_28 + 0xd);\n      }\n      else {\n        uVar5 = (**(code **)(local_24 + 0x14))(local_28);\n        local_28 = *(int **)(param_1 + 0x44);\n        local_24 = *local_28;\n      }\n      *(undefined8 *)param_4 = uVar5;\n    }\n    if (*(code **)(local_24 + 0xc) == (code *)(unaff_EDI + -0x22e9f7)) {\n      uVar5 = *(undefined8 *)(local_28 + 9);\n    }\n    else {\n      uVar5 = (**(code **)(local_24 + 0xc))(local_28);\n      local_28 = *(int **)(param_1 + 0x44);\n    }\n    *param_5 = uVar5;\n    iVar2 = local_28[3];\n    param_6[1] = local_28[4];\n    *param_6 = iVar2;\n    return bVar1 & 1;\n  }\n  iVar2 = *(int *)(param_1 + 0x4c);\n  *param_3 = *(int *)(param_1 + 0x48);\n  param_3[1] = iVar2;\n  iVar2 = *(int *)(param_1 + 0x54);\n  *param_4 = *(int *)(param_1 + 0x50);\n  param_4[1] = iVar2;\n  uVar3 = *(undefined4 *)(param_1 + 0x5c);\n  *(undefined4 *)param_5 = *(undefined4 *)(param_1 + 0x58);\n  *(undefined4 *)((int)param_5 + 4) = uVar3;\n  *param_6 = 0;\n  param_6[1] = 0;\n  return 1;\n}\n\n" (function_definition "byte FUN_00330220(int param_1,undefined4 param_2,int *param_3,int *param_4,undefined8 *param_5,\n                 int *param_6)\n\n{\n  byte bVar1;\n  int iVar2;\n  undefined4 uVar3;\n  byte bVar4;\n  int unaff_EDI;\n  undefined8 uVar5;\n  int *local_28;\n  int local_24;\n  \n  FUN_00074f0a();\n  uVar5 = FUN_003b8640(param_1 + 4,param_2);\n  if ((int)uVar5 != 0) {\n    return 0;\n  }\n  local_28 = *(int **)(param_1 + 0x44);\n  if (local_28 != (int *)0x0) {\n    bVar1 = *(byte *)(local_28 + 7);\n    if ((bVar1 & 1) == 0) {\n                    /* WARNING: Subroutine does not return */\n      FUN_002446e0(unaff_EDI + 0x11d136,0xc5,&UNK_001672e1 + unaff_EDI,\n                   (int)((ulonglong)uVar5 >> 0x20));\n    }\n    iVar2 = local_28[2];\n    *param_3 = local_28[1];\n    param_3[1] = iVar2;\n    local_24 = *local_28;\n    if (*(code **)(local_24 + 0x10) == (code *)(unaff_EDI + -0x1ec177)) {\n      bVar4 = *(byte *)(local_28 + 0x24) >> 7;\n    }\n    else {\n      bVar4 = (**(code **)(local_24 + 0x10))(local_28);\n      local_28 = *(int **)(param_1 + 0x44);\n      local_24 = *local_28;\n    }\n    if (bVar4 == 0) {\n      iVar2 = param_3[1];\n      *param_4 = *param_3;\n      param_4[1] = iVar2;\n    }\n    else {\n      if (*(code **)(local_24 + 0x14) == (code *)(unaff_EDI + -0x1ebfe7)) {\n        if (-1 < (char)local_28[0x24]) {\n                    /* WARNING: Subroutine does not return */\n          FUN_002446e0(unaff_EDI + 0x11d136,0x107b,&UNK_001672a5 + unaff_EDI,local_28);\n        }\n        uVar5 = *(undefined8 *)(local_28 + 0xd);\n      }\n      else {\n        uVar5 = (**(code **)(local_24 + 0x14))(local_28);\n        local_28 = *(int **)(param_1 + 0x44);\n        local_24 = *local_28;\n      }\n      *(undefined8 *)param_4 = uVar5;\n    }\n    if (*(code **)(local_24 + 0xc) == (code *)(unaff_EDI + -0x22e9f7)) {\n      uVar5 = *(undefined8 *)(local_28 + 9);\n    }\n    else {\n      uVar5 = (**(code **)(local_24 + 0xc))(local_28);\n      local_28 = *(int **)(param_1 + 0x44);\n    }\n    *param_5 = uVar5;\n    iVar2 = local_28[3];\n    param_6[1] = local_28[4];\n    *param_6 = iVar2;\n    return bVar1 & 1;\n  }\n  iVar2 = *(int *)(param_1 + 0x4c);\n  *param_3 = *(int *)(param_1 + 0x48);\n  param_3[1] = iVar2;\n  iVar2 = *(int *)(param_1 + 0x54);\n  *param_4 = *(int *)(param_1 + 0x50);\n  param_4[1] = iVar2;\n  uVar3 = *(undefined4 *)(param_1 + 0x5c);\n  *(undefined4 *)param_5 = *(undefined4 *)(param_1 + 0x58);\n  *(undefined4 *)((int)param_5 + 4) = uVar3;\n  *param_6 = 0;\n  param_6[1] = 0;\n  return 1;\n}" type_identifier (function_declarator "FUN_00330220(int param_1,undefined4 param_2,int *param_3,int *param_4,undefined8 *param_5,\n                 int *param_6)" identifier (parameter_list "(int param_1,undefined4 param_2,int *param_3,int *param_4,undefined8 *param_5,\n                 int *param_6)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "undefined4 param_2" type_identifier identifier) , (parameter_declaration "int *param_3" primitive_type (pointer_declarator "*param_3" * identifier)) , (parameter_declaration "int *param_4" primitive_type (pointer_declarator "*param_4" * identifier)) , (parameter_declaration "undefined8 *param_5" type_identifier (pointer_declarator "*param_5" * identifier)) , (parameter_declaration "int *param_6" primitive_type (pointer_declarator "*param_6" * identifier)) ))) (compound_statement "{\n  byte bVar1;\n  int iVar2;\n  undefined4 uVar3;\n  byte bVar4;\n  int unaff_EDI;\n  undefined8 uVar5;\n  int *local_28;\n  int local_24;\n  \n  FUN_00074f0a();\n  uVar5 = FUN_003b8640(param_1 + 4,param_2);\n  if ((int)uVar5 != 0) {\n    return 0;\n  }\n  local_28 = *(int **)(param_1 + 0x44);\n  if (local_28 != (int *)0x0) {\n    bVar1 = *(byte *)(local_28 + 7);\n    if ((bVar1 & 1) == 0) {\n                    /* WARNING: Subroutine does not return */\n      FUN_002446e0(unaff_EDI + 0x11d136,0xc5,&UNK_001672e1 + unaff_EDI,\n                   (int)((ulonglong)uVar5 >> 0x20));\n    }\n    iVar2 = local_28[2];\n    *param_3 = local_28[1];\n    param_3[1] = iVar2;\n    local_24 = *local_28;\n    if (*(code **)(local_24 + 0x10) == (code *)(unaff_EDI + -0x1ec177)) {\n      bVar4 = *(byte *)(local_28 + 0x24) >> 7;\n    }\n    else {\n      bVar4 = (**(code **)(local_24 + 0x10))(local_28);\n      local_28 = *(int **)(param_1 + 0x44);\n      local_24 = *local_28;\n    }\n    if (bVar4 == 0) {\n      iVar2 = param_3[1];\n      *param_4 = *param_3;\n      param_4[1] = iVar2;\n    }\n    else {\n      if (*(code **)(local_24 + 0x14) == (code *)(unaff_EDI + -0x1ebfe7)) {\n        if (-1 < (char)local_28[0x24]) {\n                    /* WARNING: Subroutine does not return */\n          FUN_002446e0(unaff_EDI + 0x11d136,0x107b,&UNK_001672a5 + unaff_EDI,local_28);\n        }\n        uVar5 = *(undefined8 *)(local_28 + 0xd);\n      }\n      else {\n        uVar5 = (**(code **)(local_24 + 0x14))(local_28);\n        local_28 = *(int **)(param_1 + 0x44);\n        local_24 = *local_28;\n      }\n      *(undefined8 *)param_4 = uVar5;\n    }\n    if (*(code **)(local_24 + 0xc) == (code *)(unaff_EDI + -0x22e9f7)) {\n      uVar5 = *(undefined8 *)(local_28 + 9);\n    }\n    else {\n      uVar5 = (**(code **)(local_24 + 0xc))(local_28);\n      local_28 = *(int **)(param_1 + 0x44);\n    }\n    *param_5 = uVar5;\n    iVar2 = local_28[3];\n    param_6[1] = local_28[4];\n    *param_6 = iVar2;\n    return bVar1 & 1;\n  }\n  iVar2 = *(int *)(param_1 + 0x4c);\n  *param_3 = *(int *)(param_1 + 0x48);\n  param_3[1] = iVar2;\n  iVar2 = *(int *)(param_1 + 0x54);\n  *param_4 = *(int *)(param_1 + 0x50);\n  param_4[1] = iVar2;\n  uVar3 = *(undefined4 *)(param_1 + 0x5c);\n  *(undefined4 *)param_5 = *(undefined4 *)(param_1 + 0x58);\n  *(undefined4 *)((int)param_5 + 4) = uVar3;\n  *param_6 = 0;\n  param_6[1] = 0;\n  return 1;\n}" { (declaration "byte bVar1;" type_identifier identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "undefined4 uVar3;" type_identifier identifier ;) (declaration "byte bVar4;" type_identifier identifier ;) (declaration "int unaff_EDI;" primitive_type identifier ;) (declaration "undefined8 uVar5;" type_identifier identifier ;) (declaration "int *local_28;" primitive_type (pointer_declarator "*local_28" * identifier) ;) (declaration "int local_24;" primitive_type identifier ;) (expression_statement "FUN_00074f0a();" (call_expression "FUN_00074f0a()" identifier (argument_list "()" ( ))) ;) (expression_statement "uVar5 = FUN_003b8640(param_1 + 4,param_2);" (assignment_expression "uVar5 = FUN_003b8640(param_1 + 4,param_2)" identifier = (call_expression "FUN_003b8640(param_1 + 4,param_2)" identifier (argument_list "(param_1 + 4,param_2)" ( (binary_expression "param_1 + 4" identifier + number_literal) , identifier )))) ;) (if_statement "if ((int)uVar5 != 0) {\n    return 0;\n  }" if (parenthesized_expression "((int)uVar5 != 0)" ( (binary_expression "(int)uVar5 != 0" (cast_expression "(int)uVar5" ( (type_descriptor "int" primitive_type) ) identifier) != number_literal) )) (compound_statement "{\n    return 0;\n  }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "local_28 = *(int **)(param_1 + 0x44);" (assignment_expression "local_28 = *(int **)(param_1 + 0x44)" identifier = (pointer_expression "*(int **)(param_1 + 0x44)" * (cast_expression "(int **)(param_1 + 0x44)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x44)" ( (binary_expression "param_1 + 0x44" identifier + number_literal) ))))) ;) (if_statement "if (local_28 != (int *)0x0) {\n    bVar1 = *(byte *)(local_28 + 7);\n    if ((bVar1 & 1) == 0) {\n                    /* WARNING: Subroutine does not return */\n      FUN_002446e0(unaff_EDI + 0x11d136,0xc5,&UNK_001672e1 + unaff_EDI,\n                   (int)((ulonglong)uVar5 >> 0x20));\n    }\n    iVar2 = local_28[2];\n    *param_3 = local_28[1];\n    param_3[1] = iVar2;\n    local_24 = *local_28;\n    if (*(code **)(local_24 + 0x10) == (code *)(unaff_EDI + -0x1ec177)) {\n      bVar4 = *(byte *)(local_28 + 0x24) >> 7;\n    }\n    else {\n      bVar4 = (**(code **)(local_24 + 0x10))(local_28);\n      local_28 = *(int **)(param_1 + 0x44);\n      local_24 = *local_28;\n    }\n    if (bVar4 == 0) {\n      iVar2 = param_3[1];\n      *param_4 = *param_3;\n      param_4[1] = iVar2;\n    }\n    else {\n      if (*(code **)(local_24 + 0x14) == (code *)(unaff_EDI + -0x1ebfe7)) {\n        if (-1 < (char)local_28[0x24]) {\n                    /* WARNING: Subroutine does not return */\n          FUN_002446e0(unaff_EDI + 0x11d136,0x107b,&UNK_001672a5 + unaff_EDI,local_28);\n        }\n        uVar5 = *(undefined8 *)(local_28 + 0xd);\n      }\n      else {\n        uVar5 = (**(code **)(local_24 + 0x14))(local_28);\n        local_28 = *(int **)(param_1 + 0x44);\n        local_24 = *local_28;\n      }\n      *(undefined8 *)param_4 = uVar5;\n    }\n    if (*(code **)(local_24 + 0xc) == (code *)(unaff_EDI + -0x22e9f7)) {\n      uVar5 = *(undefined8 *)(local_28 + 9);\n    }\n    else {\n      uVar5 = (**(code **)(local_24 + 0xc))(local_28);\n      local_28 = *(int **)(param_1 + 0x44);\n    }\n    *param_5 = uVar5;\n    iVar2 = local_28[3];\n    param_6[1] = local_28[4];\n    *param_6 = iVar2;\n    return bVar1 & 1;\n  }" if (parenthesized_expression "(local_28 != (int *)0x0)" ( (binary_expression "local_28 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    bVar1 = *(byte *)(local_28 + 7);\n    if ((bVar1 & 1) == 0) {\n                    /* WARNING: Subroutine does not return */\n      FUN_002446e0(unaff_EDI + 0x11d136,0xc5,&UNK_001672e1 + unaff_EDI,\n                   (int)((ulonglong)uVar5 >> 0x20));\n    }\n    iVar2 = local_28[2];\n    *param_3 = local_28[1];\n    param_3[1] = iVar2;\n    local_24 = *local_28;\n    if (*(code **)(local_24 + 0x10) == (code *)(unaff_EDI + -0x1ec177)) {\n      bVar4 = *(byte *)(local_28 + 0x24) >> 7;\n    }\n    else {\n      bVar4 = (**(code **)(local_24 + 0x10))(local_28);\n      local_28 = *(int **)(param_1 + 0x44);\n      local_24 = *local_28;\n    }\n    if (bVar4 == 0) {\n      iVar2 = param_3[1];\n      *param_4 = *param_3;\n      param_4[1] = iVar2;\n    }\n    else {\n      if (*(code **)(local_24 + 0x14) == (code *)(unaff_EDI + -0x1ebfe7)) {\n        if (-1 < (char)local_28[0x24]) {\n                    /* WARNING: Subroutine does not return */\n          FUN_002446e0(unaff_EDI + 0x11d136,0x107b,&UNK_001672a5 + unaff_EDI,local_28);\n        }\n        uVar5 = *(undefined8 *)(local_28 + 0xd);\n      }\n      else {\n        uVar5 = (**(code **)(local_24 + 0x14))(local_28);\n        local_28 = *(int **)(param_1 + 0x44);\n        local_24 = *local_28;\n      }\n      *(undefined8 *)param_4 = uVar5;\n    }\n    if (*(code **)(local_24 + 0xc) == (code *)(unaff_EDI + -0x22e9f7)) {\n      uVar5 = *(undefined8 *)(local_28 + 9);\n    }\n    else {\n      uVar5 = (**(code **)(local_24 + 0xc))(local_28);\n      local_28 = *(int **)(param_1 + 0x44);\n    }\n    *param_5 = uVar5;\n    iVar2 = local_28[3];\n    param_6[1] = local_28[4];\n    *param_6 = iVar2;\n    return bVar1 & 1;\n  }" { (expression_statement "bVar1 = *(byte *)(local_28 + 7);" (assignment_expression "bVar1 = *(byte *)(local_28 + 7)" identifier = (pointer_expression "*(byte *)(local_28 + 7)" * (cast_expression "(byte *)(local_28 + 7)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_28 + 7)" ( (binary_expression "local_28 + 7" identifier + number_literal) ))))) ;) (if_statement "if ((bVar1 & 1) == 0) {\n                    /* WARNING: Subroutine does not return */\n      FUN_002446e0(unaff_EDI + 0x11d136,0xc5,&UNK_001672e1 + unaff_EDI,\n                   (int)((ulonglong)uVar5 >> 0x20));\n    }" if (parenthesized_expression "((bVar1 & 1) == 0)" ( (binary_expression "(bVar1 & 1) == 0" (parenthesized_expression "(bVar1 & 1)" ( (binary_expression "bVar1 & 1" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n      FUN_002446e0(unaff_EDI + 0x11d136,0xc5,&UNK_001672e1 + unaff_EDI,\n                   (int)((ulonglong)uVar5 >> 0x20));\n    }" { comment (expression_statement "FUN_002446e0(unaff_EDI + 0x11d136,0xc5,&UNK_001672e1 + unaff_EDI,\n                   (int)((ulonglong)uVar5 >> 0x20));" (call_expression "FUN_002446e0(unaff_EDI + 0x11d136,0xc5,&UNK_001672e1 + unaff_EDI,\n                   (int)((ulonglong)uVar5 >> 0x20))" identifier (argument_list "(unaff_EDI + 0x11d136,0xc5,&UNK_001672e1 + unaff_EDI,\n                   (int)((ulonglong)uVar5 >> 0x20))" ( (binary_expression "unaff_EDI + 0x11d136" identifier + number_literal) , number_literal , (binary_expression "&UNK_001672e1 + unaff_EDI" (pointer_expression "&UNK_001672e1" & identifier) + identifier) , (cast_expression "(int)((ulonglong)uVar5 >> 0x20)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((ulonglong)uVar5 >> 0x20)" ( (binary_expression "(ulonglong)uVar5 >> 0x20" (cast_expression "(ulonglong)uVar5" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) ))) ))) ;) })) (expression_statement "iVar2 = local_28[2];" (assignment_expression "iVar2 = local_28[2]" identifier = (subscript_expression "local_28[2]" identifier [ number_literal ])) ;) (expression_statement "*param_3 = local_28[1];" (assignment_expression "*param_3 = local_28[1]" (pointer_expression "*param_3" * identifier) = (subscript_expression "local_28[1]" identifier [ number_literal ])) ;) (expression_statement "param_3[1] = iVar2;" (assignment_expression "param_3[1] = iVar2" (subscript_expression "param_3[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "local_24 = *local_28;" (assignment_expression "local_24 = *local_28" identifier = (pointer_expression "*local_28" * identifier)) ;) (if_statement "if (*(code **)(local_24 + 0x10) == (code *)(unaff_EDI + -0x1ec177)) {\n      bVar4 = *(byte *)(local_28 + 0x24) >> 7;\n    }\n    else {\n      bVar4 = (**(code **)(local_24 + 0x10))(local_28);\n      local_28 = *(int **)(param_1 + 0x44);\n      local_24 = *local_28;\n    }" if (parenthesized_expression "(*(code **)(local_24 + 0x10) == (code *)(unaff_EDI + -0x1ec177))" ( (binary_expression "*(code **)(local_24 + 0x10) == (code *)(unaff_EDI + -0x1ec177)" (pointer_expression "*(code **)(local_24 + 0x10)" * (cast_expression "(code **)(local_24 + 0x10)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(local_24 + 0x10)" ( (binary_expression "local_24 + 0x10" identifier + number_literal) )))) == (cast_expression "(code *)(unaff_EDI + -0x1ec177)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + -0x1ec177)" ( (binary_expression "unaff_EDI + -0x1ec177" identifier + number_literal) )))) )) (compound_statement "{\n      bVar4 = *(byte *)(local_28 + 0x24) >> 7;\n    }" { (expression_statement "bVar4 = *(byte *)(local_28 + 0x24) >> 7;" (assignment_expression "bVar4 = *(byte *)(local_28 + 0x24) >> 7" identifier = (binary_expression "*(byte *)(local_28 + 0x24) >> 7" (pointer_expression "*(byte *)(local_28 + 0x24)" * (cast_expression "(byte *)(local_28 + 0x24)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_28 + 0x24)" ( (binary_expression "local_28 + 0x24" identifier + number_literal) )))) >> number_literal)) ;) }) (else_clause "else {\n      bVar4 = (**(code **)(local_24 + 0x10))(local_28);\n      local_28 = *(int **)(param_1 + 0x44);\n      local_24 = *local_28;\n    }" else (compound_statement "{\n      bVar4 = (**(code **)(local_24 + 0x10))(local_28);\n      local_28 = *(int **)(param_1 + 0x44);\n      local_24 = *local_28;\n    }" { (expression_statement "bVar4 = (**(code **)(local_24 + 0x10))(local_28);" (assignment_expression "bVar4 = (**(code **)(local_24 + 0x10))(local_28)" identifier = (call_expression "(**(code **)(local_24 + 0x10))(local_28)" (parenthesized_expression "(**(code **)(local_24 + 0x10))" ( (pointer_expression "**(code **)(local_24 + 0x10)" * (pointer_expression "*(code **)(local_24 + 0x10)" * (cast_expression "(code **)(local_24 + 0x10)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(local_24 + 0x10)" ( (binary_expression "local_24 + 0x10" identifier + number_literal) ))))) )) (argument_list "(local_28)" ( identifier )))) ;) (expression_statement "local_28 = *(int **)(param_1 + 0x44);" (assignment_expression "local_28 = *(int **)(param_1 + 0x44)" identifier = (pointer_expression "*(int **)(param_1 + 0x44)" * (cast_expression "(int **)(param_1 + 0x44)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x44)" ( (binary_expression "param_1 + 0x44" identifier + number_literal) ))))) ;) (expression_statement "local_24 = *local_28;" (assignment_expression "local_24 = *local_28" identifier = (pointer_expression "*local_28" * identifier)) ;) }))) (if_statement "if (bVar4 == 0) {\n      iVar2 = param_3[1];\n      *param_4 = *param_3;\n      param_4[1] = iVar2;\n    }\n    else {\n      if (*(code **)(local_24 + 0x14) == (code *)(unaff_EDI + -0x1ebfe7)) {\n        if (-1 < (char)local_28[0x24]) {\n                    /* WARNING: Subroutine does not return */\n          FUN_002446e0(unaff_EDI + 0x11d136,0x107b,&UNK_001672a5 + unaff_EDI,local_28);\n        }\n        uVar5 = *(undefined8 *)(local_28 + 0xd);\n      }\n      else {\n        uVar5 = (**(code **)(local_24 + 0x14))(local_28);\n        local_28 = *(int **)(param_1 + 0x44);\n        local_24 = *local_28;\n      }\n      *(undefined8 *)param_4 = uVar5;\n    }" if (parenthesized_expression "(bVar4 == 0)" ( (binary_expression "bVar4 == 0" identifier == number_literal) )) (compound_statement "{\n      iVar2 = param_3[1];\n      *param_4 = *param_3;\n      param_4[1] = iVar2;\n    }" { (expression_statement "iVar2 = param_3[1];" (assignment_expression "iVar2 = param_3[1]" identifier = (subscript_expression "param_3[1]" identifier [ number_literal ])) ;) (expression_statement "*param_4 = *param_3;" (assignment_expression "*param_4 = *param_3" (pointer_expression "*param_4" * identifier) = (pointer_expression "*param_3" * identifier)) ;) (expression_statement "param_4[1] = iVar2;" (assignment_expression "param_4[1] = iVar2" (subscript_expression "param_4[1]" identifier [ number_literal ]) = identifier) ;) }) (else_clause "else {\n      if (*(code **)(local_24 + 0x14) == (code *)(unaff_EDI + -0x1ebfe7)) {\n        if (-1 < (char)local_28[0x24]) {\n                    /* WARNING: Subroutine does not return */\n          FUN_002446e0(unaff_EDI + 0x11d136,0x107b,&UNK_001672a5 + unaff_EDI,local_28);\n        }\n        uVar5 = *(undefined8 *)(local_28 + 0xd);\n      }\n      else {\n        uVar5 = (**(code **)(local_24 + 0x14))(local_28);\n        local_28 = *(int **)(param_1 + 0x44);\n        local_24 = *local_28;\n      }\n      *(undefined8 *)param_4 = uVar5;\n    }" else (compound_statement "{\n      if (*(code **)(local_24 + 0x14) == (code *)(unaff_EDI + -0x1ebfe7)) {\n        if (-1 < (char)local_28[0x24]) {\n                    /* WARNING: Subroutine does not return */\n          FUN_002446e0(unaff_EDI + 0x11d136,0x107b,&UNK_001672a5 + unaff_EDI,local_28);\n        }\n        uVar5 = *(undefined8 *)(local_28 + 0xd);\n      }\n      else {\n        uVar5 = (**(code **)(local_24 + 0x14))(local_28);\n        local_28 = *(int **)(param_1 + 0x44);\n        local_24 = *local_28;\n      }\n      *(undefined8 *)param_4 = uVar5;\n    }" { (if_statement "if (*(code **)(local_24 + 0x14) == (code *)(unaff_EDI + -0x1ebfe7)) {\n        if (-1 < (char)local_28[0x24]) {\n                    /* WARNING: Subroutine does not return */\n          FUN_002446e0(unaff_EDI + 0x11d136,0x107b,&UNK_001672a5 + unaff_EDI,local_28);\n        }\n        uVar5 = *(undefined8 *)(local_28 + 0xd);\n      }\n      else {\n        uVar5 = (**(code **)(local_24 + 0x14))(local_28);\n        local_28 = *(int **)(param_1 + 0x44);\n        local_24 = *local_28;\n      }" if (parenthesized_expression "(*(code **)(local_24 + 0x14) == (code *)(unaff_EDI + -0x1ebfe7))" ( (binary_expression "*(code **)(local_24 + 0x14) == (code *)(unaff_EDI + -0x1ebfe7)" (pointer_expression "*(code **)(local_24 + 0x14)" * (cast_expression "(code **)(local_24 + 0x14)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(local_24 + 0x14)" ( (binary_expression "local_24 + 0x14" identifier + number_literal) )))) == (cast_expression "(code *)(unaff_EDI + -0x1ebfe7)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + -0x1ebfe7)" ( (binary_expression "unaff_EDI + -0x1ebfe7" identifier + number_literal) )))) )) (compound_statement "{\n        if (-1 < (char)local_28[0x24]) {\n                    /* WARNING: Subroutine does not return */\n          FUN_002446e0(unaff_EDI + 0x11d136,0x107b,&UNK_001672a5 + unaff_EDI,local_28);\n        }\n        uVar5 = *(undefined8 *)(local_28 + 0xd);\n      }" { (if_statement "if (-1 < (char)local_28[0x24]) {\n                    /* WARNING: Subroutine does not return */\n          FUN_002446e0(unaff_EDI + 0x11d136,0x107b,&UNK_001672a5 + unaff_EDI,local_28);\n        }" if (parenthesized_expression "(-1 < (char)local_28[0x24])" ( (binary_expression "-1 < (char)local_28[0x24]" number_literal < (cast_expression "(char)local_28[0x24]" ( (type_descriptor "char" primitive_type) ) (subscript_expression "local_28[0x24]" identifier [ number_literal ]))) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n          FUN_002446e0(unaff_EDI + 0x11d136,0x107b,&UNK_001672a5 + unaff_EDI,local_28);\n        }" { comment (expression_statement "FUN_002446e0(unaff_EDI + 0x11d136,0x107b,&UNK_001672a5 + unaff_EDI,local_28);" (call_expression "FUN_002446e0(unaff_EDI + 0x11d136,0x107b,&UNK_001672a5 + unaff_EDI,local_28)" identifier (argument_list "(unaff_EDI + 0x11d136,0x107b,&UNK_001672a5 + unaff_EDI,local_28)" ( (binary_expression "unaff_EDI + 0x11d136" identifier + number_literal) , number_literal , (binary_expression "&UNK_001672a5 + unaff_EDI" (pointer_expression "&UNK_001672a5" & identifier) + identifier) , identifier ))) ;) })) (expression_statement "uVar5 = *(undefined8 *)(local_28 + 0xd);" (assignment_expression "uVar5 = *(undefined8 *)(local_28 + 0xd)" identifier = (pointer_expression "*(undefined8 *)(local_28 + 0xd)" * (cast_expression "(undefined8 *)(local_28 + 0xd)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_28 + 0xd)" ( (binary_expression "local_28 + 0xd" identifier + number_literal) ))))) ;) }) (else_clause "else {\n        uVar5 = (**(code **)(local_24 + 0x14))(local_28);\n        local_28 = *(int **)(param_1 + 0x44);\n        local_24 = *local_28;\n      }" else (compound_statement "{\n        uVar5 = (**(code **)(local_24 + 0x14))(local_28);\n        local_28 = *(int **)(param_1 + 0x44);\n        local_24 = *local_28;\n      }" { (expression_statement "uVar5 = (**(code **)(local_24 + 0x14))(local_28);" (assignment_expression "uVar5 = (**(code **)(local_24 + 0x14))(local_28)" identifier = (call_expression "(**(code **)(local_24 + 0x14))(local_28)" (parenthesized_expression "(**(code **)(local_24 + 0x14))" ( (pointer_expression "**(code **)(local_24 + 0x14)" * (pointer_expression "*(code **)(local_24 + 0x14)" * (cast_expression "(code **)(local_24 + 0x14)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(local_24 + 0x14)" ( (binary_expression "local_24 + 0x14" identifier + number_literal) ))))) )) (argument_list "(local_28)" ( identifier )))) ;) (expression_statement "local_28 = *(int **)(param_1 + 0x44);" (assignment_expression "local_28 = *(int **)(param_1 + 0x44)" identifier = (pointer_expression "*(int **)(param_1 + 0x44)" * (cast_expression "(int **)(param_1 + 0x44)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x44)" ( (binary_expression "param_1 + 0x44" identifier + number_literal) ))))) ;) (expression_statement "local_24 = *local_28;" (assignment_expression "local_24 = *local_28" identifier = (pointer_expression "*local_28" * identifier)) ;) }))) (expression_statement "*(undefined8 *)param_4 = uVar5;" (assignment_expression "*(undefined8 *)param_4 = uVar5" (pointer_expression "*(undefined8 *)param_4" * (cast_expression "(undefined8 *)param_4" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) = identifier) ;) }))) (if_statement "if (*(code **)(local_24 + 0xc) == (code *)(unaff_EDI + -0x22e9f7)) {\n      uVar5 = *(undefined8 *)(local_28 + 9);\n    }\n    else {\n      uVar5 = (**(code **)(local_24 + 0xc))(local_28);\n      local_28 = *(int **)(param_1 + 0x44);\n    }" if (parenthesized_expression "(*(code **)(local_24 + 0xc) == (code *)(unaff_EDI + -0x22e9f7))" ( (binary_expression "*(code **)(local_24 + 0xc) == (code *)(unaff_EDI + -0x22e9f7)" (pointer_expression "*(code **)(local_24 + 0xc)" * (cast_expression "(code **)(local_24 + 0xc)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(local_24 + 0xc)" ( (binary_expression "local_24 + 0xc" identifier + number_literal) )))) == (cast_expression "(code *)(unaff_EDI + -0x22e9f7)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + -0x22e9f7)" ( (binary_expression "unaff_EDI + -0x22e9f7" identifier + number_literal) )))) )) (compound_statement "{\n      uVar5 = *(undefined8 *)(local_28 + 9);\n    }" { (expression_statement "uVar5 = *(undefined8 *)(local_28 + 9);" (assignment_expression "uVar5 = *(undefined8 *)(local_28 + 9)" identifier = (pointer_expression "*(undefined8 *)(local_28 + 9)" * (cast_expression "(undefined8 *)(local_28 + 9)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_28 + 9)" ( (binary_expression "local_28 + 9" identifier + number_literal) ))))) ;) }) (else_clause "else {\n      uVar5 = (**(code **)(local_24 + 0xc))(local_28);\n      local_28 = *(int **)(param_1 + 0x44);\n    }" else (compound_statement "{\n      uVar5 = (**(code **)(local_24 + 0xc))(local_28);\n      local_28 = *(int **)(param_1 + 0x44);\n    }" { (expression_statement "uVar5 = (**(code **)(local_24 + 0xc))(local_28);" (assignment_expression "uVar5 = (**(code **)(local_24 + 0xc))(local_28)" identifier = (call_expression "(**(code **)(local_24 + 0xc))(local_28)" (parenthesized_expression "(**(code **)(local_24 + 0xc))" ( (pointer_expression "**(code **)(local_24 + 0xc)" * (pointer_expression "*(code **)(local_24 + 0xc)" * (cast_expression "(code **)(local_24 + 0xc)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(local_24 + 0xc)" ( (binary_expression "local_24 + 0xc" identifier + number_literal) ))))) )) (argument_list "(local_28)" ( identifier )))) ;) (expression_statement "local_28 = *(int **)(param_1 + 0x44);" (assignment_expression "local_28 = *(int **)(param_1 + 0x44)" identifier = (pointer_expression "*(int **)(param_1 + 0x44)" * (cast_expression "(int **)(param_1 + 0x44)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x44)" ( (binary_expression "param_1 + 0x44" identifier + number_literal) ))))) ;) }))) (expression_statement "*param_5 = uVar5;" (assignment_expression "*param_5 = uVar5" (pointer_expression "*param_5" * identifier) = identifier) ;) (expression_statement "iVar2 = local_28[3];" (assignment_expression "iVar2 = local_28[3]" identifier = (subscript_expression "local_28[3]" identifier [ number_literal ])) ;) (expression_statement "param_6[1] = local_28[4];" (assignment_expression "param_6[1] = local_28[4]" (subscript_expression "param_6[1]" identifier [ number_literal ]) = (subscript_expression "local_28[4]" identifier [ number_literal ])) ;) (expression_statement "*param_6 = iVar2;" (assignment_expression "*param_6 = iVar2" (pointer_expression "*param_6" * identifier) = identifier) ;) (return_statement "return bVar1 & 1;" return (binary_expression "bVar1 & 1" identifier & number_literal) ;) })) (expression_statement "iVar2 = *(int *)(param_1 + 0x4c);" (assignment_expression "iVar2 = *(int *)(param_1 + 0x4c)" identifier = (pointer_expression "*(int *)(param_1 + 0x4c)" * (cast_expression "(int *)(param_1 + 0x4c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x4c)" ( (binary_expression "param_1 + 0x4c" identifier + number_literal) ))))) ;) (expression_statement "*param_3 = *(int *)(param_1 + 0x48);" (assignment_expression "*param_3 = *(int *)(param_1 + 0x48)" (pointer_expression "*param_3" * identifier) = (pointer_expression "*(int *)(param_1 + 0x48)" * (cast_expression "(int *)(param_1 + 0x48)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x48)" ( (binary_expression "param_1 + 0x48" identifier + number_literal) ))))) ;) (expression_statement "param_3[1] = iVar2;" (assignment_expression "param_3[1] = iVar2" (subscript_expression "param_3[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "iVar2 = *(int *)(param_1 + 0x54);" (assignment_expression "iVar2 = *(int *)(param_1 + 0x54)" identifier = (pointer_expression "*(int *)(param_1 + 0x54)" * (cast_expression "(int *)(param_1 + 0x54)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x54)" ( (binary_expression "param_1 + 0x54" identifier + number_literal) ))))) ;) (expression_statement "*param_4 = *(int *)(param_1 + 0x50);" (assignment_expression "*param_4 = *(int *)(param_1 + 0x50)" (pointer_expression "*param_4" * identifier) = (pointer_expression "*(int *)(param_1 + 0x50)" * (cast_expression "(int *)(param_1 + 0x50)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x50)" ( (binary_expression "param_1 + 0x50" identifier + number_literal) ))))) ;) (expression_statement "param_4[1] = iVar2;" (assignment_expression "param_4[1] = iVar2" (subscript_expression "param_4[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "uVar3 = *(undefined4 *)(param_1 + 0x5c);" (assignment_expression "uVar3 = *(undefined4 *)(param_1 + 0x5c)" identifier = (pointer_expression "*(undefined4 *)(param_1 + 0x5c)" * (cast_expression "(undefined4 *)(param_1 + 0x5c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x5c)" ( (binary_expression "param_1 + 0x5c" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)param_5 = *(undefined4 *)(param_1 + 0x58);" (assignment_expression "*(undefined4 *)param_5 = *(undefined4 *)(param_1 + 0x58)" (pointer_expression "*(undefined4 *)param_5" * (cast_expression "(undefined4 *)param_5" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) = (pointer_expression "*(undefined4 *)(param_1 + 0x58)" * (cast_expression "(undefined4 *)(param_1 + 0x58)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x58)" ( (binary_expression "param_1 + 0x58" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)((int)param_5 + 4) = uVar3;" (assignment_expression "*(undefined4 *)((int)param_5 + 4) = uVar3" (pointer_expression "*(undefined4 *)((int)param_5 + 4)" * (cast_expression "(undefined4 *)((int)param_5 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_5 + 4)" ( (binary_expression "(int)param_5 + 4" (cast_expression "(int)param_5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "*param_6 = 0;" (assignment_expression "*param_6 = 0" (pointer_expression "*param_6" * identifier) = number_literal) ;) (expression_statement "param_6[1] = 0;" (assignment_expression "param_6[1] = 0" (subscript_expression "param_6[1]" identifier [ number_literal ]) = number_literal) ;) (return_statement "return 1;" return number_literal ;) })))
(translation_unit "/* DWARF original prototype: bool get_output_section_info(Output_section_definition * this, char *\n   name, uint64_t * address, uint64_t * load_address, uint64_t * addralign, uint64_t * size) */\n\nbool __thiscall\ngold::Output_section_definition::get_output_section_info\n          (Output_section_definition *this,char *name,uint64_t *address,uint64_t *load_address,\n          uint64_t *addralign,uint64_t *size)\n\n{\n  byte bVar1;\n  off_t oVar2;\n  byte bVar3;\n  int iVar4;\n  undefined4 uVar5;\n  undefined4 extraout_EDX;\n  undefined4 extraout_EDX_00;\n  int unaff_EDI;\n  Output_section *local_28;\n  _func_int_varargs **local_24;\n  \n  __x86_get_pc_thunk_di();\n  iVar4 = std::string::compare((char *)&this->name_);\n  if (iVar4 != 0) {\n    return false;\n  }\n  local_28 = this->output_section_;\n  if (local_28 != (Output_section *)0x0) {\n    bVar1 = (local_28->super_Output_data).field_0x1c;\n    if ((bVar1 & 1) == 0) {\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable((char *)(unaff_EDI + 0x11d136),0xc5,(char *)(unaff_EDI + 0x1672e1));\n    }\n    uVar5 = *(undefined4 *)((int)&(local_28->super_Output_data).address_ + 4);\n    *(int *)address = (int)(local_28->super_Output_data).address_;\n    *(undefined4 *)((int)address + 4) = uVar5;\n    local_24 = (local_28->super_Output_data)._vptr_Output_data;\n    if (local_24[4] == (_func_int_varargs *)(unaff_EDI + -0x1ec177)) {\n      bVar3 = (byte)local_28->field_0x90 >> 7;\n    }\n    else {\n      iVar4 = (*local_24[4])(local_28,name);\n      bVar3 = (byte)iVar4;\n      local_28 = this->output_section_;\n      local_24 = (local_28->super_Output_data)._vptr_Output_data;\n    }\n    if (bVar3 == 0) {\n      uVar5 = *(undefined4 *)((int)address + 4);\n      *(int *)load_address = (int)*address;\n      *(undefined4 *)((int)load_address + 4) = uVar5;\n    }\n    else {\n      if (local_24[5] == (_func_int_varargs *)(unaff_EDI + -0x1ebfe7)) {\n        if (-1 < (char)local_28->field_0x90) {\n                    /* WARNING: Subroutine does not return */\n          do_gold_unreachable((char *)(unaff_EDI + 0x11d136),0x107b,(char *)(unaff_EDI + 0x1672a5));\n        }\n        uVar5 = *(undefined4 *)((int)&local_28->load_address_ + 4);\n        iVar4 = (int)local_28->load_address_;\n      }\n      else {\n        iVar4 = (*local_24[5])(local_28);\n        local_28 = this->output_section_;\n        local_24 = (local_28->super_Output_data)._vptr_Output_data;\n        uVar5 = extraout_EDX_00;\n      }\n      *(int *)load_address = iVar4;\n      *(undefined4 *)((int)load_address + 4) = uVar5;\n    }\n    if (local_24[3] == (_func_int_varargs *)(unaff_EDI + -0x22e9f7)) {\n      uVar5 = *(undefined4 *)((int)&local_28->addralign_ + 4);\n      iVar4 = (int)local_28->addralign_;\n    }\n    else {\n      iVar4 = (*local_24[3])(local_28);\n      local_28 = this->output_section_;\n      uVar5 = extraout_EDX;\n    }\n    *(int *)addralign = iVar4;\n    *(undefined4 *)((int)addralign + 4) = uVar5;\n    oVar2 = (local_28->super_Output_data).data_size_;\n    *(undefined4 *)((int)size + 4) =\n         *(undefined4 *)((int)&(local_28->super_Output_data).data_size_ + 4);\n    *(int *)size = (int)oVar2;\n    return (bool)(bVar1 & 1);\n  }\n  uVar5 = *(undefined4 *)((int)&this->evaluated_address_ + 4);\n  *(int *)address = (int)this->evaluated_address_;\n  *(undefined4 *)((int)address + 4) = uVar5;\n  uVar5 = *(undefined4 *)((int)&this->evaluated_load_address_ + 4);\n  *(int *)load_address = (int)this->evaluated_load_address_;\n  *(undefined4 *)((int)load_address + 4) = uVar5;\n  uVar5 = *(undefined4 *)((int)&this->evaluated_addralign_ + 4);\n  *(int *)addralign = (int)this->evaluated_addralign_;\n  *(undefined4 *)((int)addralign + 4) = uVar5;\n  *(undefined4 *)size = 0;\n  *(undefined4 *)((int)size + 4) = 0;\n  return true;\n}\n\n" comment (function_definition "bool __thiscall\ngold::Output_section_definition::get_output_section_info\n          (Output_section_definition *this,char *name,uint64_t *address,uint64_t *load_address,\n          uint64_t *addralign,uint64_t *size)\n\n{\n  byte bVar1;\n  off_t oVar2;\n  byte bVar3;\n  int iVar4;\n  undefined4 uVar5;\n  undefined4 extraout_EDX;\n  undefined4 extraout_EDX_00;\n  int unaff_EDI;\n  Output_section *local_28;\n  _func_int_varargs **local_24;\n  \n  __x86_get_pc_thunk_di();\n  iVar4 = std::string::compare((char *)&this->name_);\n  if (iVar4 != 0) {\n    return false;\n  }\n  local_28 = this->output_section_;\n  if (local_28 != (Output_section *)0x0) {\n    bVar1 = (local_28->super_Output_data).field_0x1c;\n    if ((bVar1 & 1) == 0) {\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable((char *)(unaff_EDI + 0x11d136),0xc5,(char *)(unaff_EDI + 0x1672e1));\n    }\n    uVar5 = *(undefined4 *)((int)&(local_28->super_Output_data).address_ + 4);\n    *(int *)address = (int)(local_28->super_Output_data).address_;\n    *(undefined4 *)((int)address + 4) = uVar5;\n    local_24 = (local_28->super_Output_data)._vptr_Output_data;\n    if (local_24[4] == (_func_int_varargs *)(unaff_EDI + -0x1ec177)) {\n      bVar3 = (byte)local_28->field_0x90 >> 7;\n    }\n    else {\n      iVar4 = (*local_24[4])(local_28,name);\n      bVar3 = (byte)iVar4;\n      local_28 = this->output_section_;\n      local_24 = (local_28->super_Output_data)._vptr_Output_data;\n    }\n    if (bVar3 == 0) {\n      uVar5 = *(undefined4 *)((int)address + 4);\n      *(int *)load_address = (int)*address;\n      *(undefined4 *)((int)load_address + 4) = uVar5;\n    }\n    else {\n      if (local_24[5] == (_func_int_varargs *)(unaff_EDI + -0x1ebfe7)) {\n        if (-1 < (char)local_28->field_0x90) {\n                    /* WARNING: Subroutine does not return */\n          do_gold_unreachable((char *)(unaff_EDI + 0x11d136),0x107b,(char *)(unaff_EDI + 0x1672a5));\n        }\n        uVar5 = *(undefined4 *)((int)&local_28->load_address_ + 4);\n        iVar4 = (int)local_28->load_address_;\n      }\n      else {\n        iVar4 = (*local_24[5])(local_28);\n        local_28 = this->output_section_;\n        local_24 = (local_28->super_Output_data)._vptr_Output_data;\n        uVar5 = extraout_EDX_00;\n      }\n      *(int *)load_address = iVar4;\n      *(undefined4 *)((int)load_address + 4) = uVar5;\n    }\n    if (local_24[3] == (_func_int_varargs *)(unaff_EDI + -0x22e9f7)) {\n      uVar5 = *(undefined4 *)((int)&local_28->addralign_ + 4);\n      iVar4 = (int)local_28->addralign_;\n    }\n    else {\n      iVar4 = (*local_24[3])(local_28);\n      local_28 = this->output_section_;\n      uVar5 = extraout_EDX;\n    }\n    *(int *)addralign = iVar4;\n    *(undefined4 *)((int)addralign + 4) = uVar5;\n    oVar2 = (local_28->super_Output_data).data_size_;\n    *(undefined4 *)((int)size + 4) =\n         *(undefined4 *)((int)&(local_28->super_Output_data).data_size_ + 4);\n    *(int *)size = (int)oVar2;\n    return (bool)(bVar1 & 1);\n  }\n  uVar5 = *(undefined4 *)((int)&this->evaluated_address_ + 4);\n  *(int *)address = (int)this->evaluated_address_;\n  *(undefined4 *)((int)address + 4) = uVar5;\n  uVar5 = *(undefined4 *)((int)&this->evaluated_load_address_ + 4);\n  *(int *)load_address = (int)this->evaluated_load_address_;\n  *(undefined4 *)((int)load_address + 4) = uVar5;\n  uVar5 = *(undefined4 *)((int)&this->evaluated_addralign_ + 4);\n  *(int *)addralign = (int)this->evaluated_addralign_;\n  *(undefined4 *)((int)addralign + 4) = uVar5;\n  *(undefined4 *)size = 0;\n  *(undefined4 *)((int)size + 4) = 0;\n  return true;\n}" primitive_type (ms_call_modifier "__thiscall" __thiscall) (ERROR "gold::Output_section_definition::" identifier : : identifier : :) (function_declarator "get_output_section_info\n          (Output_section_definition *this,char *name,uint64_t *address,uint64_t *load_address,\n          uint64_t *addralign,uint64_t *size)" identifier (parameter_list "(Output_section_definition *this,char *name,uint64_t *address,uint64_t *load_address,\n          uint64_t *addralign,uint64_t *size)" ( (parameter_declaration "Output_section_definition *this" type_identifier (pointer_declarator "*this" * identifier)) , (parameter_declaration "char *name" primitive_type (pointer_declarator "*name" * identifier)) , (parameter_declaration "uint64_t *address" primitive_type (pointer_declarator "*address" * identifier)) , (parameter_declaration "uint64_t *load_address" primitive_type (pointer_declarator "*load_address" * identifier)) , (parameter_declaration "uint64_t *addralign" primitive_type (pointer_declarator "*addralign" * identifier)) , (parameter_declaration "uint64_t *size" primitive_type (pointer_declarator "*size" * identifier)) ))) (compound_statement "{\n  byte bVar1;\n  off_t oVar2;\n  byte bVar3;\n  int iVar4;\n  undefined4 uVar5;\n  undefined4 extraout_EDX;\n  undefined4 extraout_EDX_00;\n  int unaff_EDI;\n  Output_section *local_28;\n  _func_int_varargs **local_24;\n  \n  __x86_get_pc_thunk_di();\n  iVar4 = std::string::compare((char *)&this->name_);\n  if (iVar4 != 0) {\n    return false;\n  }\n  local_28 = this->output_section_;\n  if (local_28 != (Output_section *)0x0) {\n    bVar1 = (local_28->super_Output_data).field_0x1c;\n    if ((bVar1 & 1) == 0) {\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable((char *)(unaff_EDI + 0x11d136),0xc5,(char *)(unaff_EDI + 0x1672e1));\n    }\n    uVar5 = *(undefined4 *)((int)&(local_28->super_Output_data).address_ + 4);\n    *(int *)address = (int)(local_28->super_Output_data).address_;\n    *(undefined4 *)((int)address + 4) = uVar5;\n    local_24 = (local_28->super_Output_data)._vptr_Output_data;\n    if (local_24[4] == (_func_int_varargs *)(unaff_EDI + -0x1ec177)) {\n      bVar3 = (byte)local_28->field_0x90 >> 7;\n    }\n    else {\n      iVar4 = (*local_24[4])(local_28,name);\n      bVar3 = (byte)iVar4;\n      local_28 = this->output_section_;\n      local_24 = (local_28->super_Output_data)._vptr_Output_data;\n    }\n    if (bVar3 == 0) {\n      uVar5 = *(undefined4 *)((int)address + 4);\n      *(int *)load_address = (int)*address;\n      *(undefined4 *)((int)load_address + 4) = uVar5;\n    }\n    else {\n      if (local_24[5] == (_func_int_varargs *)(unaff_EDI + -0x1ebfe7)) {\n        if (-1 < (char)local_28->field_0x90) {\n                    /* WARNING: Subroutine does not return */\n          do_gold_unreachable((char *)(unaff_EDI + 0x11d136),0x107b,(char *)(unaff_EDI + 0x1672a5));\n        }\n        uVar5 = *(undefined4 *)((int)&local_28->load_address_ + 4);\n        iVar4 = (int)local_28->load_address_;\n      }\n      else {\n        iVar4 = (*local_24[5])(local_28);\n        local_28 = this->output_section_;\n        local_24 = (local_28->super_Output_data)._vptr_Output_data;\n        uVar5 = extraout_EDX_00;\n      }\n      *(int *)load_address = iVar4;\n      *(undefined4 *)((int)load_address + 4) = uVar5;\n    }\n    if (local_24[3] == (_func_int_varargs *)(unaff_EDI + -0x22e9f7)) {\n      uVar5 = *(undefined4 *)((int)&local_28->addralign_ + 4);\n      iVar4 = (int)local_28->addralign_;\n    }\n    else {\n      iVar4 = (*local_24[3])(local_28);\n      local_28 = this->output_section_;\n      uVar5 = extraout_EDX;\n    }\n    *(int *)addralign = iVar4;\n    *(undefined4 *)((int)addralign + 4) = uVar5;\n    oVar2 = (local_28->super_Output_data).data_size_;\n    *(undefined4 *)((int)size + 4) =\n         *(undefined4 *)((int)&(local_28->super_Output_data).data_size_ + 4);\n    *(int *)size = (int)oVar2;\n    return (bool)(bVar1 & 1);\n  }\n  uVar5 = *(undefined4 *)((int)&this->evaluated_address_ + 4);\n  *(int *)address = (int)this->evaluated_address_;\n  *(undefined4 *)((int)address + 4) = uVar5;\n  uVar5 = *(undefined4 *)((int)&this->evaluated_load_address_ + 4);\n  *(int *)load_address = (int)this->evaluated_load_address_;\n  *(undefined4 *)((int)load_address + 4) = uVar5;\n  uVar5 = *(undefined4 *)((int)&this->evaluated_addralign_ + 4);\n  *(int *)addralign = (int)this->evaluated_addralign_;\n  *(undefined4 *)((int)addralign + 4) = uVar5;\n  *(undefined4 *)size = 0;\n  *(undefined4 *)((int)size + 4) = 0;\n  return true;\n}" { (declaration "byte bVar1;" type_identifier identifier ;) (declaration "off_t oVar2;" type_identifier identifier ;) (declaration "byte bVar3;" type_identifier identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "undefined4 uVar5;" type_identifier identifier ;) (declaration "undefined4 extraout_EDX;" type_identifier identifier ;) (declaration "undefined4 extraout_EDX_00;" type_identifier identifier ;) (declaration "int unaff_EDI;" primitive_type identifier ;) (declaration "Output_section *local_28;" type_identifier (pointer_declarator "*local_28" * identifier) ;) (declaration "_func_int_varargs **local_24;" type_identifier (pointer_declarator "**local_24" * (pointer_declarator "*local_24" * identifier)) ;) (expression_statement "__x86_get_pc_thunk_di();" (call_expression "__x86_get_pc_thunk_di()" identifier (argument_list "()" ( ))) ;) (ERROR "iVar4 = std::" (assignment_expression "iVar4 = std" identifier = identifier) : :) (labeled_statement "string::compare((char *)&this->name_);" statement_identifier : (ERROR ":" :) (expression_statement "compare((char *)&this->name_);" (call_expression "compare((char *)&this->name_)" identifier (argument_list "((char *)&this->name_)" ( (cast_expression "(char *)&this->name_" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "&this->name_" & (field_expression "this->name_" identifier -> field_identifier))) ))) ;)) (if_statement "if (iVar4 != 0) {\n    return false;\n  }" if (parenthesized_expression "(iVar4 != 0)" ( (binary_expression "iVar4 != 0" identifier != number_literal) )) (compound_statement "{\n    return false;\n  }" { (return_statement "return false;" return false ;) })) (expression_statement "local_28 = this->output_section_;" (assignment_expression "local_28 = this->output_section_" identifier = (field_expression "this->output_section_" identifier -> field_identifier)) ;) (if_statement "if (local_28 != (Output_section *)0x0) {\n    bVar1 = (local_28->super_Output_data).field_0x1c;\n    if ((bVar1 & 1) == 0) {\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable((char *)(unaff_EDI + 0x11d136),0xc5,(char *)(unaff_EDI + 0x1672e1));\n    }\n    uVar5 = *(undefined4 *)((int)&(local_28->super_Output_data).address_ + 4);\n    *(int *)address = (int)(local_28->super_Output_data).address_;\n    *(undefined4 *)((int)address + 4) = uVar5;\n    local_24 = (local_28->super_Output_data)._vptr_Output_data;\n    if (local_24[4] == (_func_int_varargs *)(unaff_EDI + -0x1ec177)) {\n      bVar3 = (byte)local_28->field_0x90 >> 7;\n    }\n    else {\n      iVar4 = (*local_24[4])(local_28,name);\n      bVar3 = (byte)iVar4;\n      local_28 = this->output_section_;\n      local_24 = (local_28->super_Output_data)._vptr_Output_data;\n    }\n    if (bVar3 == 0) {\n      uVar5 = *(undefined4 *)((int)address + 4);\n      *(int *)load_address = (int)*address;\n      *(undefined4 *)((int)load_address + 4) = uVar5;\n    }\n    else {\n      if (local_24[5] == (_func_int_varargs *)(unaff_EDI + -0x1ebfe7)) {\n        if (-1 < (char)local_28->field_0x90) {\n                    /* WARNING: Subroutine does not return */\n          do_gold_unreachable((char *)(unaff_EDI + 0x11d136),0x107b,(char *)(unaff_EDI + 0x1672a5));\n        }\n        uVar5 = *(undefined4 *)((int)&local_28->load_address_ + 4);\n        iVar4 = (int)local_28->load_address_;\n      }\n      else {\n        iVar4 = (*local_24[5])(local_28);\n        local_28 = this->output_section_;\n        local_24 = (local_28->super_Output_data)._vptr_Output_data;\n        uVar5 = extraout_EDX_00;\n      }\n      *(int *)load_address = iVar4;\n      *(undefined4 *)((int)load_address + 4) = uVar5;\n    }\n    if (local_24[3] == (_func_int_varargs *)(unaff_EDI + -0x22e9f7)) {\n      uVar5 = *(undefined4 *)((int)&local_28->addralign_ + 4);\n      iVar4 = (int)local_28->addralign_;\n    }\n    else {\n      iVar4 = (*local_24[3])(local_28);\n      local_28 = this->output_section_;\n      uVar5 = extraout_EDX;\n    }\n    *(int *)addralign = iVar4;\n    *(undefined4 *)((int)addralign + 4) = uVar5;\n    oVar2 = (local_28->super_Output_data).data_size_;\n    *(undefined4 *)((int)size + 4) =\n         *(undefined4 *)((int)&(local_28->super_Output_data).data_size_ + 4);\n    *(int *)size = (int)oVar2;\n    return (bool)(bVar1 & 1);\n  }" if (parenthesized_expression "(local_28 != (Output_section *)0x0)" ( (binary_expression "local_28 != (Output_section *)0x0" identifier != (cast_expression "(Output_section *)0x0" ( (type_descriptor "Output_section *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    bVar1 = (local_28->super_Output_data).field_0x1c;\n    if ((bVar1 & 1) == 0) {\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable((char *)(unaff_EDI + 0x11d136),0xc5,(char *)(unaff_EDI + 0x1672e1));\n    }\n    uVar5 = *(undefined4 *)((int)&(local_28->super_Output_data).address_ + 4);\n    *(int *)address = (int)(local_28->super_Output_data).address_;\n    *(undefined4 *)((int)address + 4) = uVar5;\n    local_24 = (local_28->super_Output_data)._vptr_Output_data;\n    if (local_24[4] == (_func_int_varargs *)(unaff_EDI + -0x1ec177)) {\n      bVar3 = (byte)local_28->field_0x90 >> 7;\n    }\n    else {\n      iVar4 = (*local_24[4])(local_28,name);\n      bVar3 = (byte)iVar4;\n      local_28 = this->output_section_;\n      local_24 = (local_28->super_Output_data)._vptr_Output_data;\n    }\n    if (bVar3 == 0) {\n      uVar5 = *(undefined4 *)((int)address + 4);\n      *(int *)load_address = (int)*address;\n      *(undefined4 *)((int)load_address + 4) = uVar5;\n    }\n    else {\n      if (local_24[5] == (_func_int_varargs *)(unaff_EDI + -0x1ebfe7)) {\n        if (-1 < (char)local_28->field_0x90) {\n                    /* WARNING: Subroutine does not return */\n          do_gold_unreachable((char *)(unaff_EDI + 0x11d136),0x107b,(char *)(unaff_EDI + 0x1672a5));\n        }\n        uVar5 = *(undefined4 *)((int)&local_28->load_address_ + 4);\n        iVar4 = (int)local_28->load_address_;\n      }\n      else {\n        iVar4 = (*local_24[5])(local_28);\n        local_28 = this->output_section_;\n        local_24 = (local_28->super_Output_data)._vptr_Output_data;\n        uVar5 = extraout_EDX_00;\n      }\n      *(int *)load_address = iVar4;\n      *(undefined4 *)((int)load_address + 4) = uVar5;\n    }\n    if (local_24[3] == (_func_int_varargs *)(unaff_EDI + -0x22e9f7)) {\n      uVar5 = *(undefined4 *)((int)&local_28->addralign_ + 4);\n      iVar4 = (int)local_28->addralign_;\n    }\n    else {\n      iVar4 = (*local_24[3])(local_28);\n      local_28 = this->output_section_;\n      uVar5 = extraout_EDX;\n    }\n    *(int *)addralign = iVar4;\n    *(undefined4 *)((int)addralign + 4) = uVar5;\n    oVar2 = (local_28->super_Output_data).data_size_;\n    *(undefined4 *)((int)size + 4) =\n         *(undefined4 *)((int)&(local_28->super_Output_data).data_size_ + 4);\n    *(int *)size = (int)oVar2;\n    return (bool)(bVar1 & 1);\n  }" { (expression_statement "bVar1 = (local_28->super_Output_data).field_0x1c;" (assignment_expression "bVar1 = (local_28->super_Output_data).field_0x1c" identifier = (field_expression "(local_28->super_Output_data).field_0x1c" (parenthesized_expression "(local_28->super_Output_data)" ( (field_expression "local_28->super_Output_data" identifier -> field_identifier) )) . field_identifier)) ;) (if_statement "if ((bVar1 & 1) == 0) {\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable((char *)(unaff_EDI + 0x11d136),0xc5,(char *)(unaff_EDI + 0x1672e1));\n    }" if (parenthesized_expression "((bVar1 & 1) == 0)" ( (binary_expression "(bVar1 & 1) == 0" (parenthesized_expression "(bVar1 & 1)" ( (binary_expression "bVar1 & 1" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable((char *)(unaff_EDI + 0x11d136),0xc5,(char *)(unaff_EDI + 0x1672e1));\n    }" { comment (expression_statement "do_gold_unreachable((char *)(unaff_EDI + 0x11d136),0xc5,(char *)(unaff_EDI + 0x1672e1));" (call_expression "do_gold_unreachable((char *)(unaff_EDI + 0x11d136),0xc5,(char *)(unaff_EDI + 0x1672e1))" identifier (argument_list "((char *)(unaff_EDI + 0x11d136),0xc5,(char *)(unaff_EDI + 0x1672e1))" ( (cast_expression "(char *)(unaff_EDI + 0x11d136)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x11d136)" ( (binary_expression "unaff_EDI + 0x11d136" identifier + number_literal) ))) , number_literal , (cast_expression "(char *)(unaff_EDI + 0x1672e1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x1672e1)" ( (binary_expression "unaff_EDI + 0x1672e1" identifier + number_literal) ))) ))) ;) })) (expression_statement "uVar5 = *(undefined4 *)((int)&(local_28->super_Output_data).address_ + 4);" (assignment_expression "uVar5 = *(undefined4 *)((int)&(local_28->super_Output_data).address_ + 4)" identifier = (pointer_expression "*(undefined4 *)((int)&(local_28->super_Output_data).address_ + 4)" * (cast_expression "(undefined4 *)((int)&(local_28->super_Output_data).address_ + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&(local_28->super_Output_data).address_ + 4)" ( (binary_expression "(int)&(local_28->super_Output_data).address_ + 4" (cast_expression "(int)&(local_28->super_Output_data).address_" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&(local_28->super_Output_data).address_" & (field_expression "(local_28->super_Output_data).address_" (parenthesized_expression "(local_28->super_Output_data)" ( (field_expression "local_28->super_Output_data" identifier -> field_identifier) )) . field_identifier))) + number_literal) ))))) ;) (expression_statement "*(int *)address = (int)(local_28->super_Output_data).address_;" (assignment_expression "*(int *)address = (int)(local_28->super_Output_data).address_" (pointer_expression "*(int *)address" * (cast_expression "(int *)address" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) = (cast_expression "(int)(local_28->super_Output_data).address_" ( (type_descriptor "int" primitive_type) ) (field_expression "(local_28->super_Output_data).address_" (parenthesized_expression "(local_28->super_Output_data)" ( (field_expression "local_28->super_Output_data" identifier -> field_identifier) )) . field_identifier))) ;) (expression_statement "*(undefined4 *)((int)address + 4) = uVar5;" (assignment_expression "*(undefined4 *)((int)address + 4) = uVar5" (pointer_expression "*(undefined4 *)((int)address + 4)" * (cast_expression "(undefined4 *)((int)address + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)address + 4)" ( (binary_expression "(int)address + 4" (cast_expression "(int)address" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "local_24 = (local_28->super_Output_data)._vptr_Output_data;" (assignment_expression "local_24 = (local_28->super_Output_data)._vptr_Output_data" identifier = (field_expression "(local_28->super_Output_data)._vptr_Output_data" (parenthesized_expression "(local_28->super_Output_data)" ( (field_expression "local_28->super_Output_data" identifier -> field_identifier) )) . field_identifier)) ;) (if_statement "if (local_24[4] == (_func_int_varargs *)(unaff_EDI + -0x1ec177)) {\n      bVar3 = (byte)local_28->field_0x90 >> 7;\n    }\n    else {\n      iVar4 = (*local_24[4])(local_28,name);\n      bVar3 = (byte)iVar4;\n      local_28 = this->output_section_;\n      local_24 = (local_28->super_Output_data)._vptr_Output_data;\n    }" if (parenthesized_expression "(local_24[4] == (_func_int_varargs *)(unaff_EDI + -0x1ec177))" ( (binary_expression "local_24[4] == (_func_int_varargs *)(unaff_EDI + -0x1ec177)" (subscript_expression "local_24[4]" identifier [ number_literal ]) == (cast_expression "(_func_int_varargs *)(unaff_EDI + -0x1ec177)" ( (type_descriptor "_func_int_varargs *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + -0x1ec177)" ( (binary_expression "unaff_EDI + -0x1ec177" identifier + number_literal) )))) )) (compound_statement "{\n      bVar3 = (byte)local_28->field_0x90 >> 7;\n    }" { (expression_statement "bVar3 = (byte)local_28->field_0x90 >> 7;" (assignment_expression "bVar3 = (byte)local_28->field_0x90 >> 7" identifier = (binary_expression "(byte)local_28->field_0x90 >> 7" (cast_expression "(byte)local_28->field_0x90" ( (type_descriptor "byte" type_identifier) ) (field_expression "local_28->field_0x90" identifier -> field_identifier)) >> number_literal)) ;) }) (else_clause "else {\n      iVar4 = (*local_24[4])(local_28,name);\n      bVar3 = (byte)iVar4;\n      local_28 = this->output_section_;\n      local_24 = (local_28->super_Output_data)._vptr_Output_data;\n    }" else (compound_statement "{\n      iVar4 = (*local_24[4])(local_28,name);\n      bVar3 = (byte)iVar4;\n      local_28 = this->output_section_;\n      local_24 = (local_28->super_Output_data)._vptr_Output_data;\n    }" { (expression_statement "iVar4 = (*local_24[4])(local_28,name);" (assignment_expression "iVar4 = (*local_24[4])(local_28,name)" identifier = (call_expression "(*local_24[4])(local_28,name)" (parenthesized_expression "(*local_24[4])" ( (pointer_expression "*local_24[4]" * (subscript_expression "local_24[4]" identifier [ number_literal ])) )) (argument_list "(local_28,name)" ( identifier , identifier )))) ;) (expression_statement "bVar3 = (byte)iVar4;" (assignment_expression "bVar3 = (byte)iVar4" identifier = (cast_expression "(byte)iVar4" ( (type_descriptor "byte" type_identifier) ) identifier)) ;) (expression_statement "local_28 = this->output_section_;" (assignment_expression "local_28 = this->output_section_" identifier = (field_expression "this->output_section_" identifier -> field_identifier)) ;) (expression_statement "local_24 = (local_28->super_Output_data)._vptr_Output_data;" (assignment_expression "local_24 = (local_28->super_Output_data)._vptr_Output_data" identifier = (field_expression "(local_28->super_Output_data)._vptr_Output_data" (parenthesized_expression "(local_28->super_Output_data)" ( (field_expression "local_28->super_Output_data" identifier -> field_identifier) )) . field_identifier)) ;) }))) (if_statement "if (bVar3 == 0) {\n      uVar5 = *(undefined4 *)((int)address + 4);\n      *(int *)load_address = (int)*address;\n      *(undefined4 *)((int)load_address + 4) = uVar5;\n    }\n    else {\n      if (local_24[5] == (_func_int_varargs *)(unaff_EDI + -0x1ebfe7)) {\n        if (-1 < (char)local_28->field_0x90) {\n                    /* WARNING: Subroutine does not return */\n          do_gold_unreachable((char *)(unaff_EDI + 0x11d136),0x107b,(char *)(unaff_EDI + 0x1672a5));\n        }\n        uVar5 = *(undefined4 *)((int)&local_28->load_address_ + 4);\n        iVar4 = (int)local_28->load_address_;\n      }\n      else {\n        iVar4 = (*local_24[5])(local_28);\n        local_28 = this->output_section_;\n        local_24 = (local_28->super_Output_data)._vptr_Output_data;\n        uVar5 = extraout_EDX_00;\n      }\n      *(int *)load_address = iVar4;\n      *(undefined4 *)((int)load_address + 4) = uVar5;\n    }" if (parenthesized_expression "(bVar3 == 0)" ( (binary_expression "bVar3 == 0" identifier == number_literal) )) (compound_statement "{\n      uVar5 = *(undefined4 *)((int)address + 4);\n      *(int *)load_address = (int)*address;\n      *(undefined4 *)((int)load_address + 4) = uVar5;\n    }" { (expression_statement "uVar5 = *(undefined4 *)((int)address + 4);" (assignment_expression "uVar5 = *(undefined4 *)((int)address + 4)" identifier = (pointer_expression "*(undefined4 *)((int)address + 4)" * (cast_expression "(undefined4 *)((int)address + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)address + 4)" ( (binary_expression "(int)address + 4" (cast_expression "(int)address" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (expression_statement "*(int *)load_address = (int)*address;" (assignment_expression "*(int *)load_address = (int)*address" (pointer_expression "*(int *)load_address" * (cast_expression "(int *)load_address" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) = (cast_expression "(int)*address" ( (type_descriptor "int" primitive_type) ) (pointer_expression "*address" * identifier))) ;) (expression_statement "*(undefined4 *)((int)load_address + 4) = uVar5;" (assignment_expression "*(undefined4 *)((int)load_address + 4) = uVar5" (pointer_expression "*(undefined4 *)((int)load_address + 4)" * (cast_expression "(undefined4 *)((int)load_address + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)load_address + 4)" ( (binary_expression "(int)load_address + 4" (cast_expression "(int)load_address" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) }) (else_clause "else {\n      if (local_24[5] == (_func_int_varargs *)(unaff_EDI + -0x1ebfe7)) {\n        if (-1 < (char)local_28->field_0x90) {\n                    /* WARNING: Subroutine does not return */\n          do_gold_unreachable((char *)(unaff_EDI + 0x11d136),0x107b,(char *)(unaff_EDI + 0x1672a5));\n        }\n        uVar5 = *(undefined4 *)((int)&local_28->load_address_ + 4);\n        iVar4 = (int)local_28->load_address_;\n      }\n      else {\n        iVar4 = (*local_24[5])(local_28);\n        local_28 = this->output_section_;\n        local_24 = (local_28->super_Output_data)._vptr_Output_data;\n        uVar5 = extraout_EDX_00;\n      }\n      *(int *)load_address = iVar4;\n      *(undefined4 *)((int)load_address + 4) = uVar5;\n    }" else (compound_statement "{\n      if (local_24[5] == (_func_int_varargs *)(unaff_EDI + -0x1ebfe7)) {\n        if (-1 < (char)local_28->field_0x90) {\n                    /* WARNING: Subroutine does not return */\n          do_gold_unreachable((char *)(unaff_EDI + 0x11d136),0x107b,(char *)(unaff_EDI + 0x1672a5));\n        }\n        uVar5 = *(undefined4 *)((int)&local_28->load_address_ + 4);\n        iVar4 = (int)local_28->load_address_;\n      }\n      else {\n        iVar4 = (*local_24[5])(local_28);\n        local_28 = this->output_section_;\n        local_24 = (local_28->super_Output_data)._vptr_Output_data;\n        uVar5 = extraout_EDX_00;\n      }\n      *(int *)load_address = iVar4;\n      *(undefined4 *)((int)load_address + 4) = uVar5;\n    }" { (if_statement "if (local_24[5] == (_func_int_varargs *)(unaff_EDI + -0x1ebfe7)) {\n        if (-1 < (char)local_28->field_0x90) {\n                    /* WARNING: Subroutine does not return */\n          do_gold_unreachable((char *)(unaff_EDI + 0x11d136),0x107b,(char *)(unaff_EDI + 0x1672a5));\n        }\n        uVar5 = *(undefined4 *)((int)&local_28->load_address_ + 4);\n        iVar4 = (int)local_28->load_address_;\n      }\n      else {\n        iVar4 = (*local_24[5])(local_28);\n        local_28 = this->output_section_;\n        local_24 = (local_28->super_Output_data)._vptr_Output_data;\n        uVar5 = extraout_EDX_00;\n      }" if (parenthesized_expression "(local_24[5] == (_func_int_varargs *)(unaff_EDI + -0x1ebfe7))" ( (binary_expression "local_24[5] == (_func_int_varargs *)(unaff_EDI + -0x1ebfe7)" (subscript_expression "local_24[5]" identifier [ number_literal ]) == (cast_expression "(_func_int_varargs *)(unaff_EDI + -0x1ebfe7)" ( (type_descriptor "_func_int_varargs *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + -0x1ebfe7)" ( (binary_expression "unaff_EDI + -0x1ebfe7" identifier + number_literal) )))) )) (compound_statement "{\n        if (-1 < (char)local_28->field_0x90) {\n                    /* WARNING: Subroutine does not return */\n          do_gold_unreachable((char *)(unaff_EDI + 0x11d136),0x107b,(char *)(unaff_EDI + 0x1672a5));\n        }\n        uVar5 = *(undefined4 *)((int)&local_28->load_address_ + 4);\n        iVar4 = (int)local_28->load_address_;\n      }" { (if_statement "if (-1 < (char)local_28->field_0x90) {\n                    /* WARNING: Subroutine does not return */\n          do_gold_unreachable((char *)(unaff_EDI + 0x11d136),0x107b,(char *)(unaff_EDI + 0x1672a5));\n        }" if (parenthesized_expression "(-1 < (char)local_28->field_0x90)" ( (binary_expression "-1 < (char)local_28->field_0x90" number_literal < (cast_expression "(char)local_28->field_0x90" ( (type_descriptor "char" primitive_type) ) (field_expression "local_28->field_0x90" identifier -> field_identifier))) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n          do_gold_unreachable((char *)(unaff_EDI + 0x11d136),0x107b,(char *)(unaff_EDI + 0x1672a5));\n        }" { comment (expression_statement "do_gold_unreachable((char *)(unaff_EDI + 0x11d136),0x107b,(char *)(unaff_EDI + 0x1672a5));" (call_expression "do_gold_unreachable((char *)(unaff_EDI + 0x11d136),0x107b,(char *)(unaff_EDI + 0x1672a5))" identifier (argument_list "((char *)(unaff_EDI + 0x11d136),0x107b,(char *)(unaff_EDI + 0x1672a5))" ( (cast_expression "(char *)(unaff_EDI + 0x11d136)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x11d136)" ( (binary_expression "unaff_EDI + 0x11d136" identifier + number_literal) ))) , number_literal , (cast_expression "(char *)(unaff_EDI + 0x1672a5)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x1672a5)" ( (binary_expression "unaff_EDI + 0x1672a5" identifier + number_literal) ))) ))) ;) })) (expression_statement "uVar5 = *(undefined4 *)((int)&local_28->load_address_ + 4);" (assignment_expression "uVar5 = *(undefined4 *)((int)&local_28->load_address_ + 4)" identifier = (pointer_expression "*(undefined4 *)((int)&local_28->load_address_ + 4)" * (cast_expression "(undefined4 *)((int)&local_28->load_address_ + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&local_28->load_address_ + 4)" ( (binary_expression "(int)&local_28->load_address_ + 4" (cast_expression "(int)&local_28->load_address_" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&local_28->load_address_" & (field_expression "local_28->load_address_" identifier -> field_identifier))) + number_literal) ))))) ;) (expression_statement "iVar4 = (int)local_28->load_address_;" (assignment_expression "iVar4 = (int)local_28->load_address_" identifier = (cast_expression "(int)local_28->load_address_" ( (type_descriptor "int" primitive_type) ) (field_expression "local_28->load_address_" identifier -> field_identifier))) ;) }) (else_clause "else {\n        iVar4 = (*local_24[5])(local_28);\n        local_28 = this->output_section_;\n        local_24 = (local_28->super_Output_data)._vptr_Output_data;\n        uVar5 = extraout_EDX_00;\n      }" else (compound_statement "{\n        iVar4 = (*local_24[5])(local_28);\n        local_28 = this->output_section_;\n        local_24 = (local_28->super_Output_data)._vptr_Output_data;\n        uVar5 = extraout_EDX_00;\n      }" { (expression_statement "iVar4 = (*local_24[5])(local_28);" (assignment_expression "iVar4 = (*local_24[5])(local_28)" identifier = (call_expression "(*local_24[5])(local_28)" (parenthesized_expression "(*local_24[5])" ( (pointer_expression "*local_24[5]" * (subscript_expression "local_24[5]" identifier [ number_literal ])) )) (argument_list "(local_28)" ( identifier )))) ;) (expression_statement "local_28 = this->output_section_;" (assignment_expression "local_28 = this->output_section_" identifier = (field_expression "this->output_section_" identifier -> field_identifier)) ;) (expression_statement "local_24 = (local_28->super_Output_data)._vptr_Output_data;" (assignment_expression "local_24 = (local_28->super_Output_data)._vptr_Output_data" identifier = (field_expression "(local_28->super_Output_data)._vptr_Output_data" (parenthesized_expression "(local_28->super_Output_data)" ( (field_expression "local_28->super_Output_data" identifier -> field_identifier) )) . field_identifier)) ;) (expression_statement "uVar5 = extraout_EDX_00;" (assignment_expression "uVar5 = extraout_EDX_00" identifier = identifier) ;) }))) (expression_statement "*(int *)load_address = iVar4;" (assignment_expression "*(int *)load_address = iVar4" (pointer_expression "*(int *)load_address" * (cast_expression "(int *)load_address" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) = identifier) ;) (expression_statement "*(undefined4 *)((int)load_address + 4) = uVar5;" (assignment_expression "*(undefined4 *)((int)load_address + 4) = uVar5" (pointer_expression "*(undefined4 *)((int)load_address + 4)" * (cast_expression "(undefined4 *)((int)load_address + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)load_address + 4)" ( (binary_expression "(int)load_address + 4" (cast_expression "(int)load_address" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) }))) (if_statement "if (local_24[3] == (_func_int_varargs *)(unaff_EDI + -0x22e9f7)) {\n      uVar5 = *(undefined4 *)((int)&local_28->addralign_ + 4);\n      iVar4 = (int)local_28->addralign_;\n    }\n    else {\n      iVar4 = (*local_24[3])(local_28);\n      local_28 = this->output_section_;\n      uVar5 = extraout_EDX;\n    }" if (parenthesized_expression "(local_24[3] == (_func_int_varargs *)(unaff_EDI + -0x22e9f7))" ( (binary_expression "local_24[3] == (_func_int_varargs *)(unaff_EDI + -0x22e9f7)" (subscript_expression "local_24[3]" identifier [ number_literal ]) == (cast_expression "(_func_int_varargs *)(unaff_EDI + -0x22e9f7)" ( (type_descriptor "_func_int_varargs *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + -0x22e9f7)" ( (binary_expression "unaff_EDI + -0x22e9f7" identifier + number_literal) )))) )) (compound_statement "{\n      uVar5 = *(undefined4 *)((int)&local_28->addralign_ + 4);\n      iVar4 = (int)local_28->addralign_;\n    }" { (expression_statement "uVar5 = *(undefined4 *)((int)&local_28->addralign_ + 4);" (assignment_expression "uVar5 = *(undefined4 *)((int)&local_28->addralign_ + 4)" identifier = (pointer_expression "*(undefined4 *)((int)&local_28->addralign_ + 4)" * (cast_expression "(undefined4 *)((int)&local_28->addralign_ + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&local_28->addralign_ + 4)" ( (binary_expression "(int)&local_28->addralign_ + 4" (cast_expression "(int)&local_28->addralign_" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&local_28->addralign_" & (field_expression "local_28->addralign_" identifier -> field_identifier))) + number_literal) ))))) ;) (expression_statement "iVar4 = (int)local_28->addralign_;" (assignment_expression "iVar4 = (int)local_28->addralign_" identifier = (cast_expression "(int)local_28->addralign_" ( (type_descriptor "int" primitive_type) ) (field_expression "local_28->addralign_" identifier -> field_identifier))) ;) }) (else_clause "else {\n      iVar4 = (*local_24[3])(local_28);\n      local_28 = this->output_section_;\n      uVar5 = extraout_EDX;\n    }" else (compound_statement "{\n      iVar4 = (*local_24[3])(local_28);\n      local_28 = this->output_section_;\n      uVar5 = extraout_EDX;\n    }" { (expression_statement "iVar4 = (*local_24[3])(local_28);" (assignment_expression "iVar4 = (*local_24[3])(local_28)" identifier = (call_expression "(*local_24[3])(local_28)" (parenthesized_expression "(*local_24[3])" ( (pointer_expression "*local_24[3]" * (subscript_expression "local_24[3]" identifier [ number_literal ])) )) (argument_list "(local_28)" ( identifier )))) ;) (expression_statement "local_28 = this->output_section_;" (assignment_expression "local_28 = this->output_section_" identifier = (field_expression "this->output_section_" identifier -> field_identifier)) ;) (expression_statement "uVar5 = extraout_EDX;" (assignment_expression "uVar5 = extraout_EDX" identifier = identifier) ;) }))) (expression_statement "*(int *)addralign = iVar4;" (assignment_expression "*(int *)addralign = iVar4" (pointer_expression "*(int *)addralign" * (cast_expression "(int *)addralign" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) = identifier) ;) (expression_statement "*(undefined4 *)((int)addralign + 4) = uVar5;" (assignment_expression "*(undefined4 *)((int)addralign + 4) = uVar5" (pointer_expression "*(undefined4 *)((int)addralign + 4)" * (cast_expression "(undefined4 *)((int)addralign + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)addralign + 4)" ( (binary_expression "(int)addralign + 4" (cast_expression "(int)addralign" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "oVar2 = (local_28->super_Output_data).data_size_;" (assignment_expression "oVar2 = (local_28->super_Output_data).data_size_" identifier = (field_expression "(local_28->super_Output_data).data_size_" (parenthesized_expression "(local_28->super_Output_data)" ( (field_expression "local_28->super_Output_data" identifier -> field_identifier) )) . field_identifier)) ;) (expression_statement "*(undefined4 *)((int)size + 4) =\n         *(undefined4 *)((int)&(local_28->super_Output_data).data_size_ + 4);" (assignment_expression "*(undefined4 *)((int)size + 4) =\n         *(undefined4 *)((int)&(local_28->super_Output_data).data_size_ + 4)" (pointer_expression "*(undefined4 *)((int)size + 4)" * (cast_expression "(undefined4 *)((int)size + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)size + 4)" ( (binary_expression "(int)size + 4" (cast_expression "(int)size" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (pointer_expression "*(undefined4 *)((int)&(local_28->super_Output_data).data_size_ + 4)" * (cast_expression "(undefined4 *)((int)&(local_28->super_Output_data).data_size_ + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&(local_28->super_Output_data).data_size_ + 4)" ( (binary_expression "(int)&(local_28->super_Output_data).data_size_ + 4" (cast_expression "(int)&(local_28->super_Output_data).data_size_" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&(local_28->super_Output_data).data_size_" & (field_expression "(local_28->super_Output_data).data_size_" (parenthesized_expression "(local_28->super_Output_data)" ( (field_expression "local_28->super_Output_data" identifier -> field_identifier) )) . field_identifier))) + number_literal) ))))) ;) (expression_statement "*(int *)size = (int)oVar2;" (assignment_expression "*(int *)size = (int)oVar2" (pointer_expression "*(int *)size" * (cast_expression "(int *)size" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) = (cast_expression "(int)oVar2" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (return_statement "return (bool)(bVar1 & 1);" return (cast_expression "(bool)(bVar1 & 1)" ( (type_descriptor "bool" primitive_type) ) (parenthesized_expression "(bVar1 & 1)" ( (binary_expression "bVar1 & 1" identifier & number_literal) ))) ;) })) (expression_statement "uVar5 = *(undefined4 *)((int)&this->evaluated_address_ + 4);" (assignment_expression "uVar5 = *(undefined4 *)((int)&this->evaluated_address_ + 4)" identifier = (pointer_expression "*(undefined4 *)((int)&this->evaluated_address_ + 4)" * (cast_expression "(undefined4 *)((int)&this->evaluated_address_ + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&this->evaluated_address_ + 4)" ( (binary_expression "(int)&this->evaluated_address_ + 4" (cast_expression "(int)&this->evaluated_address_" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&this->evaluated_address_" & (field_expression "this->evaluated_address_" identifier -> field_identifier))) + number_literal) ))))) ;) (expression_statement "*(int *)address = (int)this->evaluated_address_;" (assignment_expression "*(int *)address = (int)this->evaluated_address_" (pointer_expression "*(int *)address" * (cast_expression "(int *)address" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) = (cast_expression "(int)this->evaluated_address_" ( (type_descriptor "int" primitive_type) ) (field_expression "this->evaluated_address_" identifier -> field_identifier))) ;) (expression_statement "*(undefined4 *)((int)address + 4) = uVar5;" (assignment_expression "*(undefined4 *)((int)address + 4) = uVar5" (pointer_expression "*(undefined4 *)((int)address + 4)" * (cast_expression "(undefined4 *)((int)address + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)address + 4)" ( (binary_expression "(int)address + 4" (cast_expression "(int)address" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "uVar5 = *(undefined4 *)((int)&this->evaluated_load_address_ + 4);" (assignment_expression "uVar5 = *(undefined4 *)((int)&this->evaluated_load_address_ + 4)" identifier = (pointer_expression "*(undefined4 *)((int)&this->evaluated_load_address_ + 4)" * (cast_expression "(undefined4 *)((int)&this->evaluated_load_address_ + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&this->evaluated_load_address_ + 4)" ( (binary_expression "(int)&this->evaluated_load_address_ + 4" (cast_expression "(int)&this->evaluated_load_address_" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&this->evaluated_load_address_" & (field_expression "this->evaluated_load_address_" identifier -> field_identifier))) + number_literal) ))))) ;) (expression_statement "*(int *)load_address = (int)this->evaluated_load_address_;" (assignment_expression "*(int *)load_address = (int)this->evaluated_load_address_" (pointer_expression "*(int *)load_address" * (cast_expression "(int *)load_address" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) = (cast_expression "(int)this->evaluated_load_address_" ( (type_descriptor "int" primitive_type) ) (field_expression "this->evaluated_load_address_" identifier -> field_identifier))) ;) (expression_statement "*(undefined4 *)((int)load_address + 4) = uVar5;" (assignment_expression "*(undefined4 *)((int)load_address + 4) = uVar5" (pointer_expression "*(undefined4 *)((int)load_address + 4)" * (cast_expression "(undefined4 *)((int)load_address + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)load_address + 4)" ( (binary_expression "(int)load_address + 4" (cast_expression "(int)load_address" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "uVar5 = *(undefined4 *)((int)&this->evaluated_addralign_ + 4);" (assignment_expression "uVar5 = *(undefined4 *)((int)&this->evaluated_addralign_ + 4)" identifier = (pointer_expression "*(undefined4 *)((int)&this->evaluated_addralign_ + 4)" * (cast_expression "(undefined4 *)((int)&this->evaluated_addralign_ + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&this->evaluated_addralign_ + 4)" ( (binary_expression "(int)&this->evaluated_addralign_ + 4" (cast_expression "(int)&this->evaluated_addralign_" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&this->evaluated_addralign_" & (field_expression "this->evaluated_addralign_" identifier -> field_identifier))) + number_literal) ))))) ;) (expression_statement "*(int *)addralign = (int)this->evaluated_addralign_;" (assignment_expression "*(int *)addralign = (int)this->evaluated_addralign_" (pointer_expression "*(int *)addralign" * (cast_expression "(int *)addralign" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) = (cast_expression "(int)this->evaluated_addralign_" ( (type_descriptor "int" primitive_type) ) (field_expression "this->evaluated_addralign_" identifier -> field_identifier))) ;) (expression_statement "*(undefined4 *)((int)addralign + 4) = uVar5;" (assignment_expression "*(undefined4 *)((int)addralign + 4) = uVar5" (pointer_expression "*(undefined4 *)((int)addralign + 4)" * (cast_expression "(undefined4 *)((int)addralign + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)addralign + 4)" ( (binary_expression "(int)addralign + 4" (cast_expression "(int)addralign" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)size = 0;" (assignment_expression "*(undefined4 *)size = 0" (pointer_expression "*(undefined4 *)size" * (cast_expression "(undefined4 *)size" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) = number_literal) ;) (expression_statement "*(undefined4 *)((int)size + 4) = 0;" (assignment_expression "*(undefined4 *)((int)size + 4) = 0" (pointer_expression "*(undefined4 *)((int)size + 4)" * (cast_expression "(undefined4 *)((int)size + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)size + 4)" ( (binary_expression "(int)size + 4" (cast_expression "(int)size" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (return_statement "return true;" return true ;) })))
(translation_unit "byte FUN_00330220(int param_1,undefined4 param_2,int *param_3,int *param_4,undefined8 *param_5,\n                 int *param_6)\n\n{\n  byte bVar1;\n  int iVar2;\n  undefined4 uVar3;\n  byte bVar4;\n  int unaff_EDI;\n  undefined8 uVar5;\n  int *local_28;\n  int local_24;\n  \n  FUN_00074f0a();\n  uVar5 = FUN_003b8640(param_1 + 4,param_2);\n  if ((int)uVar5 != 0) {\n    return 0;\n  }\n  local_28 = *(int **)(param_1 + 0x44);\n  if (local_28 != (int *)0x0) {\n    bVar1 = *(byte *)(local_28 + 7);\n    if ((bVar1 & 1) == 0) {\n                    \n      FUN_002446e0(unaff_EDI + 0x11d136,0xc5,&UNK_001672e1 + unaff_EDI,\n                   (int)((ulonglong)uVar5 >> 0x20));\n    }\n    iVar2 = local_28[2];\n    *param_3 = local_28[1];\n    param_3[1] = iVar2;\n    local_24 = *local_28;\n    if (*(code **)(local_24 + 0x10) == (code *)(unaff_EDI + -0x1ec177)) {\n      bVar4 = *(byte *)(local_28 + 0x24) >> 7;\n    }\n    else {\n      bVar4 = (**(code **)(local_24 + 0x10))(local_28);\n      local_28 = *(int **)(param_1 + 0x44);\n      local_24 = *local_28;\n    }\n    if (bVar4 == 0) {\n      iVar2 = param_3[1];\n      *param_4 = *param_3;\n      param_4[1] = iVar2;\n    }\n    else {\n      if (*(code **)(local_24 + 0x14) == (code *)(unaff_EDI + -0x1ebfe7)) {\n        if (-1 < (char)local_28[0x24]) {\n                    \n          FUN_002446e0(unaff_EDI + 0x11d136,0x107b,&UNK_001672a5 + unaff_EDI,local_28);\n        }\n        uVar5 = *(undefined8 *)(local_28 + 0xd);\n      }\n      else {\n        uVar5 = (**(code **)(local_24 + 0x14))(local_28);\n        local_28 = *(int **)(param_1 + 0x44);\n        local_24 = *local_28;\n      }\n      *(undefined8 *)param_4 = uVar5;\n    }\n    if (*(code **)(local_24 + 0xc) == (code *)(unaff_EDI + -0x22e9f7)) {\n      uVar5 = *(undefined8 *)(local_28 + 9);\n    }\n    else {\n      uVar5 = (**(code **)(local_24 + 0xc))(local_28);\n      local_28 = *(int **)(param_1 + 0x44);\n    }\n    *param_5 = uVar5;\n    iVar2 = local_28[3];\n    param_6[1] = local_28[4];\n    *param_6 = iVar2;\n    return bVar1 & 1;\n  }\n  iVar2 = *(int *)(param_1 + 0x4c);\n  *param_3 = *(int *)(param_1 + 0x48);\n  param_3[1] = iVar2;\n  iVar2 = *(int *)(param_1 + 0x54);\n  *param_4 = *(int *)(param_1 + 0x50);\n  param_4[1] = iVar2;\n  uVar3 = *(undefined4 *)(param_1 + 0x5c);\n  *(undefined4 *)param_5 = *(undefined4 *)(param_1 + 0x58);\n  *(undefined4 *)((int)param_5 + 4) = uVar3;\n  *param_6 = 0;\n  param_6[1] = 0;\n  return 1;\n}\n\n" (function_definition "byte FUN_00330220(int param_1,undefined4 param_2,int *param_3,int *param_4,undefined8 *param_5,\n                 int *param_6)\n\n{\n  byte bVar1;\n  int iVar2;\n  undefined4 uVar3;\n  byte bVar4;\n  int unaff_EDI;\n  undefined8 uVar5;\n  int *local_28;\n  int local_24;\n  \n  FUN_00074f0a();\n  uVar5 = FUN_003b8640(param_1 + 4,param_2);\n  if ((int)uVar5 != 0) {\n    return 0;\n  }\n  local_28 = *(int **)(param_1 + 0x44);\n  if (local_28 != (int *)0x0) {\n    bVar1 = *(byte *)(local_28 + 7);\n    if ((bVar1 & 1) == 0) {\n                    \n      FUN_002446e0(unaff_EDI + 0x11d136,0xc5,&UNK_001672e1 + unaff_EDI,\n                   (int)((ulonglong)uVar5 >> 0x20));\n    }\n    iVar2 = local_28[2];\n    *param_3 = local_28[1];\n    param_3[1] = iVar2;\n    local_24 = *local_28;\n    if (*(code **)(local_24 + 0x10) == (code *)(unaff_EDI + -0x1ec177)) {\n      bVar4 = *(byte *)(local_28 + 0x24) >> 7;\n    }\n    else {\n      bVar4 = (**(code **)(local_24 + 0x10))(local_28);\n      local_28 = *(int **)(param_1 + 0x44);\n      local_24 = *local_28;\n    }\n    if (bVar4 == 0) {\n      iVar2 = param_3[1];\n      *param_4 = *param_3;\n      param_4[1] = iVar2;\n    }\n    else {\n      if (*(code **)(local_24 + 0x14) == (code *)(unaff_EDI + -0x1ebfe7)) {\n        if (-1 < (char)local_28[0x24]) {\n                    \n          FUN_002446e0(unaff_EDI + 0x11d136,0x107b,&UNK_001672a5 + unaff_EDI,local_28);\n        }\n        uVar5 = *(undefined8 *)(local_28 + 0xd);\n      }\n      else {\n        uVar5 = (**(code **)(local_24 + 0x14))(local_28);\n        local_28 = *(int **)(param_1 + 0x44);\n        local_24 = *local_28;\n      }\n      *(undefined8 *)param_4 = uVar5;\n    }\n    if (*(code **)(local_24 + 0xc) == (code *)(unaff_EDI + -0x22e9f7)) {\n      uVar5 = *(undefined8 *)(local_28 + 9);\n    }\n    else {\n      uVar5 = (**(code **)(local_24 + 0xc))(local_28);\n      local_28 = *(int **)(param_1 + 0x44);\n    }\n    *param_5 = uVar5;\n    iVar2 = local_28[3];\n    param_6[1] = local_28[4];\n    *param_6 = iVar2;\n    return bVar1 & 1;\n  }\n  iVar2 = *(int *)(param_1 + 0x4c);\n  *param_3 = *(int *)(param_1 + 0x48);\n  param_3[1] = iVar2;\n  iVar2 = *(int *)(param_1 + 0x54);\n  *param_4 = *(int *)(param_1 + 0x50);\n  param_4[1] = iVar2;\n  uVar3 = *(undefined4 *)(param_1 + 0x5c);\n  *(undefined4 *)param_5 = *(undefined4 *)(param_1 + 0x58);\n  *(undefined4 *)((int)param_5 + 4) = uVar3;\n  *param_6 = 0;\n  param_6[1] = 0;\n  return 1;\n}" type_identifier (function_declarator "FUN_00330220(int param_1,undefined4 param_2,int *param_3,int *param_4,undefined8 *param_5,\n                 int *param_6)" identifier (parameter_list "(int param_1,undefined4 param_2,int *param_3,int *param_4,undefined8 *param_5,\n                 int *param_6)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "undefined4 param_2" type_identifier identifier) , (parameter_declaration "int *param_3" primitive_type (pointer_declarator "*param_3" * identifier)) , (parameter_declaration "int *param_4" primitive_type (pointer_declarator "*param_4" * identifier)) , (parameter_declaration "undefined8 *param_5" type_identifier (pointer_declarator "*param_5" * identifier)) , (parameter_declaration "int *param_6" primitive_type (pointer_declarator "*param_6" * identifier)) ))) (compound_statement "{\n  byte bVar1;\n  int iVar2;\n  undefined4 uVar3;\n  byte bVar4;\n  int unaff_EDI;\n  undefined8 uVar5;\n  int *local_28;\n  int local_24;\n  \n  FUN_00074f0a();\n  uVar5 = FUN_003b8640(param_1 + 4,param_2);\n  if ((int)uVar5 != 0) {\n    return 0;\n  }\n  local_28 = *(int **)(param_1 + 0x44);\n  if (local_28 != (int *)0x0) {\n    bVar1 = *(byte *)(local_28 + 7);\n    if ((bVar1 & 1) == 0) {\n                    \n      FUN_002446e0(unaff_EDI + 0x11d136,0xc5,&UNK_001672e1 + unaff_EDI,\n                   (int)((ulonglong)uVar5 >> 0x20));\n    }\n    iVar2 = local_28[2];\n    *param_3 = local_28[1];\n    param_3[1] = iVar2;\n    local_24 = *local_28;\n    if (*(code **)(local_24 + 0x10) == (code *)(unaff_EDI + -0x1ec177)) {\n      bVar4 = *(byte *)(local_28 + 0x24) >> 7;\n    }\n    else {\n      bVar4 = (**(code **)(local_24 + 0x10))(local_28);\n      local_28 = *(int **)(param_1 + 0x44);\n      local_24 = *local_28;\n    }\n    if (bVar4 == 0) {\n      iVar2 = param_3[1];\n      *param_4 = *param_3;\n      param_4[1] = iVar2;\n    }\n    else {\n      if (*(code **)(local_24 + 0x14) == (code *)(unaff_EDI + -0x1ebfe7)) {\n        if (-1 < (char)local_28[0x24]) {\n                    \n          FUN_002446e0(unaff_EDI + 0x11d136,0x107b,&UNK_001672a5 + unaff_EDI,local_28);\n        }\n        uVar5 = *(undefined8 *)(local_28 + 0xd);\n      }\n      else {\n        uVar5 = (**(code **)(local_24 + 0x14))(local_28);\n        local_28 = *(int **)(param_1 + 0x44);\n        local_24 = *local_28;\n      }\n      *(undefined8 *)param_4 = uVar5;\n    }\n    if (*(code **)(local_24 + 0xc) == (code *)(unaff_EDI + -0x22e9f7)) {\n      uVar5 = *(undefined8 *)(local_28 + 9);\n    }\n    else {\n      uVar5 = (**(code **)(local_24 + 0xc))(local_28);\n      local_28 = *(int **)(param_1 + 0x44);\n    }\n    *param_5 = uVar5;\n    iVar2 = local_28[3];\n    param_6[1] = local_28[4];\n    *param_6 = iVar2;\n    return bVar1 & 1;\n  }\n  iVar2 = *(int *)(param_1 + 0x4c);\n  *param_3 = *(int *)(param_1 + 0x48);\n  param_3[1] = iVar2;\n  iVar2 = *(int *)(param_1 + 0x54);\n  *param_4 = *(int *)(param_1 + 0x50);\n  param_4[1] = iVar2;\n  uVar3 = *(undefined4 *)(param_1 + 0x5c);\n  *(undefined4 *)param_5 = *(undefined4 *)(param_1 + 0x58);\n  *(undefined4 *)((int)param_5 + 4) = uVar3;\n  *param_6 = 0;\n  param_6[1] = 0;\n  return 1;\n}" { (declaration "byte bVar1;" type_identifier identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "undefined4 uVar3;" type_identifier identifier ;) (declaration "byte bVar4;" type_identifier identifier ;) (declaration "int unaff_EDI;" primitive_type identifier ;) (declaration "undefined8 uVar5;" type_identifier identifier ;) (declaration "int *local_28;" primitive_type (pointer_declarator "*local_28" * identifier) ;) (declaration "int local_24;" primitive_type identifier ;) (expression_statement "FUN_00074f0a();" (call_expression "FUN_00074f0a()" identifier (argument_list "()" ( ))) ;) (expression_statement "uVar5 = FUN_003b8640(param_1 + 4,param_2);" (assignment_expression "uVar5 = FUN_003b8640(param_1 + 4,param_2)" identifier = (call_expression "FUN_003b8640(param_1 + 4,param_2)" identifier (argument_list "(param_1 + 4,param_2)" ( (binary_expression "param_1 + 4" identifier + number_literal) , identifier )))) ;) (if_statement "if ((int)uVar5 != 0) {\n    return 0;\n  }" if (parenthesized_expression "((int)uVar5 != 0)" ( (binary_expression "(int)uVar5 != 0" (cast_expression "(int)uVar5" ( (type_descriptor "int" primitive_type) ) identifier) != number_literal) )) (compound_statement "{\n    return 0;\n  }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "local_28 = *(int **)(param_1 + 0x44);" (assignment_expression "local_28 = *(int **)(param_1 + 0x44)" identifier = (pointer_expression "*(int **)(param_1 + 0x44)" * (cast_expression "(int **)(param_1 + 0x44)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x44)" ( (binary_expression "param_1 + 0x44" identifier + number_literal) ))))) ;) (if_statement "if (local_28 != (int *)0x0) {\n    bVar1 = *(byte *)(local_28 + 7);\n    if ((bVar1 & 1) == 0) {\n                    \n      FUN_002446e0(unaff_EDI + 0x11d136,0xc5,&UNK_001672e1 + unaff_EDI,\n                   (int)((ulonglong)uVar5 >> 0x20));\n    }\n    iVar2 = local_28[2];\n    *param_3 = local_28[1];\n    param_3[1] = iVar2;\n    local_24 = *local_28;\n    if (*(code **)(local_24 + 0x10) == (code *)(unaff_EDI + -0x1ec177)) {\n      bVar4 = *(byte *)(local_28 + 0x24) >> 7;\n    }\n    else {\n      bVar4 = (**(code **)(local_24 + 0x10))(local_28);\n      local_28 = *(int **)(param_1 + 0x44);\n      local_24 = *local_28;\n    }\n    if (bVar4 == 0) {\n      iVar2 = param_3[1];\n      *param_4 = *param_3;\n      param_4[1] = iVar2;\n    }\n    else {\n      if (*(code **)(local_24 + 0x14) == (code *)(unaff_EDI + -0x1ebfe7)) {\n        if (-1 < (char)local_28[0x24]) {\n                    \n          FUN_002446e0(unaff_EDI + 0x11d136,0x107b,&UNK_001672a5 + unaff_EDI,local_28);\n        }\n        uVar5 = *(undefined8 *)(local_28 + 0xd);\n      }\n      else {\n        uVar5 = (**(code **)(local_24 + 0x14))(local_28);\n        local_28 = *(int **)(param_1 + 0x44);\n        local_24 = *local_28;\n      }\n      *(undefined8 *)param_4 = uVar5;\n    }\n    if (*(code **)(local_24 + 0xc) == (code *)(unaff_EDI + -0x22e9f7)) {\n      uVar5 = *(undefined8 *)(local_28 + 9);\n    }\n    else {\n      uVar5 = (**(code **)(local_24 + 0xc))(local_28);\n      local_28 = *(int **)(param_1 + 0x44);\n    }\n    *param_5 = uVar5;\n    iVar2 = local_28[3];\n    param_6[1] = local_28[4];\n    *param_6 = iVar2;\n    return bVar1 & 1;\n  }" if (parenthesized_expression "(local_28 != (int *)0x0)" ( (binary_expression "local_28 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    bVar1 = *(byte *)(local_28 + 7);\n    if ((bVar1 & 1) == 0) {\n                    \n      FUN_002446e0(unaff_EDI + 0x11d136,0xc5,&UNK_001672e1 + unaff_EDI,\n                   (int)((ulonglong)uVar5 >> 0x20));\n    }\n    iVar2 = local_28[2];\n    *param_3 = local_28[1];\n    param_3[1] = iVar2;\n    local_24 = *local_28;\n    if (*(code **)(local_24 + 0x10) == (code *)(unaff_EDI + -0x1ec177)) {\n      bVar4 = *(byte *)(local_28 + 0x24) >> 7;\n    }\n    else {\n      bVar4 = (**(code **)(local_24 + 0x10))(local_28);\n      local_28 = *(int **)(param_1 + 0x44);\n      local_24 = *local_28;\n    }\n    if (bVar4 == 0) {\n      iVar2 = param_3[1];\n      *param_4 = *param_3;\n      param_4[1] = iVar2;\n    }\n    else {\n      if (*(code **)(local_24 + 0x14) == (code *)(unaff_EDI + -0x1ebfe7)) {\n        if (-1 < (char)local_28[0x24]) {\n                    \n          FUN_002446e0(unaff_EDI + 0x11d136,0x107b,&UNK_001672a5 + unaff_EDI,local_28);\n        }\n        uVar5 = *(undefined8 *)(local_28 + 0xd);\n      }\n      else {\n        uVar5 = (**(code **)(local_24 + 0x14))(local_28);\n        local_28 = *(int **)(param_1 + 0x44);\n        local_24 = *local_28;\n      }\n      *(undefined8 *)param_4 = uVar5;\n    }\n    if (*(code **)(local_24 + 0xc) == (code *)(unaff_EDI + -0x22e9f7)) {\n      uVar5 = *(undefined8 *)(local_28 + 9);\n    }\n    else {\n      uVar5 = (**(code **)(local_24 + 0xc))(local_28);\n      local_28 = *(int **)(param_1 + 0x44);\n    }\n    *param_5 = uVar5;\n    iVar2 = local_28[3];\n    param_6[1] = local_28[4];\n    *param_6 = iVar2;\n    return bVar1 & 1;\n  }" { (expression_statement "bVar1 = *(byte *)(local_28 + 7);" (assignment_expression "bVar1 = *(byte *)(local_28 + 7)" identifier = (pointer_expression "*(byte *)(local_28 + 7)" * (cast_expression "(byte *)(local_28 + 7)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_28 + 7)" ( (binary_expression "local_28 + 7" identifier + number_literal) ))))) ;) (if_statement "if ((bVar1 & 1) == 0) {\n                    \n      FUN_002446e0(unaff_EDI + 0x11d136,0xc5,&UNK_001672e1 + unaff_EDI,\n                   (int)((ulonglong)uVar5 >> 0x20));\n    }" if (parenthesized_expression "((bVar1 & 1) == 0)" ( (binary_expression "(bVar1 & 1) == 0" (parenthesized_expression "(bVar1 & 1)" ( (binary_expression "bVar1 & 1" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n                    \n      FUN_002446e0(unaff_EDI + 0x11d136,0xc5,&UNK_001672e1 + unaff_EDI,\n                   (int)((ulonglong)uVar5 >> 0x20));\n    }" { (expression_statement "FUN_002446e0(unaff_EDI + 0x11d136,0xc5,&UNK_001672e1 + unaff_EDI,\n                   (int)((ulonglong)uVar5 >> 0x20));" (call_expression "FUN_002446e0(unaff_EDI + 0x11d136,0xc5,&UNK_001672e1 + unaff_EDI,\n                   (int)((ulonglong)uVar5 >> 0x20))" identifier (argument_list "(unaff_EDI + 0x11d136,0xc5,&UNK_001672e1 + unaff_EDI,\n                   (int)((ulonglong)uVar5 >> 0x20))" ( (binary_expression "unaff_EDI + 0x11d136" identifier + number_literal) , number_literal , (binary_expression "&UNK_001672e1 + unaff_EDI" (pointer_expression "&UNK_001672e1" & identifier) + identifier) , (cast_expression "(int)((ulonglong)uVar5 >> 0x20)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((ulonglong)uVar5 >> 0x20)" ( (binary_expression "(ulonglong)uVar5 >> 0x20" (cast_expression "(ulonglong)uVar5" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) ))) ))) ;) })) (expression_statement "iVar2 = local_28[2];" (assignment_expression "iVar2 = local_28[2]" identifier = (subscript_expression "local_28[2]" identifier [ number_literal ])) ;) (expression_statement "*param_3 = local_28[1];" (assignment_expression "*param_3 = local_28[1]" (pointer_expression "*param_3" * identifier) = (subscript_expression "local_28[1]" identifier [ number_literal ])) ;) (expression_statement "param_3[1] = iVar2;" (assignment_expression "param_3[1] = iVar2" (subscript_expression "param_3[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "local_24 = *local_28;" (assignment_expression "local_24 = *local_28" identifier = (pointer_expression "*local_28" * identifier)) ;) (if_statement "if (*(code **)(local_24 + 0x10) == (code *)(unaff_EDI + -0x1ec177)) {\n      bVar4 = *(byte *)(local_28 + 0x24) >> 7;\n    }\n    else {\n      bVar4 = (**(code **)(local_24 + 0x10))(local_28);\n      local_28 = *(int **)(param_1 + 0x44);\n      local_24 = *local_28;\n    }" if (parenthesized_expression "(*(code **)(local_24 + 0x10) == (code *)(unaff_EDI + -0x1ec177))" ( (binary_expression "*(code **)(local_24 + 0x10) == (code *)(unaff_EDI + -0x1ec177)" (pointer_expression "*(code **)(local_24 + 0x10)" * (cast_expression "(code **)(local_24 + 0x10)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(local_24 + 0x10)" ( (binary_expression "local_24 + 0x10" identifier + number_literal) )))) == (cast_expression "(code *)(unaff_EDI + -0x1ec177)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + -0x1ec177)" ( (binary_expression "unaff_EDI + -0x1ec177" identifier + number_literal) )))) )) (compound_statement "{\n      bVar4 = *(byte *)(local_28 + 0x24) >> 7;\n    }" { (expression_statement "bVar4 = *(byte *)(local_28 + 0x24) >> 7;" (assignment_expression "bVar4 = *(byte *)(local_28 + 0x24) >> 7" identifier = (binary_expression "*(byte *)(local_28 + 0x24) >> 7" (pointer_expression "*(byte *)(local_28 + 0x24)" * (cast_expression "(byte *)(local_28 + 0x24)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_28 + 0x24)" ( (binary_expression "local_28 + 0x24" identifier + number_literal) )))) >> number_literal)) ;) }) (else_clause "else {\n      bVar4 = (**(code **)(local_24 + 0x10))(local_28);\n      local_28 = *(int **)(param_1 + 0x44);\n      local_24 = *local_28;\n    }" else (compound_statement "{\n      bVar4 = (**(code **)(local_24 + 0x10))(local_28);\n      local_28 = *(int **)(param_1 + 0x44);\n      local_24 = *local_28;\n    }" { (expression_statement "bVar4 = (**(code **)(local_24 + 0x10))(local_28);" (assignment_expression "bVar4 = (**(code **)(local_24 + 0x10))(local_28)" identifier = (call_expression "(**(code **)(local_24 + 0x10))(local_28)" (parenthesized_expression "(**(code **)(local_24 + 0x10))" ( (pointer_expression "**(code **)(local_24 + 0x10)" * (pointer_expression "*(code **)(local_24 + 0x10)" * (cast_expression "(code **)(local_24 + 0x10)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(local_24 + 0x10)" ( (binary_expression "local_24 + 0x10" identifier + number_literal) ))))) )) (argument_list "(local_28)" ( identifier )))) ;) (expression_statement "local_28 = *(int **)(param_1 + 0x44);" (assignment_expression "local_28 = *(int **)(param_1 + 0x44)" identifier = (pointer_expression "*(int **)(param_1 + 0x44)" * (cast_expression "(int **)(param_1 + 0x44)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x44)" ( (binary_expression "param_1 + 0x44" identifier + number_literal) ))))) ;) (expression_statement "local_24 = *local_28;" (assignment_expression "local_24 = *local_28" identifier = (pointer_expression "*local_28" * identifier)) ;) }))) (if_statement "if (bVar4 == 0) {\n      iVar2 = param_3[1];\n      *param_4 = *param_3;\n      param_4[1] = iVar2;\n    }\n    else {\n      if (*(code **)(local_24 + 0x14) == (code *)(unaff_EDI + -0x1ebfe7)) {\n        if (-1 < (char)local_28[0x24]) {\n                    \n          FUN_002446e0(unaff_EDI + 0x11d136,0x107b,&UNK_001672a5 + unaff_EDI,local_28);\n        }\n        uVar5 = *(undefined8 *)(local_28 + 0xd);\n      }\n      else {\n        uVar5 = (**(code **)(local_24 + 0x14))(local_28);\n        local_28 = *(int **)(param_1 + 0x44);\n        local_24 = *local_28;\n      }\n      *(undefined8 *)param_4 = uVar5;\n    }" if (parenthesized_expression "(bVar4 == 0)" ( (binary_expression "bVar4 == 0" identifier == number_literal) )) (compound_statement "{\n      iVar2 = param_3[1];\n      *param_4 = *param_3;\n      param_4[1] = iVar2;\n    }" { (expression_statement "iVar2 = param_3[1];" (assignment_expression "iVar2 = param_3[1]" identifier = (subscript_expression "param_3[1]" identifier [ number_literal ])) ;) (expression_statement "*param_4 = *param_3;" (assignment_expression "*param_4 = *param_3" (pointer_expression "*param_4" * identifier) = (pointer_expression "*param_3" * identifier)) ;) (expression_statement "param_4[1] = iVar2;" (assignment_expression "param_4[1] = iVar2" (subscript_expression "param_4[1]" identifier [ number_literal ]) = identifier) ;) }) (else_clause "else {\n      if (*(code **)(local_24 + 0x14) == (code *)(unaff_EDI + -0x1ebfe7)) {\n        if (-1 < (char)local_28[0x24]) {\n                    \n          FUN_002446e0(unaff_EDI + 0x11d136,0x107b,&UNK_001672a5 + unaff_EDI,local_28);\n        }\n        uVar5 = *(undefined8 *)(local_28 + 0xd);\n      }\n      else {\n        uVar5 = (**(code **)(local_24 + 0x14))(local_28);\n        local_28 = *(int **)(param_1 + 0x44);\n        local_24 = *local_28;\n      }\n      *(undefined8 *)param_4 = uVar5;\n    }" else (compound_statement "{\n      if (*(code **)(local_24 + 0x14) == (code *)(unaff_EDI + -0x1ebfe7)) {\n        if (-1 < (char)local_28[0x24]) {\n                    \n          FUN_002446e0(unaff_EDI + 0x11d136,0x107b,&UNK_001672a5 + unaff_EDI,local_28);\n        }\n        uVar5 = *(undefined8 *)(local_28 + 0xd);\n      }\n      else {\n        uVar5 = (**(code **)(local_24 + 0x14))(local_28);\n        local_28 = *(int **)(param_1 + 0x44);\n        local_24 = *local_28;\n      }\n      *(undefined8 *)param_4 = uVar5;\n    }" { (if_statement "if (*(code **)(local_24 + 0x14) == (code *)(unaff_EDI + -0x1ebfe7)) {\n        if (-1 < (char)local_28[0x24]) {\n                    \n          FUN_002446e0(unaff_EDI + 0x11d136,0x107b,&UNK_001672a5 + unaff_EDI,local_28);\n        }\n        uVar5 = *(undefined8 *)(local_28 + 0xd);\n      }\n      else {\n        uVar5 = (**(code **)(local_24 + 0x14))(local_28);\n        local_28 = *(int **)(param_1 + 0x44);\n        local_24 = *local_28;\n      }" if (parenthesized_expression "(*(code **)(local_24 + 0x14) == (code *)(unaff_EDI + -0x1ebfe7))" ( (binary_expression "*(code **)(local_24 + 0x14) == (code *)(unaff_EDI + -0x1ebfe7)" (pointer_expression "*(code **)(local_24 + 0x14)" * (cast_expression "(code **)(local_24 + 0x14)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(local_24 + 0x14)" ( (binary_expression "local_24 + 0x14" identifier + number_literal) )))) == (cast_expression "(code *)(unaff_EDI + -0x1ebfe7)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + -0x1ebfe7)" ( (binary_expression "unaff_EDI + -0x1ebfe7" identifier + number_literal) )))) )) (compound_statement "{\n        if (-1 < (char)local_28[0x24]) {\n                    \n          FUN_002446e0(unaff_EDI + 0x11d136,0x107b,&UNK_001672a5 + unaff_EDI,local_28);\n        }\n        uVar5 = *(undefined8 *)(local_28 + 0xd);\n      }" { (if_statement "if (-1 < (char)local_28[0x24]) {\n                    \n          FUN_002446e0(unaff_EDI + 0x11d136,0x107b,&UNK_001672a5 + unaff_EDI,local_28);\n        }" if (parenthesized_expression "(-1 < (char)local_28[0x24])" ( (binary_expression "-1 < (char)local_28[0x24]" number_literal < (cast_expression "(char)local_28[0x24]" ( (type_descriptor "char" primitive_type) ) (subscript_expression "local_28[0x24]" identifier [ number_literal ]))) )) (compound_statement "{\n                    \n          FUN_002446e0(unaff_EDI + 0x11d136,0x107b,&UNK_001672a5 + unaff_EDI,local_28);\n        }" { (expression_statement "FUN_002446e0(unaff_EDI + 0x11d136,0x107b,&UNK_001672a5 + unaff_EDI,local_28);" (call_expression "FUN_002446e0(unaff_EDI + 0x11d136,0x107b,&UNK_001672a5 + unaff_EDI,local_28)" identifier (argument_list "(unaff_EDI + 0x11d136,0x107b,&UNK_001672a5 + unaff_EDI,local_28)" ( (binary_expression "unaff_EDI + 0x11d136" identifier + number_literal) , number_literal , (binary_expression "&UNK_001672a5 + unaff_EDI" (pointer_expression "&UNK_001672a5" & identifier) + identifier) , identifier ))) ;) })) (expression_statement "uVar5 = *(undefined8 *)(local_28 + 0xd);" (assignment_expression "uVar5 = *(undefined8 *)(local_28 + 0xd)" identifier = (pointer_expression "*(undefined8 *)(local_28 + 0xd)" * (cast_expression "(undefined8 *)(local_28 + 0xd)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_28 + 0xd)" ( (binary_expression "local_28 + 0xd" identifier + number_literal) ))))) ;) }) (else_clause "else {\n        uVar5 = (**(code **)(local_24 + 0x14))(local_28);\n        local_28 = *(int **)(param_1 + 0x44);\n        local_24 = *local_28;\n      }" else (compound_statement "{\n        uVar5 = (**(code **)(local_24 + 0x14))(local_28);\n        local_28 = *(int **)(param_1 + 0x44);\n        local_24 = *local_28;\n      }" { (expression_statement "uVar5 = (**(code **)(local_24 + 0x14))(local_28);" (assignment_expression "uVar5 = (**(code **)(local_24 + 0x14))(local_28)" identifier = (call_expression "(**(code **)(local_24 + 0x14))(local_28)" (parenthesized_expression "(**(code **)(local_24 + 0x14))" ( (pointer_expression "**(code **)(local_24 + 0x14)" * (pointer_expression "*(code **)(local_24 + 0x14)" * (cast_expression "(code **)(local_24 + 0x14)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(local_24 + 0x14)" ( (binary_expression "local_24 + 0x14" identifier + number_literal) ))))) )) (argument_list "(local_28)" ( identifier )))) ;) (expression_statement "local_28 = *(int **)(param_1 + 0x44);" (assignment_expression "local_28 = *(int **)(param_1 + 0x44)" identifier = (pointer_expression "*(int **)(param_1 + 0x44)" * (cast_expression "(int **)(param_1 + 0x44)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x44)" ( (binary_expression "param_1 + 0x44" identifier + number_literal) ))))) ;) (expression_statement "local_24 = *local_28;" (assignment_expression "local_24 = *local_28" identifier = (pointer_expression "*local_28" * identifier)) ;) }))) (expression_statement "*(undefined8 *)param_4 = uVar5;" (assignment_expression "*(undefined8 *)param_4 = uVar5" (pointer_expression "*(undefined8 *)param_4" * (cast_expression "(undefined8 *)param_4" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) = identifier) ;) }))) (if_statement "if (*(code **)(local_24 + 0xc) == (code *)(unaff_EDI + -0x22e9f7)) {\n      uVar5 = *(undefined8 *)(local_28 + 9);\n    }\n    else {\n      uVar5 = (**(code **)(local_24 + 0xc))(local_28);\n      local_28 = *(int **)(param_1 + 0x44);\n    }" if (parenthesized_expression "(*(code **)(local_24 + 0xc) == (code *)(unaff_EDI + -0x22e9f7))" ( (binary_expression "*(code **)(local_24 + 0xc) == (code *)(unaff_EDI + -0x22e9f7)" (pointer_expression "*(code **)(local_24 + 0xc)" * (cast_expression "(code **)(local_24 + 0xc)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(local_24 + 0xc)" ( (binary_expression "local_24 + 0xc" identifier + number_literal) )))) == (cast_expression "(code *)(unaff_EDI + -0x22e9f7)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + -0x22e9f7)" ( (binary_expression "unaff_EDI + -0x22e9f7" identifier + number_literal) )))) )) (compound_statement "{\n      uVar5 = *(undefined8 *)(local_28 + 9);\n    }" { (expression_statement "uVar5 = *(undefined8 *)(local_28 + 9);" (assignment_expression "uVar5 = *(undefined8 *)(local_28 + 9)" identifier = (pointer_expression "*(undefined8 *)(local_28 + 9)" * (cast_expression "(undefined8 *)(local_28 + 9)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_28 + 9)" ( (binary_expression "local_28 + 9" identifier + number_literal) ))))) ;) }) (else_clause "else {\n      uVar5 = (**(code **)(local_24 + 0xc))(local_28);\n      local_28 = *(int **)(param_1 + 0x44);\n    }" else (compound_statement "{\n      uVar5 = (**(code **)(local_24 + 0xc))(local_28);\n      local_28 = *(int **)(param_1 + 0x44);\n    }" { (expression_statement "uVar5 = (**(code **)(local_24 + 0xc))(local_28);" (assignment_expression "uVar5 = (**(code **)(local_24 + 0xc))(local_28)" identifier = (call_expression "(**(code **)(local_24 + 0xc))(local_28)" (parenthesized_expression "(**(code **)(local_24 + 0xc))" ( (pointer_expression "**(code **)(local_24 + 0xc)" * (pointer_expression "*(code **)(local_24 + 0xc)" * (cast_expression "(code **)(local_24 + 0xc)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(local_24 + 0xc)" ( (binary_expression "local_24 + 0xc" identifier + number_literal) ))))) )) (argument_list "(local_28)" ( identifier )))) ;) (expression_statement "local_28 = *(int **)(param_1 + 0x44);" (assignment_expression "local_28 = *(int **)(param_1 + 0x44)" identifier = (pointer_expression "*(int **)(param_1 + 0x44)" * (cast_expression "(int **)(param_1 + 0x44)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x44)" ( (binary_expression "param_1 + 0x44" identifier + number_literal) ))))) ;) }))) (expression_statement "*param_5 = uVar5;" (assignment_expression "*param_5 = uVar5" (pointer_expression "*param_5" * identifier) = identifier) ;) (expression_statement "iVar2 = local_28[3];" (assignment_expression "iVar2 = local_28[3]" identifier = (subscript_expression "local_28[3]" identifier [ number_literal ])) ;) (expression_statement "param_6[1] = local_28[4];" (assignment_expression "param_6[1] = local_28[4]" (subscript_expression "param_6[1]" identifier [ number_literal ]) = (subscript_expression "local_28[4]" identifier [ number_literal ])) ;) (expression_statement "*param_6 = iVar2;" (assignment_expression "*param_6 = iVar2" (pointer_expression "*param_6" * identifier) = identifier) ;) (return_statement "return bVar1 & 1;" return (binary_expression "bVar1 & 1" identifier & number_literal) ;) })) (expression_statement "iVar2 = *(int *)(param_1 + 0x4c);" (assignment_expression "iVar2 = *(int *)(param_1 + 0x4c)" identifier = (pointer_expression "*(int *)(param_1 + 0x4c)" * (cast_expression "(int *)(param_1 + 0x4c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x4c)" ( (binary_expression "param_1 + 0x4c" identifier + number_literal) ))))) ;) (expression_statement "*param_3 = *(int *)(param_1 + 0x48);" (assignment_expression "*param_3 = *(int *)(param_1 + 0x48)" (pointer_expression "*param_3" * identifier) = (pointer_expression "*(int *)(param_1 + 0x48)" * (cast_expression "(int *)(param_1 + 0x48)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x48)" ( (binary_expression "param_1 + 0x48" identifier + number_literal) ))))) ;) (expression_statement "param_3[1] = iVar2;" (assignment_expression "param_3[1] = iVar2" (subscript_expression "param_3[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "iVar2 = *(int *)(param_1 + 0x54);" (assignment_expression "iVar2 = *(int *)(param_1 + 0x54)" identifier = (pointer_expression "*(int *)(param_1 + 0x54)" * (cast_expression "(int *)(param_1 + 0x54)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x54)" ( (binary_expression "param_1 + 0x54" identifier + number_literal) ))))) ;) (expression_statement "*param_4 = *(int *)(param_1 + 0x50);" (assignment_expression "*param_4 = *(int *)(param_1 + 0x50)" (pointer_expression "*param_4" * identifier) = (pointer_expression "*(int *)(param_1 + 0x50)" * (cast_expression "(int *)(param_1 + 0x50)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x50)" ( (binary_expression "param_1 + 0x50" identifier + number_literal) ))))) ;) (expression_statement "param_4[1] = iVar2;" (assignment_expression "param_4[1] = iVar2" (subscript_expression "param_4[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "uVar3 = *(undefined4 *)(param_1 + 0x5c);" (assignment_expression "uVar3 = *(undefined4 *)(param_1 + 0x5c)" identifier = (pointer_expression "*(undefined4 *)(param_1 + 0x5c)" * (cast_expression "(undefined4 *)(param_1 + 0x5c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x5c)" ( (binary_expression "param_1 + 0x5c" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)param_5 = *(undefined4 *)(param_1 + 0x58);" (assignment_expression "*(undefined4 *)param_5 = *(undefined4 *)(param_1 + 0x58)" (pointer_expression "*(undefined4 *)param_5" * (cast_expression "(undefined4 *)param_5" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) = (pointer_expression "*(undefined4 *)(param_1 + 0x58)" * (cast_expression "(undefined4 *)(param_1 + 0x58)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x58)" ( (binary_expression "param_1 + 0x58" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)((int)param_5 + 4) = uVar3;" (assignment_expression "*(undefined4 *)((int)param_5 + 4) = uVar3" (pointer_expression "*(undefined4 *)((int)param_5 + 4)" * (cast_expression "(undefined4 *)((int)param_5 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_5 + 4)" ( (binary_expression "(int)param_5 + 4" (cast_expression "(int)param_5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "*param_6 = 0;" (assignment_expression "*param_6 = 0" (pointer_expression "*param_6" * identifier) = number_literal) ;) (expression_statement "param_6[1] = 0;" (assignment_expression "param_6[1] = 0" (subscript_expression "param_6[1]" identifier [ number_literal ]) = number_literal) ;) (return_statement "return 1;" return number_literal ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE (pointer_declarator * IDENT)) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) , IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) != LIT) )) (compound_statement { (return_statement return LIT ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) , LIT , (binary_expression (pointer_expression & IDENT) + IDENT) , (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) ))) ))) ;) })) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * 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 IDENT + LIT) )))) == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) )) (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 IDENT + LIT) ))))) )) (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) }))) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) }) (else_clause else (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 IDENT + LIT) )))) == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) )) (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 ( (binary_expression IDENT + LIT) , LIT , (binary_expression (pointer_expression & IDENT) + IDENT) , IDENT ))) ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_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 IDENT + LIT) ))))) )) (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) }))) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) 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 IDENT + LIT) )))) == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_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 IDENT + LIT) ))))) )) (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) }))) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (return_statement return (binary_expression IDENT & LIT) ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (return_statement return LIT ;) })))
(function_definition "byte FUN_00330220(int param_1,undefined4 param_2,int *param_3,int *param_4,undefined8 *param_5,\n                 int *param_6)\n\n{\n  byte bVar1;\n  int iVar2;\n  undefined4 uVar3;\n  byte bVar4;\n  int unaff_EDI;\n  undefined8 uVar5;\n  int *local_28;\n  int local_24;\n  \n  FUN_00074f0a();\n  uVar5 = FUN_003b8640(param_1 + 4,param_2);\n  if ((int)uVar5 != 0) {\n    return 0;\n  }\n  local_28 = *(int **)(param_1 + 0x44);\n  if (local_28 != (int *)0x0) {\n    bVar1 = *(byte *)(local_28 + 7);\n    if ((bVar1 & 1) == 0) {\n                    \n      FUN_002446e0(unaff_EDI + 0x11d136,0xc5,&UNK_001672e1 + unaff_EDI,\n                   (int)((ulonglong)uVar5 >> 0x20));\n    }\n    iVar2 = local_28[2];\n    *param_3 = local_28[1];\n    param_3[1] = iVar2;\n    local_24 = *local_28;\n    if (*(code **)(local_24 + 0x10) == (code *)(unaff_EDI + -0x1ec177)) {\n      bVar4 = *(byte *)(local_28 + 0x24) >> 7;\n    }\n    else {\n      bVar4 = (**(code **)(local_24 + 0x10))(local_28);\n      local_28 = *(int **)(param_1 + 0x44);\n      local_24 = *local_28;\n    }\n    if (bVar4 == 0) {\n      iVar2 = param_3[1];\n      *param_4 = *param_3;\n      param_4[1] = iVar2;\n    }\n    else {\n      if (*(code **)(local_24 + 0x14) == (code *)(unaff_EDI + -0x1ebfe7)) {\n        if (-1 < (char)local_28[0x24]) {\n                    \n          FUN_002446e0(unaff_EDI + 0x11d136,0x107b,&UNK_001672a5 + unaff_EDI,local_28);\n        }\n        uVar5 = *(undefined8 *)(local_28 + 0xd);\n      }\n      else {\n        uVar5 = (**(code **)(local_24 + 0x14))(local_28);\n        local_28 = *(int **)(param_1 + 0x44);\n        local_24 = *local_28;\n      }\n      *(undefined8 *)param_4 = uVar5;\n    }\n    if (*(code **)(local_24 + 0xc) == (code *)(unaff_EDI + -0x22e9f7)) {\n      uVar5 = *(undefined8 *)(local_28 + 9);\n    }\n    else {\n      uVar5 = (**(code **)(local_24 + 0xc))(local_28);\n      local_28 = *(int **)(param_1 + 0x44);\n    }\n    *param_5 = uVar5;\n    iVar2 = local_28[3];\n    param_6[1] = local_28[4];\n    *param_6 = iVar2;\n    return bVar1 & 1;\n  }\n  iVar2 = *(int *)(param_1 + 0x4c);\n  *param_3 = *(int *)(param_1 + 0x48);\n  param_3[1] = iVar2;\n  iVar2 = *(int *)(param_1 + 0x54);\n  *param_4 = *(int *)(param_1 + 0x50);\n  param_4[1] = iVar2;\n  uVar3 = *(undefined4 *)(param_1 + 0x5c);\n  *(undefined4 *)param_5 = *(undefined4 *)(param_1 + 0x58);\n  *(undefined4 *)((int)param_5 + 4) = uVar3;\n  *param_6 = 0;\n  param_6[1] = 0;\n  return 1;\n}" (type_identifier "byte") (function_declarator "FUN_00330220(int param_1,undefined4 param_2,int *param_3,int *param_4,undefined8 *param_5,\n                 int *param_6)" (identifier "FUN_00330220") (parameter_list "(int param_1,undefined4 param_2,int *param_3,int *param_4,undefined8 *param_5,\n                 int *param_6)" (( "(") (parameter_declaration "int param_1" (primitive_type "int") (identifier "param_1")) (, ",") (parameter_declaration "undefined4 param_2" (type_identifier "undefined4") (identifier "param_2")) (, ",") (parameter_declaration "int *param_3" (primitive_type "int") (pointer_declarator "*param_3" (* "*") (identifier "param_3"))) (, ",") (parameter_declaration "int *param_4" (primitive_type "int") (pointer_declarator "*param_4" (* "*") (identifier "param_4"))) (, ",") (parameter_declaration "undefined8 *param_5" (type_identifier "undefined8") (pointer_declarator "*param_5" (* "*") (identifier "param_5"))) (, ",") (parameter_declaration "int *param_6" (primitive_type "int") (pointer_declarator "*param_6" (* "*") (identifier "param_6"))) () ")"))) (compound_statement "{\n  byte bVar1;\n  int iVar2;\n  undefined4 uVar3;\n  byte bVar4;\n  int unaff_EDI;\n  undefined8 uVar5;\n  int *local_28;\n  int local_24;\n  \n  FUN_00074f0a();\n  uVar5 = FUN_003b8640(param_1 + 4,param_2);\n  if ((int)uVar5 != 0) {\n    return 0;\n  }\n  local_28 = *(int **)(param_1 + 0x44);\n  if (local_28 != (int *)0x0) {\n    bVar1 = *(byte *)(local_28 + 7);\n    if ((bVar1 & 1) == 0) {\n                    \n      FUN_002446e0(unaff_EDI + 0x11d136,0xc5,&UNK_001672e1 + unaff_EDI,\n                   (int)((ulonglong)uVar5 >> 0x20));\n    }\n    iVar2 = local_28[2];\n    *param_3 = local_28[1];\n    param_3[1] = iVar2;\n    local_24 = *local_28;\n    if (*(code **)(local_24 + 0x10) == (code *)(unaff_EDI + -0x1ec177)) {\n      bVar4 = *(byte *)(local_28 + 0x24) >> 7;\n    }\n    else {\n      bVar4 = (**(code **)(local_24 + 0x10))(local_28);\n      local_28 = *(int **)(param_1 + 0x44);\n      local_24 = *local_28;\n    }\n    if (bVar4 == 0) {\n      iVar2 = param_3[1];\n      *param_4 = *param_3;\n      param_4[1] = iVar2;\n    }\n    else {\n      if (*(code **)(local_24 + 0x14) == (code *)(unaff_EDI + -0x1ebfe7)) {\n        if (-1 < (char)local_28[0x24]) {\n                    \n          FUN_002446e0(unaff_EDI + 0x11d136,0x107b,&UNK_001672a5 + unaff_EDI,local_28);\n        }\n        uVar5 = *(undefined8 *)(local_28 + 0xd);\n      }\n      else {\n        uVar5 = (**(code **)(local_24 + 0x14))(local_28);\n        local_28 = *(int **)(param_1 + 0x44);\n        local_24 = *local_28;\n      }\n      *(undefined8 *)param_4 = uVar5;\n    }\n    if (*(code **)(local_24 + 0xc) == (code *)(unaff_EDI + -0x22e9f7)) {\n      uVar5 = *(undefined8 *)(local_28 + 9);\n    }\n    else {\n      uVar5 = (**(code **)(local_24 + 0xc))(local_28);\n      local_28 = *(int **)(param_1 + 0x44);\n    }\n    *param_5 = uVar5;\n    iVar2 = local_28[3];\n    param_6[1] = local_28[4];\n    *param_6 = iVar2;\n    return bVar1 & 1;\n  }\n  iVar2 = *(int *)(param_1 + 0x4c);\n  *param_3 = *(int *)(param_1 + 0x48);\n  param_3[1] = iVar2;\n  iVar2 = *(int *)(param_1 + 0x54);\n  *param_4 = *(int *)(param_1 + 0x50);\n  param_4[1] = iVar2;\n  uVar3 = *(undefined4 *)(param_1 + 0x5c);\n  *(undefined4 *)param_5 = *(undefined4 *)(param_1 + 0x58);\n  *(undefined4 *)((int)param_5 + 4) = uVar3;\n  *param_6 = 0;\n  param_6[1] = 0;\n  return 1;\n}" ({ "{") (declaration "byte bVar1;" (type_identifier "byte") (identifier "bVar1") (; ";")) (declaration "int iVar2;" (primitive_type "int") (identifier "iVar2") (; ";")) (declaration "undefined4 uVar3;" (type_identifier "undefined4") (identifier "uVar3") (; ";")) (declaration "byte bVar4;" (type_identifier "byte") (identifier "bVar4") (; ";")) (declaration "int unaff_EDI;" (primitive_type "int") (identifier "unaff_EDI") (; ";")) (declaration "undefined8 uVar5;" (type_identifier "undefined8") (identifier "uVar5") (; ";")) (declaration "int *local_28;" (primitive_type "int") (pointer_declarator "*local_28" (* "*") (identifier "local_28")) (; ";")) (declaration "int local_24;" (primitive_type "int") (identifier "local_24") (; ";")) (expression_statement "FUN_00074f0a();" (call_expression "FUN_00074f0a()" (identifier "FUN_00074f0a") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "uVar5 = FUN_003b8640(param_1 + 4,param_2);" (assignment_expression "uVar5 = FUN_003b8640(param_1 + 4,param_2)" (identifier "uVar5") (= "=") (call_expression "FUN_003b8640(param_1 + 4,param_2)" (identifier "FUN_003b8640") (argument_list "(param_1 + 4,param_2)" (( "(") (binary_expression "param_1 + 4" (identifier "param_1") (+ "+") (number_literal "4")) (, ",") (identifier "param_2") () ")")))) (; ";")) (if_statement "if ((int)uVar5 != 0) {\n    return 0;\n  }" (if "if") (parenthesized_expression "((int)uVar5 != 0)" (( "(") (binary_expression "(int)uVar5 != 0" (cast_expression "(int)uVar5" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar5")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    return 0;\n  }" ({ "{") (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (expression_statement "local_28 = *(int **)(param_1 + 0x44);" (assignment_expression "local_28 = *(int **)(param_1 + 0x44)" (identifier "local_28") (= "=") (pointer_expression "*(int **)(param_1 + 0x44)" (* "*") (cast_expression "(int **)(param_1 + 0x44)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0x44)" (( "(") (binary_expression "param_1 + 0x44" (identifier "param_1") (+ "+") (number_literal "0x44")) () ")"))))) (; ";")) (if_statement "if (local_28 != (int *)0x0) {\n    bVar1 = *(byte *)(local_28 + 7);\n    if ((bVar1 & 1) == 0) {\n                    \n      FUN_002446e0(unaff_EDI + 0x11d136,0xc5,&UNK_001672e1 + unaff_EDI,\n                   (int)((ulonglong)uVar5 >> 0x20));\n    }\n    iVar2 = local_28[2];\n    *param_3 = local_28[1];\n    param_3[1] = iVar2;\n    local_24 = *local_28;\n    if (*(code **)(local_24 + 0x10) == (code *)(unaff_EDI + -0x1ec177)) {\n      bVar4 = *(byte *)(local_28 + 0x24) >> 7;\n    }\n    else {\n      bVar4 = (**(code **)(local_24 + 0x10))(local_28);\n      local_28 = *(int **)(param_1 + 0x44);\n      local_24 = *local_28;\n    }\n    if (bVar4 == 0) {\n      iVar2 = param_3[1];\n      *param_4 = *param_3;\n      param_4[1] = iVar2;\n    }\n    else {\n      if (*(code **)(local_24 + 0x14) == (code *)(unaff_EDI + -0x1ebfe7)) {\n        if (-1 < (char)local_28[0x24]) {\n                    \n          FUN_002446e0(unaff_EDI + 0x11d136,0x107b,&UNK_001672a5 + unaff_EDI,local_28);\n        }\n        uVar5 = *(undefined8 *)(local_28 + 0xd);\n      }\n      else {\n        uVar5 = (**(code **)(local_24 + 0x14))(local_28);\n        local_28 = *(int **)(param_1 + 0x44);\n        local_24 = *local_28;\n      }\n      *(undefined8 *)param_4 = uVar5;\n    }\n    if (*(code **)(local_24 + 0xc) == (code *)(unaff_EDI + -0x22e9f7)) {\n      uVar5 = *(undefined8 *)(local_28 + 9);\n    }\n    else {\n      uVar5 = (**(code **)(local_24 + 0xc))(local_28);\n      local_28 = *(int **)(param_1 + 0x44);\n    }\n    *param_5 = uVar5;\n    iVar2 = local_28[3];\n    param_6[1] = local_28[4];\n    *param_6 = iVar2;\n    return bVar1 & 1;\n  }" (if "if") (parenthesized_expression "(local_28 != (int *)0x0)" (( "(") (binary_expression "local_28 != (int *)0x0" (identifier "local_28") (!= "!=") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n    bVar1 = *(byte *)(local_28 + 7);\n    if ((bVar1 & 1) == 0) {\n                    \n      FUN_002446e0(unaff_EDI + 0x11d136,0xc5,&UNK_001672e1 + unaff_EDI,\n                   (int)((ulonglong)uVar5 >> 0x20));\n    }\n    iVar2 = local_28[2];\n    *param_3 = local_28[1];\n    param_3[1] = iVar2;\n    local_24 = *local_28;\n    if (*(code **)(local_24 + 0x10) == (code *)(unaff_EDI + -0x1ec177)) {\n      bVar4 = *(byte *)(local_28 + 0x24) >> 7;\n    }\n    else {\n      bVar4 = (**(code **)(local_24 + 0x10))(local_28);\n      local_28 = *(int **)(param_1 + 0x44);\n      local_24 = *local_28;\n    }\n    if (bVar4 == 0) {\n      iVar2 = param_3[1];\n      *param_4 = *param_3;\n      param_4[1] = iVar2;\n    }\n    else {\n      if (*(code **)(local_24 + 0x14) == (code *)(unaff_EDI + -0x1ebfe7)) {\n        if (-1 < (char)local_28[0x24]) {\n                    \n          FUN_002446e0(unaff_EDI + 0x11d136,0x107b,&UNK_001672a5 + unaff_EDI,local_28);\n        }\n        uVar5 = *(undefined8 *)(local_28 + 0xd);\n      }\n      else {\n        uVar5 = (**(code **)(local_24 + 0x14))(local_28);\n        local_28 = *(int **)(param_1 + 0x44);\n        local_24 = *local_28;\n      }\n      *(undefined8 *)param_4 = uVar5;\n    }\n    if (*(code **)(local_24 + 0xc) == (code *)(unaff_EDI + -0x22e9f7)) {\n      uVar5 = *(undefined8 *)(local_28 + 9);\n    }\n    else {\n      uVar5 = (**(code **)(local_24 + 0xc))(local_28);\n      local_28 = *(int **)(param_1 + 0x44);\n    }\n    *param_5 = uVar5;\n    iVar2 = local_28[3];\n    param_6[1] = local_28[4];\n    *param_6 = iVar2;\n    return bVar1 & 1;\n  }" ({ "{") (expression_statement "bVar1 = *(byte *)(local_28 + 7);" (assignment_expression "bVar1 = *(byte *)(local_28 + 7)" (identifier "bVar1") (= "=") (pointer_expression "*(byte *)(local_28 + 7)" (* "*") (cast_expression "(byte *)(local_28 + 7)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_28 + 7)" (( "(") (binary_expression "local_28 + 7" (identifier "local_28") (+ "+") (number_literal "7")) () ")"))))) (; ";")) (if_statement "if ((bVar1 & 1) == 0) {\n                    \n      FUN_002446e0(unaff_EDI + 0x11d136,0xc5,&UNK_001672e1 + unaff_EDI,\n                   (int)((ulonglong)uVar5 >> 0x20));\n    }" (if "if") (parenthesized_expression "((bVar1 & 1) == 0)" (( "(") (binary_expression "(bVar1 & 1) == 0" (parenthesized_expression "(bVar1 & 1)" (( "(") (binary_expression "bVar1 & 1" (identifier "bVar1") (& "&") (number_literal "1")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                    \n      FUN_002446e0(unaff_EDI + 0x11d136,0xc5,&UNK_001672e1 + unaff_EDI,\n                   (int)((ulonglong)uVar5 >> 0x20));\n    }" ({ "{") (expression_statement "FUN_002446e0(unaff_EDI + 0x11d136,0xc5,&UNK_001672e1 + unaff_EDI,\n                   (int)((ulonglong)uVar5 >> 0x20));" (call_expression "FUN_002446e0(unaff_EDI + 0x11d136,0xc5,&UNK_001672e1 + unaff_EDI,\n                   (int)((ulonglong)uVar5 >> 0x20))" (identifier "FUN_002446e0") (argument_list "(unaff_EDI + 0x11d136,0xc5,&UNK_001672e1 + unaff_EDI,\n                   (int)((ulonglong)uVar5 >> 0x20))" (( "(") (binary_expression "unaff_EDI + 0x11d136" (identifier "unaff_EDI") (+ "+") (number_literal "0x11d136")) (, ",") (number_literal "0xc5") (, ",") (binary_expression "&UNK_001672e1 + unaff_EDI" (pointer_expression "&UNK_001672e1" (& "&") (identifier "UNK_001672e1")) (+ "+") (identifier "unaff_EDI")) (, ",") (cast_expression "(int)((ulonglong)uVar5 >> 0x20)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "((ulonglong)uVar5 >> 0x20)" (( "(") (binary_expression "(ulonglong)uVar5 >> 0x20" (cast_expression "(ulonglong)uVar5" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (identifier "uVar5")) (>> ">>") (number_literal "0x20")) () ")"))) () ")"))) (; ";")) (} "}"))) (expression_statement "iVar2 = local_28[2];" (assignment_expression "iVar2 = local_28[2]" (identifier "iVar2") (= "=") (subscript_expression "local_28[2]" (identifier "local_28") ([ "[") (number_literal "2") (] "]"))) (; ";")) (expression_statement "*param_3 = local_28[1];" (assignment_expression "*param_3 = local_28[1]" (pointer_expression "*param_3" (* "*") (identifier "param_3")) (= "=") (subscript_expression "local_28[1]" (identifier "local_28") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "param_3[1] = iVar2;" (assignment_expression "param_3[1] = iVar2" (subscript_expression "param_3[1]" (identifier "param_3") ([ "[") (number_literal "1") (] "]")) (= "=") (identifier "iVar2")) (; ";")) (expression_statement "local_24 = *local_28;" (assignment_expression "local_24 = *local_28" (identifier "local_24") (= "=") (pointer_expression "*local_28" (* "*") (identifier "local_28"))) (; ";")) (if_statement "if (*(code **)(local_24 + 0x10) == (code *)(unaff_EDI + -0x1ec177)) {\n      bVar4 = *(byte *)(local_28 + 0x24) >> 7;\n    }\n    else {\n      bVar4 = (**(code **)(local_24 + 0x10))(local_28);\n      local_28 = *(int **)(param_1 + 0x44);\n      local_24 = *local_28;\n    }" (if "if") (parenthesized_expression "(*(code **)(local_24 + 0x10) == (code *)(unaff_EDI + -0x1ec177))" (( "(") (binary_expression "*(code **)(local_24 + 0x10) == (code *)(unaff_EDI + -0x1ec177)" (pointer_expression "*(code **)(local_24 + 0x10)" (* "*") (cast_expression "(code **)(local_24 + 0x10)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(local_24 + 0x10)" (( "(") (binary_expression "local_24 + 0x10" (identifier "local_24") (+ "+") (number_literal "0x10")) () ")")))) (== "==") (cast_expression "(code *)(unaff_EDI + -0x1ec177)" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(unaff_EDI + -0x1ec177)" (( "(") (binary_expression "unaff_EDI + -0x1ec177" (identifier "unaff_EDI") (+ "+") (number_literal "-0x1ec177")) () ")")))) () ")")) (compound_statement "{\n      bVar4 = *(byte *)(local_28 + 0x24) >> 7;\n    }" ({ "{") (expression_statement "bVar4 = *(byte *)(local_28 + 0x24) >> 7;" (assignment_expression "bVar4 = *(byte *)(local_28 + 0x24) >> 7" (identifier "bVar4") (= "=") (binary_expression "*(byte *)(local_28 + 0x24) >> 7" (pointer_expression "*(byte *)(local_28 + 0x24)" (* "*") (cast_expression "(byte *)(local_28 + 0x24)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_28 + 0x24)" (( "(") (binary_expression "local_28 + 0x24" (identifier "local_28") (+ "+") (number_literal "0x24")) () ")")))) (>> ">>") (number_literal "7"))) (; ";")) (} "}")) (else_clause "else {\n      bVar4 = (**(code **)(local_24 + 0x10))(local_28);\n      local_28 = *(int **)(param_1 + 0x44);\n      local_24 = *local_28;\n    }" (else "else") (compound_statement "{\n      bVar4 = (**(code **)(local_24 + 0x10))(local_28);\n      local_28 = *(int **)(param_1 + 0x44);\n      local_24 = *local_28;\n    }" ({ "{") (expression_statement "bVar4 = (**(code **)(local_24 + 0x10))(local_28);" (assignment_expression "bVar4 = (**(code **)(local_24 + 0x10))(local_28)" (identifier "bVar4") (= "=") (call_expression "(**(code **)(local_24 + 0x10))(local_28)" (parenthesized_expression "(**(code **)(local_24 + 0x10))" (( "(") (pointer_expression "**(code **)(local_24 + 0x10)" (* "*") (pointer_expression "*(code **)(local_24 + 0x10)" (* "*") (cast_expression "(code **)(local_24 + 0x10)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(local_24 + 0x10)" (( "(") (binary_expression "local_24 + 0x10" (identifier "local_24") (+ "+") (number_literal "0x10")) () ")"))))) () ")")) (argument_list "(local_28)" (( "(") (identifier "local_28") () ")")))) (; ";")) (expression_statement "local_28 = *(int **)(param_1 + 0x44);" (assignment_expression "local_28 = *(int **)(param_1 + 0x44)" (identifier "local_28") (= "=") (pointer_expression "*(int **)(param_1 + 0x44)" (* "*") (cast_expression "(int **)(param_1 + 0x44)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0x44)" (( "(") (binary_expression "param_1 + 0x44" (identifier "param_1") (+ "+") (number_literal "0x44")) () ")"))))) (; ";")) (expression_statement "local_24 = *local_28;" (assignment_expression "local_24 = *local_28" (identifier "local_24") (= "=") (pointer_expression "*local_28" (* "*") (identifier "local_28"))) (; ";")) (} "}")))) (if_statement "if (bVar4 == 0) {\n      iVar2 = param_3[1];\n      *param_4 = *param_3;\n      param_4[1] = iVar2;\n    }\n    else {\n      if (*(code **)(local_24 + 0x14) == (code *)(unaff_EDI + -0x1ebfe7)) {\n        if (-1 < (char)local_28[0x24]) {\n                    \n          FUN_002446e0(unaff_EDI + 0x11d136,0x107b,&UNK_001672a5 + unaff_EDI,local_28);\n        }\n        uVar5 = *(undefined8 *)(local_28 + 0xd);\n      }\n      else {\n        uVar5 = (**(code **)(local_24 + 0x14))(local_28);\n        local_28 = *(int **)(param_1 + 0x44);\n        local_24 = *local_28;\n      }\n      *(undefined8 *)param_4 = uVar5;\n    }" (if "if") (parenthesized_expression "(bVar4 == 0)" (( "(") (binary_expression "bVar4 == 0" (identifier "bVar4") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      iVar2 = param_3[1];\n      *param_4 = *param_3;\n      param_4[1] = iVar2;\n    }" ({ "{") (expression_statement "iVar2 = param_3[1];" (assignment_expression "iVar2 = param_3[1]" (identifier "iVar2") (= "=") (subscript_expression "param_3[1]" (identifier "param_3") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "*param_4 = *param_3;" (assignment_expression "*param_4 = *param_3" (pointer_expression "*param_4" (* "*") (identifier "param_4")) (= "=") (pointer_expression "*param_3" (* "*") (identifier "param_3"))) (; ";")) (expression_statement "param_4[1] = iVar2;" (assignment_expression "param_4[1] = iVar2" (subscript_expression "param_4[1]" (identifier "param_4") ([ "[") (number_literal "1") (] "]")) (= "=") (identifier "iVar2")) (; ";")) (} "}")) (else_clause "else {\n      if (*(code **)(local_24 + 0x14) == (code *)(unaff_EDI + -0x1ebfe7)) {\n        if (-1 < (char)local_28[0x24]) {\n                    \n          FUN_002446e0(unaff_EDI + 0x11d136,0x107b,&UNK_001672a5 + unaff_EDI,local_28);\n        }\n        uVar5 = *(undefined8 *)(local_28 + 0xd);\n      }\n      else {\n        uVar5 = (**(code **)(local_24 + 0x14))(local_28);\n        local_28 = *(int **)(param_1 + 0x44);\n        local_24 = *local_28;\n      }\n      *(undefined8 *)param_4 = uVar5;\n    }" (else "else") (compound_statement "{\n      if (*(code **)(local_24 + 0x14) == (code *)(unaff_EDI + -0x1ebfe7)) {\n        if (-1 < (char)local_28[0x24]) {\n                    \n          FUN_002446e0(unaff_EDI + 0x11d136,0x107b,&UNK_001672a5 + unaff_EDI,local_28);\n        }\n        uVar5 = *(undefined8 *)(local_28 + 0xd);\n      }\n      else {\n        uVar5 = (**(code **)(local_24 + 0x14))(local_28);\n        local_28 = *(int **)(param_1 + 0x44);\n        local_24 = *local_28;\n      }\n      *(undefined8 *)param_4 = uVar5;\n    }" ({ "{") (if_statement "if (*(code **)(local_24 + 0x14) == (code *)(unaff_EDI + -0x1ebfe7)) {\n        if (-1 < (char)local_28[0x24]) {\n                    \n          FUN_002446e0(unaff_EDI + 0x11d136,0x107b,&UNK_001672a5 + unaff_EDI,local_28);\n        }\n        uVar5 = *(undefined8 *)(local_28 + 0xd);\n      }\n      else {\n        uVar5 = (**(code **)(local_24 + 0x14))(local_28);\n        local_28 = *(int **)(param_1 + 0x44);\n        local_24 = *local_28;\n      }" (if "if") (parenthesized_expression "(*(code **)(local_24 + 0x14) == (code *)(unaff_EDI + -0x1ebfe7))" (( "(") (binary_expression "*(code **)(local_24 + 0x14) == (code *)(unaff_EDI + -0x1ebfe7)" (pointer_expression "*(code **)(local_24 + 0x14)" (* "*") (cast_expression "(code **)(local_24 + 0x14)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(local_24 + 0x14)" (( "(") (binary_expression "local_24 + 0x14" (identifier "local_24") (+ "+") (number_literal "0x14")) () ")")))) (== "==") (cast_expression "(code *)(unaff_EDI + -0x1ebfe7)" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(unaff_EDI + -0x1ebfe7)" (( "(") (binary_expression "unaff_EDI + -0x1ebfe7" (identifier "unaff_EDI") (+ "+") (number_literal "-0x1ebfe7")) () ")")))) () ")")) (compound_statement "{\n        if (-1 < (char)local_28[0x24]) {\n                    \n          FUN_002446e0(unaff_EDI + 0x11d136,0x107b,&UNK_001672a5 + unaff_EDI,local_28);\n        }\n        uVar5 = *(undefined8 *)(local_28 + 0xd);\n      }" ({ "{") (if_statement "if (-1 < (char)local_28[0x24]) {\n                    \n          FUN_002446e0(unaff_EDI + 0x11d136,0x107b,&UNK_001672a5 + unaff_EDI,local_28);\n        }" (if "if") (parenthesized_expression "(-1 < (char)local_28[0x24])" (( "(") (binary_expression "-1 < (char)local_28[0x24]" (number_literal "-1") (< "<") (cast_expression "(char)local_28[0x24]" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (subscript_expression "local_28[0x24]" (identifier "local_28") ([ "[") (number_literal "0x24") (] "]")))) () ")")) (compound_statement "{\n                    \n          FUN_002446e0(unaff_EDI + 0x11d136,0x107b,&UNK_001672a5 + unaff_EDI,local_28);\n        }" ({ "{") (expression_statement "FUN_002446e0(unaff_EDI + 0x11d136,0x107b,&UNK_001672a5 + unaff_EDI,local_28);" (call_expression "FUN_002446e0(unaff_EDI + 0x11d136,0x107b,&UNK_001672a5 + unaff_EDI,local_28)" (identifier "FUN_002446e0") (argument_list "(unaff_EDI + 0x11d136,0x107b,&UNK_001672a5 + unaff_EDI,local_28)" (( "(") (binary_expression "unaff_EDI + 0x11d136" (identifier "unaff_EDI") (+ "+") (number_literal "0x11d136")) (, ",") (number_literal "0x107b") (, ",") (binary_expression "&UNK_001672a5 + unaff_EDI" (pointer_expression "&UNK_001672a5" (& "&") (identifier "UNK_001672a5")) (+ "+") (identifier "unaff_EDI")) (, ",") (identifier "local_28") () ")"))) (; ";")) (} "}"))) (expression_statement "uVar5 = *(undefined8 *)(local_28 + 0xd);" (assignment_expression "uVar5 = *(undefined8 *)(local_28 + 0xd)" (identifier "uVar5") (= "=") (pointer_expression "*(undefined8 *)(local_28 + 0xd)" (* "*") (cast_expression "(undefined8 *)(local_28 + 0xd)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_28 + 0xd)" (( "(") (binary_expression "local_28 + 0xd" (identifier "local_28") (+ "+") (number_literal "0xd")) () ")"))))) (; ";")) (} "}")) (else_clause "else {\n        uVar5 = (**(code **)(local_24 + 0x14))(local_28);\n        local_28 = *(int **)(param_1 + 0x44);\n        local_24 = *local_28;\n      }" (else "else") (compound_statement "{\n        uVar5 = (**(code **)(local_24 + 0x14))(local_28);\n        local_28 = *(int **)(param_1 + 0x44);\n        local_24 = *local_28;\n      }" ({ "{") (expression_statement "uVar5 = (**(code **)(local_24 + 0x14))(local_28);" (assignment_expression "uVar5 = (**(code **)(local_24 + 0x14))(local_28)" (identifier "uVar5") (= "=") (call_expression "(**(code **)(local_24 + 0x14))(local_28)" (parenthesized_expression "(**(code **)(local_24 + 0x14))" (( "(") (pointer_expression "**(code **)(local_24 + 0x14)" (* "*") (pointer_expression "*(code **)(local_24 + 0x14)" (* "*") (cast_expression "(code **)(local_24 + 0x14)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(local_24 + 0x14)" (( "(") (binary_expression "local_24 + 0x14" (identifier "local_24") (+ "+") (number_literal "0x14")) () ")"))))) () ")")) (argument_list "(local_28)" (( "(") (identifier "local_28") () ")")))) (; ";")) (expression_statement "local_28 = *(int **)(param_1 + 0x44);" (assignment_expression "local_28 = *(int **)(param_1 + 0x44)" (identifier "local_28") (= "=") (pointer_expression "*(int **)(param_1 + 0x44)" (* "*") (cast_expression "(int **)(param_1 + 0x44)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0x44)" (( "(") (binary_expression "param_1 + 0x44" (identifier "param_1") (+ "+") (number_literal "0x44")) () ")"))))) (; ";")) (expression_statement "local_24 = *local_28;" (assignment_expression "local_24 = *local_28" (identifier "local_24") (= "=") (pointer_expression "*local_28" (* "*") (identifier "local_28"))) (; ";")) (} "}")))) (expression_statement "*(undefined8 *)param_4 = uVar5;" (assignment_expression "*(undefined8 *)param_4 = uVar5" (pointer_expression "*(undefined8 *)param_4" (* "*") (cast_expression "(undefined8 *)param_4" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "param_4"))) (= "=") (identifier "uVar5")) (; ";")) (} "}")))) (if_statement "if (*(code **)(local_24 + 0xc) == (code *)(unaff_EDI + -0x22e9f7)) {\n      uVar5 = *(undefined8 *)(local_28 + 9);\n    }\n    else {\n      uVar5 = (**(code **)(local_24 + 0xc))(local_28);\n      local_28 = *(int **)(param_1 + 0x44);\n    }" (if "if") (parenthesized_expression "(*(code **)(local_24 + 0xc) == (code *)(unaff_EDI + -0x22e9f7))" (( "(") (binary_expression "*(code **)(local_24 + 0xc) == (code *)(unaff_EDI + -0x22e9f7)" (pointer_expression "*(code **)(local_24 + 0xc)" (* "*") (cast_expression "(code **)(local_24 + 0xc)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(local_24 + 0xc)" (( "(") (binary_expression "local_24 + 0xc" (identifier "local_24") (+ "+") (number_literal "0xc")) () ")")))) (== "==") (cast_expression "(code *)(unaff_EDI + -0x22e9f7)" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(unaff_EDI + -0x22e9f7)" (( "(") (binary_expression "unaff_EDI + -0x22e9f7" (identifier "unaff_EDI") (+ "+") (number_literal "-0x22e9f7")) () ")")))) () ")")) (compound_statement "{\n      uVar5 = *(undefined8 *)(local_28 + 9);\n    }" ({ "{") (expression_statement "uVar5 = *(undefined8 *)(local_28 + 9);" (assignment_expression "uVar5 = *(undefined8 *)(local_28 + 9)" (identifier "uVar5") (= "=") (pointer_expression "*(undefined8 *)(local_28 + 9)" (* "*") (cast_expression "(undefined8 *)(local_28 + 9)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_28 + 9)" (( "(") (binary_expression "local_28 + 9" (identifier "local_28") (+ "+") (number_literal "9")) () ")"))))) (; ";")) (} "}")) (else_clause "else {\n      uVar5 = (**(code **)(local_24 + 0xc))(local_28);\n      local_28 = *(int **)(param_1 + 0x44);\n    }" (else "else") (compound_statement "{\n      uVar5 = (**(code **)(local_24 + 0xc))(local_28);\n      local_28 = *(int **)(param_1 + 0x44);\n    }" ({ "{") (expression_statement "uVar5 = (**(code **)(local_24 + 0xc))(local_28);" (assignment_expression "uVar5 = (**(code **)(local_24 + 0xc))(local_28)" (identifier "uVar5") (= "=") (call_expression "(**(code **)(local_24 + 0xc))(local_28)" (parenthesized_expression "(**(code **)(local_24 + 0xc))" (( "(") (pointer_expression "**(code **)(local_24 + 0xc)" (* "*") (pointer_expression "*(code **)(local_24 + 0xc)" (* "*") (cast_expression "(code **)(local_24 + 0xc)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(local_24 + 0xc)" (( "(") (binary_expression "local_24 + 0xc" (identifier "local_24") (+ "+") (number_literal "0xc")) () ")"))))) () ")")) (argument_list "(local_28)" (( "(") (identifier "local_28") () ")")))) (; ";")) (expression_statement "local_28 = *(int **)(param_1 + 0x44);" (assignment_expression "local_28 = *(int **)(param_1 + 0x44)" (identifier "local_28") (= "=") (pointer_expression "*(int **)(param_1 + 0x44)" (* "*") (cast_expression "(int **)(param_1 + 0x44)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0x44)" (( "(") (binary_expression "param_1 + 0x44" (identifier "param_1") (+ "+") (number_literal "0x44")) () ")"))))) (; ";")) (} "}")))) (expression_statement "*param_5 = uVar5;" (assignment_expression "*param_5 = uVar5" (pointer_expression "*param_5" (* "*") (identifier "param_5")) (= "=") (identifier "uVar5")) (; ";")) (expression_statement "iVar2 = local_28[3];" (assignment_expression "iVar2 = local_28[3]" (identifier "iVar2") (= "=") (subscript_expression "local_28[3]" (identifier "local_28") ([ "[") (number_literal "3") (] "]"))) (; ";")) (expression_statement "param_6[1] = local_28[4];" (assignment_expression "param_6[1] = local_28[4]" (subscript_expression "param_6[1]" (identifier "param_6") ([ "[") (number_literal "1") (] "]")) (= "=") (subscript_expression "local_28[4]" (identifier "local_28") ([ "[") (number_literal "4") (] "]"))) (; ";")) (expression_statement "*param_6 = iVar2;" (assignment_expression "*param_6 = iVar2" (pointer_expression "*param_6" (* "*") (identifier "param_6")) (= "=") (identifier "iVar2")) (; ";")) (return_statement "return bVar1 & 1;" (return "return") (binary_expression "bVar1 & 1" (identifier "bVar1") (& "&") (number_literal "1")) (; ";")) (} "}"))) (expression_statement "iVar2 = *(int *)(param_1 + 0x4c);" (assignment_expression "iVar2 = *(int *)(param_1 + 0x4c)" (identifier "iVar2") (= "=") (pointer_expression "*(int *)(param_1 + 0x4c)" (* "*") (cast_expression "(int *)(param_1 + 0x4c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x4c)" (( "(") (binary_expression "param_1 + 0x4c" (identifier "param_1") (+ "+") (number_literal "0x4c")) () ")"))))) (; ";")) (expression_statement "*param_3 = *(int *)(param_1 + 0x48);" (assignment_expression "*param_3 = *(int *)(param_1 + 0x48)" (pointer_expression "*param_3" (* "*") (identifier "param_3")) (= "=") (pointer_expression "*(int *)(param_1 + 0x48)" (* "*") (cast_expression "(int *)(param_1 + 0x48)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x48)" (( "(") (binary_expression "param_1 + 0x48" (identifier "param_1") (+ "+") (number_literal "0x48")) () ")"))))) (; ";")) (expression_statement "param_3[1] = iVar2;" (assignment_expression "param_3[1] = iVar2" (subscript_expression "param_3[1]" (identifier "param_3") ([ "[") (number_literal "1") (] "]")) (= "=") (identifier "iVar2")) (; ";")) (expression_statement "iVar2 = *(int *)(param_1 + 0x54);" (assignment_expression "iVar2 = *(int *)(param_1 + 0x54)" (identifier "iVar2") (= "=") (pointer_expression "*(int *)(param_1 + 0x54)" (* "*") (cast_expression "(int *)(param_1 + 0x54)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x54)" (( "(") (binary_expression "param_1 + 0x54" (identifier "param_1") (+ "+") (number_literal "0x54")) () ")"))))) (; ";")) (expression_statement "*param_4 = *(int *)(param_1 + 0x50);" (assignment_expression "*param_4 = *(int *)(param_1 + 0x50)" (pointer_expression "*param_4" (* "*") (identifier "param_4")) (= "=") (pointer_expression "*(int *)(param_1 + 0x50)" (* "*") (cast_expression "(int *)(param_1 + 0x50)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x50)" (( "(") (binary_expression "param_1 + 0x50" (identifier "param_1") (+ "+") (number_literal "0x50")) () ")"))))) (; ";")) (expression_statement "param_4[1] = iVar2;" (assignment_expression "param_4[1] = iVar2" (subscript_expression "param_4[1]" (identifier "param_4") ([ "[") (number_literal "1") (] "]")) (= "=") (identifier "iVar2")) (; ";")) (expression_statement "uVar3 = *(undefined4 *)(param_1 + 0x5c);" (assignment_expression "uVar3 = *(undefined4 *)(param_1 + 0x5c)" (identifier "uVar3") (= "=") (pointer_expression "*(undefined4 *)(param_1 + 0x5c)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0x5c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x5c)" (( "(") (binary_expression "param_1 + 0x5c" (identifier "param_1") (+ "+") (number_literal "0x5c")) () ")"))))) (; ";")) (expression_statement "*(undefined4 *)param_5 = *(undefined4 *)(param_1 + 0x58);" (assignment_expression "*(undefined4 *)param_5 = *(undefined4 *)(param_1 + 0x58)" (pointer_expression "*(undefined4 *)param_5" (* "*") (cast_expression "(undefined4 *)param_5" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "param_5"))) (= "=") (pointer_expression "*(undefined4 *)(param_1 + 0x58)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0x58)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x58)" (( "(") (binary_expression "param_1 + 0x58" (identifier "param_1") (+ "+") (number_literal "0x58")) () ")"))))) (; ";")) (expression_statement "*(undefined4 *)((int)param_5 + 4) = uVar3;" (assignment_expression "*(undefined4 *)((int)param_5 + 4) = uVar3" (pointer_expression "*(undefined4 *)((int)param_5 + 4)" (* "*") (cast_expression "(undefined4 *)((int)param_5 + 4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)param_5 + 4)" (( "(") (binary_expression "(int)param_5 + 4" (cast_expression "(int)param_5" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_5")) (+ "+") (number_literal "4")) () ")")))) (= "=") (identifier "uVar3")) (; ";")) (expression_statement "*param_6 = 0;" (assignment_expression "*param_6 = 0" (pointer_expression "*param_6" (* "*") (identifier "param_6")) (= "=") (number_literal "0")) (; ";")) (expression_statement "param_6[1] = 0;" (assignment_expression "param_6[1] = 0" (subscript_expression "param_6[1]" (identifier "param_6") ([ "[") (number_literal "1") (] "]")) (= "=") (number_literal "0")) (; ";")) (return_statement "return 1;" (return "return") (number_literal "1") (; ";")) (} "}")))

/* DWARF original prototype: bool get_output_section_info(Output_section_definition * this, char *
   name, uint64_t * address, uint64_t * load_address, uint64_t * addralign, uint64_t * size) */

bool __thiscall
gold::type_1::function_1
          (type_1 *this,char *name,uint64_t *address,uint64_t *load_address,
          uint64_t *addralign,uint64_t *size)

{
  type_2 var_5;
  type_3 oVar2;
  type_2 var_8;
  int var_3;
  type_4 uVar5;
  type_4 extraout_EDX;
  type_4 extraout_EDX_00;
  int var_7;
  type_5 *var_4;
  type_6 **local_24;
  
  var_1();
  var_3 = std::string::var_2((char *)&this->name_);
  if (var_3 != 0) {
    return false;
  }
  var_4 = this->output_section_;
  if (var_4 != (type_5 *)0x0) {
    var_5 = (var_4->super_Output_data).field_0x1c;
    if ((var_5 & 1) == 0) {
                    /* WARNING: Subroutine does not return */
      var_6((char *)(var_7 + 0x11d136),0xc5,(char *)(var_7 + 0x1672e1));
    }
    uVar5 = *(type_4 *)((int)&(var_4->super_Output_data).address_ + 4);
    *(int *)address = (int)(var_4->super_Output_data).address_;
    *(type_4 *)((int)address + 4) = uVar5;
    local_24 = (var_4->super_Output_data)._vptr_Output_data;
    if (local_24[4] == (type_6 *)(var_7 + -0x1ec177)) {
      var_8 = (type_2)var_4->field_0x90 >> 7;
    }
    else {
      var_3 = (*local_24[4])(var_4,name);
      var_8 = (type_2)var_3;
      var_4 = this->output_section_;
      local_24 = (var_4->super_Output_data)._vptr_Output_data;
    }
    if (var_8 == 0) {
      uVar5 = *(type_4 *)((int)address + 4);
      *(int *)load_address = (int)*address;
      *(type_4 *)((int)load_address + 4) = uVar5;
    }
    else {
      if (local_24[5] == (type_6 *)(var_7 + -0x1ebfe7)) {
        if (-1 < (char)var_4->field_0x90) {
                    /* WARNING: Subroutine does not return */
          var_6((char *)(var_7 + 0x11d136),0x107b,(char *)(var_7 + 0x1672a5));
        }
        uVar5 = *(type_4 *)((int)&var_4->load_address_ + 4);
        var_3 = (int)var_4->load_address_;
      }
      else {
        var_3 = (*local_24[5])(var_4);
        var_4 = this->output_section_;
        local_24 = (var_4->super_Output_data)._vptr_Output_data;
        uVar5 = extraout_EDX_00;
      }
      *(int *)load_address = var_3;
      *(type_4 *)((int)load_address + 4) = uVar5;
    }
    if (local_24[3] == (type_6 *)(var_7 + -0x22e9f7)) {
      uVar5 = *(type_4 *)((int)&var_4->addralign_ + 4);
      var_3 = (int)var_4->addralign_;
    }
    else {
      var_3 = (*local_24[3])(var_4);
      var_4 = this->output_section_;
      uVar5 = extraout_EDX;
    }
    *(int *)addralign = var_3;
    *(type_4 *)((int)addralign + 4) = uVar5;
    oVar2 = (var_4->super_Output_data).data_size_;
    *(type_4 *)((int)size + 4) =
         *(type_4 *)((int)&(var_4->super_Output_data).data_size_ + 4);
    *(int *)size = (int)oVar2;
    return (bool)(var_5 & 1);
  }
  uVar5 = *(type_4 *)((int)&this->evaluated_address_ + 4);
  *(int *)address = (int)this->evaluated_address_;
  *(type_4 *)((int)address + 4) = uVar5;
  uVar5 = *(type_4 *)((int)&this->evaluated_load_address_ + 4);
  *(int *)load_address = (int)this->evaluated_load_address_;
  *(type_4 *)((int)load_address + 4) = uVar5;
  uVar5 = *(type_4 *)((int)&this->evaluated_addralign_ + 4);
  *(int *)addralign = (int)this->evaluated_addralign_;
  *(type_4 *)((int)addralign + 4) = uVar5;
  *(type_4 *)size = 0;
  *(type_4 *)((int)size + 4) = 0;
  return true;
}


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

byte MASKED(int param_1,undefined4 param_2,int *param_3,int *param_4,undefined8 *param_5,
                 int *param_6)

{
  byte bVar1;
  int iVar2;
  undefined4 uVar3;
  byte bVar4;
  int unaff_EDI;
  undefined8 uVar5;
  int *local_28;
  int local_24;
  
  FUN_00074f0a();
  uVar5 = FUN_003b8640(param_1 + 4,param_2);
  if ((int)uVar5 != 0) {
    return 0;
  }
  local_28 = *(int **)(param_1 + 0x44);
  if (local_28 != (int *)0x0) {
    bVar1 = *(byte *)(local_28 + 7);
    if ((bVar1 & 1) == 0) {
                    /* WARNING: Subroutine does not return */
      FUN_002446e0(unaff_EDI + 0x11d136,0xc5,&UNK_001672e1 + unaff_EDI,
                   (int)((ulonglong)uVar5 >> 0x20));
    }
    iVar2 = local_28[2];
    *param_3 = local_28[1];
    param_3[1] = iVar2;
    local_24 = *local_28;
    if (*(code **)(local_24 + 0x10) == (code *)(unaff_EDI + -0x1ec177)) {
      bVar4 = *(byte *)(local_28 + 0x24) >> 7;
    }
    else {
      bVar4 = (**(code **)(local_24 + 0x10))(local_28);
      local_28 = *(int **)(param_1 + 0x44);
      local_24 = *local_28;
    }
    if (bVar4 == 0) {
      iVar2 = param_3[1];
      *param_4 = *param_3;
      param_4[1] = iVar2;
    }
    else {
      if (*(code **)(local_24 + 0x14) == (code *)(unaff_EDI + -0x1ebfe7)) {
        if (-1 < (char)local_28[0x24]) {
                    /* WARNING: Subroutine does not return */
          FUN_002446e0(unaff_EDI + 0x11d136,0x107b,&UNK_001672a5 + unaff_EDI,local_28);
        }
        uVar5 = *(undefined8 *)(local_28 + 0xd);
      }
      else {
        uVar5 = (**(code **)(local_24 + 0x14))(local_28);
        local_28 = *(int **)(param_1 + 0x44);
        local_24 = *local_28;
      }
      *(undefined8 *)param_4 = uVar5;
    }
    if (*(code **)(local_24 + 0xc) == (code *)(unaff_EDI + -0x22e9f7)) {
      uVar5 = *(undefined8 *)(local_28 + 9);
    }
    else {
      uVar5 = (**(code **)(local_24 + 0xc))(local_28);
      local_28 = *(int **)(param_1 + 0x44);
    }
    *param_5 = uVar5;
    iVar2 = local_28[3];
    param_6[1] = local_28[4];
    *param_6 = iVar2;
    return bVar1 & 1;
  }
  iVar2 = *(int *)(param_1 + 0x4c);
  *param_3 = *(int *)(param_1 + 0x48);
  param_3[1] = iVar2;
  iVar2 = *(int *)(param_1 + 0x54);
  *param_4 = *(int *)(param_1 + 0x50);
  param_4[1] = iVar2;
  uVar3 = *(undefined4 *)(param_1 + 0x5c);
  *(undefined4 *)param_5 = *(undefined4 *)(param_1 + 0x58);
  *(undefined4 *)((int)param_5 + 4) = uVar3;
  *param_6 = 0;
  param_6[1] = 0;
  return 1;
}

