
/* std::time_put<char, std::ostreambuf_iterator<char, std::char_traits<char> >
   >::do_put(std::ostreambuf_iterator<char, std::char_traits<char> >, std::ios_base&, char, tm
   const*, char, char) const */

undefined1  [16]
std::time_put<char,std::ostreambuf_iterator<char,std::char_traits<char>>>::do_put
          (undefined8 param_1,long *param_2,char param_3,long param_4,undefined8 param_5,tm *param_6
          ,char param_7,char param_8)

{
  uint uVar1;
  uint uVar2;
  ctype *this;
  __timepunct *this_00;
  char *pcVar3;
  uint *puVar4;
  uint *puVar5;
  char *pcVar6;
  bool bVar7;
  undefined1 auVar8 [16];
  ctype local_bc;
  char local_bb;
  char local_ba;
  undefined1 local_b9;
  uint local_b8 [34];
  
  this = use_facet<std::ctype<char>>((locale *)(param_4 + 0xd0));
  this_00 = use_facet<std::__timepunct<char>>((locale *)(param_4 + 0xd0));
  if (this[0x38] == (ctype)0x0) {
    ctype<char>::_M_widen_init((ctype<char> *)this);
    local_bc = (ctype)0x25;
    if (*(code **)(*(long *)this + 0x30) != (code *)PTR_do_widen_004b9fd8) {
      local_bc = (ctype)(**(code **)(*(long *)this + 0x30))(this,0x25);
    }
  }
  else {
    local_bc = this[0x5e];
  }
  if (param_8 == '\0') {
    local_ba = '\0';
    local_bb = param_7;
  }
  else {
    local_b9 = 0;
    local_bb = param_8;
    local_ba = param_7;
  }
  __timepunct<char>::_M_put
            ((__timepunct<char> *)this_00,(char *)local_b8,0x80,(char *)&local_bc,param_6);
  puVar5 = local_b8;
  do {
    puVar4 = puVar5;
    uVar1 = *puVar4 + 0xfefefeff & ~*puVar4;
    uVar2 = uVar1 & 0x80808080;
    puVar5 = puVar4 + 1;
  } while (uVar2 == 0);
  bVar7 = (uVar1 & 0x8080) == 0;
  if (bVar7) {
    uVar2 = uVar2 >> 0x10;
  }
  if (bVar7) {
    puVar5 = (uint *)((long)puVar4 + 6);
  }
  pcVar6 = (char *)((long)puVar5 + ((-3 - (ulong)CARRY1((byte)uVar2,(byte)uVar2)) - (long)local_b8))
  ;
  if (param_3 == '\0') {
    pcVar3 = (char *)(**(code **)(*param_2 + 0x60))(param_2,local_b8,pcVar6);
    if (pcVar6 != pcVar3) {
      param_3 = '\x01';
    }
  }
  auVar8[8] = param_3;
  auVar8._0_8_ = param_2;
  auVar8._9_7_ = 0;
  return auVar8;
}



undefined1  [16]
FUN_0034bca0(undefined8 param_1,long *param_2,char param_3,long param_4,undefined8 param_5,
            undefined8 param_6,char param_7,char param_8)

{
  uint uVar1;
  uint uVar2;
  long *plVar3;
  undefined8 uVar4;
  long lVar5;
  uint *puVar6;
  uint *puVar7;
  long lVar8;
  bool bVar9;
  undefined1 auVar10 [16];
  undefined1 local_bc;
  char local_bb;
  char local_ba;
  undefined1 local_b9;
  uint local_b8 [34];
  
  plVar3 = (long *)FUN_0034a440(param_4 + 0xd0);
  uVar4 = FUN_0034bc50(param_4 + 0xd0);
  if ((char)plVar3[7] == '\0') {
    FUN_003778a0(plVar3);
    local_bc = 0x25;
    if (*(code **)(*plVar3 + 0x30) != (code *)PTR_FUN_004b9fd8) {
      local_bc = (**(code **)(*plVar3 + 0x30))(plVar3,0x25);
    }
  }
  else {
    local_bc = *(undefined1 *)((long)plVar3 + 0x5e);
  }
  if (param_8 == '\0') {
    local_ba = '\0';
    local_bb = param_7;
  }
  else {
    local_b9 = 0;
    local_bb = param_8;
    local_ba = param_7;
  }
  FUN_00379fc0(uVar4,local_b8,0x80,&local_bc,param_6);
  puVar7 = local_b8;
  do {
    puVar6 = puVar7;
    uVar1 = *puVar6 + 0xfefefeff & ~*puVar6;
    uVar2 = uVar1 & 0x80808080;
    puVar7 = puVar6 + 1;
  } while (uVar2 == 0);
  bVar9 = (uVar1 & 0x8080) == 0;
  if (bVar9) {
    uVar2 = uVar2 >> 0x10;
  }
  if (bVar9) {
    puVar7 = (uint *)((long)puVar6 + 6);
  }
  lVar8 = (long)puVar7 + ((-3 - (ulong)CARRY1((byte)uVar2,(byte)uVar2)) - (long)local_b8);
  if (param_3 == '\0') {
    lVar5 = (**(code **)(*param_2 + 0x60))(param_2,local_b8,lVar8);
    if (lVar8 != lVar5) {
      param_3 = '\x01';
    }
  }
  auVar10[8] = param_3;
  auVar10._0_8_ = param_2;
  auVar10._9_7_ = 0;
  return auVar10;
}


