
/* std::time_get<char, std::istreambuf_iterator<char, std::char_traits<char> >
   >::get(std::istreambuf_iterator<char, std::char_traits<char> >, std::istreambuf_iterator<char,
   std::char_traits<char> >, std::ios_base&, std::_Ios_Iostate&, tm*, char, char) const */

undefined4 *
std::time_get<char,std::istreambuf_iterator<char,std::char_traits<char>>>::get
          (undefined4 *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,int *param_5
          ,int param_6,int param_7,uint *param_8,undefined4 param_9,char param_10,char param_11)

{
  ctype *pcVar1;
  int iVar2;
  bool bVar3;
  bool bVar4;
  ctype local_40;
  char local_3f;
  char local_3e;
  undefined1 local_3d;
  int *local_38;
  int local_34;
  ctype *local_30;
  
  pcVar1 = use_facet<std::ctype<char>>((locale *)(param_7 + 0x6c));
  *param_8 = 0;
  if (pcVar1[0x1c] == (ctype)0x0) {
    local_30 = pcVar1;
    (*(code *)PTR__M_widen_init_004c22c0)(pcVar1);
    if (*(code **)(*(int *)local_30 + 0x18) == (code *)PTR_do_widen_004c22d4) {
      local_40 = (ctype)0x25;
    }
    else {
      local_40 = (ctype)(**(code **)(*(int *)local_30 + 0x18))(local_30,0x25);
    }
  }
  else {
    local_40 = pcVar1[0x42];
  }
  if (param_11 == '\0') {
    local_3e = '\0';
    local_3f = param_10;
  }
  else {
    local_3f = param_11;
    local_3e = param_10;
    local_3d = 0;
  }
  _M_extract_via_format
            (&local_38,param_2,param_3,param_4,param_5,param_6,param_7,param_8,param_9,&local_40);
  if (local_38 == (int *)0x0) {
    bVar4 = local_34 == -1;
  }
  else if (local_34 == -1) {
    bVar4 = false;
    if ((uint)local_38[3] <= (uint)local_38[2]) {
      iVar2 = (**(code **)(*local_38 + 0x24))(local_38);
      bVar4 = iVar2 == -1;
      if (iVar2 == -1) {
        local_38 = (int *)0x0;
      }
    }
  }
  else {
    bVar4 = false;
  }
  if (param_5 == (int *)0x0) {
    bVar3 = param_6 == -1;
  }
  else if (param_6 == -1) {
    bVar3 = false;
    if ((uint)param_5[3] <= (uint)param_5[2]) {
      iVar2 = (**(code **)(*param_5 + 0x24))(param_5);
      bVar3 = iVar2 == -1;
    }
  }
  else {
    bVar3 = false;
  }
  if (bVar4 == bVar3) {
    *param_8 = *param_8 | 2;
  }
  *param_1 = local_38;
  param_1[1] = local_34;
  return param_1;
}



undefined4 *
FUN_00352f04(undefined4 *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,
            int *param_5,int param_6,int param_7,uint *param_8,undefined4 param_9,char param_10,
            char param_11)

{
  ctype *pcVar1;
  int iVar2;
  bool bVar3;
  bool bVar4;
  ctype local_40;
  char local_3f;
  char local_3e;
  undefined1 local_3d;
  int *local_38;
  int local_34;
  ctype *local_30;
  
  pcVar1 = std::use_facet<std::ctype<char>>((locale *)(param_7 + 0x6c));
  *param_8 = 0;
  if (pcVar1[0x1c] == (ctype)0x0) {
    local_30 = pcVar1;
    (*(code *)PTR__M_widen_init_004c22c0)(pcVar1);
    if (*(code **)(*(int *)local_30 + 0x18) == (code *)PTR_do_widen_004c22d4) {
      local_40 = (ctype)0x25;
    }
    else {
      local_40 = (ctype)(**(code **)(*(int *)local_30 + 0x18))(local_30,0x25);
    }
  }
  else {
    local_40 = pcVar1[0x42];
  }
  if (param_11 == '\0') {
    local_3e = '\0';
    local_3f = param_10;
  }
  else {
    local_3f = param_11;
    local_3e = param_10;
    local_3d = 0;
  }
  std::time_get<char,std::istreambuf_iterator<char,std::char_traits<char>>>::_M_extract_via_format
            (&local_38,param_2,param_3,param_4,param_5,param_6,param_7,param_8,param_9,&local_40);
  if (local_38 == (int *)0x0) {
    bVar4 = local_34 == -1;
  }
  else if (local_34 == -1) {
    bVar4 = false;
    if ((uint)local_38[3] <= (uint)local_38[2]) {
      iVar2 = (**(code **)(*local_38 + 0x24))(local_38);
      bVar4 = iVar2 == -1;
      if (iVar2 == -1) {
        local_38 = (int *)0x0;
      }
    }
  }
  else {
    bVar4 = false;
  }
  if (param_5 == (int *)0x0) {
    bVar3 = param_6 == -1;
  }
  else if (param_6 == -1) {
    bVar3 = false;
    if ((uint)param_5[3] <= (uint)param_5[2]) {
      iVar2 = (**(code **)(*param_5 + 0x24))(param_5);
      bVar3 = iVar2 == -1;
    }
  }
  else {
    bVar3 = false;
  }
  if (bVar4 == bVar3) {
    *param_8 = *param_8 | 2;
  }
  *param_1 = local_38;
  param_1[1] = local_34;
  return param_1;
}


