
void sqlite3VdbeMemMove(Mem *pTo,Mem *pFrom)

{
  u16 uVar1;
  u8 uVar2;
  u8 uVar3;
  Mem *pMVar4;
  Mem *pMVar5;
  int iVar6;
  char *pcVar7;
  Mem *pMVar8;
  undefined4 uVar9;
  
  if (((pTo->flags & 0x2400) != 0) || (pTo->szMalloc != 0)) {
    vdbeMemClear(pTo);
  }
  pMVar5 = pFrom;
  do {
    pMVar8 = pTo;
    pMVar4 = pMVar5;
    uVar9 = *(undefined4 *)((int)&pMVar4->u + 4);
    uVar1 = pMVar4->flags;
    uVar2 = pMVar4->enc;
    uVar3 = pMVar4->eSubtype;
    iVar6 = pMVar4->n;
    pMVar5 = (Mem *)&pMVar4->z;
    (pMVar8->u).nZero = (pMVar4->u).nZero;
    *(undefined4 *)((int)&pMVar8->u + 4) = uVar9;
    pMVar8->flags = uVar1;
    pMVar8->enc = uVar2;
    pMVar8->eSubtype = uVar3;
    pMVar8->n = iVar6;
    pTo = (Mem *)&pMVar8->z;
  } while (pMVar5 != (Mem *)&pFrom->db);
  pcVar7 = pMVar4->zMalloc;
  pMVar8->z = *(char **)pMVar5;
  pMVar8->zMalloc = pcVar7;
  pFrom->flags = 1;
  pFrom->szMalloc = 0;
  return;
}



void FUN_0004e34c(undefined4 *param_1,undefined4 *param_2)

{
  undefined4 *puVar1;
  undefined4 *puVar2;
  undefined4 uVar3;
  undefined4 *puVar4;
  undefined4 uVar5;
  undefined4 uVar6;
  
  if (((*(ushort *)(param_1 + 2) & 0x2400) != 0) || (param_1[6] != 0)) {
    FUN_0004e1a8(param_1);
  }
  puVar2 = param_2;
  do {
    puVar4 = param_1;
    puVar1 = puVar2;
    uVar6 = puVar1[1];
    uVar5 = puVar1[2];
    uVar3 = puVar1[3];
    puVar2 = puVar1 + 4;
    *puVar4 = *puVar1;
    puVar4[1] = uVar6;
    puVar4[2] = uVar5;
    puVar4[3] = uVar3;
    param_1 = puVar4 + 4;
  } while (puVar2 != param_2 + 8);
  uVar3 = puVar1[5];
  puVar4[4] = *puVar2;
  puVar4[5] = uVar3;
  *(undefined2 *)(param_2 + 2) = 1;
  param_2[6] = 0;
  return;
}


