
int zipfileSerializeCDS(ZipfileEntry *pEntry,u8 *aBuf)

{
  u16 uVar1;
  uint uVar2;
  int iVar3;
  u8 *puVar4;
  
  if (pEntry->aExtra == (u8 *)0x0) {
    (pEntry->cds).nExtra = 9;
  }
  zipfilePutU32(aBuf,0x2014b50);
  uVar1 = (pEntry->cds).iVersionMadeBy;
  aBuf[4] = (u8)uVar1;
  aBuf[5] = (u8)(uVar1 >> 8);
  uVar1 = (pEntry->cds).iVersionExtract;
  aBuf[6] = (u8)uVar1;
  aBuf[7] = (u8)(uVar1 >> 8);
  uVar1 = (pEntry->cds).flags;
  aBuf[8] = (u8)uVar1;
  aBuf[9] = (u8)(uVar1 >> 8);
  uVar1 = (pEntry->cds).iCompression;
  aBuf[10] = (u8)uVar1;
  aBuf[0xb] = (u8)(uVar1 >> 8);
  uVar1 = (pEntry->cds).mTime;
  aBuf[0xc] = (u8)uVar1;
  aBuf[0xd] = (u8)(uVar1 >> 8);
  uVar1 = (pEntry->cds).mDate;
  aBuf[0xe] = (u8)uVar1;
  aBuf[0xf] = (u8)(uVar1 >> 8);
  zipfilePutU32(aBuf + 0x10,(pEntry->cds).crc32);
  zipfilePutU32(aBuf + 0x14,(pEntry->cds).szCompressed);
  zipfilePutU32(aBuf + 0x18,(pEntry->cds).szUncompressed);
  uVar1 = (pEntry->cds).nFile;
  aBuf[0x1c] = (u8)uVar1;
  aBuf[0x1d] = (u8)(uVar1 >> 8);
  uVar1 = (pEntry->cds).nExtra;
  aBuf[0x1e] = (u8)uVar1;
  aBuf[0x1f] = (u8)(uVar1 >> 8);
  uVar1 = (pEntry->cds).nComment;
  aBuf[0x20] = (u8)uVar1;
  aBuf[0x21] = (u8)(uVar1 >> 8);
  uVar1 = (pEntry->cds).iDiskStart;
  aBuf[0x22] = (u8)uVar1;
  aBuf[0x23] = (u8)(uVar1 >> 8);
  uVar1 = (pEntry->cds).iInternalAttr;
  aBuf[0x24] = (u8)uVar1;
  aBuf[0x25] = (u8)(uVar1 >> 8);
  zipfilePutU32(aBuf + 0x26,(pEntry->cds).iExternalAttr);
  zipfilePutU32(aBuf + 0x2a,(pEntry->cds).iOffset);
  (*(code *)PTR_memcpy_0018fed4)(aBuf + 0x2e,(pEntry->cds).zFile,(pEntry->cds).nFile);
  uVar2 = (uint)(pEntry->cds).nFile;
  puVar4 = aBuf + 0x2e + uVar2;
  if (pEntry->aExtra == (u8 *)0x0) {
    builtin_memcpy(aBuf + uVar2 + 0x2e,"UT\x05",4);
    puVar4[4] = '\x01';
    zipfilePutU32(puVar4 + 5,pEntry->mUnixTime);
    puVar4 = puVar4 + 9;
  }
  else {
    iVar3 = (uint)(pEntry->cds).nExtra + (uint)(pEntry->cds).nComment;
    (*(code *)PTR_memcpy_0018fed4)(puVar4,pEntry->aExtra,iVar3);
    puVar4 = puVar4 + iVar3;
  }
  return (int)puVar4 - (int)aBuf;
}



int FUN_0002c1bc(undefined2 *param_1,int param_2)

{
  undefined2 uVar1;
  ushort uVar2;
  ushort uVar3;
  undefined1 *puVar4;
  
  if (*(int *)(param_1 + 0x1a) == 0) {
    param_1[0xd] = 9;
  }
  FUN_0001afb0(param_2,0x2014b50);
  uVar1 = *param_1;
  *(char *)(param_2 + 4) = (char)uVar1;
  *(char *)(param_2 + 5) = (char)((ushort)uVar1 >> 8);
  uVar1 = param_1[1];
  *(char *)(param_2 + 6) = (char)uVar1;
  *(char *)(param_2 + 7) = (char)((ushort)uVar1 >> 8);
  uVar1 = param_1[2];
  *(char *)(param_2 + 8) = (char)uVar1;
  *(char *)(param_2 + 9) = (char)((ushort)uVar1 >> 8);
  uVar1 = param_1[3];
  *(char *)(param_2 + 10) = (char)uVar1;
  *(char *)(param_2 + 0xb) = (char)((ushort)uVar1 >> 8);
  uVar1 = param_1[4];
  *(char *)(param_2 + 0xc) = (char)uVar1;
  *(char *)(param_2 + 0xd) = (char)((ushort)uVar1 >> 8);
  uVar1 = param_1[5];
  *(char *)(param_2 + 0xe) = (char)uVar1;
  *(char *)(param_2 + 0xf) = (char)((ushort)uVar1 >> 8);
  FUN_0001afb0(param_2 + 0x10,*(undefined4 *)(param_1 + 6));
  FUN_0001afb0(param_2 + 0x14,*(undefined4 *)(param_1 + 8));
  FUN_0001afb0(param_2 + 0x18,*(undefined4 *)(param_1 + 10));
  uVar1 = param_1[0xc];
  *(char *)(param_2 + 0x1c) = (char)uVar1;
  *(char *)(param_2 + 0x1d) = (char)((ushort)uVar1 >> 8);
  uVar1 = param_1[0xd];
  *(char *)(param_2 + 0x1e) = (char)uVar1;
  *(char *)(param_2 + 0x1f) = (char)((ushort)uVar1 >> 8);
  uVar1 = param_1[0xe];
  *(char *)(param_2 + 0x20) = (char)uVar1;
  *(char *)(param_2 + 0x21) = (char)((ushort)uVar1 >> 8);
  uVar1 = param_1[0xf];
  *(char *)(param_2 + 0x22) = (char)uVar1;
  *(char *)(param_2 + 0x23) = (char)((ushort)uVar1 >> 8);
  uVar1 = param_1[0x10];
  *(char *)(param_2 + 0x24) = (char)uVar1;
  *(char *)(param_2 + 0x25) = (char)((ushort)uVar1 >> 8);
  FUN_0001afb0(param_2 + 0x26,*(undefined4 *)(param_1 + 0x12));
  FUN_0001afb0(param_2 + 0x2a,*(undefined4 *)(param_1 + 0x14));
  (*(code *)PTR_memcpy_0018fed4)(param_2 + 0x2e,*(undefined4 *)(param_1 + 0x16),param_1[0xc]);
  puVar4 = (undefined1 *)(param_2 + 0x2e + (uint)(ushort)param_1[0xc]);
  if (*(int *)(param_1 + 0x1a) == 0) {
    *puVar4 = 0x55;
    puVar4[1] = 0x54;
    puVar4[2] = 5;
    puVar4[3] = 0;
    puVar4[4] = 1;
    FUN_0001afb0(puVar4 + 5,*(undefined4 *)(param_1 + 0x18));
    puVar4 = puVar4 + 9;
  }
  else {
    uVar2 = param_1[0xd];
    uVar3 = param_1[0xe];
    (*(code *)PTR_memcpy_0018fed4)(puVar4,*(int *)(param_1 + 0x1a),(uint)uVar2 + (uint)uVar3);
    puVar4 = puVar4 + (uint)uVar2 + (uint)uVar3;
  }
  return (int)puVar4 - param_2;
}