PUSH R15
PUSH R14
PUSH R13
PUSH R12
MOV R12,RDX
PUSH RBP
MOV RBP,RSI
PUSH RBX
LEA RBX,[RCX + 0xd0]
MOV RDI,RBX
SUB RSP,0xa8
MOV qword ptr [RSP + 0x8],R9
MOV R15D,dword ptr [RSP + 0xe0]
MOV R13D,dword ptr [RSP + 0xe8]
CALL 0x0034a440
MOV RDI,RBX
MOV R14,RAX
CALL 0x0034bc50
CMP byte ptr [R14 + 0x38],0x0
MOV RBX,RAX
JZ 0x0034bdc0
MOVZX EAX,byte ptr [R14 + 0x5e]
MOV byte ptr [RSP + 0x1c],AL
TEST R13B,R13B
JZ 0x0034bdb0
MOV byte ptr [RSP + 0x1d],R13B
MOV byte ptr [RSP + 0x1e],R15B
MOV byte ptr [RSP + 0x1f],0x0
LEA R13,[RSP + 0x20]
MOV R8,qword ptr [RSP + 0x8]
MOV RDI,RBX
LEA RCX,[RSP + 0x1c]
MOV EDX,0x80
MOV RSI,R13
MOV RBX,R13
CALL 0x00379fc0
MOV EDX,dword ptr [RBX]
ADD RBX,0x4
LEA EAX,[RDX + -0x1010101]
NOT EDX
AND EAX,EDX
AND EAX,0x80808080
JZ 0x0034bd37
MOV EDX,EAX
MOV R14D,R12D
SHR EDX,0x10
TEST EAX,0x8080
CMOVZ EAX,EDX
LEA RDX,[RBX + 0x2]
CMOVZ RBX,RDX
MOV ESI,EAX
ADD SIL,AL
SBB RBX,0x3
SUB RBX,R13
TEST R12B,R12B
JNZ 0x0034bd93
MOV RAX,qword ptr [RBP]
MOV RDX,RBX
MOV RSI,R13
MOV RDI,RBP
CALL qword ptr [RAX + 0x60]
CMP RBX,RAX
MOV EAX,0x1
CMOVNZ R14D,EAX
ADD RSP,0xa8
XOR EDX,EDX
MOV RAX,RBP
POP RBX
MOV DL,R14B
POP RBP
POP R12
POP R13
POP R14
POP R15
RET
MOV byte ptr [RSP + 0x1d],R15B
MOV byte ptr [RSP + 0x1e],0x0
JMP 0x0034bd15
MOV RDI,R14
CALL 0x003778a0
MOV RAX,qword ptr [R14]
MOV RCX,qword ptr [RAX + 0x30]
CMP RCX,qword ptr [0x004b9fd8]
MOV EAX,0x25
JZ 0x0034bcf9
MOV ESI,0x25
MOV RDI,R14
CALL RCX
JMP 0x0034bcf9
(translation_unit "undefined1  [16]\nFUN_0034bca0(undefined8 param_1,long *param_2,char param_3,long param_4,undefined8 param_5,\n            undefined8 param_6,char param_7,char param_8)\n\n{\n  uint uVar1;\n  uint uVar2;\n  long *plVar3;\n  undefined8 uVar4;\n  long lVar5;\n  uint *puVar6;\n  uint *puVar7;\n  long lVar8;\n  bool bVar9;\n  undefined1 auVar10 [16];\n  undefined1 local_bc;\n  char local_bb;\n  char local_ba;\n  undefined1 local_b9;\n  uint local_b8 [34];\n  \n  plVar3 = (long *)FUN_0034a440(param_4 + 0xd0);\n  uVar4 = FUN_0034bc50(param_4 + 0xd0);\n  if ((char)plVar3[7] == '\0') {\n    FUN_003778a0(plVar3);\n    local_bc = 0x25;\n    if (*(code **)(*plVar3 + 0x30) != (code *)PTR_FUN_004b9fd8) {\n      local_bc = (**(code **)(*plVar3 + 0x30))(plVar3,0x25);\n    }\n  }\n  else {\n    local_bc = *(undefined1 *)((long)plVar3 + 0x5e);\n  }\n  if (param_8 == '\0') {\n    local_ba = '\0';\n    local_bb = param_7;\n  }\n  else {\n    local_b9 = 0;\n    local_bb = param_8;\n    local_ba = param_7;\n  }\n  FUN_00379fc0(uVar4,local_b8,0x80,&local_bc,param_6);\n  puVar7 = local_b8;\n  do {\n    puVar6 = puVar7;\n    uVar1 = *puVar6 + 0xfefefeff & ~*puVar6;\n    uVar2 = uVar1 & 0x80808080;\n    puVar7 = puVar6 + 1;\n  } while (uVar2 == 0);\n  bVar9 = (uVar1 & 0x8080) == 0;\n  if (bVar9) {\n    uVar2 = uVar2 >> 0x10;\n  }\n  if (bVar9) {\n    puVar7 = (uint *)((long)puVar6 + 6);\n  }\n  lVar8 = (long)puVar7 + ((-3 - (ulong)CARRY1((byte)uVar2,(byte)uVar2)) - (long)local_b8);\n  if (param_3 == '\0') {\n    lVar5 = (**(code **)(*param_2 + 0x60))(param_2,local_b8,lVar8);\n    if (lVar8 != lVar5) {\n      param_3 = '\x01';\n    }\n  }\n  auVar10[8] = param_3;\n  auVar10._0_8_ = param_2;\n  auVar10._9_7_ = 0;\n  return auVar10;\n}\n\n" (expression_statement "undefined1  [16]" (subscript_expression "undefined1  [16]" identifier [ number_literal ]) ;) (declaration "FUN_0034bca0(undefined8 param_1,long *param_2,char param_3,long param_4,undefined8 param_5,\n            undefined8 param_6,char param_7,char param_8)\n\n{\n  uint uVar1;" (macro_type_specifier "FUN_0034bca0(undefined8" identifier ( (type_descriptor "undefined8" type_identifier) )) identifier , (ERROR "long" identifier) (pointer_declarator "*param_2" * identifier) , (ERROR "char" identifier) identifier , (ERROR "long" identifier) identifier , identifier (ERROR "param_5" identifier) , identifier (ERROR "param_6" identifier) , (ERROR "char" identifier) identifier , (ERROR "char param_8)\n\n{\n  uint" identifier identifier ) { identifier) identifier ;) (declaration "uint uVar2;" type_identifier identifier ;) (declaration "long *plVar3;" (sized_type_specifier "long" long) (pointer_declarator "*plVar3" * identifier) ;) (declaration "undefined8 uVar4;" type_identifier identifier ;) (declaration "long lVar5;" (sized_type_specifier "long" long) identifier ;) (declaration "uint *puVar6;" type_identifier (pointer_declarator "*puVar6" * identifier) ;) (declaration "uint *puVar7;" type_identifier (pointer_declarator "*puVar7" * identifier) ;) (declaration "long lVar8;" (sized_type_specifier "long" long) identifier ;) (declaration "bool bVar9;" primitive_type identifier ;) (declaration "undefined1 auVar10 [16];" type_identifier (array_declarator "auVar10 [16]" identifier [ number_literal ]) ;) (declaration "undefined1 local_bc;" type_identifier identifier ;) (declaration "char local_bb;" primitive_type identifier ;) (declaration "char local_ba;" primitive_type identifier ;) (declaration "undefined1 local_b9;" type_identifier identifier ;) (declaration "uint local_b8 [34];" type_identifier (array_declarator "local_b8 [34]" identifier [ number_literal ]) ;) (expression_statement "plVar3 = (long *)FUN_0034a440(param_4 + 0xd0);" (assignment_expression "plVar3 = (long *)FUN_0034a440(param_4 + 0xd0)" identifier = (cast_expression "(long *)FUN_0034a440(param_4 + 0xd0)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_0034a440(param_4 + 0xd0)" identifier (argument_list "(param_4 + 0xd0)" ( (binary_expression "param_4 + 0xd0" identifier + number_literal) ))))) ;) (expression_statement "uVar4 = FUN_0034bc50(param_4 + 0xd0);" (assignment_expression "uVar4 = FUN_0034bc50(param_4 + 0xd0)" identifier = (call_expression "FUN_0034bc50(param_4 + 0xd0)" identifier (argument_list "(param_4 + 0xd0)" ( (binary_expression "param_4 + 0xd0" identifier + number_literal) )))) ;) (if_statement "if ((char)plVar3[7] == '\0') {\n    FUN_003778a0(plVar3);\n    local_bc = 0x25;\n    if (*(code **)(*plVar3 + 0x30) != (code *)PTR_FUN_004b9fd8) {\n      local_bc = (**(code **)(*plVar3 + 0x30))(plVar3,0x25);\n    }\n  }\n  else {\n    local_bc = *(undefined1 *)((long)plVar3 + 0x5e);\n  }" if (parenthesized_expression "((char)plVar3[7] == '\0')" ( (binary_expression "(char)plVar3[7] == '\0'" (cast_expression "(char)plVar3[7]" ( (type_descriptor "char" primitive_type) ) (subscript_expression "plVar3[7]" identifier [ number_literal ])) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    FUN_003778a0(plVar3);\n    local_bc = 0x25;\n    if (*(code **)(*plVar3 + 0x30) != (code *)PTR_FUN_004b9fd8) {\n      local_bc = (**(code **)(*plVar3 + 0x30))(plVar3,0x25);\n    }\n  }" { (expression_statement "FUN_003778a0(plVar3);" (call_expression "FUN_003778a0(plVar3)" identifier (argument_list "(plVar3)" ( identifier ))) ;) (expression_statement "local_bc = 0x25;" (assignment_expression "local_bc = 0x25" identifier = number_literal) ;) (if_statement "if (*(code **)(*plVar3 + 0x30) != (code *)PTR_FUN_004b9fd8) {\n      local_bc = (**(code **)(*plVar3 + 0x30))(plVar3,0x25);\n    }" if (parenthesized_expression "(*(code **)(*plVar3 + 0x30) != (code *)PTR_FUN_004b9fd8)" ( (binary_expression "*(code **)(*plVar3 + 0x30) != (code *)PTR_FUN_004b9fd8" (pointer_expression "*(code **)(*plVar3 + 0x30)" * (cast_expression "(code **)(*plVar3 + 0x30)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*plVar3 + 0x30)" ( (binary_expression "*plVar3 + 0x30" (pointer_expression "*plVar3" * identifier) + number_literal) )))) != (cast_expression "(code *)PTR_FUN_004b9fd8" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (compound_statement "{\n      local_bc = (**(code **)(*plVar3 + 0x30))(plVar3,0x25);\n    }" { (expression_statement "local_bc = (**(code **)(*plVar3 + 0x30))(plVar3,0x25);" (assignment_expression "local_bc = (**(code **)(*plVar3 + 0x30))(plVar3,0x25)" identifier = (call_expression "(**(code **)(*plVar3 + 0x30))(plVar3,0x25)" (parenthesized_expression "(**(code **)(*plVar3 + 0x30))" ( (pointer_expression "**(code **)(*plVar3 + 0x30)" * (pointer_expression "*(code **)(*plVar3 + 0x30)" * (cast_expression "(code **)(*plVar3 + 0x30)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*plVar3 + 0x30)" ( (binary_expression "*plVar3 + 0x30" (pointer_expression "*plVar3" * identifier) + number_literal) ))))) )) (argument_list "(plVar3,0x25)" ( identifier , number_literal )))) ;) })) }) (else_clause "else {\n    local_bc = *(undefined1 *)((long)plVar3 + 0x5e);\n  }" else (compound_statement "{\n    local_bc = *(undefined1 *)((long)plVar3 + 0x5e);\n  }" { (expression_statement "local_bc = *(undefined1 *)((long)plVar3 + 0x5e);" (assignment_expression "local_bc = *(undefined1 *)((long)plVar3 + 0x5e)" identifier = (pointer_expression "*(undefined1 *)((long)plVar3 + 0x5e)" * (cast_expression "(undefined1 *)((long)plVar3 + 0x5e)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)plVar3 + 0x5e)" ( (binary_expression "(long)plVar3 + 0x5e" (cast_expression "(long)plVar3" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) ))))) ;) }))) (if_statement "if (param_8 == '\0') {\n    local_ba = '\0';\n    local_bb = param_7;\n  }\n  else {\n    local_b9 = 0;\n    local_bb = param_8;\n    local_ba = param_7;\n  }" if (parenthesized_expression "(param_8 == '\0')" ( (binary_expression "param_8 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    local_ba = '\0';\n    local_bb = param_7;\n  }" { (expression_statement "local_ba = '\0';" (assignment_expression "local_ba = '\0'" identifier = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "local_bb = param_7;" (assignment_expression "local_bb = param_7" identifier = identifier) ;) }) (else_clause "else {\n    local_b9 = 0;\n    local_bb = param_8;\n    local_ba = param_7;\n  }" else (compound_statement "{\n    local_b9 = 0;\n    local_bb = param_8;\n    local_ba = param_7;\n  }" { (expression_statement "local_b9 = 0;" (assignment_expression "local_b9 = 0" identifier = number_literal) ;) (expression_statement "local_bb = param_8;" (assignment_expression "local_bb = param_8" identifier = identifier) ;) (expression_statement "local_ba = param_7;" (assignment_expression "local_ba = param_7" identifier = identifier) ;) }))) (expression_statement "FUN_00379fc0(uVar4,local_b8,0x80,&local_bc,param_6);" (call_expression "FUN_00379fc0(uVar4,local_b8,0x80,&local_bc,param_6)" identifier (argument_list "(uVar4,local_b8,0x80,&local_bc,param_6)" ( identifier , identifier , number_literal , (pointer_expression "&local_bc" & identifier) , identifier ))) ;) (expression_statement "puVar7 = local_b8;" (assignment_expression "puVar7 = local_b8" identifier = identifier) ;) (do_statement "do {\n    puVar6 = puVar7;\n    uVar1 = *puVar6 + 0xfefefeff & ~*puVar6;\n    uVar2 = uVar1 & 0x80808080;\n    puVar7 = puVar6 + 1;\n  } while (uVar2 == 0);" do (compound_statement "{\n    puVar6 = puVar7;\n    uVar1 = *puVar6 + 0xfefefeff & ~*puVar6;\n    uVar2 = uVar1 & 0x80808080;\n    puVar7 = puVar6 + 1;\n  }" { (expression_statement "puVar6 = puVar7;" (assignment_expression "puVar6 = puVar7" identifier = identifier) ;) (expression_statement "uVar1 = *puVar6 + 0xfefefeff & ~*puVar6;" (assignment_expression "uVar1 = *puVar6 + 0xfefefeff & ~*puVar6" identifier = (binary_expression "*puVar6 + 0xfefefeff & ~*puVar6" (binary_expression "*puVar6 + 0xfefefeff" (pointer_expression "*puVar6" * identifier) + number_literal) & (unary_expression "~*puVar6" ~ (pointer_expression "*puVar6" * identifier)))) ;) (expression_statement "uVar2 = uVar1 & 0x80808080;" (assignment_expression "uVar2 = uVar1 & 0x80808080" identifier = (binary_expression "uVar1 & 0x80808080" identifier & number_literal)) ;) (expression_statement "puVar7 = puVar6 + 1;" (assignment_expression "puVar7 = puVar6 + 1" identifier = (binary_expression "puVar6 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar2 == 0)" ( (binary_expression "uVar2 == 0" identifier == number_literal) )) ;) (expression_statement "bVar9 = (uVar1 & 0x8080) == 0;" (assignment_expression "bVar9 = (uVar1 & 0x8080) == 0" identifier = (binary_expression "(uVar1 & 0x8080) == 0" (parenthesized_expression "(uVar1 & 0x8080)" ( (binary_expression "uVar1 & 0x8080" identifier & number_literal) )) == number_literal)) ;) (if_statement "if (bVar9) {\n    uVar2 = uVar2 >> 0x10;\n  }" if (parenthesized_expression "(bVar9)" ( identifier )) (compound_statement "{\n    uVar2 = uVar2 >> 0x10;\n  }" { (expression_statement "uVar2 = uVar2 >> 0x10;" (assignment_expression "uVar2 = uVar2 >> 0x10" identifier = (binary_expression "uVar2 >> 0x10" identifier >> number_literal)) ;) })) (if_statement "if (bVar9) {\n    puVar7 = (uint *)((long)puVar6 + 6);\n  }" if (parenthesized_expression "(bVar9)" ( identifier )) (compound_statement "{\n    puVar7 = (uint *)((long)puVar6 + 6);\n  }" { (expression_statement "puVar7 = (uint *)((long)puVar6 + 6);" (assignment_expression "puVar7 = (uint *)((long)puVar6 + 6)" identifier = (cast_expression "(uint *)((long)puVar6 + 6)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)puVar6 + 6)" ( (binary_expression "(long)puVar6 + 6" (cast_expression "(long)puVar6" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) ;) })) (expression_statement "lVar8 = (long)puVar7 + ((-3 - (ulong)CARRY1((byte)uVar2,(byte)uVar2)) - (long)local_b8);" (assignment_expression "lVar8 = (long)puVar7 + ((-3 - (ulong)CARRY1((byte)uVar2,(byte)uVar2)) - (long)local_b8)" identifier = (binary_expression "(long)puVar7 + ((-3 - (ulong)CARRY1((byte)uVar2,(byte)uVar2)) - (long)local_b8)" (cast_expression "(long)puVar7" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + (parenthesized_expression "((-3 - (ulong)CARRY1((byte)uVar2,(byte)uVar2)) - (long)local_b8)" ( (binary_expression "(-3 - (ulong)CARRY1((byte)uVar2,(byte)uVar2)) - (long)local_b8" (parenthesized_expression "(-3 - (ulong)CARRY1((byte)uVar2,(byte)uVar2))" ( (binary_expression "-3 - (ulong)CARRY1((byte)uVar2,(byte)uVar2)" number_literal - (cast_expression "(ulong)CARRY1((byte)uVar2,(byte)uVar2)" ( (type_descriptor "ulong" type_identifier) ) (call_expression "CARRY1((byte)uVar2,(byte)uVar2)" identifier (argument_list "((byte)uVar2,(byte)uVar2)" ( (cast_expression "(byte)uVar2" ( (type_descriptor "byte" type_identifier) ) identifier) , (cast_expression "(byte)uVar2" ( (type_descriptor "byte" type_identifier) ) identifier) ))))) )) - (cast_expression "(long)local_b8" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) )))) ;) (if_statement "if (param_3 == '\0') {\n    lVar5 = (**(code **)(*param_2 + 0x60))(param_2,local_b8,lVar8);\n    if (lVar8 != lVar5) {\n      param_3 = '\x01';\n    }\n  }" if (parenthesized_expression "(param_3 == '\0')" ( (binary_expression "param_3 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    lVar5 = (**(code **)(*param_2 + 0x60))(param_2,local_b8,lVar8);\n    if (lVar8 != lVar5) {\n      param_3 = '\x01';\n    }\n  }" { (expression_statement "lVar5 = (**(code **)(*param_2 + 0x60))(param_2,local_b8,lVar8);" (assignment_expression "lVar5 = (**(code **)(*param_2 + 0x60))(param_2,local_b8,lVar8)" identifier = (call_expression "(**(code **)(*param_2 + 0x60))(param_2,local_b8,lVar8)" (parenthesized_expression "(**(code **)(*param_2 + 0x60))" ( (pointer_expression "**(code **)(*param_2 + 0x60)" * (pointer_expression "*(code **)(*param_2 + 0x60)" * (cast_expression "(code **)(*param_2 + 0x60)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_2 + 0x60)" ( (binary_expression "*param_2 + 0x60" (pointer_expression "*param_2" * identifier) + number_literal) ))))) )) (argument_list "(param_2,local_b8,lVar8)" ( identifier , identifier , identifier )))) ;) (if_statement "if (lVar8 != lVar5) {\n      param_3 = '\x01';\n    }" if (parenthesized_expression "(lVar8 != lVar5)" ( (binary_expression "lVar8 != lVar5" identifier != identifier) )) (compound_statement "{\n      param_3 = '\x01';\n    }" { (expression_statement "param_3 = '\x01';" (assignment_expression "param_3 = '\x01'" identifier = (char_literal "'\x01'" ' escape_sequence ')) ;) })) })) (expression_statement "auVar10[8] = param_3;" (assignment_expression "auVar10[8] = param_3" (subscript_expression "auVar10[8]" identifier [ number_literal ]) = identifier) ;) (expression_statement "auVar10._0_8_ = param_2;" (assignment_expression "auVar10._0_8_ = param_2" (field_expression "auVar10._0_8_" identifier . field_identifier) = identifier) ;) (expression_statement "auVar10._9_7_ = 0;" (assignment_expression "auVar10._9_7_ = 0" (field_expression "auVar10._9_7_" identifier . field_identifier) = number_literal) ;) (return_statement "return auVar10;" return identifier ;) (ERROR "}" }))
(translation_unit "/* std::time_put<char, std::ostreambuf_iterator<char, std::char_traits<char> >\n   >::do_put(std::ostreambuf_iterator<char, std::char_traits<char> >, std::ios_base&, char, tm\n   const*, char, char) const */\n\nundefined1  [16]\nstd::time_put<char,std::ostreambuf_iterator<char,std::char_traits<char>>>::do_put\n          (undefined8 param_1,long *param_2,char param_3,long param_4,undefined8 param_5,tm *param_6\n          ,char param_7,char param_8)\n\n{\n  uint uVar1;\n  uint uVar2;\n  ctype *this;\n  __timepunct *this_00;\n  char *pcVar3;\n  uint *puVar4;\n  uint *puVar5;\n  char *pcVar6;\n  bool bVar7;\n  undefined1 auVar8 [16];\n  ctype local_bc;\n  char local_bb;\n  char local_ba;\n  undefined1 local_b9;\n  uint local_b8 [34];\n  \n  this = use_facet<std::ctype<char>>((locale *)(param_4 + 0xd0));\n  this_00 = use_facet<std::__timepunct<char>>((locale *)(param_4 + 0xd0));\n  if (this[0x38] == (ctype)0x0) {\n    ctype<char>::_M_widen_init((ctype<char> *)this);\n    local_bc = (ctype)0x25;\n    if (*(code **)(*(long *)this + 0x30) != (code *)PTR_do_widen_004b9fd8) {\n      local_bc = (ctype)(**(code **)(*(long *)this + 0x30))(this,0x25);\n    }\n  }\n  else {\n    local_bc = this[0x5e];\n  }\n  if (param_8 == '\0') {\n    local_ba = '\0';\n    local_bb = param_7;\n  }\n  else {\n    local_b9 = 0;\n    local_bb = param_8;\n    local_ba = param_7;\n  }\n  __timepunct<char>::_M_put\n            ((__timepunct<char> *)this_00,(char *)local_b8,0x80,(char *)&local_bc,param_6);\n  puVar5 = local_b8;\n  do {\n    puVar4 = puVar5;\n    uVar1 = *puVar4 + 0xfefefeff & ~*puVar4;\n    uVar2 = uVar1 & 0x80808080;\n    puVar5 = puVar4 + 1;\n  } while (uVar2 == 0);\n  bVar7 = (uVar1 & 0x8080) == 0;\n  if (bVar7) {\n    uVar2 = uVar2 >> 0x10;\n  }\n  if (bVar7) {\n    puVar5 = (uint *)((long)puVar4 + 6);\n  }\n  pcVar6 = (char *)((long)puVar5 + ((-3 - (ulong)CARRY1((byte)uVar2,(byte)uVar2)) - (long)local_b8))\n  ;\n  if (param_3 == '\0') {\n    pcVar3 = (char *)(**(code **)(*param_2 + 0x60))(param_2,local_b8,pcVar6);\n    if (pcVar6 != pcVar3) {\n      param_3 = '\x01';\n    }\n  }\n  auVar8[8] = param_3;\n  auVar8._0_8_ = param_2;\n  auVar8._9_7_ = 0;\n  return auVar8;\n}\n\n" comment (expression_statement "undefined1  [16]" (subscript_expression "undefined1  [16]" identifier [ number_literal ]) ;) (labeled_statement "std::time_put<char,std::ostreambuf_iterator<char,std::char_traits<char>>>::do_put\n          (undefined8 param_1,long *param_2,char param_3,long param_4,undefined8 param_5,tm *param_6\n          ,char param_7,char param_8)" statement_identifier (ERROR "::time_put<char,std::ostreambuf_iterator<char,std:" : : (comma_expression "time_put<char,std" (binary_expression "time_put<char" identifier < identifier) , identifier) : : (comma_expression "ostreambuf_iterator<char,std" (binary_expression "ostreambuf_iterator<char" identifier < identifier) , identifier) :) : (expression_statement "char_traits<char>>>::do_put\n          (undefined8 param_1,long *param_2,char param_3,long param_4,undefined8 param_5,tm *param_6\n          ,char param_7,char param_8)" (binary_expression "char_traits<char>>>::do_put\n          (undefined8 param_1,long *param_2,char param_3,long param_4,undefined8 param_5,tm *param_6\n          ,char param_7,char param_8)" identifier < (binary_expression "char>>>::do_put\n          (undefined8 param_1,long *param_2,char param_3,long param_4,undefined8 param_5,tm *param_6\n          ,char param_7,char param_8)" identifier >> (ERROR ">::" > : :) (call_expression "do_put\n          (undefined8 param_1,long *param_2,char param_3,long param_4,undefined8 param_5,tm *param_6\n          ,char param_7,char param_8)" identifier (argument_list "(undefined8 param_1,long *param_2,char param_3,long param_4,undefined8 param_5,tm *param_6\n          ,char param_7,char param_8)" ( identifier (ERROR "param_1" identifier) , (binary_expression "long *param_2" identifier * identifier) , (ERROR "char" identifier) identifier , (ERROR "long" identifier) identifier , identifier (ERROR "param_5" identifier) , (binary_expression "tm *param_6" identifier * identifier) , (ERROR "char" identifier) identifier , (ERROR "char" identifier) identifier ))))) ;)) (compound_statement "{\n  uint uVar1;\n  uint uVar2;\n  ctype *this;\n  __timepunct *this_00;\n  char *pcVar3;\n  uint *puVar4;\n  uint *puVar5;\n  char *pcVar6;\n  bool bVar7;\n  undefined1 auVar8 [16];\n  ctype local_bc;\n  char local_bb;\n  char local_ba;\n  undefined1 local_b9;\n  uint local_b8 [34];\n  \n  this = use_facet<std::ctype<char>>((locale *)(param_4 + 0xd0));\n  this_00 = use_facet<std::__timepunct<char>>((locale *)(param_4 + 0xd0));\n  if (this[0x38] == (ctype)0x0) {\n    ctype<char>::_M_widen_init((ctype<char> *)this);\n    local_bc = (ctype)0x25;\n    if (*(code **)(*(long *)this + 0x30) != (code *)PTR_do_widen_004b9fd8) {\n      local_bc = (ctype)(**(code **)(*(long *)this + 0x30))(this,0x25);\n    }\n  }\n  else {\n    local_bc = this[0x5e];\n  }\n  if (param_8 == '\0') {\n    local_ba = '\0';\n    local_bb = param_7;\n  }\n  else {\n    local_b9 = 0;\n    local_bb = param_8;\n    local_ba = param_7;\n  }\n  __timepunct<char>::_M_put\n            ((__timepunct<char> *)this_00,(char *)local_b8,0x80,(char *)&local_bc,param_6);\n  puVar5 = local_b8;\n  do {\n    puVar4 = puVar5;\n    uVar1 = *puVar4 + 0xfefefeff & ~*puVar4;\n    uVar2 = uVar1 & 0x80808080;\n    puVar5 = puVar4 + 1;\n  } while (uVar2 == 0);\n  bVar7 = (uVar1 & 0x8080) == 0;\n  if (bVar7) {\n    uVar2 = uVar2 >> 0x10;\n  }\n  if (bVar7) {\n    puVar5 = (uint *)((long)puVar4 + 6);\n  }\n  pcVar6 = (char *)((long)puVar5 + ((-3 - (ulong)CARRY1((byte)uVar2,(byte)uVar2)) - (long)local_b8))\n  ;\n  if (param_3 == '\0') {\n    pcVar3 = (char *)(**(code **)(*param_2 + 0x60))(param_2,local_b8,pcVar6);\n    if (pcVar6 != pcVar3) {\n      param_3 = '\x01';\n    }\n  }\n  auVar8[8] = param_3;\n  auVar8._0_8_ = param_2;\n  auVar8._9_7_ = 0;\n  return auVar8;\n}" { (declaration "uint uVar1;" type_identifier identifier ;) (declaration "uint uVar2;" type_identifier identifier ;) (declaration "ctype *this;" type_identifier (pointer_declarator "*this" * identifier) ;) (declaration "__timepunct *this_00;" type_identifier (pointer_declarator "*this_00" * identifier) ;) (declaration "char *pcVar3;" primitive_type (pointer_declarator "*pcVar3" * identifier) ;) (declaration "uint *puVar4;" type_identifier (pointer_declarator "*puVar4" * identifier) ;) (declaration "uint *puVar5;" type_identifier (pointer_declarator "*puVar5" * identifier) ;) (declaration "char *pcVar6;" primitive_type (pointer_declarator "*pcVar6" * identifier) ;) (declaration "bool bVar7;" primitive_type identifier ;) (declaration "undefined1 auVar8 [16];" type_identifier (array_declarator "auVar8 [16]" identifier [ number_literal ]) ;) (declaration "ctype local_bc;" type_identifier identifier ;) (declaration "char local_bb;" primitive_type identifier ;) (declaration "char local_ba;" primitive_type identifier ;) (declaration "undefined1 local_b9;" type_identifier identifier ;) (declaration "uint local_b8 [34];" type_identifier (array_declarator "local_b8 [34]" identifier [ number_literal ]) ;) (expression_statement "this = use_facet<std::ctype<char>>((locale *)(param_4 + 0xd0));" (binary_expression "this = use_facet<std::ctype<char>>((locale *)(param_4 + 0xd0))" (assignment_expression "this = use_facet<std" identifier = (binary_expression "use_facet<std" identifier < identifier)) (ERROR "::ctype" : : identifier) < (binary_expression "char>>((locale *)(param_4 + 0xd0))" identifier >> (parenthesized_expression "((locale *)(param_4 + 0xd0))" ( (cast_expression "(locale *)(param_4 + 0xd0)" ( (type_descriptor "locale *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_4 + 0xd0)" ( (binary_expression "param_4 + 0xd0" identifier + number_literal) ))) )))) ;) (expression_statement "this_00 = use_facet<std::__timepunct<char>>((locale *)(param_4 + 0xd0));" (binary_expression "this_00 = use_facet<std::__timepunct<char>>((locale *)(param_4 + 0xd0))" (assignment_expression "this_00 = use_facet<std" identifier = (binary_expression "use_facet<std" identifier < identifier)) (ERROR "::__timepunct" : : identifier) < (binary_expression "char>>((locale *)(param_4 + 0xd0))" identifier >> (parenthesized_expression "((locale *)(param_4 + 0xd0))" ( (cast_expression "(locale *)(param_4 + 0xd0)" ( (type_descriptor "locale *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_4 + 0xd0)" ( (binary_expression "param_4 + 0xd0" identifier + number_literal) ))) )))) ;) (if_statement "if (this[0x38] == (ctype)0x0) {\n    ctype<char>::_M_widen_init((ctype<char> *)this);\n    local_bc = (ctype)0x25;\n    if (*(code **)(*(long *)this + 0x30) != (code *)PTR_do_widen_004b9fd8) {\n      local_bc = (ctype)(**(code **)(*(long *)this + 0x30))(this,0x25);\n    }\n  }\n  else {\n    local_bc = this[0x5e];\n  }" if (parenthesized_expression "(this[0x38] == (ctype)0x0)" ( (binary_expression "this[0x38] == (ctype)0x0" (subscript_expression "this[0x38]" identifier [ number_literal ]) == (cast_expression "(ctype)0x0" ( (type_descriptor "ctype" type_identifier) ) number_literal)) )) (compound_statement "{\n    ctype<char>::_M_widen_init((ctype<char> *)this);\n    local_bc = (ctype)0x25;\n    if (*(code **)(*(long *)this + 0x30) != (code *)PTR_do_widen_004b9fd8) {\n      local_bc = (ctype)(**(code **)(*(long *)this + 0x30))(this,0x25);\n    }\n  }" { (expression_statement "ctype<char>::_M_widen_init((ctype<char> *)this);" (binary_expression "ctype<char>::_M_widen_init((ctype<char> *)this)" (binary_expression "ctype<char" identifier < identifier) > (ERROR "::" : :) (call_expression "_M_widen_init((ctype<char> *)this)" identifier (argument_list "((ctype<char> *)this)" ( (parenthesized_expression "(ctype<char> *)this)" ( (binary_expression "ctype<char> *)this" (binary_expression "ctype<char" identifier < identifier) > (pointer_expression "*)this" * (ERROR ")" )) identifier)) )) )))) ;) (expression_statement "local_bc = (ctype)0x25;" (assignment_expression "local_bc = (ctype)0x25" identifier = (cast_expression "(ctype)0x25" ( (type_descriptor "ctype" type_identifier) ) number_literal)) ;) (if_statement "if (*(code **)(*(long *)this + 0x30) != (code *)PTR_do_widen_004b9fd8) {\n      local_bc = (ctype)(**(code **)(*(long *)this + 0x30))(this,0x25);\n    }" if (parenthesized_expression "(*(code **)(*(long *)this + 0x30) != (code *)PTR_do_widen_004b9fd8)" ( (binary_expression "*(code **)(*(long *)this + 0x30) != (code *)PTR_do_widen_004b9fd8" (pointer_expression "*(code **)(*(long *)this + 0x30)" * (cast_expression "(code **)(*(long *)this + 0x30)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(long *)this + 0x30)" ( (binary_expression "*(long *)this + 0x30" (pointer_expression "*(long *)this" * (cast_expression "(long *)this" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) identifier)) + number_literal) )))) != (cast_expression "(code *)PTR_do_widen_004b9fd8" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (compound_statement "{\n      local_bc = (ctype)(**(code **)(*(long *)this + 0x30))(this,0x25);\n    }" { (expression_statement "local_bc = (ctype)(**(code **)(*(long *)this + 0x30))(this,0x25);" (assignment_expression "local_bc = (ctype)(**(code **)(*(long *)this + 0x30))(this,0x25)" identifier = (call_expression "(ctype)(**(code **)(*(long *)this + 0x30))(this,0x25)" (call_expression "(ctype)(**(code **)(*(long *)this + 0x30))" (parenthesized_expression "(ctype)" ( identifier )) (argument_list "(**(code **)(*(long *)this + 0x30))" ( (pointer_expression "**(code **)(*(long *)this + 0x30)" * (pointer_expression "*(code **)(*(long *)this + 0x30)" * (cast_expression "(code **)(*(long *)this + 0x30)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(long *)this + 0x30)" ( (binary_expression "*(long *)this + 0x30" (pointer_expression "*(long *)this" * (cast_expression "(long *)this" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) identifier)) + number_literal) ))))) ))) (argument_list "(this,0x25)" ( identifier , number_literal )))) ;) })) }) (else_clause "else {\n    local_bc = this[0x5e];\n  }" else (compound_statement "{\n    local_bc = this[0x5e];\n  }" { (expression_statement "local_bc = this[0x5e];" (assignment_expression "local_bc = this[0x5e]" identifier = (subscript_expression "this[0x5e]" identifier [ number_literal ])) ;) }))) (if_statement "if (param_8 == '\0') {\n    local_ba = '\0';\n    local_bb = param_7;\n  }\n  else {\n    local_b9 = 0;\n    local_bb = param_8;\n    local_ba = param_7;\n  }" if (parenthesized_expression "(param_8 == '\0')" ( (binary_expression "param_8 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    local_ba = '\0';\n    local_bb = param_7;\n  }" { (expression_statement "local_ba = '\0';" (assignment_expression "local_ba = '\0'" identifier = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "local_bb = param_7;" (assignment_expression "local_bb = param_7" identifier = identifier) ;) }) (else_clause "else {\n    local_b9 = 0;\n    local_bb = param_8;\n    local_ba = param_7;\n  }" else (compound_statement "{\n    local_b9 = 0;\n    local_bb = param_8;\n    local_ba = param_7;\n  }" { (expression_statement "local_b9 = 0;" (assignment_expression "local_b9 = 0" identifier = number_literal) ;) (expression_statement "local_bb = param_8;" (assignment_expression "local_bb = param_8" identifier = identifier) ;) (expression_statement "local_ba = param_7;" (assignment_expression "local_ba = param_7" identifier = identifier) ;) }))) (expression_statement "__timepunct<char>::_M_put\n            ((__timepunct<char> *)this_00,(char *)local_b8,0x80,(char *)&local_bc,param_6);" (binary_expression "__timepunct<char>::_M_put\n            ((__timepunct<char> *)this_00,(char *)local_b8,0x80,(char *)&local_bc,param_6)" (binary_expression "__timepunct<char" identifier < identifier) > (ERROR "::" : :) (call_expression "_M_put\n            ((__timepunct<char> *)this_00,(char *)local_b8,0x80,(char *)&local_bc,param_6)" identifier (argument_list "((__timepunct<char> *)this_00,(char *)local_b8,0x80,(char *)&local_bc,param_6)" ( (parenthesized_expression "(__timepunct<char> *)this_00,(char *)local_b8,0x80,(char *)&local_bc,param_6)" ( (comma_expression "__timepunct<char> *)this_00,(char *)local_b8,0x80,(char *)&local_bc,param_6" (binary_expression "__timepunct<char> *)this_00" (binary_expression "__timepunct<char" identifier < identifier) > (pointer_expression "*)this_00" * (ERROR ")" )) identifier)) , (comma_expression "(char *)local_b8,0x80,(char *)&local_bc,param_6" (cast_expression "(char *)local_b8" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) , (comma_expression "0x80,(char *)&local_bc,param_6" number_literal , (comma_expression "(char *)&local_bc,param_6" (cast_expression "(char *)&local_bc" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "&local_bc" & identifier)) , identifier)))) )) )))) ;) (expression_statement "puVar5 = local_b8;" (assignment_expression "puVar5 = local_b8" identifier = identifier) ;) (do_statement "do {\n    puVar4 = puVar5;\n    uVar1 = *puVar4 + 0xfefefeff & ~*puVar4;\n    uVar2 = uVar1 & 0x80808080;\n    puVar5 = puVar4 + 1;\n  } while (uVar2 == 0);" do (compound_statement "{\n    puVar4 = puVar5;\n    uVar1 = *puVar4 + 0xfefefeff & ~*puVar4;\n    uVar2 = uVar1 & 0x80808080;\n    puVar5 = puVar4 + 1;\n  }" { (expression_statement "puVar4 = puVar5;" (assignment_expression "puVar4 = puVar5" identifier = identifier) ;) (expression_statement "uVar1 = *puVar4 + 0xfefefeff & ~*puVar4;" (assignment_expression "uVar1 = *puVar4 + 0xfefefeff & ~*puVar4" identifier = (binary_expression "*puVar4 + 0xfefefeff & ~*puVar4" (binary_expression "*puVar4 + 0xfefefeff" (pointer_expression "*puVar4" * identifier) + number_literal) & (unary_expression "~*puVar4" ~ (pointer_expression "*puVar4" * identifier)))) ;) (expression_statement "uVar2 = uVar1 & 0x80808080;" (assignment_expression "uVar2 = uVar1 & 0x80808080" identifier = (binary_expression "uVar1 & 0x80808080" identifier & number_literal)) ;) (expression_statement "puVar5 = puVar4 + 1;" (assignment_expression "puVar5 = puVar4 + 1" identifier = (binary_expression "puVar4 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar2 == 0)" ( (binary_expression "uVar2 == 0" identifier == number_literal) )) ;) (expression_statement "bVar7 = (uVar1 & 0x8080) == 0;" (assignment_expression "bVar7 = (uVar1 & 0x8080) == 0" identifier = (binary_expression "(uVar1 & 0x8080) == 0" (parenthesized_expression "(uVar1 & 0x8080)" ( (binary_expression "uVar1 & 0x8080" identifier & number_literal) )) == number_literal)) ;) (if_statement "if (bVar7) {\n    uVar2 = uVar2 >> 0x10;\n  }" if (parenthesized_expression "(bVar7)" ( identifier )) (compound_statement "{\n    uVar2 = uVar2 >> 0x10;\n  }" { (expression_statement "uVar2 = uVar2 >> 0x10;" (assignment_expression "uVar2 = uVar2 >> 0x10" identifier = (binary_expression "uVar2 >> 0x10" identifier >> number_literal)) ;) })) (if_statement "if (bVar7) {\n    puVar5 = (uint *)((long)puVar4 + 6);\n  }" if (parenthesized_expression "(bVar7)" ( identifier )) (compound_statement "{\n    puVar5 = (uint *)((long)puVar4 + 6);\n  }" { (expression_statement "puVar5 = (uint *)((long)puVar4 + 6);" (assignment_expression "puVar5 = (uint *)((long)puVar4 + 6)" identifier = (cast_expression "(uint *)((long)puVar4 + 6)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)puVar4 + 6)" ( (binary_expression "(long)puVar4 + 6" (cast_expression "(long)puVar4" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) ;) })) (expression_statement "pcVar6 = (char *)((long)puVar5 + ((-3 - (ulong)CARRY1((byte)uVar2,(byte)uVar2)) - (long)local_b8))\n  ;" (assignment_expression "pcVar6 = (char *)((long)puVar5 + ((-3 - (ulong)CARRY1((byte)uVar2,(byte)uVar2)) - (long)local_b8))" identifier = (cast_expression "(char *)((long)puVar5 + ((-3 - (ulong)CARRY1((byte)uVar2,(byte)uVar2)) - (long)local_b8))" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)puVar5 + ((-3 - (ulong)CARRY1((byte)uVar2,(byte)uVar2)) - (long)local_b8))" ( (binary_expression "(long)puVar5 + ((-3 - (ulong)CARRY1((byte)uVar2,(byte)uVar2)) - (long)local_b8)" (cast_expression "(long)puVar5" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + (parenthesized_expression "((-3 - (ulong)CARRY1((byte)uVar2,(byte)uVar2)) - (long)local_b8)" ( (binary_expression "(-3 - (ulong)CARRY1((byte)uVar2,(byte)uVar2)) - (long)local_b8" (parenthesized_expression "(-3 - (ulong)CARRY1((byte)uVar2,(byte)uVar2))" ( (binary_expression "-3 - (ulong)CARRY1((byte)uVar2,(byte)uVar2)" number_literal - (cast_expression "(ulong)CARRY1((byte)uVar2,(byte)uVar2)" ( (type_descriptor "ulong" type_identifier) ) (call_expression "CARRY1((byte)uVar2,(byte)uVar2)" identifier (argument_list "((byte)uVar2,(byte)uVar2)" ( (cast_expression "(byte)uVar2" ( (type_descriptor "byte" type_identifier) ) identifier) , (cast_expression "(byte)uVar2" ( (type_descriptor "byte" type_identifier) ) identifier) ))))) )) - (cast_expression "(long)local_b8" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) ))) )))) ;) (if_statement "if (param_3 == '\0') {\n    pcVar3 = (char *)(**(code **)(*param_2 + 0x60))(param_2,local_b8,pcVar6);\n    if (pcVar6 != pcVar3) {\n      param_3 = '\x01';\n    }\n  }" if (parenthesized_expression "(param_3 == '\0')" ( (binary_expression "param_3 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    pcVar3 = (char *)(**(code **)(*param_2 + 0x60))(param_2,local_b8,pcVar6);\n    if (pcVar6 != pcVar3) {\n      param_3 = '\x01';\n    }\n  }" { (expression_statement "pcVar3 = (char *)(**(code **)(*param_2 + 0x60))(param_2,local_b8,pcVar6);" (assignment_expression "pcVar3 = (char *)(**(code **)(*param_2 + 0x60))(param_2,local_b8,pcVar6)" identifier = (cast_expression "(char *)(**(code **)(*param_2 + 0x60))(param_2,local_b8,pcVar6)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "(**(code **)(*param_2 + 0x60))(param_2,local_b8,pcVar6)" (parenthesized_expression "(**(code **)(*param_2 + 0x60))" ( (pointer_expression "**(code **)(*param_2 + 0x60)" * (pointer_expression "*(code **)(*param_2 + 0x60)" * (cast_expression "(code **)(*param_2 + 0x60)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_2 + 0x60)" ( (binary_expression "*param_2 + 0x60" (pointer_expression "*param_2" * identifier) + number_literal) ))))) )) (argument_list "(param_2,local_b8,pcVar6)" ( identifier , identifier , identifier ))))) ;) (if_statement "if (pcVar6 != pcVar3) {\n      param_3 = '\x01';\n    }" if (parenthesized_expression "(pcVar6 != pcVar3)" ( (binary_expression "pcVar6 != pcVar3" identifier != identifier) )) (compound_statement "{\n      param_3 = '\x01';\n    }" { (expression_statement "param_3 = '\x01';" (assignment_expression "param_3 = '\x01'" identifier = (char_literal "'\x01'" ' escape_sequence ')) ;) })) })) (expression_statement "auVar8[8] = param_3;" (assignment_expression "auVar8[8] = param_3" (subscript_expression "auVar8[8]" identifier [ number_literal ]) = identifier) ;) (expression_statement "auVar8._0_8_ = param_2;" (assignment_expression "auVar8._0_8_ = param_2" (field_expression "auVar8._0_8_" identifier . field_identifier) = identifier) ;) (expression_statement "auVar8._9_7_ = 0;" (assignment_expression "auVar8._9_7_ = 0" (field_expression "auVar8._9_7_" identifier . field_identifier) = number_literal) ;) (return_statement "return auVar8;" return identifier ;) }))
(translation_unit "undefined1  [16]\nFUN_0034bca0(undefined8 param_1,long *param_2,char param_3,long param_4,undefined8 param_5,\n            undefined8 param_6,char param_7,char param_8)\n\n{\n  uint uVar1;\n  uint uVar2;\n  long *plVar3;\n  undefined8 uVar4;\n  long lVar5;\n  uint *puVar6;\n  uint *puVar7;\n  long lVar8;\n  bool bVar9;\n  undefined1 auVar10 [16];\n  undefined1 local_bc;\n  char local_bb;\n  char local_ba;\n  undefined1 local_b9;\n  uint local_b8 [34];\n  \n  plVar3 = (long *)FUN_0034a440(param_4 + 0xd0);\n  uVar4 = FUN_0034bc50(param_4 + 0xd0);\n  if ((char)plVar3[7] == '\0') {\n    FUN_003778a0(plVar3);\n    local_bc = 0x25;\n    if (*(code **)(*plVar3 + 0x30) != (code *)PTR_FUN_004b9fd8) {\n      local_bc = (**(code **)(*plVar3 + 0x30))(plVar3,0x25);\n    }\n  }\n  else {\n    local_bc = *(undefined1 *)((long)plVar3 + 0x5e);\n  }\n  if (param_8 == '\0') {\n    local_ba = '\0';\n    local_bb = param_7;\n  }\n  else {\n    local_b9 = 0;\n    local_bb = param_8;\n    local_ba = param_7;\n  }\n  FUN_00379fc0(uVar4,local_b8,0x80,&local_bc,param_6);\n  puVar7 = local_b8;\n  do {\n    puVar6 = puVar7;\n    uVar1 = *puVar6 + 0xfefefeff & ~*puVar6;\n    uVar2 = uVar1 & 0x80808080;\n    puVar7 = puVar6 + 1;\n  } while (uVar2 == 0);\n  bVar9 = (uVar1 & 0x8080) == 0;\n  if (bVar9) {\n    uVar2 = uVar2 >> 0x10;\n  }\n  if (bVar9) {\n    puVar7 = (uint *)((long)puVar6 + 6);\n  }\n  lVar8 = (long)puVar7 + ((-3 - (ulong)CARRY1((byte)uVar2,(byte)uVar2)) - (long)local_b8);\n  if (param_3 == '\0') {\n    lVar5 = (**(code **)(*param_2 + 0x60))(param_2,local_b8,lVar8);\n    if (lVar8 != lVar5) {\n      param_3 = '\x01';\n    }\n  }\n  auVar10[8] = param_3;\n  auVar10._0_8_ = param_2;\n  auVar10._9_7_ = 0;\n  return auVar10;\n}\n\n" (expression_statement "undefined1  [16]" (subscript_expression "undefined1  [16]" identifier [ number_literal ]) ;) (declaration "FUN_0034bca0(undefined8 param_1,long *param_2,char param_3,long param_4,undefined8 param_5,\n            undefined8 param_6,char param_7,char param_8)\n\n{\n  uint uVar1;" (macro_type_specifier "FUN_0034bca0(undefined8" identifier ( (type_descriptor "undefined8" type_identifier) )) identifier , (ERROR "long" identifier) (pointer_declarator "*param_2" * identifier) , (ERROR "char" identifier) identifier , (ERROR "long" identifier) identifier , identifier (ERROR "param_5" identifier) , identifier (ERROR "param_6" identifier) , (ERROR "char" identifier) identifier , (ERROR "char param_8)\n\n{\n  uint" identifier identifier ) { identifier) identifier ;) (declaration "uint uVar2;" type_identifier identifier ;) (declaration "long *plVar3;" (sized_type_specifier "long" long) (pointer_declarator "*plVar3" * identifier) ;) (declaration "undefined8 uVar4;" type_identifier identifier ;) (declaration "long lVar5;" (sized_type_specifier "long" long) identifier ;) (declaration "uint *puVar6;" type_identifier (pointer_declarator "*puVar6" * identifier) ;) (declaration "uint *puVar7;" type_identifier (pointer_declarator "*puVar7" * identifier) ;) (declaration "long lVar8;" (sized_type_specifier "long" long) identifier ;) (declaration "bool bVar9;" primitive_type identifier ;) (declaration "undefined1 auVar10 [16];" type_identifier (array_declarator "auVar10 [16]" identifier [ number_literal ]) ;) (declaration "undefined1 local_bc;" type_identifier identifier ;) (declaration "char local_bb;" primitive_type identifier ;) (declaration "char local_ba;" primitive_type identifier ;) (declaration "undefined1 local_b9;" type_identifier identifier ;) (declaration "uint local_b8 [34];" type_identifier (array_declarator "local_b8 [34]" identifier [ number_literal ]) ;) (expression_statement "plVar3 = (long *)FUN_0034a440(param_4 + 0xd0);" (assignment_expression "plVar3 = (long *)FUN_0034a440(param_4 + 0xd0)" identifier = (cast_expression "(long *)FUN_0034a440(param_4 + 0xd0)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_0034a440(param_4 + 0xd0)" identifier (argument_list "(param_4 + 0xd0)" ( (binary_expression "param_4 + 0xd0" identifier + number_literal) ))))) ;) (expression_statement "uVar4 = FUN_0034bc50(param_4 + 0xd0);" (assignment_expression "uVar4 = FUN_0034bc50(param_4 + 0xd0)" identifier = (call_expression "FUN_0034bc50(param_4 + 0xd0)" identifier (argument_list "(param_4 + 0xd0)" ( (binary_expression "param_4 + 0xd0" identifier + number_literal) )))) ;) (if_statement "if ((char)plVar3[7] == '\0') {\n    FUN_003778a0(plVar3);\n    local_bc = 0x25;\n    if (*(code **)(*plVar3 + 0x30) != (code *)PTR_FUN_004b9fd8) {\n      local_bc = (**(code **)(*plVar3 + 0x30))(plVar3,0x25);\n    }\n  }\n  else {\n    local_bc = *(undefined1 *)((long)plVar3 + 0x5e);\n  }" if (parenthesized_expression "((char)plVar3[7] == '\0')" ( (binary_expression "(char)plVar3[7] == '\0'" (cast_expression "(char)plVar3[7]" ( (type_descriptor "char" primitive_type) ) (subscript_expression "plVar3[7]" identifier [ number_literal ])) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    FUN_003778a0(plVar3);\n    local_bc = 0x25;\n    if (*(code **)(*plVar3 + 0x30) != (code *)PTR_FUN_004b9fd8) {\n      local_bc = (**(code **)(*plVar3 + 0x30))(plVar3,0x25);\n    }\n  }" { (expression_statement "FUN_003778a0(plVar3);" (call_expression "FUN_003778a0(plVar3)" identifier (argument_list "(plVar3)" ( identifier ))) ;) (expression_statement "local_bc = 0x25;" (assignment_expression "local_bc = 0x25" identifier = number_literal) ;) (if_statement "if (*(code **)(*plVar3 + 0x30) != (code *)PTR_FUN_004b9fd8) {\n      local_bc = (**(code **)(*plVar3 + 0x30))(plVar3,0x25);\n    }" if (parenthesized_expression "(*(code **)(*plVar3 + 0x30) != (code *)PTR_FUN_004b9fd8)" ( (binary_expression "*(code **)(*plVar3 + 0x30) != (code *)PTR_FUN_004b9fd8" (pointer_expression "*(code **)(*plVar3 + 0x30)" * (cast_expression "(code **)(*plVar3 + 0x30)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*plVar3 + 0x30)" ( (binary_expression "*plVar3 + 0x30" (pointer_expression "*plVar3" * identifier) + number_literal) )))) != (cast_expression "(code *)PTR_FUN_004b9fd8" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (compound_statement "{\n      local_bc = (**(code **)(*plVar3 + 0x30))(plVar3,0x25);\n    }" { (expression_statement "local_bc = (**(code **)(*plVar3 + 0x30))(plVar3,0x25);" (assignment_expression "local_bc = (**(code **)(*plVar3 + 0x30))(plVar3,0x25)" identifier = (call_expression "(**(code **)(*plVar3 + 0x30))(plVar3,0x25)" (parenthesized_expression "(**(code **)(*plVar3 + 0x30))" ( (pointer_expression "**(code **)(*plVar3 + 0x30)" * (pointer_expression "*(code **)(*plVar3 + 0x30)" * (cast_expression "(code **)(*plVar3 + 0x30)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*plVar3 + 0x30)" ( (binary_expression "*plVar3 + 0x30" (pointer_expression "*plVar3" * identifier) + number_literal) ))))) )) (argument_list "(plVar3,0x25)" ( identifier , number_literal )))) ;) })) }) (else_clause "else {\n    local_bc = *(undefined1 *)((long)plVar3 + 0x5e);\n  }" else (compound_statement "{\n    local_bc = *(undefined1 *)((long)plVar3 + 0x5e);\n  }" { (expression_statement "local_bc = *(undefined1 *)((long)plVar3 + 0x5e);" (assignment_expression "local_bc = *(undefined1 *)((long)plVar3 + 0x5e)" identifier = (pointer_expression "*(undefined1 *)((long)plVar3 + 0x5e)" * (cast_expression "(undefined1 *)((long)plVar3 + 0x5e)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)plVar3 + 0x5e)" ( (binary_expression "(long)plVar3 + 0x5e" (cast_expression "(long)plVar3" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) ))))) ;) }))) (if_statement "if (param_8 == '\0') {\n    local_ba = '\0';\n    local_bb = param_7;\n  }\n  else {\n    local_b9 = 0;\n    local_bb = param_8;\n    local_ba = param_7;\n  }" if (parenthesized_expression "(param_8 == '\0')" ( (binary_expression "param_8 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    local_ba = '\0';\n    local_bb = param_7;\n  }" { (expression_statement "local_ba = '\0';" (assignment_expression "local_ba = '\0'" identifier = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "local_bb = param_7;" (assignment_expression "local_bb = param_7" identifier = identifier) ;) }) (else_clause "else {\n    local_b9 = 0;\n    local_bb = param_8;\n    local_ba = param_7;\n  }" else (compound_statement "{\n    local_b9 = 0;\n    local_bb = param_8;\n    local_ba = param_7;\n  }" { (expression_statement "local_b9 = 0;" (assignment_expression "local_b9 = 0" identifier = number_literal) ;) (expression_statement "local_bb = param_8;" (assignment_expression "local_bb = param_8" identifier = identifier) ;) (expression_statement "local_ba = param_7;" (assignment_expression "local_ba = param_7" identifier = identifier) ;) }))) (expression_statement "FUN_00379fc0(uVar4,local_b8,0x80,&local_bc,param_6);" (call_expression "FUN_00379fc0(uVar4,local_b8,0x80,&local_bc,param_6)" identifier (argument_list "(uVar4,local_b8,0x80,&local_bc,param_6)" ( identifier , identifier , number_literal , (pointer_expression "&local_bc" & identifier) , identifier ))) ;) (expression_statement "puVar7 = local_b8;" (assignment_expression "puVar7 = local_b8" identifier = identifier) ;) (do_statement "do {\n    puVar6 = puVar7;\n    uVar1 = *puVar6 + 0xfefefeff & ~*puVar6;\n    uVar2 = uVar1 & 0x80808080;\n    puVar7 = puVar6 + 1;\n  } while (uVar2 == 0);" do (compound_statement "{\n    puVar6 = puVar7;\n    uVar1 = *puVar6 + 0xfefefeff & ~*puVar6;\n    uVar2 = uVar1 & 0x80808080;\n    puVar7 = puVar6 + 1;\n  }" { (expression_statement "puVar6 = puVar7;" (assignment_expression "puVar6 = puVar7" identifier = identifier) ;) (expression_statement "uVar1 = *puVar6 + 0xfefefeff & ~*puVar6;" (assignment_expression "uVar1 = *puVar6 + 0xfefefeff & ~*puVar6" identifier = (binary_expression "*puVar6 + 0xfefefeff & ~*puVar6" (binary_expression "*puVar6 + 0xfefefeff" (pointer_expression "*puVar6" * identifier) + number_literal) & (unary_expression "~*puVar6" ~ (pointer_expression "*puVar6" * identifier)))) ;) (expression_statement "uVar2 = uVar1 & 0x80808080;" (assignment_expression "uVar2 = uVar1 & 0x80808080" identifier = (binary_expression "uVar1 & 0x80808080" identifier & number_literal)) ;) (expression_statement "puVar7 = puVar6 + 1;" (assignment_expression "puVar7 = puVar6 + 1" identifier = (binary_expression "puVar6 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar2 == 0)" ( (binary_expression "uVar2 == 0" identifier == number_literal) )) ;) (expression_statement "bVar9 = (uVar1 & 0x8080) == 0;" (assignment_expression "bVar9 = (uVar1 & 0x8080) == 0" identifier = (binary_expression "(uVar1 & 0x8080) == 0" (parenthesized_expression "(uVar1 & 0x8080)" ( (binary_expression "uVar1 & 0x8080" identifier & number_literal) )) == number_literal)) ;) (if_statement "if (bVar9) {\n    uVar2 = uVar2 >> 0x10;\n  }" if (parenthesized_expression "(bVar9)" ( identifier )) (compound_statement "{\n    uVar2 = uVar2 >> 0x10;\n  }" { (expression_statement "uVar2 = uVar2 >> 0x10;" (assignment_expression "uVar2 = uVar2 >> 0x10" identifier = (binary_expression "uVar2 >> 0x10" identifier >> number_literal)) ;) })) (if_statement "if (bVar9) {\n    puVar7 = (uint *)((long)puVar6 + 6);\n  }" if (parenthesized_expression "(bVar9)" ( identifier )) (compound_statement "{\n    puVar7 = (uint *)((long)puVar6 + 6);\n  }" { (expression_statement "puVar7 = (uint *)((long)puVar6 + 6);" (assignment_expression "puVar7 = (uint *)((long)puVar6 + 6)" identifier = (cast_expression "(uint *)((long)puVar6 + 6)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)puVar6 + 6)" ( (binary_expression "(long)puVar6 + 6" (cast_expression "(long)puVar6" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) ;) })) (expression_statement "lVar8 = (long)puVar7 + ((-3 - (ulong)CARRY1((byte)uVar2,(byte)uVar2)) - (long)local_b8);" (assignment_expression "lVar8 = (long)puVar7 + ((-3 - (ulong)CARRY1((byte)uVar2,(byte)uVar2)) - (long)local_b8)" identifier = (binary_expression "(long)puVar7 + ((-3 - (ulong)CARRY1((byte)uVar2,(byte)uVar2)) - (long)local_b8)" (cast_expression "(long)puVar7" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + (parenthesized_expression "((-3 - (ulong)CARRY1((byte)uVar2,(byte)uVar2)) - (long)local_b8)" ( (binary_expression "(-3 - (ulong)CARRY1((byte)uVar2,(byte)uVar2)) - (long)local_b8" (parenthesized_expression "(-3 - (ulong)CARRY1((byte)uVar2,(byte)uVar2))" ( (binary_expression "-3 - (ulong)CARRY1((byte)uVar2,(byte)uVar2)" number_literal - (cast_expression "(ulong)CARRY1((byte)uVar2,(byte)uVar2)" ( (type_descriptor "ulong" type_identifier) ) (call_expression "CARRY1((byte)uVar2,(byte)uVar2)" identifier (argument_list "((byte)uVar2,(byte)uVar2)" ( (cast_expression "(byte)uVar2" ( (type_descriptor "byte" type_identifier) ) identifier) , (cast_expression "(byte)uVar2" ( (type_descriptor "byte" type_identifier) ) identifier) ))))) )) - (cast_expression "(long)local_b8" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) )))) ;) (if_statement "if (param_3 == '\0') {\n    lVar5 = (**(code **)(*param_2 + 0x60))(param_2,local_b8,lVar8);\n    if (lVar8 != lVar5) {\n      param_3 = '\x01';\n    }\n  }" if (parenthesized_expression "(param_3 == '\0')" ( (binary_expression "param_3 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    lVar5 = (**(code **)(*param_2 + 0x60))(param_2,local_b8,lVar8);\n    if (lVar8 != lVar5) {\n      param_3 = '\x01';\n    }\n  }" { (expression_statement "lVar5 = (**(code **)(*param_2 + 0x60))(param_2,local_b8,lVar8);" (assignment_expression "lVar5 = (**(code **)(*param_2 + 0x60))(param_2,local_b8,lVar8)" identifier = (call_expression "(**(code **)(*param_2 + 0x60))(param_2,local_b8,lVar8)" (parenthesized_expression "(**(code **)(*param_2 + 0x60))" ( (pointer_expression "**(code **)(*param_2 + 0x60)" * (pointer_expression "*(code **)(*param_2 + 0x60)" * (cast_expression "(code **)(*param_2 + 0x60)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_2 + 0x60)" ( (binary_expression "*param_2 + 0x60" (pointer_expression "*param_2" * identifier) + number_literal) ))))) )) (argument_list "(param_2,local_b8,lVar8)" ( identifier , identifier , identifier )))) ;) (if_statement "if (lVar8 != lVar5) {\n      param_3 = '\x01';\n    }" if (parenthesized_expression "(lVar8 != lVar5)" ( (binary_expression "lVar8 != lVar5" identifier != identifier) )) (compound_statement "{\n      param_3 = '\x01';\n    }" { (expression_statement "param_3 = '\x01';" (assignment_expression "param_3 = '\x01'" identifier = (char_literal "'\x01'" ' escape_sequence ')) ;) })) })) (expression_statement "auVar10[8] = param_3;" (assignment_expression "auVar10[8] = param_3" (subscript_expression "auVar10[8]" identifier [ number_literal ]) = identifier) ;) (expression_statement "auVar10._0_8_ = param_2;" (assignment_expression "auVar10._0_8_ = param_2" (field_expression "auVar10._0_8_" identifier . field_identifier) = identifier) ;) (expression_statement "auVar10._9_7_ = 0;" (assignment_expression "auVar10._9_7_ = 0" (field_expression "auVar10._9_7_" identifier . field_identifier) = number_literal) ;) (return_statement "return auVar10;" return identifier ;) (ERROR "}" }))
(translation_unit (expression_statement (subscript_expression IDENT [ LIT ]) ;) (declaration (macro_type_specifier IDENT ( (type_descriptor TYPE) )) IDENT , (ERROR IDENT) (pointer_declarator * IDENT) , (ERROR IDENT) IDENT , (ERROR IDENT) IDENT , IDENT (ERROR IDENT) , IDENT (ERROR IDENT) , (ERROR IDENT) IDENT , (ERROR IDENT IDENT ) { IDENT) IDENT ;) (declaration TYPE IDENT ;) (declaration (sized_type_specifier long) (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration (sized_type_specifier long) IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ])) == (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) )))) != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (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 , LIT )))) ;) })) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) 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 = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }))) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , LIT , (pointer_expression & IDENT) , IDENT ))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (pointer_expression * IDENT) + LIT) & (unary_expression ~ (pointer_expression * IDENT)))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT & LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT == LIT) )) ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) == LIT)) ;) (if_statement if (parenthesized_expression ( IDENT )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT >> LIT)) ;) })) (if_statement if (parenthesized_expression ( IDENT )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + LIT) )))) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression LIT - (cast_expression ( (type_descriptor TYPE) ) (call_expression IDENT (argument_list ( (cast_expression ( (type_descriptor TYPE) ) IDENT) , (cast_expression ( (type_descriptor TYPE) ) IDENT) ))))) )) - (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT)) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (char_literal ' escape_sequence ')) )) (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 , IDENT , IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (char_literal ' escape_sequence ')) ;) })) })) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (field_expression IDENT . field_identifier) = IDENT) ;) (expression_statement (assignment_expression (field_expression IDENT . field_identifier) = LIT) ;) (return_statement return IDENT ;) (ERROR }))
(expression_statement "undefined1  [16]" (subscript_expression "undefined1  [16]" (identifier "undefined1") ([ "[") (number_literal "16") (] "]")) (; "")) (declaration "FUN_0034bca0(undefined8 param_1,long *param_2,char param_3,long param_4,undefined8 param_5,\n            undefined8 param_6,char param_7,char param_8)\n\n{\n  uint uVar1;" (macro_type_specifier "FUN_0034bca0(undefined8" (identifier "FUN_0034bca0") (( "(") (type_descriptor "undefined8" (type_identifier "undefined8")) () "")) (identifier "param_1") (, ",") (ERROR "long" (identifier "long")) (pointer_declarator "*param_2" (* "*") (identifier "param_2")) (, ",") (ERROR "char" (identifier "char")) (identifier "param_3") (, ",") (ERROR "long" (identifier "long")) (identifier "param_4") (, ",") (identifier "undefined8") (ERROR "param_5" (identifier "param_5")) (, ",") (identifier "undefined8") (ERROR "param_6" (identifier "param_6")) (, ",") (ERROR "char" (identifier "char")) (identifier "param_7") (, ",") (ERROR "char param_8)\n\n{\n  uint" (identifier "char") (identifier "param_8") () ")") ({ "{") (identifier "uint")) (identifier "uVar1") (; ";")) (declaration "uint uVar2;" (type_identifier "uint") (identifier "uVar2") (; ";")) (declaration "long *plVar3;" (sized_type_specifier "long" (long "long")) (pointer_declarator "*plVar3" (* "*") (identifier "plVar3")) (; ";")) (declaration "undefined8 uVar4;" (type_identifier "undefined8") (identifier "uVar4") (; ";")) (declaration "long lVar5;" (sized_type_specifier "long" (long "long")) (identifier "lVar5") (; ";")) (declaration "uint *puVar6;" (type_identifier "uint") (pointer_declarator "*puVar6" (* "*") (identifier "puVar6")) (; ";")) (declaration "uint *puVar7;" (type_identifier "uint") (pointer_declarator "*puVar7" (* "*") (identifier "puVar7")) (; ";")) (declaration "long lVar8;" (sized_type_specifier "long" (long "long")) (identifier "lVar8") (; ";")) (declaration "bool bVar9;" (primitive_type "bool") (identifier "bVar9") (; ";")) (declaration "undefined1 auVar10 [16];" (type_identifier "undefined1") (array_declarator "auVar10 [16]" (identifier "auVar10") ([ "[") (number_literal "16") (] "]")) (; ";")) (declaration "undefined1 local_bc;" (type_identifier "undefined1") (identifier "local_bc") (; ";")) (declaration "char local_bb;" (primitive_type "char") (identifier "local_bb") (; ";")) (declaration "char local_ba;" (primitive_type "char") (identifier "local_ba") (; ";")) (declaration "undefined1 local_b9;" (type_identifier "undefined1") (identifier "local_b9") (; ";")) (declaration "uint local_b8 [34];" (type_identifier "uint") (array_declarator "local_b8 [34]" (identifier "local_b8") ([ "[") (number_literal "34") (] "]")) (; ";")) (expression_statement "plVar3 = (long *)FUN_0034a440(param_4 + 0xd0);" (assignment_expression "plVar3 = (long *)FUN_0034a440(param_4 + 0xd0)" (identifier "plVar3") (= "=") (cast_expression "(long *)FUN_0034a440(param_4 + 0xd0)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_0034a440(param_4 + 0xd0)" (identifier "FUN_0034a440") (argument_list "(param_4 + 0xd0)" (( "(") (binary_expression "param_4 + 0xd0" (identifier "param_4") (+ "+") (number_literal "0xd0")) () ")"))))) (; ";")) (expression_statement "uVar4 = FUN_0034bc50(param_4 + 0xd0);" (assignment_expression "uVar4 = FUN_0034bc50(param_4 + 0xd0)" (identifier "uVar4") (= "=") (call_expression "FUN_0034bc50(param_4 + 0xd0)" (identifier "FUN_0034bc50") (argument_list "(param_4 + 0xd0)" (( "(") (binary_expression "param_4 + 0xd0" (identifier "param_4") (+ "+") (number_literal "0xd0")) () ")")))) (; ";")) (if_statement "if ((char)plVar3[7] == '\0') {\n    FUN_003778a0(plVar3);\n    local_bc = 0x25;\n    if (*(code **)(*plVar3 + 0x30) != (code *)PTR_FUN_004b9fd8) {\n      local_bc = (**(code **)(*plVar3 + 0x30))(plVar3,0x25);\n    }\n  }\n  else {\n    local_bc = *(undefined1 *)((long)plVar3 + 0x5e);\n  }" (if "if") (parenthesized_expression "((char)plVar3[7] == '\0')" (( "(") (binary_expression "(char)plVar3[7] == '\0'" (cast_expression "(char)plVar3[7]" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (subscript_expression "plVar3[7]" (identifier "plVar3") ([ "[") (number_literal "7") (] "]"))) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n    FUN_003778a0(plVar3);\n    local_bc = 0x25;\n    if (*(code **)(*plVar3 + 0x30) != (code *)PTR_FUN_004b9fd8) {\n      local_bc = (**(code **)(*plVar3 + 0x30))(plVar3,0x25);\n    }\n  }" ({ "{") (expression_statement "FUN_003778a0(plVar3);" (call_expression "FUN_003778a0(plVar3)" (identifier "FUN_003778a0") (argument_list "(plVar3)" (( "(") (identifier "plVar3") () ")"))) (; ";")) (expression_statement "local_bc = 0x25;" (assignment_expression "local_bc = 0x25" (identifier "local_bc") (= "=") (number_literal "0x25")) (; ";")) (if_statement "if (*(code **)(*plVar3 + 0x30) != (code *)PTR_FUN_004b9fd8) {\n      local_bc = (**(code **)(*plVar3 + 0x30))(plVar3,0x25);\n    }" (if "if") (parenthesized_expression "(*(code **)(*plVar3 + 0x30) != (code *)PTR_FUN_004b9fd8)" (( "(") (binary_expression "*(code **)(*plVar3 + 0x30) != (code *)PTR_FUN_004b9fd8" (pointer_expression "*(code **)(*plVar3 + 0x30)" (* "*") (cast_expression "(code **)(*plVar3 + 0x30)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*plVar3 + 0x30)" (( "(") (binary_expression "*plVar3 + 0x30" (pointer_expression "*plVar3" (* "*") (identifier "plVar3")) (+ "+") (number_literal "0x30")) () ")")))) (!= "!=") (cast_expression "(code *)PTR_FUN_004b9fd8" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_FUN_004b9fd8"))) () ")")) (compound_statement "{\n      local_bc = (**(code **)(*plVar3 + 0x30))(plVar3,0x25);\n    }" ({ "{") (expression_statement "local_bc = (**(code **)(*plVar3 + 0x30))(plVar3,0x25);" (assignment_expression "local_bc = (**(code **)(*plVar3 + 0x30))(plVar3,0x25)" (identifier "local_bc") (= "=") (call_expression "(**(code **)(*plVar3 + 0x30))(plVar3,0x25)" (parenthesized_expression "(**(code **)(*plVar3 + 0x30))" (( "(") (pointer_expression "**(code **)(*plVar3 + 0x30)" (* "*") (pointer_expression "*(code **)(*plVar3 + 0x30)" (* "*") (cast_expression "(code **)(*plVar3 + 0x30)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*plVar3 + 0x30)" (( "(") (binary_expression "*plVar3 + 0x30" (pointer_expression "*plVar3" (* "*") (identifier "plVar3")) (+ "+") (number_literal "0x30")) () ")"))))) () ")")) (argument_list "(plVar3,0x25)" (( "(") (identifier "plVar3") (, ",") (number_literal "0x25") () ")")))) (; ";")) (} "}"))) (} "}")) (else_clause "else {\n    local_bc = *(undefined1 *)((long)plVar3 + 0x5e);\n  }" (else "else") (compound_statement "{\n    local_bc = *(undefined1 *)((long)plVar3 + 0x5e);\n  }" ({ "{") (expression_statement "local_bc = *(undefined1 *)((long)plVar3 + 0x5e);" (assignment_expression "local_bc = *(undefined1 *)((long)plVar3 + 0x5e)" (identifier "local_bc") (= "=") (pointer_expression "*(undefined1 *)((long)plVar3 + 0x5e)" (* "*") (cast_expression "(undefined1 *)((long)plVar3 + 0x5e)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)plVar3 + 0x5e)" (( "(") (binary_expression "(long)plVar3 + 0x5e" (cast_expression "(long)plVar3" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "plVar3")) (+ "+") (number_literal "0x5e")) () ")"))))) (; ";")) (} "}")))) (if_statement "if (param_8 == '\0') {\n    local_ba = '\0';\n    local_bb = param_7;\n  }\n  else {\n    local_b9 = 0;\n    local_bb = param_8;\n    local_ba = param_7;\n  }" (if "if") (parenthesized_expression "(param_8 == '\0')" (( "(") (binary_expression "param_8 == '\0'" (identifier "param_8") (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n    local_ba = '\0';\n    local_bb = param_7;\n  }" ({ "{") (expression_statement "local_ba = '\0';" (assignment_expression "local_ba = '\0'" (identifier "local_ba") (= "=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) (; ";")) (expression_statement "local_bb = param_7;" (assignment_expression "local_bb = param_7" (identifier "local_bb") (= "=") (identifier "param_7")) (; ";")) (} "}")) (else_clause "else {\n    local_b9 = 0;\n    local_bb = param_8;\n    local_ba = param_7;\n  }" (else "else") (compound_statement "{\n    local_b9 = 0;\n    local_bb = param_8;\n    local_ba = param_7;\n  }" ({ "{") (expression_statement "local_b9 = 0;" (assignment_expression "local_b9 = 0" (identifier "local_b9") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_bb = param_8;" (assignment_expression "local_bb = param_8" (identifier "local_bb") (= "=") (identifier "param_8")) (; ";")) (expression_statement "local_ba = param_7;" (assignment_expression "local_ba = param_7" (identifier "local_ba") (= "=") (identifier "param_7")) (; ";")) (} "}")))) (expression_statement "FUN_00379fc0(uVar4,local_b8,0x80,&local_bc,param_6);" (call_expression "FUN_00379fc0(uVar4,local_b8,0x80,&local_bc,param_6)" (identifier "FUN_00379fc0") (argument_list "(uVar4,local_b8,0x80,&local_bc,param_6)" (( "(") (identifier "uVar4") (, ",") (identifier "local_b8") (, ",") (number_literal "0x80") (, ",") (pointer_expression "&local_bc" (& "&") (identifier "local_bc")) (, ",") (identifier "param_6") () ")"))) (; ";")) (expression_statement "puVar7 = local_b8;" (assignment_expression "puVar7 = local_b8" (identifier "puVar7") (= "=") (identifier "local_b8")) (; ";")) (do_statement "do {\n    puVar6 = puVar7;\n    uVar1 = *puVar6 + 0xfefefeff & ~*puVar6;\n    uVar2 = uVar1 & 0x80808080;\n    puVar7 = puVar6 + 1;\n  } while (uVar2 == 0);" (do "do") (compound_statement "{\n    puVar6 = puVar7;\n    uVar1 = *puVar6 + 0xfefefeff & ~*puVar6;\n    uVar2 = uVar1 & 0x80808080;\n    puVar7 = puVar6 + 1;\n  }" ({ "{") (expression_statement "puVar6 = puVar7;" (assignment_expression "puVar6 = puVar7" (identifier "puVar6") (= "=") (identifier "puVar7")) (; ";")) (expression_statement "uVar1 = *puVar6 + 0xfefefeff & ~*puVar6;" (assignment_expression "uVar1 = *puVar6 + 0xfefefeff & ~*puVar6" (identifier "uVar1") (= "=") (binary_expression "*puVar6 + 0xfefefeff & ~*puVar6" (binary_expression "*puVar6 + 0xfefefeff" (pointer_expression "*puVar6" (* "*") (identifier "puVar6")) (+ "+") (number_literal "0xfefefeff")) (& "&") (unary_expression "~*puVar6" (~ "~") (pointer_expression "*puVar6" (* "*") (identifier "puVar6"))))) (; ";")) (expression_statement "uVar2 = uVar1 & 0x80808080;" (assignment_expression "uVar2 = uVar1 & 0x80808080" (identifier "uVar2") (= "=") (binary_expression "uVar1 & 0x80808080" (identifier "uVar1") (& "&") (number_literal "0x80808080"))) (; ";")) (expression_statement "puVar7 = puVar6 + 1;" (assignment_expression "puVar7 = puVar6 + 1" (identifier "puVar7") (= "=") (binary_expression "puVar6 + 1" (identifier "puVar6") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(uVar2 == 0)" (( "(") (binary_expression "uVar2 == 0" (identifier "uVar2") (== "==") (number_literal "0")) () ")")) (; ";")) (expression_statement "bVar9 = (uVar1 & 0x8080) == 0;" (assignment_expression "bVar9 = (uVar1 & 0x8080) == 0" (identifier "bVar9") (= "=") (binary_expression "(uVar1 & 0x8080) == 0" (parenthesized_expression "(uVar1 & 0x8080)" (( "(") (binary_expression "uVar1 & 0x8080" (identifier "uVar1") (& "&") (number_literal "0x8080")) () ")")) (== "==") (number_literal "0"))) (; ";")) (if_statement "if (bVar9) {\n    uVar2 = uVar2 >> 0x10;\n  }" (if "if") (parenthesized_expression "(bVar9)" (( "(") (identifier "bVar9") () ")")) (compound_statement "{\n    uVar2 = uVar2 >> 0x10;\n  }" ({ "{") (expression_statement "uVar2 = uVar2 >> 0x10;" (assignment_expression "uVar2 = uVar2 >> 0x10" (identifier "uVar2") (= "=") (binary_expression "uVar2 >> 0x10" (identifier "uVar2") (>> ">>") (number_literal "0x10"))) (; ";")) (} "}"))) (if_statement "if (bVar9) {\n    puVar7 = (uint *)((long)puVar6 + 6);\n  }" (if "if") (parenthesized_expression "(bVar9)" (( "(") (identifier "bVar9") () ")")) (compound_statement "{\n    puVar7 = (uint *)((long)puVar6 + 6);\n  }" ({ "{") (expression_statement "puVar7 = (uint *)((long)puVar6 + 6);" (assignment_expression "puVar7 = (uint *)((long)puVar6 + 6)" (identifier "puVar7") (= "=") (cast_expression "(uint *)((long)puVar6 + 6)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)puVar6 + 6)" (( "(") (binary_expression "(long)puVar6 + 6" (cast_expression "(long)puVar6" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "puVar6")) (+ "+") (number_literal "6")) () ")")))) (; ";")) (} "}"))) (expression_statement "lVar8 = (long)puVar7 + ((-3 - (ulong)CARRY1((byte)uVar2,(byte)uVar2)) - (long)local_b8);" (assignment_expression "lVar8 = (long)puVar7 + ((-3 - (ulong)CARRY1((byte)uVar2,(byte)uVar2)) - (long)local_b8)" (identifier "lVar8") (= "=") (binary_expression "(long)puVar7 + ((-3 - (ulong)CARRY1((byte)uVar2,(byte)uVar2)) - (long)local_b8)" (cast_expression "(long)puVar7" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "puVar7")) (+ "+") (parenthesized_expression "((-3 - (ulong)CARRY1((byte)uVar2,(byte)uVar2)) - (long)local_b8)" (( "(") (binary_expression "(-3 - (ulong)CARRY1((byte)uVar2,(byte)uVar2)) - (long)local_b8" (parenthesized_expression "(-3 - (ulong)CARRY1((byte)uVar2,(byte)uVar2))" (( "(") (binary_expression "-3 - (ulong)CARRY1((byte)uVar2,(byte)uVar2)" (number_literal "-3") (- "-") (cast_expression "(ulong)CARRY1((byte)uVar2,(byte)uVar2)" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (call_expression "CARRY1((byte)uVar2,(byte)uVar2)" (identifier "CARRY1") (argument_list "((byte)uVar2,(byte)uVar2)" (( "(") (cast_expression "(byte)uVar2" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "uVar2")) (, ",") (cast_expression "(byte)uVar2" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "uVar2")) () ")"))))) () ")")) (- "-") (cast_expression "(long)local_b8" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "local_b8"))) () ")")))) (; ";")) (if_statement "if (param_3 == '\0') {\n    lVar5 = (**(code **)(*param_2 + 0x60))(param_2,local_b8,lVar8);\n    if (lVar8 != lVar5) {\n      param_3 = '\x01';\n    }\n  }" (if "if") (parenthesized_expression "(param_3 == '\0')" (( "(") (binary_expression "param_3 == '\0'" (identifier "param_3") (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n    lVar5 = (**(code **)(*param_2 + 0x60))(param_2,local_b8,lVar8);\n    if (lVar8 != lVar5) {\n      param_3 = '\x01';\n    }\n  }" ({ "{") (expression_statement "lVar5 = (**(code **)(*param_2 + 0x60))(param_2,local_b8,lVar8);" (assignment_expression "lVar5 = (**(code **)(*param_2 + 0x60))(param_2,local_b8,lVar8)" (identifier "lVar5") (= "=") (call_expression "(**(code **)(*param_2 + 0x60))(param_2,local_b8,lVar8)" (parenthesized_expression "(**(code **)(*param_2 + 0x60))" (( "(") (pointer_expression "**(code **)(*param_2 + 0x60)" (* "*") (pointer_expression "*(code **)(*param_2 + 0x60)" (* "*") (cast_expression "(code **)(*param_2 + 0x60)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*param_2 + 0x60)" (( "(") (binary_expression "*param_2 + 0x60" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (+ "+") (number_literal "0x60")) () ")"))))) () ")")) (argument_list "(param_2,local_b8,lVar8)" (( "(") (identifier "param_2") (, ",") (identifier "local_b8") (, ",") (identifier "lVar8") () ")")))) (; ";")) (if_statement "if (lVar8 != lVar5) {\n      param_3 = '\x01';\n    }" (if "if") (parenthesized_expression "(lVar8 != lVar5)" (( "(") (binary_expression "lVar8 != lVar5" (identifier "lVar8") (!= "!=") (identifier "lVar5")) () ")")) (compound_statement "{\n      param_3 = '\x01';\n    }" ({ "{") (expression_statement "param_3 = '\x01';" (assignment_expression "param_3 = '\x01'" (identifier "param_3") (= "=") (char_literal "'\x01'" (' "'") (escape_sequence "\x01") (' "'"))) (; ";")) (} "}"))) (} "}"))) (expression_statement "auVar10[8] = param_3;" (assignment_expression "auVar10[8] = param_3" (subscript_expression "auVar10[8]" (identifier "auVar10") ([ "[") (number_literal "8") (] "]")) (= "=") (identifier "param_3")) (; ";")) (expression_statement "auVar10._0_8_ = param_2;" (assignment_expression "auVar10._0_8_ = param_2" (field_expression "auVar10._0_8_" (identifier "auVar10") (. ".") (field_identifier "_0_8_")) (= "=") (identifier "param_2")) (; ";")) (expression_statement "auVar10._9_7_ = 0;" (assignment_expression "auVar10._9_7_ = 0" (field_expression "auVar10._9_7_" (identifier "auVar10") (. ".") (field_identifier "_9_7_")) (= "=") (number_literal "0")) (; ";")) (return_statement "return auVar10;" (return "return") (identifier "auVar10") (; ";")) (ERROR "}" (} "}"))