lui gp,0x17
addiu gp,gp,0x633c
addu gp,gp,t9
addiu sp,sp,-0x80
lw t9,-0x65bc(gp)
sw s2,0x64(sp)
sw s5,0x70(sp)
sw s3,0x68(sp)
sw s0,0x5c(sp)
sw s1,0x60(sp)
or s1,a0,zero
sw gp,0x28(sp)
sw s7,0x78(sp)
sw s6,0x74(sp)
or s6,a1,zero
sw s4,0x6c(sp)
sw ra,0x7c(sp)
sw a2,0x88(sp)
sw a3,0x8c(sp)
sw a2,0x38(sp)
sw a3,0x3c(sp)
lw s2,0x98(sp)
lw s5,0x90(sp)
lw s0,0x94(sp)
lw s3,0x9c(sp)
addiu a0,s2,0x6c
lb s7,0xa7(sp)
lb s4,0xab(sp)
sw s5,0x30(sp)
bal 0x0034b25c
_sw s0,0x34(sp)
lw gp,0x28(sp)
sw zero,0x0(s3)
lb v1,0x1c(v0)
beq v1,zero,0x00353080
_lw t9,-0x6f80(gp)
lb v0,0x42(v0)
beq s4,zero,0x00353074
_sb v0,0x40(sp)
sb s4,0x41(sp)
sb s7,0x42(sp)
sb zero,0x43(sp)
addiu v0,sp,0x40
lw t9,-0x649c(gp)
lw a2,0x38(sp)
addiu a0,sp,0x48
sw v0,0x24(sp)
or a1,s6,zero
lw v0,0xa0(sp)
lw a3,0x3c(sp)
sw s2,0x18(sp)
sw v0,0x20(sp)
lw v0,0x30(sp)
sw s3,0x1c(sp)
sw v0,0x10(sp)
lw v0,0x34(sp)
bal 0x00352140
_sw v0,0x14(sp)
lw v0,0x48(sp)
lw s2,0x4c(sp)
or s4,v0,zero
sw v0,0x38(sp)
beq v0,zero,0x003530bc
_sw s2,0x3c(sp)
li v0,-0x1
beq s2,v0,0x003530f8
_nop
or s6,zero,zero
beq s5,zero,0x003530b0
_li v0,-0x1
beq s0,v0,0x003530c8
_nop
or s0,zero,zero
bne s6,s0,0x00353040
_lw ra,0x7c(sp)
lw v0,0x0(s3)
ori v0,v0,0x2
sw v0,0x0(s3)
lw ra,0x7c(sp)
or v0,s1,zero
lw s7,0x78(sp)
lw s6,0x74(sp)
lw s5,0x70(sp)
lw s3,0x68(sp)
lw s0,0x5c(sp)
sw s4,0x0(s1)
sw s2,0x4(s1)
lw s4,0x6c(sp)
lw s2,0x64(sp)
lw s1,0x60(sp)
jr ra
_addiu sp,sp,0x80
sb s7,0x41(sp)
b 0x00352fac
_sb zero,0x42(sp)
or a0,v0,zero
jalr t9
_sw v0,0x50(sp)
lw v0,0x50(sp)
lw gp,0x28(sp)
lw a0,0x0(v0)
lw v1,-0x6f6c(gp)
lw t9,0x18(a0)
bne t9,v1,0x0035312c
_li a1,0x25
b 0x00352f98
_li v0,0x25
addiu s0,s0,0x1
b 0x00353028
_sltiu s0,s0,0x1
addiu s6,s2,0x1
b 0x00353014
_sltiu s6,s6,0x1
lw v0,0x8(s5)
lw v1,0xc(s5)
sltu v0,v0,v1
bne v0,zero,0x00353028
_or s0,zero,zero
lw v0,0x0(s5)
lw t9,0x24(v0)
jalr t9
_or a0,s5,zero
addiu v0,v0,0x1
b 0x00353028
_sltiu s0,v0,0x1
lw v0,0x8(s4)
lw v1,0xc(s4)
sltu v0,v0,v1
bne v0,zero,0x00353014
_or s6,zero,zero
lw v0,0x0(s4)
lw t9,0x24(v0)
jalr t9
_or a0,s4,zero
nor v0,zero,v0
sltiu s6,v0,0x1
b 0x00353014
_movz s4,zero,v0
jalr t9
_or a0,v0,zero
b 0x00352f98
_lw gp,0x28(sp)
(translation_unit "undefined4 *\nFUN_00352f04(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,undefined4 param_9,char param_10,\n            char param_11)\n\n{\n  ctype *pcVar1;\n  int iVar2;\n  bool bVar3;\n  bool bVar4;\n  ctype local_40;\n  char local_3f;\n  char local_3e;\n  undefined1 local_3d;\n  int *local_38;\n  int local_34;\n  ctype *local_30;\n  \n  pcVar1 = std::use_facet<std::ctype<char>>((locale *)(param_7 + 0x6c));\n  *param_8 = 0;\n  if (pcVar1[0x1c] == (ctype)0x0) {\n    local_30 = pcVar1;\n    (*(code *)PTR__M_widen_init_004c22c0)(pcVar1);\n    if (*(code **)(*(int *)local_30 + 0x18) == (code *)PTR_do_widen_004c22d4) {\n      local_40 = (ctype)0x25;\n    }\n    else {\n      local_40 = (ctype)(**(code **)(*(int *)local_30 + 0x18))(local_30,0x25);\n    }\n  }\n  else {\n    local_40 = pcVar1[0x42];\n  }\n  if (param_11 == '\0') {\n    local_3e = '\0';\n    local_3f = param_10;\n  }\n  else {\n    local_3f = param_11;\n    local_3e = param_10;\n    local_3d = 0;\n  }\n  std::time_get<char,std::istreambuf_iterator<char,std::char_traits<char>>>::_M_extract_via_format\n            (&local_38,param_2,param_3,param_4,param_5,param_6,param_7,param_8,param_9,&local_40);\n  if (local_38 == (int *)0x0) {\n    bVar4 = local_34 == -1;\n  }\n  else if (local_34 == -1) {\n    bVar4 = false;\n    if ((uint)local_38[3] <= (uint)local_38[2]) {\n      iVar2 = (**(code **)(*local_38 + 0x24))(local_38);\n      bVar4 = iVar2 == -1;\n      if (iVar2 == -1) {\n        local_38 = (int *)0x0;\n      }\n    }\n  }\n  else {\n    bVar4 = false;\n  }\n  if (param_5 == (int *)0x0) {\n    bVar3 = param_6 == -1;\n  }\n  else if (param_6 == -1) {\n    bVar3 = false;\n    if ((uint)param_5[3] <= (uint)param_5[2]) {\n      iVar2 = (**(code **)(*param_5 + 0x24))(param_5);\n      bVar3 = iVar2 == -1;\n    }\n  }\n  else {\n    bVar3 = false;\n  }\n  if (bVar4 == bVar3) {\n    *param_8 = *param_8 | 2;\n  }\n  *param_1 = local_38;\n  param_1[1] = local_34;\n  return param_1;\n}\n\n" (function_definition "undefined4 *\nFUN_00352f04(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,undefined4 param_9,char param_10,\n            char param_11)\n\n{\n  ctype *pcVar1;\n  int iVar2;\n  bool bVar3;\n  bool bVar4;\n  ctype local_40;\n  char local_3f;\n  char local_3e;\n  undefined1 local_3d;\n  int *local_38;\n  int local_34;\n  ctype *local_30;\n  \n  pcVar1 = std::use_facet<std::ctype<char>>((locale *)(param_7 + 0x6c));\n  *param_8 = 0;\n  if (pcVar1[0x1c] == (ctype)0x0) {\n    local_30 = pcVar1;\n    (*(code *)PTR__M_widen_init_004c22c0)(pcVar1);\n    if (*(code **)(*(int *)local_30 + 0x18) == (code *)PTR_do_widen_004c22d4) {\n      local_40 = (ctype)0x25;\n    }\n    else {\n      local_40 = (ctype)(**(code **)(*(int *)local_30 + 0x18))(local_30,0x25);\n    }\n  }\n  else {\n    local_40 = pcVar1[0x42];\n  }\n  if (param_11 == '\0') {\n    local_3e = '\0';\n    local_3f = param_10;\n  }\n  else {\n    local_3f = param_11;\n    local_3e = param_10;\n    local_3d = 0;\n  }\n  std::time_get<char,std::istreambuf_iterator<char,std::char_traits<char>>>::_M_extract_via_format\n            (&local_38,param_2,param_3,param_4,param_5,param_6,param_7,param_8,param_9,&local_40);\n  if (local_38 == (int *)0x0) {\n    bVar4 = local_34 == -1;\n  }\n  else if (local_34 == -1) {\n    bVar4 = false;\n    if ((uint)local_38[3] <= (uint)local_38[2]) {\n      iVar2 = (**(code **)(*local_38 + 0x24))(local_38);\n      bVar4 = iVar2 == -1;\n      if (iVar2 == -1) {\n        local_38 = (int *)0x0;\n      }\n    }\n  }\n  else {\n    bVar4 = false;\n  }\n  if (param_5 == (int *)0x0) {\n    bVar3 = param_6 == -1;\n  }\n  else if (param_6 == -1) {\n    bVar3 = false;\n    if ((uint)param_5[3] <= (uint)param_5[2]) {\n      iVar2 = (**(code **)(*param_5 + 0x24))(param_5);\n      bVar3 = iVar2 == -1;\n    }\n  }\n  else {\n    bVar3 = false;\n  }\n  if (bVar4 == bVar3) {\n    *param_8 = *param_8 | 2;\n  }\n  *param_1 = local_38;\n  param_1[1] = local_34;\n  return param_1;\n}" type_identifier (pointer_declarator "*\nFUN_00352f04(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,undefined4 param_9,char param_10,\n            char param_11)" * (function_declarator "FUN_00352f04(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,undefined4 param_9,char param_10,\n            char param_11)" 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,undefined4 param_9,char param_10,\n            char param_11)" ( (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 "undefined4 param_9" type_identifier identifier) , (parameter_declaration "char param_10" primitive_type identifier) , (parameter_declaration "char param_11" primitive_type identifier) )))) (compound_statement "{\n  ctype *pcVar1;\n  int iVar2;\n  bool bVar3;\n  bool bVar4;\n  ctype local_40;\n  char local_3f;\n  char local_3e;\n  undefined1 local_3d;\n  int *local_38;\n  int local_34;\n  ctype *local_30;\n  \n  pcVar1 = std::use_facet<std::ctype<char>>((locale *)(param_7 + 0x6c));\n  *param_8 = 0;\n  if (pcVar1[0x1c] == (ctype)0x0) {\n    local_30 = pcVar1;\n    (*(code *)PTR__M_widen_init_004c22c0)(pcVar1);\n    if (*(code **)(*(int *)local_30 + 0x18) == (code *)PTR_do_widen_004c22d4) {\n      local_40 = (ctype)0x25;\n    }\n    else {\n      local_40 = (ctype)(**(code **)(*(int *)local_30 + 0x18))(local_30,0x25);\n    }\n  }\n  else {\n    local_40 = pcVar1[0x42];\n  }\n  if (param_11 == '\0') {\n    local_3e = '\0';\n    local_3f = param_10;\n  }\n  else {\n    local_3f = param_11;\n    local_3e = param_10;\n    local_3d = 0;\n  }\n  std::time_get<char,std::istreambuf_iterator<char,std::char_traits<char>>>::_M_extract_via_format\n            (&local_38,param_2,param_3,param_4,param_5,param_6,param_7,param_8,param_9,&local_40);\n  if (local_38 == (int *)0x0) {\n    bVar4 = local_34 == -1;\n  }\n  else if (local_34 == -1) {\n    bVar4 = false;\n    if ((uint)local_38[3] <= (uint)local_38[2]) {\n      iVar2 = (**(code **)(*local_38 + 0x24))(local_38);\n      bVar4 = iVar2 == -1;\n      if (iVar2 == -1) {\n        local_38 = (int *)0x0;\n      }\n    }\n  }\n  else {\n    bVar4 = false;\n  }\n  if (param_5 == (int *)0x0) {\n    bVar3 = param_6 == -1;\n  }\n  else if (param_6 == -1) {\n    bVar3 = false;\n    if ((uint)param_5[3] <= (uint)param_5[2]) {\n      iVar2 = (**(code **)(*param_5 + 0x24))(param_5);\n      bVar3 = iVar2 == -1;\n    }\n  }\n  else {\n    bVar3 = false;\n  }\n  if (bVar4 == bVar3) {\n    *param_8 = *param_8 | 2;\n  }\n  *param_1 = local_38;\n  param_1[1] = local_34;\n  return param_1;\n}" { (declaration "ctype *pcVar1;" type_identifier (pointer_declarator "*pcVar1" * identifier) ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "bool bVar3;" primitive_type identifier ;) (declaration "bool bVar4;" primitive_type identifier ;) (declaration "ctype local_40;" type_identifier identifier ;) (declaration "char local_3f;" primitive_type identifier ;) (declaration "char local_3e;" primitive_type identifier ;) (declaration "undefined1 local_3d;" type_identifier identifier ;) (declaration "int *local_38;" primitive_type (pointer_declarator "*local_38" * identifier) ;) (declaration "int local_34;" primitive_type identifier ;) (declaration "ctype *local_30;" type_identifier (pointer_declarator "*local_30" * identifier) ;) (expression_statement "pcVar1 = std::use_facet<std::ctype<char>>((locale *)(param_7 + 0x6c));" (binary_expression "pcVar1 = std::use_facet<std::ctype<char>>((locale *)(param_7 + 0x6c))" (binary_expression "pcVar1 = std::use_facet<std" (assignment_expression "pcVar1 = std" identifier = identifier) (ERROR "::use_facet" : : identifier) < identifier) (ERROR "::ctype" : : identifier) < (binary_expression "char>>((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 "*param_8 = 0;" (assignment_expression "*param_8 = 0" (pointer_expression "*param_8" * identifier) = number_literal) ;) (if_statement "if (pcVar1[0x1c] == (ctype)0x0) {\n    local_30 = pcVar1;\n    (*(code *)PTR__M_widen_init_004c22c0)(pcVar1);\n    if (*(code **)(*(int *)local_30 + 0x18) == (code *)PTR_do_widen_004c22d4) {\n      local_40 = (ctype)0x25;\n    }\n    else {\n      local_40 = (ctype)(**(code **)(*(int *)local_30 + 0x18))(local_30,0x25);\n    }\n  }\n  else {\n    local_40 = pcVar1[0x42];\n  }" if (parenthesized_expression "(pcVar1[0x1c] == (ctype)0x0)" ( (binary_expression "pcVar1[0x1c] == (ctype)0x0" (subscript_expression "pcVar1[0x1c]" identifier [ number_literal ]) == (cast_expression "(ctype)0x0" ( (type_descriptor "ctype" type_identifier) ) number_literal)) )) (compound_statement "{\n    local_30 = pcVar1;\n    (*(code *)PTR__M_widen_init_004c22c0)(pcVar1);\n    if (*(code **)(*(int *)local_30 + 0x18) == (code *)PTR_do_widen_004c22d4) {\n      local_40 = (ctype)0x25;\n    }\n    else {\n      local_40 = (ctype)(**(code **)(*(int *)local_30 + 0x18))(local_30,0x25);\n    }\n  }" { (expression_statement "local_30 = pcVar1;" (assignment_expression "local_30 = pcVar1" identifier = identifier) ;) (expression_statement "(*(code *)PTR__M_widen_init_004c22c0)(pcVar1);" (call_expression "(*(code *)PTR__M_widen_init_004c22c0)(pcVar1)" (parenthesized_expression "(*(code *)PTR__M_widen_init_004c22c0)" ( (pointer_expression "*(code *)PTR__M_widen_init_004c22c0" * (cast_expression "(code *)PTR__M_widen_init_004c22c0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(pcVar1)" ( identifier ))) ;) (if_statement "if (*(code **)(*(int *)local_30 + 0x18) == (code *)PTR_do_widen_004c22d4) {\n      local_40 = (ctype)0x25;\n    }\n    else {\n      local_40 = (ctype)(**(code **)(*(int *)local_30 + 0x18))(local_30,0x25);\n    }" if (parenthesized_expression "(*(code **)(*(int *)local_30 + 0x18) == (code *)PTR_do_widen_004c22d4)" ( (binary_expression "*(code **)(*(int *)local_30 + 0x18) == (code *)PTR_do_widen_004c22d4" (pointer_expression "*(code **)(*(int *)local_30 + 0x18)" * (cast_expression "(code **)(*(int *)local_30 + 0x18)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)local_30 + 0x18)" ( (binary_expression "*(int *)local_30 + 0x18" (pointer_expression "*(int *)local_30" * (cast_expression "(int *)local_30" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) + number_literal) )))) == (cast_expression "(code *)PTR_do_widen_004c22d4" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (compound_statement "{\n      local_40 = (ctype)0x25;\n    }" { (expression_statement "local_40 = (ctype)0x25;" (assignment_expression "local_40 = (ctype)0x25" identifier = (cast_expression "(ctype)0x25" ( (type_descriptor "ctype" type_identifier) ) number_literal)) ;) }) (else_clause "else {\n      local_40 = (ctype)(**(code **)(*(int *)local_30 + 0x18))(local_30,0x25);\n    }" else (compound_statement "{\n      local_40 = (ctype)(**(code **)(*(int *)local_30 + 0x18))(local_30,0x25);\n    }" { (expression_statement "local_40 = (ctype)(**(code **)(*(int *)local_30 + 0x18))(local_30,0x25);" (assignment_expression "local_40 = (ctype)(**(code **)(*(int *)local_30 + 0x18))(local_30,0x25)" identifier = (call_expression "(ctype)(**(code **)(*(int *)local_30 + 0x18))(local_30,0x25)" (call_expression "(ctype)(**(code **)(*(int *)local_30 + 0x18))" (parenthesized_expression "(ctype)" ( identifier )) (argument_list "(**(code **)(*(int *)local_30 + 0x18))" ( (pointer_expression "**(code **)(*(int *)local_30 + 0x18)" * (pointer_expression "*(code **)(*(int *)local_30 + 0x18)" * (cast_expression "(code **)(*(int *)local_30 + 0x18)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)local_30 + 0x18)" ( (binary_expression "*(int *)local_30 + 0x18" (pointer_expression "*(int *)local_30" * (cast_expression "(int *)local_30" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) + number_literal) ))))) ))) (argument_list "(local_30,0x25)" ( identifier , number_literal )))) ;) }))) }) (else_clause "else {\n    local_40 = pcVar1[0x42];\n  }" else (compound_statement "{\n    local_40 = pcVar1[0x42];\n  }" { (expression_statement "local_40 = pcVar1[0x42];" (assignment_expression "local_40 = pcVar1[0x42]" identifier = (subscript_expression "pcVar1[0x42]" identifier [ number_literal ])) ;) }))) (if_statement "if (param_11 == '\0') {\n    local_3e = '\0';\n    local_3f = param_10;\n  }\n  else {\n    local_3f = param_11;\n    local_3e = param_10;\n    local_3d = 0;\n  }" if (parenthesized_expression "(param_11 == '\0')" ( (binary_expression "param_11 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    local_3e = '\0';\n    local_3f = param_10;\n  }" { (expression_statement "local_3e = '\0';" (assignment_expression "local_3e = '\0'" identifier = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "local_3f = param_10;" (assignment_expression "local_3f = param_10" identifier = identifier) ;) }) (else_clause "else {\n    local_3f = param_11;\n    local_3e = param_10;\n    local_3d = 0;\n  }" else (compound_statement "{\n    local_3f = param_11;\n    local_3e = param_10;\n    local_3d = 0;\n  }" { (expression_statement "local_3f = param_11;" (assignment_expression "local_3f = param_11" identifier = identifier) ;) (expression_statement "local_3e = param_10;" (assignment_expression "local_3e = param_10" identifier = identifier) ;) (expression_statement "local_3d = 0;" (assignment_expression "local_3d = 0" identifier = number_literal) ;) }))) (labeled_statement "std::time_get<char,std::istreambuf_iterator<char,std::char_traits<char>>>::_M_extract_via_format\n            (&local_38,param_2,param_3,param_4,param_5,param_6,param_7,param_8,param_9,&local_40);" statement_identifier (ERROR "::time_get<char,std::istreambuf_iterator<char,std:" : : (comma_expression "time_get<char,std" (binary_expression "time_get<char" identifier < identifier) , identifier) : : (comma_expression "istreambuf_iterator<char,std" (binary_expression "istreambuf_iterator<char" identifier < identifier) , identifier) :) : (expression_statement "char_traits<char>>>::_M_extract_via_format\n            (&local_38,param_2,param_3,param_4,param_5,param_6,param_7,param_8,param_9,&local_40);" (binary_expression "char_traits<char>>>::_M_extract_via_format\n            (&local_38,param_2,param_3,param_4,param_5,param_6,param_7,param_8,param_9,&local_40)" identifier < (binary_expression "char>>>::_M_extract_via_format\n            (&local_38,param_2,param_3,param_4,param_5,param_6,param_7,param_8,param_9,&local_40)" identifier >> (ERROR ">::" > : :) (call_expression "_M_extract_via_format\n            (&local_38,param_2,param_3,param_4,param_5,param_6,param_7,param_8,param_9,&local_40)" identifier (argument_list "(&local_38,param_2,param_3,param_4,param_5,param_6,param_7,param_8,param_9,&local_40)" ( (pointer_expression "&local_38" & identifier) , identifier , identifier , identifier , identifier , identifier , identifier , identifier , identifier , (pointer_expression "&local_40" & identifier) ))))) ;)) (if_statement "if (local_38 == (int *)0x0) {\n    bVar4 = local_34 == -1;\n  }\n  else if (local_34 == -1) {\n    bVar4 = false;\n    if ((uint)local_38[3] <= (uint)local_38[2]) {\n      iVar2 = (**(code **)(*local_38 + 0x24))(local_38);\n      bVar4 = iVar2 == -1;\n      if (iVar2 == -1) {\n        local_38 = (int *)0x0;\n      }\n    }\n  }\n  else {\n    bVar4 = false;\n  }" if (parenthesized_expression "(local_38 == (int *)0x0)" ( (binary_expression "local_38 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    bVar4 = local_34 == -1;\n  }" { (expression_statement "bVar4 = local_34 == -1;" (assignment_expression "bVar4 = local_34 == -1" identifier = (binary_expression "local_34 == -1" identifier == number_literal)) ;) }) (else_clause "else if (local_34 == -1) {\n    bVar4 = false;\n    if ((uint)local_38[3] <= (uint)local_38[2]) {\n      iVar2 = (**(code **)(*local_38 + 0x24))(local_38);\n      bVar4 = iVar2 == -1;\n      if (iVar2 == -1) {\n        local_38 = (int *)0x0;\n      }\n    }\n  }\n  else {\n    bVar4 = false;\n  }" else (if_statement "if (local_34 == -1) {\n    bVar4 = false;\n    if ((uint)local_38[3] <= (uint)local_38[2]) {\n      iVar2 = (**(code **)(*local_38 + 0x24))(local_38);\n      bVar4 = iVar2 == -1;\n      if (iVar2 == -1) {\n        local_38 = (int *)0x0;\n      }\n    }\n  }\n  else {\n    bVar4 = false;\n  }" if (parenthesized_expression "(local_34 == -1)" ( (binary_expression "local_34 == -1" identifier == number_literal) )) (compound_statement "{\n    bVar4 = false;\n    if ((uint)local_38[3] <= (uint)local_38[2]) {\n      iVar2 = (**(code **)(*local_38 + 0x24))(local_38);\n      bVar4 = iVar2 == -1;\n      if (iVar2 == -1) {\n        local_38 = (int *)0x0;\n      }\n    }\n  }" { (expression_statement "bVar4 = false;" (assignment_expression "bVar4 = false" identifier = false) ;) (if_statement "if ((uint)local_38[3] <= (uint)local_38[2]) {\n      iVar2 = (**(code **)(*local_38 + 0x24))(local_38);\n      bVar4 = iVar2 == -1;\n      if (iVar2 == -1) {\n        local_38 = (int *)0x0;\n      }\n    }" if (parenthesized_expression "((uint)local_38[3] <= (uint)local_38[2])" ( (binary_expression "(uint)local_38[3] <= (uint)local_38[2]" (cast_expression "(uint)local_38[3]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "local_38[3]" identifier [ number_literal ])) <= (cast_expression "(uint)local_38[2]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "local_38[2]" identifier [ number_literal ]))) )) (compound_statement "{\n      iVar2 = (**(code **)(*local_38 + 0x24))(local_38);\n      bVar4 = iVar2 == -1;\n      if (iVar2 == -1) {\n        local_38 = (int *)0x0;\n      }\n    }" { (expression_statement "iVar2 = (**(code **)(*local_38 + 0x24))(local_38);" (assignment_expression "iVar2 = (**(code **)(*local_38 + 0x24))(local_38)" identifier = (call_expression "(**(code **)(*local_38 + 0x24))(local_38)" (parenthesized_expression "(**(code **)(*local_38 + 0x24))" ( (pointer_expression "**(code **)(*local_38 + 0x24)" * (pointer_expression "*(code **)(*local_38 + 0x24)" * (cast_expression "(code **)(*local_38 + 0x24)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*local_38 + 0x24)" ( (binary_expression "*local_38 + 0x24" (pointer_expression "*local_38" * identifier) + number_literal) ))))) )) (argument_list "(local_38)" ( identifier )))) ;) (expression_statement "bVar4 = iVar2 == -1;" (assignment_expression "bVar4 = iVar2 == -1" identifier = (binary_expression "iVar2 == -1" identifier == number_literal)) ;) (if_statement "if (iVar2 == -1) {\n        local_38 = (int *)0x0;\n      }" if (parenthesized_expression "(iVar2 == -1)" ( (binary_expression "iVar2 == -1" identifier == number_literal) )) (compound_statement "{\n        local_38 = (int *)0x0;\n      }" { (expression_statement "local_38 = (int *)0x0;" (assignment_expression "local_38 = (int *)0x0" identifier = (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) })) })) }) (else_clause "else {\n    bVar4 = false;\n  }" else (compound_statement "{\n    bVar4 = false;\n  }" { (expression_statement "bVar4 = false;" (assignment_expression "bVar4 = false" identifier = false) ;) }))))) (if_statement "if (param_5 == (int *)0x0) {\n    bVar3 = param_6 == -1;\n  }\n  else if (param_6 == -1) {\n    bVar3 = false;\n    if ((uint)param_5[3] <= (uint)param_5[2]) {\n      iVar2 = (**(code **)(*param_5 + 0x24))(param_5);\n      bVar3 = iVar2 == -1;\n    }\n  }\n  else {\n    bVar3 = false;\n  }" if (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)) )) (compound_statement "{\n    bVar3 = param_6 == -1;\n  }" { (expression_statement "bVar3 = param_6 == -1;" (assignment_expression "bVar3 = param_6 == -1" identifier = (binary_expression "param_6 == -1" identifier == number_literal)) ;) }) (else_clause "else if (param_6 == -1) {\n    bVar3 = false;\n    if ((uint)param_5[3] <= (uint)param_5[2]) {\n      iVar2 = (**(code **)(*param_5 + 0x24))(param_5);\n      bVar3 = iVar2 == -1;\n    }\n  }\n  else {\n    bVar3 = false;\n  }" else (if_statement "if (param_6 == -1) {\n    bVar3 = false;\n    if ((uint)param_5[3] <= (uint)param_5[2]) {\n      iVar2 = (**(code **)(*param_5 + 0x24))(param_5);\n      bVar3 = iVar2 == -1;\n    }\n  }\n  else {\n    bVar3 = false;\n  }" if (parenthesized_expression "(param_6 == -1)" ( (binary_expression "param_6 == -1" identifier == number_literal) )) (compound_statement "{\n    bVar3 = false;\n    if ((uint)param_5[3] <= (uint)param_5[2]) {\n      iVar2 = (**(code **)(*param_5 + 0x24))(param_5);\n      bVar3 = iVar2 == -1;\n    }\n  }" { (expression_statement "bVar3 = false;" (assignment_expression "bVar3 = false" identifier = false) ;) (if_statement "if ((uint)param_5[3] <= (uint)param_5[2]) {\n      iVar2 = (**(code **)(*param_5 + 0x24))(param_5);\n      bVar3 = iVar2 == -1;\n    }" if (parenthesized_expression "((uint)param_5[3] <= (uint)param_5[2])" ( (binary_expression "(uint)param_5[3] <= (uint)param_5[2]" (cast_expression "(uint)param_5[3]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "param_5[3]" identifier [ number_literal ])) <= (cast_expression "(uint)param_5[2]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "param_5[2]" identifier [ number_literal ]))) )) (compound_statement "{\n      iVar2 = (**(code **)(*param_5 + 0x24))(param_5);\n      bVar3 = iVar2 == -1;\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)) ;) })) }) (else_clause "else {\n    bVar3 = false;\n  }" else (compound_statement "{\n    bVar3 = false;\n  }" { (expression_statement "bVar3 = false;" (assignment_expression "bVar3 = false" identifier = false) ;) }))))) (if_statement "if (bVar4 == bVar3) {\n    *param_8 = *param_8 | 2;\n  }" if (parenthesized_expression "(bVar4 == bVar3)" ( (binary_expression "bVar4 == 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 = local_38;" (assignment_expression "*param_1 = local_38" (pointer_expression "*param_1" * identifier) = identifier) ;) (expression_statement "param_1[1] = local_34;" (assignment_expression "param_1[1] = local_34" (subscript_expression "param_1[1]" identifier [ number_literal ]) = identifier) ;) (return_statement "return param_1;" return identifier ;) })))
(translation_unit "/* std::time_get<char, std::istreambuf_iterator<char, std::char_traits<char> >\n   >::get(std::istreambuf_iterator<char, std::char_traits<char> >, std::istreambuf_iterator<char,\n   std::char_traits<char> >, std::ios_base&, std::_Ios_Iostate&, tm*, char, char) const */\n\nundefined4 *\nstd::time_get<char,std::istreambuf_iterator<char,std::char_traits<char>>>::get\n          (undefined4 *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,int *param_5\n          ,int param_6,int param_7,uint *param_8,undefined4 param_9,char param_10,char param_11)\n\n{\n  ctype *pcVar1;\n  int iVar2;\n  bool bVar3;\n  bool bVar4;\n  ctype local_40;\n  char local_3f;\n  char local_3e;\n  undefined1 local_3d;\n  int *local_38;\n  int local_34;\n  ctype *local_30;\n  \n  pcVar1 = use_facet<std::ctype<char>>((locale *)(param_7 + 0x6c));\n  *param_8 = 0;\n  if (pcVar1[0x1c] == (ctype)0x0) {\n    local_30 = pcVar1;\n    (*(code *)PTR__M_widen_init_004c22c0)(pcVar1);\n    if (*(code **)(*(int *)local_30 + 0x18) == (code *)PTR_do_widen_004c22d4) {\n      local_40 = (ctype)0x25;\n    }\n    else {\n      local_40 = (ctype)(**(code **)(*(int *)local_30 + 0x18))(local_30,0x25);\n    }\n  }\n  else {\n    local_40 = pcVar1[0x42];\n  }\n  if (param_11 == '\0') {\n    local_3e = '\0';\n    local_3f = param_10;\n  }\n  else {\n    local_3f = param_11;\n    local_3e = param_10;\n    local_3d = 0;\n  }\n  _M_extract_via_format\n            (&local_38,param_2,param_3,param_4,param_5,param_6,param_7,param_8,param_9,&local_40);\n  if (local_38 == (int *)0x0) {\n    bVar4 = local_34 == -1;\n  }\n  else if (local_34 == -1) {\n    bVar4 = false;\n    if ((uint)local_38[3] <= (uint)local_38[2]) {\n      iVar2 = (**(code **)(*local_38 + 0x24))(local_38);\n      bVar4 = iVar2 == -1;\n      if (iVar2 == -1) {\n        local_38 = (int *)0x0;\n      }\n    }\n  }\n  else {\n    bVar4 = false;\n  }\n  if (param_5 == (int *)0x0) {\n    bVar3 = param_6 == -1;\n  }\n  else if (param_6 == -1) {\n    bVar3 = false;\n    if ((uint)param_5[3] <= (uint)param_5[2]) {\n      iVar2 = (**(code **)(*param_5 + 0x24))(param_5);\n      bVar3 = iVar2 == -1;\n    }\n  }\n  else {\n    bVar3 = false;\n  }\n  if (bVar4 == bVar3) {\n    *param_8 = *param_8 | 2;\n  }\n  *param_1 = local_38;\n  param_1[1] = local_34;\n  return param_1;\n}\n\n" comment (ERROR "undefined4 *\nstd::time_get<char," (binary_expression "undefined4 *\nstd::time_get<char" (binary_expression "undefined4 *\nstd" identifier * identifier) (ERROR "::time_get" : : identifier) < identifier) ,) (labeled_statement "std::istreambuf_iterator<char,std::char_traits<char>>>::get\n          (undefined4 *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,int *param_5\n          ,int param_6,int param_7,uint *param_8,undefined4 param_9,char param_10,char param_11)" statement_identifier (ERROR "::istreambuf_iterator<char,std:" : : (comma_expression "istreambuf_iterator<char,std" (binary_expression "istreambuf_iterator<char" identifier < identifier) , identifier) :) : (expression_statement "char_traits<char>>>::get\n          (undefined4 *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,int *param_5\n          ,int param_6,int param_7,uint *param_8,undefined4 param_9,char param_10,char param_11)" (binary_expression "char_traits<char>>>::get\n          (undefined4 *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,int *param_5\n          ,int param_6,int param_7,uint *param_8,undefined4 param_9,char param_10,char param_11)" identifier < (binary_expression "char>>>::get\n          (undefined4 *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,int *param_5\n          ,int param_6,int param_7,uint *param_8,undefined4 param_9,char param_10,char param_11)" identifier >> (ERROR ">::" > : :) (call_expression "get\n          (undefined4 *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,int *param_5\n          ,int param_6,int param_7,uint *param_8,undefined4 param_9,char param_10,char param_11)" identifier (argument_list "(undefined4 *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,int *param_5\n          ,int param_6,int param_7,uint *param_8,undefined4 param_9,char param_10,char param_11)" ( (binary_expression "undefined4 *param_1" identifier * identifier) , identifier (ERROR "param_2" identifier) , identifier (ERROR "param_3" identifier) , identifier (ERROR "param_4" identifier) , (binary_expression "int *param_5" identifier * identifier) , (ERROR "int" identifier) identifier , (ERROR "int" identifier) identifier , (binary_expression "uint *param_8" identifier * identifier) , identifier (ERROR "param_9" identifier) , (ERROR "char" identifier) identifier , (ERROR "char" identifier) identifier ))))) ;)) (compound_statement "{\n  ctype *pcVar1;\n  int iVar2;\n  bool bVar3;\n  bool bVar4;\n  ctype local_40;\n  char local_3f;\n  char local_3e;\n  undefined1 local_3d;\n  int *local_38;\n  int local_34;\n  ctype *local_30;\n  \n  pcVar1 = use_facet<std::ctype<char>>((locale *)(param_7 + 0x6c));\n  *param_8 = 0;\n  if (pcVar1[0x1c] == (ctype)0x0) {\n    local_30 = pcVar1;\n    (*(code *)PTR__M_widen_init_004c22c0)(pcVar1);\n    if (*(code **)(*(int *)local_30 + 0x18) == (code *)PTR_do_widen_004c22d4) {\n      local_40 = (ctype)0x25;\n    }\n    else {\n      local_40 = (ctype)(**(code **)(*(int *)local_30 + 0x18))(local_30,0x25);\n    }\n  }\n  else {\n    local_40 = pcVar1[0x42];\n  }\n  if (param_11 == '\0') {\n    local_3e = '\0';\n    local_3f = param_10;\n  }\n  else {\n    local_3f = param_11;\n    local_3e = param_10;\n    local_3d = 0;\n  }\n  _M_extract_via_format\n            (&local_38,param_2,param_3,param_4,param_5,param_6,param_7,param_8,param_9,&local_40);\n  if (local_38 == (int *)0x0) {\n    bVar4 = local_34 == -1;\n  }\n  else if (local_34 == -1) {\n    bVar4 = false;\n    if ((uint)local_38[3] <= (uint)local_38[2]) {\n      iVar2 = (**(code **)(*local_38 + 0x24))(local_38);\n      bVar4 = iVar2 == -1;\n      if (iVar2 == -1) {\n        local_38 = (int *)0x0;\n      }\n    }\n  }\n  else {\n    bVar4 = false;\n  }\n  if (param_5 == (int *)0x0) {\n    bVar3 = param_6 == -1;\n  }\n  else if (param_6 == -1) {\n    bVar3 = false;\n    if ((uint)param_5[3] <= (uint)param_5[2]) {\n      iVar2 = (**(code **)(*param_5 + 0x24))(param_5);\n      bVar3 = iVar2 == -1;\n    }\n  }\n  else {\n    bVar3 = false;\n  }\n  if (bVar4 == bVar3) {\n    *param_8 = *param_8 | 2;\n  }\n  *param_1 = local_38;\n  param_1[1] = local_34;\n  return param_1;\n}" { (declaration "ctype *pcVar1;" type_identifier (pointer_declarator "*pcVar1" * identifier) ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "bool bVar3;" primitive_type identifier ;) (declaration "bool bVar4;" primitive_type identifier ;) (declaration "ctype local_40;" type_identifier identifier ;) (declaration "char local_3f;" primitive_type identifier ;) (declaration "char local_3e;" primitive_type identifier ;) (declaration "undefined1 local_3d;" type_identifier identifier ;) (declaration "int *local_38;" primitive_type (pointer_declarator "*local_38" * identifier) ;) (declaration "int local_34;" primitive_type identifier ;) (declaration "ctype *local_30;" type_identifier (pointer_declarator "*local_30" * identifier) ;) (expression_statement "pcVar1 = use_facet<std::ctype<char>>((locale *)(param_7 + 0x6c));" (binary_expression "pcVar1 = use_facet<std::ctype<char>>((locale *)(param_7 + 0x6c))" (assignment_expression "pcVar1 = use_facet<std" identifier = (binary_expression "use_facet<std" identifier < identifier)) (ERROR "::ctype" : : identifier) < (binary_expression "char>>((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 "*param_8 = 0;" (assignment_expression "*param_8 = 0" (pointer_expression "*param_8" * identifier) = number_literal) ;) (if_statement "if (pcVar1[0x1c] == (ctype)0x0) {\n    local_30 = pcVar1;\n    (*(code *)PTR__M_widen_init_004c22c0)(pcVar1);\n    if (*(code **)(*(int *)local_30 + 0x18) == (code *)PTR_do_widen_004c22d4) {\n      local_40 = (ctype)0x25;\n    }\n    else {\n      local_40 = (ctype)(**(code **)(*(int *)local_30 + 0x18))(local_30,0x25);\n    }\n  }\n  else {\n    local_40 = pcVar1[0x42];\n  }" if (parenthesized_expression "(pcVar1[0x1c] == (ctype)0x0)" ( (binary_expression "pcVar1[0x1c] == (ctype)0x0" (subscript_expression "pcVar1[0x1c]" identifier [ number_literal ]) == (cast_expression "(ctype)0x0" ( (type_descriptor "ctype" type_identifier) ) number_literal)) )) (compound_statement "{\n    local_30 = pcVar1;\n    (*(code *)PTR__M_widen_init_004c22c0)(pcVar1);\n    if (*(code **)(*(int *)local_30 + 0x18) == (code *)PTR_do_widen_004c22d4) {\n      local_40 = (ctype)0x25;\n    }\n    else {\n      local_40 = (ctype)(**(code **)(*(int *)local_30 + 0x18))(local_30,0x25);\n    }\n  }" { (expression_statement "local_30 = pcVar1;" (assignment_expression "local_30 = pcVar1" identifier = identifier) ;) (expression_statement "(*(code *)PTR__M_widen_init_004c22c0)(pcVar1);" (call_expression "(*(code *)PTR__M_widen_init_004c22c0)(pcVar1)" (parenthesized_expression "(*(code *)PTR__M_widen_init_004c22c0)" ( (pointer_expression "*(code *)PTR__M_widen_init_004c22c0" * (cast_expression "(code *)PTR__M_widen_init_004c22c0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(pcVar1)" ( identifier ))) ;) (if_statement "if (*(code **)(*(int *)local_30 + 0x18) == (code *)PTR_do_widen_004c22d4) {\n      local_40 = (ctype)0x25;\n    }\n    else {\n      local_40 = (ctype)(**(code **)(*(int *)local_30 + 0x18))(local_30,0x25);\n    }" if (parenthesized_expression "(*(code **)(*(int *)local_30 + 0x18) == (code *)PTR_do_widen_004c22d4)" ( (binary_expression "*(code **)(*(int *)local_30 + 0x18) == (code *)PTR_do_widen_004c22d4" (pointer_expression "*(code **)(*(int *)local_30 + 0x18)" * (cast_expression "(code **)(*(int *)local_30 + 0x18)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)local_30 + 0x18)" ( (binary_expression "*(int *)local_30 + 0x18" (pointer_expression "*(int *)local_30" * (cast_expression "(int *)local_30" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) + number_literal) )))) == (cast_expression "(code *)PTR_do_widen_004c22d4" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (compound_statement "{\n      local_40 = (ctype)0x25;\n    }" { (expression_statement "local_40 = (ctype)0x25;" (assignment_expression "local_40 = (ctype)0x25" identifier = (cast_expression "(ctype)0x25" ( (type_descriptor "ctype" type_identifier) ) number_literal)) ;) }) (else_clause "else {\n      local_40 = (ctype)(**(code **)(*(int *)local_30 + 0x18))(local_30,0x25);\n    }" else (compound_statement "{\n      local_40 = (ctype)(**(code **)(*(int *)local_30 + 0x18))(local_30,0x25);\n    }" { (expression_statement "local_40 = (ctype)(**(code **)(*(int *)local_30 + 0x18))(local_30,0x25);" (assignment_expression "local_40 = (ctype)(**(code **)(*(int *)local_30 + 0x18))(local_30,0x25)" identifier = (call_expression "(ctype)(**(code **)(*(int *)local_30 + 0x18))(local_30,0x25)" (call_expression "(ctype)(**(code **)(*(int *)local_30 + 0x18))" (parenthesized_expression "(ctype)" ( identifier )) (argument_list "(**(code **)(*(int *)local_30 + 0x18))" ( (pointer_expression "**(code **)(*(int *)local_30 + 0x18)" * (pointer_expression "*(code **)(*(int *)local_30 + 0x18)" * (cast_expression "(code **)(*(int *)local_30 + 0x18)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)local_30 + 0x18)" ( (binary_expression "*(int *)local_30 + 0x18" (pointer_expression "*(int *)local_30" * (cast_expression "(int *)local_30" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) + number_literal) ))))) ))) (argument_list "(local_30,0x25)" ( identifier , number_literal )))) ;) }))) }) (else_clause "else {\n    local_40 = pcVar1[0x42];\n  }" else (compound_statement "{\n    local_40 = pcVar1[0x42];\n  }" { (expression_statement "local_40 = pcVar1[0x42];" (assignment_expression "local_40 = pcVar1[0x42]" identifier = (subscript_expression "pcVar1[0x42]" identifier [ number_literal ])) ;) }))) (if_statement "if (param_11 == '\0') {\n    local_3e = '\0';\n    local_3f = param_10;\n  }\n  else {\n    local_3f = param_11;\n    local_3e = param_10;\n    local_3d = 0;\n  }" if (parenthesized_expression "(param_11 == '\0')" ( (binary_expression "param_11 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    local_3e = '\0';\n    local_3f = param_10;\n  }" { (expression_statement "local_3e = '\0';" (assignment_expression "local_3e = '\0'" identifier = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "local_3f = param_10;" (assignment_expression "local_3f = param_10" identifier = identifier) ;) }) (else_clause "else {\n    local_3f = param_11;\n    local_3e = param_10;\n    local_3d = 0;\n  }" else (compound_statement "{\n    local_3f = param_11;\n    local_3e = param_10;\n    local_3d = 0;\n  }" { (expression_statement "local_3f = param_11;" (assignment_expression "local_3f = param_11" identifier = identifier) ;) (expression_statement "local_3e = param_10;" (assignment_expression "local_3e = param_10" identifier = identifier) ;) (expression_statement "local_3d = 0;" (assignment_expression "local_3d = 0" identifier = number_literal) ;) }))) (expression_statement "_M_extract_via_format\n            (&local_38,param_2,param_3,param_4,param_5,param_6,param_7,param_8,param_9,&local_40);" (call_expression "_M_extract_via_format\n            (&local_38,param_2,param_3,param_4,param_5,param_6,param_7,param_8,param_9,&local_40)" identifier (argument_list "(&local_38,param_2,param_3,param_4,param_5,param_6,param_7,param_8,param_9,&local_40)" ( (pointer_expression "&local_38" & identifier) , identifier , identifier , identifier , identifier , identifier , identifier , identifier , identifier , (pointer_expression "&local_40" & identifier) ))) ;) (if_statement "if (local_38 == (int *)0x0) {\n    bVar4 = local_34 == -1;\n  }\n  else if (local_34 == -1) {\n    bVar4 = false;\n    if ((uint)local_38[3] <= (uint)local_38[2]) {\n      iVar2 = (**(code **)(*local_38 + 0x24))(local_38);\n      bVar4 = iVar2 == -1;\n      if (iVar2 == -1) {\n        local_38 = (int *)0x0;\n      }\n    }\n  }\n  else {\n    bVar4 = false;\n  }" if (parenthesized_expression "(local_38 == (int *)0x0)" ( (binary_expression "local_38 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    bVar4 = local_34 == -1;\n  }" { (expression_statement "bVar4 = local_34 == -1;" (assignment_expression "bVar4 = local_34 == -1" identifier = (binary_expression "local_34 == -1" identifier == number_literal)) ;) }) (else_clause "else if (local_34 == -1) {\n    bVar4 = false;\n    if ((uint)local_38[3] <= (uint)local_38[2]) {\n      iVar2 = (**(code **)(*local_38 + 0x24))(local_38);\n      bVar4 = iVar2 == -1;\n      if (iVar2 == -1) {\n        local_38 = (int *)0x0;\n      }\n    }\n  }\n  else {\n    bVar4 = false;\n  }" else (if_statement "if (local_34 == -1) {\n    bVar4 = false;\n    if ((uint)local_38[3] <= (uint)local_38[2]) {\n      iVar2 = (**(code **)(*local_38 + 0x24))(local_38);\n      bVar4 = iVar2 == -1;\n      if (iVar2 == -1) {\n        local_38 = (int *)0x0;\n      }\n    }\n  }\n  else {\n    bVar4 = false;\n  }" if (parenthesized_expression "(local_34 == -1)" ( (binary_expression "local_34 == -1" identifier == number_literal) )) (compound_statement "{\n    bVar4 = false;\n    if ((uint)local_38[3] <= (uint)local_38[2]) {\n      iVar2 = (**(code **)(*local_38 + 0x24))(local_38);\n      bVar4 = iVar2 == -1;\n      if (iVar2 == -1) {\n        local_38 = (int *)0x0;\n      }\n    }\n  }" { (expression_statement "bVar4 = false;" (assignment_expression "bVar4 = false" identifier = false) ;) (if_statement "if ((uint)local_38[3] <= (uint)local_38[2]) {\n      iVar2 = (**(code **)(*local_38 + 0x24))(local_38);\n      bVar4 = iVar2 == -1;\n      if (iVar2 == -1) {\n        local_38 = (int *)0x0;\n      }\n    }" if (parenthesized_expression "((uint)local_38[3] <= (uint)local_38[2])" ( (binary_expression "(uint)local_38[3] <= (uint)local_38[2]" (cast_expression "(uint)local_38[3]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "local_38[3]" identifier [ number_literal ])) <= (cast_expression "(uint)local_38[2]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "local_38[2]" identifier [ number_literal ]))) )) (compound_statement "{\n      iVar2 = (**(code **)(*local_38 + 0x24))(local_38);\n      bVar4 = iVar2 == -1;\n      if (iVar2 == -1) {\n        local_38 = (int *)0x0;\n      }\n    }" { (expression_statement "iVar2 = (**(code **)(*local_38 + 0x24))(local_38);" (assignment_expression "iVar2 = (**(code **)(*local_38 + 0x24))(local_38)" identifier = (call_expression "(**(code **)(*local_38 + 0x24))(local_38)" (parenthesized_expression "(**(code **)(*local_38 + 0x24))" ( (pointer_expression "**(code **)(*local_38 + 0x24)" * (pointer_expression "*(code **)(*local_38 + 0x24)" * (cast_expression "(code **)(*local_38 + 0x24)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*local_38 + 0x24)" ( (binary_expression "*local_38 + 0x24" (pointer_expression "*local_38" * identifier) + number_literal) ))))) )) (argument_list "(local_38)" ( identifier )))) ;) (expression_statement "bVar4 = iVar2 == -1;" (assignment_expression "bVar4 = iVar2 == -1" identifier = (binary_expression "iVar2 == -1" identifier == number_literal)) ;) (if_statement "if (iVar2 == -1) {\n        local_38 = (int *)0x0;\n      }" if (parenthesized_expression "(iVar2 == -1)" ( (binary_expression "iVar2 == -1" identifier == number_literal) )) (compound_statement "{\n        local_38 = (int *)0x0;\n      }" { (expression_statement "local_38 = (int *)0x0;" (assignment_expression "local_38 = (int *)0x0" identifier = (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) })) })) }) (else_clause "else {\n    bVar4 = false;\n  }" else (compound_statement "{\n    bVar4 = false;\n  }" { (expression_statement "bVar4 = false;" (assignment_expression "bVar4 = false" identifier = false) ;) }))))) (if_statement "if (param_5 == (int *)0x0) {\n    bVar3 = param_6 == -1;\n  }\n  else if (param_6 == -1) {\n    bVar3 = false;\n    if ((uint)param_5[3] <= (uint)param_5[2]) {\n      iVar2 = (**(code **)(*param_5 + 0x24))(param_5);\n      bVar3 = iVar2 == -1;\n    }\n  }\n  else {\n    bVar3 = false;\n  }" if (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)) )) (compound_statement "{\n    bVar3 = param_6 == -1;\n  }" { (expression_statement "bVar3 = param_6 == -1;" (assignment_expression "bVar3 = param_6 == -1" identifier = (binary_expression "param_6 == -1" identifier == number_literal)) ;) }) (else_clause "else if (param_6 == -1) {\n    bVar3 = false;\n    if ((uint)param_5[3] <= (uint)param_5[2]) {\n      iVar2 = (**(code **)(*param_5 + 0x24))(param_5);\n      bVar3 = iVar2 == -1;\n    }\n  }\n  else {\n    bVar3 = false;\n  }" else (if_statement "if (param_6 == -1) {\n    bVar3 = false;\n    if ((uint)param_5[3] <= (uint)param_5[2]) {\n      iVar2 = (**(code **)(*param_5 + 0x24))(param_5);\n      bVar3 = iVar2 == -1;\n    }\n  }\n  else {\n    bVar3 = false;\n  }" if (parenthesized_expression "(param_6 == -1)" ( (binary_expression "param_6 == -1" identifier == number_literal) )) (compound_statement "{\n    bVar3 = false;\n    if ((uint)param_5[3] <= (uint)param_5[2]) {\n      iVar2 = (**(code **)(*param_5 + 0x24))(param_5);\n      bVar3 = iVar2 == -1;\n    }\n  }" { (expression_statement "bVar3 = false;" (assignment_expression "bVar3 = false" identifier = false) ;) (if_statement "if ((uint)param_5[3] <= (uint)param_5[2]) {\n      iVar2 = (**(code **)(*param_5 + 0x24))(param_5);\n      bVar3 = iVar2 == -1;\n    }" if (parenthesized_expression "((uint)param_5[3] <= (uint)param_5[2])" ( (binary_expression "(uint)param_5[3] <= (uint)param_5[2]" (cast_expression "(uint)param_5[3]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "param_5[3]" identifier [ number_literal ])) <= (cast_expression "(uint)param_5[2]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "param_5[2]" identifier [ number_literal ]))) )) (compound_statement "{\n      iVar2 = (**(code **)(*param_5 + 0x24))(param_5);\n      bVar3 = iVar2 == -1;\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)) ;) })) }) (else_clause "else {\n    bVar3 = false;\n  }" else (compound_statement "{\n    bVar3 = false;\n  }" { (expression_statement "bVar3 = false;" (assignment_expression "bVar3 = false" identifier = false) ;) }))))) (if_statement "if (bVar4 == bVar3) {\n    *param_8 = *param_8 | 2;\n  }" if (parenthesized_expression "(bVar4 == bVar3)" ( (binary_expression "bVar4 == 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 = local_38;" (assignment_expression "*param_1 = local_38" (pointer_expression "*param_1" * identifier) = identifier) ;) (expression_statement "param_1[1] = local_34;" (assignment_expression "param_1[1] = local_34" (subscript_expression "param_1[1]" identifier [ number_literal ]) = identifier) ;) (return_statement "return param_1;" return identifier ;) }))
(translation_unit "undefined4 *\nFUN_00352f04(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,undefined4 param_9,char param_10,\n            char param_11)\n\n{\n  ctype *pcVar1;\n  int iVar2;\n  bool bVar3;\n  bool bVar4;\n  ctype local_40;\n  char local_3f;\n  char local_3e;\n  undefined1 local_3d;\n  int *local_38;\n  int local_34;\n  ctype *local_30;\n  \n  pcVar1 = std::use_facet<std::ctype<char>>((locale *)(param_7 + 0x6c));\n  *param_8 = 0;\n  if (pcVar1[0x1c] == (ctype)0x0) {\n    local_30 = pcVar1;\n    (*(code *)PTR__M_widen_init_004c22c0)(pcVar1);\n    if (*(code **)(*(int *)local_30 + 0x18) == (code *)PTR_do_widen_004c22d4) {\n      local_40 = (ctype)0x25;\n    }\n    else {\n      local_40 = (ctype)(**(code **)(*(int *)local_30 + 0x18))(local_30,0x25);\n    }\n  }\n  else {\n    local_40 = pcVar1[0x42];\n  }\n  if (param_11 == '\0') {\n    local_3e = '\0';\n    local_3f = param_10;\n  }\n  else {\n    local_3f = param_11;\n    local_3e = param_10;\n    local_3d = 0;\n  }\n  std::time_get<char,std::istreambuf_iterator<char,std::char_traits<char>>>::_M_extract_via_format\n            (&local_38,param_2,param_3,param_4,param_5,param_6,param_7,param_8,param_9,&local_40);\n  if (local_38 == (int *)0x0) {\n    bVar4 = local_34 == -1;\n  }\n  else if (local_34 == -1) {\n    bVar4 = false;\n    if ((uint)local_38[3] <= (uint)local_38[2]) {\n      iVar2 = (**(code **)(*local_38 + 0x24))(local_38);\n      bVar4 = iVar2 == -1;\n      if (iVar2 == -1) {\n        local_38 = (int *)0x0;\n      }\n    }\n  }\n  else {\n    bVar4 = false;\n  }\n  if (param_5 == (int *)0x0) {\n    bVar3 = param_6 == -1;\n  }\n  else if (param_6 == -1) {\n    bVar3 = false;\n    if ((uint)param_5[3] <= (uint)param_5[2]) {\n      iVar2 = (**(code **)(*param_5 + 0x24))(param_5);\n      bVar3 = iVar2 == -1;\n    }\n  }\n  else {\n    bVar3 = false;\n  }\n  if (bVar4 == bVar3) {\n    *param_8 = *param_8 | 2;\n  }\n  *param_1 = local_38;\n  param_1[1] = local_34;\n  return param_1;\n}\n\n" (function_definition "undefined4 *\nFUN_00352f04(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,undefined4 param_9,char param_10,\n            char param_11)\n\n{\n  ctype *pcVar1;\n  int iVar2;\n  bool bVar3;\n  bool bVar4;\n  ctype local_40;\n  char local_3f;\n  char local_3e;\n  undefined1 local_3d;\n  int *local_38;\n  int local_34;\n  ctype *local_30;\n  \n  pcVar1 = std::use_facet<std::ctype<char>>((locale *)(param_7 + 0x6c));\n  *param_8 = 0;\n  if (pcVar1[0x1c] == (ctype)0x0) {\n    local_30 = pcVar1;\n    (*(code *)PTR__M_widen_init_004c22c0)(pcVar1);\n    if (*(code **)(*(int *)local_30 + 0x18) == (code *)PTR_do_widen_004c22d4) {\n      local_40 = (ctype)0x25;\n    }\n    else {\n      local_40 = (ctype)(**(code **)(*(int *)local_30 + 0x18))(local_30,0x25);\n    }\n  }\n  else {\n    local_40 = pcVar1[0x42];\n  }\n  if (param_11 == '\0') {\n    local_3e = '\0';\n    local_3f = param_10;\n  }\n  else {\n    local_3f = param_11;\n    local_3e = param_10;\n    local_3d = 0;\n  }\n  std::time_get<char,std::istreambuf_iterator<char,std::char_traits<char>>>::_M_extract_via_format\n            (&local_38,param_2,param_3,param_4,param_5,param_6,param_7,param_8,param_9,&local_40);\n  if (local_38 == (int *)0x0) {\n    bVar4 = local_34 == -1;\n  }\n  else if (local_34 == -1) {\n    bVar4 = false;\n    if ((uint)local_38[3] <= (uint)local_38[2]) {\n      iVar2 = (**(code **)(*local_38 + 0x24))(local_38);\n      bVar4 = iVar2 == -1;\n      if (iVar2 == -1) {\n        local_38 = (int *)0x0;\n      }\n    }\n  }\n  else {\n    bVar4 = false;\n  }\n  if (param_5 == (int *)0x0) {\n    bVar3 = param_6 == -1;\n  }\n  else if (param_6 == -1) {\n    bVar3 = false;\n    if ((uint)param_5[3] <= (uint)param_5[2]) {\n      iVar2 = (**(code **)(*param_5 + 0x24))(param_5);\n      bVar3 = iVar2 == -1;\n    }\n  }\n  else {\n    bVar3 = false;\n  }\n  if (bVar4 == bVar3) {\n    *param_8 = *param_8 | 2;\n  }\n  *param_1 = local_38;\n  param_1[1] = local_34;\n  return param_1;\n}" type_identifier (pointer_declarator "*\nFUN_00352f04(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,undefined4 param_9,char param_10,\n            char param_11)" * (function_declarator "FUN_00352f04(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,undefined4 param_9,char param_10,\n            char param_11)" 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,undefined4 param_9,char param_10,\n            char param_11)" ( (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 "undefined4 param_9" type_identifier identifier) , (parameter_declaration "char param_10" primitive_type identifier) , (parameter_declaration "char param_11" primitive_type identifier) )))) (compound_statement "{\n  ctype *pcVar1;\n  int iVar2;\n  bool bVar3;\n  bool bVar4;\n  ctype local_40;\n  char local_3f;\n  char local_3e;\n  undefined1 local_3d;\n  int *local_38;\n  int local_34;\n  ctype *local_30;\n  \n  pcVar1 = std::use_facet<std::ctype<char>>((locale *)(param_7 + 0x6c));\n  *param_8 = 0;\n  if (pcVar1[0x1c] == (ctype)0x0) {\n    local_30 = pcVar1;\n    (*(code *)PTR__M_widen_init_004c22c0)(pcVar1);\n    if (*(code **)(*(int *)local_30 + 0x18) == (code *)PTR_do_widen_004c22d4) {\n      local_40 = (ctype)0x25;\n    }\n    else {\n      local_40 = (ctype)(**(code **)(*(int *)local_30 + 0x18))(local_30,0x25);\n    }\n  }\n  else {\n    local_40 = pcVar1[0x42];\n  }\n  if (param_11 == '\0') {\n    local_3e = '\0';\n    local_3f = param_10;\n  }\n  else {\n    local_3f = param_11;\n    local_3e = param_10;\n    local_3d = 0;\n  }\n  std::time_get<char,std::istreambuf_iterator<char,std::char_traits<char>>>::_M_extract_via_format\n            (&local_38,param_2,param_3,param_4,param_5,param_6,param_7,param_8,param_9,&local_40);\n  if (local_38 == (int *)0x0) {\n    bVar4 = local_34 == -1;\n  }\n  else if (local_34 == -1) {\n    bVar4 = false;\n    if ((uint)local_38[3] <= (uint)local_38[2]) {\n      iVar2 = (**(code **)(*local_38 + 0x24))(local_38);\n      bVar4 = iVar2 == -1;\n      if (iVar2 == -1) {\n        local_38 = (int *)0x0;\n      }\n    }\n  }\n  else {\n    bVar4 = false;\n  }\n  if (param_5 == (int *)0x0) {\n    bVar3 = param_6 == -1;\n  }\n  else if (param_6 == -1) {\n    bVar3 = false;\n    if ((uint)param_5[3] <= (uint)param_5[2]) {\n      iVar2 = (**(code **)(*param_5 + 0x24))(param_5);\n      bVar3 = iVar2 == -1;\n    }\n  }\n  else {\n    bVar3 = false;\n  }\n  if (bVar4 == bVar3) {\n    *param_8 = *param_8 | 2;\n  }\n  *param_1 = local_38;\n  param_1[1] = local_34;\n  return param_1;\n}" { (declaration "ctype *pcVar1;" type_identifier (pointer_declarator "*pcVar1" * identifier) ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "bool bVar3;" primitive_type identifier ;) (declaration "bool bVar4;" primitive_type identifier ;) (declaration "ctype local_40;" type_identifier identifier ;) (declaration "char local_3f;" primitive_type identifier ;) (declaration "char local_3e;" primitive_type identifier ;) (declaration "undefined1 local_3d;" type_identifier identifier ;) (declaration "int *local_38;" primitive_type (pointer_declarator "*local_38" * identifier) ;) (declaration "int local_34;" primitive_type identifier ;) (declaration "ctype *local_30;" type_identifier (pointer_declarator "*local_30" * identifier) ;) (expression_statement "pcVar1 = std::use_facet<std::ctype<char>>((locale *)(param_7 + 0x6c));" (binary_expression "pcVar1 = std::use_facet<std::ctype<char>>((locale *)(param_7 + 0x6c))" (binary_expression "pcVar1 = std::use_facet<std" (assignment_expression "pcVar1 = std" identifier = identifier) (ERROR "::use_facet" : : identifier) < identifier) (ERROR "::ctype" : : identifier) < (binary_expression "char>>((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 "*param_8 = 0;" (assignment_expression "*param_8 = 0" (pointer_expression "*param_8" * identifier) = number_literal) ;) (if_statement "if (pcVar1[0x1c] == (ctype)0x0) {\n    local_30 = pcVar1;\n    (*(code *)PTR__M_widen_init_004c22c0)(pcVar1);\n    if (*(code **)(*(int *)local_30 + 0x18) == (code *)PTR_do_widen_004c22d4) {\n      local_40 = (ctype)0x25;\n    }\n    else {\n      local_40 = (ctype)(**(code **)(*(int *)local_30 + 0x18))(local_30,0x25);\n    }\n  }\n  else {\n    local_40 = pcVar1[0x42];\n  }" if (parenthesized_expression "(pcVar1[0x1c] == (ctype)0x0)" ( (binary_expression "pcVar1[0x1c] == (ctype)0x0" (subscript_expression "pcVar1[0x1c]" identifier [ number_literal ]) == (cast_expression "(ctype)0x0" ( (type_descriptor "ctype" type_identifier) ) number_literal)) )) (compound_statement "{\n    local_30 = pcVar1;\n    (*(code *)PTR__M_widen_init_004c22c0)(pcVar1);\n    if (*(code **)(*(int *)local_30 + 0x18) == (code *)PTR_do_widen_004c22d4) {\n      local_40 = (ctype)0x25;\n    }\n    else {\n      local_40 = (ctype)(**(code **)(*(int *)local_30 + 0x18))(local_30,0x25);\n    }\n  }" { (expression_statement "local_30 = pcVar1;" (assignment_expression "local_30 = pcVar1" identifier = identifier) ;) (expression_statement "(*(code *)PTR__M_widen_init_004c22c0)(pcVar1);" (call_expression "(*(code *)PTR__M_widen_init_004c22c0)(pcVar1)" (parenthesized_expression "(*(code *)PTR__M_widen_init_004c22c0)" ( (pointer_expression "*(code *)PTR__M_widen_init_004c22c0" * (cast_expression "(code *)PTR__M_widen_init_004c22c0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(pcVar1)" ( identifier ))) ;) (if_statement "if (*(code **)(*(int *)local_30 + 0x18) == (code *)PTR_do_widen_004c22d4) {\n      local_40 = (ctype)0x25;\n    }\n    else {\n      local_40 = (ctype)(**(code **)(*(int *)local_30 + 0x18))(local_30,0x25);\n    }" if (parenthesized_expression "(*(code **)(*(int *)local_30 + 0x18) == (code *)PTR_do_widen_004c22d4)" ( (binary_expression "*(code **)(*(int *)local_30 + 0x18) == (code *)PTR_do_widen_004c22d4" (pointer_expression "*(code **)(*(int *)local_30 + 0x18)" * (cast_expression "(code **)(*(int *)local_30 + 0x18)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)local_30 + 0x18)" ( (binary_expression "*(int *)local_30 + 0x18" (pointer_expression "*(int *)local_30" * (cast_expression "(int *)local_30" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) + number_literal) )))) == (cast_expression "(code *)PTR_do_widen_004c22d4" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (compound_statement "{\n      local_40 = (ctype)0x25;\n    }" { (expression_statement "local_40 = (ctype)0x25;" (assignment_expression "local_40 = (ctype)0x25" identifier = (cast_expression "(ctype)0x25" ( (type_descriptor "ctype" type_identifier) ) number_literal)) ;) }) (else_clause "else {\n      local_40 = (ctype)(**(code **)(*(int *)local_30 + 0x18))(local_30,0x25);\n    }" else (compound_statement "{\n      local_40 = (ctype)(**(code **)(*(int *)local_30 + 0x18))(local_30,0x25);\n    }" { (expression_statement "local_40 = (ctype)(**(code **)(*(int *)local_30 + 0x18))(local_30,0x25);" (assignment_expression "local_40 = (ctype)(**(code **)(*(int *)local_30 + 0x18))(local_30,0x25)" identifier = (call_expression "(ctype)(**(code **)(*(int *)local_30 + 0x18))(local_30,0x25)" (call_expression "(ctype)(**(code **)(*(int *)local_30 + 0x18))" (parenthesized_expression "(ctype)" ( identifier )) (argument_list "(**(code **)(*(int *)local_30 + 0x18))" ( (pointer_expression "**(code **)(*(int *)local_30 + 0x18)" * (pointer_expression "*(code **)(*(int *)local_30 + 0x18)" * (cast_expression "(code **)(*(int *)local_30 + 0x18)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)local_30 + 0x18)" ( (binary_expression "*(int *)local_30 + 0x18" (pointer_expression "*(int *)local_30" * (cast_expression "(int *)local_30" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) + number_literal) ))))) ))) (argument_list "(local_30,0x25)" ( identifier , number_literal )))) ;) }))) }) (else_clause "else {\n    local_40 = pcVar1[0x42];\n  }" else (compound_statement "{\n    local_40 = pcVar1[0x42];\n  }" { (expression_statement "local_40 = pcVar1[0x42];" (assignment_expression "local_40 = pcVar1[0x42]" identifier = (subscript_expression "pcVar1[0x42]" identifier [ number_literal ])) ;) }))) (if_statement "if (param_11 == '\0') {\n    local_3e = '\0';\n    local_3f = param_10;\n  }\n  else {\n    local_3f = param_11;\n    local_3e = param_10;\n    local_3d = 0;\n  }" if (parenthesized_expression "(param_11 == '\0')" ( (binary_expression "param_11 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    local_3e = '\0';\n    local_3f = param_10;\n  }" { (expression_statement "local_3e = '\0';" (assignment_expression "local_3e = '\0'" identifier = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "local_3f = param_10;" (assignment_expression "local_3f = param_10" identifier = identifier) ;) }) (else_clause "else {\n    local_3f = param_11;\n    local_3e = param_10;\n    local_3d = 0;\n  }" else (compound_statement "{\n    local_3f = param_11;\n    local_3e = param_10;\n    local_3d = 0;\n  }" { (expression_statement "local_3f = param_11;" (assignment_expression "local_3f = param_11" identifier = identifier) ;) (expression_statement "local_3e = param_10;" (assignment_expression "local_3e = param_10" identifier = identifier) ;) (expression_statement "local_3d = 0;" (assignment_expression "local_3d = 0" identifier = number_literal) ;) }))) (labeled_statement "std::time_get<char,std::istreambuf_iterator<char,std::char_traits<char>>>::_M_extract_via_format\n            (&local_38,param_2,param_3,param_4,param_5,param_6,param_7,param_8,param_9,&local_40);" statement_identifier (ERROR "::time_get<char,std::istreambuf_iterator<char,std:" : : (comma_expression "time_get<char,std" (binary_expression "time_get<char" identifier < identifier) , identifier) : : (comma_expression "istreambuf_iterator<char,std" (binary_expression "istreambuf_iterator<char" identifier < identifier) , identifier) :) : (expression_statement "char_traits<char>>>::_M_extract_via_format\n            (&local_38,param_2,param_3,param_4,param_5,param_6,param_7,param_8,param_9,&local_40);" (binary_expression "char_traits<char>>>::_M_extract_via_format\n            (&local_38,param_2,param_3,param_4,param_5,param_6,param_7,param_8,param_9,&local_40)" identifier < (binary_expression "char>>>::_M_extract_via_format\n            (&local_38,param_2,param_3,param_4,param_5,param_6,param_7,param_8,param_9,&local_40)" identifier >> (ERROR ">::" > : :) (call_expression "_M_extract_via_format\n            (&local_38,param_2,param_3,param_4,param_5,param_6,param_7,param_8,param_9,&local_40)" identifier (argument_list "(&local_38,param_2,param_3,param_4,param_5,param_6,param_7,param_8,param_9,&local_40)" ( (pointer_expression "&local_38" & identifier) , identifier , identifier , identifier , identifier , identifier , identifier , identifier , identifier , (pointer_expression "&local_40" & identifier) ))))) ;)) (if_statement "if (local_38 == (int *)0x0) {\n    bVar4 = local_34 == -1;\n  }\n  else if (local_34 == -1) {\n    bVar4 = false;\n    if ((uint)local_38[3] <= (uint)local_38[2]) {\n      iVar2 = (**(code **)(*local_38 + 0x24))(local_38);\n      bVar4 = iVar2 == -1;\n      if (iVar2 == -1) {\n        local_38 = (int *)0x0;\n      }\n    }\n  }\n  else {\n    bVar4 = false;\n  }" if (parenthesized_expression "(local_38 == (int *)0x0)" ( (binary_expression "local_38 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    bVar4 = local_34 == -1;\n  }" { (expression_statement "bVar4 = local_34 == -1;" (assignment_expression "bVar4 = local_34 == -1" identifier = (binary_expression "local_34 == -1" identifier == number_literal)) ;) }) (else_clause "else if (local_34 == -1) {\n    bVar4 = false;\n    if ((uint)local_38[3] <= (uint)local_38[2]) {\n      iVar2 = (**(code **)(*local_38 + 0x24))(local_38);\n      bVar4 = iVar2 == -1;\n      if (iVar2 == -1) {\n        local_38 = (int *)0x0;\n      }\n    }\n  }\n  else {\n    bVar4 = false;\n  }" else (if_statement "if (local_34 == -1) {\n    bVar4 = false;\n    if ((uint)local_38[3] <= (uint)local_38[2]) {\n      iVar2 = (**(code **)(*local_38 + 0x24))(local_38);\n      bVar4 = iVar2 == -1;\n      if (iVar2 == -1) {\n        local_38 = (int *)0x0;\n      }\n    }\n  }\n  else {\n    bVar4 = false;\n  }" if (parenthesized_expression "(local_34 == -1)" ( (binary_expression "local_34 == -1" identifier == number_literal) )) (compound_statement "{\n    bVar4 = false;\n    if ((uint)local_38[3] <= (uint)local_38[2]) {\n      iVar2 = (**(code **)(*local_38 + 0x24))(local_38);\n      bVar4 = iVar2 == -1;\n      if (iVar2 == -1) {\n        local_38 = (int *)0x0;\n      }\n    }\n  }" { (expression_statement "bVar4 = false;" (assignment_expression "bVar4 = false" identifier = false) ;) (if_statement "if ((uint)local_38[3] <= (uint)local_38[2]) {\n      iVar2 = (**(code **)(*local_38 + 0x24))(local_38);\n      bVar4 = iVar2 == -1;\n      if (iVar2 == -1) {\n        local_38 = (int *)0x0;\n      }\n    }" if (parenthesized_expression "((uint)local_38[3] <= (uint)local_38[2])" ( (binary_expression "(uint)local_38[3] <= (uint)local_38[2]" (cast_expression "(uint)local_38[3]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "local_38[3]" identifier [ number_literal ])) <= (cast_expression "(uint)local_38[2]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "local_38[2]" identifier [ number_literal ]))) )) (compound_statement "{\n      iVar2 = (**(code **)(*local_38 + 0x24))(local_38);\n      bVar4 = iVar2 == -1;\n      if (iVar2 == -1) {\n        local_38 = (int *)0x0;\n      }\n    }" { (expression_statement "iVar2 = (**(code **)(*local_38 + 0x24))(local_38);" (assignment_expression "iVar2 = (**(code **)(*local_38 + 0x24))(local_38)" identifier = (call_expression "(**(code **)(*local_38 + 0x24))(local_38)" (parenthesized_expression "(**(code **)(*local_38 + 0x24))" ( (pointer_expression "**(code **)(*local_38 + 0x24)" * (pointer_expression "*(code **)(*local_38 + 0x24)" * (cast_expression "(code **)(*local_38 + 0x24)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*local_38 + 0x24)" ( (binary_expression "*local_38 + 0x24" (pointer_expression "*local_38" * identifier) + number_literal) ))))) )) (argument_list "(local_38)" ( identifier )))) ;) (expression_statement "bVar4 = iVar2 == -1;" (assignment_expression "bVar4 = iVar2 == -1" identifier = (binary_expression "iVar2 == -1" identifier == number_literal)) ;) (if_statement "if (iVar2 == -1) {\n        local_38 = (int *)0x0;\n      }" if (parenthesized_expression "(iVar2 == -1)" ( (binary_expression "iVar2 == -1" identifier == number_literal) )) (compound_statement "{\n        local_38 = (int *)0x0;\n      }" { (expression_statement "local_38 = (int *)0x0;" (assignment_expression "local_38 = (int *)0x0" identifier = (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) })) })) }) (else_clause "else {\n    bVar4 = false;\n  }" else (compound_statement "{\n    bVar4 = false;\n  }" { (expression_statement "bVar4 = false;" (assignment_expression "bVar4 = false" identifier = false) ;) }))))) (if_statement "if (param_5 == (int *)0x0) {\n    bVar3 = param_6 == -1;\n  }\n  else if (param_6 == -1) {\n    bVar3 = false;\n    if ((uint)param_5[3] <= (uint)param_5[2]) {\n      iVar2 = (**(code **)(*param_5 + 0x24))(param_5);\n      bVar3 = iVar2 == -1;\n    }\n  }\n  else {\n    bVar3 = false;\n  }" if (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)) )) (compound_statement "{\n    bVar3 = param_6 == -1;\n  }" { (expression_statement "bVar3 = param_6 == -1;" (assignment_expression "bVar3 = param_6 == -1" identifier = (binary_expression "param_6 == -1" identifier == number_literal)) ;) }) (else_clause "else if (param_6 == -1) {\n    bVar3 = false;\n    if ((uint)param_5[3] <= (uint)param_5[2]) {\n      iVar2 = (**(code **)(*param_5 + 0x24))(param_5);\n      bVar3 = iVar2 == -1;\n    }\n  }\n  else {\n    bVar3 = false;\n  }" else (if_statement "if (param_6 == -1) {\n    bVar3 = false;\n    if ((uint)param_5[3] <= (uint)param_5[2]) {\n      iVar2 = (**(code **)(*param_5 + 0x24))(param_5);\n      bVar3 = iVar2 == -1;\n    }\n  }\n  else {\n    bVar3 = false;\n  }" if (parenthesized_expression "(param_6 == -1)" ( (binary_expression "param_6 == -1" identifier == number_literal) )) (compound_statement "{\n    bVar3 = false;\n    if ((uint)param_5[3] <= (uint)param_5[2]) {\n      iVar2 = (**(code **)(*param_5 + 0x24))(param_5);\n      bVar3 = iVar2 == -1;\n    }\n  }" { (expression_statement "bVar3 = false;" (assignment_expression "bVar3 = false" identifier = false) ;) (if_statement "if ((uint)param_5[3] <= (uint)param_5[2]) {\n      iVar2 = (**(code **)(*param_5 + 0x24))(param_5);\n      bVar3 = iVar2 == -1;\n    }" if (parenthesized_expression "((uint)param_5[3] <= (uint)param_5[2])" ( (binary_expression "(uint)param_5[3] <= (uint)param_5[2]" (cast_expression "(uint)param_5[3]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "param_5[3]" identifier [ number_literal ])) <= (cast_expression "(uint)param_5[2]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "param_5[2]" identifier [ number_literal ]))) )) (compound_statement "{\n      iVar2 = (**(code **)(*param_5 + 0x24))(param_5);\n      bVar3 = iVar2 == -1;\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)) ;) })) }) (else_clause "else {\n    bVar3 = false;\n  }" else (compound_statement "{\n    bVar3 = false;\n  }" { (expression_statement "bVar3 = false;" (assignment_expression "bVar3 = false" identifier = false) ;) }))))) (if_statement "if (bVar4 == bVar3) {\n    *param_8 = *param_8 | 2;\n  }" if (parenthesized_expression "(bVar4 == bVar3)" ( (binary_expression "bVar4 == 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 = local_38;" (assignment_expression "*param_1 = local_38" (pointer_expression "*param_1" * identifier) = identifier) ;) (expression_statement "param_1[1] = local_34;" (assignment_expression "param_1[1] = local_34" (subscript_expression "param_1[1]" identifier [ number_literal ]) = identifier) ;) (return_statement "return param_1;" return identifier ;) })))
(translation_unit (function_definition TYPE (pointer_declarator * (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE (pointer_declarator * IDENT)) , (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) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) )))) (compound_statement { (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (expression_statement (binary_expression (binary_expression (assignment_expression IDENT = IDENT) (ERROR : : IDENT) < IDENT) (ERROR : : IDENT) < (binary_expression IDENT >> (parenthesized_expression ( (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))) )))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == (cast_expression ( (type_descriptor TYPE) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT ))) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) + LIT) )))) == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) LIT)) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) + LIT) ))))) ))) (argument_list ( IDENT , LIT )))) ;) }))) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) }))) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = (char_literal ' escape_sequence ')) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) }))) (labeled_statement statement_identifier (ERROR : : (comma_expression (binary_expression IDENT < IDENT) , IDENT) : : (comma_expression (binary_expression IDENT < IDENT) , IDENT) :) : (expression_statement (binary_expression IDENT < (binary_expression IDENT >> (ERROR > : :) (call_expression IDENT (argument_list ( (pointer_expression & IDENT) , IDENT , IDENT , IDENT , IDENT , IDENT , IDENT , IDENT , IDENT , (pointer_expression & IDENT) ))))) ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT == LIT)) ;) }) (else_clause else (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = BOOL) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ])) <= (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ]))) )) (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 == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) })) })) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = BOOL) ;) }))))) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT == LIT)) ;) }) (else_clause else (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = BOOL) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ])) <= (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ]))) )) (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)) ;) })) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = BOOL) ;) }))))) (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 IDENT ;) })))
(function_definition "undefined4 *\nFUN_00352f04(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,undefined4 param_9,char param_10,\n            char param_11)\n\n{\n  ctype *pcVar1;\n  int iVar2;\n  bool bVar3;\n  bool bVar4;\n  ctype local_40;\n  char local_3f;\n  char local_3e;\n  undefined1 local_3d;\n  int *local_38;\n  int local_34;\n  ctype *local_30;\n  \n  pcVar1 = std::use_facet<std::ctype<char>>((locale *)(param_7 + 0x6c));\n  *param_8 = 0;\n  if (pcVar1[0x1c] == (ctype)0x0) {\n    local_30 = pcVar1;\n    (*(code *)PTR__M_widen_init_004c22c0)(pcVar1);\n    if (*(code **)(*(int *)local_30 + 0x18) == (code *)PTR_do_widen_004c22d4) {\n      local_40 = (ctype)0x25;\n    }\n    else {\n      local_40 = (ctype)(**(code **)(*(int *)local_30 + 0x18))(local_30,0x25);\n    }\n  }\n  else {\n    local_40 = pcVar1[0x42];\n  }\n  if (param_11 == '\0') {\n    local_3e = '\0';\n    local_3f = param_10;\n  }\n  else {\n    local_3f = param_11;\n    local_3e = param_10;\n    local_3d = 0;\n  }\n  std::time_get<char,std::istreambuf_iterator<char,std::char_traits<char>>>::_M_extract_via_format\n            (&local_38,param_2,param_3,param_4,param_5,param_6,param_7,param_8,param_9,&local_40);\n  if (local_38 == (int *)0x0) {\n    bVar4 = local_34 == -1;\n  }\n  else if (local_34 == -1) {\n    bVar4 = false;\n    if ((uint)local_38[3] <= (uint)local_38[2]) {\n      iVar2 = (**(code **)(*local_38 + 0x24))(local_38);\n      bVar4 = iVar2 == -1;\n      if (iVar2 == -1) {\n        local_38 = (int *)0x0;\n      }\n    }\n  }\n  else {\n    bVar4 = false;\n  }\n  if (param_5 == (int *)0x0) {\n    bVar3 = param_6 == -1;\n  }\n  else if (param_6 == -1) {\n    bVar3 = false;\n    if ((uint)param_5[3] <= (uint)param_5[2]) {\n      iVar2 = (**(code **)(*param_5 + 0x24))(param_5);\n      bVar3 = iVar2 == -1;\n    }\n  }\n  else {\n    bVar3 = false;\n  }\n  if (bVar4 == bVar3) {\n    *param_8 = *param_8 | 2;\n  }\n  *param_1 = local_38;\n  param_1[1] = local_34;\n  return param_1;\n}" (type_identifier "undefined4") (pointer_declarator "*\nFUN_00352f04(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,undefined4 param_9,char param_10,\n            char param_11)" (* "*") (function_declarator "FUN_00352f04(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,undefined4 param_9,char param_10,\n            char param_11)" (identifier "FUN_00352f04") (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,undefined4 param_9,char param_10,\n            char param_11)" (( "(") (parameter_declaration "undefined4 *param_1" (type_identifier "undefined4") (pointer_declarator "*param_1" (* "*") (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 "undefined4 param_4" (type_identifier "undefined4") (identifier "param_4")) (, ",") (parameter_declaration "int *param_5" (primitive_type "int") (pointer_declarator "*param_5" (* "*") (identifier "param_5"))) (, ",") (parameter_declaration "int param_6" (primitive_type "int") (identifier "param_6")) (, ",") (parameter_declaration "int param_7" (primitive_type "int") (identifier "param_7")) (, ",") (parameter_declaration "uint *param_8" (type_identifier "uint") (pointer_declarator "*param_8" (* "*") (identifier "param_8"))) (, ",") (parameter_declaration "undefined4 param_9" (type_identifier "undefined4") (identifier "param_9")) (, ",") (parameter_declaration "char param_10" (primitive_type "char") (identifier "param_10")) (, ",") (parameter_declaration "char param_11" (primitive_type "char") (identifier "param_11")) () ")")))) (compound_statement "{\n  ctype *pcVar1;\n  int iVar2;\n  bool bVar3;\n  bool bVar4;\n  ctype local_40;\n  char local_3f;\n  char local_3e;\n  undefined1 local_3d;\n  int *local_38;\n  int local_34;\n  ctype *local_30;\n  \n  pcVar1 = std::use_facet<std::ctype<char>>((locale *)(param_7 + 0x6c));\n  *param_8 = 0;\n  if (pcVar1[0x1c] == (ctype)0x0) {\n    local_30 = pcVar1;\n    (*(code *)PTR__M_widen_init_004c22c0)(pcVar1);\n    if (*(code **)(*(int *)local_30 + 0x18) == (code *)PTR_do_widen_004c22d4) {\n      local_40 = (ctype)0x25;\n    }\n    else {\n      local_40 = (ctype)(**(code **)(*(int *)local_30 + 0x18))(local_30,0x25);\n    }\n  }\n  else {\n    local_40 = pcVar1[0x42];\n  }\n  if (param_11 == '\0') {\n    local_3e = '\0';\n    local_3f = param_10;\n  }\n  else {\n    local_3f = param_11;\n    local_3e = param_10;\n    local_3d = 0;\n  }\n  std::time_get<char,std::istreambuf_iterator<char,std::char_traits<char>>>::_M_extract_via_format\n            (&local_38,param_2,param_3,param_4,param_5,param_6,param_7,param_8,param_9,&local_40);\n  if (local_38 == (int *)0x0) {\n    bVar4 = local_34 == -1;\n  }\n  else if (local_34 == -1) {\n    bVar4 = false;\n    if ((uint)local_38[3] <= (uint)local_38[2]) {\n      iVar2 = (**(code **)(*local_38 + 0x24))(local_38);\n      bVar4 = iVar2 == -1;\n      if (iVar2 == -1) {\n        local_38 = (int *)0x0;\n      }\n    }\n  }\n  else {\n    bVar4 = false;\n  }\n  if (param_5 == (int *)0x0) {\n    bVar3 = param_6 == -1;\n  }\n  else if (param_6 == -1) {\n    bVar3 = false;\n    if ((uint)param_5[3] <= (uint)param_5[2]) {\n      iVar2 = (**(code **)(*param_5 + 0x24))(param_5);\n      bVar3 = iVar2 == -1;\n    }\n  }\n  else {\n    bVar3 = false;\n  }\n  if (bVar4 == bVar3) {\n    *param_8 = *param_8 | 2;\n  }\n  *param_1 = local_38;\n  param_1[1] = local_34;\n  return param_1;\n}" ({ "{") (declaration "ctype *pcVar1;" (type_identifier "ctype") (pointer_declarator "*pcVar1" (* "*") (identifier "pcVar1")) (; ";")) (declaration "int iVar2;" (primitive_type "int") (identifier "iVar2") (; ";")) (declaration "bool bVar3;" (primitive_type "bool") (identifier "bVar3") (; ";")) (declaration "bool bVar4;" (primitive_type "bool") (identifier "bVar4") (; ";")) (declaration "ctype local_40;" (type_identifier "ctype") (identifier "local_40") (; ";")) (declaration "char local_3f;" (primitive_type "char") (identifier "local_3f") (; ";")) (declaration "char local_3e;" (primitive_type "char") (identifier "local_3e") (; ";")) (declaration "undefined1 local_3d;" (type_identifier "undefined1") (identifier "local_3d") (; ";")) (declaration "int *local_38;" (primitive_type "int") (pointer_declarator "*local_38" (* "*") (identifier "local_38")) (; ";")) (declaration "int local_34;" (primitive_type "int") (identifier "local_34") (; ";")) (declaration "ctype *local_30;" (type_identifier "ctype") (pointer_declarator "*local_30" (* "*") (identifier "local_30")) (; ";")) (expression_statement "pcVar1 = std::use_facet<std::ctype<char>>((locale *)(param_7 + 0x6c));" (binary_expression "pcVar1 = std::use_facet<std::ctype<char>>((locale *)(param_7 + 0x6c))" (binary_expression "pcVar1 = std::use_facet<std" (assignment_expression "pcVar1 = std" (identifier "pcVar1") (= "=") (identifier "std")) (ERROR "::use_facet" (: ":") (: ":") (identifier "use_facet")) (< "<") (identifier "std")) (ERROR "::ctype" (: ":") (: ":") (identifier "ctype")) (< "<") (binary_expression "char>>((locale *)(param_7 + 0x6c))" (identifier "char") (>> ">>") (parenthesized_expression "((locale *)(param_7 + 0x6c))" (( "(") (cast_expression "(locale *)(param_7 + 0x6c)" (( "(") (type_descriptor "locale *" (type_identifier "locale") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_7 + 0x6c)" (( "(") (binary_expression "param_7 + 0x6c" (identifier "param_7") (+ "+") (number_literal "0x6c")) () ")"))) () ")")))) (; ";")) (expression_statement "*param_8 = 0;" (assignment_expression "*param_8 = 0" (pointer_expression "*param_8" (* "*") (identifier "param_8")) (= "=") (number_literal "0")) (; ";")) (if_statement "if (pcVar1[0x1c] == (ctype)0x0) {\n    local_30 = pcVar1;\n    (*(code *)PTR__M_widen_init_004c22c0)(pcVar1);\n    if (*(code **)(*(int *)local_30 + 0x18) == (code *)PTR_do_widen_004c22d4) {\n      local_40 = (ctype)0x25;\n    }\n    else {\n      local_40 = (ctype)(**(code **)(*(int *)local_30 + 0x18))(local_30,0x25);\n    }\n  }\n  else {\n    local_40 = pcVar1[0x42];\n  }" (if "if") (parenthesized_expression "(pcVar1[0x1c] == (ctype)0x0)" (( "(") (binary_expression "pcVar1[0x1c] == (ctype)0x0" (subscript_expression "pcVar1[0x1c]" (identifier "pcVar1") ([ "[") (number_literal "0x1c") (] "]")) (== "==") (cast_expression "(ctype)0x0" (( "(") (type_descriptor "ctype" (type_identifier "ctype")) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n    local_30 = pcVar1;\n    (*(code *)PTR__M_widen_init_004c22c0)(pcVar1);\n    if (*(code **)(*(int *)local_30 + 0x18) == (code *)PTR_do_widen_004c22d4) {\n      local_40 = (ctype)0x25;\n    }\n    else {\n      local_40 = (ctype)(**(code **)(*(int *)local_30 + 0x18))(local_30,0x25);\n    }\n  }" ({ "{") (expression_statement "local_30 = pcVar1;" (assignment_expression "local_30 = pcVar1" (identifier "local_30") (= "=") (identifier "pcVar1")) (; ";")) (expression_statement "(*(code *)PTR__M_widen_init_004c22c0)(pcVar1);" (call_expression "(*(code *)PTR__M_widen_init_004c22c0)(pcVar1)" (parenthesized_expression "(*(code *)PTR__M_widen_init_004c22c0)" (( "(") (pointer_expression "*(code *)PTR__M_widen_init_004c22c0" (* "*") (cast_expression "(code *)PTR__M_widen_init_004c22c0" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR__M_widen_init_004c22c0"))) () ")")) (argument_list "(pcVar1)" (( "(") (identifier "pcVar1") () ")"))) (; ";")) (if_statement "if (*(code **)(*(int *)local_30 + 0x18) == (code *)PTR_do_widen_004c22d4) {\n      local_40 = (ctype)0x25;\n    }\n    else {\n      local_40 = (ctype)(**(code **)(*(int *)local_30 + 0x18))(local_30,0x25);\n    }" (if "if") (parenthesized_expression "(*(code **)(*(int *)local_30 + 0x18) == (code *)PTR_do_widen_004c22d4)" (( "(") (binary_expression "*(code **)(*(int *)local_30 + 0x18) == (code *)PTR_do_widen_004c22d4" (pointer_expression "*(code **)(*(int *)local_30 + 0x18)" (* "*") (cast_expression "(code **)(*(int *)local_30 + 0x18)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*(int *)local_30 + 0x18)" (( "(") (binary_expression "*(int *)local_30 + 0x18" (pointer_expression "*(int *)local_30" (* "*") (cast_expression "(int *)local_30" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "local_30"))) (+ "+") (number_literal "0x18")) () ")")))) (== "==") (cast_expression "(code *)PTR_do_widen_004c22d4" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_do_widen_004c22d4"))) () ")")) (compound_statement "{\n      local_40 = (ctype)0x25;\n    }" ({ "{") (expression_statement "local_40 = (ctype)0x25;" (assignment_expression "local_40 = (ctype)0x25" (identifier "local_40") (= "=") (cast_expression "(ctype)0x25" (( "(") (type_descriptor "ctype" (type_identifier "ctype")) () ")") (number_literal "0x25"))) (; ";")) (} "}")) (else_clause "else {\n      local_40 = (ctype)(**(code **)(*(int *)local_30 + 0x18))(local_30,0x25);\n    }" (else "else") (compound_statement "{\n      local_40 = (ctype)(**(code **)(*(int *)local_30 + 0x18))(local_30,0x25);\n    }" ({ "{") (expression_statement "local_40 = (ctype)(**(code **)(*(int *)local_30 + 0x18))(local_30,0x25);" (assignment_expression "local_40 = (ctype)(**(code **)(*(int *)local_30 + 0x18))(local_30,0x25)" (identifier "local_40") (= "=") (call_expression "(ctype)(**(code **)(*(int *)local_30 + 0x18))(local_30,0x25)" (call_expression "(ctype)(**(code **)(*(int *)local_30 + 0x18))" (parenthesized_expression "(ctype)" (( "(") (identifier "ctype") () ")")) (argument_list "(**(code **)(*(int *)local_30 + 0x18))" (( "(") (pointer_expression "**(code **)(*(int *)local_30 + 0x18)" (* "*") (pointer_expression "*(code **)(*(int *)local_30 + 0x18)" (* "*") (cast_expression "(code **)(*(int *)local_30 + 0x18)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*(int *)local_30 + 0x18)" (( "(") (binary_expression "*(int *)local_30 + 0x18" (pointer_expression "*(int *)local_30" (* "*") (cast_expression "(int *)local_30" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "local_30"))) (+ "+") (number_literal "0x18")) () ")"))))) () ")"))) (argument_list "(local_30,0x25)" (( "(") (identifier "local_30") (, ",") (number_literal "0x25") () ")")))) (; ";")) (} "}")))) (} "}")) (else_clause "else {\n    local_40 = pcVar1[0x42];\n  }" (else "else") (compound_statement "{\n    local_40 = pcVar1[0x42];\n  }" ({ "{") (expression_statement "local_40 = pcVar1[0x42];" (assignment_expression "local_40 = pcVar1[0x42]" (identifier "local_40") (= "=") (subscript_expression "pcVar1[0x42]" (identifier "pcVar1") ([ "[") (number_literal "0x42") (] "]"))) (; ";")) (} "}")))) (if_statement "if (param_11 == '\0') {\n    local_3e = '\0';\n    local_3f = param_10;\n  }\n  else {\n    local_3f = param_11;\n    local_3e = param_10;\n    local_3d = 0;\n  }" (if "if") (parenthesized_expression "(param_11 == '\0')" (( "(") (binary_expression "param_11 == '\0'" (identifier "param_11") (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n    local_3e = '\0';\n    local_3f = param_10;\n  }" ({ "{") (expression_statement "local_3e = '\0';" (assignment_expression "local_3e = '\0'" (identifier "local_3e") (= "=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) (; ";")) (expression_statement "local_3f = param_10;" (assignment_expression "local_3f = param_10" (identifier "local_3f") (= "=") (identifier "param_10")) (; ";")) (} "}")) (else_clause "else {\n    local_3f = param_11;\n    local_3e = param_10;\n    local_3d = 0;\n  }" (else "else") (compound_statement "{\n    local_3f = param_11;\n    local_3e = param_10;\n    local_3d = 0;\n  }" ({ "{") (expression_statement "local_3f = param_11;" (assignment_expression "local_3f = param_11" (identifier "local_3f") (= "=") (identifier "param_11")) (; ";")) (expression_statement "local_3e = param_10;" (assignment_expression "local_3e = param_10" (identifier "local_3e") (= "=") (identifier "param_10")) (; ";")) (expression_statement "local_3d = 0;" (assignment_expression "local_3d = 0" (identifier "local_3d") (= "=") (number_literal "0")) (; ";")) (} "}")))) (labeled_statement "std::time_get<char,std::istreambuf_iterator<char,std::char_traits<char>>>::_M_extract_via_format\n            (&local_38,param_2,param_3,param_4,param_5,param_6,param_7,param_8,param_9,&local_40);" (statement_identifier "std") (ERROR "::time_get<char,std::istreambuf_iterator<char,std:" (: ":") (: ":") (comma_expression "time_get<char,std" (binary_expression "time_get<char" (identifier "time_get") (< "<") (identifier "char")) (, ",") (identifier "std")) (: ":") (: ":") (comma_expression "istreambuf_iterator<char,std" (binary_expression "istreambuf_iterator<char" (identifier "istreambuf_iterator") (< "<") (identifier "char")) (, ",") (identifier "std")) (: ":")) (: ":") (expression_statement "char_traits<char>>>::_M_extract_via_format\n            (&local_38,param_2,param_3,param_4,param_5,param_6,param_7,param_8,param_9,&local_40);" (binary_expression "char_traits<char>>>::_M_extract_via_format\n            (&local_38,param_2,param_3,param_4,param_5,param_6,param_7,param_8,param_9,&local_40)" (identifier "char_traits") (< "<") (binary_expression "char>>>::_M_extract_via_format\n            (&local_38,param_2,param_3,param_4,param_5,param_6,param_7,param_8,param_9,&local_40)" (identifier "char") (>> ">>") (ERROR ">::" (> ">") (: ":") (: ":")) (call_expression "_M_extract_via_format\n            (&local_38,param_2,param_3,param_4,param_5,param_6,param_7,param_8,param_9,&local_40)" (identifier "_M_extract_via_format") (argument_list "(&local_38,param_2,param_3,param_4,param_5,param_6,param_7,param_8,param_9,&local_40)" (( "(") (pointer_expression "&local_38" (& "&") (identifier "local_38")) (, ",") (identifier "param_2") (, ",") (identifier "param_3") (, ",") (identifier "param_4") (, ",") (identifier "param_5") (, ",") (identifier "param_6") (, ",") (identifier "param_7") (, ",") (identifier "param_8") (, ",") (identifier "param_9") (, ",") (pointer_expression "&local_40" (& "&") (identifier "local_40")) () ")"))))) (; ";"))) (if_statement "if (local_38 == (int *)0x0) {\n    bVar4 = local_34 == -1;\n  }\n  else if (local_34 == -1) {\n    bVar4 = false;\n    if ((uint)local_38[3] <= (uint)local_38[2]) {\n      iVar2 = (**(code **)(*local_38 + 0x24))(local_38);\n      bVar4 = iVar2 == -1;\n      if (iVar2 == -1) {\n        local_38 = (int *)0x0;\n      }\n    }\n  }\n  else {\n    bVar4 = false;\n  }" (if "if") (parenthesized_expression "(local_38 == (int *)0x0)" (( "(") (binary_expression "local_38 == (int *)0x0" (identifier "local_38") (== "==") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n    bVar4 = local_34 == -1;\n  }" ({ "{") (expression_statement "bVar4 = local_34 == -1;" (assignment_expression "bVar4 = local_34 == -1" (identifier "bVar4") (= "=") (binary_expression "local_34 == -1" (identifier "local_34") (== "==") (number_literal "-1"))) (; ";")) (} "}")) (else_clause "else if (local_34 == -1) {\n    bVar4 = false;\n    if ((uint)local_38[3] <= (uint)local_38[2]) {\n      iVar2 = (**(code **)(*local_38 + 0x24))(local_38);\n      bVar4 = iVar2 == -1;\n      if (iVar2 == -1) {\n        local_38 = (int *)0x0;\n      }\n    }\n  }\n  else {\n    bVar4 = false;\n  }" (else "else") (if_statement "if (local_34 == -1) {\n    bVar4 = false;\n    if ((uint)local_38[3] <= (uint)local_38[2]) {\n      iVar2 = (**(code **)(*local_38 + 0x24))(local_38);\n      bVar4 = iVar2 == -1;\n      if (iVar2 == -1) {\n        local_38 = (int *)0x0;\n      }\n    }\n  }\n  else {\n    bVar4 = false;\n  }" (if "if") (parenthesized_expression "(local_34 == -1)" (( "(") (binary_expression "local_34 == -1" (identifier "local_34") (== "==") (number_literal "-1")) () ")")) (compound_statement "{\n    bVar4 = false;\n    if ((uint)local_38[3] <= (uint)local_38[2]) {\n      iVar2 = (**(code **)(*local_38 + 0x24))(local_38);\n      bVar4 = iVar2 == -1;\n      if (iVar2 == -1) {\n        local_38 = (int *)0x0;\n      }\n    }\n  }" ({ "{") (expression_statement "bVar4 = false;" (assignment_expression "bVar4 = false" (identifier "bVar4") (= "=") (false "false")) (; ";")) (if_statement "if ((uint)local_38[3] <= (uint)local_38[2]) {\n      iVar2 = (**(code **)(*local_38 + 0x24))(local_38);\n      bVar4 = iVar2 == -1;\n      if (iVar2 == -1) {\n        local_38 = (int *)0x0;\n      }\n    }" (if "if") (parenthesized_expression "((uint)local_38[3] <= (uint)local_38[2])" (( "(") (binary_expression "(uint)local_38[3] <= (uint)local_38[2]" (cast_expression "(uint)local_38[3]" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (subscript_expression "local_38[3]" (identifier "local_38") ([ "[") (number_literal "3") (] "]"))) (<= "<=") (cast_expression "(uint)local_38[2]" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (subscript_expression "local_38[2]" (identifier "local_38") ([ "[") (number_literal "2") (] "]")))) () ")")) (compound_statement "{\n      iVar2 = (**(code **)(*local_38 + 0x24))(local_38);\n      bVar4 = iVar2 == -1;\n      if (iVar2 == -1) {\n        local_38 = (int *)0x0;\n      }\n    }" ({ "{") (expression_statement "iVar2 = (**(code **)(*local_38 + 0x24))(local_38);" (assignment_expression "iVar2 = (**(code **)(*local_38 + 0x24))(local_38)" (identifier "iVar2") (= "=") (call_expression "(**(code **)(*local_38 + 0x24))(local_38)" (parenthesized_expression "(**(code **)(*local_38 + 0x24))" (( "(") (pointer_expression "**(code **)(*local_38 + 0x24)" (* "*") (pointer_expression "*(code **)(*local_38 + 0x24)" (* "*") (cast_expression "(code **)(*local_38 + 0x24)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*local_38 + 0x24)" (( "(") (binary_expression "*local_38 + 0x24" (pointer_expression "*local_38" (* "*") (identifier "local_38")) (+ "+") (number_literal "0x24")) () ")"))))) () ")")) (argument_list "(local_38)" (( "(") (identifier "local_38") () ")")))) (; ";")) (expression_statement "bVar4 = iVar2 == -1;" (assignment_expression "bVar4 = iVar2 == -1" (identifier "bVar4") (= "=") (binary_expression "iVar2 == -1" (identifier "iVar2") (== "==") (number_literal "-1"))) (; ";")) (if_statement "if (iVar2 == -1) {\n        local_38 = (int *)0x0;\n      }" (if "if") (parenthesized_expression "(iVar2 == -1)" (( "(") (binary_expression "iVar2 == -1" (identifier "iVar2") (== "==") (number_literal "-1")) () ")")) (compound_statement "{\n        local_38 = (int *)0x0;\n      }" ({ "{") (expression_statement "local_38 = (int *)0x0;" (assignment_expression "local_38 = (int *)0x0" (identifier "local_38") (= "=") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (} "}"))) (} "}"))) (} "}")) (else_clause "else {\n    bVar4 = false;\n  }" (else "else") (compound_statement "{\n    bVar4 = false;\n  }" ({ "{") (expression_statement "bVar4 = false;" (assignment_expression "bVar4 = false" (identifier "bVar4") (= "=") (false "false")) (; ";")) (} "}")))))) (if_statement "if (param_5 == (int *)0x0) {\n    bVar3 = param_6 == -1;\n  }\n  else if (param_6 == -1) {\n    bVar3 = false;\n    if ((uint)param_5[3] <= (uint)param_5[2]) {\n      iVar2 = (**(code **)(*param_5 + 0x24))(param_5);\n      bVar3 = iVar2 == -1;\n    }\n  }\n  else {\n    bVar3 = false;\n  }" (if "if") (parenthesized_expression "(param_5 == (int *)0x0)" (( "(") (binary_expression "param_5 == (int *)0x0" (identifier "param_5") (== "==") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n    bVar3 = param_6 == -1;\n  }" ({ "{") (expression_statement "bVar3 = param_6 == -1;" (assignment_expression "bVar3 = param_6 == -1" (identifier "bVar3") (= "=") (binary_expression "param_6 == -1" (identifier "param_6") (== "==") (number_literal "-1"))) (; ";")) (} "}")) (else_clause "else if (param_6 == -1) {\n    bVar3 = false;\n    if ((uint)param_5[3] <= (uint)param_5[2]) {\n      iVar2 = (**(code **)(*param_5 + 0x24))(param_5);\n      bVar3 = iVar2 == -1;\n    }\n  }\n  else {\n    bVar3 = false;\n  }" (else "else") (if_statement "if (param_6 == -1) {\n    bVar3 = false;\n    if ((uint)param_5[3] <= (uint)param_5[2]) {\n      iVar2 = (**(code **)(*param_5 + 0x24))(param_5);\n      bVar3 = iVar2 == -1;\n    }\n  }\n  else {\n    bVar3 = false;\n  }" (if "if") (parenthesized_expression "(param_6 == -1)" (( "(") (binary_expression "param_6 == -1" (identifier "param_6") (== "==") (number_literal "-1")) () ")")) (compound_statement "{\n    bVar3 = false;\n    if ((uint)param_5[3] <= (uint)param_5[2]) {\n      iVar2 = (**(code **)(*param_5 + 0x24))(param_5);\n      bVar3 = iVar2 == -1;\n    }\n  }" ({ "{") (expression_statement "bVar3 = false;" (assignment_expression "bVar3 = false" (identifier "bVar3") (= "=") (false "false")) (; ";")) (if_statement "if ((uint)param_5[3] <= (uint)param_5[2]) {\n      iVar2 = (**(code **)(*param_5 + 0x24))(param_5);\n      bVar3 = iVar2 == -1;\n    }" (if "if") (parenthesized_expression "((uint)param_5[3] <= (uint)param_5[2])" (( "(") (binary_expression "(uint)param_5[3] <= (uint)param_5[2]" (cast_expression "(uint)param_5[3]" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (subscript_expression "param_5[3]" (identifier "param_5") ([ "[") (number_literal "3") (] "]"))) (<= "<=") (cast_expression "(uint)param_5[2]" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (subscript_expression "param_5[2]" (identifier "param_5") ([ "[") (number_literal "2") (] "]")))) () ")")) (compound_statement "{\n      iVar2 = (**(code **)(*param_5 + 0x24))(param_5);\n      bVar3 = iVar2 == -1;\n    }" ({ "{") (expression_statement "iVar2 = (**(code **)(*param_5 + 0x24))(param_5);" (assignment_expression "iVar2 = (**(code **)(*param_5 + 0x24))(param_5)" (identifier "iVar2") (= "=") (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 "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*param_5 + 0x24)" (( "(") (binary_expression "*param_5 + 0x24" (pointer_expression "*param_5" (* "*") (identifier "param_5")) (+ "+") (number_literal "0x24")) () ")"))))) () ")")) (argument_list "(param_5)" (( "(") (identifier "param_5") () ")")))) (; ";")) (expression_statement "bVar3 = iVar2 == -1;" (assignment_expression "bVar3 = iVar2 == -1" (identifier "bVar3") (= "=") (binary_expression "iVar2 == -1" (identifier "iVar2") (== "==") (number_literal "-1"))) (; ";")) (} "}"))) (} "}")) (else_clause "else {\n    bVar3 = false;\n  }" (else "else") (compound_statement "{\n    bVar3 = false;\n  }" ({ "{") (expression_statement "bVar3 = false;" (assignment_expression "bVar3 = false" (identifier "bVar3") (= "=") (false "false")) (; ";")) (} "}")))))) (if_statement "if (bVar4 == bVar3) {\n    *param_8 = *param_8 | 2;\n  }" (if "if") (parenthesized_expression "(bVar4 == bVar3)" (( "(") (binary_expression "bVar4 == bVar3" (identifier "bVar4") (== "==") (identifier "bVar3")) () ")")) (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 "param_8")) (= "=") (binary_expression "*param_8 | 2" (pointer_expression "*param_8" (* "*") (identifier "param_8")) (| "|") (number_literal "2"))) (; ";")) (} "}"))) (expression_statement "*param_1 = local_38;" (assignment_expression "*param_1 = local_38" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (= "=") (identifier "local_38")) (; ";")) (expression_statement "param_1[1] = local_34;" (assignment_expression "param_1[1] = local_34" (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]")) (= "=") (identifier "local_34")) (; ";")) (return_statement "return param_1;" (return "return") (identifier "param_1") (; ";")) (} "}")))
(translation_unit (function_definition type: (type_identifier) declarator: (pointer_declarator declarator: (function_declarator declarator: (identifier) parameters: (parameter_list (parameter_declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (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: (primitive_type) declarator: (identifier)) (parameter_declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (parameter_declaration type: (type_identifier) declarator: (identifier)) (parameter_declaration type: (primitive_type) declarator: (identifier)) (parameter_declaration type: (primitive_type) declarator: (identifier))))) body: (compound_statement (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (expression_statement (binary_expression left: (binary_expression left: (assignment_expression left: (identifier) right: (identifier)) (ERROR (identifier)) right: (identifier)) (ERROR (identifier)) right: (binary_expression left: (identifier) right: (parenthesized_expression (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (number_literal))) (if_statement condition: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (number_literal)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (identifier))) right: (number_literal))))) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (number_literal))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (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: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (identifier))) right: (number_literal)))))))) arguments: (argument_list (identifier) (number_literal))))))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (char_literal (escape_sequence)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (char_literal (escape_sequence)))) (expression_statement (assignment_expression left: (identifier) right: (identifier)))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (number_literal)))))) (labeled_statement label: (statement_identifier) (ERROR (comma_expression left: (binary_expression left: (identifier) right: (identifier)) right: (identifier)) (comma_expression left: (binary_expression left: (identifier) right: (identifier)) right: (identifier))) (expression_statement (binary_expression left: (identifier) right: (binary_expression left: (identifier) (ERROR) right: (call_expression function: (identifier) arguments: (argument_list (pointer_expression argument: (identifier)) (identifier) (identifier) (identifier) (identifier) (identifier) (identifier) (identifier) (identifier) (pointer_expression argument: (identifier)))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) alternative: (else_clause (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (false))) (if_statement condition: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (subscript_expression argument: (identifier) index: (number_literal))) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (subscript_expression argument: (identifier) index: (number_literal))))) consequence: (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: (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))))))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (false)))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) alternative: (else_clause (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (false))) (if_statement condition: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (subscript_expression argument: (identifier) index: (number_literal))) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (subscript_expression argument: (identifier) index: (number_literal))))) consequence: (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))))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (false)))))))) (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 (identifier)))))

