
/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */
/* std::time_get<wchar_t, std::istreambuf_iterator<wchar_t, std::char_traits<wchar_t> >
   >::do_get_weekday(std::istreambuf_iterator<wchar_t, std::char_traits<wchar_t> >,
   std::istreambuf_iterator<wchar_t, std::char_traits<wchar_t> >, std::ios_base&,
   std::_Ios_Iostate&, tm*) const */

void std::time_get<wchar_t,std::istreambuf_iterator<wchar_t,std::char_traits<wchar_t>>>::
     do_get_weekday(undefined4 *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,
                   int *param_5,int param_6,int param_7,uint *param_8,int param_9)

{
  __timepunct *p_Var1;
  int iVar2;
  bool bVar3;
  int *piVar4;
  bool bVar5;
  int *local_64;
  int local_60;
  undefined4 local_5c;
  int local_58;
  undefined4 local_54;
  undefined4 local_50;
  undefined4 local_4c;
  undefined4 local_48;
  undefined4 local_44;
  undefined4 local_40;
  undefined4 local_3c;
  undefined4 local_38;
  undefined4 local_34;
  undefined4 local_30;
  undefined4 local_2c;
  undefined4 local_28;
  undefined4 local_24;
  undefined4 local_20;
  undefined4 uStack_14;
  
  uStack_14 = 0x254c09;
  p_Var1 = use_facet<std::__timepunct<wchar_t>>((locale *)(param_7 + 0x6c));
  local_58 = 0;
  iVar2 = *(int *)(p_Var1 + 8);
  local_54 = *(undefined4 *)(iVar2 + 0x48);
  local_50 = *(undefined4 *)(iVar2 + 0x4c);
  local_4c = *(undefined4 *)(iVar2 + 0x50);
  local_48 = *(undefined4 *)(iVar2 + 0x54);
  local_44 = *(undefined4 *)(iVar2 + 0x58);
  local_40 = *(undefined4 *)(iVar2 + 0x5c);
  local_3c = *(undefined4 *)(iVar2 + 0x60);
  local_38 = *(undefined4 *)(iVar2 + 0x2c);
  local_34 = *(undefined4 *)(iVar2 + 0x30);
  local_30 = *(undefined4 *)(iVar2 + 0x34);
  local_2c = *(undefined4 *)(iVar2 + 0x38);
  local_28 = *(undefined4 *)(iVar2 + 0x3c);
  local_24 = *(undefined4 *)(iVar2 + 0x40);
  local_20 = *(undefined4 *)(iVar2 + 0x44);
  _M_extract_wday_or_month
            (&local_64,param_2,param_3,param_4,param_5,param_6,&local_5c,&local_54,7,param_7,
             &local_58);
  piVar4 = local_64;
  if (local_58 == 0) {
    bVar5 = local_60 == -1;
    *(undefined4 *)(param_9 + 0x18) = local_5c;
    bVar3 = local_64 != (int *)0x0 && bVar5;
    if (local_64 == (int *)0x0 || !bVar5) goto LAB_00254d05;
  }
  else {
    *param_8 = *param_8 | 4;
    bVar5 = local_60 == -1;
    bVar3 = local_64 != (int *)0x0 && bVar5;
    if (local_64 == (int *)0x0 || !bVar5) goto LAB_00254d05;
  }
  if ((int *)local_64[2] < (int *)local_64[3]) {
    iVar2 = *(int *)local_64[2];
  }
  else {
    iVar2 = (**(code **)(*local_64 + 0x24))(local_64);
  }
  bVar5 = false;
  if (iVar2 == -1) {
    piVar4 = (int *)0x0;
    bVar5 = bVar3;
  }
LAB_00254d05:
  bVar3 = param_6 == -1;
  if ((param_5 != (int *)0x0) && (bVar3)) {
    if ((int *)param_5[2] < (int *)param_5[3]) {
      iVar2 = *(int *)param_5[2];
    }
    else {
      iVar2 = (**(code **)(*param_5 + 0x24))(param_5);
    }
    bVar3 = iVar2 == -1;
  }
  if (bVar5 == bVar3) {
    *param_8 = *param_8 | 2;
  }
  *param_1 = piVar4;
  param_1[1] = local_60;
  return;
}



/* WARNING: Function: __i686.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */
/* WARNING: Type propagation algorithm not settling */

void FUN_00254c00(undefined4 param_1,undefined4 param_2,undefined4 param_3,int *param_4,int param_5,
                 undefined4 param_6,uint *param_7,int param_8)

{
  int iVar1;
  bool bVar2;
  bool bVar3;
  undefined4 *unaff_retaddr;
  int *local_68;
  int local_64;
  undefined4 local_60;
  int local_5c [3];
  undefined4 local_50;
  undefined4 local_4c;
  undefined4 local_48;
  undefined4 local_44;
  undefined4 local_40;
  undefined4 local_3c;
  undefined4 local_38;
  undefined4 local_34;
  undefined4 local_30;
  undefined4 local_2c;
  undefined4 local_28;
  undefined4 local_24;
  undefined4 local_20;
  undefined4 uStack_14;
  
  uStack_14 = 0x254c09;
  iVar1 = FUN_0023db00(param_7 + 0x1b);
  local_5c[1] = 0;
  iVar1 = *(int *)(iVar1 + 8);
  local_5c[2] = *(undefined4 *)(iVar1 + 0x48);
  local_50 = *(undefined4 *)(iVar1 + 0x4c);
  local_4c = *(undefined4 *)(iVar1 + 0x50);
  local_48 = *(undefined4 *)(iVar1 + 0x54);
  local_44 = *(undefined4 *)(iVar1 + 0x58);
  local_40 = *(undefined4 *)(iVar1 + 0x5c);
  local_3c = *(undefined4 *)(iVar1 + 0x60);
  local_38 = *(undefined4 *)(iVar1 + 0x2c);
  local_34 = *(undefined4 *)(iVar1 + 0x30);
  local_30 = *(undefined4 *)(iVar1 + 0x34);
  local_2c = *(undefined4 *)(iVar1 + 0x38);
  local_28 = *(undefined4 *)(iVar1 + 0x3c);
  local_24 = *(undefined4 *)(iVar1 + 0x40);
  local_20 = *(undefined4 *)(iVar1 + 0x44);
  FUN_00254700(&local_64,param_2,param_3,param_4,param_5,param_6,local_5c,local_5c + 2,7,param_7,
               local_5c + 1);
  if (local_5c[0] == 0) {
    bVar3 = local_64 == -1;
    *(undefined4 *)(param_8 + 0x18) = local_60;
    bVar2 = local_68 != (int *)0x0 && bVar3;
    if (local_68 == (int *)0x0 || !bVar3) goto LAB_00254d05;
  }
  else {
    *param_7 = *param_7 | 4;
    bVar3 = local_64 == -1;
    bVar2 = local_68 != (int *)0x0 && bVar3;
    if (local_68 == (int *)0x0 || !bVar3) goto LAB_00254d05;
  }
  if ((int *)local_68[2] < (int *)local_68[3]) {
    iVar1 = *(int *)local_68[2];
  }
  else {
    iVar1 = (**(code **)(*local_68 + 0x24))(local_68);
  }
  bVar3 = false;
  if (iVar1 == -1) {
    local_68 = (int *)0x0;
    bVar3 = bVar2;
  }
LAB_00254d05:
  bVar2 = param_5 == -1;
  if ((param_4 != (int *)0x0) && (bVar2)) {
    if ((int *)param_4[2] < (int *)param_4[3]) {
      iVar1 = *(int *)param_4[2];
    }
    else {
      iVar1 = (**(code **)(*param_4 + 0x24))(param_4);
    }
    bVar2 = iVar1 == -1;
  }
  if (bVar3 == bVar2) {
    *param_7 = *param_7 | 2;
  }
  *unaff_retaddr = local_68;
  unaff_retaddr[1] = local_64;
  return;
}