/* std::time_put<char, std::ostreambuf_iterator<char, std::char_traits<char> >
   >::do_put(std::ostreambuf_iterator<char, std::char_traits<char> >, std::ios_base&, char, tm
   const*, char, char) const */

type_4  [16]
std::time_put<var_2,var_9::ostreambuf_iterator<var_2,var_9::var_1<var_2>>>::var_3
          (undefined8 param_1,var_4 *var_5,var_2 var_18,var_4 var_10,undefined8 param_5,var_6 *var_7
          ,var_2 param_7,var_2 var_12)

{
  type_1 var_14;
  type_1 var_16;
  type_2 *this;
  type_3 *this_00;
  char *var_20;
  type_1 *var_15;
  type_1 *puVar5;
  char *var_19;
  bool bVar7;
  type_4 auVar8 [16];
  type_2 local_bc;
  char local_bb;
  char local_ba;
  type_4 local_b9;
  type_1 local_b8 [34];
  
  this = var_8<var_9::type_2<var_2>>((type_5 *)(var_10 + 0xd0));
  this_00 = var_8<var_9::type_3<var_2>>((type_5 *)(var_10 + 0xd0));
  if (this[0x38] == (type_2)0x0) {
    type_2<var_2>::var_11((type_2<var_2> *)this);
    local_bc = (type_2)0x25;
    if (*(type_6 **)(*(long *)this + 0x30) != (type_6 *)PTR_do_widen_004b9fd8) {
      local_bc = (type_2)(**(type_6 **)(*(long *)this + 0x30))(this,0x25);
    }
  }
  else {
    local_bc = this[0x5e];
  }
  if (var_12 == '\0') {
    local_ba = '\0';
    local_bb = param_7;
  }
  else {
    local_b9 = 0;
    local_bb = var_12;
    local_ba = param_7;
  }
  type_3<var_2>::var_13
            ((type_3<var_2> *)this_00,(char *)local_b8,0x80,(char *)&local_bc,var_7);
  puVar5 = local_b8;
  do {
    var_15 = puVar5;
    var_14 = *var_15 + 0xfefefeff & ~*var_15;
    var_16 = var_14 & 0x80808080;
    puVar5 = var_15 + 1;
  } while (var_16 == 0);
  bVar7 = (var_14 & 0x8080) == 0;
  if (bVar7) {
    var_16 = var_16 >> 0x10;
  }
  if (bVar7) {
    puVar5 = (type_1 *)((long)var_15 + 6);
  }
  var_19 = (char *)((long)puVar5 + ((-3 - (type_7)var_17((type_8)var_16,(type_8)var_16)) - (long)local_b8))
  ;
  if (var_18 == '\0') {
    var_20 = (char *)(**(type_6 **)(*var_5 + 0x60))(var_5,local_b8,var_19);
    if (var_19 != var_20) {
      var_18 = '\x01';
    }
  }
  auVar8[8] = var_18;
  auVar8._0_8_ = var_5;
  auVar8._9_7_ = 0;
  return auVar8;
}


