
void exprNodeCopy(Expr *pDest,Expr *pSrc)

{
  char cVar1;
  undefined2 uVar2;
  u32 uVar3;
  long lVar4;
  uint uVar5;
  ulong uVar6;
  undefined8 *puVar7;
  undefined8 *puVar8;
  
  pDest->op = '\0';
  pDest->affinity = '\0';
  *(undefined2 *)&pDest->field_0x2 = 0;
  pDest->flags = 0;
  (pDest->u).zToken = (char *)0x0;
  pDest->pLeft = (Expr *)0x0;
  pDest->pRight = (Expr *)0x0;
  (pDest->x).pList = (ExprList *)0x0;
  pDest->nHeight = 0;
  pDest->iTable = 0;
  pDest->iColumn = 0;
  pDest->iAgg = 0;
  pDest->iRightJoinTable = 0;
  *(undefined8 *)&pDest->op2 = 0;
  pDest->pAggInfo = (AggInfo *)0x0;
  (pDest->y).pTab = (Table *)0x0;
  uVar5 = 0x10;
  if ((pSrc->flags & 0x4000) == 0) {
    uVar5 = (-(uint)((pSrc->flags & 0x2000) == 0) & 0x24) + 0x2c;
  }
  cVar1 = pSrc->affinity;
  uVar2 = *(undefined2 *)&pSrc->field_0x2;
  uVar3 = pSrc->flags;
  pDest->op = pSrc->op;
  pDest->affinity = cVar1;
  *(undefined2 *)&pDest->field_0x2 = uVar2;
  pDest->flags = uVar3;
  *(undefined8 *)((long)pDest + ((ulong)uVar5 - 8)) =
       *(undefined8 *)((long)pSrc + ((ulong)uVar5 - 8));
  puVar8 = (undefined8 *)((ulong)&pDest->u & 0xfffffffffffffff8);
  lVar4 = (long)pDest - (long)puVar8;
  puVar7 = (undefined8 *)((long)pSrc - lVar4);
  for (uVar6 = (ulong)(uVar5 + (int)lVar4 >> 3); uVar6 != 0; uVar6 = uVar6 - 1) {
    *puVar8 = *puVar7;
    puVar7 = puVar7 + 1;
    puVar8 = puVar8 + 1;
  }
  return;
}



void FUN_00138cd2(undefined8 *param_1,undefined8 *param_2)

{
  long lVar1;
  uint uVar2;
  ulong uVar3;
  undefined8 *puVar4;
  undefined8 *puVar5;
  
  *param_1 = 0;
  param_1[1] = 0;
  param_1[2] = 0;
  param_1[3] = 0;
  param_1[4] = 0;
  param_1[5] = 0;
  param_1[6] = 0;
  param_1[7] = 0;
  param_1[8] = 0;
  param_1[9] = 0;
  uVar2 = 0x10;
  if ((*(uint *)((long)param_2 + 4) & 0x4000) == 0) {
    uVar2 = (-(uint)((*(uint *)((long)param_2 + 4) & 0x2000) == 0) & 0x24) + 0x2c;
  }
  *param_1 = *param_2;
  *(undefined8 *)((long)param_1 + ((ulong)uVar2 - 8)) =
       *(undefined8 *)((long)param_2 + ((ulong)uVar2 - 8));
  lVar1 = (long)param_1 - (long)((ulong)(param_1 + 1) & 0xfffffffffffffff8);
  puVar4 = (undefined8 *)((long)param_2 - lVar1);
  puVar5 = (undefined8 *)((ulong)(param_1 + 1) & 0xfffffffffffffff8);
  for (uVar3 = (ulong)(uVar2 + (int)lVar1 >> 3); uVar3 != 0; uVar3 = uVar3 - 1) {
    *puVar5 = *puVar4;
    puVar4 = puVar4 + 1;
    puVar5 = puVar5 + 1;
  }
  return;
}