lui gp,0x15
addiu gp,gp,-0x5a2c
addu gp,gp,t9
addiu sp,sp,-0x28
sw s1,0x20(sp)
or s1,a1,zero
sw s0,0x1c(sp)
sw gp,0x10(sp)
sw ra,0x24(sp)
lhu v0,0x8(a0)
andi v0,v0,0x2400
bne v0,zero,0x0004e424
_or s0,a0,zero
lw v0,0x18(a0)
bne v0,zero,0x0004e428
_lw t9,-0x7d78(gp)
addiu t0,s1,0x20
or v0,s1,zero
or a0,s0,zero
lwl a3,0x0(v0)
lwl a2,0x4(v0)
lwl a1,0x8(v0)
lwl v1,0xc(v0)
lwr a3,0x3(v0)
lwr a2,0x7(v0)
lwr a1,0xb(v0)
lwr v1,0xf(v0)
addiu v0,v0,0x10
swl a3,0x0(a0)
swr a3,0x3(a0)
swl a2,0x4(a0)
swr a2,0x7(a0)
swl a1,0x8(a0)
swr a1,0xb(a0)
swl v1,0xc(a0)
swr v1,0xf(a0)
bne v0,t0,0x0004e398
_addiu a0,a0,0x10
lwl a1,0x0(v0)
lwl v1,0x4(v0)
lwr a1,0x3(v0)
lwr v1,0x7(v0)
li v0,0x1
swl a1,0x0(a0)
swr a1,0x3(a0)
swl v1,0x4(a0)
swr v1,0x7(a0)
sh v0,0x8(s1)
sw zero,0x18(s1)
lw ra,0x24(sp)
lw s1,0x20(sp)
lw s0,0x1c(sp)
jr ra
_addiu sp,sp,0x28
lw t9,-0x7d78(gp)
addiu t9,t9,-0x1e58
bal 0x0004e1a8
_or a0,s0,zero
b 0x0004e390
_addiu t0,s1,0x20
(translation_unit "void FUN_0004e34c(undefined4 *param_1,undefined4 *param_2)\n\n{\n  undefined4 *puVar1;\n  undefined4 *puVar2;\n  undefined4 uVar3;\n  undefined4 *puVar4;\n  undefined4 uVar5;\n  undefined4 uVar6;\n  \n  if (((*(ushort *)(param_1 + 2) & 0x2400) != 0) || (param_1[6] != 0)) {\n    FUN_0004e1a8(param_1);\n  }\n  puVar2 = param_2;\n  do {\n    puVar4 = param_1;\n    puVar1 = puVar2;\n    uVar6 = puVar1[1];\n    uVar5 = puVar1[2];\n    uVar3 = puVar1[3];\n    puVar2 = puVar1 + 4;\n    *puVar4 = *puVar1;\n    puVar4[1] = uVar6;\n    puVar4[2] = uVar5;\n    puVar4[3] = uVar3;\n    param_1 = puVar4 + 4;\n  } while (puVar2 != param_2 + 8);\n  uVar3 = puVar1[5];\n  puVar4[4] = *puVar2;\n  puVar4[5] = uVar3;\n  *(undefined2 *)(param_2 + 2) = 1;\n  param_2[6] = 0;\n  return;\n}\n\n" (function_definition "void FUN_0004e34c(undefined4 *param_1,undefined4 *param_2)\n\n{\n  undefined4 *puVar1;\n  undefined4 *puVar2;\n  undefined4 uVar3;\n  undefined4 *puVar4;\n  undefined4 uVar5;\n  undefined4 uVar6;\n  \n  if (((*(ushort *)(param_1 + 2) & 0x2400) != 0) || (param_1[6] != 0)) {\n    FUN_0004e1a8(param_1);\n  }\n  puVar2 = param_2;\n  do {\n    puVar4 = param_1;\n    puVar1 = puVar2;\n    uVar6 = puVar1[1];\n    uVar5 = puVar1[2];\n    uVar3 = puVar1[3];\n    puVar2 = puVar1 + 4;\n    *puVar4 = *puVar1;\n    puVar4[1] = uVar6;\n    puVar4[2] = uVar5;\n    puVar4[3] = uVar3;\n    param_1 = puVar4 + 4;\n  } while (puVar2 != param_2 + 8);\n  uVar3 = puVar1[5];\n  puVar4[4] = *puVar2;\n  puVar4[5] = uVar3;\n  *(undefined2 *)(param_2 + 2) = 1;\n  param_2[6] = 0;\n  return;\n}" primitive_type (function_declarator "FUN_0004e34c(undefined4 *param_1,undefined4 *param_2)" identifier (parameter_list "(undefined4 *param_1,undefined4 *param_2)" ( (parameter_declaration "undefined4 *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "undefined4 *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) ))) (compound_statement "{\n  undefined4 *puVar1;\n  undefined4 *puVar2;\n  undefined4 uVar3;\n  undefined4 *puVar4;\n  undefined4 uVar5;\n  undefined4 uVar6;\n  \n  if (((*(ushort *)(param_1 + 2) & 0x2400) != 0) || (param_1[6] != 0)) {\n    FUN_0004e1a8(param_1);\n  }\n  puVar2 = param_2;\n  do {\n    puVar4 = param_1;\n    puVar1 = puVar2;\n    uVar6 = puVar1[1];\n    uVar5 = puVar1[2];\n    uVar3 = puVar1[3];\n    puVar2 = puVar1 + 4;\n    *puVar4 = *puVar1;\n    puVar4[1] = uVar6;\n    puVar4[2] = uVar5;\n    puVar4[3] = uVar3;\n    param_1 = puVar4 + 4;\n  } while (puVar2 != param_2 + 8);\n  uVar3 = puVar1[5];\n  puVar4[4] = *puVar2;\n  puVar4[5] = uVar3;\n  *(undefined2 *)(param_2 + 2) = 1;\n  param_2[6] = 0;\n  return;\n}" { (declaration "undefined4 *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "undefined4 *puVar2;" type_identifier (pointer_declarator "*puVar2" * identifier) ;) (declaration "undefined4 uVar3;" type_identifier identifier ;) (declaration "undefined4 *puVar4;" type_identifier (pointer_declarator "*puVar4" * identifier) ;) (declaration "undefined4 uVar5;" type_identifier identifier ;) (declaration "undefined4 uVar6;" type_identifier identifier ;) (if_statement "if (((*(ushort *)(param_1 + 2) & 0x2400) != 0) || (param_1[6] != 0)) {\n    FUN_0004e1a8(param_1);\n  }" if (parenthesized_expression "(((*(ushort *)(param_1 + 2) & 0x2400) != 0) || (param_1[6] != 0))" ( (binary_expression "((*(ushort *)(param_1 + 2) & 0x2400) != 0) || (param_1[6] != 0)" (parenthesized_expression "((*(ushort *)(param_1 + 2) & 0x2400) != 0)" ( (binary_expression "(*(ushort *)(param_1 + 2) & 0x2400) != 0" (parenthesized_expression "(*(ushort *)(param_1 + 2) & 0x2400)" ( (binary_expression "*(ushort *)(param_1 + 2) & 0x2400" (pointer_expression "*(ushort *)(param_1 + 2)" * (cast_expression "(ushort *)(param_1 + 2)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 2)" ( (binary_expression "param_1 + 2" identifier + number_literal) )))) & number_literal) )) != number_literal) )) || (parenthesized_expression "(param_1[6] != 0)" ( (binary_expression "param_1[6] != 0" (subscript_expression "param_1[6]" identifier [ number_literal ]) != number_literal) ))) )) (compound_statement "{\n    FUN_0004e1a8(param_1);\n  }" { (expression_statement "FUN_0004e1a8(param_1);" (call_expression "FUN_0004e1a8(param_1)" identifier (argument_list "(param_1)" ( identifier ))) ;) })) (expression_statement "puVar2 = param_2;" (assignment_expression "puVar2 = param_2" identifier = identifier) ;) (do_statement "do {\n    puVar4 = param_1;\n    puVar1 = puVar2;\n    uVar6 = puVar1[1];\n    uVar5 = puVar1[2];\n    uVar3 = puVar1[3];\n    puVar2 = puVar1 + 4;\n    *puVar4 = *puVar1;\n    puVar4[1] = uVar6;\n    puVar4[2] = uVar5;\n    puVar4[3] = uVar3;\n    param_1 = puVar4 + 4;\n  } while (puVar2 != param_2 + 8);" do (compound_statement "{\n    puVar4 = param_1;\n    puVar1 = puVar2;\n    uVar6 = puVar1[1];\n    uVar5 = puVar1[2];\n    uVar3 = puVar1[3];\n    puVar2 = puVar1 + 4;\n    *puVar4 = *puVar1;\n    puVar4[1] = uVar6;\n    puVar4[2] = uVar5;\n    puVar4[3] = uVar3;\n    param_1 = puVar4 + 4;\n  }" { (expression_statement "puVar4 = param_1;" (assignment_expression "puVar4 = param_1" identifier = identifier) ;) (expression_statement "puVar1 = puVar2;" (assignment_expression "puVar1 = puVar2" identifier = identifier) ;) (expression_statement "uVar6 = puVar1[1];" (assignment_expression "uVar6 = puVar1[1]" identifier = (subscript_expression "puVar1[1]" identifier [ number_literal ])) ;) (expression_statement "uVar5 = puVar1[2];" (assignment_expression "uVar5 = puVar1[2]" identifier = (subscript_expression "puVar1[2]" identifier [ number_literal ])) ;) (expression_statement "uVar3 = puVar1[3];" (assignment_expression "uVar3 = puVar1[3]" identifier = (subscript_expression "puVar1[3]" identifier [ number_literal ])) ;) (expression_statement "puVar2 = puVar1 + 4;" (assignment_expression "puVar2 = puVar1 + 4" identifier = (binary_expression "puVar1 + 4" identifier + number_literal)) ;) (expression_statement "*puVar4 = *puVar1;" (assignment_expression "*puVar4 = *puVar1" (pointer_expression "*puVar4" * identifier) = (pointer_expression "*puVar1" * identifier)) ;) (expression_statement "puVar4[1] = uVar6;" (assignment_expression "puVar4[1] = uVar6" (subscript_expression "puVar4[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar4[2] = uVar5;" (assignment_expression "puVar4[2] = uVar5" (subscript_expression "puVar4[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar4[3] = uVar3;" (assignment_expression "puVar4[3] = uVar3" (subscript_expression "puVar4[3]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_1 = puVar4 + 4;" (assignment_expression "param_1 = puVar4 + 4" identifier = (binary_expression "puVar4 + 4" identifier + number_literal)) ;) }) while (parenthesized_expression "(puVar2 != param_2 + 8)" ( (binary_expression "puVar2 != param_2 + 8" identifier != (binary_expression "param_2 + 8" identifier + number_literal)) )) ;) (expression_statement "uVar3 = puVar1[5];" (assignment_expression "uVar3 = puVar1[5]" identifier = (subscript_expression "puVar1[5]" identifier [ number_literal ])) ;) (expression_statement "puVar4[4] = *puVar2;" (assignment_expression "puVar4[4] = *puVar2" (subscript_expression "puVar4[4]" identifier [ number_literal ]) = (pointer_expression "*puVar2" * identifier)) ;) (expression_statement "puVar4[5] = uVar3;" (assignment_expression "puVar4[5] = uVar3" (subscript_expression "puVar4[5]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*(undefined2 *)(param_2 + 2) = 1;" (assignment_expression "*(undefined2 *)(param_2 + 2) = 1" (pointer_expression "*(undefined2 *)(param_2 + 2)" * (cast_expression "(undefined2 *)(param_2 + 2)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 2)" ( (binary_expression "param_2 + 2" identifier + number_literal) )))) = number_literal) ;) (expression_statement "param_2[6] = 0;" (assignment_expression "param_2[6] = 0" (subscript_expression "param_2[6]" identifier [ number_literal ]) = number_literal) ;) (return_statement "return;" return ;) })))
(translation_unit "void sqlite3VdbeMemMove(Mem *pTo,Mem *pFrom)\n\n{\n  u16 uVar1;\n  u8 uVar2;\n  u8 uVar3;\n  Mem *pMVar4;\n  Mem *pMVar5;\n  int iVar6;\n  char *pcVar7;\n  Mem *pMVar8;\n  undefined4 uVar9;\n  \n  if (((pTo->flags & 0x2400) != 0) || (pTo->szMalloc != 0)) {\n    vdbeMemClear(pTo);\n  }\n  pMVar5 = pFrom;\n  do {\n    pMVar8 = pTo;\n    pMVar4 = pMVar5;\n    uVar9 = *(undefined4 *)((int)&pMVar4->u + 4);\n    uVar1 = pMVar4->flags;\n    uVar2 = pMVar4->enc;\n    uVar3 = pMVar4->eSubtype;\n    iVar6 = pMVar4->n;\n    pMVar5 = (Mem *)&pMVar4->z;\n    (pMVar8->u).nZero = (pMVar4->u).nZero;\n    *(undefined4 *)((int)&pMVar8->u + 4) = uVar9;\n    pMVar8->flags = uVar1;\n    pMVar8->enc = uVar2;\n    pMVar8->eSubtype = uVar3;\n    pMVar8->n = iVar6;\n    pTo = (Mem *)&pMVar8->z;\n  } while (pMVar5 != (Mem *)&pFrom->db);\n  pcVar7 = pMVar4->zMalloc;\n  pMVar8->z = *(char **)pMVar5;\n  pMVar8->zMalloc = pcVar7;\n  pFrom->flags = 1;\n  pFrom->szMalloc = 0;\n  return;\n}\n\n" (function_definition "void sqlite3VdbeMemMove(Mem *pTo,Mem *pFrom)\n\n{\n  u16 uVar1;\n  u8 uVar2;\n  u8 uVar3;\n  Mem *pMVar4;\n  Mem *pMVar5;\n  int iVar6;\n  char *pcVar7;\n  Mem *pMVar8;\n  undefined4 uVar9;\n  \n  if (((pTo->flags & 0x2400) != 0) || (pTo->szMalloc != 0)) {\n    vdbeMemClear(pTo);\n  }\n  pMVar5 = pFrom;\n  do {\n    pMVar8 = pTo;\n    pMVar4 = pMVar5;\n    uVar9 = *(undefined4 *)((int)&pMVar4->u + 4);\n    uVar1 = pMVar4->flags;\n    uVar2 = pMVar4->enc;\n    uVar3 = pMVar4->eSubtype;\n    iVar6 = pMVar4->n;\n    pMVar5 = (Mem *)&pMVar4->z;\n    (pMVar8->u).nZero = (pMVar4->u).nZero;\n    *(undefined4 *)((int)&pMVar8->u + 4) = uVar9;\n    pMVar8->flags = uVar1;\n    pMVar8->enc = uVar2;\n    pMVar8->eSubtype = uVar3;\n    pMVar8->n = iVar6;\n    pTo = (Mem *)&pMVar8->z;\n  } while (pMVar5 != (Mem *)&pFrom->db);\n  pcVar7 = pMVar4->zMalloc;\n  pMVar8->z = *(char **)pMVar5;\n  pMVar8->zMalloc = pcVar7;\n  pFrom->flags = 1;\n  pFrom->szMalloc = 0;\n  return;\n}" primitive_type (function_declarator "sqlite3VdbeMemMove(Mem *pTo,Mem *pFrom)" identifier (parameter_list "(Mem *pTo,Mem *pFrom)" ( (parameter_declaration "Mem *pTo" type_identifier (pointer_declarator "*pTo" * identifier)) , (parameter_declaration "Mem *pFrom" type_identifier (pointer_declarator "*pFrom" * identifier)) ))) (compound_statement "{\n  u16 uVar1;\n  u8 uVar2;\n  u8 uVar3;\n  Mem *pMVar4;\n  Mem *pMVar5;\n  int iVar6;\n  char *pcVar7;\n  Mem *pMVar8;\n  undefined4 uVar9;\n  \n  if (((pTo->flags & 0x2400) != 0) || (pTo->szMalloc != 0)) {\n    vdbeMemClear(pTo);\n  }\n  pMVar5 = pFrom;\n  do {\n    pMVar8 = pTo;\n    pMVar4 = pMVar5;\n    uVar9 = *(undefined4 *)((int)&pMVar4->u + 4);\n    uVar1 = pMVar4->flags;\n    uVar2 = pMVar4->enc;\n    uVar3 = pMVar4->eSubtype;\n    iVar6 = pMVar4->n;\n    pMVar5 = (Mem *)&pMVar4->z;\n    (pMVar8->u).nZero = (pMVar4->u).nZero;\n    *(undefined4 *)((int)&pMVar8->u + 4) = uVar9;\n    pMVar8->flags = uVar1;\n    pMVar8->enc = uVar2;\n    pMVar8->eSubtype = uVar3;\n    pMVar8->n = iVar6;\n    pTo = (Mem *)&pMVar8->z;\n  } while (pMVar5 != (Mem *)&pFrom->db);\n  pcVar7 = pMVar4->zMalloc;\n  pMVar8->z = *(char **)pMVar5;\n  pMVar8->zMalloc = pcVar7;\n  pFrom->flags = 1;\n  pFrom->szMalloc = 0;\n  return;\n}" { (declaration "u16 uVar1;" type_identifier identifier ;) (declaration "u8 uVar2;" type_identifier identifier ;) (declaration "u8 uVar3;" type_identifier identifier ;) (declaration "Mem *pMVar4;" type_identifier (pointer_declarator "*pMVar4" * identifier) ;) (declaration "Mem *pMVar5;" type_identifier (pointer_declarator "*pMVar5" * identifier) ;) (declaration "int iVar6;" primitive_type identifier ;) (declaration "char *pcVar7;" primitive_type (pointer_declarator "*pcVar7" * identifier) ;) (declaration "Mem *pMVar8;" type_identifier (pointer_declarator "*pMVar8" * identifier) ;) (declaration "undefined4 uVar9;" type_identifier identifier ;) (if_statement "if (((pTo->flags & 0x2400) != 0) || (pTo->szMalloc != 0)) {\n    vdbeMemClear(pTo);\n  }" if (parenthesized_expression "(((pTo->flags & 0x2400) != 0) || (pTo->szMalloc != 0))" ( (binary_expression "((pTo->flags & 0x2400) != 0) || (pTo->szMalloc != 0)" (parenthesized_expression "((pTo->flags & 0x2400) != 0)" ( (binary_expression "(pTo->flags & 0x2400) != 0" (parenthesized_expression "(pTo->flags & 0x2400)" ( (binary_expression "pTo->flags & 0x2400" (field_expression "pTo->flags" identifier -> field_identifier) & number_literal) )) != number_literal) )) || (parenthesized_expression "(pTo->szMalloc != 0)" ( (binary_expression "pTo->szMalloc != 0" (field_expression "pTo->szMalloc" identifier -> field_identifier) != number_literal) ))) )) (compound_statement "{\n    vdbeMemClear(pTo);\n  }" { (expression_statement "vdbeMemClear(pTo);" (call_expression "vdbeMemClear(pTo)" identifier (argument_list "(pTo)" ( identifier ))) ;) })) (expression_statement "pMVar5 = pFrom;" (assignment_expression "pMVar5 = pFrom" identifier = identifier) ;) (do_statement "do {\n    pMVar8 = pTo;\n    pMVar4 = pMVar5;\n    uVar9 = *(undefined4 *)((int)&pMVar4->u + 4);\n    uVar1 = pMVar4->flags;\n    uVar2 = pMVar4->enc;\n    uVar3 = pMVar4->eSubtype;\n    iVar6 = pMVar4->n;\n    pMVar5 = (Mem *)&pMVar4->z;\n    (pMVar8->u).nZero = (pMVar4->u).nZero;\n    *(undefined4 *)((int)&pMVar8->u + 4) = uVar9;\n    pMVar8->flags = uVar1;\n    pMVar8->enc = uVar2;\n    pMVar8->eSubtype = uVar3;\n    pMVar8->n = iVar6;\n    pTo = (Mem *)&pMVar8->z;\n  } while (pMVar5 != (Mem *)&pFrom->db);" do (compound_statement "{\n    pMVar8 = pTo;\n    pMVar4 = pMVar5;\n    uVar9 = *(undefined4 *)((int)&pMVar4->u + 4);\n    uVar1 = pMVar4->flags;\n    uVar2 = pMVar4->enc;\n    uVar3 = pMVar4->eSubtype;\n    iVar6 = pMVar4->n;\n    pMVar5 = (Mem *)&pMVar4->z;\n    (pMVar8->u).nZero = (pMVar4->u).nZero;\n    *(undefined4 *)((int)&pMVar8->u + 4) = uVar9;\n    pMVar8->flags = uVar1;\n    pMVar8->enc = uVar2;\n    pMVar8->eSubtype = uVar3;\n    pMVar8->n = iVar6;\n    pTo = (Mem *)&pMVar8->z;\n  }" { (expression_statement "pMVar8 = pTo;" (assignment_expression "pMVar8 = pTo" identifier = identifier) ;) (expression_statement "pMVar4 = pMVar5;" (assignment_expression "pMVar4 = pMVar5" identifier = identifier) ;) (expression_statement "uVar9 = *(undefined4 *)((int)&pMVar4->u + 4);" (assignment_expression "uVar9 = *(undefined4 *)((int)&pMVar4->u + 4)" identifier = (pointer_expression "*(undefined4 *)((int)&pMVar4->u + 4)" * (cast_expression "(undefined4 *)((int)&pMVar4->u + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&pMVar4->u + 4)" ( (binary_expression "(int)&pMVar4->u + 4" (cast_expression "(int)&pMVar4->u" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&pMVar4->u" & (field_expression "pMVar4->u" identifier -> field_identifier))) + number_literal) ))))) ;) (expression_statement "uVar1 = pMVar4->flags;" (assignment_expression "uVar1 = pMVar4->flags" identifier = (field_expression "pMVar4->flags" identifier -> field_identifier)) ;) (expression_statement "uVar2 = pMVar4->enc;" (assignment_expression "uVar2 = pMVar4->enc" identifier = (field_expression "pMVar4->enc" identifier -> field_identifier)) ;) (expression_statement "uVar3 = pMVar4->eSubtype;" (assignment_expression "uVar3 = pMVar4->eSubtype" identifier = (field_expression "pMVar4->eSubtype" identifier -> field_identifier)) ;) (expression_statement "iVar6 = pMVar4->n;" (assignment_expression "iVar6 = pMVar4->n" identifier = (field_expression "pMVar4->n" identifier -> field_identifier)) ;) (expression_statement "pMVar5 = (Mem *)&pMVar4->z;" (assignment_expression "pMVar5 = (Mem *)&pMVar4->z" identifier = (cast_expression "(Mem *)&pMVar4->z" ( (type_descriptor "Mem *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&pMVar4->z" & (field_expression "pMVar4->z" identifier -> field_identifier)))) ;) (expression_statement "(pMVar8->u).nZero = (pMVar4->u).nZero;" (assignment_expression "(pMVar8->u).nZero = (pMVar4->u).nZero" (field_expression "(pMVar8->u).nZero" (parenthesized_expression "(pMVar8->u)" ( (field_expression "pMVar8->u" identifier -> field_identifier) )) . field_identifier) = (field_expression "(pMVar4->u).nZero" (parenthesized_expression "(pMVar4->u)" ( (field_expression "pMVar4->u" identifier -> field_identifier) )) . field_identifier)) ;) (expression_statement "*(undefined4 *)((int)&pMVar8->u + 4) = uVar9;" (assignment_expression "*(undefined4 *)((int)&pMVar8->u + 4) = uVar9" (pointer_expression "*(undefined4 *)((int)&pMVar8->u + 4)" * (cast_expression "(undefined4 *)((int)&pMVar8->u + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&pMVar8->u + 4)" ( (binary_expression "(int)&pMVar8->u + 4" (cast_expression "(int)&pMVar8->u" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&pMVar8->u" & (field_expression "pMVar8->u" identifier -> field_identifier))) + number_literal) )))) = identifier) ;) (expression_statement "pMVar8->flags = uVar1;" (assignment_expression "pMVar8->flags = uVar1" (field_expression "pMVar8->flags" identifier -> field_identifier) = identifier) ;) (expression_statement "pMVar8->enc = uVar2;" (assignment_expression "pMVar8->enc = uVar2" (field_expression "pMVar8->enc" identifier -> field_identifier) = identifier) ;) (expression_statement "pMVar8->eSubtype = uVar3;" (assignment_expression "pMVar8->eSubtype = uVar3" (field_expression "pMVar8->eSubtype" identifier -> field_identifier) = identifier) ;) (expression_statement "pMVar8->n = iVar6;" (assignment_expression "pMVar8->n = iVar6" (field_expression "pMVar8->n" identifier -> field_identifier) = identifier) ;) (expression_statement "pTo = (Mem *)&pMVar8->z;" (assignment_expression "pTo = (Mem *)&pMVar8->z" identifier = (cast_expression "(Mem *)&pMVar8->z" ( (type_descriptor "Mem *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&pMVar8->z" & (field_expression "pMVar8->z" identifier -> field_identifier)))) ;) }) while (parenthesized_expression "(pMVar5 != (Mem *)&pFrom->db)" ( (binary_expression "pMVar5 != (Mem *)&pFrom->db" identifier != (cast_expression "(Mem *)&pFrom->db" ( (type_descriptor "Mem *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&pFrom->db" & (field_expression "pFrom->db" identifier -> field_identifier)))) )) ;) (expression_statement "pcVar7 = pMVar4->zMalloc;" (assignment_expression "pcVar7 = pMVar4->zMalloc" identifier = (field_expression "pMVar4->zMalloc" identifier -> field_identifier)) ;) (expression_statement "pMVar8->z = *(char **)pMVar5;" (assignment_expression "pMVar8->z = *(char **)pMVar5" (field_expression "pMVar8->z" identifier -> field_identifier) = (pointer_expression "*(char **)pMVar5" * (cast_expression "(char **)pMVar5" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier))) ;) (expression_statement "pMVar8->zMalloc = pcVar7;" (assignment_expression "pMVar8->zMalloc = pcVar7" (field_expression "pMVar8->zMalloc" identifier -> field_identifier) = identifier) ;) (expression_statement "pFrom->flags = 1;" (assignment_expression "pFrom->flags = 1" (field_expression "pFrom->flags" identifier -> field_identifier) = number_literal) ;) (expression_statement "pFrom->szMalloc = 0;" (assignment_expression "pFrom->szMalloc = 0" (field_expression "pFrom->szMalloc" identifier -> field_identifier) = number_literal) ;) (return_statement "return;" return ;) })))
(translation_unit "void FUN_0004e34c(undefined4 *param_1,undefined4 *param_2)\n\n{\n  undefined4 *puVar1;\n  undefined4 *puVar2;\n  undefined4 uVar3;\n  undefined4 *puVar4;\n  undefined4 uVar5;\n  undefined4 uVar6;\n  \n  if (((*(ushort *)(param_1 + 2) & 0x2400) != 0) || (param_1[6] != 0)) {\n    FUN_0004e1a8(param_1);\n  }\n  puVar2 = param_2;\n  do {\n    puVar4 = param_1;\n    puVar1 = puVar2;\n    uVar6 = puVar1[1];\n    uVar5 = puVar1[2];\n    uVar3 = puVar1[3];\n    puVar2 = puVar1 + 4;\n    *puVar4 = *puVar1;\n    puVar4[1] = uVar6;\n    puVar4[2] = uVar5;\n    puVar4[3] = uVar3;\n    param_1 = puVar4 + 4;\n  } while (puVar2 != param_2 + 8);\n  uVar3 = puVar1[5];\n  puVar4[4] = *puVar2;\n  puVar4[5] = uVar3;\n  *(undefined2 *)(param_2 + 2) = 1;\n  param_2[6] = 0;\n  return;\n}\n\n" (function_definition "void FUN_0004e34c(undefined4 *param_1,undefined4 *param_2)\n\n{\n  undefined4 *puVar1;\n  undefined4 *puVar2;\n  undefined4 uVar3;\n  undefined4 *puVar4;\n  undefined4 uVar5;\n  undefined4 uVar6;\n  \n  if (((*(ushort *)(param_1 + 2) & 0x2400) != 0) || (param_1[6] != 0)) {\n    FUN_0004e1a8(param_1);\n  }\n  puVar2 = param_2;\n  do {\n    puVar4 = param_1;\n    puVar1 = puVar2;\n    uVar6 = puVar1[1];\n    uVar5 = puVar1[2];\n    uVar3 = puVar1[3];\n    puVar2 = puVar1 + 4;\n    *puVar4 = *puVar1;\n    puVar4[1] = uVar6;\n    puVar4[2] = uVar5;\n    puVar4[3] = uVar3;\n    param_1 = puVar4 + 4;\n  } while (puVar2 != param_2 + 8);\n  uVar3 = puVar1[5];\n  puVar4[4] = *puVar2;\n  puVar4[5] = uVar3;\n  *(undefined2 *)(param_2 + 2) = 1;\n  param_2[6] = 0;\n  return;\n}" primitive_type (function_declarator "FUN_0004e34c(undefined4 *param_1,undefined4 *param_2)" identifier (parameter_list "(undefined4 *param_1,undefined4 *param_2)" ( (parameter_declaration "undefined4 *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "undefined4 *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) ))) (compound_statement "{\n  undefined4 *puVar1;\n  undefined4 *puVar2;\n  undefined4 uVar3;\n  undefined4 *puVar4;\n  undefined4 uVar5;\n  undefined4 uVar6;\n  \n  if (((*(ushort *)(param_1 + 2) & 0x2400) != 0) || (param_1[6] != 0)) {\n    FUN_0004e1a8(param_1);\n  }\n  puVar2 = param_2;\n  do {\n    puVar4 = param_1;\n    puVar1 = puVar2;\n    uVar6 = puVar1[1];\n    uVar5 = puVar1[2];\n    uVar3 = puVar1[3];\n    puVar2 = puVar1 + 4;\n    *puVar4 = *puVar1;\n    puVar4[1] = uVar6;\n    puVar4[2] = uVar5;\n    puVar4[3] = uVar3;\n    param_1 = puVar4 + 4;\n  } while (puVar2 != param_2 + 8);\n  uVar3 = puVar1[5];\n  puVar4[4] = *puVar2;\n  puVar4[5] = uVar3;\n  *(undefined2 *)(param_2 + 2) = 1;\n  param_2[6] = 0;\n  return;\n}" { (declaration "undefined4 *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "undefined4 *puVar2;" type_identifier (pointer_declarator "*puVar2" * identifier) ;) (declaration "undefined4 uVar3;" type_identifier identifier ;) (declaration "undefined4 *puVar4;" type_identifier (pointer_declarator "*puVar4" * identifier) ;) (declaration "undefined4 uVar5;" type_identifier identifier ;) (declaration "undefined4 uVar6;" type_identifier identifier ;) (if_statement "if (((*(ushort *)(param_1 + 2) & 0x2400) != 0) || (param_1[6] != 0)) {\n    FUN_0004e1a8(param_1);\n  }" if (parenthesized_expression "(((*(ushort *)(param_1 + 2) & 0x2400) != 0) || (param_1[6] != 0))" ( (binary_expression "((*(ushort *)(param_1 + 2) & 0x2400) != 0) || (param_1[6] != 0)" (parenthesized_expression "((*(ushort *)(param_1 + 2) & 0x2400) != 0)" ( (binary_expression "(*(ushort *)(param_1 + 2) & 0x2400) != 0" (parenthesized_expression "(*(ushort *)(param_1 + 2) & 0x2400)" ( (binary_expression "*(ushort *)(param_1 + 2) & 0x2400" (pointer_expression "*(ushort *)(param_1 + 2)" * (cast_expression "(ushort *)(param_1 + 2)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 2)" ( (binary_expression "param_1 + 2" identifier + number_literal) )))) & number_literal) )) != number_literal) )) || (parenthesized_expression "(param_1[6] != 0)" ( (binary_expression "param_1[6] != 0" (subscript_expression "param_1[6]" identifier [ number_literal ]) != number_literal) ))) )) (compound_statement "{\n    FUN_0004e1a8(param_1);\n  }" { (expression_statement "FUN_0004e1a8(param_1);" (call_expression "FUN_0004e1a8(param_1)" identifier (argument_list "(param_1)" ( identifier ))) ;) })) (expression_statement "puVar2 = param_2;" (assignment_expression "puVar2 = param_2" identifier = identifier) ;) (do_statement "do {\n    puVar4 = param_1;\n    puVar1 = puVar2;\n    uVar6 = puVar1[1];\n    uVar5 = puVar1[2];\n    uVar3 = puVar1[3];\n    puVar2 = puVar1 + 4;\n    *puVar4 = *puVar1;\n    puVar4[1] = uVar6;\n    puVar4[2] = uVar5;\n    puVar4[3] = uVar3;\n    param_1 = puVar4 + 4;\n  } while (puVar2 != param_2 + 8);" do (compound_statement "{\n    puVar4 = param_1;\n    puVar1 = puVar2;\n    uVar6 = puVar1[1];\n    uVar5 = puVar1[2];\n    uVar3 = puVar1[3];\n    puVar2 = puVar1 + 4;\n    *puVar4 = *puVar1;\n    puVar4[1] = uVar6;\n    puVar4[2] = uVar5;\n    puVar4[3] = uVar3;\n    param_1 = puVar4 + 4;\n  }" { (expression_statement "puVar4 = param_1;" (assignment_expression "puVar4 = param_1" identifier = identifier) ;) (expression_statement "puVar1 = puVar2;" (assignment_expression "puVar1 = puVar2" identifier = identifier) ;) (expression_statement "uVar6 = puVar1[1];" (assignment_expression "uVar6 = puVar1[1]" identifier = (subscript_expression "puVar1[1]" identifier [ number_literal ])) ;) (expression_statement "uVar5 = puVar1[2];" (assignment_expression "uVar5 = puVar1[2]" identifier = (subscript_expression "puVar1[2]" identifier [ number_literal ])) ;) (expression_statement "uVar3 = puVar1[3];" (assignment_expression "uVar3 = puVar1[3]" identifier = (subscript_expression "puVar1[3]" identifier [ number_literal ])) ;) (expression_statement "puVar2 = puVar1 + 4;" (assignment_expression "puVar2 = puVar1 + 4" identifier = (binary_expression "puVar1 + 4" identifier + number_literal)) ;) (expression_statement "*puVar4 = *puVar1;" (assignment_expression "*puVar4 = *puVar1" (pointer_expression "*puVar4" * identifier) = (pointer_expression "*puVar1" * identifier)) ;) (expression_statement "puVar4[1] = uVar6;" (assignment_expression "puVar4[1] = uVar6" (subscript_expression "puVar4[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar4[2] = uVar5;" (assignment_expression "puVar4[2] = uVar5" (subscript_expression "puVar4[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar4[3] = uVar3;" (assignment_expression "puVar4[3] = uVar3" (subscript_expression "puVar4[3]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_1 = puVar4 + 4;" (assignment_expression "param_1 = puVar4 + 4" identifier = (binary_expression "puVar4 + 4" identifier + number_literal)) ;) }) while (parenthesized_expression "(puVar2 != param_2 + 8)" ( (binary_expression "puVar2 != param_2 + 8" identifier != (binary_expression "param_2 + 8" identifier + number_literal)) )) ;) (expression_statement "uVar3 = puVar1[5];" (assignment_expression "uVar3 = puVar1[5]" identifier = (subscript_expression "puVar1[5]" identifier [ number_literal ])) ;) (expression_statement "puVar4[4] = *puVar2;" (assignment_expression "puVar4[4] = *puVar2" (subscript_expression "puVar4[4]" identifier [ number_literal ]) = (pointer_expression "*puVar2" * identifier)) ;) (expression_statement "puVar4[5] = uVar3;" (assignment_expression "puVar4[5] = uVar3" (subscript_expression "puVar4[5]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*(undefined2 *)(param_2 + 2) = 1;" (assignment_expression "*(undefined2 *)(param_2 + 2) = 1" (pointer_expression "*(undefined2 *)(param_2 + 2)" * (cast_expression "(undefined2 *)(param_2 + 2)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 2)" ( (binary_expression "param_2 + 2" identifier + number_literal) )))) = number_literal) ;) (expression_statement "param_2[6] = 0;" (assignment_expression "param_2[6] = 0" (subscript_expression "param_2[6]" identifier [ number_literal ]) = 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 TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT) )) != LIT) )) || (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) != LIT) ))) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) })) (expression_statement (assignment_expression IDENT = IDENT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT != (binary_expression IDENT + LIT)) )) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (return_statement return ;) })))
(function_definition "void FUN_0004e34c(undefined4 *param_1,undefined4 *param_2)\n\n{\n  undefined4 *puVar1;\n  undefined4 *puVar2;\n  undefined4 uVar3;\n  undefined4 *puVar4;\n  undefined4 uVar5;\n  undefined4 uVar6;\n  \n  if (((*(ushort *)(param_1 + 2) & 0x2400) != 0) || (param_1[6] != 0)) {\n    FUN_0004e1a8(param_1);\n  }\n  puVar2 = param_2;\n  do {\n    puVar4 = param_1;\n    puVar1 = puVar2;\n    uVar6 = puVar1[1];\n    uVar5 = puVar1[2];\n    uVar3 = puVar1[3];\n    puVar2 = puVar1 + 4;\n    *puVar4 = *puVar1;\n    puVar4[1] = uVar6;\n    puVar4[2] = uVar5;\n    puVar4[3] = uVar3;\n    param_1 = puVar4 + 4;\n  } while (puVar2 != param_2 + 8);\n  uVar3 = puVar1[5];\n  puVar4[4] = *puVar2;\n  puVar4[5] = uVar3;\n  *(undefined2 *)(param_2 + 2) = 1;\n  param_2[6] = 0;\n  return;\n}" (primitive_type "void") (function_declarator "FUN_0004e34c(undefined4 *param_1,undefined4 *param_2)" (identifier "FUN_0004e34c") (parameter_list "(undefined4 *param_1,undefined4 *param_2)" (( "(") (parameter_declaration "undefined4 *param_1" (type_identifier "undefined4") (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) (, ",") (parameter_declaration "undefined4 *param_2" (type_identifier "undefined4") (pointer_declarator "*param_2" (* "*") (identifier "param_2"))) () ")"))) (compound_statement "{\n  undefined4 *puVar1;\n  undefined4 *puVar2;\n  undefined4 uVar3;\n  undefined4 *puVar4;\n  undefined4 uVar5;\n  undefined4 uVar6;\n  \n  if (((*(ushort *)(param_1 + 2) & 0x2400) != 0) || (param_1[6] != 0)) {\n    FUN_0004e1a8(param_1);\n  }\n  puVar2 = param_2;\n  do {\n    puVar4 = param_1;\n    puVar1 = puVar2;\n    uVar6 = puVar1[1];\n    uVar5 = puVar1[2];\n    uVar3 = puVar1[3];\n    puVar2 = puVar1 + 4;\n    *puVar4 = *puVar1;\n    puVar4[1] = uVar6;\n    puVar4[2] = uVar5;\n    puVar4[3] = uVar3;\n    param_1 = puVar4 + 4;\n  } while (puVar2 != param_2 + 8);\n  uVar3 = puVar1[5];\n  puVar4[4] = *puVar2;\n  puVar4[5] = uVar3;\n  *(undefined2 *)(param_2 + 2) = 1;\n  param_2[6] = 0;\n  return;\n}" ({ "{") (declaration "undefined4 *puVar1;" (type_identifier "undefined4") (pointer_declarator "*puVar1" (* "*") (identifier "puVar1")) (; ";")) (declaration "undefined4 *puVar2;" (type_identifier "undefined4") (pointer_declarator "*puVar2" (* "*") (identifier "puVar2")) (; ";")) (declaration "undefined4 uVar3;" (type_identifier "undefined4") (identifier "uVar3") (; ";")) (declaration "undefined4 *puVar4;" (type_identifier "undefined4") (pointer_declarator "*puVar4" (* "*") (identifier "puVar4")) (; ";")) (declaration "undefined4 uVar5;" (type_identifier "undefined4") (identifier "uVar5") (; ";")) (declaration "undefined4 uVar6;" (type_identifier "undefined4") (identifier "uVar6") (; ";")) (if_statement "if (((*(ushort *)(param_1 + 2) & 0x2400) != 0) || (param_1[6] != 0)) {\n    FUN_0004e1a8(param_1);\n  }" (if "if") (parenthesized_expression "(((*(ushort *)(param_1 + 2) & 0x2400) != 0) || (param_1[6] != 0))" (( "(") (binary_expression "((*(ushort *)(param_1 + 2) & 0x2400) != 0) || (param_1[6] != 0)" (parenthesized_expression "((*(ushort *)(param_1 + 2) & 0x2400) != 0)" (( "(") (binary_expression "(*(ushort *)(param_1 + 2) & 0x2400) != 0" (parenthesized_expression "(*(ushort *)(param_1 + 2) & 0x2400)" (( "(") (binary_expression "*(ushort *)(param_1 + 2) & 0x2400" (pointer_expression "*(ushort *)(param_1 + 2)" (* "*") (cast_expression "(ushort *)(param_1 + 2)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 2)" (( "(") (binary_expression "param_1 + 2" (identifier "param_1") (+ "+") (number_literal "2")) () ")")))) (& "&") (number_literal "0x2400")) () ")")) (!= "!=") (number_literal "0")) () ")")) (|| "||") (parenthesized_expression "(param_1[6] != 0)" (( "(") (binary_expression "param_1[6] != 0" (subscript_expression "param_1[6]" (identifier "param_1") ([ "[") (number_literal "6") (] "]")) (!= "!=") (number_literal "0")) () ")"))) () ")")) (compound_statement "{\n    FUN_0004e1a8(param_1);\n  }" ({ "{") (expression_statement "FUN_0004e1a8(param_1);" (call_expression "FUN_0004e1a8(param_1)" (identifier "FUN_0004e1a8") (argument_list "(param_1)" (( "(") (identifier "param_1") () ")"))) (; ";")) (} "}"))) (expression_statement "puVar2 = param_2;" (assignment_expression "puVar2 = param_2" (identifier "puVar2") (= "=") (identifier "param_2")) (; ";")) (do_statement "do {\n    puVar4 = param_1;\n    puVar1 = puVar2;\n    uVar6 = puVar1[1];\n    uVar5 = puVar1[2];\n    uVar3 = puVar1[3];\n    puVar2 = puVar1 + 4;\n    *puVar4 = *puVar1;\n    puVar4[1] = uVar6;\n    puVar4[2] = uVar5;\n    puVar4[3] = uVar3;\n    param_1 = puVar4 + 4;\n  } while (puVar2 != param_2 + 8);" (do "do") (compound_statement "{\n    puVar4 = param_1;\n    puVar1 = puVar2;\n    uVar6 = puVar1[1];\n    uVar5 = puVar1[2];\n    uVar3 = puVar1[3];\n    puVar2 = puVar1 + 4;\n    *puVar4 = *puVar1;\n    puVar4[1] = uVar6;\n    puVar4[2] = uVar5;\n    puVar4[3] = uVar3;\n    param_1 = puVar4 + 4;\n  }" ({ "{") (expression_statement "puVar4 = param_1;" (assignment_expression "puVar4 = param_1" (identifier "puVar4") (= "=") (identifier "param_1")) (; ";")) (expression_statement "puVar1 = puVar2;" (assignment_expression "puVar1 = puVar2" (identifier "puVar1") (= "=") (identifier "puVar2")) (; ";")) (expression_statement "uVar6 = puVar1[1];" (assignment_expression "uVar6 = puVar1[1]" (identifier "uVar6") (= "=") (subscript_expression "puVar1[1]" (identifier "puVar1") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "uVar5 = puVar1[2];" (assignment_expression "uVar5 = puVar1[2]" (identifier "uVar5") (= "=") (subscript_expression "puVar1[2]" (identifier "puVar1") ([ "[") (number_literal "2") (] "]"))) (; ";")) (expression_statement "uVar3 = puVar1[3];" (assignment_expression "uVar3 = puVar1[3]" (identifier "uVar3") (= "=") (subscript_expression "puVar1[3]" (identifier "puVar1") ([ "[") (number_literal "3") (] "]"))) (; ";")) (expression_statement "puVar2 = puVar1 + 4;" (assignment_expression "puVar2 = puVar1 + 4" (identifier "puVar2") (= "=") (binary_expression "puVar1 + 4" (identifier "puVar1") (+ "+") (number_literal "4"))) (; ";")) (expression_statement "*puVar4 = *puVar1;" (assignment_expression "*puVar4 = *puVar1" (pointer_expression "*puVar4" (* "*") (identifier "puVar4")) (= "=") (pointer_expression "*puVar1" (* "*") (identifier "puVar1"))) (; ";")) (expression_statement "puVar4[1] = uVar6;" (assignment_expression "puVar4[1] = uVar6" (subscript_expression "puVar4[1]" (identifier "puVar4") ([ "[") (number_literal "1") (] "]")) (= "=") (identifier "uVar6")) (; ";")) (expression_statement "puVar4[2] = uVar5;" (assignment_expression "puVar4[2] = uVar5" (subscript_expression "puVar4[2]" (identifier "puVar4") ([ "[") (number_literal "2") (] "]")) (= "=") (identifier "uVar5")) (; ";")) (expression_statement "puVar4[3] = uVar3;" (assignment_expression "puVar4[3] = uVar3" (subscript_expression "puVar4[3]" (identifier "puVar4") ([ "[") (number_literal "3") (] "]")) (= "=") (identifier "uVar3")) (; ";")) (expression_statement "param_1 = puVar4 + 4;" (assignment_expression "param_1 = puVar4 + 4" (identifier "param_1") (= "=") (binary_expression "puVar4 + 4" (identifier "puVar4") (+ "+") (number_literal "4"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(puVar2 != param_2 + 8)" (( "(") (binary_expression "puVar2 != param_2 + 8" (identifier "puVar2") (!= "!=") (binary_expression "param_2 + 8" (identifier "param_2") (+ "+") (number_literal "8"))) () ")")) (; ";")) (expression_statement "uVar3 = puVar1[5];" (assignment_expression "uVar3 = puVar1[5]" (identifier "uVar3") (= "=") (subscript_expression "puVar1[5]" (identifier "puVar1") ([ "[") (number_literal "5") (] "]"))) (; ";")) (expression_statement "puVar4[4] = *puVar2;" (assignment_expression "puVar4[4] = *puVar2" (subscript_expression "puVar4[4]" (identifier "puVar4") ([ "[") (number_literal "4") (] "]")) (= "=") (pointer_expression "*puVar2" (* "*") (identifier "puVar2"))) (; ";")) (expression_statement "puVar4[5] = uVar3;" (assignment_expression "puVar4[5] = uVar3" (subscript_expression "puVar4[5]" (identifier "puVar4") ([ "[") (number_literal "5") (] "]")) (= "=") (identifier "uVar3")) (; ";")) (expression_statement "*(undefined2 *)(param_2 + 2) = 1;" (assignment_expression "*(undefined2 *)(param_2 + 2) = 1" (pointer_expression "*(undefined2 *)(param_2 + 2)" (* "*") (cast_expression "(undefined2 *)(param_2 + 2)" (( "(") (type_descriptor "undefined2 *" (type_identifier "undefined2") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 2)" (( "(") (binary_expression "param_2 + 2" (identifier "param_2") (+ "+") (number_literal "2")) () ")")))) (= "=") (number_literal "1")) (; ";")) (expression_statement "param_2[6] = 0;" (assignment_expression "param_2[6] = 0" (subscript_expression "param_2[6]" (identifier "param_2") ([ "[") (number_literal "6") (] "]")) (= "=") (number_literal "0")) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}")))

void function_1(type_1 *pTo,type_1 *pFrom)

{
  type_2 uVar1;
  type_3 uVar2;
  type_3 uVar3;
  type_1 *pMVar4;
  type_1 *var_2;
  int iVar6;
  char *pcVar7;
  type_1 *pMVar8;
  type_4 uVar9;
  
  if (((pTo->flags & 0x2400) != 0) || (pTo->szMalloc != 0)) {
    var_1(pTo);
  }
  var_2 = pFrom;
  do {
    pMVar8 = pTo;
    pMVar4 = var_2;
    uVar9 = *(type_4 *)((int)&pMVar4->u + 4);
    uVar1 = pMVar4->flags;
    uVar2 = pMVar4->enc;
    uVar3 = pMVar4->eSubtype;
    iVar6 = pMVar4->n;
    var_2 = (type_1 *)&pMVar4->z;
    (pMVar8->u).nZero = (pMVar4->u).nZero;
    *(type_4 *)((int)&pMVar8->u + 4) = uVar9;
    pMVar8->flags = uVar1;
    pMVar8->enc = uVar2;
    pMVar8->eSubtype = uVar3;
    pMVar8->n = iVar6;
    pTo = (type_1 *)&pMVar8->z;
  } while (var_2 != (type_1 *)&pFrom->db);
  pcVar7 = pMVar4->zMalloc;
  pMVar8->z = *(char **)var_2;
  pMVar8->zMalloc = pcVar7;
  pFrom->flags = 1;
  pFrom->szMalloc = 0;
  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: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (if_statement condition: (parenthesized_expression (binary_expression left: (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: (identifier) right: (number_literal))))) right: (number_literal))) right: (number_literal))) right: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (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: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (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: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (return_statement))))

void MASKED(undefined4 *param_1,undefined4 *param_2)

{
  undefined4 *puVar1;
  undefined4 *puVar2;
  undefined4 uVar3;
  undefined4 *puVar4;
  undefined4 uVar5;
  undefined4 uVar6;
  
  if (((*(ushort *)(param_1 + 2) & 0x2400) != 0) || (param_1[6] != 0)) {
    FUN_0004e1a8(param_1);
  }
  puVar2 = param_2;
  do {
    puVar4 = param_1;
    puVar1 = puVar2;
    uVar6 = puVar1[1];
    uVar5 = puVar1[2];
    uVar3 = puVar1[3];
    puVar2 = puVar1 + 4;
    *puVar4 = *puVar1;
    puVar4[1] = uVar6;
    puVar4[2] = uVar5;
    puVar4[3] = uVar3;
    param_1 = puVar4 + 4;
  } while (puVar2 != param_2 + 8);
  uVar3 = puVar1[5];
  puVar4[4] = *puVar2;
  puVar4[5] = uVar3;
  *(undefined2 *)(param_2 + 2) = 1;
  param_2[6] = 0;
  return;
}