PUSH EBP
PUSH EDI
PUSH ESI
PUSH EBX
CALL 0x00035840
ADD EBX,0x13a3f7
SUB ESP,0x68
MOV EBP,dword ptr [ESP + 0x94]
MOV ESI,dword ptr [ESP + 0x84]
MOV EDI,dword ptr [ESP + 0x88]
LEA EAX,[EBP + 0x6c]
PUSH EAX
CALL 0x0023db00
MOV dword ptr [ESP + 0x24],0x0
MOV EAX,dword ptr [EAX + 0x8]
MOV EDX,dword ptr [EAX + 0x48]
MOV dword ptr [ESP + 0x28],EDX
MOV EDX,dword ptr [EAX + 0x4c]
MOV dword ptr [ESP + 0x2c],EDX
MOV EDX,dword ptr [EAX + 0x50]
MOV dword ptr [ESP + 0x30],EDX
MOV EDX,dword ptr [EAX + 0x54]
MOV dword ptr [ESP + 0x34],EDX
MOV EDX,dword ptr [EAX + 0x58]
MOV dword ptr [ESP + 0x38],EDX
MOV EDX,dword ptr [EAX + 0x5c]
MOV dword ptr [ESP + 0x3c],EDX
MOV EDX,dword ptr [EAX + 0x60]
MOV dword ptr [ESP + 0x40],EDX
MOV EDX,dword ptr [EAX + 0x2c]
MOV dword ptr [ESP + 0x44],EDX
MOV EDX,dword ptr [EAX + 0x30]
MOV dword ptr [ESP + 0x48],EDX
MOV EDX,dword ptr [EAX + 0x34]
MOV dword ptr [ESP + 0x4c],EDX
MOV EDX,dword ptr [EAX + 0x38]
MOV dword ptr [ESP + 0x50],EDX
MOV EDX,dword ptr [EAX + 0x3c]
MOV dword ptr [ESP + 0x54],EDX
MOV EDX,dword ptr [EAX + 0x40]
MOV EAX,dword ptr [EAX + 0x44]
MOV dword ptr [ESP + 0x58],EDX
MOV dword ptr [ESP + 0x5c],EAX
LEA EAX,[ESP + 0x18]
ADD ESP,0xc
LEA EDX,[ESP + 0x18]
PUSH EDX
PUSH EBP
PUSH 0x7
LEA EDX,[ESP + 0x28]
PUSH EDX
LEA EDX,[ESP + 0x24]
PUSH EDX
PUSH dword ptr [ESP + 0x9c]
PUSH dword ptr [ESP + 0x9c]
PUSH EDI
PUSH ESI
PUSH dword ptr [ESP + 0x9c]
PUSH EAX
CALL 0x00254700
MOV ESI,dword ptr [ESP + 0x34]
MOV EDI,dword ptr [ESP + 0x38]
ADD ESP,0x2c
MOV EAX,dword ptr [ESP + 0x14]
MOV EBP,ESI
TEST EAX,EAX
JNZ 0x00254d60
MOV EDX,dword ptr [ESP + 0x10]
CMP EDI,-0x1
MOV EAX,dword ptr [ESP + 0x90]
SETZ BL
TEST EBP,EBP
MOV dword ptr [EAX + 0x18],EDX
SETNZ DL
AND DL,BL
JNZ 0x00254d79
CMP dword ptr [ESP + 0x84],-0x1
MOV EDX,dword ptr [ESP + 0x80]
SETZ AL
MOV ECX,EAX
TEST EDX,EDX
JZ 0x00254d21
TEST AL,AL
JNZ 0x00254d48
CMP BL,CL
JNZ 0x00254d2f
MOV EAX,dword ptr [ESP + 0x8c]
OR dword ptr [EAX],0x2
MOV EAX,dword ptr [ESP + 0x70]
MOV dword ptr [EAX],EBP
MOV dword ptr [EAX + 0x4],EDI
ADD ESP,0x5c
POP EBX
POP ESI
POP EDI
POP EBP
RET 0x4
MOV EAX,dword ptr [EDX + 0x8]
CMP EAX,dword ptr [EDX + 0xc]
JNC 0x00254da0
MOV EAX,dword ptr [EAX]
CMP EAX,-0x1
SETZ CL
JMP 0x00254d21
MOV EAX,dword ptr [ESP + 0x8c]
OR dword ptr [EAX],0x4
CMP EDI,-0x1
SETZ BL
TEST EBP,EBP
SETNZ DL
AND DL,BL
JZ 0x00254d05
MOV EAX,dword ptr [EBP + 0x8]
CMP EAX,dword ptr [EBP + 0xc]
JNC 0x00254db8
MOV EAX,dword ptr [EAX]
CMP EAX,-0x1
MOV EBX,0x0
MOV EAX,0x0
CMOVZ EBX,EDX
CMOVZ EBP,EAX
JMP 0x00254d05
SUB ESP,0xc
MOV EAX,dword ptr [EDX]
PUSH dword ptr [ESP + 0x8c]
CALL dword ptr [EAX + 0x24]
ADD ESP,0x10
JMP 0x00254d52
MOV byte ptr [ESP + 0x7],DL
SUB ESP,0xc
MOV EAX,dword ptr [EBP]
PUSH EBP
CALL dword ptr [EAX + 0x24]
MOVZX EDX,byte ptr [ESP + 0x17]
ADD ESP,0x10
JMP 0x00254d83
(translation_unit "/* WARNING: Function: __i686.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n/* WARNING: Type propagation algorithm not settling */\n\nvoid FUN_00254c00(undefined4 param_1,undefined4 param_2,undefined4 param_3,int *param_4,int param_5,\n                 undefined4 param_6,uint *param_7,int param_8)\n\n{\n  int iVar1;\n  bool bVar2;\n  bool bVar3;\n  undefined4 *unaff_retaddr;\n  int *local_68;\n  int local_64;\n  undefined4 local_60;\n  int local_5c [3];\n  undefined4 local_50;\n  undefined4 local_4c;\n  undefined4 local_48;\n  undefined4 local_44;\n  undefined4 local_40;\n  undefined4 local_3c;\n  undefined4 local_38;\n  undefined4 local_34;\n  undefined4 local_30;\n  undefined4 local_2c;\n  undefined4 local_28;\n  undefined4 local_24;\n  undefined4 local_20;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x254c09;\n  iVar1 = FUN_0023db00(param_7 + 0x1b);\n  local_5c[1] = 0;\n  iVar1 = *(int *)(iVar1 + 8);\n  local_5c[2] = *(undefined4 *)(iVar1 + 0x48);\n  local_50 = *(undefined4 *)(iVar1 + 0x4c);\n  local_4c = *(undefined4 *)(iVar1 + 0x50);\n  local_48 = *(undefined4 *)(iVar1 + 0x54);\n  local_44 = *(undefined4 *)(iVar1 + 0x58);\n  local_40 = *(undefined4 *)(iVar1 + 0x5c);\n  local_3c = *(undefined4 *)(iVar1 + 0x60);\n  local_38 = *(undefined4 *)(iVar1 + 0x2c);\n  local_34 = *(undefined4 *)(iVar1 + 0x30);\n  local_30 = *(undefined4 *)(iVar1 + 0x34);\n  local_2c = *(undefined4 *)(iVar1 + 0x38);\n  local_28 = *(undefined4 *)(iVar1 + 0x3c);\n  local_24 = *(undefined4 *)(iVar1 + 0x40);\n  local_20 = *(undefined4 *)(iVar1 + 0x44);\n  FUN_00254700(&local_64,param_2,param_3,param_4,param_5,param_6,local_5c,local_5c + 2,7,param_7,\n               local_5c + 1);\n  if (local_5c[0] == 0) {\n    bVar3 = local_64 == -1;\n    *(undefined4 *)(param_8 + 0x18) = local_60;\n    bVar2 = local_68 != (int *)0x0 && bVar3;\n    if (local_68 == (int *)0x0 || !bVar3) goto LAB_00254d05;\n  }\n  else {\n    *param_7 = *param_7 | 4;\n    bVar3 = local_64 == -1;\n    bVar2 = local_68 != (int *)0x0 && bVar3;\n    if (local_68 == (int *)0x0 || !bVar3) goto LAB_00254d05;\n  }\n  if ((int *)local_68[2] < (int *)local_68[3]) {\n    iVar1 = *(int *)local_68[2];\n  }\n  else {\n    iVar1 = (**(code **)(*local_68 + 0x24))(local_68);\n  }\n  bVar3 = false;\n  if (iVar1 == -1) {\n    local_68 = (int *)0x0;\n    bVar3 = bVar2;\n  }\nLAB_00254d05:\n  bVar2 = param_5 == -1;\n  if ((param_4 != (int *)0x0) && (bVar2)) {\n    if ((int *)param_4[2] < (int *)param_4[3]) {\n      iVar1 = *(int *)param_4[2];\n    }\n    else {\n      iVar1 = (**(code **)(*param_4 + 0x24))(param_4);\n    }\n    bVar2 = iVar1 == -1;\n  }\n  if (bVar3 == bVar2) {\n    *param_7 = *param_7 | 2;\n  }\n  *unaff_retaddr = local_68;\n  unaff_retaddr[1] = local_64;\n  return;\n}\n\n" comment comment (function_definition "void FUN_00254c00(undefined4 param_1,undefined4 param_2,undefined4 param_3,int *param_4,int param_5,\n                 undefined4 param_6,uint *param_7,int param_8)\n\n{\n  int iVar1;\n  bool bVar2;\n  bool bVar3;\n  undefined4 *unaff_retaddr;\n  int *local_68;\n  int local_64;\n  undefined4 local_60;\n  int local_5c [3];\n  undefined4 local_50;\n  undefined4 local_4c;\n  undefined4 local_48;\n  undefined4 local_44;\n  undefined4 local_40;\n  undefined4 local_3c;\n  undefined4 local_38;\n  undefined4 local_34;\n  undefined4 local_30;\n  undefined4 local_2c;\n  undefined4 local_28;\n  undefined4 local_24;\n  undefined4 local_20;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x254c09;\n  iVar1 = FUN_0023db00(param_7 + 0x1b);\n  local_5c[1] = 0;\n  iVar1 = *(int *)(iVar1 + 8);\n  local_5c[2] = *(undefined4 *)(iVar1 + 0x48);\n  local_50 = *(undefined4 *)(iVar1 + 0x4c);\n  local_4c = *(undefined4 *)(iVar1 + 0x50);\n  local_48 = *(undefined4 *)(iVar1 + 0x54);\n  local_44 = *(undefined4 *)(iVar1 + 0x58);\n  local_40 = *(undefined4 *)(iVar1 + 0x5c);\n  local_3c = *(undefined4 *)(iVar1 + 0x60);\n  local_38 = *(undefined4 *)(iVar1 + 0x2c);\n  local_34 = *(undefined4 *)(iVar1 + 0x30);\n  local_30 = *(undefined4 *)(iVar1 + 0x34);\n  local_2c = *(undefined4 *)(iVar1 + 0x38);\n  local_28 = *(undefined4 *)(iVar1 + 0x3c);\n  local_24 = *(undefined4 *)(iVar1 + 0x40);\n  local_20 = *(undefined4 *)(iVar1 + 0x44);\n  FUN_00254700(&local_64,param_2,param_3,param_4,param_5,param_6,local_5c,local_5c + 2,7,param_7,\n               local_5c + 1);\n  if (local_5c[0] == 0) {\n    bVar3 = local_64 == -1;\n    *(undefined4 *)(param_8 + 0x18) = local_60;\n    bVar2 = local_68 != (int *)0x0 && bVar3;\n    if (local_68 == (int *)0x0 || !bVar3) goto LAB_00254d05;\n  }\n  else {\n    *param_7 = *param_7 | 4;\n    bVar3 = local_64 == -1;\n    bVar2 = local_68 != (int *)0x0 && bVar3;\n    if (local_68 == (int *)0x0 || !bVar3) goto LAB_00254d05;\n  }\n  if ((int *)local_68[2] < (int *)local_68[3]) {\n    iVar1 = *(int *)local_68[2];\n  }\n  else {\n    iVar1 = (**(code **)(*local_68 + 0x24))(local_68);\n  }\n  bVar3 = false;\n  if (iVar1 == -1) {\n    local_68 = (int *)0x0;\n    bVar3 = bVar2;\n  }\nLAB_00254d05:\n  bVar2 = param_5 == -1;\n  if ((param_4 != (int *)0x0) && (bVar2)) {\n    if ((int *)param_4[2] < (int *)param_4[3]) {\n      iVar1 = *(int *)param_4[2];\n    }\n    else {\n      iVar1 = (**(code **)(*param_4 + 0x24))(param_4);\n    }\n    bVar2 = iVar1 == -1;\n  }\n  if (bVar3 == bVar2) {\n    *param_7 = *param_7 | 2;\n  }\n  *unaff_retaddr = local_68;\n  unaff_retaddr[1] = local_64;\n  return;\n}" primitive_type (function_declarator "FUN_00254c00(undefined4 param_1,undefined4 param_2,undefined4 param_3,int *param_4,int param_5,\n                 undefined4 param_6,uint *param_7,int param_8)" identifier (parameter_list "(undefined4 param_1,undefined4 param_2,undefined4 param_3,int *param_4,int param_5,\n                 undefined4 param_6,uint *param_7,int param_8)" ( (parameter_declaration "undefined4 param_1" type_identifier identifier) , (parameter_declaration "undefined4 param_2" type_identifier identifier) , (parameter_declaration "undefined4 param_3" type_identifier identifier) , (parameter_declaration "int *param_4" primitive_type (pointer_declarator "*param_4" * identifier)) , (parameter_declaration "int param_5" primitive_type identifier) , (parameter_declaration "undefined4 param_6" type_identifier identifier) , (parameter_declaration "uint *param_7" type_identifier (pointer_declarator "*param_7" * identifier)) , (parameter_declaration "int param_8" primitive_type identifier) ))) (compound_statement "{\n  int iVar1;\n  bool bVar2;\n  bool bVar3;\n  undefined4 *unaff_retaddr;\n  int *local_68;\n  int local_64;\n  undefined4 local_60;\n  int local_5c [3];\n  undefined4 local_50;\n  undefined4 local_4c;\n  undefined4 local_48;\n  undefined4 local_44;\n  undefined4 local_40;\n  undefined4 local_3c;\n  undefined4 local_38;\n  undefined4 local_34;\n  undefined4 local_30;\n  undefined4 local_2c;\n  undefined4 local_28;\n  undefined4 local_24;\n  undefined4 local_20;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x254c09;\n  iVar1 = FUN_0023db00(param_7 + 0x1b);\n  local_5c[1] = 0;\n  iVar1 = *(int *)(iVar1 + 8);\n  local_5c[2] = *(undefined4 *)(iVar1 + 0x48);\n  local_50 = *(undefined4 *)(iVar1 + 0x4c);\n  local_4c = *(undefined4 *)(iVar1 + 0x50);\n  local_48 = *(undefined4 *)(iVar1 + 0x54);\n  local_44 = *(undefined4 *)(iVar1 + 0x58);\n  local_40 = *(undefined4 *)(iVar1 + 0x5c);\n  local_3c = *(undefined4 *)(iVar1 + 0x60);\n  local_38 = *(undefined4 *)(iVar1 + 0x2c);\n  local_34 = *(undefined4 *)(iVar1 + 0x30);\n  local_30 = *(undefined4 *)(iVar1 + 0x34);\n  local_2c = *(undefined4 *)(iVar1 + 0x38);\n  local_28 = *(undefined4 *)(iVar1 + 0x3c);\n  local_24 = *(undefined4 *)(iVar1 + 0x40);\n  local_20 = *(undefined4 *)(iVar1 + 0x44);\n  FUN_00254700(&local_64,param_2,param_3,param_4,param_5,param_6,local_5c,local_5c + 2,7,param_7,\n               local_5c + 1);\n  if (local_5c[0] == 0) {\n    bVar3 = local_64 == -1;\n    *(undefined4 *)(param_8 + 0x18) = local_60;\n    bVar2 = local_68 != (int *)0x0 && bVar3;\n    if (local_68 == (int *)0x0 || !bVar3) goto LAB_00254d05;\n  }\n  else {\n    *param_7 = *param_7 | 4;\n    bVar3 = local_64 == -1;\n    bVar2 = local_68 != (int *)0x0 && bVar3;\n    if (local_68 == (int *)0x0 || !bVar3) goto LAB_00254d05;\n  }\n  if ((int *)local_68[2] < (int *)local_68[3]) {\n    iVar1 = *(int *)local_68[2];\n  }\n  else {\n    iVar1 = (**(code **)(*local_68 + 0x24))(local_68);\n  }\n  bVar3 = false;\n  if (iVar1 == -1) {\n    local_68 = (int *)0x0;\n    bVar3 = bVar2;\n  }\nLAB_00254d05:\n  bVar2 = param_5 == -1;\n  if ((param_4 != (int *)0x0) && (bVar2)) {\n    if ((int *)param_4[2] < (int *)param_4[3]) {\n      iVar1 = *(int *)param_4[2];\n    }\n    else {\n      iVar1 = (**(code **)(*param_4 + 0x24))(param_4);\n    }\n    bVar2 = iVar1 == -1;\n  }\n  if (bVar3 == bVar2) {\n    *param_7 = *param_7 | 2;\n  }\n  *unaff_retaddr = local_68;\n  unaff_retaddr[1] = local_64;\n  return;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "bool bVar2;" primitive_type identifier ;) (declaration "bool bVar3;" primitive_type identifier ;) (declaration "undefined4 *unaff_retaddr;" type_identifier (pointer_declarator "*unaff_retaddr" * identifier) ;) (declaration "int *local_68;" primitive_type (pointer_declarator "*local_68" * identifier) ;) (declaration "int local_64;" primitive_type identifier ;) (declaration "undefined4 local_60;" type_identifier identifier ;) (declaration "int local_5c [3];" primitive_type (array_declarator "local_5c [3]" identifier [ number_literal ]) ;) (declaration "undefined4 local_50;" type_identifier identifier ;) (declaration "undefined4 local_4c;" type_identifier identifier ;) (declaration "undefined4 local_48;" type_identifier identifier ;) (declaration "undefined4 local_44;" type_identifier identifier ;) (declaration "undefined4 local_40;" type_identifier identifier ;) (declaration "undefined4 local_3c;" type_identifier identifier ;) (declaration "undefined4 local_38;" type_identifier identifier ;) (declaration "undefined4 local_34;" type_identifier identifier ;) (declaration "undefined4 local_30;" type_identifier identifier ;) (declaration "undefined4 local_2c;" type_identifier identifier ;) (declaration "undefined4 local_28;" type_identifier identifier ;) (declaration "undefined4 local_24;" type_identifier identifier ;) (declaration "undefined4 local_20;" type_identifier identifier ;) (declaration "undefined4 uStack_14;" type_identifier identifier ;) (expression_statement "uStack_14 = 0x254c09;" (assignment_expression "uStack_14 = 0x254c09" identifier = number_literal) ;) (expression_statement "iVar1 = FUN_0023db00(param_7 + 0x1b);" (assignment_expression "iVar1 = FUN_0023db00(param_7 + 0x1b)" identifier = (call_expression "FUN_0023db00(param_7 + 0x1b)" identifier (argument_list "(param_7 + 0x1b)" ( (binary_expression "param_7 + 0x1b" identifier + number_literal) )))) ;) (expression_statement "local_5c[1] = 0;" (assignment_expression "local_5c[1] = 0" (subscript_expression "local_5c[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "iVar1 = *(int *)(iVar1 + 8);" (assignment_expression "iVar1 = *(int *)(iVar1 + 8)" identifier = (pointer_expression "*(int *)(iVar1 + 8)" * (cast_expression "(int *)(iVar1 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 8)" ( (binary_expression "iVar1 + 8" identifier + number_literal) ))))) ;) (expression_statement "local_5c[2] = *(undefined4 *)(iVar1 + 0x48);" (assignment_expression "local_5c[2] = *(undefined4 *)(iVar1 + 0x48)" (subscript_expression "local_5c[2]" identifier [ number_literal ]) = (pointer_expression "*(undefined4 *)(iVar1 + 0x48)" * (cast_expression "(undefined4 *)(iVar1 + 0x48)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x48)" ( (binary_expression "iVar1 + 0x48" identifier + number_literal) ))))) ;) (expression_statement "local_50 = *(undefined4 *)(iVar1 + 0x4c);" (assignment_expression "local_50 = *(undefined4 *)(iVar1 + 0x4c)" identifier = (pointer_expression "*(undefined4 *)(iVar1 + 0x4c)" * (cast_expression "(undefined4 *)(iVar1 + 0x4c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x4c)" ( (binary_expression "iVar1 + 0x4c" identifier + number_literal) ))))) ;) (expression_statement "local_4c = *(undefined4 *)(iVar1 + 0x50);" (assignment_expression "local_4c = *(undefined4 *)(iVar1 + 0x50)" identifier = (pointer_expression "*(undefined4 *)(iVar1 + 0x50)" * (cast_expression "(undefined4 *)(iVar1 + 0x50)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x50)" ( (binary_expression "iVar1 + 0x50" identifier + number_literal) ))))) ;) (expression_statement "local_48 = *(undefined4 *)(iVar1 + 0x54);" (assignment_expression "local_48 = *(undefined4 *)(iVar1 + 0x54)" identifier = (pointer_expression "*(undefined4 *)(iVar1 + 0x54)" * (cast_expression "(undefined4 *)(iVar1 + 0x54)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x54)" ( (binary_expression "iVar1 + 0x54" identifier + number_literal) ))))) ;) (expression_statement "local_44 = *(undefined4 *)(iVar1 + 0x58);" (assignment_expression "local_44 = *(undefined4 *)(iVar1 + 0x58)" identifier = (pointer_expression "*(undefined4 *)(iVar1 + 0x58)" * (cast_expression "(undefined4 *)(iVar1 + 0x58)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x58)" ( (binary_expression "iVar1 + 0x58" identifier + number_literal) ))))) ;) (expression_statement "local_40 = *(undefined4 *)(iVar1 + 0x5c);" (assignment_expression "local_40 = *(undefined4 *)(iVar1 + 0x5c)" identifier = (pointer_expression "*(undefined4 *)(iVar1 + 0x5c)" * (cast_expression "(undefined4 *)(iVar1 + 0x5c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x5c)" ( (binary_expression "iVar1 + 0x5c" identifier + number_literal) ))))) ;) (expression_statement "local_3c = *(undefined4 *)(iVar1 + 0x60);" (assignment_expression "local_3c = *(undefined4 *)(iVar1 + 0x60)" identifier = (pointer_expression "*(undefined4 *)(iVar1 + 0x60)" * (cast_expression "(undefined4 *)(iVar1 + 0x60)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x60)" ( (binary_expression "iVar1 + 0x60" identifier + number_literal) ))))) ;) (expression_statement "local_38 = *(undefined4 *)(iVar1 + 0x2c);" (assignment_expression "local_38 = *(undefined4 *)(iVar1 + 0x2c)" identifier = (pointer_expression "*(undefined4 *)(iVar1 + 0x2c)" * (cast_expression "(undefined4 *)(iVar1 + 0x2c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x2c)" ( (binary_expression "iVar1 + 0x2c" identifier + number_literal) ))))) ;) (expression_statement "local_34 = *(undefined4 *)(iVar1 + 0x30);" (assignment_expression "local_34 = *(undefined4 *)(iVar1 + 0x30)" identifier = (pointer_expression "*(undefined4 *)(iVar1 + 0x30)" * (cast_expression "(undefined4 *)(iVar1 + 0x30)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x30)" ( (binary_expression "iVar1 + 0x30" identifier + number_literal) ))))) ;) (expression_statement "local_30 = *(undefined4 *)(iVar1 + 0x34);" (assignment_expression "local_30 = *(undefined4 *)(iVar1 + 0x34)" identifier = (pointer_expression "*(undefined4 *)(iVar1 + 0x34)" * (cast_expression "(undefined4 *)(iVar1 + 0x34)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x34)" ( (binary_expression "iVar1 + 0x34" identifier + number_literal) ))))) ;) (expression_statement "local_2c = *(undefined4 *)(iVar1 + 0x38);" (assignment_expression "local_2c = *(undefined4 *)(iVar1 + 0x38)" identifier = (pointer_expression "*(undefined4 *)(iVar1 + 0x38)" * (cast_expression "(undefined4 *)(iVar1 + 0x38)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x38)" ( (binary_expression "iVar1 + 0x38" identifier + number_literal) ))))) ;) (expression_statement "local_28 = *(undefined4 *)(iVar1 + 0x3c);" (assignment_expression "local_28 = *(undefined4 *)(iVar1 + 0x3c)" identifier = (pointer_expression "*(undefined4 *)(iVar1 + 0x3c)" * (cast_expression "(undefined4 *)(iVar1 + 0x3c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x3c)" ( (binary_expression "iVar1 + 0x3c" identifier + number_literal) ))))) ;) (expression_statement "local_24 = *(undefined4 *)(iVar1 + 0x40);" (assignment_expression "local_24 = *(undefined4 *)(iVar1 + 0x40)" identifier = (pointer_expression "*(undefined4 *)(iVar1 + 0x40)" * (cast_expression "(undefined4 *)(iVar1 + 0x40)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x40)" ( (binary_expression "iVar1 + 0x40" identifier + number_literal) ))))) ;) (expression_statement "local_20 = *(undefined4 *)(iVar1 + 0x44);" (assignment_expression "local_20 = *(undefined4 *)(iVar1 + 0x44)" identifier = (pointer_expression "*(undefined4 *)(iVar1 + 0x44)" * (cast_expression "(undefined4 *)(iVar1 + 0x44)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x44)" ( (binary_expression "iVar1 + 0x44" identifier + number_literal) ))))) ;) (expression_statement "FUN_00254700(&local_64,param_2,param_3,param_4,param_5,param_6,local_5c,local_5c + 2,7,param_7,\n               local_5c + 1);" (call_expression "FUN_00254700(&local_64,param_2,param_3,param_4,param_5,param_6,local_5c,local_5c + 2,7,param_7,\n               local_5c + 1)" identifier (argument_list "(&local_64,param_2,param_3,param_4,param_5,param_6,local_5c,local_5c + 2,7,param_7,\n               local_5c + 1)" ( (pointer_expression "&local_64" & identifier) , identifier , identifier , identifier , identifier , identifier , identifier , (binary_expression "local_5c + 2" identifier + number_literal) , number_literal , identifier , (binary_expression "local_5c + 1" identifier + number_literal) ))) ;) (if_statement "if (local_5c[0] == 0) {\n    bVar3 = local_64 == -1;\n    *(undefined4 *)(param_8 + 0x18) = local_60;\n    bVar2 = local_68 != (int *)0x0 && bVar3;\n    if (local_68 == (int *)0x0 || !bVar3) goto LAB_00254d05;\n  }\n  else {\n    *param_7 = *param_7 | 4;\n    bVar3 = local_64 == -1;\n    bVar2 = local_68 != (int *)0x0 && bVar3;\n    if (local_68 == (int *)0x0 || !bVar3) goto LAB_00254d05;\n  }" if (parenthesized_expression "(local_5c[0] == 0)" ( (binary_expression "local_5c[0] == 0" (subscript_expression "local_5c[0]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n    bVar3 = local_64 == -1;\n    *(undefined4 *)(param_8 + 0x18) = local_60;\n    bVar2 = local_68 != (int *)0x0 && bVar3;\n    if (local_68 == (int *)0x0 || !bVar3) goto LAB_00254d05;\n  }" { (expression_statement "bVar3 = local_64 == -1;" (assignment_expression "bVar3 = local_64 == -1" identifier = (binary_expression "local_64 == -1" identifier == number_literal)) ;) (expression_statement "*(undefined4 *)(param_8 + 0x18) = local_60;" (assignment_expression "*(undefined4 *)(param_8 + 0x18) = local_60" (pointer_expression "*(undefined4 *)(param_8 + 0x18)" * (cast_expression "(undefined4 *)(param_8 + 0x18)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_8 + 0x18)" ( (binary_expression "param_8 + 0x18" identifier + number_literal) )))) = identifier) ;) (expression_statement "bVar2 = local_68 != (int *)0x0 && bVar3;" (assignment_expression "bVar2 = local_68 != (int *)0x0 && bVar3" identifier = (binary_expression "local_68 != (int *)0x0 && bVar3" (binary_expression "local_68 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) && identifier)) ;) (if_statement "if (local_68 == (int *)0x0 || !bVar3) goto LAB_00254d05;" if (parenthesized_expression "(local_68 == (int *)0x0 || !bVar3)" ( (binary_expression "local_68 == (int *)0x0 || !bVar3" (binary_expression "local_68 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) || (unary_expression "!bVar3" ! identifier)) )) (goto_statement "goto LAB_00254d05;" goto statement_identifier ;)) }) (else_clause "else {\n    *param_7 = *param_7 | 4;\n    bVar3 = local_64 == -1;\n    bVar2 = local_68 != (int *)0x0 && bVar3;\n    if (local_68 == (int *)0x0 || !bVar3) goto LAB_00254d05;\n  }" else (compound_statement "{\n    *param_7 = *param_7 | 4;\n    bVar3 = local_64 == -1;\n    bVar2 = local_68 != (int *)0x0 && bVar3;\n    if (local_68 == (int *)0x0 || !bVar3) goto LAB_00254d05;\n  }" { (expression_statement "*param_7 = *param_7 | 4;" (assignment_expression "*param_7 = *param_7 | 4" (pointer_expression "*param_7" * identifier) = (binary_expression "*param_7 | 4" (pointer_expression "*param_7" * identifier) | number_literal)) ;) (expression_statement "bVar3 = local_64 == -1;" (assignment_expression "bVar3 = local_64 == -1" identifier = (binary_expression "local_64 == -1" identifier == number_literal)) ;) (expression_statement "bVar2 = local_68 != (int *)0x0 && bVar3;" (assignment_expression "bVar2 = local_68 != (int *)0x0 && bVar3" identifier = (binary_expression "local_68 != (int *)0x0 && bVar3" (binary_expression "local_68 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) && identifier)) ;) (if_statement "if (local_68 == (int *)0x0 || !bVar3) goto LAB_00254d05;" if (parenthesized_expression "(local_68 == (int *)0x0 || !bVar3)" ( (binary_expression "local_68 == (int *)0x0 || !bVar3" (binary_expression "local_68 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) || (unary_expression "!bVar3" ! identifier)) )) (goto_statement "goto LAB_00254d05;" goto statement_identifier ;)) }))) (if_statement "if ((int *)local_68[2] < (int *)local_68[3]) {\n    iVar1 = *(int *)local_68[2];\n  }\n  else {\n    iVar1 = (**(code **)(*local_68 + 0x24))(local_68);\n  }" if (parenthesized_expression "((int *)local_68[2] < (int *)local_68[3])" ( (binary_expression "(int *)local_68[2] < (int *)local_68[3]" (cast_expression "(int *)local_68[2]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "local_68[2]" identifier [ number_literal ])) < (cast_expression "(int *)local_68[3]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "local_68[3]" identifier [ number_literal ]))) )) (compound_statement "{\n    iVar1 = *(int *)local_68[2];\n  }" { (expression_statement "iVar1 = *(int *)local_68[2];" (assignment_expression "iVar1 = *(int *)local_68[2]" identifier = (pointer_expression "*(int *)local_68[2]" * (cast_expression "(int *)local_68[2]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "local_68[2]" identifier [ number_literal ])))) ;) }) (else_clause "else {\n    iVar1 = (**(code **)(*local_68 + 0x24))(local_68);\n  }" else (compound_statement "{\n    iVar1 = (**(code **)(*local_68 + 0x24))(local_68);\n  }" { (expression_statement "iVar1 = (**(code **)(*local_68 + 0x24))(local_68);" (assignment_expression "iVar1 = (**(code **)(*local_68 + 0x24))(local_68)" identifier = (call_expression "(**(code **)(*local_68 + 0x24))(local_68)" (parenthesized_expression "(**(code **)(*local_68 + 0x24))" ( (pointer_expression "**(code **)(*local_68 + 0x24)" * (pointer_expression "*(code **)(*local_68 + 0x24)" * (cast_expression "(code **)(*local_68 + 0x24)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*local_68 + 0x24)" ( (binary_expression "*local_68 + 0x24" (pointer_expression "*local_68" * identifier) + number_literal) ))))) )) (argument_list "(local_68)" ( identifier )))) ;) }))) (expression_statement "bVar3 = false;" (assignment_expression "bVar3 = false" identifier = false) ;) (if_statement "if (iVar1 == -1) {\n    local_68 = (int *)0x0;\n    bVar3 = bVar2;\n  }" if (parenthesized_expression "(iVar1 == -1)" ( (binary_expression "iVar1 == -1" identifier == number_literal) )) (compound_statement "{\n    local_68 = (int *)0x0;\n    bVar3 = bVar2;\n  }" { (expression_statement "local_68 = (int *)0x0;" (assignment_expression "local_68 = (int *)0x0" identifier = (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "bVar3 = bVar2;" (assignment_expression "bVar3 = bVar2" identifier = identifier) ;) })) (labeled_statement "LAB_00254d05:\n  bVar2 = param_5 == -1;" statement_identifier : (expression_statement "bVar2 = param_5 == -1;" (assignment_expression "bVar2 = param_5 == -1" identifier = (binary_expression "param_5 == -1" identifier == number_literal)) ;)) (if_statement "if ((param_4 != (int *)0x0) && (bVar2)) {\n    if ((int *)param_4[2] < (int *)param_4[3]) {\n      iVar1 = *(int *)param_4[2];\n    }\n    else {\n      iVar1 = (**(code **)(*param_4 + 0x24))(param_4);\n    }\n    bVar2 = iVar1 == -1;\n  }" if (parenthesized_expression "((param_4 != (int *)0x0) && (bVar2))" ( (binary_expression "(param_4 != (int *)0x0) && (bVar2)" (parenthesized_expression "(param_4 != (int *)0x0)" ( (binary_expression "param_4 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "(bVar2)" ( identifier ))) )) (compound_statement "{\n    if ((int *)param_4[2] < (int *)param_4[3]) {\n      iVar1 = *(int *)param_4[2];\n    }\n    else {\n      iVar1 = (**(code **)(*param_4 + 0x24))(param_4);\n    }\n    bVar2 = iVar1 == -1;\n  }" { (if_statement "if ((int *)param_4[2] < (int *)param_4[3]) {\n      iVar1 = *(int *)param_4[2];\n    }\n    else {\n      iVar1 = (**(code **)(*param_4 + 0x24))(param_4);\n    }" if (parenthesized_expression "((int *)param_4[2] < (int *)param_4[3])" ( (binary_expression "(int *)param_4[2] < (int *)param_4[3]" (cast_expression "(int *)param_4[2]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_4[2]" identifier [ number_literal ])) < (cast_expression "(int *)param_4[3]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_4[3]" identifier [ number_literal ]))) )) (compound_statement "{\n      iVar1 = *(int *)param_4[2];\n    }" { (expression_statement "iVar1 = *(int *)param_4[2];" (assignment_expression "iVar1 = *(int *)param_4[2]" identifier = (pointer_expression "*(int *)param_4[2]" * (cast_expression "(int *)param_4[2]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_4[2]" identifier [ number_literal ])))) ;) }) (else_clause "else {\n      iVar1 = (**(code **)(*param_4 + 0x24))(param_4);\n    }" else (compound_statement "{\n      iVar1 = (**(code **)(*param_4 + 0x24))(param_4);\n    }" { (expression_statement "iVar1 = (**(code **)(*param_4 + 0x24))(param_4);" (assignment_expression "iVar1 = (**(code **)(*param_4 + 0x24))(param_4)" identifier = (call_expression "(**(code **)(*param_4 + 0x24))(param_4)" (parenthesized_expression "(**(code **)(*param_4 + 0x24))" ( (pointer_expression "**(code **)(*param_4 + 0x24)" * (pointer_expression "*(code **)(*param_4 + 0x24)" * (cast_expression "(code **)(*param_4 + 0x24)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_4 + 0x24)" ( (binary_expression "*param_4 + 0x24" (pointer_expression "*param_4" * identifier) + number_literal) ))))) )) (argument_list "(param_4)" ( identifier )))) ;) }))) (expression_statement "bVar2 = iVar1 == -1;" (assignment_expression "bVar2 = iVar1 == -1" identifier = (binary_expression "iVar1 == -1" identifier == number_literal)) ;) })) (if_statement "if (bVar3 == bVar2) {\n    *param_7 = *param_7 | 2;\n  }" if (parenthesized_expression "(bVar3 == bVar2)" ( (binary_expression "bVar3 == bVar2" identifier == identifier) )) (compound_statement "{\n    *param_7 = *param_7 | 2;\n  }" { (expression_statement "*param_7 = *param_7 | 2;" (assignment_expression "*param_7 = *param_7 | 2" (pointer_expression "*param_7" * identifier) = (binary_expression "*param_7 | 2" (pointer_expression "*param_7" * identifier) | number_literal)) ;) })) (expression_statement "*unaff_retaddr = local_68;" (assignment_expression "*unaff_retaddr = local_68" (pointer_expression "*unaff_retaddr" * identifier) = identifier) ;) (expression_statement "unaff_retaddr[1] = local_64;" (assignment_expression "unaff_retaddr[1] = local_64" (subscript_expression "unaff_retaddr[1]" identifier [ number_literal ]) = identifier) ;) (return_statement "return;" return ;) })))
(translation_unit "/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n/* std::time_get<wchar_t, std::istreambuf_iterator<wchar_t, std::char_traits<wchar_t> >\n   >::do_get_weekday(std::istreambuf_iterator<wchar_t, std::char_traits<wchar_t> >,\n   std::istreambuf_iterator<wchar_t, std::char_traits<wchar_t> >, std::ios_base&,\n   std::_Ios_Iostate&, tm*) const */\n\nvoid std::time_get<wchar_t,std::istreambuf_iterator<wchar_t,std::char_traits<wchar_t>>>::\n     do_get_weekday(undefined4 *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,\n                   int *param_5,int param_6,int param_7,uint *param_8,int param_9)\n\n{\n  __timepunct *p_Var1;\n  int iVar2;\n  bool bVar3;\n  int *piVar4;\n  bool bVar5;\n  int *local_64;\n  int local_60;\n  undefined4 local_5c;\n  int local_58;\n  undefined4 local_54;\n  undefined4 local_50;\n  undefined4 local_4c;\n  undefined4 local_48;\n  undefined4 local_44;\n  undefined4 local_40;\n  undefined4 local_3c;\n  undefined4 local_38;\n  undefined4 local_34;\n  undefined4 local_30;\n  undefined4 local_2c;\n  undefined4 local_28;\n  undefined4 local_24;\n  undefined4 local_20;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x254c09;\n  p_Var1 = use_facet<std::__timepunct<wchar_t>>((locale *)(param_7 + 0x6c));\n  local_58 = 0;\n  iVar2 = *(int *)(p_Var1 + 8);\n  local_54 = *(undefined4 *)(iVar2 + 0x48);\n  local_50 = *(undefined4 *)(iVar2 + 0x4c);\n  local_4c = *(undefined4 *)(iVar2 + 0x50);\n  local_48 = *(undefined4 *)(iVar2 + 0x54);\n  local_44 = *(undefined4 *)(iVar2 + 0x58);\n  local_40 = *(undefined4 *)(iVar2 + 0x5c);\n  local_3c = *(undefined4 *)(iVar2 + 0x60);\n  local_38 = *(undefined4 *)(iVar2 + 0x2c);\n  local_34 = *(undefined4 *)(iVar2 + 0x30);\n  local_30 = *(undefined4 *)(iVar2 + 0x34);\n  local_2c = *(undefined4 *)(iVar2 + 0x38);\n  local_28 = *(undefined4 *)(iVar2 + 0x3c);\n  local_24 = *(undefined4 *)(iVar2 + 0x40);\n  local_20 = *(undefined4 *)(iVar2 + 0x44);\n  _M_extract_wday_or_month\n            (&local_64,param_2,param_3,param_4,param_5,param_6,&local_5c,&local_54,7,param_7,\n             &local_58);\n  piVar4 = local_64;\n  if (local_58 == 0) {\n    bVar5 = local_60 == -1;\n    *(undefined4 *)(param_9 + 0x18) = local_5c;\n    bVar3 = local_64 != (int *)0x0 && bVar5;\n    if (local_64 == (int *)0x0 || !bVar5) goto LAB_00254d05;\n  }\n  else {\n    *param_8 = *param_8 | 4;\n    bVar5 = local_60 == -1;\n    bVar3 = local_64 != (int *)0x0 && bVar5;\n    if (local_64 == (int *)0x0 || !bVar5) goto LAB_00254d05;\n  }\n  if ((int *)local_64[2] < (int *)local_64[3]) {\n    iVar2 = *(int *)local_64[2];\n  }\n  else {\n    iVar2 = (**(code **)(*local_64 + 0x24))(local_64);\n  }\n  bVar5 = false;\n  if (iVar2 == -1) {\n    piVar4 = (int *)0x0;\n    bVar5 = bVar3;\n  }\nLAB_00254d05:\n  bVar3 = param_6 == -1;\n  if ((param_5 != (int *)0x0) && (bVar3)) {\n    if ((int *)param_5[2] < (int *)param_5[3]) {\n      iVar2 = *(int *)param_5[2];\n    }\n    else {\n      iVar2 = (**(code **)(*param_5 + 0x24))(param_5);\n    }\n    bVar3 = iVar2 == -1;\n  }\n  if (bVar5 == bVar3) {\n    *param_8 = *param_8 | 2;\n  }\n  *param_1 = piVar4;\n  param_1[1] = local_60;\n  return;\n}\n\n" comment comment (declaration "void std::time_get<wchar_t,std::istreambuf_iterator<wchar_t,std::char_traits<wchar_t>>>::\n     do_get_weekday(undefined4 *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,\n                   int *param_5,int param_6,int param_7,uint *param_8,int param_9)\n\n{\n  __timepunct *p_Var1;" primitive_type (ERROR "std::time_get<" identifier : : identifier <) identifier , (ERROR "std::istreambuf_iterator<" identifier : : identifier <) identifier , (ERROR "std::char_traits<wchar_t>>>::\n     do_get_weekday(undefined4 *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,\n                   int *param_5,int param_6,int param_7,uint *param_8,int param_9)\n\n{\n  __timepunct" identifier : : identifier < identifier >> > : : (function_declarator "do_get_weekday(undefined4 *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,\n                   int *param_5,int param_6,int param_7,uint *param_8,int param_9)" identifier (parameter_list "(undefined4 *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,\n                   int *param_5,int param_6,int param_7,uint *param_8,int param_9)" ( (parameter_declaration "undefined4 *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "undefined4 param_2" type_identifier identifier) , (parameter_declaration "undefined4 param_3" type_identifier identifier) , (parameter_declaration "undefined4 param_4" type_identifier identifier) , (parameter_declaration "int *param_5" primitive_type (pointer_declarator "*param_5" * identifier)) , (parameter_declaration "int param_6" primitive_type identifier) , (parameter_declaration "int param_7" primitive_type identifier) , (parameter_declaration "uint *param_8" type_identifier (pointer_declarator "*param_8" * identifier)) , (parameter_declaration "int param_9" primitive_type identifier) ))) { identifier) (pointer_declarator "*p_Var1" * identifier) ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "bool bVar3;" primitive_type identifier ;) (declaration "int *piVar4;" primitive_type (pointer_declarator "*piVar4" * identifier) ;) (declaration "bool bVar5;" primitive_type identifier ;) (declaration "int *local_64;" primitive_type (pointer_declarator "*local_64" * identifier) ;) (declaration "int local_60;" primitive_type identifier ;) (declaration "undefined4 local_5c;" type_identifier identifier ;) (declaration "int local_58;" primitive_type identifier ;) (declaration "undefined4 local_54;" type_identifier identifier ;) (declaration "undefined4 local_50;" type_identifier identifier ;) (declaration "undefined4 local_4c;" type_identifier identifier ;) (declaration "undefined4 local_48;" type_identifier identifier ;) (declaration "undefined4 local_44;" type_identifier identifier ;) (declaration "undefined4 local_40;" type_identifier identifier ;) (declaration "undefined4 local_3c;" type_identifier identifier ;) (declaration "undefined4 local_38;" type_identifier identifier ;) (declaration "undefined4 local_34;" type_identifier identifier ;) (declaration "undefined4 local_30;" type_identifier identifier ;) (declaration "undefined4 local_2c;" type_identifier identifier ;) (declaration "undefined4 local_28;" type_identifier identifier ;) (declaration "undefined4 local_24;" type_identifier identifier ;) (declaration "undefined4 local_20;" type_identifier identifier ;) (declaration "undefined4 uStack_14;" type_identifier identifier ;) (expression_statement "uStack_14 = 0x254c09;" (assignment_expression "uStack_14 = 0x254c09" identifier = number_literal) ;) (expression_statement "p_Var1 = use_facet<std::__timepunct<wchar_t>>((locale *)(param_7 + 0x6c));" (update_expression "p_Var1 = use_facet<std::__timepunct<wchar_t>>((locale *)(param_7 + 0x6c))" (binary_expression "p_Var1 = use_facet<std::__timepunct<wchar_t>>((locale *)(param_7 + 0x6c))" (assignment_expression "p_Var1 = use_facet<std" identifier = (binary_expression "use_facet<std" identifier < identifier)) (ERROR "::__timepunct" : : identifier) < (binary_expression "wchar_t>>((locale *)(param_7 + 0x6c))" identifier >> (parenthesized_expression "((locale *)(param_7 + 0x6c))" ( (cast_expression "(locale *)(param_7 + 0x6c)" ( (type_descriptor "locale *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_7 + 0x6c)" ( (binary_expression "param_7 + 0x6c" identifier + number_literal) ))) )))) --) ;) (expression_statement "local_58 = 0;" (assignment_expression "local_58 = 0" identifier = number_literal) ;) (expression_statement "iVar2 = *(int *)(p_Var1 + 8);" (assignment_expression "iVar2 = *(int *)(p_Var1 + 8)" identifier = (pointer_expression "*(int *)(p_Var1 + 8)" * (cast_expression "(int *)(p_Var1 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(p_Var1 + 8)" ( (binary_expression "p_Var1 + 8" identifier + number_literal) ))))) ;) (expression_statement "local_54 = *(undefined4 *)(iVar2 + 0x48);" (assignment_expression "local_54 = *(undefined4 *)(iVar2 + 0x48)" identifier = (pointer_expression "*(undefined4 *)(iVar2 + 0x48)" * (cast_expression "(undefined4 *)(iVar2 + 0x48)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x48)" ( (binary_expression "iVar2 + 0x48" identifier + number_literal) ))))) ;) (expression_statement "local_50 = *(undefined4 *)(iVar2 + 0x4c);" (assignment_expression "local_50 = *(undefined4 *)(iVar2 + 0x4c)" identifier = (pointer_expression "*(undefined4 *)(iVar2 + 0x4c)" * (cast_expression "(undefined4 *)(iVar2 + 0x4c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x4c)" ( (binary_expression "iVar2 + 0x4c" identifier + number_literal) ))))) ;) (expression_statement "local_4c = *(undefined4 *)(iVar2 + 0x50);" (assignment_expression "local_4c = *(undefined4 *)(iVar2 + 0x50)" identifier = (pointer_expression "*(undefined4 *)(iVar2 + 0x50)" * (cast_expression "(undefined4 *)(iVar2 + 0x50)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x50)" ( (binary_expression "iVar2 + 0x50" identifier + number_literal) ))))) ;) (expression_statement "local_48 = *(undefined4 *)(iVar2 + 0x54);" (assignment_expression "local_48 = *(undefined4 *)(iVar2 + 0x54)" identifier = (pointer_expression "*(undefined4 *)(iVar2 + 0x54)" * (cast_expression "(undefined4 *)(iVar2 + 0x54)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x54)" ( (binary_expression "iVar2 + 0x54" identifier + number_literal) ))))) ;) (expression_statement "local_44 = *(undefined4 *)(iVar2 + 0x58);" (assignment_expression "local_44 = *(undefined4 *)(iVar2 + 0x58)" identifier = (pointer_expression "*(undefined4 *)(iVar2 + 0x58)" * (cast_expression "(undefined4 *)(iVar2 + 0x58)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x58)" ( (binary_expression "iVar2 + 0x58" identifier + number_literal) ))))) ;) (expression_statement "local_40 = *(undefined4 *)(iVar2 + 0x5c);" (assignment_expression "local_40 = *(undefined4 *)(iVar2 + 0x5c)" identifier = (pointer_expression "*(undefined4 *)(iVar2 + 0x5c)" * (cast_expression "(undefined4 *)(iVar2 + 0x5c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x5c)" ( (binary_expression "iVar2 + 0x5c" identifier + number_literal) ))))) ;) (expression_statement "local_3c = *(undefined4 *)(iVar2 + 0x60);" (assignment_expression "local_3c = *(undefined4 *)(iVar2 + 0x60)" identifier = (pointer_expression "*(undefined4 *)(iVar2 + 0x60)" * (cast_expression "(undefined4 *)(iVar2 + 0x60)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x60)" ( (binary_expression "iVar2 + 0x60" identifier + number_literal) ))))) ;) (expression_statement "local_38 = *(undefined4 *)(iVar2 + 0x2c);" (assignment_expression "local_38 = *(undefined4 *)(iVar2 + 0x2c)" identifier = (pointer_expression "*(undefined4 *)(iVar2 + 0x2c)" * (cast_expression "(undefined4 *)(iVar2 + 0x2c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x2c)" ( (binary_expression "iVar2 + 0x2c" identifier + number_literal) ))))) ;) (expression_statement "local_34 = *(undefined4 *)(iVar2 + 0x30);" (assignment_expression "local_34 = *(undefined4 *)(iVar2 + 0x30)" identifier = (pointer_expression "*(undefined4 *)(iVar2 + 0x30)" * (cast_expression "(undefined4 *)(iVar2 + 0x30)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x30)" ( (binary_expression "iVar2 + 0x30" identifier + number_literal) ))))) ;) (expression_statement "local_30 = *(undefined4 *)(iVar2 + 0x34);" (assignment_expression "local_30 = *(undefined4 *)(iVar2 + 0x34)" identifier = (pointer_expression "*(undefined4 *)(iVar2 + 0x34)" * (cast_expression "(undefined4 *)(iVar2 + 0x34)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x34)" ( (binary_expression "iVar2 + 0x34" identifier + number_literal) ))))) ;) (expression_statement "local_2c = *(undefined4 *)(iVar2 + 0x38);" (assignment_expression "local_2c = *(undefined4 *)(iVar2 + 0x38)" identifier = (pointer_expression "*(undefined4 *)(iVar2 + 0x38)" * (cast_expression "(undefined4 *)(iVar2 + 0x38)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x38)" ( (binary_expression "iVar2 + 0x38" identifier + number_literal) ))))) ;) (expression_statement "local_28 = *(undefined4 *)(iVar2 + 0x3c);" (assignment_expression "local_28 = *(undefined4 *)(iVar2 + 0x3c)" identifier = (pointer_expression "*(undefined4 *)(iVar2 + 0x3c)" * (cast_expression "(undefined4 *)(iVar2 + 0x3c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x3c)" ( (binary_expression "iVar2 + 0x3c" identifier + number_literal) ))))) ;) (expression_statement "local_24 = *(undefined4 *)(iVar2 + 0x40);" (assignment_expression "local_24 = *(undefined4 *)(iVar2 + 0x40)" identifier = (pointer_expression "*(undefined4 *)(iVar2 + 0x40)" * (cast_expression "(undefined4 *)(iVar2 + 0x40)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x40)" ( (binary_expression "iVar2 + 0x40" identifier + number_literal) ))))) ;) (expression_statement "local_20 = *(undefined4 *)(iVar2 + 0x44);" (assignment_expression "local_20 = *(undefined4 *)(iVar2 + 0x44)" identifier = (pointer_expression "*(undefined4 *)(iVar2 + 0x44)" * (cast_expression "(undefined4 *)(iVar2 + 0x44)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x44)" ( (binary_expression "iVar2 + 0x44" identifier + number_literal) ))))) ;) (expression_statement "_M_extract_wday_or_month\n            (&local_64,param_2,param_3,param_4,param_5,param_6,&local_5c,&local_54,7,param_7,\n             &local_58);" (call_expression "_M_extract_wday_or_month\n            (&local_64,param_2,param_3,param_4,param_5,param_6,&local_5c,&local_54,7,param_7,\n             &local_58)" identifier (argument_list "(&local_64,param_2,param_3,param_4,param_5,param_6,&local_5c,&local_54,7,param_7,\n             &local_58)" ( (pointer_expression "&local_64" & identifier) , identifier , identifier , identifier , identifier , identifier , (pointer_expression "&local_5c" & identifier) , (pointer_expression "&local_54" & identifier) , number_literal , identifier , (pointer_expression "&local_58" & identifier) ))) ;) (expression_statement "piVar4 = local_64;" (assignment_expression "piVar4 = local_64" identifier = identifier) ;) (if_statement "if (local_58 == 0) {\n    bVar5 = local_60 == -1;\n    *(undefined4 *)(param_9 + 0x18) = local_5c;\n    bVar3 = local_64 != (int *)0x0 && bVar5;\n    if (local_64 == (int *)0x0 || !bVar5) goto LAB_00254d05;\n  }\n  else {\n    *param_8 = *param_8 | 4;\n    bVar5 = local_60 == -1;\n    bVar3 = local_64 != (int *)0x0 && bVar5;\n    if (local_64 == (int *)0x0 || !bVar5) goto LAB_00254d05;\n  }" if (parenthesized_expression "(local_58 == 0)" ( (binary_expression "local_58 == 0" identifier == number_literal) )) (compound_statement "{\n    bVar5 = local_60 == -1;\n    *(undefined4 *)(param_9 + 0x18) = local_5c;\n    bVar3 = local_64 != (int *)0x0 && bVar5;\n    if (local_64 == (int *)0x0 || !bVar5) goto LAB_00254d05;\n  }" { (expression_statement "bVar5 = local_60 == -1;" (assignment_expression "bVar5 = local_60 == -1" identifier = (binary_expression "local_60 == -1" identifier == number_literal)) ;) (expression_statement "*(undefined4 *)(param_9 + 0x18) = local_5c;" (assignment_expression "*(undefined4 *)(param_9 + 0x18) = local_5c" (pointer_expression "*(undefined4 *)(param_9 + 0x18)" * (cast_expression "(undefined4 *)(param_9 + 0x18)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_9 + 0x18)" ( (binary_expression "param_9 + 0x18" identifier + number_literal) )))) = identifier) ;) (expression_statement "bVar3 = local_64 != (int *)0x0 && bVar5;" (assignment_expression "bVar3 = local_64 != (int *)0x0 && bVar5" identifier = (binary_expression "local_64 != (int *)0x0 && bVar5" (binary_expression "local_64 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) && identifier)) ;) (if_statement "if (local_64 == (int *)0x0 || !bVar5) goto LAB_00254d05;" if (parenthesized_expression "(local_64 == (int *)0x0 || !bVar5)" ( (binary_expression "local_64 == (int *)0x0 || !bVar5" (binary_expression "local_64 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) || (unary_expression "!bVar5" ! identifier)) )) (goto_statement "goto LAB_00254d05;" goto statement_identifier ;)) }) (else_clause "else {\n    *param_8 = *param_8 | 4;\n    bVar5 = local_60 == -1;\n    bVar3 = local_64 != (int *)0x0 && bVar5;\n    if (local_64 == (int *)0x0 || !bVar5) goto LAB_00254d05;\n  }" else (compound_statement "{\n    *param_8 = *param_8 | 4;\n    bVar5 = local_60 == -1;\n    bVar3 = local_64 != (int *)0x0 && bVar5;\n    if (local_64 == (int *)0x0 || !bVar5) goto LAB_00254d05;\n  }" { (expression_statement "*param_8 = *param_8 | 4;" (assignment_expression "*param_8 = *param_8 | 4" (pointer_expression "*param_8" * identifier) = (binary_expression "*param_8 | 4" (pointer_expression "*param_8" * identifier) | number_literal)) ;) (expression_statement "bVar5 = local_60 == -1;" (assignment_expression "bVar5 = local_60 == -1" identifier = (binary_expression "local_60 == -1" identifier == number_literal)) ;) (expression_statement "bVar3 = local_64 != (int *)0x0 && bVar5;" (assignment_expression "bVar3 = local_64 != (int *)0x0 && bVar5" identifier = (binary_expression "local_64 != (int *)0x0 && bVar5" (binary_expression "local_64 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) && identifier)) ;) (if_statement "if (local_64 == (int *)0x0 || !bVar5) goto LAB_00254d05;" if (parenthesized_expression "(local_64 == (int *)0x0 || !bVar5)" ( (binary_expression "local_64 == (int *)0x0 || !bVar5" (binary_expression "local_64 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) || (unary_expression "!bVar5" ! identifier)) )) (goto_statement "goto LAB_00254d05;" goto statement_identifier ;)) }))) (if_statement "if ((int *)local_64[2] < (int *)local_64[3]) {\n    iVar2 = *(int *)local_64[2];\n  }\n  else {\n    iVar2 = (**(code **)(*local_64 + 0x24))(local_64);\n  }" if (parenthesized_expression "((int *)local_64[2] < (int *)local_64[3])" ( (binary_expression "(int *)local_64[2] < (int *)local_64[3]" (cast_expression "(int *)local_64[2]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "local_64[2]" identifier [ number_literal ])) < (cast_expression "(int *)local_64[3]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "local_64[3]" identifier [ number_literal ]))) )) (compound_statement "{\n    iVar2 = *(int *)local_64[2];\n  }" { (expression_statement "iVar2 = *(int *)local_64[2];" (assignment_expression "iVar2 = *(int *)local_64[2]" identifier = (pointer_expression "*(int *)local_64[2]" * (cast_expression "(int *)local_64[2]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "local_64[2]" identifier [ number_literal ])))) ;) }) (else_clause "else {\n    iVar2 = (**(code **)(*local_64 + 0x24))(local_64);\n  }" else (compound_statement "{\n    iVar2 = (**(code **)(*local_64 + 0x24))(local_64);\n  }" { (expression_statement "iVar2 = (**(code **)(*local_64 + 0x24))(local_64);" (assignment_expression "iVar2 = (**(code **)(*local_64 + 0x24))(local_64)" identifier = (call_expression "(**(code **)(*local_64 + 0x24))(local_64)" (parenthesized_expression "(**(code **)(*local_64 + 0x24))" ( (pointer_expression "**(code **)(*local_64 + 0x24)" * (pointer_expression "*(code **)(*local_64 + 0x24)" * (cast_expression "(code **)(*local_64 + 0x24)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*local_64 + 0x24)" ( (binary_expression "*local_64 + 0x24" (pointer_expression "*local_64" * identifier) + number_literal) ))))) )) (argument_list "(local_64)" ( identifier )))) ;) }))) (expression_statement "bVar5 = false;" (assignment_expression "bVar5 = false" identifier = false) ;) (if_statement "if (iVar2 == -1) {\n    piVar4 = (int *)0x0;\n    bVar5 = bVar3;\n  }" if (parenthesized_expression "(iVar2 == -1)" ( (binary_expression "iVar2 == -1" identifier == number_literal) )) (compound_statement "{\n    piVar4 = (int *)0x0;\n    bVar5 = bVar3;\n  }" { (expression_statement "piVar4 = (int *)0x0;" (assignment_expression "piVar4 = (int *)0x0" identifier = (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "bVar5 = bVar3;" (assignment_expression "bVar5 = bVar3" identifier = identifier) ;) })) (labeled_statement "LAB_00254d05:\n  bVar3 = param_6 == -1;" statement_identifier : (expression_statement "bVar3 = param_6 == -1;" (assignment_expression "bVar3 = param_6 == -1" identifier = (binary_expression "param_6 == -1" identifier == number_literal)) ;)) (if_statement "if ((param_5 != (int *)0x0) && (bVar3)) {\n    if ((int *)param_5[2] < (int *)param_5[3]) {\n      iVar2 = *(int *)param_5[2];\n    }\n    else {\n      iVar2 = (**(code **)(*param_5 + 0x24))(param_5);\n    }\n    bVar3 = iVar2 == -1;\n  }" if (parenthesized_expression "((param_5 != (int *)0x0) && (bVar3))" ( (binary_expression "(param_5 != (int *)0x0) && (bVar3)" (parenthesized_expression "(param_5 != (int *)0x0)" ( (binary_expression "param_5 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "(bVar3)" ( identifier ))) )) (compound_statement "{\n    if ((int *)param_5[2] < (int *)param_5[3]) {\n      iVar2 = *(int *)param_5[2];\n    }\n    else {\n      iVar2 = (**(code **)(*param_5 + 0x24))(param_5);\n    }\n    bVar3 = iVar2 == -1;\n  }" { (if_statement "if ((int *)param_5[2] < (int *)param_5[3]) {\n      iVar2 = *(int *)param_5[2];\n    }\n    else {\n      iVar2 = (**(code **)(*param_5 + 0x24))(param_5);\n    }" if (parenthesized_expression "((int *)param_5[2] < (int *)param_5[3])" ( (binary_expression "(int *)param_5[2] < (int *)param_5[3]" (cast_expression "(int *)param_5[2]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_5[2]" identifier [ number_literal ])) < (cast_expression "(int *)param_5[3]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_5[3]" identifier [ number_literal ]))) )) (compound_statement "{\n      iVar2 = *(int *)param_5[2];\n    }" { (expression_statement "iVar2 = *(int *)param_5[2];" (assignment_expression "iVar2 = *(int *)param_5[2]" identifier = (pointer_expression "*(int *)param_5[2]" * (cast_expression "(int *)param_5[2]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_5[2]" identifier [ number_literal ])))) ;) }) (else_clause "else {\n      iVar2 = (**(code **)(*param_5 + 0x24))(param_5);\n    }" else (compound_statement "{\n      iVar2 = (**(code **)(*param_5 + 0x24))(param_5);\n    }" { (expression_statement "iVar2 = (**(code **)(*param_5 + 0x24))(param_5);" (assignment_expression "iVar2 = (**(code **)(*param_5 + 0x24))(param_5)" identifier = (call_expression "(**(code **)(*param_5 + 0x24))(param_5)" (parenthesized_expression "(**(code **)(*param_5 + 0x24))" ( (pointer_expression "**(code **)(*param_5 + 0x24)" * (pointer_expression "*(code **)(*param_5 + 0x24)" * (cast_expression "(code **)(*param_5 + 0x24)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_5 + 0x24)" ( (binary_expression "*param_5 + 0x24" (pointer_expression "*param_5" * identifier) + number_literal) ))))) )) (argument_list "(param_5)" ( identifier )))) ;) }))) (expression_statement "bVar3 = iVar2 == -1;" (assignment_expression "bVar3 = iVar2 == -1" identifier = (binary_expression "iVar2 == -1" identifier == number_literal)) ;) })) (if_statement "if (bVar5 == bVar3) {\n    *param_8 = *param_8 | 2;\n  }" if (parenthesized_expression "(bVar5 == bVar3)" ( (binary_expression "bVar5 == bVar3" identifier == identifier) )) (compound_statement "{\n    *param_8 = *param_8 | 2;\n  }" { (expression_statement "*param_8 = *param_8 | 2;" (assignment_expression "*param_8 = *param_8 | 2" (pointer_expression "*param_8" * identifier) = (binary_expression "*param_8 | 2" (pointer_expression "*param_8" * identifier) | number_literal)) ;) })) (expression_statement "*param_1 = piVar4;" (assignment_expression "*param_1 = piVar4" (pointer_expression "*param_1" * identifier) = identifier) ;) (expression_statement "param_1[1] = local_60;" (assignment_expression "param_1[1] = local_60" (subscript_expression "param_1[1]" identifier [ number_literal ]) = identifier) ;) (return_statement "return;" return ;) (ERROR "}" }))
(translation_unit "void FUN_00254c00(undefined4 param_1,undefined4 param_2,undefined4 param_3,int *param_4,int param_5,\n                 undefined4 param_6,uint *param_7,int param_8)\n\n{\n  int iVar1;\n  bool bVar2;\n  bool bVar3;\n  undefined4 *unaff_retaddr;\n  int *local_68;\n  int local_64;\n  undefined4 local_60;\n  int local_5c [3];\n  undefined4 local_50;\n  undefined4 local_4c;\n  undefined4 local_48;\n  undefined4 local_44;\n  undefined4 local_40;\n  undefined4 local_3c;\n  undefined4 local_38;\n  undefined4 local_34;\n  undefined4 local_30;\n  undefined4 local_2c;\n  undefined4 local_28;\n  undefined4 local_24;\n  undefined4 local_20;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x254c09;\n  iVar1 = FUN_0023db00(param_7 + 0x1b);\n  local_5c[1] = 0;\n  iVar1 = *(int *)(iVar1 + 8);\n  local_5c[2] = *(undefined4 *)(iVar1 + 0x48);\n  local_50 = *(undefined4 *)(iVar1 + 0x4c);\n  local_4c = *(undefined4 *)(iVar1 + 0x50);\n  local_48 = *(undefined4 *)(iVar1 + 0x54);\n  local_44 = *(undefined4 *)(iVar1 + 0x58);\n  local_40 = *(undefined4 *)(iVar1 + 0x5c);\n  local_3c = *(undefined4 *)(iVar1 + 0x60);\n  local_38 = *(undefined4 *)(iVar1 + 0x2c);\n  local_34 = *(undefined4 *)(iVar1 + 0x30);\n  local_30 = *(undefined4 *)(iVar1 + 0x34);\n  local_2c = *(undefined4 *)(iVar1 + 0x38);\n  local_28 = *(undefined4 *)(iVar1 + 0x3c);\n  local_24 = *(undefined4 *)(iVar1 + 0x40);\n  local_20 = *(undefined4 *)(iVar1 + 0x44);\n  FUN_00254700(&local_64,param_2,param_3,param_4,param_5,param_6,local_5c,local_5c + 2,7,param_7,\n               local_5c + 1);\n  if (local_5c[0] == 0) {\n    bVar3 = local_64 == -1;\n    *(undefined4 *)(param_8 + 0x18) = local_60;\n    bVar2 = local_68 != (int *)0x0 && bVar3;\n    if (local_68 == (int *)0x0 || !bVar3) goto LAB_00254d05;\n  }\n  else {\n    *param_7 = *param_7 | 4;\n    bVar3 = local_64 == -1;\n    bVar2 = local_68 != (int *)0x0 && bVar3;\n    if (local_68 == (int *)0x0 || !bVar3) goto LAB_00254d05;\n  }\n  if ((int *)local_68[2] < (int *)local_68[3]) {\n    iVar1 = *(int *)local_68[2];\n  }\n  else {\n    iVar1 = (**(code **)(*local_68 + 0x24))(local_68);\n  }\n  bVar3 = false;\n  if (iVar1 == -1) {\n    local_68 = (int *)0x0;\n    bVar3 = bVar2;\n  }\nLAB_00254d05:\n  bVar2 = param_5 == -1;\n  if ((param_4 != (int *)0x0) && (bVar2)) {\n    if ((int *)param_4[2] < (int *)param_4[3]) {\n      iVar1 = *(int *)param_4[2];\n    }\n    else {\n      iVar1 = (**(code **)(*param_4 + 0x24))(param_4);\n    }\n    bVar2 = iVar1 == -1;\n  }\n  if (bVar3 == bVar2) {\n    *param_7 = *param_7 | 2;\n  }\n  *unaff_retaddr = local_68;\n  unaff_retaddr[1] = local_64;\n  return;\n}\n\n" (function_definition "void FUN_00254c00(undefined4 param_1,undefined4 param_2,undefined4 param_3,int *param_4,int param_5,\n                 undefined4 param_6,uint *param_7,int param_8)\n\n{\n  int iVar1;\n  bool bVar2;\n  bool bVar3;\n  undefined4 *unaff_retaddr;\n  int *local_68;\n  int local_64;\n  undefined4 local_60;\n  int local_5c [3];\n  undefined4 local_50;\n  undefined4 local_4c;\n  undefined4 local_48;\n  undefined4 local_44;\n  undefined4 local_40;\n  undefined4 local_3c;\n  undefined4 local_38;\n  undefined4 local_34;\n  undefined4 local_30;\n  undefined4 local_2c;\n  undefined4 local_28;\n  undefined4 local_24;\n  undefined4 local_20;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x254c09;\n  iVar1 = FUN_0023db00(param_7 + 0x1b);\n  local_5c[1] = 0;\n  iVar1 = *(int *)(iVar1 + 8);\n  local_5c[2] = *(undefined4 *)(iVar1 + 0x48);\n  local_50 = *(undefined4 *)(iVar1 + 0x4c);\n  local_4c = *(undefined4 *)(iVar1 + 0x50);\n  local_48 = *(undefined4 *)(iVar1 + 0x54);\n  local_44 = *(undefined4 *)(iVar1 + 0x58);\n  local_40 = *(undefined4 *)(iVar1 + 0x5c);\n  local_3c = *(undefined4 *)(iVar1 + 0x60);\n  local_38 = *(undefined4 *)(iVar1 + 0x2c);\n  local_34 = *(undefined4 *)(iVar1 + 0x30);\n  local_30 = *(undefined4 *)(iVar1 + 0x34);\n  local_2c = *(undefined4 *)(iVar1 + 0x38);\n  local_28 = *(undefined4 *)(iVar1 + 0x3c);\n  local_24 = *(undefined4 *)(iVar1 + 0x40);\n  local_20 = *(undefined4 *)(iVar1 + 0x44);\n  FUN_00254700(&local_64,param_2,param_3,param_4,param_5,param_6,local_5c,local_5c + 2,7,param_7,\n               local_5c + 1);\n  if (local_5c[0] == 0) {\n    bVar3 = local_64 == -1;\n    *(undefined4 *)(param_8 + 0x18) = local_60;\n    bVar2 = local_68 != (int *)0x0 && bVar3;\n    if (local_68 == (int *)0x0 || !bVar3) goto LAB_00254d05;\n  }\n  else {\n    *param_7 = *param_7 | 4;\n    bVar3 = local_64 == -1;\n    bVar2 = local_68 != (int *)0x0 && bVar3;\n    if (local_68 == (int *)0x0 || !bVar3) goto LAB_00254d05;\n  }\n  if ((int *)local_68[2] < (int *)local_68[3]) {\n    iVar1 = *(int *)local_68[2];\n  }\n  else {\n    iVar1 = (**(code **)(*local_68 + 0x24))(local_68);\n  }\n  bVar3 = false;\n  if (iVar1 == -1) {\n    local_68 = (int *)0x0;\n    bVar3 = bVar2;\n  }\nLAB_00254d05:\n  bVar2 = param_5 == -1;\n  if ((param_4 != (int *)0x0) && (bVar2)) {\n    if ((int *)param_4[2] < (int *)param_4[3]) {\n      iVar1 = *(int *)param_4[2];\n    }\n    else {\n      iVar1 = (**(code **)(*param_4 + 0x24))(param_4);\n    }\n    bVar2 = iVar1 == -1;\n  }\n  if (bVar3 == bVar2) {\n    *param_7 = *param_7 | 2;\n  }\n  *unaff_retaddr = local_68;\n  unaff_retaddr[1] = local_64;\n  return;\n}" primitive_type (function_declarator "FUN_00254c00(undefined4 param_1,undefined4 param_2,undefined4 param_3,int *param_4,int param_5,\n                 undefined4 param_6,uint *param_7,int param_8)" identifier (parameter_list "(undefined4 param_1,undefined4 param_2,undefined4 param_3,int *param_4,int param_5,\n                 undefined4 param_6,uint *param_7,int param_8)" ( (parameter_declaration "undefined4 param_1" type_identifier identifier) , (parameter_declaration "undefined4 param_2" type_identifier identifier) , (parameter_declaration "undefined4 param_3" type_identifier identifier) , (parameter_declaration "int *param_4" primitive_type (pointer_declarator "*param_4" * identifier)) , (parameter_declaration "int param_5" primitive_type identifier) , (parameter_declaration "undefined4 param_6" type_identifier identifier) , (parameter_declaration "uint *param_7" type_identifier (pointer_declarator "*param_7" * identifier)) , (parameter_declaration "int param_8" primitive_type identifier) ))) (compound_statement "{\n  int iVar1;\n  bool bVar2;\n  bool bVar3;\n  undefined4 *unaff_retaddr;\n  int *local_68;\n  int local_64;\n  undefined4 local_60;\n  int local_5c [3];\n  undefined4 local_50;\n  undefined4 local_4c;\n  undefined4 local_48;\n  undefined4 local_44;\n  undefined4 local_40;\n  undefined4 local_3c;\n  undefined4 local_38;\n  undefined4 local_34;\n  undefined4 local_30;\n  undefined4 local_2c;\n  undefined4 local_28;\n  undefined4 local_24;\n  undefined4 local_20;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x254c09;\n  iVar1 = FUN_0023db00(param_7 + 0x1b);\n  local_5c[1] = 0;\n  iVar1 = *(int *)(iVar1 + 8);\n  local_5c[2] = *(undefined4 *)(iVar1 + 0x48);\n  local_50 = *(undefined4 *)(iVar1 + 0x4c);\n  local_4c = *(undefined4 *)(iVar1 + 0x50);\n  local_48 = *(undefined4 *)(iVar1 + 0x54);\n  local_44 = *(undefined4 *)(iVar1 + 0x58);\n  local_40 = *(undefined4 *)(iVar1 + 0x5c);\n  local_3c = *(undefined4 *)(iVar1 + 0x60);\n  local_38 = *(undefined4 *)(iVar1 + 0x2c);\n  local_34 = *(undefined4 *)(iVar1 + 0x30);\n  local_30 = *(undefined4 *)(iVar1 + 0x34);\n  local_2c = *(undefined4 *)(iVar1 + 0x38);\n  local_28 = *(undefined4 *)(iVar1 + 0x3c);\n  local_24 = *(undefined4 *)(iVar1 + 0x40);\n  local_20 = *(undefined4 *)(iVar1 + 0x44);\n  FUN_00254700(&local_64,param_2,param_3,param_4,param_5,param_6,local_5c,local_5c + 2,7,param_7,\n               local_5c + 1);\n  if (local_5c[0] == 0) {\n    bVar3 = local_64 == -1;\n    *(undefined4 *)(param_8 + 0x18) = local_60;\n    bVar2 = local_68 != (int *)0x0 && bVar3;\n    if (local_68 == (int *)0x0 || !bVar3) goto LAB_00254d05;\n  }\n  else {\n    *param_7 = *param_7 | 4;\n    bVar3 = local_64 == -1;\n    bVar2 = local_68 != (int *)0x0 && bVar3;\n    if (local_68 == (int *)0x0 || !bVar3) goto LAB_00254d05;\n  }\n  if ((int *)local_68[2] < (int *)local_68[3]) {\n    iVar1 = *(int *)local_68[2];\n  }\n  else {\n    iVar1 = (**(code **)(*local_68 + 0x24))(local_68);\n  }\n  bVar3 = false;\n  if (iVar1 == -1) {\n    local_68 = (int *)0x0;\n    bVar3 = bVar2;\n  }\nLAB_00254d05:\n  bVar2 = param_5 == -1;\n  if ((param_4 != (int *)0x0) && (bVar2)) {\n    if ((int *)param_4[2] < (int *)param_4[3]) {\n      iVar1 = *(int *)param_4[2];\n    }\n    else {\n      iVar1 = (**(code **)(*param_4 + 0x24))(param_4);\n    }\n    bVar2 = iVar1 == -1;\n  }\n  if (bVar3 == bVar2) {\n    *param_7 = *param_7 | 2;\n  }\n  *unaff_retaddr = local_68;\n  unaff_retaddr[1] = local_64;\n  return;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "bool bVar2;" primitive_type identifier ;) (declaration "bool bVar3;" primitive_type identifier ;) (declaration "undefined4 *unaff_retaddr;" type_identifier (pointer_declarator "*unaff_retaddr" * identifier) ;) (declaration "int *local_68;" primitive_type (pointer_declarator "*local_68" * identifier) ;) (declaration "int local_64;" primitive_type identifier ;) (declaration "undefined4 local_60;" type_identifier identifier ;) (declaration "int local_5c [3];" primitive_type (array_declarator "local_5c [3]" identifier [ number_literal ]) ;) (declaration "undefined4 local_50;" type_identifier identifier ;) (declaration "undefined4 local_4c;" type_identifier identifier ;) (declaration "undefined4 local_48;" type_identifier identifier ;) (declaration "undefined4 local_44;" type_identifier identifier ;) (declaration "undefined4 local_40;" type_identifier identifier ;) (declaration "undefined4 local_3c;" type_identifier identifier ;) (declaration "undefined4 local_38;" type_identifier identifier ;) (declaration "undefined4 local_34;" type_identifier identifier ;) (declaration "undefined4 local_30;" type_identifier identifier ;) (declaration "undefined4 local_2c;" type_identifier identifier ;) (declaration "undefined4 local_28;" type_identifier identifier ;) (declaration "undefined4 local_24;" type_identifier identifier ;) (declaration "undefined4 local_20;" type_identifier identifier ;) (declaration "undefined4 uStack_14;" type_identifier identifier ;) (expression_statement "uStack_14 = 0x254c09;" (assignment_expression "uStack_14 = 0x254c09" identifier = number_literal) ;) (expression_statement "iVar1 = FUN_0023db00(param_7 + 0x1b);" (assignment_expression "iVar1 = FUN_0023db00(param_7 + 0x1b)" identifier = (call_expression "FUN_0023db00(param_7 + 0x1b)" identifier (argument_list "(param_7 + 0x1b)" ( (binary_expression "param_7 + 0x1b" identifier + number_literal) )))) ;) (expression_statement "local_5c[1] = 0;" (assignment_expression "local_5c[1] = 0" (subscript_expression "local_5c[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "iVar1 = *(int *)(iVar1 + 8);" (assignment_expression "iVar1 = *(int *)(iVar1 + 8)" identifier = (pointer_expression "*(int *)(iVar1 + 8)" * (cast_expression "(int *)(iVar1 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 8)" ( (binary_expression "iVar1 + 8" identifier + number_literal) ))))) ;) (expression_statement "local_5c[2] = *(undefined4 *)(iVar1 + 0x48);" (assignment_expression "local_5c[2] = *(undefined4 *)(iVar1 + 0x48)" (subscript_expression "local_5c[2]" identifier [ number_literal ]) = (pointer_expression "*(undefined4 *)(iVar1 + 0x48)" * (cast_expression "(undefined4 *)(iVar1 + 0x48)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x48)" ( (binary_expression "iVar1 + 0x48" identifier + number_literal) ))))) ;) (expression_statement "local_50 = *(undefined4 *)(iVar1 + 0x4c);" (assignment_expression "local_50 = *(undefined4 *)(iVar1 + 0x4c)" identifier = (pointer_expression "*(undefined4 *)(iVar1 + 0x4c)" * (cast_expression "(undefined4 *)(iVar1 + 0x4c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x4c)" ( (binary_expression "iVar1 + 0x4c" identifier + number_literal) ))))) ;) (expression_statement "local_4c = *(undefined4 *)(iVar1 + 0x50);" (assignment_expression "local_4c = *(undefined4 *)(iVar1 + 0x50)" identifier = (pointer_expression "*(undefined4 *)(iVar1 + 0x50)" * (cast_expression "(undefined4 *)(iVar1 + 0x50)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x50)" ( (binary_expression "iVar1 + 0x50" identifier + number_literal) ))))) ;) (expression_statement "local_48 = *(undefined4 *)(iVar1 + 0x54);" (assignment_expression "local_48 = *(undefined4 *)(iVar1 + 0x54)" identifier = (pointer_expression "*(undefined4 *)(iVar1 + 0x54)" * (cast_expression "(undefined4 *)(iVar1 + 0x54)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x54)" ( (binary_expression "iVar1 + 0x54" identifier + number_literal) ))))) ;) (expression_statement "local_44 = *(undefined4 *)(iVar1 + 0x58);" (assignment_expression "local_44 = *(undefined4 *)(iVar1 + 0x58)" identifier = (pointer_expression "*(undefined4 *)(iVar1 + 0x58)" * (cast_expression "(undefined4 *)(iVar1 + 0x58)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x58)" ( (binary_expression "iVar1 + 0x58" identifier + number_literal) ))))) ;) (expression_statement "local_40 = *(undefined4 *)(iVar1 + 0x5c);" (assignment_expression "local_40 = *(undefined4 *)(iVar1 + 0x5c)" identifier = (pointer_expression "*(undefined4 *)(iVar1 + 0x5c)" * (cast_expression "(undefined4 *)(iVar1 + 0x5c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x5c)" ( (binary_expression "iVar1 + 0x5c" identifier + number_literal) ))))) ;) (expression_statement "local_3c = *(undefined4 *)(iVar1 + 0x60);" (assignment_expression "local_3c = *(undefined4 *)(iVar1 + 0x60)" identifier = (pointer_expression "*(undefined4 *)(iVar1 + 0x60)" * (cast_expression "(undefined4 *)(iVar1 + 0x60)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x60)" ( (binary_expression "iVar1 + 0x60" identifier + number_literal) ))))) ;) (expression_statement "local_38 = *(undefined4 *)(iVar1 + 0x2c);" (assignment_expression "local_38 = *(undefined4 *)(iVar1 + 0x2c)" identifier = (pointer_expression "*(undefined4 *)(iVar1 + 0x2c)" * (cast_expression "(undefined4 *)(iVar1 + 0x2c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x2c)" ( (binary_expression "iVar1 + 0x2c" identifier + number_literal) ))))) ;) (expression_statement "local_34 = *(undefined4 *)(iVar1 + 0x30);" (assignment_expression "local_34 = *(undefined4 *)(iVar1 + 0x30)" identifier = (pointer_expression "*(undefined4 *)(iVar1 + 0x30)" * (cast_expression "(undefined4 *)(iVar1 + 0x30)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x30)" ( (binary_expression "iVar1 + 0x30" identifier + number_literal) ))))) ;) (expression_statement "local_30 = *(undefined4 *)(iVar1 + 0x34);" (assignment_expression "local_30 = *(undefined4 *)(iVar1 + 0x34)" identifier = (pointer_expression "*(undefined4 *)(iVar1 + 0x34)" * (cast_expression "(undefined4 *)(iVar1 + 0x34)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x34)" ( (binary_expression "iVar1 + 0x34" identifier + number_literal) ))))) ;) (expression_statement "local_2c = *(undefined4 *)(iVar1 + 0x38);" (assignment_expression "local_2c = *(undefined4 *)(iVar1 + 0x38)" identifier = (pointer_expression "*(undefined4 *)(iVar1 + 0x38)" * (cast_expression "(undefined4 *)(iVar1 + 0x38)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x38)" ( (binary_expression "iVar1 + 0x38" identifier + number_literal) ))))) ;) (expression_statement "local_28 = *(undefined4 *)(iVar1 + 0x3c);" (assignment_expression "local_28 = *(undefined4 *)(iVar1 + 0x3c)" identifier = (pointer_expression "*(undefined4 *)(iVar1 + 0x3c)" * (cast_expression "(undefined4 *)(iVar1 + 0x3c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x3c)" ( (binary_expression "iVar1 + 0x3c" identifier + number_literal) ))))) ;) (expression_statement "local_24 = *(undefined4 *)(iVar1 + 0x40);" (assignment_expression "local_24 = *(undefined4 *)(iVar1 + 0x40)" identifier = (pointer_expression "*(undefined4 *)(iVar1 + 0x40)" * (cast_expression "(undefined4 *)(iVar1 + 0x40)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x40)" ( (binary_expression "iVar1 + 0x40" identifier + number_literal) ))))) ;) (expression_statement "local_20 = *(undefined4 *)(iVar1 + 0x44);" (assignment_expression "local_20 = *(undefined4 *)(iVar1 + 0x44)" identifier = (pointer_expression "*(undefined4 *)(iVar1 + 0x44)" * (cast_expression "(undefined4 *)(iVar1 + 0x44)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x44)" ( (binary_expression "iVar1 + 0x44" identifier + number_literal) ))))) ;) (expression_statement "FUN_00254700(&local_64,param_2,param_3,param_4,param_5,param_6,local_5c,local_5c + 2,7,param_7,\n               local_5c + 1);" (call_expression "FUN_00254700(&local_64,param_2,param_3,param_4,param_5,param_6,local_5c,local_5c + 2,7,param_7,\n               local_5c + 1)" identifier (argument_list "(&local_64,param_2,param_3,param_4,param_5,param_6,local_5c,local_5c + 2,7,param_7,\n               local_5c + 1)" ( (pointer_expression "&local_64" & identifier) , identifier , identifier , identifier , identifier , identifier , identifier , (binary_expression "local_5c + 2" identifier + number_literal) , number_literal , identifier , (binary_expression "local_5c + 1" identifier + number_literal) ))) ;) (if_statement "if (local_5c[0] == 0) {\n    bVar3 = local_64 == -1;\n    *(undefined4 *)(param_8 + 0x18) = local_60;\n    bVar2 = local_68 != (int *)0x0 && bVar3;\n    if (local_68 == (int *)0x0 || !bVar3) goto LAB_00254d05;\n  }\n  else {\n    *param_7 = *param_7 | 4;\n    bVar3 = local_64 == -1;\n    bVar2 = local_68 != (int *)0x0 && bVar3;\n    if (local_68 == (int *)0x0 || !bVar3) goto LAB_00254d05;\n  }" if (parenthesized_expression "(local_5c[0] == 0)" ( (binary_expression "local_5c[0] == 0" (subscript_expression "local_5c[0]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n    bVar3 = local_64 == -1;\n    *(undefined4 *)(param_8 + 0x18) = local_60;\n    bVar2 = local_68 != (int *)0x0 && bVar3;\n    if (local_68 == (int *)0x0 || !bVar3) goto LAB_00254d05;\n  }" { (expression_statement "bVar3 = local_64 == -1;" (assignment_expression "bVar3 = local_64 == -1" identifier = (binary_expression "local_64 == -1" identifier == number_literal)) ;) (expression_statement "*(undefined4 *)(param_8 + 0x18) = local_60;" (assignment_expression "*(undefined4 *)(param_8 + 0x18) = local_60" (pointer_expression "*(undefined4 *)(param_8 + 0x18)" * (cast_expression "(undefined4 *)(param_8 + 0x18)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_8 + 0x18)" ( (binary_expression "param_8 + 0x18" identifier + number_literal) )))) = identifier) ;) (expression_statement "bVar2 = local_68 != (int *)0x0 && bVar3;" (assignment_expression "bVar2 = local_68 != (int *)0x0 && bVar3" identifier = (binary_expression "local_68 != (int *)0x0 && bVar3" (binary_expression "local_68 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) && identifier)) ;) (if_statement "if (local_68 == (int *)0x0 || !bVar3) goto LAB_00254d05;" if (parenthesized_expression "(local_68 == (int *)0x0 || !bVar3)" ( (binary_expression "local_68 == (int *)0x0 || !bVar3" (binary_expression "local_68 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) || (unary_expression "!bVar3" ! identifier)) )) (goto_statement "goto LAB_00254d05;" goto statement_identifier ;)) }) (else_clause "else {\n    *param_7 = *param_7 | 4;\n    bVar3 = local_64 == -1;\n    bVar2 = local_68 != (int *)0x0 && bVar3;\n    if (local_68 == (int *)0x0 || !bVar3) goto LAB_00254d05;\n  }" else (compound_statement "{\n    *param_7 = *param_7 | 4;\n    bVar3 = local_64 == -1;\n    bVar2 = local_68 != (int *)0x0 && bVar3;\n    if (local_68 == (int *)0x0 || !bVar3) goto LAB_00254d05;\n  }" { (expression_statement "*param_7 = *param_7 | 4;" (assignment_expression "*param_7 = *param_7 | 4" (pointer_expression "*param_7" * identifier) = (binary_expression "*param_7 | 4" (pointer_expression "*param_7" * identifier) | number_literal)) ;) (expression_statement "bVar3 = local_64 == -1;" (assignment_expression "bVar3 = local_64 == -1" identifier = (binary_expression "local_64 == -1" identifier == number_literal)) ;) (expression_statement "bVar2 = local_68 != (int *)0x0 && bVar3;" (assignment_expression "bVar2 = local_68 != (int *)0x0 && bVar3" identifier = (binary_expression "local_68 != (int *)0x0 && bVar3" (binary_expression "local_68 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) && identifier)) ;) (if_statement "if (local_68 == (int *)0x0 || !bVar3) goto LAB_00254d05;" if (parenthesized_expression "(local_68 == (int *)0x0 || !bVar3)" ( (binary_expression "local_68 == (int *)0x0 || !bVar3" (binary_expression "local_68 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) || (unary_expression "!bVar3" ! identifier)) )) (goto_statement "goto LAB_00254d05;" goto statement_identifier ;)) }))) (if_statement "if ((int *)local_68[2] < (int *)local_68[3]) {\n    iVar1 = *(int *)local_68[2];\n  }\n  else {\n    iVar1 = (**(code **)(*local_68 + 0x24))(local_68);\n  }" if (parenthesized_expression "((int *)local_68[2] < (int *)local_68[3])" ( (binary_expression "(int *)local_68[2] < (int *)local_68[3]" (cast_expression "(int *)local_68[2]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "local_68[2]" identifier [ number_literal ])) < (cast_expression "(int *)local_68[3]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "local_68[3]" identifier [ number_literal ]))) )) (compound_statement "{\n    iVar1 = *(int *)local_68[2];\n  }" { (expression_statement "iVar1 = *(int *)local_68[2];" (assignment_expression "iVar1 = *(int *)local_68[2]" identifier = (pointer_expression "*(int *)local_68[2]" * (cast_expression "(int *)local_68[2]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "local_68[2]" identifier [ number_literal ])))) ;) }) (else_clause "else {\n    iVar1 = (**(code **)(*local_68 + 0x24))(local_68);\n  }" else (compound_statement "{\n    iVar1 = (**(code **)(*local_68 + 0x24))(local_68);\n  }" { (expression_statement "iVar1 = (**(code **)(*local_68 + 0x24))(local_68);" (assignment_expression "iVar1 = (**(code **)(*local_68 + 0x24))(local_68)" identifier = (call_expression "(**(code **)(*local_68 + 0x24))(local_68)" (parenthesized_expression "(**(code **)(*local_68 + 0x24))" ( (pointer_expression "**(code **)(*local_68 + 0x24)" * (pointer_expression "*(code **)(*local_68 + 0x24)" * (cast_expression "(code **)(*local_68 + 0x24)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*local_68 + 0x24)" ( (binary_expression "*local_68 + 0x24" (pointer_expression "*local_68" * identifier) + number_literal) ))))) )) (argument_list "(local_68)" ( identifier )))) ;) }))) (expression_statement "bVar3 = false;" (assignment_expression "bVar3 = false" identifier = false) ;) (if_statement "if (iVar1 == -1) {\n    local_68 = (int *)0x0;\n    bVar3 = bVar2;\n  }" if (parenthesized_expression "(iVar1 == -1)" ( (binary_expression "iVar1 == -1" identifier == number_literal) )) (compound_statement "{\n    local_68 = (int *)0x0;\n    bVar3 = bVar2;\n  }" { (expression_statement "local_68 = (int *)0x0;" (assignment_expression "local_68 = (int *)0x0" identifier = (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "bVar3 = bVar2;" (assignment_expression "bVar3 = bVar2" identifier = identifier) ;) })) (labeled_statement "LAB_00254d05:\n  bVar2 = param_5 == -1;" statement_identifier : (expression_statement "bVar2 = param_5 == -1;" (assignment_expression "bVar2 = param_5 == -1" identifier = (binary_expression "param_5 == -1" identifier == number_literal)) ;)) (if_statement "if ((param_4 != (int *)0x0) && (bVar2)) {\n    if ((int *)param_4[2] < (int *)param_4[3]) {\n      iVar1 = *(int *)param_4[2];\n    }\n    else {\n      iVar1 = (**(code **)(*param_4 + 0x24))(param_4);\n    }\n    bVar2 = iVar1 == -1;\n  }" if (parenthesized_expression "((param_4 != (int *)0x0) && (bVar2))" ( (binary_expression "(param_4 != (int *)0x0) && (bVar2)" (parenthesized_expression "(param_4 != (int *)0x0)" ( (binary_expression "param_4 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "(bVar2)" ( identifier ))) )) (compound_statement "{\n    if ((int *)param_4[2] < (int *)param_4[3]) {\n      iVar1 = *(int *)param_4[2];\n    }\n    else {\n      iVar1 = (**(code **)(*param_4 + 0x24))(param_4);\n    }\n    bVar2 = iVar1 == -1;\n  }" { (if_statement "if ((int *)param_4[2] < (int *)param_4[3]) {\n      iVar1 = *(int *)param_4[2];\n    }\n    else {\n      iVar1 = (**(code **)(*param_4 + 0x24))(param_4);\n    }" if (parenthesized_expression "((int *)param_4[2] < (int *)param_4[3])" ( (binary_expression "(int *)param_4[2] < (int *)param_4[3]" (cast_expression "(int *)param_4[2]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_4[2]" identifier [ number_literal ])) < (cast_expression "(int *)param_4[3]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_4[3]" identifier [ number_literal ]))) )) (compound_statement "{\n      iVar1 = *(int *)param_4[2];\n    }" { (expression_statement "iVar1 = *(int *)param_4[2];" (assignment_expression "iVar1 = *(int *)param_4[2]" identifier = (pointer_expression "*(int *)param_4[2]" * (cast_expression "(int *)param_4[2]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_4[2]" identifier [ number_literal ])))) ;) }) (else_clause "else {\n      iVar1 = (**(code **)(*param_4 + 0x24))(param_4);\n    }" else (compound_statement "{\n      iVar1 = (**(code **)(*param_4 + 0x24))(param_4);\n    }" { (expression_statement "iVar1 = (**(code **)(*param_4 + 0x24))(param_4);" (assignment_expression "iVar1 = (**(code **)(*param_4 + 0x24))(param_4)" identifier = (call_expression "(**(code **)(*param_4 + 0x24))(param_4)" (parenthesized_expression "(**(code **)(*param_4 + 0x24))" ( (pointer_expression "**(code **)(*param_4 + 0x24)" * (pointer_expression "*(code **)(*param_4 + 0x24)" * (cast_expression "(code **)(*param_4 + 0x24)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_4 + 0x24)" ( (binary_expression "*param_4 + 0x24" (pointer_expression "*param_4" * identifier) + number_literal) ))))) )) (argument_list "(param_4)" ( identifier )))) ;) }))) (expression_statement "bVar2 = iVar1 == -1;" (assignment_expression "bVar2 = iVar1 == -1" identifier = (binary_expression "iVar1 == -1" identifier == number_literal)) ;) })) (if_statement "if (bVar3 == bVar2) {\n    *param_7 = *param_7 | 2;\n  }" if (parenthesized_expression "(bVar3 == bVar2)" ( (binary_expression "bVar3 == bVar2" identifier == identifier) )) (compound_statement "{\n    *param_7 = *param_7 | 2;\n  }" { (expression_statement "*param_7 = *param_7 | 2;" (assignment_expression "*param_7 = *param_7 | 2" (pointer_expression "*param_7" * identifier) = (binary_expression "*param_7 | 2" (pointer_expression "*param_7" * identifier) | number_literal)) ;) })) (expression_statement "*unaff_retaddr = local_68;" (assignment_expression "*unaff_retaddr = local_68" (pointer_expression "*unaff_retaddr" * identifier) = identifier) ;) (expression_statement "unaff_retaddr[1] = local_64;" (assignment_expression "unaff_retaddr[1] = local_64" (subscript_expression "unaff_retaddr[1]" identifier [ number_literal ]) = identifier) ;) (return_statement "return;" return ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) )))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = 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 (subscript_expression IDENT [ LIT ]) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (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 IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (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 IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (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 IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (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 IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (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 IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (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 IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (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 (call_expression IDENT (argument_list ( (pointer_expression & IDENT) , IDENT , IDENT , IDENT , IDENT , IDENT , IDENT , (binary_expression IDENT + LIT) , LIT , IDENT , (binary_expression IDENT + LIT) ))) ;) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT == LIT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) && IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) || (unary_expression ! IDENT)) )) (goto_statement goto statement_identifier ;)) }) (else_clause else (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression (pointer_expression * IDENT) | LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT == LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) && IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) || (unary_expression ! IDENT)) )) (goto_statement goto statement_identifier ;)) }))) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ])) < (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ])))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) ))))) )) (argument_list ( IDENT )))) ;) }))) (expression_statement (assignment_expression IDENT = BOOL) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) })) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (binary_expression IDENT == LIT)) ;)) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) && (parenthesized_expression ( IDENT ))) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ])) < (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ])))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) ))))) )) (argument_list ( IDENT )))) ;) }))) (expression_statement (assignment_expression IDENT = (binary_expression IDENT == LIT)) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression (pointer_expression * IDENT) | LIT)) ;) })) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (return_statement return ;) })))
(function_definition "void FUN_00254c00(undefined4 param_1,undefined4 param_2,undefined4 param_3,int *param_4,int param_5,\n                 undefined4 param_6,uint *param_7,int param_8)\n\n{\n  int iVar1;\n  bool bVar2;\n  bool bVar3;\n  undefined4 *unaff_retaddr;\n  int *local_68;\n  int local_64;\n  undefined4 local_60;\n  int local_5c [3];\n  undefined4 local_50;\n  undefined4 local_4c;\n  undefined4 local_48;\n  undefined4 local_44;\n  undefined4 local_40;\n  undefined4 local_3c;\n  undefined4 local_38;\n  undefined4 local_34;\n  undefined4 local_30;\n  undefined4 local_2c;\n  undefined4 local_28;\n  undefined4 local_24;\n  undefined4 local_20;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x254c09;\n  iVar1 = FUN_0023db00(param_7 + 0x1b);\n  local_5c[1] = 0;\n  iVar1 = *(int *)(iVar1 + 8);\n  local_5c[2] = *(undefined4 *)(iVar1 + 0x48);\n  local_50 = *(undefined4 *)(iVar1 + 0x4c);\n  local_4c = *(undefined4 *)(iVar1 + 0x50);\n  local_48 = *(undefined4 *)(iVar1 + 0x54);\n  local_44 = *(undefined4 *)(iVar1 + 0x58);\n  local_40 = *(undefined4 *)(iVar1 + 0x5c);\n  local_3c = *(undefined4 *)(iVar1 + 0x60);\n  local_38 = *(undefined4 *)(iVar1 + 0x2c);\n  local_34 = *(undefined4 *)(iVar1 + 0x30);\n  local_30 = *(undefined4 *)(iVar1 + 0x34);\n  local_2c = *(undefined4 *)(iVar1 + 0x38);\n  local_28 = *(undefined4 *)(iVar1 + 0x3c);\n  local_24 = *(undefined4 *)(iVar1 + 0x40);\n  local_20 = *(undefined4 *)(iVar1 + 0x44);\n  FUN_00254700(&local_64,param_2,param_3,param_4,param_5,param_6,local_5c,local_5c + 2,7,param_7,\n               local_5c + 1);\n  if (local_5c[0] == 0) {\n    bVar3 = local_64 == -1;\n    *(undefined4 *)(param_8 + 0x18) = local_60;\n    bVar2 = local_68 != (int *)0x0 && bVar3;\n    if (local_68 == (int *)0x0 || !bVar3) goto LAB_00254d05;\n  }\n  else {\n    *param_7 = *param_7 | 4;\n    bVar3 = local_64 == -1;\n    bVar2 = local_68 != (int *)0x0 && bVar3;\n    if (local_68 == (int *)0x0 || !bVar3) goto LAB_00254d05;\n  }\n  if ((int *)local_68[2] < (int *)local_68[3]) {\n    iVar1 = *(int *)local_68[2];\n  }\n  else {\n    iVar1 = (**(code **)(*local_68 + 0x24))(local_68);\n  }\n  bVar3 = false;\n  if (iVar1 == -1) {\n    local_68 = (int *)0x0;\n    bVar3 = bVar2;\n  }\nLAB_00254d05:\n  bVar2 = param_5 == -1;\n  if ((param_4 != (int *)0x0) && (bVar2)) {\n    if ((int *)param_4[2] < (int *)param_4[3]) {\n      iVar1 = *(int *)param_4[2];\n    }\n    else {\n      iVar1 = (**(code **)(*param_4 + 0x24))(param_4);\n    }\n    bVar2 = iVar1 == -1;\n  }\n  if (bVar3 == bVar2) {\n    *param_7 = *param_7 | 2;\n  }\n  *unaff_retaddr = local_68;\n  unaff_retaddr[1] = local_64;\n  return;\n}" (primitive_type "void") (function_declarator "FUN_00254c00(undefined4 param_1,undefined4 param_2,undefined4 param_3,int *param_4,int param_5,\n                 undefined4 param_6,uint *param_7,int param_8)" (identifier "FUN_00254c00") (parameter_list "(undefined4 param_1,undefined4 param_2,undefined4 param_3,int *param_4,int param_5,\n                 undefined4 param_6,uint *param_7,int param_8)" (( "(") (parameter_declaration "undefined4 param_1" (type_identifier "undefined4") (identifier "param_1")) (, ",") (parameter_declaration "undefined4 param_2" (type_identifier "undefined4") (identifier "param_2")) (, ",") (parameter_declaration "undefined4 param_3" (type_identifier "undefined4") (identifier "param_3")) (, ",") (parameter_declaration "int *param_4" (primitive_type "int") (pointer_declarator "*param_4" (* "*") (identifier "param_4"))) (, ",") (parameter_declaration "int param_5" (primitive_type "int") (identifier "param_5")) (, ",") (parameter_declaration "undefined4 param_6" (type_identifier "undefined4") (identifier "param_6")) (, ",") (parameter_declaration "uint *param_7" (type_identifier "uint") (pointer_declarator "*param_7" (* "*") (identifier "param_7"))) (, ",") (parameter_declaration "int param_8" (primitive_type "int") (identifier "param_8")) () ")"))) (compound_statement "{\n  int iVar1;\n  bool bVar2;\n  bool bVar3;\n  undefined4 *unaff_retaddr;\n  int *local_68;\n  int local_64;\n  undefined4 local_60;\n  int local_5c [3];\n  undefined4 local_50;\n  undefined4 local_4c;\n  undefined4 local_48;\n  undefined4 local_44;\n  undefined4 local_40;\n  undefined4 local_3c;\n  undefined4 local_38;\n  undefined4 local_34;\n  undefined4 local_30;\n  undefined4 local_2c;\n  undefined4 local_28;\n  undefined4 local_24;\n  undefined4 local_20;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x254c09;\n  iVar1 = FUN_0023db00(param_7 + 0x1b);\n  local_5c[1] = 0;\n  iVar1 = *(int *)(iVar1 + 8);\n  local_5c[2] = *(undefined4 *)(iVar1 + 0x48);\n  local_50 = *(undefined4 *)(iVar1 + 0x4c);\n  local_4c = *(undefined4 *)(iVar1 + 0x50);\n  local_48 = *(undefined4 *)(iVar1 + 0x54);\n  local_44 = *(undefined4 *)(iVar1 + 0x58);\n  local_40 = *(undefined4 *)(iVar1 + 0x5c);\n  local_3c = *(undefined4 *)(iVar1 + 0x60);\n  local_38 = *(undefined4 *)(iVar1 + 0x2c);\n  local_34 = *(undefined4 *)(iVar1 + 0x30);\n  local_30 = *(undefined4 *)(iVar1 + 0x34);\n  local_2c = *(undefined4 *)(iVar1 + 0x38);\n  local_28 = *(undefined4 *)(iVar1 + 0x3c);\n  local_24 = *(undefined4 *)(iVar1 + 0x40);\n  local_20 = *(undefined4 *)(iVar1 + 0x44);\n  FUN_00254700(&local_64,param_2,param_3,param_4,param_5,param_6,local_5c,local_5c + 2,7,param_7,\n               local_5c + 1);\n  if (local_5c[0] == 0) {\n    bVar3 = local_64 == -1;\n    *(undefined4 *)(param_8 + 0x18) = local_60;\n    bVar2 = local_68 != (int *)0x0 && bVar3;\n    if (local_68 == (int *)0x0 || !bVar3) goto LAB_00254d05;\n  }\n  else {\n    *param_7 = *param_7 | 4;\n    bVar3 = local_64 == -1;\n    bVar2 = local_68 != (int *)0x0 && bVar3;\n    if (local_68 == (int *)0x0 || !bVar3) goto LAB_00254d05;\n  }\n  if ((int *)local_68[2] < (int *)local_68[3]) {\n    iVar1 = *(int *)local_68[2];\n  }\n  else {\n    iVar1 = (**(code **)(*local_68 + 0x24))(local_68);\n  }\n  bVar3 = false;\n  if (iVar1 == -1) {\n    local_68 = (int *)0x0;\n    bVar3 = bVar2;\n  }\nLAB_00254d05:\n  bVar2 = param_5 == -1;\n  if ((param_4 != (int *)0x0) && (bVar2)) {\n    if ((int *)param_4[2] < (int *)param_4[3]) {\n      iVar1 = *(int *)param_4[2];\n    }\n    else {\n      iVar1 = (**(code **)(*param_4 + 0x24))(param_4);\n    }\n    bVar2 = iVar1 == -1;\n  }\n  if (bVar3 == bVar2) {\n    *param_7 = *param_7 | 2;\n  }\n  *unaff_retaddr = local_68;\n  unaff_retaddr[1] = local_64;\n  return;\n}" ({ "{") (declaration "int iVar1;" (primitive_type "int") (identifier "iVar1") (; ";")) (declaration "bool bVar2;" (primitive_type "bool") (identifier "bVar2") (; ";")) (declaration "bool bVar3;" (primitive_type "bool") (identifier "bVar3") (; ";")) (declaration "undefined4 *unaff_retaddr;" (type_identifier "undefined4") (pointer_declarator "*unaff_retaddr" (* "*") (identifier "unaff_retaddr")) (; ";")) (declaration "int *local_68;" (primitive_type "int") (pointer_declarator "*local_68" (* "*") (identifier "local_68")) (; ";")) (declaration "int local_64;" (primitive_type "int") (identifier "local_64") (; ";")) (declaration "undefined4 local_60;" (type_identifier "undefined4") (identifier "local_60") (; ";")) (declaration "int local_5c [3];" (primitive_type "int") (array_declarator "local_5c [3]" (identifier "local_5c") ([ "[") (number_literal "3") (] "]")) (; ";")) (declaration "undefined4 local_50;" (type_identifier "undefined4") (identifier "local_50") (; ";")) (declaration "undefined4 local_4c;" (type_identifier "undefined4") (identifier "local_4c") (; ";")) (declaration "undefined4 local_48;" (type_identifier "undefined4") (identifier "local_48") (; ";")) (declaration "undefined4 local_44;" (type_identifier "undefined4") (identifier "local_44") (; ";")) (declaration "undefined4 local_40;" (type_identifier "undefined4") (identifier "local_40") (; ";")) (declaration "undefined4 local_3c;" (type_identifier "undefined4") (identifier "local_3c") (; ";")) (declaration "undefined4 local_38;" (type_identifier "undefined4") (identifier "local_38") (; ";")) (declaration "undefined4 local_34;" (type_identifier "undefined4") (identifier "local_34") (; ";")) (declaration "undefined4 local_30;" (type_identifier "undefined4") (identifier "local_30") (; ";")) (declaration "undefined4 local_2c;" (type_identifier "undefined4") (identifier "local_2c") (; ";")) (declaration "undefined4 local_28;" (type_identifier "undefined4") (identifier "local_28") (; ";")) (declaration "undefined4 local_24;" (type_identifier "undefined4") (identifier "local_24") (; ";")) (declaration "undefined4 local_20;" (type_identifier "undefined4") (identifier "local_20") (; ";")) (declaration "undefined4 uStack_14;" (type_identifier "undefined4") (identifier "uStack_14") (; ";")) (expression_statement "uStack_14 = 0x254c09;" (assignment_expression "uStack_14 = 0x254c09" (identifier "uStack_14") (= "=") (number_literal "0x254c09")) (; ";")) (expression_statement "iVar1 = FUN_0023db00(param_7 + 0x1b);" (assignment_expression "iVar1 = FUN_0023db00(param_7 + 0x1b)" (identifier "iVar1") (= "=") (call_expression "FUN_0023db00(param_7 + 0x1b)" (identifier "FUN_0023db00") (argument_list "(param_7 + 0x1b)" (( "(") (binary_expression "param_7 + 0x1b" (identifier "param_7") (+ "+") (number_literal "0x1b")) () ")")))) (; ";")) (expression_statement "local_5c[1] = 0;" (assignment_expression "local_5c[1] = 0" (subscript_expression "local_5c[1]" (identifier "local_5c") ([ "[") (number_literal "1") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "iVar1 = *(int *)(iVar1 + 8);" (assignment_expression "iVar1 = *(int *)(iVar1 + 8)" (identifier "iVar1") (= "=") (pointer_expression "*(int *)(iVar1 + 8)" (* "*") (cast_expression "(int *)(iVar1 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar1 + 8)" (( "(") (binary_expression "iVar1 + 8" (identifier "iVar1") (+ "+") (number_literal "8")) () ")"))))) (; ";")) (expression_statement "local_5c[2] = *(undefined4 *)(iVar1 + 0x48);" (assignment_expression "local_5c[2] = *(undefined4 *)(iVar1 + 0x48)" (subscript_expression "local_5c[2]" (identifier "local_5c") ([ "[") (number_literal "2") (] "]")) (= "=") (pointer_expression "*(undefined4 *)(iVar1 + 0x48)" (* "*") (cast_expression "(undefined4 *)(iVar1 + 0x48)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar1 + 0x48)" (( "(") (binary_expression "iVar1 + 0x48" (identifier "iVar1") (+ "+") (number_literal "0x48")) () ")"))))) (; ";")) (expression_statement "local_50 = *(undefined4 *)(iVar1 + 0x4c);" (assignment_expression "local_50 = *(undefined4 *)(iVar1 + 0x4c)" (identifier "local_50") (= "=") (pointer_expression "*(undefined4 *)(iVar1 + 0x4c)" (* "*") (cast_expression "(undefined4 *)(iVar1 + 0x4c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar1 + 0x4c)" (( "(") (binary_expression "iVar1 + 0x4c" (identifier "iVar1") (+ "+") (number_literal "0x4c")) () ")"))))) (; ";")) (expression_statement "local_4c = *(undefined4 *)(iVar1 + 0x50);" (assignment_expression "local_4c = *(undefined4 *)(iVar1 + 0x50)" (identifier "local_4c") (= "=") (pointer_expression "*(undefined4 *)(iVar1 + 0x50)" (* "*") (cast_expression "(undefined4 *)(iVar1 + 0x50)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar1 + 0x50)" (( "(") (binary_expression "iVar1 + 0x50" (identifier "iVar1") (+ "+") (number_literal "0x50")) () ")"))))) (; ";")) (expression_statement "local_48 = *(undefined4 *)(iVar1 + 0x54);" (assignment_expression "local_48 = *(undefined4 *)(iVar1 + 0x54)" (identifier "local_48") (= "=") (pointer_expression "*(undefined4 *)(iVar1 + 0x54)" (* "*") (cast_expression "(undefined4 *)(iVar1 + 0x54)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar1 + 0x54)" (( "(") (binary_expression "iVar1 + 0x54" (identifier "iVar1") (+ "+") (number_literal "0x54")) () ")"))))) (; ";")) (expression_statement "local_44 = *(undefined4 *)(iVar1 + 0x58);" (assignment_expression "local_44 = *(undefined4 *)(iVar1 + 0x58)" (identifier "local_44") (= "=") (pointer_expression "*(undefined4 *)(iVar1 + 0x58)" (* "*") (cast_expression "(undefined4 *)(iVar1 + 0x58)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar1 + 0x58)" (( "(") (binary_expression "iVar1 + 0x58" (identifier "iVar1") (+ "+") (number_literal "0x58")) () ")"))))) (; ";")) (expression_statement "local_40 = *(undefined4 *)(iVar1 + 0x5c);" (assignment_expression "local_40 = *(undefined4 *)(iVar1 + 0x5c)" (identifier "local_40") (= "=") (pointer_expression "*(undefined4 *)(iVar1 + 0x5c)" (* "*") (cast_expression "(undefined4 *)(iVar1 + 0x5c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar1 + 0x5c)" (( "(") (binary_expression "iVar1 + 0x5c" (identifier "iVar1") (+ "+") (number_literal "0x5c")) () ")"))))) (; ";")) (expression_statement "local_3c = *(undefined4 *)(iVar1 + 0x60);" (assignment_expression "local_3c = *(undefined4 *)(iVar1 + 0x60)" (identifier "local_3c") (= "=") (pointer_expression "*(undefined4 *)(iVar1 + 0x60)" (* "*") (cast_expression "(undefined4 *)(iVar1 + 0x60)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar1 + 0x60)" (( "(") (binary_expression "iVar1 + 0x60" (identifier "iVar1") (+ "+") (number_literal "0x60")) () ")"))))) (; ";")) (expression_statement "local_38 = *(undefined4 *)(iVar1 + 0x2c);" (assignment_expression "local_38 = *(undefined4 *)(iVar1 + 0x2c)" (identifier "local_38") (= "=") (pointer_expression "*(undefined4 *)(iVar1 + 0x2c)" (* "*") (cast_expression "(undefined4 *)(iVar1 + 0x2c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar1 + 0x2c)" (( "(") (binary_expression "iVar1 + 0x2c" (identifier "iVar1") (+ "+") (number_literal "0x2c")) () ")"))))) (; ";")) (expression_statement "local_34 = *(undefined4 *)(iVar1 + 0x30);" (assignment_expression "local_34 = *(undefined4 *)(iVar1 + 0x30)" (identifier "local_34") (= "=") (pointer_expression "*(undefined4 *)(iVar1 + 0x30)" (* "*") (cast_expression "(undefined4 *)(iVar1 + 0x30)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar1 + 0x30)" (( "(") (binary_expression "iVar1 + 0x30" (identifier "iVar1") (+ "+") (number_literal "0x30")) () ")"))))) (; ";")) (expression_statement "local_30 = *(undefined4 *)(iVar1 + 0x34);" (assignment_expression "local_30 = *(undefined4 *)(iVar1 + 0x34)" (identifier "local_30") (= "=") (pointer_expression "*(undefined4 *)(iVar1 + 0x34)" (* "*") (cast_expression "(undefined4 *)(iVar1 + 0x34)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar1 + 0x34)" (( "(") (binary_expression "iVar1 + 0x34" (identifier "iVar1") (+ "+") (number_literal "0x34")) () ")"))))) (; ";")) (expression_statement "local_2c = *(undefined4 *)(iVar1 + 0x38);" (assignment_expression "local_2c = *(undefined4 *)(iVar1 + 0x38)" (identifier "local_2c") (= "=") (pointer_expression "*(undefined4 *)(iVar1 + 0x38)" (* "*") (cast_expression "(undefined4 *)(iVar1 + 0x38)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar1 + 0x38)" (( "(") (binary_expression "iVar1 + 0x38" (identifier "iVar1") (+ "+") (number_literal "0x38")) () ")"))))) (; ";")) (expression_statement "local_28 = *(undefined4 *)(iVar1 + 0x3c);" (assignment_expression "local_28 = *(undefined4 *)(iVar1 + 0x3c)" (identifier "local_28") (= "=") (pointer_expression "*(undefined4 *)(iVar1 + 0x3c)" (* "*") (cast_expression "(undefined4 *)(iVar1 + 0x3c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar1 + 0x3c)" (( "(") (binary_expression "iVar1 + 0x3c" (identifier "iVar1") (+ "+") (number_literal "0x3c")) () ")"))))) (; ";")) (expression_statement "local_24 = *(undefined4 *)(iVar1 + 0x40);" (assignment_expression "local_24 = *(undefined4 *)(iVar1 + 0x40)" (identifier "local_24") (= "=") (pointer_expression "*(undefined4 *)(iVar1 + 0x40)" (* "*") (cast_expression "(undefined4 *)(iVar1 + 0x40)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar1 + 0x40)" (( "(") (binary_expression "iVar1 + 0x40" (identifier "iVar1") (+ "+") (number_literal "0x40")) () ")"))))) (; ";")) (expression_statement "local_20 = *(undefined4 *)(iVar1 + 0x44);" (assignment_expression "local_20 = *(undefined4 *)(iVar1 + 0x44)" (identifier "local_20") (= "=") (pointer_expression "*(undefined4 *)(iVar1 + 0x44)" (* "*") (cast_expression "(undefined4 *)(iVar1 + 0x44)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar1 + 0x44)" (( "(") (binary_expression "iVar1 + 0x44" (identifier "iVar1") (+ "+") (number_literal "0x44")) () ")"))))) (; ";")) (expression_statement "FUN_00254700(&local_64,param_2,param_3,param_4,param_5,param_6,local_5c,local_5c + 2,7,param_7,\n               local_5c + 1);" (call_expression "FUN_00254700(&local_64,param_2,param_3,param_4,param_5,param_6,local_5c,local_5c + 2,7,param_7,\n               local_5c + 1)" (identifier "FUN_00254700") (argument_list "(&local_64,param_2,param_3,param_4,param_5,param_6,local_5c,local_5c + 2,7,param_7,\n               local_5c + 1)" (( "(") (pointer_expression "&local_64" (& "&") (identifier "local_64")) (, ",") (identifier "param_2") (, ",") (identifier "param_3") (, ",") (identifier "param_4") (, ",") (identifier "param_5") (, ",") (identifier "param_6") (, ",") (identifier "local_5c") (, ",") (binary_expression "local_5c + 2" (identifier "local_5c") (+ "+") (number_literal "2")) (, ",") (number_literal "7") (, ",") (identifier "param_7") (, ",") (binary_expression "local_5c + 1" (identifier "local_5c") (+ "+") (number_literal "1")) () ")"))) (; ";")) (if_statement "if (local_5c[0] == 0) {\n    bVar3 = local_64 == -1;\n    *(undefined4 *)(param_8 + 0x18) = local_60;\n    bVar2 = local_68 != (int *)0x0 && bVar3;\n    if (local_68 == (int *)0x0 || !bVar3) goto LAB_00254d05;\n  }\n  else {\n    *param_7 = *param_7 | 4;\n    bVar3 = local_64 == -1;\n    bVar2 = local_68 != (int *)0x0 && bVar3;\n    if (local_68 == (int *)0x0 || !bVar3) goto LAB_00254d05;\n  }" (if "if") (parenthesized_expression "(local_5c[0] == 0)" (( "(") (binary_expression "local_5c[0] == 0" (subscript_expression "local_5c[0]" (identifier "local_5c") ([ "[") (number_literal "0") (] "]")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    bVar3 = local_64 == -1;\n    *(undefined4 *)(param_8 + 0x18) = local_60;\n    bVar2 = local_68 != (int *)0x0 && bVar3;\n    if (local_68 == (int *)0x0 || !bVar3) goto LAB_00254d05;\n  }" ({ "{") (expression_statement "bVar3 = local_64 == -1;" (assignment_expression "bVar3 = local_64 == -1" (identifier "bVar3") (= "=") (binary_expression "local_64 == -1" (identifier "local_64") (== "==") (number_literal "-1"))) (; ";")) (expression_statement "*(undefined4 *)(param_8 + 0x18) = local_60;" (assignment_expression "*(undefined4 *)(param_8 + 0x18) = local_60" (pointer_expression "*(undefined4 *)(param_8 + 0x18)" (* "*") (cast_expression "(undefined4 *)(param_8 + 0x18)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_8 + 0x18)" (( "(") (binary_expression "param_8 + 0x18" (identifier "param_8") (+ "+") (number_literal "0x18")) () ")")))) (= "=") (identifier "local_60")) (; ";")) (expression_statement "bVar2 = local_68 != (int *)0x0 && bVar3;" (assignment_expression "bVar2 = local_68 != (int *)0x0 && bVar3" (identifier "bVar2") (= "=") (binary_expression "local_68 != (int *)0x0 && bVar3" (binary_expression "local_68 != (int *)0x0" (identifier "local_68") (!= "!=") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (&& "&&") (identifier "bVar3"))) (; ";")) (if_statement "if (local_68 == (int *)0x0 || !bVar3) goto LAB_00254d05;" (if "if") (parenthesized_expression "(local_68 == (int *)0x0 || !bVar3)" (( "(") (binary_expression "local_68 == (int *)0x0 || !bVar3" (binary_expression "local_68 == (int *)0x0" (identifier "local_68") (== "==") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (|| "||") (unary_expression "!bVar3" (! "!") (identifier "bVar3"))) () ")")) (goto_statement "goto LAB_00254d05;" (goto "goto") (statement_identifier "LAB_00254d05") (; ";"))) (} "}")) (else_clause "else {\n    *param_7 = *param_7 | 4;\n    bVar3 = local_64 == -1;\n    bVar2 = local_68 != (int *)0x0 && bVar3;\n    if (local_68 == (int *)0x0 || !bVar3) goto LAB_00254d05;\n  }" (else "else") (compound_statement "{\n    *param_7 = *param_7 | 4;\n    bVar3 = local_64 == -1;\n    bVar2 = local_68 != (int *)0x0 && bVar3;\n    if (local_68 == (int *)0x0 || !bVar3) goto LAB_00254d05;\n  }" ({ "{") (expression_statement "*param_7 = *param_7 | 4;" (assignment_expression "*param_7 = *param_7 | 4" (pointer_expression "*param_7" (* "*") (identifier "param_7")) (= "=") (binary_expression "*param_7 | 4" (pointer_expression "*param_7" (* "*") (identifier "param_7")) (| "|") (number_literal "4"))) (; ";")) (expression_statement "bVar3 = local_64 == -1;" (assignment_expression "bVar3 = local_64 == -1" (identifier "bVar3") (= "=") (binary_expression "local_64 == -1" (identifier "local_64") (== "==") (number_literal "-1"))) (; ";")) (expression_statement "bVar2 = local_68 != (int *)0x0 && bVar3;" (assignment_expression "bVar2 = local_68 != (int *)0x0 && bVar3" (identifier "bVar2") (= "=") (binary_expression "local_68 != (int *)0x0 && bVar3" (binary_expression "local_68 != (int *)0x0" (identifier "local_68") (!= "!=") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (&& "&&") (identifier "bVar3"))) (; ";")) (if_statement "if (local_68 == (int *)0x0 || !bVar3) goto LAB_00254d05;" (if "if") (parenthesized_expression "(local_68 == (int *)0x0 || !bVar3)" (( "(") (binary_expression "local_68 == (int *)0x0 || !bVar3" (binary_expression "local_68 == (int *)0x0" (identifier "local_68") (== "==") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (|| "||") (unary_expression "!bVar3" (! "!") (identifier "bVar3"))) () ")")) (goto_statement "goto LAB_00254d05;" (goto "goto") (statement_identifier "LAB_00254d05") (; ";"))) (} "}")))) (if_statement "if ((int *)local_68[2] < (int *)local_68[3]) {\n    iVar1 = *(int *)local_68[2];\n  }\n  else {\n    iVar1 = (**(code **)(*local_68 + 0x24))(local_68);\n  }" (if "if") (parenthesized_expression "((int *)local_68[2] < (int *)local_68[3])" (( "(") (binary_expression "(int *)local_68[2] < (int *)local_68[3]" (cast_expression "(int *)local_68[2]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "local_68[2]" (identifier "local_68") ([ "[") (number_literal "2") (] "]"))) (< "<") (cast_expression "(int *)local_68[3]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "local_68[3]" (identifier "local_68") ([ "[") (number_literal "3") (] "]")))) () ")")) (compound_statement "{\n    iVar1 = *(int *)local_68[2];\n  }" ({ "{") (expression_statement "iVar1 = *(int *)local_68[2];" (assignment_expression "iVar1 = *(int *)local_68[2]" (identifier "iVar1") (= "=") (pointer_expression "*(int *)local_68[2]" (* "*") (cast_expression "(int *)local_68[2]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "local_68[2]" (identifier "local_68") ([ "[") (number_literal "2") (] "]"))))) (; ";")) (} "}")) (else_clause "else {\n    iVar1 = (**(code **)(*local_68 + 0x24))(local_68);\n  }" (else "else") (compound_statement "{\n    iVar1 = (**(code **)(*local_68 + 0x24))(local_68);\n  }" ({ "{") (expression_statement "iVar1 = (**(code **)(*local_68 + 0x24))(local_68);" (assignment_expression "iVar1 = (**(code **)(*local_68 + 0x24))(local_68)" (identifier "iVar1") (= "=") (call_expression "(**(code **)(*local_68 + 0x24))(local_68)" (parenthesized_expression "(**(code **)(*local_68 + 0x24))" (( "(") (pointer_expression "**(code **)(*local_68 + 0x24)" (* "*") (pointer_expression "*(code **)(*local_68 + 0x24)" (* "*") (cast_expression "(code **)(*local_68 + 0x24)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*local_68 + 0x24)" (( "(") (binary_expression "*local_68 + 0x24" (pointer_expression "*local_68" (* "*") (identifier "local_68")) (+ "+") (number_literal "0x24")) () ")"))))) () ")")) (argument_list "(local_68)" (( "(") (identifier "local_68") () ")")))) (; ";")) (} "}")))) (expression_statement "bVar3 = false;" (assignment_expression "bVar3 = false" (identifier "bVar3") (= "=") (false "false")) (; ";")) (if_statement "if (iVar1 == -1) {\n    local_68 = (int *)0x0;\n    bVar3 = bVar2;\n  }" (if "if") (parenthesized_expression "(iVar1 == -1)" (( "(") (binary_expression "iVar1 == -1" (identifier "iVar1") (== "==") (number_literal "-1")) () ")")) (compound_statement "{\n    local_68 = (int *)0x0;\n    bVar3 = bVar2;\n  }" ({ "{") (expression_statement "local_68 = (int *)0x0;" (assignment_expression "local_68 = (int *)0x0" (identifier "local_68") (= "=") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (expression_statement "bVar3 = bVar2;" (assignment_expression "bVar3 = bVar2" (identifier "bVar3") (= "=") (identifier "bVar2")) (; ";")) (} "}"))) (labeled_statement "LAB_00254d05:\n  bVar2 = param_5 == -1;" (statement_identifier "LAB_00254d05") (: ":") (expression_statement "bVar2 = param_5 == -1;" (assignment_expression "bVar2 = param_5 == -1" (identifier "bVar2") (= "=") (binary_expression "param_5 == -1" (identifier "param_5") (== "==") (number_literal "-1"))) (; ";"))) (if_statement "if ((param_4 != (int *)0x0) && (bVar2)) {\n    if ((int *)param_4[2] < (int *)param_4[3]) {\n      iVar1 = *(int *)param_4[2];\n    }\n    else {\n      iVar1 = (**(code **)(*param_4 + 0x24))(param_4);\n    }\n    bVar2 = iVar1 == -1;\n  }" (if "if") (parenthesized_expression "((param_4 != (int *)0x0) && (bVar2))" (( "(") (binary_expression "(param_4 != (int *)0x0) && (bVar2)" (parenthesized_expression "(param_4 != (int *)0x0)" (( "(") (binary_expression "param_4 != (int *)0x0" (identifier "param_4") (!= "!=") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (&& "&&") (parenthesized_expression "(bVar2)" (( "(") (identifier "bVar2") () ")"))) () ")")) (compound_statement "{\n    if ((int *)param_4[2] < (int *)param_4[3]) {\n      iVar1 = *(int *)param_4[2];\n    }\n    else {\n      iVar1 = (**(code **)(*param_4 + 0x24))(param_4);\n    }\n    bVar2 = iVar1 == -1;\n  }" ({ "{") (if_statement "if ((int *)param_4[2] < (int *)param_4[3]) {\n      iVar1 = *(int *)param_4[2];\n    }\n    else {\n      iVar1 = (**(code **)(*param_4 + 0x24))(param_4);\n    }" (if "if") (parenthesized_expression "((int *)param_4[2] < (int *)param_4[3])" (( "(") (binary_expression "(int *)param_4[2] < (int *)param_4[3]" (cast_expression "(int *)param_4[2]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_4[2]" (identifier "param_4") ([ "[") (number_literal "2") (] "]"))) (< "<") (cast_expression "(int *)param_4[3]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_4[3]" (identifier "param_4") ([ "[") (number_literal "3") (] "]")))) () ")")) (compound_statement "{\n      iVar1 = *(int *)param_4[2];\n    }" ({ "{") (expression_statement "iVar1 = *(int *)param_4[2];" (assignment_expression "iVar1 = *(int *)param_4[2]" (identifier "iVar1") (= "=") (pointer_expression "*(int *)param_4[2]" (* "*") (cast_expression "(int *)param_4[2]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_4[2]" (identifier "param_4") ([ "[") (number_literal "2") (] "]"))))) (; ";")) (} "}")) (else_clause "else {\n      iVar1 = (**(code **)(*param_4 + 0x24))(param_4);\n    }" (else "else") (compound_statement "{\n      iVar1 = (**(code **)(*param_4 + 0x24))(param_4);\n    }" ({ "{") (expression_statement "iVar1 = (**(code **)(*param_4 + 0x24))(param_4);" (assignment_expression "iVar1 = (**(code **)(*param_4 + 0x24))(param_4)" (identifier "iVar1") (= "=") (call_expression "(**(code **)(*param_4 + 0x24))(param_4)" (parenthesized_expression "(**(code **)(*param_4 + 0x24))" (( "(") (pointer_expression "**(code **)(*param_4 + 0x24)" (* "*") (pointer_expression "*(code **)(*param_4 + 0x24)" (* "*") (cast_expression "(code **)(*param_4 + 0x24)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*param_4 + 0x24)" (( "(") (binary_expression "*param_4 + 0x24" (pointer_expression "*param_4" (* "*") (identifier "param_4")) (+ "+") (number_literal "0x24")) () ")"))))) () ")")) (argument_list "(param_4)" (( "(") (identifier "param_4") () ")")))) (; ";")) (} "}")))) (expression_statement "bVar2 = iVar1 == -1;" (assignment_expression "bVar2 = iVar1 == -1" (identifier "bVar2") (= "=") (binary_expression "iVar1 == -1" (identifier "iVar1") (== "==") (number_literal "-1"))) (; ";")) (} "}"))) (if_statement "if (bVar3 == bVar2) {\n    *param_7 = *param_7 | 2;\n  }" (if "if") (parenthesized_expression "(bVar3 == bVar2)" (( "(") (binary_expression "bVar3 == bVar2" (identifier "bVar3") (== "==") (identifier "bVar2")) () ")")) (compound_statement "{\n    *param_7 = *param_7 | 2;\n  }" ({ "{") (expression_statement "*param_7 = *param_7 | 2;" (assignment_expression "*param_7 = *param_7 | 2" (pointer_expression "*param_7" (* "*") (identifier "param_7")) (= "=") (binary_expression "*param_7 | 2" (pointer_expression "*param_7" (* "*") (identifier "param_7")) (| "|") (number_literal "2"))) (; ";")) (} "}"))) (expression_statement "*unaff_retaddr = local_68;" (assignment_expression "*unaff_retaddr = local_68" (pointer_expression "*unaff_retaddr" (* "*") (identifier "unaff_retaddr")) (= "=") (identifier "local_68")) (; ";")) (expression_statement "unaff_retaddr[1] = local_64;" (assignment_expression "unaff_retaddr[1] = local_64" (subscript_expression "unaff_retaddr[1]" (identifier "unaff_retaddr") ([ "[") (number_literal "1") (] "]")) (= "=") (identifier "local_64")) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}")))

/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */
/* std::time_get<wchar_t, std::istreambuf_iterator<wchar_t, std::char_traits<wchar_t> >
   >::do_get_weekday(std::istreambuf_iterator<wchar_t, std::char_traits<wchar_t> >,
   std::istreambuf_iterator<wchar_t, std::char_traits<wchar_t> >, std::ios_base&,
   std::_Ios_Iostate&, tm*) const */

void var_2::time_get<var_3,var_2::istreambuf_iterator<var_3,var_2::char_traits<var_3>>>::
     do_get_weekday(type_1 *param_1,type_1 param_2,type_1 param_3,type_1 param_4,
                   int *var_14,int var_13,int var_4,uint *param_8,int var_10)

{
  __timepunct *var_5;
  int var_6;
  bool var_15;
  int *piVar4;
  bool var_12;
  int *var_11;
  int var_9;
  type_1 local_5c;
  int var_8;
  type_1 local_54;
  type_1 local_50;
  type_1 local_4c;
  type_1 local_48;
  type_1 local_44;
  type_1 local_40;
  type_1 local_3c;
  type_1 local_38;
  type_1 local_34;
  type_1 local_30;
  type_1 local_2c;
  type_1 local_28;
  type_1 local_24;
  type_1 local_20;
  type_1 uStack_14;
  
  uStack_14 = 0x254c09;
  var_5 = var_1<var_2::__timepunct<var_3>>((type_2 *)(var_4 + 0x6c));
  var_8 = 0;
  var_6 = *(int *)(var_5 + 8);
  local_54 = *(type_1 *)(var_6 + 0x48);
  local_50 = *(type_1 *)(var_6 + 0x4c);
  local_4c = *(type_1 *)(var_6 + 0x50);
  local_48 = *(type_1 *)(var_6 + 0x54);
  local_44 = *(type_1 *)(var_6 + 0x58);
  local_40 = *(type_1 *)(var_6 + 0x5c);
  local_3c = *(type_1 *)(var_6 + 0x60);
  local_38 = *(type_1 *)(var_6 + 0x2c);
  local_34 = *(type_1 *)(var_6 + 0x30);
  local_30 = *(type_1 *)(var_6 + 0x34);
  local_2c = *(type_1 *)(var_6 + 0x38);
  local_28 = *(type_1 *)(var_6 + 0x3c);
  local_24 = *(type_1 *)(var_6 + 0x40);
  local_20 = *(type_1 *)(var_6 + 0x44);
  var_7
            (&var_11,param_2,param_3,param_4,var_14,var_13,&local_5c,&local_54,7,var_4,
             &var_8);
  piVar4 = var_11;
  if (var_8 == 0) {
    var_12 = var_9 == -1;
    *(type_1 *)(var_10 + 0x18) = local_5c;
    var_15 = var_11 != (int *)0x0 && var_12;
    if (var_11 == (int *)0x0 || !var_12) goto LAB_00254d05;
  }
  else {
    *param_8 = *param_8 | 4;
    var_12 = var_9 == -1;
    var_15 = var_11 != (int *)0x0 && var_12;
    if (var_11 == (int *)0x0 || !var_12) goto LAB_00254d05;
  }
  if ((int *)var_11[2] < (int *)var_11[3]) {
    var_6 = *(int *)var_11[2];
  }
  else {
    var_6 = (**(type_3 **)(*var_11 + 0x24))(var_11);
  }
  var_12 = false;
  if (var_6 == -1) {
    piVar4 = (int *)0x0;
    var_12 = var_15;
  }
LAB_00254d05:
  var_15 = var_13 == -1;
  if ((var_14 != (int *)0x0) && (var_15)) {
    if ((int *)var_14[2] < (int *)var_14[3]) {
      var_6 = *(int *)var_14[2];
    }
    else {
      var_6 = (**(type_3 **)(*var_14 + 0x24))(var_14);
    }
    var_15 = var_6 == -1;
  }
  if (var_12 == var_15) {
    *param_8 = *param_8 | 2;
  }
  *param_1 = piVar4;
  param_1[1] = var_9;
  return;
}


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

/* WARNING: Function: __i686.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */
/* WARNING: Type propagation algorithm not settling */

void MASKED(undefined4 param_1,undefined4 param_2,undefined4 param_3,int *param_4,int param_5,
                 undefined4 param_6,uint *param_7,int param_8)

{
  int iVar1;
  bool bVar2;
  bool bVar3;
  undefined4 *unaff_retaddr;
  int *local_68;
  int local_64;
  undefined4 local_60;
  int local_5c [3];
  undefined4 local_50;
  undefined4 local_4c;
  undefined4 local_48;
  undefined4 local_44;
  undefined4 local_40;
  undefined4 local_3c;
  undefined4 local_38;
  undefined4 local_34;
  undefined4 local_30;
  undefined4 local_2c;
  undefined4 local_28;
  undefined4 local_24;
  undefined4 local_20;
  undefined4 uStack_14;
  
  uStack_14 = 0x254c09;
  iVar1 = FUN_0023db00(param_7 + 0x1b);
  local_5c[1] = 0;
  iVar1 = *(int *)(iVar1 + 8);
  local_5c[2] = *(undefined4 *)(iVar1 + 0x48);
  local_50 = *(undefined4 *)(iVar1 + 0x4c);
  local_4c = *(undefined4 *)(iVar1 + 0x50);
  local_48 = *(undefined4 *)(iVar1 + 0x54);
  local_44 = *(undefined4 *)(iVar1 + 0x58);
  local_40 = *(undefined4 *)(iVar1 + 0x5c);
  local_3c = *(undefined4 *)(iVar1 + 0x60);
  local_38 = *(undefined4 *)(iVar1 + 0x2c);
  local_34 = *(undefined4 *)(iVar1 + 0x30);
  local_30 = *(undefined4 *)(iVar1 + 0x34);
  local_2c = *(undefined4 *)(iVar1 + 0x38);
  local_28 = *(undefined4 *)(iVar1 + 0x3c);
  local_24 = *(undefined4 *)(iVar1 + 0x40);
  local_20 = *(undefined4 *)(iVar1 + 0x44);
  FUN_00254700(&local_64,param_2,param_3,param_4,param_5,param_6,local_5c,local_5c + 2,7,param_7,
               local_5c + 1);
  if (local_5c[0] == 0) {
    bVar3 = local_64 == -1;
    *(undefined4 *)(param_8 + 0x18) = local_60;
    bVar2 = local_68 != (int *)0x0 && bVar3;
    if (local_68 == (int *)0x0 || !bVar3) goto LAB_00254d05;
  }
  else {
    *param_7 = *param_7 | 4;
    bVar3 = local_64 == -1;
    bVar2 = local_68 != (int *)0x0 && bVar3;
    if (local_68 == (int *)0x0 || !bVar3) goto LAB_00254d05;
  }
  if ((int *)local_68[2] < (int *)local_68[3]) {
    iVar1 = *(int *)local_68[2];
  }
  else {
    iVar1 = (**(code **)(*local_68 + 0x24))(local_68);
  }
  bVar3 = false;
  if (iVar1 == -1) {
    local_68 = (int *)0x0;
    bVar3 = bVar2;
  }
LAB_00254d05:
  bVar2 = param_5 == -1;
  if ((param_4 != (int *)0x0) && (bVar2)) {
    if ((int *)param_4[2] < (int *)param_4[3]) {
      iVar1 = *(int *)param_4[2];
    }
    else {
      iVar1 = (**(code **)(*param_4 + 0x24))(param_4);
    }
    bVar2 = iVar1 == -1;
  }
  if (bVar3 == bVar2) {
    *param_7 = *param_7 | 2;
  }
  *unaff_retaddr = local_68;
  unaff_retaddr[1] = local_64;
  return;
}