MOV RAX,RDI
MOV qword ptr [RDI],0x0
MOV qword ptr [RDI + 0x8],0x0
MOV qword ptr [RDI + 0x10],0x0
MOV qword ptr [RDI + 0x18],0x0
MOV qword ptr [RDI + 0x20],0x0
MOV qword ptr [RDI + 0x28],0x0
MOV qword ptr [RDI + 0x30],0x0
MOV qword ptr [RDI + 0x38],0x0
MOV qword ptr [RDI + 0x40],0x0
MOV qword ptr [RDI + 0x48],0x0
MOV EDX,dword ptr [RSI + 0x4]
MOV ECX,0x10
TEST DH,0x40
JNZ 0x00138d42
AND EDX,0x2000
CMP EDX,0x1
SBB ECX,ECX
AND ECX,0x24
ADD ECX,0x2c
MOV RDX,qword ptr [RSI]
MOV qword ptr [RAX],RDX
MOV EDX,ECX
MOV RDI,qword ptr [RSI + RDX*0x1 + -0x8]
MOV qword ptr [RAX + RDX*0x1 + -0x8],RDI
LEA RDI,[RAX + 0x8]
AND RDI,-0x8
SUB RAX,RDI
SUB RSI,RAX
ADD ECX,EAX
SHR ECX,0x3
MOV ECX,ECX
MOVSQ.REP RDI,RSI
RET
(translation_unit "void FUN_00138cd2(undefined8 *param_1,undefined8 *param_2)\n\n{\n  long lVar1;\n  uint uVar2;\n  ulong uVar3;\n  undefined8 *puVar4;\n  undefined8 *puVar5;\n  \n  *param_1 = 0;\n  param_1[1] = 0;\n  param_1[2] = 0;\n  param_1[3] = 0;\n  param_1[4] = 0;\n  param_1[5] = 0;\n  param_1[6] = 0;\n  param_1[7] = 0;\n  param_1[8] = 0;\n  param_1[9] = 0;\n  uVar2 = 0x10;\n  if ((*(uint *)((long)param_2 + 4) & 0x4000) == 0) {\n    uVar2 = (-(uint)((*(uint *)((long)param_2 + 4) & 0x2000) == 0) & 0x24) + 0x2c;\n  }\n  *param_1 = *param_2;\n  *(undefined8 *)((long)param_1 + ((ulong)uVar2 - 8)) =\n       *(undefined8 *)((long)param_2 + ((ulong)uVar2 - 8));\n  lVar1 = (long)param_1 - (long)((ulong)(param_1 + 1) & 0xfffffffffffffff8);\n  puVar4 = (undefined8 *)((long)param_2 - lVar1);\n  puVar5 = (undefined8 *)((ulong)(param_1 + 1) & 0xfffffffffffffff8);\n  for (uVar3 = (ulong)(uVar2 + (int)lVar1 >> 3); uVar3 != 0; uVar3 = uVar3 - 1) {\n    *puVar5 = *puVar4;\n    puVar4 = puVar4 + 1;\n    puVar5 = puVar5 + 1;\n  }\n  return;\n}\n\n" (function_definition "void FUN_00138cd2(undefined8 *param_1,undefined8 *param_2)\n\n{\n  long lVar1;\n  uint uVar2;\n  ulong uVar3;\n  undefined8 *puVar4;\n  undefined8 *puVar5;\n  \n  *param_1 = 0;\n  param_1[1] = 0;\n  param_1[2] = 0;\n  param_1[3] = 0;\n  param_1[4] = 0;\n  param_1[5] = 0;\n  param_1[6] = 0;\n  param_1[7] = 0;\n  param_1[8] = 0;\n  param_1[9] = 0;\n  uVar2 = 0x10;\n  if ((*(uint *)((long)param_2 + 4) & 0x4000) == 0) {\n    uVar2 = (-(uint)((*(uint *)((long)param_2 + 4) & 0x2000) == 0) & 0x24) + 0x2c;\n  }\n  *param_1 = *param_2;\n  *(undefined8 *)((long)param_1 + ((ulong)uVar2 - 8)) =\n       *(undefined8 *)((long)param_2 + ((ulong)uVar2 - 8));\n  lVar1 = (long)param_1 - (long)((ulong)(param_1 + 1) & 0xfffffffffffffff8);\n  puVar4 = (undefined8 *)((long)param_2 - lVar1);\n  puVar5 = (undefined8 *)((ulong)(param_1 + 1) & 0xfffffffffffffff8);\n  for (uVar3 = (ulong)(uVar2 + (int)lVar1 >> 3); uVar3 != 0; uVar3 = uVar3 - 1) {\n    *puVar5 = *puVar4;\n    puVar4 = puVar4 + 1;\n    puVar5 = puVar5 + 1;\n  }\n  return;\n}" primitive_type (function_declarator "FUN_00138cd2(undefined8 *param_1,undefined8 *param_2)" identifier (parameter_list "(undefined8 *param_1,undefined8 *param_2)" ( (parameter_declaration "undefined8 *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "undefined8 *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) ))) (compound_statement "{\n  long lVar1;\n  uint uVar2;\n  ulong uVar3;\n  undefined8 *puVar4;\n  undefined8 *puVar5;\n  \n  *param_1 = 0;\n  param_1[1] = 0;\n  param_1[2] = 0;\n  param_1[3] = 0;\n  param_1[4] = 0;\n  param_1[5] = 0;\n  param_1[6] = 0;\n  param_1[7] = 0;\n  param_1[8] = 0;\n  param_1[9] = 0;\n  uVar2 = 0x10;\n  if ((*(uint *)((long)param_2 + 4) & 0x4000) == 0) {\n    uVar2 = (-(uint)((*(uint *)((long)param_2 + 4) & 0x2000) == 0) & 0x24) + 0x2c;\n  }\n  *param_1 = *param_2;\n  *(undefined8 *)((long)param_1 + ((ulong)uVar2 - 8)) =\n       *(undefined8 *)((long)param_2 + ((ulong)uVar2 - 8));\n  lVar1 = (long)param_1 - (long)((ulong)(param_1 + 1) & 0xfffffffffffffff8);\n  puVar4 = (undefined8 *)((long)param_2 - lVar1);\n  puVar5 = (undefined8 *)((ulong)(param_1 + 1) & 0xfffffffffffffff8);\n  for (uVar3 = (ulong)(uVar2 + (int)lVar1 >> 3); uVar3 != 0; uVar3 = uVar3 - 1) {\n    *puVar5 = *puVar4;\n    puVar4 = puVar4 + 1;\n    puVar5 = puVar5 + 1;\n  }\n  return;\n}" { (declaration "long lVar1;" (sized_type_specifier "long" long) identifier ;) (declaration "uint uVar2;" type_identifier identifier ;) (declaration "ulong uVar3;" type_identifier identifier ;) (declaration "undefined8 *puVar4;" type_identifier (pointer_declarator "*puVar4" * identifier) ;) (declaration "undefined8 *puVar5;" type_identifier (pointer_declarator "*puVar5" * identifier) ;) (expression_statement "*param_1 = 0;" (assignment_expression "*param_1 = 0" (pointer_expression "*param_1" * identifier) = number_literal) ;) (expression_statement "param_1[1] = 0;" (assignment_expression "param_1[1] = 0" (subscript_expression "param_1[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_1[2] = 0;" (assignment_expression "param_1[2] = 0" (subscript_expression "param_1[2]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_1[3] = 0;" (assignment_expression "param_1[3] = 0" (subscript_expression "param_1[3]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_1[4] = 0;" (assignment_expression "param_1[4] = 0" (subscript_expression "param_1[4]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_1[5] = 0;" (assignment_expression "param_1[5] = 0" (subscript_expression "param_1[5]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_1[6] = 0;" (assignment_expression "param_1[6] = 0" (subscript_expression "param_1[6]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_1[7] = 0;" (assignment_expression "param_1[7] = 0" (subscript_expression "param_1[7]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_1[8] = 0;" (assignment_expression "param_1[8] = 0" (subscript_expression "param_1[8]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_1[9] = 0;" (assignment_expression "param_1[9] = 0" (subscript_expression "param_1[9]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "uVar2 = 0x10;" (assignment_expression "uVar2 = 0x10" identifier = number_literal) ;) (if_statement "if ((*(uint *)((long)param_2 + 4) & 0x4000) == 0) {\n    uVar2 = (-(uint)((*(uint *)((long)param_2 + 4) & 0x2000) == 0) & 0x24) + 0x2c;\n  }" if (parenthesized_expression "((*(uint *)((long)param_2 + 4) & 0x4000) == 0)" ( (binary_expression "(*(uint *)((long)param_2 + 4) & 0x4000) == 0" (parenthesized_expression "(*(uint *)((long)param_2 + 4) & 0x4000)" ( (binary_expression "*(uint *)((long)param_2 + 4) & 0x4000" (pointer_expression "*(uint *)((long)param_2 + 4)" * (cast_expression "(uint *)((long)param_2 + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_2 + 4)" ( (binary_expression "(long)param_2 + 4" (cast_expression "(long)param_2" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) & number_literal) )) == number_literal) )) (compound_statement "{\n    uVar2 = (-(uint)((*(uint *)((long)param_2 + 4) & 0x2000) == 0) & 0x24) + 0x2c;\n  }" { (expression_statement "uVar2 = (-(uint)((*(uint *)((long)param_2 + 4) & 0x2000) == 0) & 0x24) + 0x2c;" (assignment_expression "uVar2 = (-(uint)((*(uint *)((long)param_2 + 4) & 0x2000) == 0) & 0x24) + 0x2c" identifier = (binary_expression "(-(uint)((*(uint *)((long)param_2 + 4) & 0x2000) == 0) & 0x24) + 0x2c" (parenthesized_expression "(-(uint)((*(uint *)((long)param_2 + 4) & 0x2000) == 0) & 0x24)" ( (binary_expression "-(uint)((*(uint *)((long)param_2 + 4) & 0x2000) == 0) & 0x24" (unary_expression "-(uint)((*(uint *)((long)param_2 + 4) & 0x2000) == 0)" - (call_expression "(uint)((*(uint *)((long)param_2 + 4) & 0x2000) == 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((*(uint *)((long)param_2 + 4) & 0x2000) == 0)" ( (binary_expression "(*(uint *)((long)param_2 + 4) & 0x2000) == 0" (parenthesized_expression "(*(uint *)((long)param_2 + 4) & 0x2000)" ( (binary_expression "*(uint *)((long)param_2 + 4) & 0x2000" (pointer_expression "*(uint *)((long)param_2 + 4)" * (cast_expression "(uint *)((long)param_2 + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_2 + 4)" ( (binary_expression "(long)param_2 + 4" (cast_expression "(long)param_2" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) & number_literal) )) == number_literal) )))) & number_literal) )) + number_literal)) ;) })) (expression_statement "*param_1 = *param_2;" (assignment_expression "*param_1 = *param_2" (pointer_expression "*param_1" * identifier) = (pointer_expression "*param_2" * identifier)) ;) (expression_statement "*(undefined8 *)((long)param_1 + ((ulong)uVar2 - 8)) =\n       *(undefined8 *)((long)param_2 + ((ulong)uVar2 - 8));" (assignment_expression "*(undefined8 *)((long)param_1 + ((ulong)uVar2 - 8)) =\n       *(undefined8 *)((long)param_2 + ((ulong)uVar2 - 8))" (pointer_expression "*(undefined8 *)((long)param_1 + ((ulong)uVar2 - 8))" * (cast_expression "(undefined8 *)((long)param_1 + ((ulong)uVar2 - 8))" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_1 + ((ulong)uVar2 - 8))" ( (binary_expression "(long)param_1 + ((ulong)uVar2 - 8)" (cast_expression "(long)param_1" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + (parenthesized_expression "((ulong)uVar2 - 8)" ( (binary_expression "(ulong)uVar2 - 8" (cast_expression "(ulong)uVar2" ( (type_descriptor "ulong" type_identifier) ) identifier) - number_literal) ))) )))) = (pointer_expression "*(undefined8 *)((long)param_2 + ((ulong)uVar2 - 8))" * (cast_expression "(undefined8 *)((long)param_2 + ((ulong)uVar2 - 8))" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_2 + ((ulong)uVar2 - 8))" ( (binary_expression "(long)param_2 + ((ulong)uVar2 - 8)" (cast_expression "(long)param_2" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + (parenthesized_expression "((ulong)uVar2 - 8)" ( (binary_expression "(ulong)uVar2 - 8" (cast_expression "(ulong)uVar2" ( (type_descriptor "ulong" type_identifier) ) identifier) - number_literal) ))) ))))) ;) (expression_statement "lVar1 = (long)param_1 - (long)((ulong)(param_1 + 1) & 0xfffffffffffffff8);" (assignment_expression "lVar1 = (long)param_1 - (long)((ulong)(param_1 + 1) & 0xfffffffffffffff8)" identifier = (binary_expression "(long)param_1 - (long)((ulong)(param_1 + 1) & 0xfffffffffffffff8)" (cast_expression "(long)param_1" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) - (cast_expression "(long)((ulong)(param_1 + 1) & 0xfffffffffffffff8)" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (parenthesized_expression "((ulong)(param_1 + 1) & 0xfffffffffffffff8)" ( (binary_expression "(ulong)(param_1 + 1) & 0xfffffffffffffff8" (call_expression "(ulong)(param_1 + 1)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(param_1 + 1)" ( (binary_expression "param_1 + 1" identifier + number_literal) ))) & number_literal) ))))) ;) (expression_statement "puVar4 = (undefined8 *)((long)param_2 - lVar1);" (assignment_expression "puVar4 = (undefined8 *)((long)param_2 - lVar1)" identifier = (cast_expression "(undefined8 *)((long)param_2 - lVar1)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_2 - lVar1)" ( (binary_expression "(long)param_2 - lVar1" (cast_expression "(long)param_2" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) - identifier) )))) ;) (expression_statement "puVar5 = (undefined8 *)((ulong)(param_1 + 1) & 0xfffffffffffffff8);" (assignment_expression "puVar5 = (undefined8 *)((ulong)(param_1 + 1) & 0xfffffffffffffff8)" identifier = (cast_expression "(undefined8 *)((ulong)(param_1 + 1) & 0xfffffffffffffff8)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((ulong)(param_1 + 1) & 0xfffffffffffffff8)" ( (binary_expression "(ulong)(param_1 + 1) & 0xfffffffffffffff8" (call_expression "(ulong)(param_1 + 1)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(param_1 + 1)" ( (binary_expression "param_1 + 1" identifier + number_literal) ))) & number_literal) )))) ;) (for_statement "for (uVar3 = (ulong)(uVar2 + (int)lVar1 >> 3); uVar3 != 0; uVar3 = uVar3 - 1) {\n    *puVar5 = *puVar4;\n    puVar4 = puVar4 + 1;\n    puVar5 = puVar5 + 1;\n  }" for ( (assignment_expression "uVar3 = (ulong)(uVar2 + (int)lVar1 >> 3)" identifier = (call_expression "(ulong)(uVar2 + (int)lVar1 >> 3)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(uVar2 + (int)lVar1 >> 3)" ( (binary_expression "uVar2 + (int)lVar1 >> 3" (binary_expression "uVar2 + (int)lVar1" identifier + (cast_expression "(int)lVar1" ( (type_descriptor "int" primitive_type) ) identifier)) >> number_literal) )))) ; (binary_expression "uVar3 != 0" identifier != number_literal) ; (assignment_expression "uVar3 = uVar3 - 1" identifier = (binary_expression "uVar3 - 1" identifier - number_literal)) ) (compound_statement "{\n    *puVar5 = *puVar4;\n    puVar4 = puVar4 + 1;\n    puVar5 = puVar5 + 1;\n  }" { (expression_statement "*puVar5 = *puVar4;" (assignment_expression "*puVar5 = *puVar4" (pointer_expression "*puVar5" * identifier) = (pointer_expression "*puVar4" * identifier)) ;) (expression_statement "puVar4 = puVar4 + 1;" (assignment_expression "puVar4 = puVar4 + 1" identifier = (binary_expression "puVar4 + 1" identifier + number_literal)) ;) (expression_statement "puVar5 = puVar5 + 1;" (assignment_expression "puVar5 = puVar5 + 1" identifier = (binary_expression "puVar5 + 1" identifier + number_literal)) ;) })) (return_statement "return;" return ;) })))
(translation_unit "void exprNodeCopy(Expr *pDest,Expr *pSrc)\n\n{\n  char cVar1;\n  undefined2 uVar2;\n  u32 uVar3;\n  long lVar4;\n  uint uVar5;\n  ulong uVar6;\n  undefined8 *puVar7;\n  undefined8 *puVar8;\n  \n  pDest->op = '\0';\n  pDest->affinity = '\0';\n  *(undefined2 *)&pDest->field_0x2 = 0;\n  pDest->flags = 0;\n  (pDest->u).zToken = (char *)0x0;\n  pDest->pLeft = (Expr *)0x0;\n  pDest->pRight = (Expr *)0x0;\n  (pDest->x).pList = (ExprList *)0x0;\n  pDest->nHeight = 0;\n  pDest->iTable = 0;\n  pDest->iColumn = 0;\n  pDest->iAgg = 0;\n  pDest->iRightJoinTable = 0;\n  *(undefined8 *)&pDest->op2 = 0;\n  pDest->pAggInfo = (AggInfo *)0x0;\n  (pDest->y).pTab = (Table *)0x0;\n  uVar5 = 0x10;\n  if ((pSrc->flags & 0x4000) == 0) {\n    uVar5 = (-(uint)((pSrc->flags & 0x2000) == 0) & 0x24) + 0x2c;\n  }\n  cVar1 = pSrc->affinity;\n  uVar2 = *(undefined2 *)&pSrc->field_0x2;\n  uVar3 = pSrc->flags;\n  pDest->op = pSrc->op;\n  pDest->affinity = cVar1;\n  *(undefined2 *)&pDest->field_0x2 = uVar2;\n  pDest->flags = uVar3;\n  *(undefined8 *)((long)pDest + ((ulong)uVar5 - 8)) =\n       *(undefined8 *)((long)pSrc + ((ulong)uVar5 - 8));\n  puVar8 = (undefined8 *)((ulong)&pDest->u & 0xfffffffffffffff8);\n  lVar4 = (long)pDest - (long)puVar8;\n  puVar7 = (undefined8 *)((long)pSrc - lVar4);\n  for (uVar6 = (ulong)(uVar5 + (int)lVar4 >> 3); uVar6 != 0; uVar6 = uVar6 - 1) {\n    *puVar8 = *puVar7;\n    puVar7 = puVar7 + 1;\n    puVar8 = puVar8 + 1;\n  }\n  return;\n}\n\n" (function_definition "void exprNodeCopy(Expr *pDest,Expr *pSrc)\n\n{\n  char cVar1;\n  undefined2 uVar2;\n  u32 uVar3;\n  long lVar4;\n  uint uVar5;\n  ulong uVar6;\n  undefined8 *puVar7;\n  undefined8 *puVar8;\n  \n  pDest->op = '\0';\n  pDest->affinity = '\0';\n  *(undefined2 *)&pDest->field_0x2 = 0;\n  pDest->flags = 0;\n  (pDest->u).zToken = (char *)0x0;\n  pDest->pLeft = (Expr *)0x0;\n  pDest->pRight = (Expr *)0x0;\n  (pDest->x).pList = (ExprList *)0x0;\n  pDest->nHeight = 0;\n  pDest->iTable = 0;\n  pDest->iColumn = 0;\n  pDest->iAgg = 0;\n  pDest->iRightJoinTable = 0;\n  *(undefined8 *)&pDest->op2 = 0;\n  pDest->pAggInfo = (AggInfo *)0x0;\n  (pDest->y).pTab = (Table *)0x0;\n  uVar5 = 0x10;\n  if ((pSrc->flags & 0x4000) == 0) {\n    uVar5 = (-(uint)((pSrc->flags & 0x2000) == 0) & 0x24) + 0x2c;\n  }\n  cVar1 = pSrc->affinity;\n  uVar2 = *(undefined2 *)&pSrc->field_0x2;\n  uVar3 = pSrc->flags;\n  pDest->op = pSrc->op;\n  pDest->affinity = cVar1;\n  *(undefined2 *)&pDest->field_0x2 = uVar2;\n  pDest->flags = uVar3;\n  *(undefined8 *)((long)pDest + ((ulong)uVar5 - 8)) =\n       *(undefined8 *)((long)pSrc + ((ulong)uVar5 - 8));\n  puVar8 = (undefined8 *)((ulong)&pDest->u & 0xfffffffffffffff8);\n  lVar4 = (long)pDest - (long)puVar8;\n  puVar7 = (undefined8 *)((long)pSrc - lVar4);\n  for (uVar6 = (ulong)(uVar5 + (int)lVar4 >> 3); uVar6 != 0; uVar6 = uVar6 - 1) {\n    *puVar8 = *puVar7;\n    puVar7 = puVar7 + 1;\n    puVar8 = puVar8 + 1;\n  }\n  return;\n}" primitive_type (function_declarator "exprNodeCopy(Expr *pDest,Expr *pSrc)" identifier (parameter_list "(Expr *pDest,Expr *pSrc)" ( (parameter_declaration "Expr *pDest" type_identifier (pointer_declarator "*pDest" * identifier)) , (parameter_declaration "Expr *pSrc" type_identifier (pointer_declarator "*pSrc" * identifier)) ))) (compound_statement "{\n  char cVar1;\n  undefined2 uVar2;\n  u32 uVar3;\n  long lVar4;\n  uint uVar5;\n  ulong uVar6;\n  undefined8 *puVar7;\n  undefined8 *puVar8;\n  \n  pDest->op = '\0';\n  pDest->affinity = '\0';\n  *(undefined2 *)&pDest->field_0x2 = 0;\n  pDest->flags = 0;\n  (pDest->u).zToken = (char *)0x0;\n  pDest->pLeft = (Expr *)0x0;\n  pDest->pRight = (Expr *)0x0;\n  (pDest->x).pList = (ExprList *)0x0;\n  pDest->nHeight = 0;\n  pDest->iTable = 0;\n  pDest->iColumn = 0;\n  pDest->iAgg = 0;\n  pDest->iRightJoinTable = 0;\n  *(undefined8 *)&pDest->op2 = 0;\n  pDest->pAggInfo = (AggInfo *)0x0;\n  (pDest->y).pTab = (Table *)0x0;\n  uVar5 = 0x10;\n  if ((pSrc->flags & 0x4000) == 0) {\n    uVar5 = (-(uint)((pSrc->flags & 0x2000) == 0) & 0x24) + 0x2c;\n  }\n  cVar1 = pSrc->affinity;\n  uVar2 = *(undefined2 *)&pSrc->field_0x2;\n  uVar3 = pSrc->flags;\n  pDest->op = pSrc->op;\n  pDest->affinity = cVar1;\n  *(undefined2 *)&pDest->field_0x2 = uVar2;\n  pDest->flags = uVar3;\n  *(undefined8 *)((long)pDest + ((ulong)uVar5 - 8)) =\n       *(undefined8 *)((long)pSrc + ((ulong)uVar5 - 8));\n  puVar8 = (undefined8 *)((ulong)&pDest->u & 0xfffffffffffffff8);\n  lVar4 = (long)pDest - (long)puVar8;\n  puVar7 = (undefined8 *)((long)pSrc - lVar4);\n  for (uVar6 = (ulong)(uVar5 + (int)lVar4 >> 3); uVar6 != 0; uVar6 = uVar6 - 1) {\n    *puVar8 = *puVar7;\n    puVar7 = puVar7 + 1;\n    puVar8 = puVar8 + 1;\n  }\n  return;\n}" { (declaration "char cVar1;" primitive_type identifier ;) (declaration "undefined2 uVar2;" type_identifier identifier ;) (declaration "u32 uVar3;" type_identifier identifier ;) (declaration "long lVar4;" (sized_type_specifier "long" long) identifier ;) (declaration "uint uVar5;" type_identifier identifier ;) (declaration "ulong uVar6;" type_identifier identifier ;) (declaration "undefined8 *puVar7;" type_identifier (pointer_declarator "*puVar7" * identifier) ;) (declaration "undefined8 *puVar8;" type_identifier (pointer_declarator "*puVar8" * identifier) ;) (expression_statement "pDest->op = '\0';" (assignment_expression "pDest->op = '\0'" (field_expression "pDest->op" identifier -> field_identifier) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "pDest->affinity = '\0';" (assignment_expression "pDest->affinity = '\0'" (field_expression "pDest->affinity" identifier -> field_identifier) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "*(undefined2 *)&pDest->field_0x2 = 0;" (assignment_expression "*(undefined2 *)&pDest->field_0x2 = 0" (pointer_expression "*(undefined2 *)&pDest->field_0x2" * (cast_expression "(undefined2 *)&pDest->field_0x2" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&pDest->field_0x2" & (field_expression "pDest->field_0x2" identifier -> field_identifier)))) = number_literal) ;) (expression_statement "pDest->flags = 0;" (assignment_expression "pDest->flags = 0" (field_expression "pDest->flags" identifier -> field_identifier) = number_literal) ;) (expression_statement "(pDest->u).zToken = (char *)0x0;" (assignment_expression "(pDest->u).zToken = (char *)0x0" (field_expression "(pDest->u).zToken" (parenthesized_expression "(pDest->u)" ( (field_expression "pDest->u" identifier -> field_identifier) )) . field_identifier) = (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "pDest->pLeft = (Expr *)0x0;" (assignment_expression "pDest->pLeft = (Expr *)0x0" (field_expression "pDest->pLeft" identifier -> field_identifier) = (cast_expression "(Expr *)0x0" ( (type_descriptor "Expr *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "pDest->pRight = (Expr *)0x0;" (assignment_expression "pDest->pRight = (Expr *)0x0" (field_expression "pDest->pRight" identifier -> field_identifier) = (cast_expression "(Expr *)0x0" ( (type_descriptor "Expr *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "(pDest->x).pList = (ExprList *)0x0;" (assignment_expression "(pDest->x).pList = (ExprList *)0x0" (field_expression "(pDest->x).pList" (parenthesized_expression "(pDest->x)" ( (field_expression "pDest->x" identifier -> field_identifier) )) . field_identifier) = (cast_expression "(ExprList *)0x0" ( (type_descriptor "ExprList *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "pDest->nHeight = 0;" (assignment_expression "pDest->nHeight = 0" (field_expression "pDest->nHeight" identifier -> field_identifier) = number_literal) ;) (expression_statement "pDest->iTable = 0;" (assignment_expression "pDest->iTable = 0" (field_expression "pDest->iTable" identifier -> field_identifier) = number_literal) ;) (expression_statement "pDest->iColumn = 0;" (assignment_expression "pDest->iColumn = 0" (field_expression "pDest->iColumn" identifier -> field_identifier) = number_literal) ;) (expression_statement "pDest->iAgg = 0;" (assignment_expression "pDest->iAgg = 0" (field_expression "pDest->iAgg" identifier -> field_identifier) = number_literal) ;) (expression_statement "pDest->iRightJoinTable = 0;" (assignment_expression "pDest->iRightJoinTable = 0" (field_expression "pDest->iRightJoinTable" identifier -> field_identifier) = number_literal) ;) (expression_statement "*(undefined8 *)&pDest->op2 = 0;" (assignment_expression "*(undefined8 *)&pDest->op2 = 0" (pointer_expression "*(undefined8 *)&pDest->op2" * (cast_expression "(undefined8 *)&pDest->op2" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&pDest->op2" & (field_expression "pDest->op2" identifier -> field_identifier)))) = number_literal) ;) (expression_statement "pDest->pAggInfo = (AggInfo *)0x0;" (assignment_expression "pDest->pAggInfo = (AggInfo *)0x0" (field_expression "pDest->pAggInfo" identifier -> field_identifier) = (cast_expression "(AggInfo *)0x0" ( (type_descriptor "AggInfo *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "(pDest->y).pTab = (Table *)0x0;" (assignment_expression "(pDest->y).pTab = (Table *)0x0" (field_expression "(pDest->y).pTab" (parenthesized_expression "(pDest->y)" ( (field_expression "pDest->y" identifier -> field_identifier) )) . field_identifier) = (cast_expression "(Table *)0x0" ( (type_descriptor "Table *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "uVar5 = 0x10;" (assignment_expression "uVar5 = 0x10" identifier = number_literal) ;) (if_statement "if ((pSrc->flags & 0x4000) == 0) {\n    uVar5 = (-(uint)((pSrc->flags & 0x2000) == 0) & 0x24) + 0x2c;\n  }" if (parenthesized_expression "((pSrc->flags & 0x4000) == 0)" ( (binary_expression "(pSrc->flags & 0x4000) == 0" (parenthesized_expression "(pSrc->flags & 0x4000)" ( (binary_expression "pSrc->flags & 0x4000" (field_expression "pSrc->flags" identifier -> field_identifier) & number_literal) )) == number_literal) )) (compound_statement "{\n    uVar5 = (-(uint)((pSrc->flags & 0x2000) == 0) & 0x24) + 0x2c;\n  }" { (expression_statement "uVar5 = (-(uint)((pSrc->flags & 0x2000) == 0) & 0x24) + 0x2c;" (assignment_expression "uVar5 = (-(uint)((pSrc->flags & 0x2000) == 0) & 0x24) + 0x2c" identifier = (binary_expression "(-(uint)((pSrc->flags & 0x2000) == 0) & 0x24) + 0x2c" (parenthesized_expression "(-(uint)((pSrc->flags & 0x2000) == 0) & 0x24)" ( (binary_expression "-(uint)((pSrc->flags & 0x2000) == 0) & 0x24" (unary_expression "-(uint)((pSrc->flags & 0x2000) == 0)" - (call_expression "(uint)((pSrc->flags & 0x2000) == 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((pSrc->flags & 0x2000) == 0)" ( (binary_expression "(pSrc->flags & 0x2000) == 0" (parenthesized_expression "(pSrc->flags & 0x2000)" ( (binary_expression "pSrc->flags & 0x2000" (field_expression "pSrc->flags" identifier -> field_identifier) & number_literal) )) == number_literal) )))) & number_literal) )) + number_literal)) ;) })) (expression_statement "cVar1 = pSrc->affinity;" (assignment_expression "cVar1 = pSrc->affinity" identifier = (field_expression "pSrc->affinity" identifier -> field_identifier)) ;) (expression_statement "uVar2 = *(undefined2 *)&pSrc->field_0x2;" (assignment_expression "uVar2 = *(undefined2 *)&pSrc->field_0x2" identifier = (pointer_expression "*(undefined2 *)&pSrc->field_0x2" * (cast_expression "(undefined2 *)&pSrc->field_0x2" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&pSrc->field_0x2" & (field_expression "pSrc->field_0x2" identifier -> field_identifier))))) ;) (expression_statement "uVar3 = pSrc->flags;" (assignment_expression "uVar3 = pSrc->flags" identifier = (field_expression "pSrc->flags" identifier -> field_identifier)) ;) (expression_statement "pDest->op = pSrc->op;" (assignment_expression "pDest->op = pSrc->op" (field_expression "pDest->op" identifier -> field_identifier) = (field_expression "pSrc->op" identifier -> field_identifier)) ;) (expression_statement "pDest->affinity = cVar1;" (assignment_expression "pDest->affinity = cVar1" (field_expression "pDest->affinity" identifier -> field_identifier) = identifier) ;) (expression_statement "*(undefined2 *)&pDest->field_0x2 = uVar2;" (assignment_expression "*(undefined2 *)&pDest->field_0x2 = uVar2" (pointer_expression "*(undefined2 *)&pDest->field_0x2" * (cast_expression "(undefined2 *)&pDest->field_0x2" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&pDest->field_0x2" & (field_expression "pDest->field_0x2" identifier -> field_identifier)))) = identifier) ;) (expression_statement "pDest->flags = uVar3;" (assignment_expression "pDest->flags = uVar3" (field_expression "pDest->flags" identifier -> field_identifier) = identifier) ;) (expression_statement "*(undefined8 *)((long)pDest + ((ulong)uVar5 - 8)) =\n       *(undefined8 *)((long)pSrc + ((ulong)uVar5 - 8));" (assignment_expression "*(undefined8 *)((long)pDest + ((ulong)uVar5 - 8)) =\n       *(undefined8 *)((long)pSrc + ((ulong)uVar5 - 8))" (pointer_expression "*(undefined8 *)((long)pDest + ((ulong)uVar5 - 8))" * (cast_expression "(undefined8 *)((long)pDest + ((ulong)uVar5 - 8))" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)pDest + ((ulong)uVar5 - 8))" ( (binary_expression "(long)pDest + ((ulong)uVar5 - 8)" (cast_expression "(long)pDest" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + (parenthesized_expression "((ulong)uVar5 - 8)" ( (binary_expression "(ulong)uVar5 - 8" (cast_expression "(ulong)uVar5" ( (type_descriptor "ulong" type_identifier) ) identifier) - number_literal) ))) )))) = (pointer_expression "*(undefined8 *)((long)pSrc + ((ulong)uVar5 - 8))" * (cast_expression "(undefined8 *)((long)pSrc + ((ulong)uVar5 - 8))" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)pSrc + ((ulong)uVar5 - 8))" ( (binary_expression "(long)pSrc + ((ulong)uVar5 - 8)" (cast_expression "(long)pSrc" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + (parenthesized_expression "((ulong)uVar5 - 8)" ( (binary_expression "(ulong)uVar5 - 8" (cast_expression "(ulong)uVar5" ( (type_descriptor "ulong" type_identifier) ) identifier) - number_literal) ))) ))))) ;) (expression_statement "puVar8 = (undefined8 *)((ulong)&pDest->u & 0xfffffffffffffff8);" (assignment_expression "puVar8 = (undefined8 *)((ulong)&pDest->u & 0xfffffffffffffff8)" identifier = (cast_expression "(undefined8 *)((ulong)&pDest->u & 0xfffffffffffffff8)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((ulong)&pDest->u & 0xfffffffffffffff8)" ( (binary_expression "(ulong)&pDest->u & 0xfffffffffffffff8" (binary_expression "(ulong)&pDest->u" (parenthesized_expression "(ulong)" ( identifier )) & (field_expression "pDest->u" identifier -> field_identifier)) & number_literal) )))) ;) (expression_statement "lVar4 = (long)pDest - (long)puVar8;" (assignment_expression "lVar4 = (long)pDest - (long)puVar8" identifier = (binary_expression "(long)pDest - (long)puVar8" (cast_expression "(long)pDest" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) - (cast_expression "(long)puVar8" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier))) ;) (expression_statement "puVar7 = (undefined8 *)((long)pSrc - lVar4);" (assignment_expression "puVar7 = (undefined8 *)((long)pSrc - lVar4)" identifier = (cast_expression "(undefined8 *)((long)pSrc - lVar4)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)pSrc - lVar4)" ( (binary_expression "(long)pSrc - lVar4" (cast_expression "(long)pSrc" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) - identifier) )))) ;) (for_statement "for (uVar6 = (ulong)(uVar5 + (int)lVar4 >> 3); uVar6 != 0; uVar6 = uVar6 - 1) {\n    *puVar8 = *puVar7;\n    puVar7 = puVar7 + 1;\n    puVar8 = puVar8 + 1;\n  }" for ( (assignment_expression "uVar6 = (ulong)(uVar5 + (int)lVar4 >> 3)" identifier = (call_expression "(ulong)(uVar5 + (int)lVar4 >> 3)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(uVar5 + (int)lVar4 >> 3)" ( (binary_expression "uVar5 + (int)lVar4 >> 3" (binary_expression "uVar5 + (int)lVar4" identifier + (cast_expression "(int)lVar4" ( (type_descriptor "int" primitive_type) ) identifier)) >> number_literal) )))) ; (binary_expression "uVar6 != 0" identifier != number_literal) ; (assignment_expression "uVar6 = uVar6 - 1" identifier = (binary_expression "uVar6 - 1" identifier - number_literal)) ) (compound_statement "{\n    *puVar8 = *puVar7;\n    puVar7 = puVar7 + 1;\n    puVar8 = puVar8 + 1;\n  }" { (expression_statement "*puVar8 = *puVar7;" (assignment_expression "*puVar8 = *puVar7" (pointer_expression "*puVar8" * identifier) = (pointer_expression "*puVar7" * identifier)) ;) (expression_statement "puVar7 = puVar7 + 1;" (assignment_expression "puVar7 = puVar7 + 1" identifier = (binary_expression "puVar7 + 1" identifier + number_literal)) ;) (expression_statement "puVar8 = puVar8 + 1;" (assignment_expression "puVar8 = puVar8 + 1" identifier = (binary_expression "puVar8 + 1" identifier + number_literal)) ;) })) (return_statement "return;" return ;) })))
(translation_unit "void FUN_00138cd2(undefined8 *param_1,undefined8 *param_2)\n\n{\n  long lVar1;\n  uint uVar2;\n  ulong uVar3;\n  undefined8 *puVar4;\n  undefined8 *puVar5;\n  \n  *param_1 = 0;\n  param_1[1] = 0;\n  param_1[2] = 0;\n  param_1[3] = 0;\n  param_1[4] = 0;\n  param_1[5] = 0;\n  param_1[6] = 0;\n  param_1[7] = 0;\n  param_1[8] = 0;\n  param_1[9] = 0;\n  uVar2 = 0x10;\n  if ((*(uint *)((long)param_2 + 4) & 0x4000) == 0) {\n    uVar2 = (-(uint)((*(uint *)((long)param_2 + 4) & 0x2000) == 0) & 0x24) + 0x2c;\n  }\n  *param_1 = *param_2;\n  *(undefined8 *)((long)param_1 + ((ulong)uVar2 - 8)) =\n       *(undefined8 *)((long)param_2 + ((ulong)uVar2 - 8));\n  lVar1 = (long)param_1 - (long)((ulong)(param_1 + 1) & 0xfffffffffffffff8);\n  puVar4 = (undefined8 *)((long)param_2 - lVar1);\n  puVar5 = (undefined8 *)((ulong)(param_1 + 1) & 0xfffffffffffffff8);\n  for (uVar3 = (ulong)(uVar2 + (int)lVar1 >> 3); uVar3 != 0; uVar3 = uVar3 - 1) {\n    *puVar5 = *puVar4;\n    puVar4 = puVar4 + 1;\n    puVar5 = puVar5 + 1;\n  }\n  return;\n}\n\n" (function_definition "void FUN_00138cd2(undefined8 *param_1,undefined8 *param_2)\n\n{\n  long lVar1;\n  uint uVar2;\n  ulong uVar3;\n  undefined8 *puVar4;\n  undefined8 *puVar5;\n  \n  *param_1 = 0;\n  param_1[1] = 0;\n  param_1[2] = 0;\n  param_1[3] = 0;\n  param_1[4] = 0;\n  param_1[5] = 0;\n  param_1[6] = 0;\n  param_1[7] = 0;\n  param_1[8] = 0;\n  param_1[9] = 0;\n  uVar2 = 0x10;\n  if ((*(uint *)((long)param_2 + 4) & 0x4000) == 0) {\n    uVar2 = (-(uint)((*(uint *)((long)param_2 + 4) & 0x2000) == 0) & 0x24) + 0x2c;\n  }\n  *param_1 = *param_2;\n  *(undefined8 *)((long)param_1 + ((ulong)uVar2 - 8)) =\n       *(undefined8 *)((long)param_2 + ((ulong)uVar2 - 8));\n  lVar1 = (long)param_1 - (long)((ulong)(param_1 + 1) & 0xfffffffffffffff8);\n  puVar4 = (undefined8 *)((long)param_2 - lVar1);\n  puVar5 = (undefined8 *)((ulong)(param_1 + 1) & 0xfffffffffffffff8);\n  for (uVar3 = (ulong)(uVar2 + (int)lVar1 >> 3); uVar3 != 0; uVar3 = uVar3 - 1) {\n    *puVar5 = *puVar4;\n    puVar4 = puVar4 + 1;\n    puVar5 = puVar5 + 1;\n  }\n  return;\n}" primitive_type (function_declarator "FUN_00138cd2(undefined8 *param_1,undefined8 *param_2)" identifier (parameter_list "(undefined8 *param_1,undefined8 *param_2)" ( (parameter_declaration "undefined8 *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "undefined8 *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) ))) (compound_statement "{\n  long lVar1;\n  uint uVar2;\n  ulong uVar3;\n  undefined8 *puVar4;\n  undefined8 *puVar5;\n  \n  *param_1 = 0;\n  param_1[1] = 0;\n  param_1[2] = 0;\n  param_1[3] = 0;\n  param_1[4] = 0;\n  param_1[5] = 0;\n  param_1[6] = 0;\n  param_1[7] = 0;\n  param_1[8] = 0;\n  param_1[9] = 0;\n  uVar2 = 0x10;\n  if ((*(uint *)((long)param_2 + 4) & 0x4000) == 0) {\n    uVar2 = (-(uint)((*(uint *)((long)param_2 + 4) & 0x2000) == 0) & 0x24) + 0x2c;\n  }\n  *param_1 = *param_2;\n  *(undefined8 *)((long)param_1 + ((ulong)uVar2 - 8)) =\n       *(undefined8 *)((long)param_2 + ((ulong)uVar2 - 8));\n  lVar1 = (long)param_1 - (long)((ulong)(param_1 + 1) & 0xfffffffffffffff8);\n  puVar4 = (undefined8 *)((long)param_2 - lVar1);\n  puVar5 = (undefined8 *)((ulong)(param_1 + 1) & 0xfffffffffffffff8);\n  for (uVar3 = (ulong)(uVar2 + (int)lVar1 >> 3); uVar3 != 0; uVar3 = uVar3 - 1) {\n    *puVar5 = *puVar4;\n    puVar4 = puVar4 + 1;\n    puVar5 = puVar5 + 1;\n  }\n  return;\n}" { (declaration "long lVar1;" (sized_type_specifier "long" long) identifier ;) (declaration "uint uVar2;" type_identifier identifier ;) (declaration "ulong uVar3;" type_identifier identifier ;) (declaration "undefined8 *puVar4;" type_identifier (pointer_declarator "*puVar4" * identifier) ;) (declaration "undefined8 *puVar5;" type_identifier (pointer_declarator "*puVar5" * identifier) ;) (expression_statement "*param_1 = 0;" (assignment_expression "*param_1 = 0" (pointer_expression "*param_1" * identifier) = number_literal) ;) (expression_statement "param_1[1] = 0;" (assignment_expression "param_1[1] = 0" (subscript_expression "param_1[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_1[2] = 0;" (assignment_expression "param_1[2] = 0" (subscript_expression "param_1[2]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_1[3] = 0;" (assignment_expression "param_1[3] = 0" (subscript_expression "param_1[3]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_1[4] = 0;" (assignment_expression "param_1[4] = 0" (subscript_expression "param_1[4]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_1[5] = 0;" (assignment_expression "param_1[5] = 0" (subscript_expression "param_1[5]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_1[6] = 0;" (assignment_expression "param_1[6] = 0" (subscript_expression "param_1[6]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_1[7] = 0;" (assignment_expression "param_1[7] = 0" (subscript_expression "param_1[7]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_1[8] = 0;" (assignment_expression "param_1[8] = 0" (subscript_expression "param_1[8]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_1[9] = 0;" (assignment_expression "param_1[9] = 0" (subscript_expression "param_1[9]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "uVar2 = 0x10;" (assignment_expression "uVar2 = 0x10" identifier = number_literal) ;) (if_statement "if ((*(uint *)((long)param_2 + 4) & 0x4000) == 0) {\n    uVar2 = (-(uint)((*(uint *)((long)param_2 + 4) & 0x2000) == 0) & 0x24) + 0x2c;\n  }" if (parenthesized_expression "((*(uint *)((long)param_2 + 4) & 0x4000) == 0)" ( (binary_expression "(*(uint *)((long)param_2 + 4) & 0x4000) == 0" (parenthesized_expression "(*(uint *)((long)param_2 + 4) & 0x4000)" ( (binary_expression "*(uint *)((long)param_2 + 4) & 0x4000" (pointer_expression "*(uint *)((long)param_2 + 4)" * (cast_expression "(uint *)((long)param_2 + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_2 + 4)" ( (binary_expression "(long)param_2 + 4" (cast_expression "(long)param_2" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) & number_literal) )) == number_literal) )) (compound_statement "{\n    uVar2 = (-(uint)((*(uint *)((long)param_2 + 4) & 0x2000) == 0) & 0x24) + 0x2c;\n  }" { (expression_statement "uVar2 = (-(uint)((*(uint *)((long)param_2 + 4) & 0x2000) == 0) & 0x24) + 0x2c;" (assignment_expression "uVar2 = (-(uint)((*(uint *)((long)param_2 + 4) & 0x2000) == 0) & 0x24) + 0x2c" identifier = (binary_expression "(-(uint)((*(uint *)((long)param_2 + 4) & 0x2000) == 0) & 0x24) + 0x2c" (parenthesized_expression "(-(uint)((*(uint *)((long)param_2 + 4) & 0x2000) == 0) & 0x24)" ( (binary_expression "-(uint)((*(uint *)((long)param_2 + 4) & 0x2000) == 0) & 0x24" (unary_expression "-(uint)((*(uint *)((long)param_2 + 4) & 0x2000) == 0)" - (call_expression "(uint)((*(uint *)((long)param_2 + 4) & 0x2000) == 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((*(uint *)((long)param_2 + 4) & 0x2000) == 0)" ( (binary_expression "(*(uint *)((long)param_2 + 4) & 0x2000) == 0" (parenthesized_expression "(*(uint *)((long)param_2 + 4) & 0x2000)" ( (binary_expression "*(uint *)((long)param_2 + 4) & 0x2000" (pointer_expression "*(uint *)((long)param_2 + 4)" * (cast_expression "(uint *)((long)param_2 + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_2 + 4)" ( (binary_expression "(long)param_2 + 4" (cast_expression "(long)param_2" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) & number_literal) )) == number_literal) )))) & number_literal) )) + number_literal)) ;) })) (expression_statement "*param_1 = *param_2;" (assignment_expression "*param_1 = *param_2" (pointer_expression "*param_1" * identifier) = (pointer_expression "*param_2" * identifier)) ;) (expression_statement "*(undefined8 *)((long)param_1 + ((ulong)uVar2 - 8)) =\n       *(undefined8 *)((long)param_2 + ((ulong)uVar2 - 8));" (assignment_expression "*(undefined8 *)((long)param_1 + ((ulong)uVar2 - 8)) =\n       *(undefined8 *)((long)param_2 + ((ulong)uVar2 - 8))" (pointer_expression "*(undefined8 *)((long)param_1 + ((ulong)uVar2 - 8))" * (cast_expression "(undefined8 *)((long)param_1 + ((ulong)uVar2 - 8))" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_1 + ((ulong)uVar2 - 8))" ( (binary_expression "(long)param_1 + ((ulong)uVar2 - 8)" (cast_expression "(long)param_1" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + (parenthesized_expression "((ulong)uVar2 - 8)" ( (binary_expression "(ulong)uVar2 - 8" (cast_expression "(ulong)uVar2" ( (type_descriptor "ulong" type_identifier) ) identifier) - number_literal) ))) )))) = (pointer_expression "*(undefined8 *)((long)param_2 + ((ulong)uVar2 - 8))" * (cast_expression "(undefined8 *)((long)param_2 + ((ulong)uVar2 - 8))" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_2 + ((ulong)uVar2 - 8))" ( (binary_expression "(long)param_2 + ((ulong)uVar2 - 8)" (cast_expression "(long)param_2" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + (parenthesized_expression "((ulong)uVar2 - 8)" ( (binary_expression "(ulong)uVar2 - 8" (cast_expression "(ulong)uVar2" ( (type_descriptor "ulong" type_identifier) ) identifier) - number_literal) ))) ))))) ;) (expression_statement "lVar1 = (long)param_1 - (long)((ulong)(param_1 + 1) & 0xfffffffffffffff8);" (assignment_expression "lVar1 = (long)param_1 - (long)((ulong)(param_1 + 1) & 0xfffffffffffffff8)" identifier = (binary_expression "(long)param_1 - (long)((ulong)(param_1 + 1) & 0xfffffffffffffff8)" (cast_expression "(long)param_1" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) - (cast_expression "(long)((ulong)(param_1 + 1) & 0xfffffffffffffff8)" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (parenthesized_expression "((ulong)(param_1 + 1) & 0xfffffffffffffff8)" ( (binary_expression "(ulong)(param_1 + 1) & 0xfffffffffffffff8" (call_expression "(ulong)(param_1 + 1)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(param_1 + 1)" ( (binary_expression "param_1 + 1" identifier + number_literal) ))) & number_literal) ))))) ;) (expression_statement "puVar4 = (undefined8 *)((long)param_2 - lVar1);" (assignment_expression "puVar4 = (undefined8 *)((long)param_2 - lVar1)" identifier = (cast_expression "(undefined8 *)((long)param_2 - lVar1)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_2 - lVar1)" ( (binary_expression "(long)param_2 - lVar1" (cast_expression "(long)param_2" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) - identifier) )))) ;) (expression_statement "puVar5 = (undefined8 *)((ulong)(param_1 + 1) & 0xfffffffffffffff8);" (assignment_expression "puVar5 = (undefined8 *)((ulong)(param_1 + 1) & 0xfffffffffffffff8)" identifier = (cast_expression "(undefined8 *)((ulong)(param_1 + 1) & 0xfffffffffffffff8)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((ulong)(param_1 + 1) & 0xfffffffffffffff8)" ( (binary_expression "(ulong)(param_1 + 1) & 0xfffffffffffffff8" (call_expression "(ulong)(param_1 + 1)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(param_1 + 1)" ( (binary_expression "param_1 + 1" identifier + number_literal) ))) & number_literal) )))) ;) (for_statement "for (uVar3 = (ulong)(uVar2 + (int)lVar1 >> 3); uVar3 != 0; uVar3 = uVar3 - 1) {\n    *puVar5 = *puVar4;\n    puVar4 = puVar4 + 1;\n    puVar5 = puVar5 + 1;\n  }" for ( (assignment_expression "uVar3 = (ulong)(uVar2 + (int)lVar1 >> 3)" identifier = (call_expression "(ulong)(uVar2 + (int)lVar1 >> 3)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(uVar2 + (int)lVar1 >> 3)" ( (binary_expression "uVar2 + (int)lVar1 >> 3" (binary_expression "uVar2 + (int)lVar1" identifier + (cast_expression "(int)lVar1" ( (type_descriptor "int" primitive_type) ) identifier)) >> number_literal) )))) ; (binary_expression "uVar3 != 0" identifier != number_literal) ; (assignment_expression "uVar3 = uVar3 - 1" identifier = (binary_expression "uVar3 - 1" identifier - number_literal)) ) (compound_statement "{\n    *puVar5 = *puVar4;\n    puVar4 = puVar4 + 1;\n    puVar5 = puVar5 + 1;\n  }" { (expression_statement "*puVar5 = *puVar4;" (assignment_expression "*puVar5 = *puVar4" (pointer_expression "*puVar5" * identifier) = (pointer_expression "*puVar4" * identifier)) ;) (expression_statement "puVar4 = puVar4 + 1;" (assignment_expression "puVar4 = puVar4 + 1" identifier = (binary_expression "puVar4 + 1" identifier + number_literal)) ;) (expression_statement "puVar5 = puVar5 + 1;" (assignment_expression "puVar5 = puVar5 + 1" identifier = (binary_expression "puVar5 + 1" identifier + number_literal)) ;) })) (return_statement "return;" return ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE (pointer_declarator * IDENT)) ))) (compound_statement { (declaration (sized_type_specifier long) IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + LIT) )))) & LIT) )) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression (unary_expression - (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + LIT) )))) & LIT) )) == LIT) )))) & LIT) )) + LIT)) ;) })) (expression_statement (assignment_expression (pointer_expression * IDENT) = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) - LIT) ))) )))) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) - LIT) ))) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) - (cast_expression ( (type_descriptor (sized_type_specifier long)) ) (parenthesized_expression ( (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT + LIT) ))) & LIT) ))))) ;) (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) - IDENT) )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT + LIT) ))) & LIT) )))) ;) (for_statement for ( (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (binary_expression IDENT + (cast_expression ( (type_descriptor TYPE) ) IDENT)) >> LIT) )))) ; (binary_expression IDENT != LIT) ; (assignment_expression IDENT = (binary_expression IDENT - LIT)) ) (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) })) (return_statement return ;) })))
(function_definition "void FUN_00138cd2(undefined8 *param_1,undefined8 *param_2)\n\n{\n  long lVar1;\n  uint uVar2;\n  ulong uVar3;\n  undefined8 *puVar4;\n  undefined8 *puVar5;\n  \n  *param_1 = 0;\n  param_1[1] = 0;\n  param_1[2] = 0;\n  param_1[3] = 0;\n  param_1[4] = 0;\n  param_1[5] = 0;\n  param_1[6] = 0;\n  param_1[7] = 0;\n  param_1[8] = 0;\n  param_1[9] = 0;\n  uVar2 = 0x10;\n  if ((*(uint *)((long)param_2 + 4) & 0x4000) == 0) {\n    uVar2 = (-(uint)((*(uint *)((long)param_2 + 4) & 0x2000) == 0) & 0x24) + 0x2c;\n  }\n  *param_1 = *param_2;\n  *(undefined8 *)((long)param_1 + ((ulong)uVar2 - 8)) =\n       *(undefined8 *)((long)param_2 + ((ulong)uVar2 - 8));\n  lVar1 = (long)param_1 - (long)((ulong)(param_1 + 1) & 0xfffffffffffffff8);\n  puVar4 = (undefined8 *)((long)param_2 - lVar1);\n  puVar5 = (undefined8 *)((ulong)(param_1 + 1) & 0xfffffffffffffff8);\n  for (uVar3 = (ulong)(uVar2 + (int)lVar1 >> 3); uVar3 != 0; uVar3 = uVar3 - 1) {\n    *puVar5 = *puVar4;\n    puVar4 = puVar4 + 1;\n    puVar5 = puVar5 + 1;\n  }\n  return;\n}" (primitive_type "void") (function_declarator "FUN_00138cd2(undefined8 *param_1,undefined8 *param_2)" (identifier "FUN_00138cd2") (parameter_list "(undefined8 *param_1,undefined8 *param_2)" (( "(") (parameter_declaration "undefined8 *param_1" (type_identifier "undefined8") (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) (, ",") (parameter_declaration "undefined8 *param_2" (type_identifier "undefined8") (pointer_declarator "*param_2" (* "*") (identifier "param_2"))) () ")"))) (compound_statement "{\n  long lVar1;\n  uint uVar2;\n  ulong uVar3;\n  undefined8 *puVar4;\n  undefined8 *puVar5;\n  \n  *param_1 = 0;\n  param_1[1] = 0;\n  param_1[2] = 0;\n  param_1[3] = 0;\n  param_1[4] = 0;\n  param_1[5] = 0;\n  param_1[6] = 0;\n  param_1[7] = 0;\n  param_1[8] = 0;\n  param_1[9] = 0;\n  uVar2 = 0x10;\n  if ((*(uint *)((long)param_2 + 4) & 0x4000) == 0) {\n    uVar2 = (-(uint)((*(uint *)((long)param_2 + 4) & 0x2000) == 0) & 0x24) + 0x2c;\n  }\n  *param_1 = *param_2;\n  *(undefined8 *)((long)param_1 + ((ulong)uVar2 - 8)) =\n       *(undefined8 *)((long)param_2 + ((ulong)uVar2 - 8));\n  lVar1 = (long)param_1 - (long)((ulong)(param_1 + 1) & 0xfffffffffffffff8);\n  puVar4 = (undefined8 *)((long)param_2 - lVar1);\n  puVar5 = (undefined8 *)((ulong)(param_1 + 1) & 0xfffffffffffffff8);\n  for (uVar3 = (ulong)(uVar2 + (int)lVar1 >> 3); uVar3 != 0; uVar3 = uVar3 - 1) {\n    *puVar5 = *puVar4;\n    puVar4 = puVar4 + 1;\n    puVar5 = puVar5 + 1;\n  }\n  return;\n}" ({ "{") (declaration "long lVar1;" (sized_type_specifier "long" (long "long")) (identifier "lVar1") (; ";")) (declaration "uint uVar2;" (type_identifier "uint") (identifier "uVar2") (; ";")) (declaration "ulong uVar3;" (type_identifier "ulong") (identifier "uVar3") (; ";")) (declaration "undefined8 *puVar4;" (type_identifier "undefined8") (pointer_declarator "*puVar4" (* "*") (identifier "puVar4")) (; ";")) (declaration "undefined8 *puVar5;" (type_identifier "undefined8") (pointer_declarator "*puVar5" (* "*") (identifier "puVar5")) (; ";")) (expression_statement "*param_1 = 0;" (assignment_expression "*param_1 = 0" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (= "=") (number_literal "0")) (; ";")) (expression_statement "param_1[1] = 0;" (assignment_expression "param_1[1] = 0" (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "param_1[2] = 0;" (assignment_expression "param_1[2] = 0" (subscript_expression "param_1[2]" (identifier "param_1") ([ "[") (number_literal "2") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "param_1[3] = 0;" (assignment_expression "param_1[3] = 0" (subscript_expression "param_1[3]" (identifier "param_1") ([ "[") (number_literal "3") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "param_1[4] = 0;" (assignment_expression "param_1[4] = 0" (subscript_expression "param_1[4]" (identifier "param_1") ([ "[") (number_literal "4") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "param_1[5] = 0;" (assignment_expression "param_1[5] = 0" (subscript_expression "param_1[5]" (identifier "param_1") ([ "[") (number_literal "5") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "param_1[6] = 0;" (assignment_expression "param_1[6] = 0" (subscript_expression "param_1[6]" (identifier "param_1") ([ "[") (number_literal "6") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "param_1[7] = 0;" (assignment_expression "param_1[7] = 0" (subscript_expression "param_1[7]" (identifier "param_1") ([ "[") (number_literal "7") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "param_1[8] = 0;" (assignment_expression "param_1[8] = 0" (subscript_expression "param_1[8]" (identifier "param_1") ([ "[") (number_literal "8") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "param_1[9] = 0;" (assignment_expression "param_1[9] = 0" (subscript_expression "param_1[9]" (identifier "param_1") ([ "[") (number_literal "9") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "uVar2 = 0x10;" (assignment_expression "uVar2 = 0x10" (identifier "uVar2") (= "=") (number_literal "0x10")) (; ";")) (if_statement "if ((*(uint *)((long)param_2 + 4) & 0x4000) == 0) {\n    uVar2 = (-(uint)((*(uint *)((long)param_2 + 4) & 0x2000) == 0) & 0x24) + 0x2c;\n  }" (if "if") (parenthesized_expression "((*(uint *)((long)param_2 + 4) & 0x4000) == 0)" (( "(") (binary_expression "(*(uint *)((long)param_2 + 4) & 0x4000) == 0" (parenthesized_expression "(*(uint *)((long)param_2 + 4) & 0x4000)" (( "(") (binary_expression "*(uint *)((long)param_2 + 4) & 0x4000" (pointer_expression "*(uint *)((long)param_2 + 4)" (* "*") (cast_expression "(uint *)((long)param_2 + 4)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)param_2 + 4)" (( "(") (binary_expression "(long)param_2 + 4" (cast_expression "(long)param_2" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "param_2")) (+ "+") (number_literal "4")) () ")")))) (& "&") (number_literal "0x4000")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    uVar2 = (-(uint)((*(uint *)((long)param_2 + 4) & 0x2000) == 0) & 0x24) + 0x2c;\n  }" ({ "{") (expression_statement "uVar2 = (-(uint)((*(uint *)((long)param_2 + 4) & 0x2000) == 0) & 0x24) + 0x2c;" (assignment_expression "uVar2 = (-(uint)((*(uint *)((long)param_2 + 4) & 0x2000) == 0) & 0x24) + 0x2c" (identifier "uVar2") (= "=") (binary_expression "(-(uint)((*(uint *)((long)param_2 + 4) & 0x2000) == 0) & 0x24) + 0x2c" (parenthesized_expression "(-(uint)((*(uint *)((long)param_2 + 4) & 0x2000) == 0) & 0x24)" (( "(") (binary_expression "-(uint)((*(uint *)((long)param_2 + 4) & 0x2000) == 0) & 0x24" (unary_expression "-(uint)((*(uint *)((long)param_2 + 4) & 0x2000) == 0)" (- "-") (call_expression "(uint)((*(uint *)((long)param_2 + 4) & 0x2000) == 0)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "((*(uint *)((long)param_2 + 4) & 0x2000) == 0)" (( "(") (binary_expression "(*(uint *)((long)param_2 + 4) & 0x2000) == 0" (parenthesized_expression "(*(uint *)((long)param_2 + 4) & 0x2000)" (( "(") (binary_expression "*(uint *)((long)param_2 + 4) & 0x2000" (pointer_expression "*(uint *)((long)param_2 + 4)" (* "*") (cast_expression "(uint *)((long)param_2 + 4)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)param_2 + 4)" (( "(") (binary_expression "(long)param_2 + 4" (cast_expression "(long)param_2" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "param_2")) (+ "+") (number_literal "4")) () ")")))) (& "&") (number_literal "0x2000")) () ")")) (== "==") (number_literal "0")) () ")")))) (& "&") (number_literal "0x24")) () ")")) (+ "+") (number_literal "0x2c"))) (; ";")) (} "}"))) (expression_statement "*param_1 = *param_2;" (assignment_expression "*param_1 = *param_2" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (= "=") (pointer_expression "*param_2" (* "*") (identifier "param_2"))) (; ";")) (expression_statement "*(undefined8 *)((long)param_1 + ((ulong)uVar2 - 8)) =\n       *(undefined8 *)((long)param_2 + ((ulong)uVar2 - 8));" (assignment_expression "*(undefined8 *)((long)param_1 + ((ulong)uVar2 - 8)) =\n       *(undefined8 *)((long)param_2 + ((ulong)uVar2 - 8))" (pointer_expression "*(undefined8 *)((long)param_1 + ((ulong)uVar2 - 8))" (* "*") (cast_expression "(undefined8 *)((long)param_1 + ((ulong)uVar2 - 8))" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)param_1 + ((ulong)uVar2 - 8))" (( "(") (binary_expression "(long)param_1 + ((ulong)uVar2 - 8)" (cast_expression "(long)param_1" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "param_1")) (+ "+") (parenthesized_expression "((ulong)uVar2 - 8)" (( "(") (binary_expression "(ulong)uVar2 - 8" (cast_expression "(ulong)uVar2" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "uVar2")) (- "-") (number_literal "8")) () ")"))) () ")")))) (= "=") (pointer_expression "*(undefined8 *)((long)param_2 + ((ulong)uVar2 - 8))" (* "*") (cast_expression "(undefined8 *)((long)param_2 + ((ulong)uVar2 - 8))" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)param_2 + ((ulong)uVar2 - 8))" (( "(") (binary_expression "(long)param_2 + ((ulong)uVar2 - 8)" (cast_expression "(long)param_2" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "param_2")) (+ "+") (parenthesized_expression "((ulong)uVar2 - 8)" (( "(") (binary_expression "(ulong)uVar2 - 8" (cast_expression "(ulong)uVar2" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "uVar2")) (- "-") (number_literal "8")) () ")"))) () ")"))))) (; ";")) (expression_statement "lVar1 = (long)param_1 - (long)((ulong)(param_1 + 1) & 0xfffffffffffffff8);" (assignment_expression "lVar1 = (long)param_1 - (long)((ulong)(param_1 + 1) & 0xfffffffffffffff8)" (identifier "lVar1") (= "=") (binary_expression "(long)param_1 - (long)((ulong)(param_1 + 1) & 0xfffffffffffffff8)" (cast_expression "(long)param_1" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "param_1")) (- "-") (cast_expression "(long)((ulong)(param_1 + 1) & 0xfffffffffffffff8)" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (parenthesized_expression "((ulong)(param_1 + 1) & 0xfffffffffffffff8)" (( "(") (binary_expression "(ulong)(param_1 + 1) & 0xfffffffffffffff8" (call_expression "(ulong)(param_1 + 1)" (parenthesized_expression "(ulong)" (( "(") (identifier "ulong") () ")")) (argument_list "(param_1 + 1)" (( "(") (binary_expression "param_1 + 1" (identifier "param_1") (+ "+") (number_literal "1")) () ")"))) (& "&") (number_literal "0xfffffffffffffff8")) () ")"))))) (; ";")) (expression_statement "puVar4 = (undefined8 *)((long)param_2 - lVar1);" (assignment_expression "puVar4 = (undefined8 *)((long)param_2 - lVar1)" (identifier "puVar4") (= "=") (cast_expression "(undefined8 *)((long)param_2 - lVar1)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)param_2 - lVar1)" (( "(") (binary_expression "(long)param_2 - lVar1" (cast_expression "(long)param_2" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "param_2")) (- "-") (identifier "lVar1")) () ")")))) (; ";")) (expression_statement "puVar5 = (undefined8 *)((ulong)(param_1 + 1) & 0xfffffffffffffff8);" (assignment_expression "puVar5 = (undefined8 *)((ulong)(param_1 + 1) & 0xfffffffffffffff8)" (identifier "puVar5") (= "=") (cast_expression "(undefined8 *)((ulong)(param_1 + 1) & 0xfffffffffffffff8)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((ulong)(param_1 + 1) & 0xfffffffffffffff8)" (( "(") (binary_expression "(ulong)(param_1 + 1) & 0xfffffffffffffff8" (call_expression "(ulong)(param_1 + 1)" (parenthesized_expression "(ulong)" (( "(") (identifier "ulong") () ")")) (argument_list "(param_1 + 1)" (( "(") (binary_expression "param_1 + 1" (identifier "param_1") (+ "+") (number_literal "1")) () ")"))) (& "&") (number_literal "0xfffffffffffffff8")) () ")")))) (; ";")) (for_statement "for (uVar3 = (ulong)(uVar2 + (int)lVar1 >> 3); uVar3 != 0; uVar3 = uVar3 - 1) {\n    *puVar5 = *puVar4;\n    puVar4 = puVar4 + 1;\n    puVar5 = puVar5 + 1;\n  }" (for "for") (( "(") (assignment_expression "uVar3 = (ulong)(uVar2 + (int)lVar1 >> 3)" (identifier "uVar3") (= "=") (call_expression "(ulong)(uVar2 + (int)lVar1 >> 3)" (parenthesized_expression "(ulong)" (( "(") (identifier "ulong") () ")")) (argument_list "(uVar2 + (int)lVar1 >> 3)" (( "(") (binary_expression "uVar2 + (int)lVar1 >> 3" (binary_expression "uVar2 + (int)lVar1" (identifier "uVar2") (+ "+") (cast_expression "(int)lVar1" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "lVar1"))) (>> ">>") (number_literal "3")) () ")")))) (; ";") (binary_expression "uVar3 != 0" (identifier "uVar3") (!= "!=") (number_literal "0")) (; ";") (assignment_expression "uVar3 = uVar3 - 1" (identifier "uVar3") (= "=") (binary_expression "uVar3 - 1" (identifier "uVar3") (- "-") (number_literal "1"))) () ")") (compound_statement "{\n    *puVar5 = *puVar4;\n    puVar4 = puVar4 + 1;\n    puVar5 = puVar5 + 1;\n  }" ({ "{") (expression_statement "*puVar5 = *puVar4;" (assignment_expression "*puVar5 = *puVar4" (pointer_expression "*puVar5" (* "*") (identifier "puVar5")) (= "=") (pointer_expression "*puVar4" (* "*") (identifier "puVar4"))) (; ";")) (expression_statement "puVar4 = puVar4 + 1;" (assignment_expression "puVar4 = puVar4 + 1" (identifier "puVar4") (= "=") (binary_expression "puVar4 + 1" (identifier "puVar4") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "puVar5 = puVar5 + 1;" (assignment_expression "puVar5 = puVar5 + 1" (identifier "puVar5") (= "=") (binary_expression "puVar5 + 1" (identifier "puVar5") (+ "+") (number_literal "1"))) (; ";")) (} "}"))) (return_statement "return;" (return "return") (; ";")) (} "}")))

void function_1(type_1 *pDest,type_1 *pSrc)

{
  char cVar1;
  type_2 uVar2;
  type_3 uVar3;
  long var_1;
  type_4 var_2;
  type_5 var_3;
  type_6 *var_4;
  type_6 *var_5;
  
  pDest->op = '\0';
  pDest->affinity = '\0';
  *(type_2 *)&pDest->field_0x2 = 0;
  pDest->flags = 0;
  (pDest->u).zToken = (char *)0x0;
  pDest->pLeft = (type_1 *)0x0;
  pDest->pRight = (type_1 *)0x0;
  (pDest->x).pList = (type_7 *)0x0;
  pDest->nHeight = 0;
  pDest->iTable = 0;
  pDest->iColumn = 0;
  pDest->iAgg = 0;
  pDest->iRightJoinTable = 0;
  *(type_6 *)&pDest->op2 = 0;
  pDest->pAggInfo = (type_8 *)0x0;
  (pDest->y).pTab = (type_9 *)0x0;
  var_2 = 0x10;
  if ((pSrc->flags & 0x4000) == 0) {
    var_2 = (-(type_4)((pSrc->flags & 0x2000) == 0) & 0x24) + 0x2c;
  }
  cVar1 = pSrc->affinity;
  uVar2 = *(type_2 *)&pSrc->field_0x2;
  uVar3 = pSrc->flags;
  pDest->op = pSrc->op;
  pDest->affinity = cVar1;
  *(type_2 *)&pDest->field_0x2 = uVar2;
  pDest->flags = uVar3;
  *(type_6 *)((long)pDest + ((type_5)var_2 - 8)) =
       *(type_6 *)((long)pSrc + ((type_5)var_2 - 8));
  var_5 = (type_6 *)((type_5)&pDest->u & 0xfffffffffffffff8);
  var_1 = (long)pDest - (long)var_5;
  var_4 = (type_6 *)((long)pSrc - var_1);
  for (var_3 = (type_5)(var_2 + (int)var_1 >> 3); var_3 != 0; var_3 = var_3 - 1) {
    *var_5 = *var_4;
    var_4 = var_4 + 1;
    var_5 = var_5 + 1;
  }
  return;
}


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

void MASKED(undefined8 *param_1,undefined8 *param_2)

{
  long lVar1;
  uint uVar2;
  ulong uVar3;
  undefined8 *puVar4;
  undefined8 *puVar5;
  
  *param_1 = 0;
  param_1[1] = 0;
  param_1[2] = 0;
  param_1[3] = 0;
  param_1[4] = 0;
  param_1[5] = 0;
  param_1[6] = 0;
  param_1[7] = 0;
  param_1[8] = 0;
  param_1[9] = 0;
  uVar2 = 0x10;
  if ((*(uint *)((long)param_2 + 4) & 0x4000) == 0) {
    uVar2 = (-(uint)((*(uint *)((long)param_2 + 4) & 0x2000) == 0) & 0x24) + 0x2c;
  }
  *param_1 = *param_2;
  *(undefined8 *)((long)param_1 + ((ulong)uVar2 - 8)) =
       *(undefined8 *)((long)param_2 + ((ulong)uVar2 - 8));
  lVar1 = (long)param_1 - (long)((ulong)(param_1 + 1) & 0xfffffffffffffff8);
  puVar4 = (undefined8 *)((long)param_2 - lVar1);
  puVar5 = (undefined8 *)((ulong)(param_1 + 1) & 0xfffffffffffffff8);
  for (uVar3 = (ulong)(uVar2 + (int)lVar1 >> 3); uVar3 != 0; uVar3 = uVar3 - 1) {
    *puVar5 = *puVar4;
    puVar4 = puVar4 + 1;
    puVar5 = puVar5 + 1;
  }
  return;
}