undefined4 *
MASKED(undefined4 *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,
            int *param_5,int param_6,int param_7,uint *param_8,undefined4 param_9,char param_10,
            char param_11)

{
  ctype *pcVar1;
  int iVar2;
  bool bVar3;
  bool bVar4;
  ctype local_40;
  char local_3f;
  char local_3e;
  undefined1 local_3d;
  int *local_38;
  int local_34;
  ctype *local_30;
  
  pcVar1 = std::use_facet<std::ctype<char>>((locale *)(param_7 + 0x6c));
  *param_8 = 0;
  if (pcVar1[0x1c] == (ctype)0x0) {
    local_30 = pcVar1;
    (*(code *)PTR__M_widen_init_004c22c0)(pcVar1);
    if (*(code **)(*(int *)local_30 + 0x18) == (code *)PTR_do_widen_004c22d4) {
      local_40 = (ctype)0x25;
    }
    else {
      local_40 = (ctype)(**(code **)(*(int *)local_30 + 0x18))(local_30,0x25);
    }
  }
  else {
    local_40 = pcVar1[0x42];
  }
  if (param_11 == '\0') {
    local_3e = '\0';
    local_3f = param_10;
  }
  else {
    local_3f = param_11;
    local_3e = param_10;
    local_3d = 0;
  }
  std::time_get<char,std::istreambuf_iterator<char,std::char_traits<char>>>::_M_extract_via_format
            (&local_38,param_2,param_3,param_4,param_5,param_6,param_7,param_8,param_9,&local_40);
  if (local_38 == (int *)0x0) {
    bVar4 = local_34 == -1;
  }
  else if (local_34 == -1) {
    bVar4 = false;
    if ((uint)local_38[3] <= (uint)local_38[2]) {
      iVar2 = (**(code **)(*local_38 + 0x24))(local_38);
      bVar4 = iVar2 == -1;
      if (iVar2 == -1) {
        local_38 = (int *)0x0;
      }
    }
  }
  else {
    bVar4 = false;
  }
  if (param_5 == (int *)0x0) {
    bVar3 = param_6 == -1;
  }
  else if (param_6 == -1) {
    bVar3 = false;
    if ((uint)param_5[3] <= (uint)param_5[2]) {
      iVar2 = (**(code **)(*param_5 + 0x24))(param_5);
      bVar3 = iVar2 == -1;
    }
  }
  else {
    bVar3 = false;
  }
  if (bVar4 == bVar3) {
    *param_8 = *param_8 | 2;
  }
  *param_1 = local_38;
  param_1[1] = local_34;
  return param_1;
}