lui gp,0x17
addiu gp,gp,-0x489c
addu gp,gp,t9
addiu sp,sp,-0x28
sw ra,0x24(sp)
sw s2,0x20(sp)
sw s1,0x1c(sp)
sw s0,0x18(sp)
sw gp,0x10(sp)
or s1,a0,zero
lw v0,0x34(a0)
beq v0,zero,0x0002c3b0
_or s0,a1,zero
lui a1,0x201
addiu a1,a1,0x4b50
or a0,s0,zero
lw s2,-0x7fb0(gp)
addiu s2,s2,-0x5050
or t9,s2,zero
bal 0x0001afb0
_nop
lw gp,0x10(sp)
lhu v0,0x0(s1)
sb v0,0x4(s0)
srl v0,v0,0x8
sb v0,0x5(s0)
lhu v0,0x2(s1)
sb v0,0x6(s0)
srl v0,v0,0x8
sb v0,0x7(s0)
lhu v0,0x4(s1)
sb v0,0x8(s0)
srl v0,v0,0x8
sb v0,0x9(s0)
lhu v0,0x6(s1)
sb v0,0xa(s0)
srl v0,v0,0x8
sb v0,0xb(s0)
lhu v0,0x8(s1)
sb v0,0xc(s0)
srl v0,v0,0x8
sb v0,0xd(s0)
lhu v0,0xa(s1)
sb v0,0xe(s0)
srl v0,v0,0x8
sb v0,0xf(s0)
lw a1,0xc(s1)
addiu a0,s0,0x10
or t9,s2,zero
bal 0x0001afb0
_nop
lw gp,0x10(sp)
lw a1,0x10(s1)
addiu a0,s0,0x14
or t9,s2,zero
bal 0x0001afb0
_nop
lw gp,0x10(sp)
lw a1,0x14(s1)
addiu a0,s0,0x18
or t9,s2,zero
bal 0x0001afb0
_nop
lw gp,0x10(sp)
lhu v0,0x18(s1)
sb v0,0x1c(s0)
srl v0,v0,0x8
sb v0,0x1d(s0)
lhu v0,0x1a(s1)
sb v0,0x1e(s0)
srl v0,v0,0x8
sb v0,0x1f(s0)
lhu v0,0x1c(s1)
sb v0,0x20(s0)
srl v0,v0,0x8
sb v0,0x21(s0)
lhu v0,0x1e(s1)
sb v0,0x22(s0)
srl v0,v0,0x8
sb v0,0x23(s0)
lhu v0,0x20(s1)
sb v0,0x24(s0)
srl v0,v0,0x8
sb v0,0x25(s0)
lw a1,0x24(s1)
addiu a0,s0,0x26
or t9,s2,zero
bal 0x0001afb0
_nop
lw gp,0x10(sp)
lw a1,0x28(s1)
addiu a0,s0,0x2a
or t9,s2,zero
bal 0x0001afb0
_nop
lw gp,0x10(sp)
addiu s2,s0,0x2e
lhu a2,0x18(s1)
lw a1,0x2c(s1)
or a0,s2,zero
lw t9,-0x7a4c(gp)
jalr t9
_nop
lw gp,0x10(sp)
lhu v0,0x18(s1)
lw a1,0x34(s1)
beq a1,zero,0x0002c3bc
_addu s2,s2,v0
lhu v0,0x1a(s1)
lhu s1,0x1c(s1)
addu s1,v0,s1
or a2,s1,zero
or a0,s2,zero
lw t9,-0x7a4c(gp)
jalr t9
_nop
lw gp,0x10(sp)
addu v0,s2,s1
subu v0,v0,s0
lw ra,0x24(sp)
lw s2,0x20(sp)
lw s1,0x1c(sp)
lw s0,0x18(sp)
jr ra
_addiu sp,sp,0x28
li v0,0x9
b 0x0002c1f0
_sh v0,0x1a(a0)
li v0,0x55
sb v0,0x0(s2)
li v0,0x54
sb v0,0x1(s2)
li v0,0x5
sb v0,0x2(s2)
sb zero,0x3(s2)
li v0,0x1
sb v0,0x4(s2)
lw a1,0x30(s1)
addiu a0,s2,0x5
lw t9,-0x7fb0(gp)
addiu t9,t9,-0x5050
bal 0x0001afb0
_nop
lw gp,0x10(sp)
b 0x0002c394
_addiu v0,s2,0x9
(translation_unit "int FUN_0002c1bc(undefined2 *param_1,int param_2)\n\n{\n  undefined2 uVar1;\n  ushort uVar2;\n  ushort uVar3;\n  undefined1 *puVar4;\n  \n  if (*(int *)(param_1 + 0x1a) == 0) {\n    param_1[0xd] = 9;\n  }\n  FUN_0001afb0(param_2,0x2014b50);\n  uVar1 = *param_1;\n  *(char *)(param_2 + 4) = (char)uVar1;\n  *(char *)(param_2 + 5) = (char)((ushort)uVar1 >> 8);\n  uVar1 = param_1[1];\n  *(char *)(param_2 + 6) = (char)uVar1;\n  *(char *)(param_2 + 7) = (char)((ushort)uVar1 >> 8);\n  uVar1 = param_1[2];\n  *(char *)(param_2 + 8) = (char)uVar1;\n  *(char *)(param_2 + 9) = (char)((ushort)uVar1 >> 8);\n  uVar1 = param_1[3];\n  *(char *)(param_2 + 10) = (char)uVar1;\n  *(char *)(param_2 + 0xb) = (char)((ushort)uVar1 >> 8);\n  uVar1 = param_1[4];\n  *(char *)(param_2 + 0xc) = (char)uVar1;\n  *(char *)(param_2 + 0xd) = (char)((ushort)uVar1 >> 8);\n  uVar1 = param_1[5];\n  *(char *)(param_2 + 0xe) = (char)uVar1;\n  *(char *)(param_2 + 0xf) = (char)((ushort)uVar1 >> 8);\n  FUN_0001afb0(param_2 + 0x10,*(undefined4 *)(param_1 + 6));\n  FUN_0001afb0(param_2 + 0x14,*(undefined4 *)(param_1 + 8));\n  FUN_0001afb0(param_2 + 0x18,*(undefined4 *)(param_1 + 10));\n  uVar1 = param_1[0xc];\n  *(char *)(param_2 + 0x1c) = (char)uVar1;\n  *(char *)(param_2 + 0x1d) = (char)((ushort)uVar1 >> 8);\n  uVar1 = param_1[0xd];\n  *(char *)(param_2 + 0x1e) = (char)uVar1;\n  *(char *)(param_2 + 0x1f) = (char)((ushort)uVar1 >> 8);\n  uVar1 = param_1[0xe];\n  *(char *)(param_2 + 0x20) = (char)uVar1;\n  *(char *)(param_2 + 0x21) = (char)((ushort)uVar1 >> 8);\n  uVar1 = param_1[0xf];\n  *(char *)(param_2 + 0x22) = (char)uVar1;\n  *(char *)(param_2 + 0x23) = (char)((ushort)uVar1 >> 8);\n  uVar1 = param_1[0x10];\n  *(char *)(param_2 + 0x24) = (char)uVar1;\n  *(char *)(param_2 + 0x25) = (char)((ushort)uVar1 >> 8);\n  FUN_0001afb0(param_2 + 0x26,*(undefined4 *)(param_1 + 0x12));\n  FUN_0001afb0(param_2 + 0x2a,*(undefined4 *)(param_1 + 0x14));\n  (*(code *)PTR_memcpy_0018fed4)(param_2 + 0x2e,*(undefined4 *)(param_1 + 0x16),param_1[0xc]);\n  puVar4 = (undefined1 *)(param_2 + 0x2e + (uint)(ushort)param_1[0xc]);\n  if (*(int *)(param_1 + 0x1a) == 0) {\n    *puVar4 = 0x55;\n    puVar4[1] = 0x54;\n    puVar4[2] = 5;\n    puVar4[3] = 0;\n    puVar4[4] = 1;\n    FUN_0001afb0(puVar4 + 5,*(undefined4 *)(param_1 + 0x18));\n    puVar4 = puVar4 + 9;\n  }\n  else {\n    uVar2 = param_1[0xd];\n    uVar3 = param_1[0xe];\n    (*(code *)PTR_memcpy_0018fed4)(puVar4,*(int *)(param_1 + 0x1a),(uint)uVar2 + (uint)uVar3);\n    puVar4 = puVar4 + (uint)uVar2 + (uint)uVar3;\n  }\n  return (int)puVar4 - param_2;\n}\n\n" (function_definition "int FUN_0002c1bc(undefined2 *param_1,int param_2)\n\n{\n  undefined2 uVar1;\n  ushort uVar2;\n  ushort uVar3;\n  undefined1 *puVar4;\n  \n  if (*(int *)(param_1 + 0x1a) == 0) {\n    param_1[0xd] = 9;\n  }\n  FUN_0001afb0(param_2,0x2014b50);\n  uVar1 = *param_1;\n  *(char *)(param_2 + 4) = (char)uVar1;\n  *(char *)(param_2 + 5) = (char)((ushort)uVar1 >> 8);\n  uVar1 = param_1[1];\n  *(char *)(param_2 + 6) = (char)uVar1;\n  *(char *)(param_2 + 7) = (char)((ushort)uVar1 >> 8);\n  uVar1 = param_1[2];\n  *(char *)(param_2 + 8) = (char)uVar1;\n  *(char *)(param_2 + 9) = (char)((ushort)uVar1 >> 8);\n  uVar1 = param_1[3];\n  *(char *)(param_2 + 10) = (char)uVar1;\n  *(char *)(param_2 + 0xb) = (char)((ushort)uVar1 >> 8);\n  uVar1 = param_1[4];\n  *(char *)(param_2 + 0xc) = (char)uVar1;\n  *(char *)(param_2 + 0xd) = (char)((ushort)uVar1 >> 8);\n  uVar1 = param_1[5];\n  *(char *)(param_2 + 0xe) = (char)uVar1;\n  *(char *)(param_2 + 0xf) = (char)((ushort)uVar1 >> 8);\n  FUN_0001afb0(param_2 + 0x10,*(undefined4 *)(param_1 + 6));\n  FUN_0001afb0(param_2 + 0x14,*(undefined4 *)(param_1 + 8));\n  FUN_0001afb0(param_2 + 0x18,*(undefined4 *)(param_1 + 10));\n  uVar1 = param_1[0xc];\n  *(char *)(param_2 + 0x1c) = (char)uVar1;\n  *(char *)(param_2 + 0x1d) = (char)((ushort)uVar1 >> 8);\n  uVar1 = param_1[0xd];\n  *(char *)(param_2 + 0x1e) = (char)uVar1;\n  *(char *)(param_2 + 0x1f) = (char)((ushort)uVar1 >> 8);\n  uVar1 = param_1[0xe];\n  *(char *)(param_2 + 0x20) = (char)uVar1;\n  *(char *)(param_2 + 0x21) = (char)((ushort)uVar1 >> 8);\n  uVar1 = param_1[0xf];\n  *(char *)(param_2 + 0x22) = (char)uVar1;\n  *(char *)(param_2 + 0x23) = (char)((ushort)uVar1 >> 8);\n  uVar1 = param_1[0x10];\n  *(char *)(param_2 + 0x24) = (char)uVar1;\n  *(char *)(param_2 + 0x25) = (char)((ushort)uVar1 >> 8);\n  FUN_0001afb0(param_2 + 0x26,*(undefined4 *)(param_1 + 0x12));\n  FUN_0001afb0(param_2 + 0x2a,*(undefined4 *)(param_1 + 0x14));\n  (*(code *)PTR_memcpy_0018fed4)(param_2 + 0x2e,*(undefined4 *)(param_1 + 0x16),param_1[0xc]);\n  puVar4 = (undefined1 *)(param_2 + 0x2e + (uint)(ushort)param_1[0xc]);\n  if (*(int *)(param_1 + 0x1a) == 0) {\n    *puVar4 = 0x55;\n    puVar4[1] = 0x54;\n    puVar4[2] = 5;\n    puVar4[3] = 0;\n    puVar4[4] = 1;\n    FUN_0001afb0(puVar4 + 5,*(undefined4 *)(param_1 + 0x18));\n    puVar4 = puVar4 + 9;\n  }\n  else {\n    uVar2 = param_1[0xd];\n    uVar3 = param_1[0xe];\n    (*(code *)PTR_memcpy_0018fed4)(puVar4,*(int *)(param_1 + 0x1a),(uint)uVar2 + (uint)uVar3);\n    puVar4 = puVar4 + (uint)uVar2 + (uint)uVar3;\n  }\n  return (int)puVar4 - param_2;\n}" primitive_type (function_declarator "FUN_0002c1bc(undefined2 *param_1,int param_2)" identifier (parameter_list "(undefined2 *param_1,int param_2)" ( (parameter_declaration "undefined2 *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "int param_2" primitive_type identifier) ))) (compound_statement "{\n  undefined2 uVar1;\n  ushort uVar2;\n  ushort uVar3;\n  undefined1 *puVar4;\n  \n  if (*(int *)(param_1 + 0x1a) == 0) {\n    param_1[0xd] = 9;\n  }\n  FUN_0001afb0(param_2,0x2014b50);\n  uVar1 = *param_1;\n  *(char *)(param_2 + 4) = (char)uVar1;\n  *(char *)(param_2 + 5) = (char)((ushort)uVar1 >> 8);\n  uVar1 = param_1[1];\n  *(char *)(param_2 + 6) = (char)uVar1;\n  *(char *)(param_2 + 7) = (char)((ushort)uVar1 >> 8);\n  uVar1 = param_1[2];\n  *(char *)(param_2 + 8) = (char)uVar1;\n  *(char *)(param_2 + 9) = (char)((ushort)uVar1 >> 8);\n  uVar1 = param_1[3];\n  *(char *)(param_2 + 10) = (char)uVar1;\n  *(char *)(param_2 + 0xb) = (char)((ushort)uVar1 >> 8);\n  uVar1 = param_1[4];\n  *(char *)(param_2 + 0xc) = (char)uVar1;\n  *(char *)(param_2 + 0xd) = (char)((ushort)uVar1 >> 8);\n  uVar1 = param_1[5];\n  *(char *)(param_2 + 0xe) = (char)uVar1;\n  *(char *)(param_2 + 0xf) = (char)((ushort)uVar1 >> 8);\n  FUN_0001afb0(param_2 + 0x10,*(undefined4 *)(param_1 + 6));\n  FUN_0001afb0(param_2 + 0x14,*(undefined4 *)(param_1 + 8));\n  FUN_0001afb0(param_2 + 0x18,*(undefined4 *)(param_1 + 10));\n  uVar1 = param_1[0xc];\n  *(char *)(param_2 + 0x1c) = (char)uVar1;\n  *(char *)(param_2 + 0x1d) = (char)((ushort)uVar1 >> 8);\n  uVar1 = param_1[0xd];\n  *(char *)(param_2 + 0x1e) = (char)uVar1;\n  *(char *)(param_2 + 0x1f) = (char)((ushort)uVar1 >> 8);\n  uVar1 = param_1[0xe];\n  *(char *)(param_2 + 0x20) = (char)uVar1;\n  *(char *)(param_2 + 0x21) = (char)((ushort)uVar1 >> 8);\n  uVar1 = param_1[0xf];\n  *(char *)(param_2 + 0x22) = (char)uVar1;\n  *(char *)(param_2 + 0x23) = (char)((ushort)uVar1 >> 8);\n  uVar1 = param_1[0x10];\n  *(char *)(param_2 + 0x24) = (char)uVar1;\n  *(char *)(param_2 + 0x25) = (char)((ushort)uVar1 >> 8);\n  FUN_0001afb0(param_2 + 0x26,*(undefined4 *)(param_1 + 0x12));\n  FUN_0001afb0(param_2 + 0x2a,*(undefined4 *)(param_1 + 0x14));\n  (*(code *)PTR_memcpy_0018fed4)(param_2 + 0x2e,*(undefined4 *)(param_1 + 0x16),param_1[0xc]);\n  puVar4 = (undefined1 *)(param_2 + 0x2e + (uint)(ushort)param_1[0xc]);\n  if (*(int *)(param_1 + 0x1a) == 0) {\n    *puVar4 = 0x55;\n    puVar4[1] = 0x54;\n    puVar4[2] = 5;\n    puVar4[3] = 0;\n    puVar4[4] = 1;\n    FUN_0001afb0(puVar4 + 5,*(undefined4 *)(param_1 + 0x18));\n    puVar4 = puVar4 + 9;\n  }\n  else {\n    uVar2 = param_1[0xd];\n    uVar3 = param_1[0xe];\n    (*(code *)PTR_memcpy_0018fed4)(puVar4,*(int *)(param_1 + 0x1a),(uint)uVar2 + (uint)uVar3);\n    puVar4 = puVar4 + (uint)uVar2 + (uint)uVar3;\n  }\n  return (int)puVar4 - param_2;\n}" { (declaration "undefined2 uVar1;" type_identifier identifier ;) (declaration "ushort uVar2;" type_identifier identifier ;) (declaration "ushort uVar3;" type_identifier identifier ;) (declaration "undefined1 *puVar4;" type_identifier (pointer_declarator "*puVar4" * identifier) ;) (if_statement "if (*(int *)(param_1 + 0x1a) == 0) {\n    param_1[0xd] = 9;\n  }" if (parenthesized_expression "(*(int *)(param_1 + 0x1a) == 0)" ( (binary_expression "*(int *)(param_1 + 0x1a) == 0" (pointer_expression "*(int *)(param_1 + 0x1a)" * (cast_expression "(int *)(param_1 + 0x1a)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x1a)" ( (binary_expression "param_1 + 0x1a" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n    param_1[0xd] = 9;\n  }" { (expression_statement "param_1[0xd] = 9;" (assignment_expression "param_1[0xd] = 9" (subscript_expression "param_1[0xd]" identifier [ number_literal ]) = number_literal) ;) })) (expression_statement "FUN_0001afb0(param_2,0x2014b50);" (call_expression "FUN_0001afb0(param_2,0x2014b50)" identifier (argument_list "(param_2,0x2014b50)" ( identifier , number_literal ))) ;) (expression_statement "uVar1 = *param_1;" (assignment_expression "uVar1 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (expression_statement "*(char *)(param_2 + 4) = (char)uVar1;" (assignment_expression "*(char *)(param_2 + 4) = (char)uVar1" (pointer_expression "*(char *)(param_2 + 4)" * (cast_expression "(char *)(param_2 + 4)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 4)" ( (binary_expression "param_2 + 4" identifier + number_literal) )))) = (cast_expression "(char)uVar1" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (expression_statement "*(char *)(param_2 + 5) = (char)((ushort)uVar1 >> 8);" (assignment_expression "*(char *)(param_2 + 5) = (char)((ushort)uVar1 >> 8)" (pointer_expression "*(char *)(param_2 + 5)" * (cast_expression "(char *)(param_2 + 5)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 5)" ( (binary_expression "param_2 + 5" identifier + number_literal) )))) = (cast_expression "(char)((ushort)uVar1 >> 8)" ( (type_descriptor "char" primitive_type) ) (parenthesized_expression "((ushort)uVar1 >> 8)" ( (binary_expression "(ushort)uVar1 >> 8" (cast_expression "(ushort)uVar1" ( (type_descriptor "ushort" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "uVar1 = param_1[1];" (assignment_expression "uVar1 = param_1[1]" identifier = (subscript_expression "param_1[1]" identifier [ number_literal ])) ;) (expression_statement "*(char *)(param_2 + 6) = (char)uVar1;" (assignment_expression "*(char *)(param_2 + 6) = (char)uVar1" (pointer_expression "*(char *)(param_2 + 6)" * (cast_expression "(char *)(param_2 + 6)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 6)" ( (binary_expression "param_2 + 6" identifier + number_literal) )))) = (cast_expression "(char)uVar1" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (expression_statement "*(char *)(param_2 + 7) = (char)((ushort)uVar1 >> 8);" (assignment_expression "*(char *)(param_2 + 7) = (char)((ushort)uVar1 >> 8)" (pointer_expression "*(char *)(param_2 + 7)" * (cast_expression "(char *)(param_2 + 7)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 7)" ( (binary_expression "param_2 + 7" identifier + number_literal) )))) = (cast_expression "(char)((ushort)uVar1 >> 8)" ( (type_descriptor "char" primitive_type) ) (parenthesized_expression "((ushort)uVar1 >> 8)" ( (binary_expression "(ushort)uVar1 >> 8" (cast_expression "(ushort)uVar1" ( (type_descriptor "ushort" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "uVar1 = param_1[2];" (assignment_expression "uVar1 = param_1[2]" identifier = (subscript_expression "param_1[2]" identifier [ number_literal ])) ;) (expression_statement "*(char *)(param_2 + 8) = (char)uVar1;" (assignment_expression "*(char *)(param_2 + 8) = (char)uVar1" (pointer_expression "*(char *)(param_2 + 8)" * (cast_expression "(char *)(param_2 + 8)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 8)" ( (binary_expression "param_2 + 8" identifier + number_literal) )))) = (cast_expression "(char)uVar1" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (expression_statement "*(char *)(param_2 + 9) = (char)((ushort)uVar1 >> 8);" (assignment_expression "*(char *)(param_2 + 9) = (char)((ushort)uVar1 >> 8)" (pointer_expression "*(char *)(param_2 + 9)" * (cast_expression "(char *)(param_2 + 9)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 9)" ( (binary_expression "param_2 + 9" identifier + number_literal) )))) = (cast_expression "(char)((ushort)uVar1 >> 8)" ( (type_descriptor "char" primitive_type) ) (parenthesized_expression "((ushort)uVar1 >> 8)" ( (binary_expression "(ushort)uVar1 >> 8" (cast_expression "(ushort)uVar1" ( (type_descriptor "ushort" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "uVar1 = param_1[3];" (assignment_expression "uVar1 = param_1[3]" identifier = (subscript_expression "param_1[3]" identifier [ number_literal ])) ;) (expression_statement "*(char *)(param_2 + 10) = (char)uVar1;" (assignment_expression "*(char *)(param_2 + 10) = (char)uVar1" (pointer_expression "*(char *)(param_2 + 10)" * (cast_expression "(char *)(param_2 + 10)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 10)" ( (binary_expression "param_2 + 10" identifier + number_literal) )))) = (cast_expression "(char)uVar1" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (expression_statement "*(char *)(param_2 + 0xb) = (char)((ushort)uVar1 >> 8);" (assignment_expression "*(char *)(param_2 + 0xb) = (char)((ushort)uVar1 >> 8)" (pointer_expression "*(char *)(param_2 + 0xb)" * (cast_expression "(char *)(param_2 + 0xb)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0xb)" ( (binary_expression "param_2 + 0xb" identifier + number_literal) )))) = (cast_expression "(char)((ushort)uVar1 >> 8)" ( (type_descriptor "char" primitive_type) ) (parenthesized_expression "((ushort)uVar1 >> 8)" ( (binary_expression "(ushort)uVar1 >> 8" (cast_expression "(ushort)uVar1" ( (type_descriptor "ushort" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "uVar1 = param_1[4];" (assignment_expression "uVar1 = param_1[4]" identifier = (subscript_expression "param_1[4]" identifier [ number_literal ])) ;) (expression_statement "*(char *)(param_2 + 0xc) = (char)uVar1;" (assignment_expression "*(char *)(param_2 + 0xc) = (char)uVar1" (pointer_expression "*(char *)(param_2 + 0xc)" * (cast_expression "(char *)(param_2 + 0xc)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0xc)" ( (binary_expression "param_2 + 0xc" identifier + number_literal) )))) = (cast_expression "(char)uVar1" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (expression_statement "*(char *)(param_2 + 0xd) = (char)((ushort)uVar1 >> 8);" (assignment_expression "*(char *)(param_2 + 0xd) = (char)((ushort)uVar1 >> 8)" (pointer_expression "*(char *)(param_2 + 0xd)" * (cast_expression "(char *)(param_2 + 0xd)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0xd)" ( (binary_expression "param_2 + 0xd" identifier + number_literal) )))) = (cast_expression "(char)((ushort)uVar1 >> 8)" ( (type_descriptor "char" primitive_type) ) (parenthesized_expression "((ushort)uVar1 >> 8)" ( (binary_expression "(ushort)uVar1 >> 8" (cast_expression "(ushort)uVar1" ( (type_descriptor "ushort" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "uVar1 = param_1[5];" (assignment_expression "uVar1 = param_1[5]" identifier = (subscript_expression "param_1[5]" identifier [ number_literal ])) ;) (expression_statement "*(char *)(param_2 + 0xe) = (char)uVar1;" (assignment_expression "*(char *)(param_2 + 0xe) = (char)uVar1" (pointer_expression "*(char *)(param_2 + 0xe)" * (cast_expression "(char *)(param_2 + 0xe)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0xe)" ( (binary_expression "param_2 + 0xe" identifier + number_literal) )))) = (cast_expression "(char)uVar1" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (expression_statement "*(char *)(param_2 + 0xf) = (char)((ushort)uVar1 >> 8);" (assignment_expression "*(char *)(param_2 + 0xf) = (char)((ushort)uVar1 >> 8)" (pointer_expression "*(char *)(param_2 + 0xf)" * (cast_expression "(char *)(param_2 + 0xf)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0xf)" ( (binary_expression "param_2 + 0xf" identifier + number_literal) )))) = (cast_expression "(char)((ushort)uVar1 >> 8)" ( (type_descriptor "char" primitive_type) ) (parenthesized_expression "((ushort)uVar1 >> 8)" ( (binary_expression "(ushort)uVar1 >> 8" (cast_expression "(ushort)uVar1" ( (type_descriptor "ushort" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "FUN_0001afb0(param_2 + 0x10,*(undefined4 *)(param_1 + 6));" (call_expression "FUN_0001afb0(param_2 + 0x10,*(undefined4 *)(param_1 + 6))" identifier (argument_list "(param_2 + 0x10,*(undefined4 *)(param_1 + 6))" ( (binary_expression "param_2 + 0x10" identifier + number_literal) , (pointer_expression "*(undefined4 *)(param_1 + 6)" * (cast_expression "(undefined4 *)(param_1 + 6)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 6)" ( (binary_expression "param_1 + 6" identifier + number_literal) )))) ))) ;) (expression_statement "FUN_0001afb0(param_2 + 0x14,*(undefined4 *)(param_1 + 8));" (call_expression "FUN_0001afb0(param_2 + 0x14,*(undefined4 *)(param_1 + 8))" identifier (argument_list "(param_2 + 0x14,*(undefined4 *)(param_1 + 8))" ( (binary_expression "param_2 + 0x14" identifier + number_literal) , (pointer_expression "*(undefined4 *)(param_1 + 8)" * (cast_expression "(undefined4 *)(param_1 + 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) )))) ))) ;) (expression_statement "FUN_0001afb0(param_2 + 0x18,*(undefined4 *)(param_1 + 10));" (call_expression "FUN_0001afb0(param_2 + 0x18,*(undefined4 *)(param_1 + 10))" identifier (argument_list "(param_2 + 0x18,*(undefined4 *)(param_1 + 10))" ( (binary_expression "param_2 + 0x18" identifier + number_literal) , (pointer_expression "*(undefined4 *)(param_1 + 10)" * (cast_expression "(undefined4 *)(param_1 + 10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 10)" ( (binary_expression "param_1 + 10" identifier + number_literal) )))) ))) ;) (expression_statement "uVar1 = param_1[0xc];" (assignment_expression "uVar1 = param_1[0xc]" identifier = (subscript_expression "param_1[0xc]" identifier [ number_literal ])) ;) (expression_statement "*(char *)(param_2 + 0x1c) = (char)uVar1;" (assignment_expression "*(char *)(param_2 + 0x1c) = (char)uVar1" (pointer_expression "*(char *)(param_2 + 0x1c)" * (cast_expression "(char *)(param_2 + 0x1c)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x1c)" ( (binary_expression "param_2 + 0x1c" identifier + number_literal) )))) = (cast_expression "(char)uVar1" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (expression_statement "*(char *)(param_2 + 0x1d) = (char)((ushort)uVar1 >> 8);" (assignment_expression "*(char *)(param_2 + 0x1d) = (char)((ushort)uVar1 >> 8)" (pointer_expression "*(char *)(param_2 + 0x1d)" * (cast_expression "(char *)(param_2 + 0x1d)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x1d)" ( (binary_expression "param_2 + 0x1d" identifier + number_literal) )))) = (cast_expression "(char)((ushort)uVar1 >> 8)" ( (type_descriptor "char" primitive_type) ) (parenthesized_expression "((ushort)uVar1 >> 8)" ( (binary_expression "(ushort)uVar1 >> 8" (cast_expression "(ushort)uVar1" ( (type_descriptor "ushort" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "uVar1 = param_1[0xd];" (assignment_expression "uVar1 = param_1[0xd]" identifier = (subscript_expression "param_1[0xd]" identifier [ number_literal ])) ;) (expression_statement "*(char *)(param_2 + 0x1e) = (char)uVar1;" (assignment_expression "*(char *)(param_2 + 0x1e) = (char)uVar1" (pointer_expression "*(char *)(param_2 + 0x1e)" * (cast_expression "(char *)(param_2 + 0x1e)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x1e)" ( (binary_expression "param_2 + 0x1e" identifier + number_literal) )))) = (cast_expression "(char)uVar1" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (expression_statement "*(char *)(param_2 + 0x1f) = (char)((ushort)uVar1 >> 8);" (assignment_expression "*(char *)(param_2 + 0x1f) = (char)((ushort)uVar1 >> 8)" (pointer_expression "*(char *)(param_2 + 0x1f)" * (cast_expression "(char *)(param_2 + 0x1f)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x1f)" ( (binary_expression "param_2 + 0x1f" identifier + number_literal) )))) = (cast_expression "(char)((ushort)uVar1 >> 8)" ( (type_descriptor "char" primitive_type) ) (parenthesized_expression "((ushort)uVar1 >> 8)" ( (binary_expression "(ushort)uVar1 >> 8" (cast_expression "(ushort)uVar1" ( (type_descriptor "ushort" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "uVar1 = param_1[0xe];" (assignment_expression "uVar1 = param_1[0xe]" identifier = (subscript_expression "param_1[0xe]" identifier [ number_literal ])) ;) (expression_statement "*(char *)(param_2 + 0x20) = (char)uVar1;" (assignment_expression "*(char *)(param_2 + 0x20) = (char)uVar1" (pointer_expression "*(char *)(param_2 + 0x20)" * (cast_expression "(char *)(param_2 + 0x20)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x20)" ( (binary_expression "param_2 + 0x20" identifier + number_literal) )))) = (cast_expression "(char)uVar1" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (expression_statement "*(char *)(param_2 + 0x21) = (char)((ushort)uVar1 >> 8);" (assignment_expression "*(char *)(param_2 + 0x21) = (char)((ushort)uVar1 >> 8)" (pointer_expression "*(char *)(param_2 + 0x21)" * (cast_expression "(char *)(param_2 + 0x21)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x21)" ( (binary_expression "param_2 + 0x21" identifier + number_literal) )))) = (cast_expression "(char)((ushort)uVar1 >> 8)" ( (type_descriptor "char" primitive_type) ) (parenthesized_expression "((ushort)uVar1 >> 8)" ( (binary_expression "(ushort)uVar1 >> 8" (cast_expression "(ushort)uVar1" ( (type_descriptor "ushort" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "uVar1 = param_1[0xf];" (assignment_expression "uVar1 = param_1[0xf]" identifier = (subscript_expression "param_1[0xf]" identifier [ number_literal ])) ;) (expression_statement "*(char *)(param_2 + 0x22) = (char)uVar1;" (assignment_expression "*(char *)(param_2 + 0x22) = (char)uVar1" (pointer_expression "*(char *)(param_2 + 0x22)" * (cast_expression "(char *)(param_2 + 0x22)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x22)" ( (binary_expression "param_2 + 0x22" identifier + number_literal) )))) = (cast_expression "(char)uVar1" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (expression_statement "*(char *)(param_2 + 0x23) = (char)((ushort)uVar1 >> 8);" (assignment_expression "*(char *)(param_2 + 0x23) = (char)((ushort)uVar1 >> 8)" (pointer_expression "*(char *)(param_2 + 0x23)" * (cast_expression "(char *)(param_2 + 0x23)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x23)" ( (binary_expression "param_2 + 0x23" identifier + number_literal) )))) = (cast_expression "(char)((ushort)uVar1 >> 8)" ( (type_descriptor "char" primitive_type) ) (parenthesized_expression "((ushort)uVar1 >> 8)" ( (binary_expression "(ushort)uVar1 >> 8" (cast_expression "(ushort)uVar1" ( (type_descriptor "ushort" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "uVar1 = param_1[0x10];" (assignment_expression "uVar1 = param_1[0x10]" identifier = (subscript_expression "param_1[0x10]" identifier [ number_literal ])) ;) (expression_statement "*(char *)(param_2 + 0x24) = (char)uVar1;" (assignment_expression "*(char *)(param_2 + 0x24) = (char)uVar1" (pointer_expression "*(char *)(param_2 + 0x24)" * (cast_expression "(char *)(param_2 + 0x24)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x24)" ( (binary_expression "param_2 + 0x24" identifier + number_literal) )))) = (cast_expression "(char)uVar1" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (expression_statement "*(char *)(param_2 + 0x25) = (char)((ushort)uVar1 >> 8);" (assignment_expression "*(char *)(param_2 + 0x25) = (char)((ushort)uVar1 >> 8)" (pointer_expression "*(char *)(param_2 + 0x25)" * (cast_expression "(char *)(param_2 + 0x25)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x25)" ( (binary_expression "param_2 + 0x25" identifier + number_literal) )))) = (cast_expression "(char)((ushort)uVar1 >> 8)" ( (type_descriptor "char" primitive_type) ) (parenthesized_expression "((ushort)uVar1 >> 8)" ( (binary_expression "(ushort)uVar1 >> 8" (cast_expression "(ushort)uVar1" ( (type_descriptor "ushort" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "FUN_0001afb0(param_2 + 0x26,*(undefined4 *)(param_1 + 0x12));" (call_expression "FUN_0001afb0(param_2 + 0x26,*(undefined4 *)(param_1 + 0x12))" identifier (argument_list "(param_2 + 0x26,*(undefined4 *)(param_1 + 0x12))" ( (binary_expression "param_2 + 0x26" identifier + number_literal) , (pointer_expression "*(undefined4 *)(param_1 + 0x12)" * (cast_expression "(undefined4 *)(param_1 + 0x12)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x12)" ( (binary_expression "param_1 + 0x12" identifier + number_literal) )))) ))) ;) (expression_statement "FUN_0001afb0(param_2 + 0x2a,*(undefined4 *)(param_1 + 0x14));" (call_expression "FUN_0001afb0(param_2 + 0x2a,*(undefined4 *)(param_1 + 0x14))" identifier (argument_list "(param_2 + 0x2a,*(undefined4 *)(param_1 + 0x14))" ( (binary_expression "param_2 + 0x2a" identifier + number_literal) , (pointer_expression "*(undefined4 *)(param_1 + 0x14)" * (cast_expression "(undefined4 *)(param_1 + 0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x14)" ( (binary_expression "param_1 + 0x14" identifier + number_literal) )))) ))) ;) (expression_statement "(*(code *)PTR_memcpy_0018fed4)(param_2 + 0x2e,*(undefined4 *)(param_1 + 0x16),param_1[0xc]);" (call_expression "(*(code *)PTR_memcpy_0018fed4)(param_2 + 0x2e,*(undefined4 *)(param_1 + 0x16),param_1[0xc])" (parenthesized_expression "(*(code *)PTR_memcpy_0018fed4)" ( (pointer_expression "*(code *)PTR_memcpy_0018fed4" * (cast_expression "(code *)PTR_memcpy_0018fed4" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(param_2 + 0x2e,*(undefined4 *)(param_1 + 0x16),param_1[0xc])" ( (binary_expression "param_2 + 0x2e" identifier + number_literal) , (pointer_expression "*(undefined4 *)(param_1 + 0x16)" * (cast_expression "(undefined4 *)(param_1 + 0x16)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x16)" ( (binary_expression "param_1 + 0x16" identifier + number_literal) )))) , (subscript_expression "param_1[0xc]" identifier [ number_literal ]) ))) ;) (expression_statement "puVar4 = (undefined1 *)(param_2 + 0x2e + (uint)(ushort)param_1[0xc]);" (assignment_expression "puVar4 = (undefined1 *)(param_2 + 0x2e + (uint)(ushort)param_1[0xc])" identifier = (cast_expression "(undefined1 *)(param_2 + 0x2e + (uint)(ushort)param_1[0xc])" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x2e + (uint)(ushort)param_1[0xc])" ( (binary_expression "param_2 + 0x2e + (uint)(ushort)param_1[0xc]" (binary_expression "param_2 + 0x2e" identifier + number_literal) + (cast_expression "(uint)(ushort)param_1[0xc]" ( (type_descriptor "uint" type_identifier) ) (cast_expression "(ushort)param_1[0xc]" ( (type_descriptor "ushort" type_identifier) ) (subscript_expression "param_1[0xc]" identifier [ number_literal ])))) )))) ;) (if_statement "if (*(int *)(param_1 + 0x1a) == 0) {\n    *puVar4 = 0x55;\n    puVar4[1] = 0x54;\n    puVar4[2] = 5;\n    puVar4[3] = 0;\n    puVar4[4] = 1;\n    FUN_0001afb0(puVar4 + 5,*(undefined4 *)(param_1 + 0x18));\n    puVar4 = puVar4 + 9;\n  }\n  else {\n    uVar2 = param_1[0xd];\n    uVar3 = param_1[0xe];\n    (*(code *)PTR_memcpy_0018fed4)(puVar4,*(int *)(param_1 + 0x1a),(uint)uVar2 + (uint)uVar3);\n    puVar4 = puVar4 + (uint)uVar2 + (uint)uVar3;\n  }" if (parenthesized_expression "(*(int *)(param_1 + 0x1a) == 0)" ( (binary_expression "*(int *)(param_1 + 0x1a) == 0" (pointer_expression "*(int *)(param_1 + 0x1a)" * (cast_expression "(int *)(param_1 + 0x1a)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x1a)" ( (binary_expression "param_1 + 0x1a" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n    *puVar4 = 0x55;\n    puVar4[1] = 0x54;\n    puVar4[2] = 5;\n    puVar4[3] = 0;\n    puVar4[4] = 1;\n    FUN_0001afb0(puVar4 + 5,*(undefined4 *)(param_1 + 0x18));\n    puVar4 = puVar4 + 9;\n  }" { (expression_statement "*puVar4 = 0x55;" (assignment_expression "*puVar4 = 0x55" (pointer_expression "*puVar4" * identifier) = number_literal) ;) (expression_statement "puVar4[1] = 0x54;" (assignment_expression "puVar4[1] = 0x54" (subscript_expression "puVar4[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar4[2] = 5;" (assignment_expression "puVar4[2] = 5" (subscript_expression "puVar4[2]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar4[3] = 0;" (assignment_expression "puVar4[3] = 0" (subscript_expression "puVar4[3]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar4[4] = 1;" (assignment_expression "puVar4[4] = 1" (subscript_expression "puVar4[4]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "FUN_0001afb0(puVar4 + 5,*(undefined4 *)(param_1 + 0x18));" (call_expression "FUN_0001afb0(puVar4 + 5,*(undefined4 *)(param_1 + 0x18))" identifier (argument_list "(puVar4 + 5,*(undefined4 *)(param_1 + 0x18))" ( (binary_expression "puVar4 + 5" identifier + number_literal) , (pointer_expression "*(undefined4 *)(param_1 + 0x18)" * (cast_expression "(undefined4 *)(param_1 + 0x18)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x18)" ( (binary_expression "param_1 + 0x18" identifier + number_literal) )))) ))) ;) (expression_statement "puVar4 = puVar4 + 9;" (assignment_expression "puVar4 = puVar4 + 9" identifier = (binary_expression "puVar4 + 9" identifier + number_literal)) ;) }) (else_clause "else {\n    uVar2 = param_1[0xd];\n    uVar3 = param_1[0xe];\n    (*(code *)PTR_memcpy_0018fed4)(puVar4,*(int *)(param_1 + 0x1a),(uint)uVar2 + (uint)uVar3);\n    puVar4 = puVar4 + (uint)uVar2 + (uint)uVar3;\n  }" else (compound_statement "{\n    uVar2 = param_1[0xd];\n    uVar3 = param_1[0xe];\n    (*(code *)PTR_memcpy_0018fed4)(puVar4,*(int *)(param_1 + 0x1a),(uint)uVar2 + (uint)uVar3);\n    puVar4 = puVar4 + (uint)uVar2 + (uint)uVar3;\n  }" { (expression_statement "uVar2 = param_1[0xd];" (assignment_expression "uVar2 = param_1[0xd]" identifier = (subscript_expression "param_1[0xd]" identifier [ number_literal ])) ;) (expression_statement "uVar3 = param_1[0xe];" (assignment_expression "uVar3 = param_1[0xe]" identifier = (subscript_expression "param_1[0xe]" identifier [ number_literal ])) ;) (expression_statement "(*(code *)PTR_memcpy_0018fed4)(puVar4,*(int *)(param_1 + 0x1a),(uint)uVar2 + (uint)uVar3);" (call_expression "(*(code *)PTR_memcpy_0018fed4)(puVar4,*(int *)(param_1 + 0x1a),(uint)uVar2 + (uint)uVar3)" (parenthesized_expression "(*(code *)PTR_memcpy_0018fed4)" ( (pointer_expression "*(code *)PTR_memcpy_0018fed4" * (cast_expression "(code *)PTR_memcpy_0018fed4" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(puVar4,*(int *)(param_1 + 0x1a),(uint)uVar2 + (uint)uVar3)" ( identifier , (pointer_expression "*(int *)(param_1 + 0x1a)" * (cast_expression "(int *)(param_1 + 0x1a)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x1a)" ( (binary_expression "param_1 + 0x1a" identifier + number_literal) )))) , (binary_expression "(uint)uVar2 + (uint)uVar3" (cast_expression "(uint)uVar2" ( (type_descriptor "uint" type_identifier) ) identifier) + (cast_expression "(uint)uVar3" ( (type_descriptor "uint" type_identifier) ) identifier)) ))) ;) (expression_statement "puVar4 = puVar4 + (uint)uVar2 + (uint)uVar3;" (assignment_expression "puVar4 = puVar4 + (uint)uVar2 + (uint)uVar3" identifier = (binary_expression "puVar4 + (uint)uVar2 + (uint)uVar3" (binary_expression "puVar4 + (uint)uVar2" identifier + (cast_expression "(uint)uVar2" ( (type_descriptor "uint" type_identifier) ) identifier)) + (cast_expression "(uint)uVar3" ( (type_descriptor "uint" type_identifier) ) identifier))) ;) }))) (return_statement "return (int)puVar4 - param_2;" return (binary_expression "(int)puVar4 - param_2" (cast_expression "(int)puVar4" ( (type_descriptor "int" primitive_type) ) identifier) - identifier) ;) })))
(translation_unit "int zipfileSerializeCDS(ZipfileEntry *pEntry,u8 *aBuf)\n\n{\n  u16 uVar1;\n  uint uVar2;\n  int iVar3;\n  u8 *puVar4;\n  \n  if (pEntry->aExtra == (u8 *)0x0) {\n    (pEntry->cds).nExtra = 9;\n  }\n  zipfilePutU32(aBuf,0x2014b50);\n  uVar1 = (pEntry->cds).iVersionMadeBy;\n  aBuf[4] = (u8)uVar1;\n  aBuf[5] = (u8)(uVar1 >> 8);\n  uVar1 = (pEntry->cds).iVersionExtract;\n  aBuf[6] = (u8)uVar1;\n  aBuf[7] = (u8)(uVar1 >> 8);\n  uVar1 = (pEntry->cds).flags;\n  aBuf[8] = (u8)uVar1;\n  aBuf[9] = (u8)(uVar1 >> 8);\n  uVar1 = (pEntry->cds).iCompression;\n  aBuf[10] = (u8)uVar1;\n  aBuf[0xb] = (u8)(uVar1 >> 8);\n  uVar1 = (pEntry->cds).mTime;\n  aBuf[0xc] = (u8)uVar1;\n  aBuf[0xd] = (u8)(uVar1 >> 8);\n  uVar1 = (pEntry->cds).mDate;\n  aBuf[0xe] = (u8)uVar1;\n  aBuf[0xf] = (u8)(uVar1 >> 8);\n  zipfilePutU32(aBuf + 0x10,(pEntry->cds).crc32);\n  zipfilePutU32(aBuf + 0x14,(pEntry->cds).szCompressed);\n  zipfilePutU32(aBuf + 0x18,(pEntry->cds).szUncompressed);\n  uVar1 = (pEntry->cds).nFile;\n  aBuf[0x1c] = (u8)uVar1;\n  aBuf[0x1d] = (u8)(uVar1 >> 8);\n  uVar1 = (pEntry->cds).nExtra;\n  aBuf[0x1e] = (u8)uVar1;\n  aBuf[0x1f] = (u8)(uVar1 >> 8);\n  uVar1 = (pEntry->cds).nComment;\n  aBuf[0x20] = (u8)uVar1;\n  aBuf[0x21] = (u8)(uVar1 >> 8);\n  uVar1 = (pEntry->cds).iDiskStart;\n  aBuf[0x22] = (u8)uVar1;\n  aBuf[0x23] = (u8)(uVar1 >> 8);\n  uVar1 = (pEntry->cds).iInternalAttr;\n  aBuf[0x24] = (u8)uVar1;\n  aBuf[0x25] = (u8)(uVar1 >> 8);\n  zipfilePutU32(aBuf + 0x26,(pEntry->cds).iExternalAttr);\n  zipfilePutU32(aBuf + 0x2a,(pEntry->cds).iOffset);\n  (*(code *)PTR_memcpy_0018fed4)(aBuf + 0x2e,(pEntry->cds).zFile,(pEntry->cds).nFile);\n  uVar2 = (uint)(pEntry->cds).nFile;\n  puVar4 = aBuf + 0x2e + uVar2;\n  if (pEntry->aExtra == (u8 *)0x0) {\n    builtin_memcpy(aBuf + uVar2 + 0x2e,"UT\x05",4);\n    puVar4[4] = '\x01';\n    zipfilePutU32(puVar4 + 5,pEntry->mUnixTime);\n    puVar4 = puVar4 + 9;\n  }\n  else {\n    iVar3 = (uint)(pEntry->cds).nExtra + (uint)(pEntry->cds).nComment;\n    (*(code *)PTR_memcpy_0018fed4)(puVar4,pEntry->aExtra,iVar3);\n    puVar4 = puVar4 + iVar3;\n  }\n  return (int)puVar4 - (int)aBuf;\n}\n\n" (function_definition "int zipfileSerializeCDS(ZipfileEntry *pEntry,u8 *aBuf)\n\n{\n  u16 uVar1;\n  uint uVar2;\n  int iVar3;\n  u8 *puVar4;\n  \n  if (pEntry->aExtra == (u8 *)0x0) {\n    (pEntry->cds).nExtra = 9;\n  }\n  zipfilePutU32(aBuf,0x2014b50);\n  uVar1 = (pEntry->cds).iVersionMadeBy;\n  aBuf[4] = (u8)uVar1;\n  aBuf[5] = (u8)(uVar1 >> 8);\n  uVar1 = (pEntry->cds).iVersionExtract;\n  aBuf[6] = (u8)uVar1;\n  aBuf[7] = (u8)(uVar1 >> 8);\n  uVar1 = (pEntry->cds).flags;\n  aBuf[8] = (u8)uVar1;\n  aBuf[9] = (u8)(uVar1 >> 8);\n  uVar1 = (pEntry->cds).iCompression;\n  aBuf[10] = (u8)uVar1;\n  aBuf[0xb] = (u8)(uVar1 >> 8);\n  uVar1 = (pEntry->cds).mTime;\n  aBuf[0xc] = (u8)uVar1;\n  aBuf[0xd] = (u8)(uVar1 >> 8);\n  uVar1 = (pEntry->cds).mDate;\n  aBuf[0xe] = (u8)uVar1;\n  aBuf[0xf] = (u8)(uVar1 >> 8);\n  zipfilePutU32(aBuf + 0x10,(pEntry->cds).crc32);\n  zipfilePutU32(aBuf + 0x14,(pEntry->cds).szCompressed);\n  zipfilePutU32(aBuf + 0x18,(pEntry->cds).szUncompressed);\n  uVar1 = (pEntry->cds).nFile;\n  aBuf[0x1c] = (u8)uVar1;\n  aBuf[0x1d] = (u8)(uVar1 >> 8);\n  uVar1 = (pEntry->cds).nExtra;\n  aBuf[0x1e] = (u8)uVar1;\n  aBuf[0x1f] = (u8)(uVar1 >> 8);\n  uVar1 = (pEntry->cds).nComment;\n  aBuf[0x20] = (u8)uVar1;\n  aBuf[0x21] = (u8)(uVar1 >> 8);\n  uVar1 = (pEntry->cds).iDiskStart;\n  aBuf[0x22] = (u8)uVar1;\n  aBuf[0x23] = (u8)(uVar1 >> 8);\n  uVar1 = (pEntry->cds).iInternalAttr;\n  aBuf[0x24] = (u8)uVar1;\n  aBuf[0x25] = (u8)(uVar1 >> 8);\n  zipfilePutU32(aBuf + 0x26,(pEntry->cds).iExternalAttr);\n  zipfilePutU32(aBuf + 0x2a,(pEntry->cds).iOffset);\n  (*(code *)PTR_memcpy_0018fed4)(aBuf + 0x2e,(pEntry->cds).zFile,(pEntry->cds).nFile);\n  uVar2 = (uint)(pEntry->cds).nFile;\n  puVar4 = aBuf + 0x2e + uVar2;\n  if (pEntry->aExtra == (u8 *)0x0) {\n    builtin_memcpy(aBuf + uVar2 + 0x2e,"UT\x05",4);\n    puVar4[4] = '\x01';\n    zipfilePutU32(puVar4 + 5,pEntry->mUnixTime);\n    puVar4 = puVar4 + 9;\n  }\n  else {\n    iVar3 = (uint)(pEntry->cds).nExtra + (uint)(pEntry->cds).nComment;\n    (*(code *)PTR_memcpy_0018fed4)(puVar4,pEntry->aExtra,iVar3);\n    puVar4 = puVar4 + iVar3;\n  }\n  return (int)puVar4 - (int)aBuf;\n}" primitive_type (function_declarator "zipfileSerializeCDS(ZipfileEntry *pEntry,u8 *aBuf)" identifier (parameter_list "(ZipfileEntry *pEntry,u8 *aBuf)" ( (parameter_declaration "ZipfileEntry *pEntry" type_identifier (pointer_declarator "*pEntry" * identifier)) , (parameter_declaration "u8 *aBuf" type_identifier (pointer_declarator "*aBuf" * identifier)) ))) (compound_statement "{\n  u16 uVar1;\n  uint uVar2;\n  int iVar3;\n  u8 *puVar4;\n  \n  if (pEntry->aExtra == (u8 *)0x0) {\n    (pEntry->cds).nExtra = 9;\n  }\n  zipfilePutU32(aBuf,0x2014b50);\n  uVar1 = (pEntry->cds).iVersionMadeBy;\n  aBuf[4] = (u8)uVar1;\n  aBuf[5] = (u8)(uVar1 >> 8);\n  uVar1 = (pEntry->cds).iVersionExtract;\n  aBuf[6] = (u8)uVar1;\n  aBuf[7] = (u8)(uVar1 >> 8);\n  uVar1 = (pEntry->cds).flags;\n  aBuf[8] = (u8)uVar1;\n  aBuf[9] = (u8)(uVar1 >> 8);\n  uVar1 = (pEntry->cds).iCompression;\n  aBuf[10] = (u8)uVar1;\n  aBuf[0xb] = (u8)(uVar1 >> 8);\n  uVar1 = (pEntry->cds).mTime;\n  aBuf[0xc] = (u8)uVar1;\n  aBuf[0xd] = (u8)(uVar1 >> 8);\n  uVar1 = (pEntry->cds).mDate;\n  aBuf[0xe] = (u8)uVar1;\n  aBuf[0xf] = (u8)(uVar1 >> 8);\n  zipfilePutU32(aBuf + 0x10,(pEntry->cds).crc32);\n  zipfilePutU32(aBuf + 0x14,(pEntry->cds).szCompressed);\n  zipfilePutU32(aBuf + 0x18,(pEntry->cds).szUncompressed);\n  uVar1 = (pEntry->cds).nFile;\n  aBuf[0x1c] = (u8)uVar1;\n  aBuf[0x1d] = (u8)(uVar1 >> 8);\n  uVar1 = (pEntry->cds).nExtra;\n  aBuf[0x1e] = (u8)uVar1;\n  aBuf[0x1f] = (u8)(uVar1 >> 8);\n  uVar1 = (pEntry->cds).nComment;\n  aBuf[0x20] = (u8)uVar1;\n  aBuf[0x21] = (u8)(uVar1 >> 8);\n  uVar1 = (pEntry->cds).iDiskStart;\n  aBuf[0x22] = (u8)uVar1;\n  aBuf[0x23] = (u8)(uVar1 >> 8);\n  uVar1 = (pEntry->cds).iInternalAttr;\n  aBuf[0x24] = (u8)uVar1;\n  aBuf[0x25] = (u8)(uVar1 >> 8);\n  zipfilePutU32(aBuf + 0x26,(pEntry->cds).iExternalAttr);\n  zipfilePutU32(aBuf + 0x2a,(pEntry->cds).iOffset);\n  (*(code *)PTR_memcpy_0018fed4)(aBuf + 0x2e,(pEntry->cds).zFile,(pEntry->cds).nFile);\n  uVar2 = (uint)(pEntry->cds).nFile;\n  puVar4 = aBuf + 0x2e + uVar2;\n  if (pEntry->aExtra == (u8 *)0x0) {\n    builtin_memcpy(aBuf + uVar2 + 0x2e,"UT\x05",4);\n    puVar4[4] = '\x01';\n    zipfilePutU32(puVar4 + 5,pEntry->mUnixTime);\n    puVar4 = puVar4 + 9;\n  }\n  else {\n    iVar3 = (uint)(pEntry->cds).nExtra + (uint)(pEntry->cds).nComment;\n    (*(code *)PTR_memcpy_0018fed4)(puVar4,pEntry->aExtra,iVar3);\n    puVar4 = puVar4 + iVar3;\n  }\n  return (int)puVar4 - (int)aBuf;\n}" { (declaration "u16 uVar1;" type_identifier identifier ;) (declaration "uint uVar2;" type_identifier identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "u8 *puVar4;" type_identifier (pointer_declarator "*puVar4" * identifier) ;) (if_statement "if (pEntry->aExtra == (u8 *)0x0) {\n    (pEntry->cds).nExtra = 9;\n  }" if (parenthesized_expression "(pEntry->aExtra == (u8 *)0x0)" ( (binary_expression "pEntry->aExtra == (u8 *)0x0" (field_expression "pEntry->aExtra" identifier -> field_identifier) == (cast_expression "(u8 *)0x0" ( (type_descriptor "u8 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    (pEntry->cds).nExtra = 9;\n  }" { (expression_statement "(pEntry->cds).nExtra = 9;" (assignment_expression "(pEntry->cds).nExtra = 9" (field_expression "(pEntry->cds).nExtra" (parenthesized_expression "(pEntry->cds)" ( (field_expression "pEntry->cds" identifier -> field_identifier) )) . field_identifier) = number_literal) ;) })) (expression_statement "zipfilePutU32(aBuf,0x2014b50);" (call_expression "zipfilePutU32(aBuf,0x2014b50)" identifier (argument_list "(aBuf,0x2014b50)" ( identifier , number_literal ))) ;) (expression_statement "uVar1 = (pEntry->cds).iVersionMadeBy;" (assignment_expression "uVar1 = (pEntry->cds).iVersionMadeBy" identifier = (field_expression "(pEntry->cds).iVersionMadeBy" (parenthesized_expression "(pEntry->cds)" ( (field_expression "pEntry->cds" identifier -> field_identifier) )) . field_identifier)) ;) (expression_statement "aBuf[4] = (u8)uVar1;" (assignment_expression "aBuf[4] = (u8)uVar1" (subscript_expression "aBuf[4]" identifier [ number_literal ]) = (cast_expression "(u8)uVar1" ( (type_descriptor "u8" type_identifier) ) identifier)) ;) (expression_statement "aBuf[5] = (u8)(uVar1 >> 8);" (assignment_expression "aBuf[5] = (u8)(uVar1 >> 8)" (subscript_expression "aBuf[5]" identifier [ number_literal ]) = (call_expression "(u8)(uVar1 >> 8)" (parenthesized_expression "(u8)" ( identifier )) (argument_list "(uVar1 >> 8)" ( (binary_expression "uVar1 >> 8" identifier >> number_literal) )))) ;) (expression_statement "uVar1 = (pEntry->cds).iVersionExtract;" (assignment_expression "uVar1 = (pEntry->cds).iVersionExtract" identifier = (field_expression "(pEntry->cds).iVersionExtract" (parenthesized_expression "(pEntry->cds)" ( (field_expression "pEntry->cds" identifier -> field_identifier) )) . field_identifier)) ;) (expression_statement "aBuf[6] = (u8)uVar1;" (assignment_expression "aBuf[6] = (u8)uVar1" (subscript_expression "aBuf[6]" identifier [ number_literal ]) = (cast_expression "(u8)uVar1" ( (type_descriptor "u8" type_identifier) ) identifier)) ;) (expression_statement "aBuf[7] = (u8)(uVar1 >> 8);" (assignment_expression "aBuf[7] = (u8)(uVar1 >> 8)" (subscript_expression "aBuf[7]" identifier [ number_literal ]) = (call_expression "(u8)(uVar1 >> 8)" (parenthesized_expression "(u8)" ( identifier )) (argument_list "(uVar1 >> 8)" ( (binary_expression "uVar1 >> 8" identifier >> number_literal) )))) ;) (expression_statement "uVar1 = (pEntry->cds).flags;" (assignment_expression "uVar1 = (pEntry->cds).flags" identifier = (field_expression "(pEntry->cds).flags" (parenthesized_expression "(pEntry->cds)" ( (field_expression "pEntry->cds" identifier -> field_identifier) )) . field_identifier)) ;) (expression_statement "aBuf[8] = (u8)uVar1;" (assignment_expression "aBuf[8] = (u8)uVar1" (subscript_expression "aBuf[8]" identifier [ number_literal ]) = (cast_expression "(u8)uVar1" ( (type_descriptor "u8" type_identifier) ) identifier)) ;) (expression_statement "aBuf[9] = (u8)(uVar1 >> 8);" (assignment_expression "aBuf[9] = (u8)(uVar1 >> 8)" (subscript_expression "aBuf[9]" identifier [ number_literal ]) = (call_expression "(u8)(uVar1 >> 8)" (parenthesized_expression "(u8)" ( identifier )) (argument_list "(uVar1 >> 8)" ( (binary_expression "uVar1 >> 8" identifier >> number_literal) )))) ;) (expression_statement "uVar1 = (pEntry->cds).iCompression;" (assignment_expression "uVar1 = (pEntry->cds).iCompression" identifier = (field_expression "(pEntry->cds).iCompression" (parenthesized_expression "(pEntry->cds)" ( (field_expression "pEntry->cds" identifier -> field_identifier) )) . field_identifier)) ;) (expression_statement "aBuf[10] = (u8)uVar1;" (assignment_expression "aBuf[10] = (u8)uVar1" (subscript_expression "aBuf[10]" identifier [ number_literal ]) = (cast_expression "(u8)uVar1" ( (type_descriptor "u8" type_identifier) ) identifier)) ;) (expression_statement "aBuf[0xb] = (u8)(uVar1 >> 8);" (assignment_expression "aBuf[0xb] = (u8)(uVar1 >> 8)" (subscript_expression "aBuf[0xb]" identifier [ number_literal ]) = (call_expression "(u8)(uVar1 >> 8)" (parenthesized_expression "(u8)" ( identifier )) (argument_list "(uVar1 >> 8)" ( (binary_expression "uVar1 >> 8" identifier >> number_literal) )))) ;) (expression_statement "uVar1 = (pEntry->cds).mTime;" (assignment_expression "uVar1 = (pEntry->cds).mTime" identifier = (field_expression "(pEntry->cds).mTime" (parenthesized_expression "(pEntry->cds)" ( (field_expression "pEntry->cds" identifier -> field_identifier) )) . field_identifier)) ;) (expression_statement "aBuf[0xc] = (u8)uVar1;" (assignment_expression "aBuf[0xc] = (u8)uVar1" (subscript_expression "aBuf[0xc]" identifier [ number_literal ]) = (cast_expression "(u8)uVar1" ( (type_descriptor "u8" type_identifier) ) identifier)) ;) (expression_statement "aBuf[0xd] = (u8)(uVar1 >> 8);" (assignment_expression "aBuf[0xd] = (u8)(uVar1 >> 8)" (subscript_expression "aBuf[0xd]" identifier [ number_literal ]) = (call_expression "(u8)(uVar1 >> 8)" (parenthesized_expression "(u8)" ( identifier )) (argument_list "(uVar1 >> 8)" ( (binary_expression "uVar1 >> 8" identifier >> number_literal) )))) ;) (expression_statement "uVar1 = (pEntry->cds).mDate;" (assignment_expression "uVar1 = (pEntry->cds).mDate" identifier = (field_expression "(pEntry->cds).mDate" (parenthesized_expression "(pEntry->cds)" ( (field_expression "pEntry->cds" identifier -> field_identifier) )) . field_identifier)) ;) (expression_statement "aBuf[0xe] = (u8)uVar1;" (assignment_expression "aBuf[0xe] = (u8)uVar1" (subscript_expression "aBuf[0xe]" identifier [ number_literal ]) = (cast_expression "(u8)uVar1" ( (type_descriptor "u8" type_identifier) ) identifier)) ;) (expression_statement "aBuf[0xf] = (u8)(uVar1 >> 8);" (assignment_expression "aBuf[0xf] = (u8)(uVar1 >> 8)" (subscript_expression "aBuf[0xf]" identifier [ number_literal ]) = (call_expression "(u8)(uVar1 >> 8)" (parenthesized_expression "(u8)" ( identifier )) (argument_list "(uVar1 >> 8)" ( (binary_expression "uVar1 >> 8" identifier >> number_literal) )))) ;) (expression_statement "zipfilePutU32(aBuf + 0x10,(pEntry->cds).crc32);" (call_expression "zipfilePutU32(aBuf + 0x10,(pEntry->cds).crc32)" identifier (argument_list "(aBuf + 0x10,(pEntry->cds).crc32)" ( (binary_expression "aBuf + 0x10" identifier + number_literal) , (field_expression "(pEntry->cds).crc32" (parenthesized_expression "(pEntry->cds)" ( (field_expression "pEntry->cds" identifier -> field_identifier) )) . field_identifier) ))) ;) (expression_statement "zipfilePutU32(aBuf + 0x14,(pEntry->cds).szCompressed);" (call_expression "zipfilePutU32(aBuf + 0x14,(pEntry->cds).szCompressed)" identifier (argument_list "(aBuf + 0x14,(pEntry->cds).szCompressed)" ( (binary_expression "aBuf + 0x14" identifier + number_literal) , (field_expression "(pEntry->cds).szCompressed" (parenthesized_expression "(pEntry->cds)" ( (field_expression "pEntry->cds" identifier -> field_identifier) )) . field_identifier) ))) ;) (expression_statement "zipfilePutU32(aBuf + 0x18,(pEntry->cds).szUncompressed);" (call_expression "zipfilePutU32(aBuf + 0x18,(pEntry->cds).szUncompressed)" identifier (argument_list "(aBuf + 0x18,(pEntry->cds).szUncompressed)" ( (binary_expression "aBuf + 0x18" identifier + number_literal) , (field_expression "(pEntry->cds).szUncompressed" (parenthesized_expression "(pEntry->cds)" ( (field_expression "pEntry->cds" identifier -> field_identifier) )) . field_identifier) ))) ;) (expression_statement "uVar1 = (pEntry->cds).nFile;" (assignment_expression "uVar1 = (pEntry->cds).nFile" identifier = (field_expression "(pEntry->cds).nFile" (parenthesized_expression "(pEntry->cds)" ( (field_expression "pEntry->cds" identifier -> field_identifier) )) . field_identifier)) ;) (expression_statement "aBuf[0x1c] = (u8)uVar1;" (assignment_expression "aBuf[0x1c] = (u8)uVar1" (subscript_expression "aBuf[0x1c]" identifier [ number_literal ]) = (cast_expression "(u8)uVar1" ( (type_descriptor "u8" type_identifier) ) identifier)) ;) (expression_statement "aBuf[0x1d] = (u8)(uVar1 >> 8);" (assignment_expression "aBuf[0x1d] = (u8)(uVar1 >> 8)" (subscript_expression "aBuf[0x1d]" identifier [ number_literal ]) = (call_expression "(u8)(uVar1 >> 8)" (parenthesized_expression "(u8)" ( identifier )) (argument_list "(uVar1 >> 8)" ( (binary_expression "uVar1 >> 8" identifier >> number_literal) )))) ;) (expression_statement "uVar1 = (pEntry->cds).nExtra;" (assignment_expression "uVar1 = (pEntry->cds).nExtra" identifier = (field_expression "(pEntry->cds).nExtra" (parenthesized_expression "(pEntry->cds)" ( (field_expression "pEntry->cds" identifier -> field_identifier) )) . field_identifier)) ;) (expression_statement "aBuf[0x1e] = (u8)uVar1;" (assignment_expression "aBuf[0x1e] = (u8)uVar1" (subscript_expression "aBuf[0x1e]" identifier [ number_literal ]) = (cast_expression "(u8)uVar1" ( (type_descriptor "u8" type_identifier) ) identifier)) ;) (expression_statement "aBuf[0x1f] = (u8)(uVar1 >> 8);" (assignment_expression "aBuf[0x1f] = (u8)(uVar1 >> 8)" (subscript_expression "aBuf[0x1f]" identifier [ number_literal ]) = (call_expression "(u8)(uVar1 >> 8)" (parenthesized_expression "(u8)" ( identifier )) (argument_list "(uVar1 >> 8)" ( (binary_expression "uVar1 >> 8" identifier >> number_literal) )))) ;) (expression_statement "uVar1 = (pEntry->cds).nComment;" (assignment_expression "uVar1 = (pEntry->cds).nComment" identifier = (field_expression "(pEntry->cds).nComment" (parenthesized_expression "(pEntry->cds)" ( (field_expression "pEntry->cds" identifier -> field_identifier) )) . field_identifier)) ;) (expression_statement "aBuf[0x20] = (u8)uVar1;" (assignment_expression "aBuf[0x20] = (u8)uVar1" (subscript_expression "aBuf[0x20]" identifier [ number_literal ]) = (cast_expression "(u8)uVar1" ( (type_descriptor "u8" type_identifier) ) identifier)) ;) (expression_statement "aBuf[0x21] = (u8)(uVar1 >> 8);" (assignment_expression "aBuf[0x21] = (u8)(uVar1 >> 8)" (subscript_expression "aBuf[0x21]" identifier [ number_literal ]) = (call_expression "(u8)(uVar1 >> 8)" (parenthesized_expression "(u8)" ( identifier )) (argument_list "(uVar1 >> 8)" ( (binary_expression "uVar1 >> 8" identifier >> number_literal) )))) ;) (expression_statement "uVar1 = (pEntry->cds).iDiskStart;" (assignment_expression "uVar1 = (pEntry->cds).iDiskStart" identifier = (field_expression "(pEntry->cds).iDiskStart" (parenthesized_expression "(pEntry->cds)" ( (field_expression "pEntry->cds" identifier -> field_identifier) )) . field_identifier)) ;) (expression_statement "aBuf[0x22] = (u8)uVar1;" (assignment_expression "aBuf[0x22] = (u8)uVar1" (subscript_expression "aBuf[0x22]" identifier [ number_literal ]) = (cast_expression "(u8)uVar1" ( (type_descriptor "u8" type_identifier) ) identifier)) ;) (expression_statement "aBuf[0x23] = (u8)(uVar1 >> 8);" (assignment_expression "aBuf[0x23] = (u8)(uVar1 >> 8)" (subscript_expression "aBuf[0x23]" identifier [ number_literal ]) = (call_expression "(u8)(uVar1 >> 8)" (parenthesized_expression "(u8)" ( identifier )) (argument_list "(uVar1 >> 8)" ( (binary_expression "uVar1 >> 8" identifier >> number_literal) )))) ;) (expression_statement "uVar1 = (pEntry->cds).iInternalAttr;" (assignment_expression "uVar1 = (pEntry->cds).iInternalAttr" identifier = (field_expression "(pEntry->cds).iInternalAttr" (parenthesized_expression "(pEntry->cds)" ( (field_expression "pEntry->cds" identifier -> field_identifier) )) . field_identifier)) ;) (expression_statement "aBuf[0x24] = (u8)uVar1;" (assignment_expression "aBuf[0x24] = (u8)uVar1" (subscript_expression "aBuf[0x24]" identifier [ number_literal ]) = (cast_expression "(u8)uVar1" ( (type_descriptor "u8" type_identifier) ) identifier)) ;) (expression_statement "aBuf[0x25] = (u8)(uVar1 >> 8);" (assignment_expression "aBuf[0x25] = (u8)(uVar1 >> 8)" (subscript_expression "aBuf[0x25]" identifier [ number_literal ]) = (call_expression "(u8)(uVar1 >> 8)" (parenthesized_expression "(u8)" ( identifier )) (argument_list "(uVar1 >> 8)" ( (binary_expression "uVar1 >> 8" identifier >> number_literal) )))) ;) (expression_statement "zipfilePutU32(aBuf + 0x26,(pEntry->cds).iExternalAttr);" (call_expression "zipfilePutU32(aBuf + 0x26,(pEntry->cds).iExternalAttr)" identifier (argument_list "(aBuf + 0x26,(pEntry->cds).iExternalAttr)" ( (binary_expression "aBuf + 0x26" identifier + number_literal) , (field_expression "(pEntry->cds).iExternalAttr" (parenthesized_expression "(pEntry->cds)" ( (field_expression "pEntry->cds" identifier -> field_identifier) )) . field_identifier) ))) ;) (expression_statement "zipfilePutU32(aBuf + 0x2a,(pEntry->cds).iOffset);" (call_expression "zipfilePutU32(aBuf + 0x2a,(pEntry->cds).iOffset)" identifier (argument_list "(aBuf + 0x2a,(pEntry->cds).iOffset)" ( (binary_expression "aBuf + 0x2a" identifier + number_literal) , (field_expression "(pEntry->cds).iOffset" (parenthesized_expression "(pEntry->cds)" ( (field_expression "pEntry->cds" identifier -> field_identifier) )) . field_identifier) ))) ;) (expression_statement "(*(code *)PTR_memcpy_0018fed4)(aBuf + 0x2e,(pEntry->cds).zFile,(pEntry->cds).nFile);" (call_expression "(*(code *)PTR_memcpy_0018fed4)(aBuf + 0x2e,(pEntry->cds).zFile,(pEntry->cds).nFile)" (parenthesized_expression "(*(code *)PTR_memcpy_0018fed4)" ( (pointer_expression "*(code *)PTR_memcpy_0018fed4" * (cast_expression "(code *)PTR_memcpy_0018fed4" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(aBuf + 0x2e,(pEntry->cds).zFile,(pEntry->cds).nFile)" ( (binary_expression "aBuf + 0x2e" identifier + number_literal) , (field_expression "(pEntry->cds).zFile" (parenthesized_expression "(pEntry->cds)" ( (field_expression "pEntry->cds" identifier -> field_identifier) )) . field_identifier) , (field_expression "(pEntry->cds).nFile" (parenthesized_expression "(pEntry->cds)" ( (field_expression "pEntry->cds" identifier -> field_identifier) )) . field_identifier) ))) ;) (expression_statement "uVar2 = (uint)(pEntry->cds).nFile;" (assignment_expression "uVar2 = (uint)(pEntry->cds).nFile" identifier = (field_expression "(uint)(pEntry->cds).nFile" (call_expression "(uint)(pEntry->cds)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(pEntry->cds)" ( (field_expression "pEntry->cds" identifier -> field_identifier) ))) . field_identifier)) ;) (expression_statement "puVar4 = aBuf + 0x2e + uVar2;" (assignment_expression "puVar4 = aBuf + 0x2e + uVar2" identifier = (binary_expression "aBuf + 0x2e + uVar2" (binary_expression "aBuf + 0x2e" identifier + number_literal) + identifier)) ;) (if_statement "if (pEntry->aExtra == (u8 *)0x0) {\n    builtin_memcpy(aBuf + uVar2 + 0x2e,"UT\x05",4);\n    puVar4[4] = '\x01';\n    zipfilePutU32(puVar4 + 5,pEntry->mUnixTime);\n    puVar4 = puVar4 + 9;\n  }\n  else {\n    iVar3 = (uint)(pEntry->cds).nExtra + (uint)(pEntry->cds).nComment;\n    (*(code *)PTR_memcpy_0018fed4)(puVar4,pEntry->aExtra,iVar3);\n    puVar4 = puVar4 + iVar3;\n  }" if (parenthesized_expression "(pEntry->aExtra == (u8 *)0x0)" ( (binary_expression "pEntry->aExtra == (u8 *)0x0" (field_expression "pEntry->aExtra" identifier -> field_identifier) == (cast_expression "(u8 *)0x0" ( (type_descriptor "u8 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    builtin_memcpy(aBuf + uVar2 + 0x2e,"UT\x05",4);\n    puVar4[4] = '\x01';\n    zipfilePutU32(puVar4 + 5,pEntry->mUnixTime);\n    puVar4 = puVar4 + 9;\n  }" { (expression_statement "builtin_memcpy(aBuf + uVar2 + 0x2e,"UT\x05",4);" (call_expression "builtin_memcpy(aBuf + uVar2 + 0x2e,"UT\x05",4)" identifier (argument_list "(aBuf + uVar2 + 0x2e,"UT\x05",4)" ( (binary_expression "aBuf + uVar2 + 0x2e" (binary_expression "aBuf + uVar2" identifier + identifier) + number_literal) , (string_literal ""UT\x05"" " string_content escape_sequence ") , number_literal ))) ;) (expression_statement "puVar4[4] = '\x01';" (assignment_expression "puVar4[4] = '\x01'" (subscript_expression "puVar4[4]" identifier [ number_literal ]) = (char_literal "'\x01'" ' escape_sequence ')) ;) (expression_statement "zipfilePutU32(puVar4 + 5,pEntry->mUnixTime);" (call_expression "zipfilePutU32(puVar4 + 5,pEntry->mUnixTime)" identifier (argument_list "(puVar4 + 5,pEntry->mUnixTime)" ( (binary_expression "puVar4 + 5" identifier + number_literal) , (field_expression "pEntry->mUnixTime" identifier -> field_identifier) ))) ;) (expression_statement "puVar4 = puVar4 + 9;" (assignment_expression "puVar4 = puVar4 + 9" identifier = (binary_expression "puVar4 + 9" identifier + number_literal)) ;) }) (else_clause "else {\n    iVar3 = (uint)(pEntry->cds).nExtra + (uint)(pEntry->cds).nComment;\n    (*(code *)PTR_memcpy_0018fed4)(puVar4,pEntry->aExtra,iVar3);\n    puVar4 = puVar4 + iVar3;\n  }" else (compound_statement "{\n    iVar3 = (uint)(pEntry->cds).nExtra + (uint)(pEntry->cds).nComment;\n    (*(code *)PTR_memcpy_0018fed4)(puVar4,pEntry->aExtra,iVar3);\n    puVar4 = puVar4 + iVar3;\n  }" { (expression_statement "iVar3 = (uint)(pEntry->cds).nExtra + (uint)(pEntry->cds).nComment;" (assignment_expression "iVar3 = (uint)(pEntry->cds).nExtra + (uint)(pEntry->cds).nComment" identifier = (binary_expression "(uint)(pEntry->cds).nExtra + (uint)(pEntry->cds).nComment" (field_expression "(uint)(pEntry->cds).nExtra" (call_expression "(uint)(pEntry->cds)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(pEntry->cds)" ( (field_expression "pEntry->cds" identifier -> field_identifier) ))) . field_identifier) + (field_expression "(uint)(pEntry->cds).nComment" (call_expression "(uint)(pEntry->cds)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(pEntry->cds)" ( (field_expression "pEntry->cds" identifier -> field_identifier) ))) . field_identifier))) ;) (expression_statement "(*(code *)PTR_memcpy_0018fed4)(puVar4,pEntry->aExtra,iVar3);" (call_expression "(*(code *)PTR_memcpy_0018fed4)(puVar4,pEntry->aExtra,iVar3)" (parenthesized_expression "(*(code *)PTR_memcpy_0018fed4)" ( (pointer_expression "*(code *)PTR_memcpy_0018fed4" * (cast_expression "(code *)PTR_memcpy_0018fed4" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(puVar4,pEntry->aExtra,iVar3)" ( identifier , (field_expression "pEntry->aExtra" identifier -> field_identifier) , identifier ))) ;) (expression_statement "puVar4 = puVar4 + iVar3;" (assignment_expression "puVar4 = puVar4 + iVar3" identifier = (binary_expression "puVar4 + iVar3" identifier + identifier)) ;) }))) (return_statement "return (int)puVar4 - (int)aBuf;" return (binary_expression "(int)puVar4 - (int)aBuf" (cast_expression "(int)puVar4" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)aBuf" ( (type_descriptor "int" primitive_type) ) identifier)) ;) })))
(translation_unit "int FUN_0002c1bc(undefined2 *param_1,int param_2)\n\n{\n  undefined2 uVar1;\n  ushort uVar2;\n  ushort uVar3;\n  undefined1 *puVar4;\n  \n  if (*(int *)(param_1 + 0x1a) == 0) {\n    param_1[0xd] = 9;\n  }\n  FUN_0001afb0(param_2,0x2014b50);\n  uVar1 = *param_1;\n  *(char *)(param_2 + 4) = (char)uVar1;\n  *(char *)(param_2 + 5) = (char)((ushort)uVar1 >> 8);\n  uVar1 = param_1[1];\n  *(char *)(param_2 + 6) = (char)uVar1;\n  *(char *)(param_2 + 7) = (char)((ushort)uVar1 >> 8);\n  uVar1 = param_1[2];\n  *(char *)(param_2 + 8) = (char)uVar1;\n  *(char *)(param_2 + 9) = (char)((ushort)uVar1 >> 8);\n  uVar1 = param_1[3];\n  *(char *)(param_2 + 10) = (char)uVar1;\n  *(char *)(param_2 + 0xb) = (char)((ushort)uVar1 >> 8);\n  uVar1 = param_1[4];\n  *(char *)(param_2 + 0xc) = (char)uVar1;\n  *(char *)(param_2 + 0xd) = (char)((ushort)uVar1 >> 8);\n  uVar1 = param_1[5];\n  *(char *)(param_2 + 0xe) = (char)uVar1;\n  *(char *)(param_2 + 0xf) = (char)((ushort)uVar1 >> 8);\n  FUN_0001afb0(param_2 + 0x10,*(undefined4 *)(param_1 + 6));\n  FUN_0001afb0(param_2 + 0x14,*(undefined4 *)(param_1 + 8));\n  FUN_0001afb0(param_2 + 0x18,*(undefined4 *)(param_1 + 10));\n  uVar1 = param_1[0xc];\n  *(char *)(param_2 + 0x1c) = (char)uVar1;\n  *(char *)(param_2 + 0x1d) = (char)((ushort)uVar1 >> 8);\n  uVar1 = param_1[0xd];\n  *(char *)(param_2 + 0x1e) = (char)uVar1;\n  *(char *)(param_2 + 0x1f) = (char)((ushort)uVar1 >> 8);\n  uVar1 = param_1[0xe];\n  *(char *)(param_2 + 0x20) = (char)uVar1;\n  *(char *)(param_2 + 0x21) = (char)((ushort)uVar1 >> 8);\n  uVar1 = param_1[0xf];\n  *(char *)(param_2 + 0x22) = (char)uVar1;\n  *(char *)(param_2 + 0x23) = (char)((ushort)uVar1 >> 8);\n  uVar1 = param_1[0x10];\n  *(char *)(param_2 + 0x24) = (char)uVar1;\n  *(char *)(param_2 + 0x25) = (char)((ushort)uVar1 >> 8);\n  FUN_0001afb0(param_2 + 0x26,*(undefined4 *)(param_1 + 0x12));\n  FUN_0001afb0(param_2 + 0x2a,*(undefined4 *)(param_1 + 0x14));\n  (*(code *)PTR_memcpy_0018fed4)(param_2 + 0x2e,*(undefined4 *)(param_1 + 0x16),param_1[0xc]);\n  puVar4 = (undefined1 *)(param_2 + 0x2e + (uint)(ushort)param_1[0xc]);\n  if (*(int *)(param_1 + 0x1a) == 0) {\n    *puVar4 = 0x55;\n    puVar4[1] = 0x54;\n    puVar4[2] = 5;\n    puVar4[3] = 0;\n    puVar4[4] = 1;\n    FUN_0001afb0(puVar4 + 5,*(undefined4 *)(param_1 + 0x18));\n    puVar4 = puVar4 + 9;\n  }\n  else {\n    uVar2 = param_1[0xd];\n    uVar3 = param_1[0xe];\n    (*(code *)PTR_memcpy_0018fed4)(puVar4,*(int *)(param_1 + 0x1a),(uint)uVar2 + (uint)uVar3);\n    puVar4 = puVar4 + (uint)uVar2 + (uint)uVar3;\n  }\n  return (int)puVar4 - param_2;\n}\n\n" (function_definition "int FUN_0002c1bc(undefined2 *param_1,int param_2)\n\n{\n  undefined2 uVar1;\n  ushort uVar2;\n  ushort uVar3;\n  undefined1 *puVar4;\n  \n  if (*(int *)(param_1 + 0x1a) == 0) {\n    param_1[0xd] = 9;\n  }\n  FUN_0001afb0(param_2,0x2014b50);\n  uVar1 = *param_1;\n  *(char *)(param_2 + 4) = (char)uVar1;\n  *(char *)(param_2 + 5) = (char)((ushort)uVar1 >> 8);\n  uVar1 = param_1[1];\n  *(char *)(param_2 + 6) = (char)uVar1;\n  *(char *)(param_2 + 7) = (char)((ushort)uVar1 >> 8);\n  uVar1 = param_1[2];\n  *(char *)(param_2 + 8) = (char)uVar1;\n  *(char *)(param_2 + 9) = (char)((ushort)uVar1 >> 8);\n  uVar1 = param_1[3];\n  *(char *)(param_2 + 10) = (char)uVar1;\n  *(char *)(param_2 + 0xb) = (char)((ushort)uVar1 >> 8);\n  uVar1 = param_1[4];\n  *(char *)(param_2 + 0xc) = (char)uVar1;\n  *(char *)(param_2 + 0xd) = (char)((ushort)uVar1 >> 8);\n  uVar1 = param_1[5];\n  *(char *)(param_2 + 0xe) = (char)uVar1;\n  *(char *)(param_2 + 0xf) = (char)((ushort)uVar1 >> 8);\n  FUN_0001afb0(param_2 + 0x10,*(undefined4 *)(param_1 + 6));\n  FUN_0001afb0(param_2 + 0x14,*(undefined4 *)(param_1 + 8));\n  FUN_0001afb0(param_2 + 0x18,*(undefined4 *)(param_1 + 10));\n  uVar1 = param_1[0xc];\n  *(char *)(param_2 + 0x1c) = (char)uVar1;\n  *(char *)(param_2 + 0x1d) = (char)((ushort)uVar1 >> 8);\n  uVar1 = param_1[0xd];\n  *(char *)(param_2 + 0x1e) = (char)uVar1;\n  *(char *)(param_2 + 0x1f) = (char)((ushort)uVar1 >> 8);\n  uVar1 = param_1[0xe];\n  *(char *)(param_2 + 0x20) = (char)uVar1;\n  *(char *)(param_2 + 0x21) = (char)((ushort)uVar1 >> 8);\n  uVar1 = param_1[0xf];\n  *(char *)(param_2 + 0x22) = (char)uVar1;\n  *(char *)(param_2 + 0x23) = (char)((ushort)uVar1 >> 8);\n  uVar1 = param_1[0x10];\n  *(char *)(param_2 + 0x24) = (char)uVar1;\n  *(char *)(param_2 + 0x25) = (char)((ushort)uVar1 >> 8);\n  FUN_0001afb0(param_2 + 0x26,*(undefined4 *)(param_1 + 0x12));\n  FUN_0001afb0(param_2 + 0x2a,*(undefined4 *)(param_1 + 0x14));\n  (*(code *)PTR_memcpy_0018fed4)(param_2 + 0x2e,*(undefined4 *)(param_1 + 0x16),param_1[0xc]);\n  puVar4 = (undefined1 *)(param_2 + 0x2e + (uint)(ushort)param_1[0xc]);\n  if (*(int *)(param_1 + 0x1a) == 0) {\n    *puVar4 = 0x55;\n    puVar4[1] = 0x54;\n    puVar4[2] = 5;\n    puVar4[3] = 0;\n    puVar4[4] = 1;\n    FUN_0001afb0(puVar4 + 5,*(undefined4 *)(param_1 + 0x18));\n    puVar4 = puVar4 + 9;\n  }\n  else {\n    uVar2 = param_1[0xd];\n    uVar3 = param_1[0xe];\n    (*(code *)PTR_memcpy_0018fed4)(puVar4,*(int *)(param_1 + 0x1a),(uint)uVar2 + (uint)uVar3);\n    puVar4 = puVar4 + (uint)uVar2 + (uint)uVar3;\n  }\n  return (int)puVar4 - param_2;\n}" primitive_type (function_declarator "FUN_0002c1bc(undefined2 *param_1,int param_2)" identifier (parameter_list "(undefined2 *param_1,int param_2)" ( (parameter_declaration "undefined2 *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "int param_2" primitive_type identifier) ))) (compound_statement "{\n  undefined2 uVar1;\n  ushort uVar2;\n  ushort uVar3;\n  undefined1 *puVar4;\n  \n  if (*(int *)(param_1 + 0x1a) == 0) {\n    param_1[0xd] = 9;\n  }\n  FUN_0001afb0(param_2,0x2014b50);\n  uVar1 = *param_1;\n  *(char *)(param_2 + 4) = (char)uVar1;\n  *(char *)(param_2 + 5) = (char)((ushort)uVar1 >> 8);\n  uVar1 = param_1[1];\n  *(char *)(param_2 + 6) = (char)uVar1;\n  *(char *)(param_2 + 7) = (char)((ushort)uVar1 >> 8);\n  uVar1 = param_1[2];\n  *(char *)(param_2 + 8) = (char)uVar1;\n  *(char *)(param_2 + 9) = (char)((ushort)uVar1 >> 8);\n  uVar1 = param_1[3];\n  *(char *)(param_2 + 10) = (char)uVar1;\n  *(char *)(param_2 + 0xb) = (char)((ushort)uVar1 >> 8);\n  uVar1 = param_1[4];\n  *(char *)(param_2 + 0xc) = (char)uVar1;\n  *(char *)(param_2 + 0xd) = (char)((ushort)uVar1 >> 8);\n  uVar1 = param_1[5];\n  *(char *)(param_2 + 0xe) = (char)uVar1;\n  *(char *)(param_2 + 0xf) = (char)((ushort)uVar1 >> 8);\n  FUN_0001afb0(param_2 + 0x10,*(undefined4 *)(param_1 + 6));\n  FUN_0001afb0(param_2 + 0x14,*(undefined4 *)(param_1 + 8));\n  FUN_0001afb0(param_2 + 0x18,*(undefined4 *)(param_1 + 10));\n  uVar1 = param_1[0xc];\n  *(char *)(param_2 + 0x1c) = (char)uVar1;\n  *(char *)(param_2 + 0x1d) = (char)((ushort)uVar1 >> 8);\n  uVar1 = param_1[0xd];\n  *(char *)(param_2 + 0x1e) = (char)uVar1;\n  *(char *)(param_2 + 0x1f) = (char)((ushort)uVar1 >> 8);\n  uVar1 = param_1[0xe];\n  *(char *)(param_2 + 0x20) = (char)uVar1;\n  *(char *)(param_2 + 0x21) = (char)((ushort)uVar1 >> 8);\n  uVar1 = param_1[0xf];\n  *(char *)(param_2 + 0x22) = (char)uVar1;\n  *(char *)(param_2 + 0x23) = (char)((ushort)uVar1 >> 8);\n  uVar1 = param_1[0x10];\n  *(char *)(param_2 + 0x24) = (char)uVar1;\n  *(char *)(param_2 + 0x25) = (char)((ushort)uVar1 >> 8);\n  FUN_0001afb0(param_2 + 0x26,*(undefined4 *)(param_1 + 0x12));\n  FUN_0001afb0(param_2 + 0x2a,*(undefined4 *)(param_1 + 0x14));\n  (*(code *)PTR_memcpy_0018fed4)(param_2 + 0x2e,*(undefined4 *)(param_1 + 0x16),param_1[0xc]);\n  puVar4 = (undefined1 *)(param_2 + 0x2e + (uint)(ushort)param_1[0xc]);\n  if (*(int *)(param_1 + 0x1a) == 0) {\n    *puVar4 = 0x55;\n    puVar4[1] = 0x54;\n    puVar4[2] = 5;\n    puVar4[3] = 0;\n    puVar4[4] = 1;\n    FUN_0001afb0(puVar4 + 5,*(undefined4 *)(param_1 + 0x18));\n    puVar4 = puVar4 + 9;\n  }\n  else {\n    uVar2 = param_1[0xd];\n    uVar3 = param_1[0xe];\n    (*(code *)PTR_memcpy_0018fed4)(puVar4,*(int *)(param_1 + 0x1a),(uint)uVar2 + (uint)uVar3);\n    puVar4 = puVar4 + (uint)uVar2 + (uint)uVar3;\n  }\n  return (int)puVar4 - param_2;\n}" { (declaration "undefined2 uVar1;" type_identifier identifier ;) (declaration "ushort uVar2;" type_identifier identifier ;) (declaration "ushort uVar3;" type_identifier identifier ;) (declaration "undefined1 *puVar4;" type_identifier (pointer_declarator "*puVar4" * identifier) ;) (if_statement "if (*(int *)(param_1 + 0x1a) == 0) {\n    param_1[0xd] = 9;\n  }" if (parenthesized_expression "(*(int *)(param_1 + 0x1a) == 0)" ( (binary_expression "*(int *)(param_1 + 0x1a) == 0" (pointer_expression "*(int *)(param_1 + 0x1a)" * (cast_expression "(int *)(param_1 + 0x1a)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x1a)" ( (binary_expression "param_1 + 0x1a" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n    param_1[0xd] = 9;\n  }" { (expression_statement "param_1[0xd] = 9;" (assignment_expression "param_1[0xd] = 9" (subscript_expression "param_1[0xd]" identifier [ number_literal ]) = number_literal) ;) })) (expression_statement "FUN_0001afb0(param_2,0x2014b50);" (call_expression "FUN_0001afb0(param_2,0x2014b50)" identifier (argument_list "(param_2,0x2014b50)" ( identifier , number_literal ))) ;) (expression_statement "uVar1 = *param_1;" (assignment_expression "uVar1 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (expression_statement "*(char *)(param_2 + 4) = (char)uVar1;" (assignment_expression "*(char *)(param_2 + 4) = (char)uVar1" (pointer_expression "*(char *)(param_2 + 4)" * (cast_expression "(char *)(param_2 + 4)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 4)" ( (binary_expression "param_2 + 4" identifier + number_literal) )))) = (cast_expression "(char)uVar1" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (expression_statement "*(char *)(param_2 + 5) = (char)((ushort)uVar1 >> 8);" (assignment_expression "*(char *)(param_2 + 5) = (char)((ushort)uVar1 >> 8)" (pointer_expression "*(char *)(param_2 + 5)" * (cast_expression "(char *)(param_2 + 5)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 5)" ( (binary_expression "param_2 + 5" identifier + number_literal) )))) = (cast_expression "(char)((ushort)uVar1 >> 8)" ( (type_descriptor "char" primitive_type) ) (parenthesized_expression "((ushort)uVar1 >> 8)" ( (binary_expression "(ushort)uVar1 >> 8" (cast_expression "(ushort)uVar1" ( (type_descriptor "ushort" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "uVar1 = param_1[1];" (assignment_expression "uVar1 = param_1[1]" identifier = (subscript_expression "param_1[1]" identifier [ number_literal ])) ;) (expression_statement "*(char *)(param_2 + 6) = (char)uVar1;" (assignment_expression "*(char *)(param_2 + 6) = (char)uVar1" (pointer_expression "*(char *)(param_2 + 6)" * (cast_expression "(char *)(param_2 + 6)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 6)" ( (binary_expression "param_2 + 6" identifier + number_literal) )))) = (cast_expression "(char)uVar1" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (expression_statement "*(char *)(param_2 + 7) = (char)((ushort)uVar1 >> 8);" (assignment_expression "*(char *)(param_2 + 7) = (char)((ushort)uVar1 >> 8)" (pointer_expression "*(char *)(param_2 + 7)" * (cast_expression "(char *)(param_2 + 7)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 7)" ( (binary_expression "param_2 + 7" identifier + number_literal) )))) = (cast_expression "(char)((ushort)uVar1 >> 8)" ( (type_descriptor "char" primitive_type) ) (parenthesized_expression "((ushort)uVar1 >> 8)" ( (binary_expression "(ushort)uVar1 >> 8" (cast_expression "(ushort)uVar1" ( (type_descriptor "ushort" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "uVar1 = param_1[2];" (assignment_expression "uVar1 = param_1[2]" identifier = (subscript_expression "param_1[2]" identifier [ number_literal ])) ;) (expression_statement "*(char *)(param_2 + 8) = (char)uVar1;" (assignment_expression "*(char *)(param_2 + 8) = (char)uVar1" (pointer_expression "*(char *)(param_2 + 8)" * (cast_expression "(char *)(param_2 + 8)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 8)" ( (binary_expression "param_2 + 8" identifier + number_literal) )))) = (cast_expression "(char)uVar1" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (expression_statement "*(char *)(param_2 + 9) = (char)((ushort)uVar1 >> 8);" (assignment_expression "*(char *)(param_2 + 9) = (char)((ushort)uVar1 >> 8)" (pointer_expression "*(char *)(param_2 + 9)" * (cast_expression "(char *)(param_2 + 9)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 9)" ( (binary_expression "param_2 + 9" identifier + number_literal) )))) = (cast_expression "(char)((ushort)uVar1 >> 8)" ( (type_descriptor "char" primitive_type) ) (parenthesized_expression "((ushort)uVar1 >> 8)" ( (binary_expression "(ushort)uVar1 >> 8" (cast_expression "(ushort)uVar1" ( (type_descriptor "ushort" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "uVar1 = param_1[3];" (assignment_expression "uVar1 = param_1[3]" identifier = (subscript_expression "param_1[3]" identifier [ number_literal ])) ;) (expression_statement "*(char *)(param_2 + 10) = (char)uVar1;" (assignment_expression "*(char *)(param_2 + 10) = (char)uVar1" (pointer_expression "*(char *)(param_2 + 10)" * (cast_expression "(char *)(param_2 + 10)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 10)" ( (binary_expression "param_2 + 10" identifier + number_literal) )))) = (cast_expression "(char)uVar1" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (expression_statement "*(char *)(param_2 + 0xb) = (char)((ushort)uVar1 >> 8);" (assignment_expression "*(char *)(param_2 + 0xb) = (char)((ushort)uVar1 >> 8)" (pointer_expression "*(char *)(param_2 + 0xb)" * (cast_expression "(char *)(param_2 + 0xb)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0xb)" ( (binary_expression "param_2 + 0xb" identifier + number_literal) )))) = (cast_expression "(char)((ushort)uVar1 >> 8)" ( (type_descriptor "char" primitive_type) ) (parenthesized_expression "((ushort)uVar1 >> 8)" ( (binary_expression "(ushort)uVar1 >> 8" (cast_expression "(ushort)uVar1" ( (type_descriptor "ushort" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "uVar1 = param_1[4];" (assignment_expression "uVar1 = param_1[4]" identifier = (subscript_expression "param_1[4]" identifier [ number_literal ])) ;) (expression_statement "*(char *)(param_2 + 0xc) = (char)uVar1;" (assignment_expression "*(char *)(param_2 + 0xc) = (char)uVar1" (pointer_expression "*(char *)(param_2 + 0xc)" * (cast_expression "(char *)(param_2 + 0xc)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0xc)" ( (binary_expression "param_2 + 0xc" identifier + number_literal) )))) = (cast_expression "(char)uVar1" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (expression_statement "*(char *)(param_2 + 0xd) = (char)((ushort)uVar1 >> 8);" (assignment_expression "*(char *)(param_2 + 0xd) = (char)((ushort)uVar1 >> 8)" (pointer_expression "*(char *)(param_2 + 0xd)" * (cast_expression "(char *)(param_2 + 0xd)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0xd)" ( (binary_expression "param_2 + 0xd" identifier + number_literal) )))) = (cast_expression "(char)((ushort)uVar1 >> 8)" ( (type_descriptor "char" primitive_type) ) (parenthesized_expression "((ushort)uVar1 >> 8)" ( (binary_expression "(ushort)uVar1 >> 8" (cast_expression "(ushort)uVar1" ( (type_descriptor "ushort" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "uVar1 = param_1[5];" (assignment_expression "uVar1 = param_1[5]" identifier = (subscript_expression "param_1[5]" identifier [ number_literal ])) ;) (expression_statement "*(char *)(param_2 + 0xe) = (char)uVar1;" (assignment_expression "*(char *)(param_2 + 0xe) = (char)uVar1" (pointer_expression "*(char *)(param_2 + 0xe)" * (cast_expression "(char *)(param_2 + 0xe)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0xe)" ( (binary_expression "param_2 + 0xe" identifier + number_literal) )))) = (cast_expression "(char)uVar1" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (expression_statement "*(char *)(param_2 + 0xf) = (char)((ushort)uVar1 >> 8);" (assignment_expression "*(char *)(param_2 + 0xf) = (char)((ushort)uVar1 >> 8)" (pointer_expression "*(char *)(param_2 + 0xf)" * (cast_expression "(char *)(param_2 + 0xf)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0xf)" ( (binary_expression "param_2 + 0xf" identifier + number_literal) )))) = (cast_expression "(char)((ushort)uVar1 >> 8)" ( (type_descriptor "char" primitive_type) ) (parenthesized_expression "((ushort)uVar1 >> 8)" ( (binary_expression "(ushort)uVar1 >> 8" (cast_expression "(ushort)uVar1" ( (type_descriptor "ushort" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "FUN_0001afb0(param_2 + 0x10,*(undefined4 *)(param_1 + 6));" (call_expression "FUN_0001afb0(param_2 + 0x10,*(undefined4 *)(param_1 + 6))" identifier (argument_list "(param_2 + 0x10,*(undefined4 *)(param_1 + 6))" ( (binary_expression "param_2 + 0x10" identifier + number_literal) , (pointer_expression "*(undefined4 *)(param_1 + 6)" * (cast_expression "(undefined4 *)(param_1 + 6)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 6)" ( (binary_expression "param_1 + 6" identifier + number_literal) )))) ))) ;) (expression_statement "FUN_0001afb0(param_2 + 0x14,*(undefined4 *)(param_1 + 8));" (call_expression "FUN_0001afb0(param_2 + 0x14,*(undefined4 *)(param_1 + 8))" identifier (argument_list "(param_2 + 0x14,*(undefined4 *)(param_1 + 8))" ( (binary_expression "param_2 + 0x14" identifier + number_literal) , (pointer_expression "*(undefined4 *)(param_1 + 8)" * (cast_expression "(undefined4 *)(param_1 + 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) )))) ))) ;) (expression_statement "FUN_0001afb0(param_2 + 0x18,*(undefined4 *)(param_1 + 10));" (call_expression "FUN_0001afb0(param_2 + 0x18,*(undefined4 *)(param_1 + 10))" identifier (argument_list "(param_2 + 0x18,*(undefined4 *)(param_1 + 10))" ( (binary_expression "param_2 + 0x18" identifier + number_literal) , (pointer_expression "*(undefined4 *)(param_1 + 10)" * (cast_expression "(undefined4 *)(param_1 + 10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 10)" ( (binary_expression "param_1 + 10" identifier + number_literal) )))) ))) ;) (expression_statement "uVar1 = param_1[0xc];" (assignment_expression "uVar1 = param_1[0xc]" identifier = (subscript_expression "param_1[0xc]" identifier [ number_literal ])) ;) (expression_statement "*(char *)(param_2 + 0x1c) = (char)uVar1;" (assignment_expression "*(char *)(param_2 + 0x1c) = (char)uVar1" (pointer_expression "*(char *)(param_2 + 0x1c)" * (cast_expression "(char *)(param_2 + 0x1c)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x1c)" ( (binary_expression "param_2 + 0x1c" identifier + number_literal) )))) = (cast_expression "(char)uVar1" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (expression_statement "*(char *)(param_2 + 0x1d) = (char)((ushort)uVar1 >> 8);" (assignment_expression "*(char *)(param_2 + 0x1d) = (char)((ushort)uVar1 >> 8)" (pointer_expression "*(char *)(param_2 + 0x1d)" * (cast_expression "(char *)(param_2 + 0x1d)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x1d)" ( (binary_expression "param_2 + 0x1d" identifier + number_literal) )))) = (cast_expression "(char)((ushort)uVar1 >> 8)" ( (type_descriptor "char" primitive_type) ) (parenthesized_expression "((ushort)uVar1 >> 8)" ( (binary_expression "(ushort)uVar1 >> 8" (cast_expression "(ushort)uVar1" ( (type_descriptor "ushort" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "uVar1 = param_1[0xd];" (assignment_expression "uVar1 = param_1[0xd]" identifier = (subscript_expression "param_1[0xd]" identifier [ number_literal ])) ;) (expression_statement "*(char *)(param_2 + 0x1e) = (char)uVar1;" (assignment_expression "*(char *)(param_2 + 0x1e) = (char)uVar1" (pointer_expression "*(char *)(param_2 + 0x1e)" * (cast_expression "(char *)(param_2 + 0x1e)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x1e)" ( (binary_expression "param_2 + 0x1e" identifier + number_literal) )))) = (cast_expression "(char)uVar1" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (expression_statement "*(char *)(param_2 + 0x1f) = (char)((ushort)uVar1 >> 8);" (assignment_expression "*(char *)(param_2 + 0x1f) = (char)((ushort)uVar1 >> 8)" (pointer_expression "*(char *)(param_2 + 0x1f)" * (cast_expression "(char *)(param_2 + 0x1f)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x1f)" ( (binary_expression "param_2 + 0x1f" identifier + number_literal) )))) = (cast_expression "(char)((ushort)uVar1 >> 8)" ( (type_descriptor "char" primitive_type) ) (parenthesized_expression "((ushort)uVar1 >> 8)" ( (binary_expression "(ushort)uVar1 >> 8" (cast_expression "(ushort)uVar1" ( (type_descriptor "ushort" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "uVar1 = param_1[0xe];" (assignment_expression "uVar1 = param_1[0xe]" identifier = (subscript_expression "param_1[0xe]" identifier [ number_literal ])) ;) (expression_statement "*(char *)(param_2 + 0x20) = (char)uVar1;" (assignment_expression "*(char *)(param_2 + 0x20) = (char)uVar1" (pointer_expression "*(char *)(param_2 + 0x20)" * (cast_expression "(char *)(param_2 + 0x20)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x20)" ( (binary_expression "param_2 + 0x20" identifier + number_literal) )))) = (cast_expression "(char)uVar1" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (expression_statement "*(char *)(param_2 + 0x21) = (char)((ushort)uVar1 >> 8);" (assignment_expression "*(char *)(param_2 + 0x21) = (char)((ushort)uVar1 >> 8)" (pointer_expression "*(char *)(param_2 + 0x21)" * (cast_expression "(char *)(param_2 + 0x21)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x21)" ( (binary_expression "param_2 + 0x21" identifier + number_literal) )))) = (cast_expression "(char)((ushort)uVar1 >> 8)" ( (type_descriptor "char" primitive_type) ) (parenthesized_expression "((ushort)uVar1 >> 8)" ( (binary_expression "(ushort)uVar1 >> 8" (cast_expression "(ushort)uVar1" ( (type_descriptor "ushort" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "uVar1 = param_1[0xf];" (assignment_expression "uVar1 = param_1[0xf]" identifier = (subscript_expression "param_1[0xf]" identifier [ number_literal ])) ;) (expression_statement "*(char *)(param_2 + 0x22) = (char)uVar1;" (assignment_expression "*(char *)(param_2 + 0x22) = (char)uVar1" (pointer_expression "*(char *)(param_2 + 0x22)" * (cast_expression "(char *)(param_2 + 0x22)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x22)" ( (binary_expression "param_2 + 0x22" identifier + number_literal) )))) = (cast_expression "(char)uVar1" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (expression_statement "*(char *)(param_2 + 0x23) = (char)((ushort)uVar1 >> 8);" (assignment_expression "*(char *)(param_2 + 0x23) = (char)((ushort)uVar1 >> 8)" (pointer_expression "*(char *)(param_2 + 0x23)" * (cast_expression "(char *)(param_2 + 0x23)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x23)" ( (binary_expression "param_2 + 0x23" identifier + number_literal) )))) = (cast_expression "(char)((ushort)uVar1 >> 8)" ( (type_descriptor "char" primitive_type) ) (parenthesized_expression "((ushort)uVar1 >> 8)" ( (binary_expression "(ushort)uVar1 >> 8" (cast_expression "(ushort)uVar1" ( (type_descriptor "ushort" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "uVar1 = param_1[0x10];" (assignment_expression "uVar1 = param_1[0x10]" identifier = (subscript_expression "param_1[0x10]" identifier [ number_literal ])) ;) (expression_statement "*(char *)(param_2 + 0x24) = (char)uVar1;" (assignment_expression "*(char *)(param_2 + 0x24) = (char)uVar1" (pointer_expression "*(char *)(param_2 + 0x24)" * (cast_expression "(char *)(param_2 + 0x24)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x24)" ( (binary_expression "param_2 + 0x24" identifier + number_literal) )))) = (cast_expression "(char)uVar1" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (expression_statement "*(char *)(param_2 + 0x25) = (char)((ushort)uVar1 >> 8);" (assignment_expression "*(char *)(param_2 + 0x25) = (char)((ushort)uVar1 >> 8)" (pointer_expression "*(char *)(param_2 + 0x25)" * (cast_expression "(char *)(param_2 + 0x25)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x25)" ( (binary_expression "param_2 + 0x25" identifier + number_literal) )))) = (cast_expression "(char)((ushort)uVar1 >> 8)" ( (type_descriptor "char" primitive_type) ) (parenthesized_expression "((ushort)uVar1 >> 8)" ( (binary_expression "(ushort)uVar1 >> 8" (cast_expression "(ushort)uVar1" ( (type_descriptor "ushort" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "FUN_0001afb0(param_2 + 0x26,*(undefined4 *)(param_1 + 0x12));" (call_expression "FUN_0001afb0(param_2 + 0x26,*(undefined4 *)(param_1 + 0x12))" identifier (argument_list "(param_2 + 0x26,*(undefined4 *)(param_1 + 0x12))" ( (binary_expression "param_2 + 0x26" identifier + number_literal) , (pointer_expression "*(undefined4 *)(param_1 + 0x12)" * (cast_expression "(undefined4 *)(param_1 + 0x12)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x12)" ( (binary_expression "param_1 + 0x12" identifier + number_literal) )))) ))) ;) (expression_statement "FUN_0001afb0(param_2 + 0x2a,*(undefined4 *)(param_1 + 0x14));" (call_expression "FUN_0001afb0(param_2 + 0x2a,*(undefined4 *)(param_1 + 0x14))" identifier (argument_list "(param_2 + 0x2a,*(undefined4 *)(param_1 + 0x14))" ( (binary_expression "param_2 + 0x2a" identifier + number_literal) , (pointer_expression "*(undefined4 *)(param_1 + 0x14)" * (cast_expression "(undefined4 *)(param_1 + 0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x14)" ( (binary_expression "param_1 + 0x14" identifier + number_literal) )))) ))) ;) (expression_statement "(*(code *)PTR_memcpy_0018fed4)(param_2 + 0x2e,*(undefined4 *)(param_1 + 0x16),param_1[0xc]);" (call_expression "(*(code *)PTR_memcpy_0018fed4)(param_2 + 0x2e,*(undefined4 *)(param_1 + 0x16),param_1[0xc])" (parenthesized_expression "(*(code *)PTR_memcpy_0018fed4)" ( (pointer_expression "*(code *)PTR_memcpy_0018fed4" * (cast_expression "(code *)PTR_memcpy_0018fed4" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(param_2 + 0x2e,*(undefined4 *)(param_1 + 0x16),param_1[0xc])" ( (binary_expression "param_2 + 0x2e" identifier + number_literal) , (pointer_expression "*(undefined4 *)(param_1 + 0x16)" * (cast_expression "(undefined4 *)(param_1 + 0x16)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x16)" ( (binary_expression "param_1 + 0x16" identifier + number_literal) )))) , (subscript_expression "param_1[0xc]" identifier [ number_literal ]) ))) ;) (expression_statement "puVar4 = (undefined1 *)(param_2 + 0x2e + (uint)(ushort)param_1[0xc]);" (assignment_expression "puVar4 = (undefined1 *)(param_2 + 0x2e + (uint)(ushort)param_1[0xc])" identifier = (cast_expression "(undefined1 *)(param_2 + 0x2e + (uint)(ushort)param_1[0xc])" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x2e + (uint)(ushort)param_1[0xc])" ( (binary_expression "param_2 + 0x2e + (uint)(ushort)param_1[0xc]" (binary_expression "param_2 + 0x2e" identifier + number_literal) + (cast_expression "(uint)(ushort)param_1[0xc]" ( (type_descriptor "uint" type_identifier) ) (cast_expression "(ushort)param_1[0xc]" ( (type_descriptor "ushort" type_identifier) ) (subscript_expression "param_1[0xc]" identifier [ number_literal ])))) )))) ;) (if_statement "if (*(int *)(param_1 + 0x1a) == 0) {\n    *puVar4 = 0x55;\n    puVar4[1] = 0x54;\n    puVar4[2] = 5;\n    puVar4[3] = 0;\n    puVar4[4] = 1;\n    FUN_0001afb0(puVar4 + 5,*(undefined4 *)(param_1 + 0x18));\n    puVar4 = puVar4 + 9;\n  }\n  else {\n    uVar2 = param_1[0xd];\n    uVar3 = param_1[0xe];\n    (*(code *)PTR_memcpy_0018fed4)(puVar4,*(int *)(param_1 + 0x1a),(uint)uVar2 + (uint)uVar3);\n    puVar4 = puVar4 + (uint)uVar2 + (uint)uVar3;\n  }" if (parenthesized_expression "(*(int *)(param_1 + 0x1a) == 0)" ( (binary_expression "*(int *)(param_1 + 0x1a) == 0" (pointer_expression "*(int *)(param_1 + 0x1a)" * (cast_expression "(int *)(param_1 + 0x1a)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x1a)" ( (binary_expression "param_1 + 0x1a" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n    *puVar4 = 0x55;\n    puVar4[1] = 0x54;\n    puVar4[2] = 5;\n    puVar4[3] = 0;\n    puVar4[4] = 1;\n    FUN_0001afb0(puVar4 + 5,*(undefined4 *)(param_1 + 0x18));\n    puVar4 = puVar4 + 9;\n  }" { (expression_statement "*puVar4 = 0x55;" (assignment_expression "*puVar4 = 0x55" (pointer_expression "*puVar4" * identifier) = number_literal) ;) (expression_statement "puVar4[1] = 0x54;" (assignment_expression "puVar4[1] = 0x54" (subscript_expression "puVar4[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar4[2] = 5;" (assignment_expression "puVar4[2] = 5" (subscript_expression "puVar4[2]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar4[3] = 0;" (assignment_expression "puVar4[3] = 0" (subscript_expression "puVar4[3]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar4[4] = 1;" (assignment_expression "puVar4[4] = 1" (subscript_expression "puVar4[4]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "FUN_0001afb0(puVar4 + 5,*(undefined4 *)(param_1 + 0x18));" (call_expression "FUN_0001afb0(puVar4 + 5,*(undefined4 *)(param_1 + 0x18))" identifier (argument_list "(puVar4 + 5,*(undefined4 *)(param_1 + 0x18))" ( (binary_expression "puVar4 + 5" identifier + number_literal) , (pointer_expression "*(undefined4 *)(param_1 + 0x18)" * (cast_expression "(undefined4 *)(param_1 + 0x18)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x18)" ( (binary_expression "param_1 + 0x18" identifier + number_literal) )))) ))) ;) (expression_statement "puVar4 = puVar4 + 9;" (assignment_expression "puVar4 = puVar4 + 9" identifier = (binary_expression "puVar4 + 9" identifier + number_literal)) ;) }) (else_clause "else {\n    uVar2 = param_1[0xd];\n    uVar3 = param_1[0xe];\n    (*(code *)PTR_memcpy_0018fed4)(puVar4,*(int *)(param_1 + 0x1a),(uint)uVar2 + (uint)uVar3);\n    puVar4 = puVar4 + (uint)uVar2 + (uint)uVar3;\n  }" else (compound_statement "{\n    uVar2 = param_1[0xd];\n    uVar3 = param_1[0xe];\n    (*(code *)PTR_memcpy_0018fed4)(puVar4,*(int *)(param_1 + 0x1a),(uint)uVar2 + (uint)uVar3);\n    puVar4 = puVar4 + (uint)uVar2 + (uint)uVar3;\n  }" { (expression_statement "uVar2 = param_1[0xd];" (assignment_expression "uVar2 = param_1[0xd]" identifier = (subscript_expression "param_1[0xd]" identifier [ number_literal ])) ;) (expression_statement "uVar3 = param_1[0xe];" (assignment_expression "uVar3 = param_1[0xe]" identifier = (subscript_expression "param_1[0xe]" identifier [ number_literal ])) ;) (expression_statement "(*(code *)PTR_memcpy_0018fed4)(puVar4,*(int *)(param_1 + 0x1a),(uint)uVar2 + (uint)uVar3);" (call_expression "(*(code *)PTR_memcpy_0018fed4)(puVar4,*(int *)(param_1 + 0x1a),(uint)uVar2 + (uint)uVar3)" (parenthesized_expression "(*(code *)PTR_memcpy_0018fed4)" ( (pointer_expression "*(code *)PTR_memcpy_0018fed4" * (cast_expression "(code *)PTR_memcpy_0018fed4" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(puVar4,*(int *)(param_1 + 0x1a),(uint)uVar2 + (uint)uVar3)" ( identifier , (pointer_expression "*(int *)(param_1 + 0x1a)" * (cast_expression "(int *)(param_1 + 0x1a)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x1a)" ( (binary_expression "param_1 + 0x1a" identifier + number_literal) )))) , (binary_expression "(uint)uVar2 + (uint)uVar3" (cast_expression "(uint)uVar2" ( (type_descriptor "uint" type_identifier) ) identifier) + (cast_expression "(uint)uVar3" ( (type_descriptor "uint" type_identifier) ) identifier)) ))) ;) (expression_statement "puVar4 = puVar4 + (uint)uVar2 + (uint)uVar3;" (assignment_expression "puVar4 = puVar4 + (uint)uVar2 + (uint)uVar3" identifier = (binary_expression "puVar4 + (uint)uVar2 + (uint)uVar3" (binary_expression "puVar4 + (uint)uVar2" identifier + (cast_expression "(uint)uVar2" ( (type_descriptor "uint" type_identifier) ) identifier)) + (cast_expression "(uint)uVar3" ( (type_descriptor "uint" type_identifier) ) identifier))) ;) }))) (return_statement "return (int)puVar4 - param_2;" return (binary_expression "(int)puVar4 - param_2" (cast_expression "(int)puVar4" ( (type_descriptor "int" primitive_type) ) identifier) - identifier) ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == LIT) )) (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) })) (expression_statement (call_expression IDENT (argument_list ( IDENT , LIT ))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) )))) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) )))) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) )))) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) )))) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) )))) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) )))) ;) (expression_statement (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ))) ;) (expression_statement (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ))) ;) (expression_statement (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ))) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) )))) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) )))) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) )))) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) )))) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) )))) ;) (expression_statement (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ))) ;) (expression_statement (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ))) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( (binary_expression IDENT + LIT) , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , (subscript_expression IDENT [ LIT ]) ))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) + (cast_expression ( (type_descriptor TYPE) ) (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ])))) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == LIT) )) (compound_statement { (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 (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + (cast_expression ( (type_descriptor TYPE) ) IDENT)) ))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + (cast_expression ( (type_descriptor TYPE) ) IDENT)) + (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) }))) (return_statement return (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) - IDENT) ;) })))
(function_definition "int FUN_0002c1bc(undefined2 *param_1,int param_2)\n\n{\n  undefined2 uVar1;\n  ushort uVar2;\n  ushort uVar3;\n  undefined1 *puVar4;\n  \n  if (*(int *)(param_1 + 0x1a) == 0) {\n    param_1[0xd] = 9;\n  }\n  FUN_0001afb0(param_2,0x2014b50);\n  uVar1 = *param_1;\n  *(char *)(param_2 + 4) = (char)uVar1;\n  *(char *)(param_2 + 5) = (char)((ushort)uVar1 >> 8);\n  uVar1 = param_1[1];\n  *(char *)(param_2 + 6) = (char)uVar1;\n  *(char *)(param_2 + 7) = (char)((ushort)uVar1 >> 8);\n  uVar1 = param_1[2];\n  *(char *)(param_2 + 8) = (char)uVar1;\n  *(char *)(param_2 + 9) = (char)((ushort)uVar1 >> 8);\n  uVar1 = param_1[3];\n  *(char *)(param_2 + 10) = (char)uVar1;\n  *(char *)(param_2 + 0xb) = (char)((ushort)uVar1 >> 8);\n  uVar1 = param_1[4];\n  *(char *)(param_2 + 0xc) = (char)uVar1;\n  *(char *)(param_2 + 0xd) = (char)((ushort)uVar1 >> 8);\n  uVar1 = param_1[5];\n  *(char *)(param_2 + 0xe) = (char)uVar1;\n  *(char *)(param_2 + 0xf) = (char)((ushort)uVar1 >> 8);\n  FUN_0001afb0(param_2 + 0x10,*(undefined4 *)(param_1 + 6));\n  FUN_0001afb0(param_2 + 0x14,*(undefined4 *)(param_1 + 8));\n  FUN_0001afb0(param_2 + 0x18,*(undefined4 *)(param_1 + 10));\n  uVar1 = param_1[0xc];\n  *(char *)(param_2 + 0x1c) = (char)uVar1;\n  *(char *)(param_2 + 0x1d) = (char)((ushort)uVar1 >> 8);\n  uVar1 = param_1[0xd];\n  *(char *)(param_2 + 0x1e) = (char)uVar1;\n  *(char *)(param_2 + 0x1f) = (char)((ushort)uVar1 >> 8);\n  uVar1 = param_1[0xe];\n  *(char *)(param_2 + 0x20) = (char)uVar1;\n  *(char *)(param_2 + 0x21) = (char)((ushort)uVar1 >> 8);\n  uVar1 = param_1[0xf];\n  *(char *)(param_2 + 0x22) = (char)uVar1;\n  *(char *)(param_2 + 0x23) = (char)((ushort)uVar1 >> 8);\n  uVar1 = param_1[0x10];\n  *(char *)(param_2 + 0x24) = (char)uVar1;\n  *(char *)(param_2 + 0x25) = (char)((ushort)uVar1 >> 8);\n  FUN_0001afb0(param_2 + 0x26,*(undefined4 *)(param_1 + 0x12));\n  FUN_0001afb0(param_2 + 0x2a,*(undefined4 *)(param_1 + 0x14));\n  (*(code *)PTR_memcpy_0018fed4)(param_2 + 0x2e,*(undefined4 *)(param_1 + 0x16),param_1[0xc]);\n  puVar4 = (undefined1 *)(param_2 + 0x2e + (uint)(ushort)param_1[0xc]);\n  if (*(int *)(param_1 + 0x1a) == 0) {\n    *puVar4 = 0x55;\n    puVar4[1] = 0x54;\n    puVar4[2] = 5;\n    puVar4[3] = 0;\n    puVar4[4] = 1;\n    FUN_0001afb0(puVar4 + 5,*(undefined4 *)(param_1 + 0x18));\n    puVar4 = puVar4 + 9;\n  }\n  else {\n    uVar2 = param_1[0xd];\n    uVar3 = param_1[0xe];\n    (*(code *)PTR_memcpy_0018fed4)(puVar4,*(int *)(param_1 + 0x1a),(uint)uVar2 + (uint)uVar3);\n    puVar4 = puVar4 + (uint)uVar2 + (uint)uVar3;\n  }\n  return (int)puVar4 - param_2;\n}" (primitive_type "int") (function_declarator "FUN_0002c1bc(undefined2 *param_1,int param_2)" (identifier "FUN_0002c1bc") (parameter_list "(undefined2 *param_1,int param_2)" (( "(") (parameter_declaration "undefined2 *param_1" (type_identifier "undefined2") (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) (, ",") (parameter_declaration "int param_2" (primitive_type "int") (identifier "param_2")) () ")"))) (compound_statement "{\n  undefined2 uVar1;\n  ushort uVar2;\n  ushort uVar3;\n  undefined1 *puVar4;\n  \n  if (*(int *)(param_1 + 0x1a) == 0) {\n    param_1[0xd] = 9;\n  }\n  FUN_0001afb0(param_2,0x2014b50);\n  uVar1 = *param_1;\n  *(char *)(param_2 + 4) = (char)uVar1;\n  *(char *)(param_2 + 5) = (char)((ushort)uVar1 >> 8);\n  uVar1 = param_1[1];\n  *(char *)(param_2 + 6) = (char)uVar1;\n  *(char *)(param_2 + 7) = (char)((ushort)uVar1 >> 8);\n  uVar1 = param_1[2];\n  *(char *)(param_2 + 8) = (char)uVar1;\n  *(char *)(param_2 + 9) = (char)((ushort)uVar1 >> 8);\n  uVar1 = param_1[3];\n  *(char *)(param_2 + 10) = (char)uVar1;\n  *(char *)(param_2 + 0xb) = (char)((ushort)uVar1 >> 8);\n  uVar1 = param_1[4];\n  *(char *)(param_2 + 0xc) = (char)uVar1;\n  *(char *)(param_2 + 0xd) = (char)((ushort)uVar1 >> 8);\n  uVar1 = param_1[5];\n  *(char *)(param_2 + 0xe) = (char)uVar1;\n  *(char *)(param_2 + 0xf) = (char)((ushort)uVar1 >> 8);\n  FUN_0001afb0(param_2 + 0x10,*(undefined4 *)(param_1 + 6));\n  FUN_0001afb0(param_2 + 0x14,*(undefined4 *)(param_1 + 8));\n  FUN_0001afb0(param_2 + 0x18,*(undefined4 *)(param_1 + 10));\n  uVar1 = param_1[0xc];\n  *(char *)(param_2 + 0x1c) = (char)uVar1;\n  *(char *)(param_2 + 0x1d) = (char)((ushort)uVar1 >> 8);\n  uVar1 = param_1[0xd];\n  *(char *)(param_2 + 0x1e) = (char)uVar1;\n  *(char *)(param_2 + 0x1f) = (char)((ushort)uVar1 >> 8);\n  uVar1 = param_1[0xe];\n  *(char *)(param_2 + 0x20) = (char)uVar1;\n  *(char *)(param_2 + 0x21) = (char)((ushort)uVar1 >> 8);\n  uVar1 = param_1[0xf];\n  *(char *)(param_2 + 0x22) = (char)uVar1;\n  *(char *)(param_2 + 0x23) = (char)((ushort)uVar1 >> 8);\n  uVar1 = param_1[0x10];\n  *(char *)(param_2 + 0x24) = (char)uVar1;\n  *(char *)(param_2 + 0x25) = (char)((ushort)uVar1 >> 8);\n  FUN_0001afb0(param_2 + 0x26,*(undefined4 *)(param_1 + 0x12));\n  FUN_0001afb0(param_2 + 0x2a,*(undefined4 *)(param_1 + 0x14));\n  (*(code *)PTR_memcpy_0018fed4)(param_2 + 0x2e,*(undefined4 *)(param_1 + 0x16),param_1[0xc]);\n  puVar4 = (undefined1 *)(param_2 + 0x2e + (uint)(ushort)param_1[0xc]);\n  if (*(int *)(param_1 + 0x1a) == 0) {\n    *puVar4 = 0x55;\n    puVar4[1] = 0x54;\n    puVar4[2] = 5;\n    puVar4[3] = 0;\n    puVar4[4] = 1;\n    FUN_0001afb0(puVar4 + 5,*(undefined4 *)(param_1 + 0x18));\n    puVar4 = puVar4 + 9;\n  }\n  else {\n    uVar2 = param_1[0xd];\n    uVar3 = param_1[0xe];\n    (*(code *)PTR_memcpy_0018fed4)(puVar4,*(int *)(param_1 + 0x1a),(uint)uVar2 + (uint)uVar3);\n    puVar4 = puVar4 + (uint)uVar2 + (uint)uVar3;\n  }\n  return (int)puVar4 - param_2;\n}" ({ "{") (declaration "undefined2 uVar1;" (type_identifier "undefined2") (identifier "uVar1") (; ";")) (declaration "ushort uVar2;" (type_identifier "ushort") (identifier "uVar2") (; ";")) (declaration "ushort uVar3;" (type_identifier "ushort") (identifier "uVar3") (; ";")) (declaration "undefined1 *puVar4;" (type_identifier "undefined1") (pointer_declarator "*puVar4" (* "*") (identifier "puVar4")) (; ";")) (if_statement "if (*(int *)(param_1 + 0x1a) == 0) {\n    param_1[0xd] = 9;\n  }" (if "if") (parenthesized_expression "(*(int *)(param_1 + 0x1a) == 0)" (( "(") (binary_expression "*(int *)(param_1 + 0x1a) == 0" (pointer_expression "*(int *)(param_1 + 0x1a)" (* "*") (cast_expression "(int *)(param_1 + 0x1a)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x1a)" (( "(") (binary_expression "param_1 + 0x1a" (identifier "param_1") (+ "+") (number_literal "0x1a")) () ")")))) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    param_1[0xd] = 9;\n  }" ({ "{") (expression_statement "param_1[0xd] = 9;" (assignment_expression "param_1[0xd] = 9" (subscript_expression "param_1[0xd]" (identifier "param_1") ([ "[") (number_literal "0xd") (] "]")) (= "=") (number_literal "9")) (; ";")) (} "}"))) (expression_statement "FUN_0001afb0(param_2,0x2014b50);" (call_expression "FUN_0001afb0(param_2,0x2014b50)" (identifier "FUN_0001afb0") (argument_list "(param_2,0x2014b50)" (( "(") (identifier "param_2") (, ",") (number_literal "0x2014b50") () ")"))) (; ";")) (expression_statement "uVar1 = *param_1;" (assignment_expression "uVar1 = *param_1" (identifier "uVar1") (= "=") (pointer_expression "*param_1" (* "*") (identifier "param_1"))) (; ";")) (expression_statement "*(char *)(param_2 + 4) = (char)uVar1;" (assignment_expression "*(char *)(param_2 + 4) = (char)uVar1" (pointer_expression "*(char *)(param_2 + 4)" (* "*") (cast_expression "(char *)(param_2 + 4)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 4)" (( "(") (binary_expression "param_2 + 4" (identifier "param_2") (+ "+") (number_literal "4")) () ")")))) (= "=") (cast_expression "(char)uVar1" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (identifier "uVar1"))) (; ";")) (expression_statement "*(char *)(param_2 + 5) = (char)((ushort)uVar1 >> 8);" (assignment_expression "*(char *)(param_2 + 5) = (char)((ushort)uVar1 >> 8)" (pointer_expression "*(char *)(param_2 + 5)" (* "*") (cast_expression "(char *)(param_2 + 5)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 5)" (( "(") (binary_expression "param_2 + 5" (identifier "param_2") (+ "+") (number_literal "5")) () ")")))) (= "=") (cast_expression "(char)((ushort)uVar1 >> 8)" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (parenthesized_expression "((ushort)uVar1 >> 8)" (( "(") (binary_expression "(ushort)uVar1 >> 8" (cast_expression "(ushort)uVar1" (( "(") (type_descriptor "ushort" (type_identifier "ushort")) () ")") (identifier "uVar1")) (>> ">>") (number_literal "8")) () ")")))) (; ";")) (expression_statement "uVar1 = param_1[1];" (assignment_expression "uVar1 = param_1[1]" (identifier "uVar1") (= "=") (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "*(char *)(param_2 + 6) = (char)uVar1;" (assignment_expression "*(char *)(param_2 + 6) = (char)uVar1" (pointer_expression "*(char *)(param_2 + 6)" (* "*") (cast_expression "(char *)(param_2 + 6)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 6)" (( "(") (binary_expression "param_2 + 6" (identifier "param_2") (+ "+") (number_literal "6")) () ")")))) (= "=") (cast_expression "(char)uVar1" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (identifier "uVar1"))) (; ";")) (expression_statement "*(char *)(param_2 + 7) = (char)((ushort)uVar1 >> 8);" (assignment_expression "*(char *)(param_2 + 7) = (char)((ushort)uVar1 >> 8)" (pointer_expression "*(char *)(param_2 + 7)" (* "*") (cast_expression "(char *)(param_2 + 7)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 7)" (( "(") (binary_expression "param_2 + 7" (identifier "param_2") (+ "+") (number_literal "7")) () ")")))) (= "=") (cast_expression "(char)((ushort)uVar1 >> 8)" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (parenthesized_expression "((ushort)uVar1 >> 8)" (( "(") (binary_expression "(ushort)uVar1 >> 8" (cast_expression "(ushort)uVar1" (( "(") (type_descriptor "ushort" (type_identifier "ushort")) () ")") (identifier "uVar1")) (>> ">>") (number_literal "8")) () ")")))) (; ";")) (expression_statement "uVar1 = param_1[2];" (assignment_expression "uVar1 = param_1[2]" (identifier "uVar1") (= "=") (subscript_expression "param_1[2]" (identifier "param_1") ([ "[") (number_literal "2") (] "]"))) (; ";")) (expression_statement "*(char *)(param_2 + 8) = (char)uVar1;" (assignment_expression "*(char *)(param_2 + 8) = (char)uVar1" (pointer_expression "*(char *)(param_2 + 8)" (* "*") (cast_expression "(char *)(param_2 + 8)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 8)" (( "(") (binary_expression "param_2 + 8" (identifier "param_2") (+ "+") (number_literal "8")) () ")")))) (= "=") (cast_expression "(char)uVar1" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (identifier "uVar1"))) (; ";")) (expression_statement "*(char *)(param_2 + 9) = (char)((ushort)uVar1 >> 8);" (assignment_expression "*(char *)(param_2 + 9) = (char)((ushort)uVar1 >> 8)" (pointer_expression "*(char *)(param_2 + 9)" (* "*") (cast_expression "(char *)(param_2 + 9)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 9)" (( "(") (binary_expression "param_2 + 9" (identifier "param_2") (+ "+") (number_literal "9")) () ")")))) (= "=") (cast_expression "(char)((ushort)uVar1 >> 8)" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (parenthesized_expression "((ushort)uVar1 >> 8)" (( "(") (binary_expression "(ushort)uVar1 >> 8" (cast_expression "(ushort)uVar1" (( "(") (type_descriptor "ushort" (type_identifier "ushort")) () ")") (identifier "uVar1")) (>> ">>") (number_literal "8")) () ")")))) (; ";")) (expression_statement "uVar1 = param_1[3];" (assignment_expression "uVar1 = param_1[3]" (identifier "uVar1") (= "=") (subscript_expression "param_1[3]" (identifier "param_1") ([ "[") (number_literal "3") (] "]"))) (; ";")) (expression_statement "*(char *)(param_2 + 10) = (char)uVar1;" (assignment_expression "*(char *)(param_2 + 10) = (char)uVar1" (pointer_expression "*(char *)(param_2 + 10)" (* "*") (cast_expression "(char *)(param_2 + 10)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 10)" (( "(") (binary_expression "param_2 + 10" (identifier "param_2") (+ "+") (number_literal "10")) () ")")))) (= "=") (cast_expression "(char)uVar1" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (identifier "uVar1"))) (; ";")) (expression_statement "*(char *)(param_2 + 0xb) = (char)((ushort)uVar1 >> 8);" (assignment_expression "*(char *)(param_2 + 0xb) = (char)((ushort)uVar1 >> 8)" (pointer_expression "*(char *)(param_2 + 0xb)" (* "*") (cast_expression "(char *)(param_2 + 0xb)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0xb)" (( "(") (binary_expression "param_2 + 0xb" (identifier "param_2") (+ "+") (number_literal "0xb")) () ")")))) (= "=") (cast_expression "(char)((ushort)uVar1 >> 8)" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (parenthesized_expression "((ushort)uVar1 >> 8)" (( "(") (binary_expression "(ushort)uVar1 >> 8" (cast_expression "(ushort)uVar1" (( "(") (type_descriptor "ushort" (type_identifier "ushort")) () ")") (identifier "uVar1")) (>> ">>") (number_literal "8")) () ")")))) (; ";")) (expression_statement "uVar1 = param_1[4];" (assignment_expression "uVar1 = param_1[4]" (identifier "uVar1") (= "=") (subscript_expression "param_1[4]" (identifier "param_1") ([ "[") (number_literal "4") (] "]"))) (; ";")) (expression_statement "*(char *)(param_2 + 0xc) = (char)uVar1;" (assignment_expression "*(char *)(param_2 + 0xc) = (char)uVar1" (pointer_expression "*(char *)(param_2 + 0xc)" (* "*") (cast_expression "(char *)(param_2 + 0xc)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0xc)" (( "(") (binary_expression "param_2 + 0xc" (identifier "param_2") (+ "+") (number_literal "0xc")) () ")")))) (= "=") (cast_expression "(char)uVar1" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (identifier "uVar1"))) (; ";")) (expression_statement "*(char *)(param_2 + 0xd) = (char)((ushort)uVar1 >> 8);" (assignment_expression "*(char *)(param_2 + 0xd) = (char)((ushort)uVar1 >> 8)" (pointer_expression "*(char *)(param_2 + 0xd)" (* "*") (cast_expression "(char *)(param_2 + 0xd)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0xd)" (( "(") (binary_expression "param_2 + 0xd" (identifier "param_2") (+ "+") (number_literal "0xd")) () ")")))) (= "=") (cast_expression "(char)((ushort)uVar1 >> 8)" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (parenthesized_expression "((ushort)uVar1 >> 8)" (( "(") (binary_expression "(ushort)uVar1 >> 8" (cast_expression "(ushort)uVar1" (( "(") (type_descriptor "ushort" (type_identifier "ushort")) () ")") (identifier "uVar1")) (>> ">>") (number_literal "8")) () ")")))) (; ";")) (expression_statement "uVar1 = param_1[5];" (assignment_expression "uVar1 = param_1[5]" (identifier "uVar1") (= "=") (subscript_expression "param_1[5]" (identifier "param_1") ([ "[") (number_literal "5") (] "]"))) (; ";")) (expression_statement "*(char *)(param_2 + 0xe) = (char)uVar1;" (assignment_expression "*(char *)(param_2 + 0xe) = (char)uVar1" (pointer_expression "*(char *)(param_2 + 0xe)" (* "*") (cast_expression "(char *)(param_2 + 0xe)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0xe)" (( "(") (binary_expression "param_2 + 0xe" (identifier "param_2") (+ "+") (number_literal "0xe")) () ")")))) (= "=") (cast_expression "(char)uVar1" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (identifier "uVar1"))) (; ";")) (expression_statement "*(char *)(param_2 + 0xf) = (char)((ushort)uVar1 >> 8);" (assignment_expression "*(char *)(param_2 + 0xf) = (char)((ushort)uVar1 >> 8)" (pointer_expression "*(char *)(param_2 + 0xf)" (* "*") (cast_expression "(char *)(param_2 + 0xf)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0xf)" (( "(") (binary_expression "param_2 + 0xf" (identifier "param_2") (+ "+") (number_literal "0xf")) () ")")))) (= "=") (cast_expression "(char)((ushort)uVar1 >> 8)" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (parenthesized_expression "((ushort)uVar1 >> 8)" (( "(") (binary_expression "(ushort)uVar1 >> 8" (cast_expression "(ushort)uVar1" (( "(") (type_descriptor "ushort" (type_identifier "ushort")) () ")") (identifier "uVar1")) (>> ">>") (number_literal "8")) () ")")))) (; ";")) (expression_statement "FUN_0001afb0(param_2 + 0x10,*(undefined4 *)(param_1 + 6));" (call_expression "FUN_0001afb0(param_2 + 0x10,*(undefined4 *)(param_1 + 6))" (identifier "FUN_0001afb0") (argument_list "(param_2 + 0x10,*(undefined4 *)(param_1 + 6))" (( "(") (binary_expression "param_2 + 0x10" (identifier "param_2") (+ "+") (number_literal "0x10")) (, ",") (pointer_expression "*(undefined4 *)(param_1 + 6)" (* "*") (cast_expression "(undefined4 *)(param_1 + 6)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 6)" (( "(") (binary_expression "param_1 + 6" (identifier "param_1") (+ "+") (number_literal "6")) () ")")))) () ")"))) (; ";")) (expression_statement "FUN_0001afb0(param_2 + 0x14,*(undefined4 *)(param_1 + 8));" (call_expression "FUN_0001afb0(param_2 + 0x14,*(undefined4 *)(param_1 + 8))" (identifier "FUN_0001afb0") (argument_list "(param_2 + 0x14,*(undefined4 *)(param_1 + 8))" (( "(") (binary_expression "param_2 + 0x14" (identifier "param_2") (+ "+") (number_literal "0x14")) (, ",") (pointer_expression "*(undefined4 *)(param_1 + 8)" (* "*") (cast_expression "(undefined4 *)(param_1 + 8)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 8)" (( "(") (binary_expression "param_1 + 8" (identifier "param_1") (+ "+") (number_literal "8")) () ")")))) () ")"))) (; ";")) (expression_statement "FUN_0001afb0(param_2 + 0x18,*(undefined4 *)(param_1 + 10));" (call_expression "FUN_0001afb0(param_2 + 0x18,*(undefined4 *)(param_1 + 10))" (identifier "FUN_0001afb0") (argument_list "(param_2 + 0x18,*(undefined4 *)(param_1 + 10))" (( "(") (binary_expression "param_2 + 0x18" (identifier "param_2") (+ "+") (number_literal "0x18")) (, ",") (pointer_expression "*(undefined4 *)(param_1 + 10)" (* "*") (cast_expression "(undefined4 *)(param_1 + 10)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 10)" (( "(") (binary_expression "param_1 + 10" (identifier "param_1") (+ "+") (number_literal "10")) () ")")))) () ")"))) (; ";")) (expression_statement "uVar1 = param_1[0xc];" (assignment_expression "uVar1 = param_1[0xc]" (identifier "uVar1") (= "=") (subscript_expression "param_1[0xc]" (identifier "param_1") ([ "[") (number_literal "0xc") (] "]"))) (; ";")) (expression_statement "*(char *)(param_2 + 0x1c) = (char)uVar1;" (assignment_expression "*(char *)(param_2 + 0x1c) = (char)uVar1" (pointer_expression "*(char *)(param_2 + 0x1c)" (* "*") (cast_expression "(char *)(param_2 + 0x1c)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x1c)" (( "(") (binary_expression "param_2 + 0x1c" (identifier "param_2") (+ "+") (number_literal "0x1c")) () ")")))) (= "=") (cast_expression "(char)uVar1" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (identifier "uVar1"))) (; ";")) (expression_statement "*(char *)(param_2 + 0x1d) = (char)((ushort)uVar1 >> 8);" (assignment_expression "*(char *)(param_2 + 0x1d) = (char)((ushort)uVar1 >> 8)" (pointer_expression "*(char *)(param_2 + 0x1d)" (* "*") (cast_expression "(char *)(param_2 + 0x1d)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x1d)" (( "(") (binary_expression "param_2 + 0x1d" (identifier "param_2") (+ "+") (number_literal "0x1d")) () ")")))) (= "=") (cast_expression "(char)((ushort)uVar1 >> 8)" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (parenthesized_expression "((ushort)uVar1 >> 8)" (( "(") (binary_expression "(ushort)uVar1 >> 8" (cast_expression "(ushort)uVar1" (( "(") (type_descriptor "ushort" (type_identifier "ushort")) () ")") (identifier "uVar1")) (>> ">>") (number_literal "8")) () ")")))) (; ";")) (expression_statement "uVar1 = param_1[0xd];" (assignment_expression "uVar1 = param_1[0xd]" (identifier "uVar1") (= "=") (subscript_expression "param_1[0xd]" (identifier "param_1") ([ "[") (number_literal "0xd") (] "]"))) (; ";")) (expression_statement "*(char *)(param_2 + 0x1e) = (char)uVar1;" (assignment_expression "*(char *)(param_2 + 0x1e) = (char)uVar1" (pointer_expression "*(char *)(param_2 + 0x1e)" (* "*") (cast_expression "(char *)(param_2 + 0x1e)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x1e)" (( "(") (binary_expression "param_2 + 0x1e" (identifier "param_2") (+ "+") (number_literal "0x1e")) () ")")))) (= "=") (cast_expression "(char)uVar1" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (identifier "uVar1"))) (; ";")) (expression_statement "*(char *)(param_2 + 0x1f) = (char)((ushort)uVar1 >> 8);" (assignment_expression "*(char *)(param_2 + 0x1f) = (char)((ushort)uVar1 >> 8)" (pointer_expression "*(char *)(param_2 + 0x1f)" (* "*") (cast_expression "(char *)(param_2 + 0x1f)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x1f)" (( "(") (binary_expression "param_2 + 0x1f" (identifier "param_2") (+ "+") (number_literal "0x1f")) () ")")))) (= "=") (cast_expression "(char)((ushort)uVar1 >> 8)" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (parenthesized_expression "((ushort)uVar1 >> 8)" (( "(") (binary_expression "(ushort)uVar1 >> 8" (cast_expression "(ushort)uVar1" (( "(") (type_descriptor "ushort" (type_identifier "ushort")) () ")") (identifier "uVar1")) (>> ">>") (number_literal "8")) () ")")))) (; ";")) (expression_statement "uVar1 = param_1[0xe];" (assignment_expression "uVar1 = param_1[0xe]" (identifier "uVar1") (= "=") (subscript_expression "param_1[0xe]" (identifier "param_1") ([ "[") (number_literal "0xe") (] "]"))) (; ";")) (expression_statement "*(char *)(param_2 + 0x20) = (char)uVar1;" (assignment_expression "*(char *)(param_2 + 0x20) = (char)uVar1" (pointer_expression "*(char *)(param_2 + 0x20)" (* "*") (cast_expression "(char *)(param_2 + 0x20)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x20)" (( "(") (binary_expression "param_2 + 0x20" (identifier "param_2") (+ "+") (number_literal "0x20")) () ")")))) (= "=") (cast_expression "(char)uVar1" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (identifier "uVar1"))) (; ";")) (expression_statement "*(char *)(param_2 + 0x21) = (char)((ushort)uVar1 >> 8);" (assignment_expression "*(char *)(param_2 + 0x21) = (char)((ushort)uVar1 >> 8)" (pointer_expression "*(char *)(param_2 + 0x21)" (* "*") (cast_expression "(char *)(param_2 + 0x21)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x21)" (( "(") (binary_expression "param_2 + 0x21" (identifier "param_2") (+ "+") (number_literal "0x21")) () ")")))) (= "=") (cast_expression "(char)((ushort)uVar1 >> 8)" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (parenthesized_expression "((ushort)uVar1 >> 8)" (( "(") (binary_expression "(ushort)uVar1 >> 8" (cast_expression "(ushort)uVar1" (( "(") (type_descriptor "ushort" (type_identifier "ushort")) () ")") (identifier "uVar1")) (>> ">>") (number_literal "8")) () ")")))) (; ";")) (expression_statement "uVar1 = param_1[0xf];" (assignment_expression "uVar1 = param_1[0xf]" (identifier "uVar1") (= "=") (subscript_expression "param_1[0xf]" (identifier "param_1") ([ "[") (number_literal "0xf") (] "]"))) (; ";")) (expression_statement "*(char *)(param_2 + 0x22) = (char)uVar1;" (assignment_expression "*(char *)(param_2 + 0x22) = (char)uVar1" (pointer_expression "*(char *)(param_2 + 0x22)" (* "*") (cast_expression "(char *)(param_2 + 0x22)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x22)" (( "(") (binary_expression "param_2 + 0x22" (identifier "param_2") (+ "+") (number_literal "0x22")) () ")")))) (= "=") (cast_expression "(char)uVar1" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (identifier "uVar1"))) (; ";")) (expression_statement "*(char *)(param_2 + 0x23) = (char)((ushort)uVar1 >> 8);" (assignment_expression "*(char *)(param_2 + 0x23) = (char)((ushort)uVar1 >> 8)" (pointer_expression "*(char *)(param_2 + 0x23)" (* "*") (cast_expression "(char *)(param_2 + 0x23)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x23)" (( "(") (binary_expression "param_2 + 0x23" (identifier "param_2") (+ "+") (number_literal "0x23")) () ")")))) (= "=") (cast_expression "(char)((ushort)uVar1 >> 8)" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (parenthesized_expression "((ushort)uVar1 >> 8)" (( "(") (binary_expression "(ushort)uVar1 >> 8" (cast_expression "(ushort)uVar1" (( "(") (type_descriptor "ushort" (type_identifier "ushort")) () ")") (identifier "uVar1")) (>> ">>") (number_literal "8")) () ")")))) (; ";")) (expression_statement "uVar1 = param_1[0x10];" (assignment_expression "uVar1 = param_1[0x10]" (identifier "uVar1") (= "=") (subscript_expression "param_1[0x10]" (identifier "param_1") ([ "[") (number_literal "0x10") (] "]"))) (; ";")) (expression_statement "*(char *)(param_2 + 0x24) = (char)uVar1;" (assignment_expression "*(char *)(param_2 + 0x24) = (char)uVar1" (pointer_expression "*(char *)(param_2 + 0x24)" (* "*") (cast_expression "(char *)(param_2 + 0x24)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x24)" (( "(") (binary_expression "param_2 + 0x24" (identifier "param_2") (+ "+") (number_literal "0x24")) () ")")))) (= "=") (cast_expression "(char)uVar1" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (identifier "uVar1"))) (; ";")) (expression_statement "*(char *)(param_2 + 0x25) = (char)((ushort)uVar1 >> 8);" (assignment_expression "*(char *)(param_2 + 0x25) = (char)((ushort)uVar1 >> 8)" (pointer_expression "*(char *)(param_2 + 0x25)" (* "*") (cast_expression "(char *)(param_2 + 0x25)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x25)" (( "(") (binary_expression "param_2 + 0x25" (identifier "param_2") (+ "+") (number_literal "0x25")) () ")")))) (= "=") (cast_expression "(char)((ushort)uVar1 >> 8)" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (parenthesized_expression "((ushort)uVar1 >> 8)" (( "(") (binary_expression "(ushort)uVar1 >> 8" (cast_expression "(ushort)uVar1" (( "(") (type_descriptor "ushort" (type_identifier "ushort")) () ")") (identifier "uVar1")) (>> ">>") (number_literal "8")) () ")")))) (; ";")) (expression_statement "FUN_0001afb0(param_2 + 0x26,*(undefined4 *)(param_1 + 0x12));" (call_expression "FUN_0001afb0(param_2 + 0x26,*(undefined4 *)(param_1 + 0x12))" (identifier "FUN_0001afb0") (argument_list "(param_2 + 0x26,*(undefined4 *)(param_1 + 0x12))" (( "(") (binary_expression "param_2 + 0x26" (identifier "param_2") (+ "+") (number_literal "0x26")) (, ",") (pointer_expression "*(undefined4 *)(param_1 + 0x12)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0x12)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x12)" (( "(") (binary_expression "param_1 + 0x12" (identifier "param_1") (+ "+") (number_literal "0x12")) () ")")))) () ")"))) (; ";")) (expression_statement "FUN_0001afb0(param_2 + 0x2a,*(undefined4 *)(param_1 + 0x14));" (call_expression "FUN_0001afb0(param_2 + 0x2a,*(undefined4 *)(param_1 + 0x14))" (identifier "FUN_0001afb0") (argument_list "(param_2 + 0x2a,*(undefined4 *)(param_1 + 0x14))" (( "(") (binary_expression "param_2 + 0x2a" (identifier "param_2") (+ "+") (number_literal "0x2a")) (, ",") (pointer_expression "*(undefined4 *)(param_1 + 0x14)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0x14)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x14)" (( "(") (binary_expression "param_1 + 0x14" (identifier "param_1") (+ "+") (number_literal "0x14")) () ")")))) () ")"))) (; ";")) (expression_statement "(*(code *)PTR_memcpy_0018fed4)(param_2 + 0x2e,*(undefined4 *)(param_1 + 0x16),param_1[0xc]);" (call_expression "(*(code *)PTR_memcpy_0018fed4)(param_2 + 0x2e,*(undefined4 *)(param_1 + 0x16),param_1[0xc])" (parenthesized_expression "(*(code *)PTR_memcpy_0018fed4)" (( "(") (pointer_expression "*(code *)PTR_memcpy_0018fed4" (* "*") (cast_expression "(code *)PTR_memcpy_0018fed4" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_memcpy_0018fed4"))) () ")")) (argument_list "(param_2 + 0x2e,*(undefined4 *)(param_1 + 0x16),param_1[0xc])" (( "(") (binary_expression "param_2 + 0x2e" (identifier "param_2") (+ "+") (number_literal "0x2e")) (, ",") (pointer_expression "*(undefined4 *)(param_1 + 0x16)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0x16)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x16)" (( "(") (binary_expression "param_1 + 0x16" (identifier "param_1") (+ "+") (number_literal "0x16")) () ")")))) (, ",") (subscript_expression "param_1[0xc]" (identifier "param_1") ([ "[") (number_literal "0xc") (] "]")) () ")"))) (; ";")) (expression_statement "puVar4 = (undefined1 *)(param_2 + 0x2e + (uint)(ushort)param_1[0xc]);" (assignment_expression "puVar4 = (undefined1 *)(param_2 + 0x2e + (uint)(ushort)param_1[0xc])" (identifier "puVar4") (= "=") (cast_expression "(undefined1 *)(param_2 + 0x2e + (uint)(ushort)param_1[0xc])" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x2e + (uint)(ushort)param_1[0xc])" (( "(") (binary_expression "param_2 + 0x2e + (uint)(ushort)param_1[0xc]" (binary_expression "param_2 + 0x2e" (identifier "param_2") (+ "+") (number_literal "0x2e")) (+ "+") (cast_expression "(uint)(ushort)param_1[0xc]" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (cast_expression "(ushort)param_1[0xc]" (( "(") (type_descriptor "ushort" (type_identifier "ushort")) () ")") (subscript_expression "param_1[0xc]" (identifier "param_1") ([ "[") (number_literal "0xc") (] "]"))))) () ")")))) (; ";")) (if_statement "if (*(int *)(param_1 + 0x1a) == 0) {\n    *puVar4 = 0x55;\n    puVar4[1] = 0x54;\n    puVar4[2] = 5;\n    puVar4[3] = 0;\n    puVar4[4] = 1;\n    FUN_0001afb0(puVar4 + 5,*(undefined4 *)(param_1 + 0x18));\n    puVar4 = puVar4 + 9;\n  }\n  else {\n    uVar2 = param_1[0xd];\n    uVar3 = param_1[0xe];\n    (*(code *)PTR_memcpy_0018fed4)(puVar4,*(int *)(param_1 + 0x1a),(uint)uVar2 + (uint)uVar3);\n    puVar4 = puVar4 + (uint)uVar2 + (uint)uVar3;\n  }" (if "if") (parenthesized_expression "(*(int *)(param_1 + 0x1a) == 0)" (( "(") (binary_expression "*(int *)(param_1 + 0x1a) == 0" (pointer_expression "*(int *)(param_1 + 0x1a)" (* "*") (cast_expression "(int *)(param_1 + 0x1a)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x1a)" (( "(") (binary_expression "param_1 + 0x1a" (identifier "param_1") (+ "+") (number_literal "0x1a")) () ")")))) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    *puVar4 = 0x55;\n    puVar4[1] = 0x54;\n    puVar4[2] = 5;\n    puVar4[3] = 0;\n    puVar4[4] = 1;\n    FUN_0001afb0(puVar4 + 5,*(undefined4 *)(param_1 + 0x18));\n    puVar4 = puVar4 + 9;\n  }" ({ "{") (expression_statement "*puVar4 = 0x55;" (assignment_expression "*puVar4 = 0x55" (pointer_expression "*puVar4" (* "*") (identifier "puVar4")) (= "=") (number_literal "0x55")) (; ";")) (expression_statement "puVar4[1] = 0x54;" (assignment_expression "puVar4[1] = 0x54" (subscript_expression "puVar4[1]" (identifier "puVar4") ([ "[") (number_literal "1") (] "]")) (= "=") (number_literal "0x54")) (; ";")) (expression_statement "puVar4[2] = 5;" (assignment_expression "puVar4[2] = 5" (subscript_expression "puVar4[2]" (identifier "puVar4") ([ "[") (number_literal "2") (] "]")) (= "=") (number_literal "5")) (; ";")) (expression_statement "puVar4[3] = 0;" (assignment_expression "puVar4[3] = 0" (subscript_expression "puVar4[3]" (identifier "puVar4") ([ "[") (number_literal "3") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar4[4] = 1;" (assignment_expression "puVar4[4] = 1" (subscript_expression "puVar4[4]" (identifier "puVar4") ([ "[") (number_literal "4") (] "]")) (= "=") (number_literal "1")) (; ";")) (expression_statement "FUN_0001afb0(puVar4 + 5,*(undefined4 *)(param_1 + 0x18));" (call_expression "FUN_0001afb0(puVar4 + 5,*(undefined4 *)(param_1 + 0x18))" (identifier "FUN_0001afb0") (argument_list "(puVar4 + 5,*(undefined4 *)(param_1 + 0x18))" (( "(") (binary_expression "puVar4 + 5" (identifier "puVar4") (+ "+") (number_literal "5")) (, ",") (pointer_expression "*(undefined4 *)(param_1 + 0x18)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0x18)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x18)" (( "(") (binary_expression "param_1 + 0x18" (identifier "param_1") (+ "+") (number_literal "0x18")) () ")")))) () ")"))) (; ";")) (expression_statement "puVar4 = puVar4 + 9;" (assignment_expression "puVar4 = puVar4 + 9" (identifier "puVar4") (= "=") (binary_expression "puVar4 + 9" (identifier "puVar4") (+ "+") (number_literal "9"))) (; ";")) (} "}")) (else_clause "else {\n    uVar2 = param_1[0xd];\n    uVar3 = param_1[0xe];\n    (*(code *)PTR_memcpy_0018fed4)(puVar4,*(int *)(param_1 + 0x1a),(uint)uVar2 + (uint)uVar3);\n    puVar4 = puVar4 + (uint)uVar2 + (uint)uVar3;\n  }" (else "else") (compound_statement "{\n    uVar2 = param_1[0xd];\n    uVar3 = param_1[0xe];\n    (*(code *)PTR_memcpy_0018fed4)(puVar4,*(int *)(param_1 + 0x1a),(uint)uVar2 + (uint)uVar3);\n    puVar4 = puVar4 + (uint)uVar2 + (uint)uVar3;\n  }" ({ "{") (expression_statement "uVar2 = param_1[0xd];" (assignment_expression "uVar2 = param_1[0xd]" (identifier "uVar2") (= "=") (subscript_expression "param_1[0xd]" (identifier "param_1") ([ "[") (number_literal "0xd") (] "]"))) (; ";")) (expression_statement "uVar3 = param_1[0xe];" (assignment_expression "uVar3 = param_1[0xe]" (identifier "uVar3") (= "=") (subscript_expression "param_1[0xe]" (identifier "param_1") ([ "[") (number_literal "0xe") (] "]"))) (; ";")) (expression_statement "(*(code *)PTR_memcpy_0018fed4)(puVar4,*(int *)(param_1 + 0x1a),(uint)uVar2 + (uint)uVar3);" (call_expression "(*(code *)PTR_memcpy_0018fed4)(puVar4,*(int *)(param_1 + 0x1a),(uint)uVar2 + (uint)uVar3)" (parenthesized_expression "(*(code *)PTR_memcpy_0018fed4)" (( "(") (pointer_expression "*(code *)PTR_memcpy_0018fed4" (* "*") (cast_expression "(code *)PTR_memcpy_0018fed4" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_memcpy_0018fed4"))) () ")")) (argument_list "(puVar4,*(int *)(param_1 + 0x1a),(uint)uVar2 + (uint)uVar3)" (( "(") (identifier "puVar4") (, ",") (pointer_expression "*(int *)(param_1 + 0x1a)" (* "*") (cast_expression "(int *)(param_1 + 0x1a)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x1a)" (( "(") (binary_expression "param_1 + 0x1a" (identifier "param_1") (+ "+") (number_literal "0x1a")) () ")")))) (, ",") (binary_expression "(uint)uVar2 + (uint)uVar3" (cast_expression "(uint)uVar2" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "uVar2")) (+ "+") (cast_expression "(uint)uVar3" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "uVar3"))) () ")"))) (; ";")) (expression_statement "puVar4 = puVar4 + (uint)uVar2 + (uint)uVar3;" (assignment_expression "puVar4 = puVar4 + (uint)uVar2 + (uint)uVar3" (identifier "puVar4") (= "=") (binary_expression "puVar4 + (uint)uVar2 + (uint)uVar3" (binary_expression "puVar4 + (uint)uVar2" (identifier "puVar4") (+ "+") (cast_expression "(uint)uVar2" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "uVar2"))) (+ "+") (cast_expression "(uint)uVar3" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "uVar3")))) (; ";")) (} "}")))) (return_statement "return (int)puVar4 - param_2;" (return "return") (binary_expression "(int)puVar4 - param_2" (cast_expression "(int)puVar4" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar4")) (- "-") (identifier "param_2")) (; ";")) (} "}")))
(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: (primitive_type) declarator: (identifier)))) body: (compound_statement (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (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: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (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: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (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: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (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: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (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: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (number_literal)))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (binary_expression left: (identifier) right: (number_literal)) (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (binary_expression left: (identifier) right: (number_literal)) (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (binary_expression left: (identifier) right: (number_literal)) (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (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: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (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: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (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: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (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: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (number_literal)))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (binary_expression left: (identifier) right: (number_literal)) (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (binary_expression left: (identifier) right: (number_literal)) (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list (binary_expression left: (identifier) right: (number_literal)) (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))))) (subscript_expression argument: (identifier) index: (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: (binary_expression left: (identifier) right: (number_literal)) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (cast_expression type: (type_descriptor type: (type_identifier)) value: (subscript_expression argument: (identifier) index: (number_literal))))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) consequence: (compound_statement (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 (call_expression function: (identifier) arguments: (argument_list (binary_expression left: (identifier) right: (number_literal)) (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) alternative: (else_clause (compound_statement (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 (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list (identifier) (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier))) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)))))))) (return_statement (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (identifier))))))

int MASKED(undefined2 *param_1,int param_2)

{
  undefined2 uVar1;
  ushort uVar2;
  ushort uVar3;
  undefined1 *puVar4;
  
  if (*(int *)(param_1 + 0x1a) == 0) {
    param_1[0xd] = 9;
  }
  FUN_0001afb0(param_2,0x2014b50);
  uVar1 = *param_1;
  *(char *)(param_2 + 4) = (char)uVar1;
  *(char *)(param_2 + 5) = (char)((ushort)uVar1 >> 8);
  uVar1 = param_1[1];
  *(char *)(param_2 + 6) = (char)uVar1;
  *(char *)(param_2 + 7) = (char)((ushort)uVar1 >> 8);
  uVar1 = param_1[2];
  *(char *)(param_2 + 8) = (char)uVar1;
  *(char *)(param_2 + 9) = (char)((ushort)uVar1 >> 8);
  uVar1 = param_1[3];
  *(char *)(param_2 + 10) = (char)uVar1;
  *(char *)(param_2 + 0xb) = (char)((ushort)uVar1 >> 8);
  uVar1 = param_1[4];
  *(char *)(param_2 + 0xc) = (char)uVar1;
  *(char *)(param_2 + 0xd) = (char)((ushort)uVar1 >> 8);
  uVar1 = param_1[5];
  *(char *)(param_2 + 0xe) = (char)uVar1;
  *(char *)(param_2 + 0xf) = (char)((ushort)uVar1 >> 8);
  FUN_0001afb0(param_2 + 0x10,*(undefined4 *)(param_1 + 6));
  FUN_0001afb0(param_2 + 0x14,*(undefined4 *)(param_1 + 8));
  FUN_0001afb0(param_2 + 0x18,*(undefined4 *)(param_1 + 10));
  uVar1 = param_1[0xc];
  *(char *)(param_2 + 0x1c) = (char)uVar1;
  *(char *)(param_2 + 0x1d) = (char)((ushort)uVar1 >> 8);
  uVar1 = param_1[0xd];
  *(char *)(param_2 + 0x1e) = (char)uVar1;
  *(char *)(param_2 + 0x1f) = (char)((ushort)uVar1 >> 8);
  uVar1 = param_1[0xe];
  *(char *)(param_2 + 0x20) = (char)uVar1;
  *(char *)(param_2 + 0x21) = (char)((ushort)uVar1 >> 8);
  uVar1 = param_1[0xf];
  *(char *)(param_2 + 0x22) = (char)uVar1;
  *(char *)(param_2 + 0x23) = (char)((ushort)uVar1 >> 8);
  uVar1 = param_1[0x10];
  *(char *)(param_2 + 0x24) = (char)uVar1;
  *(char *)(param_2 + 0x25) = (char)((ushort)uVar1 >> 8);
  FUN_0001afb0(param_2 + 0x26,*(undefined4 *)(param_1 + 0x12));
  FUN_0001afb0(param_2 + 0x2a,*(undefined4 *)(param_1 + 0x14));
  (*(code *)PTR_memcpy_0018fed4)(param_2 + 0x2e,*(undefined4 *)(param_1 + 0x16),param_1[0xc]);
  puVar4 = (undefined1 *)(param_2 + 0x2e + (uint)(ushort)param_1[0xc]);
  if (*(int *)(param_1 + 0x1a) == 0) {
    *puVar4 = 0x55;
    puVar4[1] = 0x54;
    puVar4[2] = 5;
    puVar4[3] = 0;
    puVar4[4] = 1;
    FUN_0001afb0(puVar4 + 5,*(undefined4 *)(param_1 + 0x18));
    puVar4 = puVar4 + 9;
  }
  else {
    uVar2 = param_1[0xd];
    uVar3 = param_1[0xe];
    (*(code *)PTR_memcpy_0018fed4)(puVar4,*(int *)(param_1 + 0x1a),(uint)uVar2 + (uint)uVar3);
    puVar4 = puVar4 + (uint)uVar2 + (uint)uVar3;
  }
  return (int)puVar4 - param_2;
}