(translation_unit (expression_statement (subscript_expression argument: (identifier) index: (number_literal)) (MISSING ";")) (declaration type: (macro_type_specifier name: (identifier) type: (type_descriptor type: (type_identifier)) (MISSING ")")) declarator: (identifier) (ERROR (identifier)) declarator: (pointer_declarator declarator: (identifier)) (ERROR (identifier)) declarator: (identifier) (ERROR (identifier)) declarator: (identifier) declarator: (identifier) (ERROR (identifier)) declarator: (identifier) (ERROR (identifier)) (ERROR (identifier)) declarator: (identifier) (ERROR (identifier) (identifier) (identifier)) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (sized_type_specifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (sized_type_specifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (sized_type_specifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (array_declarator declarator: (identifier) size: (number_literal))) (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: (type_identifier) declarator: (array_declarator declarator: (identifier) size: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (call_expression function: (identifier) arguments: (argument_list (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (binary_expression left: (identifier) right: (number_literal)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (subscript_expression argument: (identifier) index: (number_literal))) right: (char_literal (escape_sequence)))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (number_literal))))) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) 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) (number_literal)))))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (identifier)) right: (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: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier)))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier) (number_literal) (pointer_expression argument: (identifier)) (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (pointer_expression argument: (identifier)) right: (number_literal)) right: (unary_expression argument: (pointer_expression argument: (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal)))) (if_statement condition: (parenthesized_expression (identifier)) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))))) (if_statement condition: (parenthesized_expression (identifier)) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (identifier)) right: (number_literal)))))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (identifier)) right: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (number_literal) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (call_expression function: (identifier) arguments: (argument_list (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier))))))) right: (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (identifier))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (char_literal (escape_sequence)))) 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) (identifier) (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (char_literal (escape_sequence)))))))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (expression_statement (assignment_expression left: (field_expression argument: (identifier) field: (field_identifier)) right: (identifier))) (expression_statement (assignment_expression left: (field_expression argument: (identifier) field: (field_identifier)) right: (number_literal))) (return_statement (identifier)) (ERROR))

undefined1  [16]
MASKED(undefined8 param_1,long *param_2,char param_3,long param_4,undefined8 param_5,
            undefined8 param_6,char param_7,char param_8)

{
  uint uVar1;
  uint uVar2;
  long *plVar3;
  undefined8 uVar4;
  long lVar5;
  uint *puVar6;
  uint *puVar7;
  long lVar8;
  bool bVar9;
  undefined1 auVar10 [16];
  undefined1 local_bc;
  char local_bb;
  char local_ba;
  undefined1 local_b9;
  uint local_b8 [34];
  
  plVar3 = (long *)FUN_0034a440(param_4 + 0xd0);
  uVar4 = FUN_0034bc50(param_4 + 0xd0);
  if ((char)plVar3[7] == '\0') {
    FUN_003778a0(plVar3);
    local_bc = 0x25;
    if (*(code **)(*plVar3 + 0x30) != (code *)PTR_FUN_004b9fd8) {
      local_bc = (**(code **)(*plVar3 + 0x30))(plVar3,0x25);
    }
  }
  else {
    local_bc = *(undefined1 *)((long)plVar3 + 0x5e);
  }
  if (param_8 == '\0') {
    local_ba = '\0';
    local_bb = param_7;
  }
  else {
    local_b9 = 0;
    local_bb = param_8;
    local_ba = param_7;
  }
  FUN_00379fc0(uVar4,local_b8,0x80,&local_bc,param_6);
  puVar7 = local_b8;
  do {
    puVar6 = puVar7;
    uVar1 = *puVar6 + 0xfefefeff & ~*puVar6;
    uVar2 = uVar1 & 0x80808080;
    puVar7 = puVar6 + 1;
  } while (uVar2 == 0);
  bVar9 = (uVar1 & 0x8080) == 0;
  if (bVar9) {
    uVar2 = uVar2 >> 0x10;
  }
  if (bVar9) {
    puVar7 = (uint *)((long)puVar6 + 6);
  }
  lVar8 = (long)puVar7 + ((-3 - (ulong)CARRY1((byte)uVar2,(byte)uVar2)) - (long)local_b8);
  if (param_3 == '\0') {
    lVar5 = (**(code **)(*param_2 + 0x60))(param_2,local_b8,lVar8);
    if (lVar8 != lVar5) {
      param_3 = '\x01';
    }
  }
  auVar10[8] = param_3;
  auVar10._0_8_ = param_2;
  auVar10._9_7_ = 0;
  return auVar10;
}

