
/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */

void md5_process_bytes(void *buffer,size_t len,md5_ctx *ctx)

{
}



/* WARNING: Function: __i686.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */

void FUN_00240970(undefined4 *param_1,uint param_2,int param_3)

{
  uint uVar1;
  int iVar2;
  uint uVar3;
  uint uVar4;
  uint uVar5;
  uint uVar6;
  undefined4 *puVar7;
  undefined4 *puVar8;
  undefined4 *local_20;
  
  iVar2 = *(int *)(param_3 + 0x18);
  if (iVar2 != 0) {
    uVar1 = 0x80U - iVar2;
    if (param_2 < 0x80U - iVar2) {
      uVar1 = param_2;
    }
    memcpy((void *)(param_3 + 0x1c + iVar2),param_1,uVar1);
    *(int *)(param_3 + 0x18) = *(int *)(param_3 + 0x18) + uVar1;
    uVar5 = iVar2 + uVar1;
    if (0x40 < uVar5) {
      FUN_00240130(param_3 + 0x1c,uVar5 & 0xffffffc0,param_3);
      uVar4 = uVar5 & 0x3f;
      puVar8 = (undefined4 *)(param_3 + 0x1c + (uVar5 & 0xffffffc0));
      if (uVar4 < 4) {
        if ((uVar4 != 0) &&
           (*(undefined1 *)(param_3 + 0x1c) = *(undefined1 *)puVar8, (uVar5 & 2) != 0)) {
          *(undefined2 *)(param_3 + 0x1a + uVar4) = *(undefined2 *)((int)puVar8 + (uVar4 - 2));
        }
      }
      else {
        *(undefined4 *)(param_3 + 0x1c) = *puVar8;
        *(undefined4 *)(param_3 + 0x18 + uVar4) = *(undefined4 *)((uVar4 - 4) + (int)puVar8);
        uVar6 = param_3 + 0x20U & 0xfffffffc;
        iVar2 = (param_3 + 0x1c) - uVar6;
        uVar5 = iVar2 + uVar4 & 0xfffffffc;
        if (3 < uVar5) {
          uVar3 = 0;
          do {
            *(undefined4 *)(uVar6 + uVar3) = *(undefined4 *)((int)puVar8 + (uVar3 - iVar2));
            uVar3 = uVar3 + 4;
          } while (uVar3 < uVar5);
        }
      }
      *(uint *)(param_3 + 0x18) = uVar4;
    }
    param_2 = param_2 - uVar1;
    param_1 = (undefined4 *)((int)param_1 + uVar1);
  }
  puVar8 = param_1;
  if (0x40 < param_2) {
    if (((uint)param_1 & 3) != 0) {
      uVar1 = param_2 - 0x41 >> 6;
      puVar8 = param_1 + (uVar1 + 1) * 0x10;
      do {
        puVar7 = param_1 + 0x10;
        *(undefined4 *)(param_3 + 0x1c) = *param_1;
        *(undefined4 *)(param_3 + 0x20) = param_1[1];
        *(undefined4 *)(param_3 + 0x24) = param_1[2];
        *(undefined4 *)(param_3 + 0x28) = param_1[3];
        *(undefined4 *)(param_3 + 0x2c) = param_1[4];
        *(undefined4 *)(param_3 + 0x30) = param_1[5];
        *(undefined4 *)(param_3 + 0x34) = param_1[6];
        *(undefined4 *)(param_3 + 0x38) = param_1[7];
        *(undefined4 *)(param_3 + 0x3c) = param_1[8];
        *(undefined4 *)(param_3 + 0x40) = param_1[9];
        *(undefined4 *)(param_3 + 0x44) = param_1[10];
        *(undefined4 *)(param_3 + 0x48) = param_1[0xb];
        *(undefined4 *)(param_3 + 0x4c) = param_1[0xc];
        *(undefined4 *)(param_3 + 0x50) = param_1[0xd];
        *(undefined4 *)(param_3 + 0x54) = param_1[0xe];
        *(undefined4 *)(param_3 + 0x58) = param_1[0xf];
        FUN_00240130((undefined4 *)(param_3 + 0x1c),0x40,param_3);
        param_1 = puVar7;
      } while (puVar7 != puVar8);
      param_2 = (param_2 - 0x40) + uVar1 * -0x40;
      goto LAB_00240a51;
    }
    puVar8 = (undefined4 *)((int)param_1 + (param_2 & 0xffffffc0));
    FUN_00240130(param_1,param_2 & 0xffffffc0,param_3);
    param_2 = param_2 & 0x3f;
  }
  if (param_2 == 0) {
    return;
  }
LAB_00240a51:
  local_20 = (undefined4 *)(param_3 + 0x1c);
  if (param_2 < 4) {
    if ((param_2 != 0) && (*(undefined1 *)local_20 = *(undefined1 *)puVar8, (param_2 & 2) != 0)) {
      *(undefined2 *)(param_3 + 0x1a + param_2) = *(undefined2 *)((int)puVar8 + (param_2 - 2));
    }
  }
  else {
    *local_20 = *puVar8;
    *(undefined4 *)(param_3 + 0x18 + param_2) = *(undefined4 *)((int)puVar8 + (param_2 - 4));
    uVar5 = param_3 + 0x20U & 0xfffffffc;
    iVar2 = (int)local_20 - uVar5;
    uVar1 = iVar2 + param_2 & 0xfffffffc;
    if (3 < uVar1) {
      uVar4 = 0;
      do {
        *(undefined4 *)(uVar5 + uVar4) = *(undefined4 *)((int)puVar8 + (uVar4 - iVar2));
        uVar4 = uVar4 + 4;
      } while (uVar4 < uVar1);
    }
  }
  *(uint *)(param_3 + 0x18) = param_2;
  return;
}


PUSH EBP
MOV EBP,ESP
PUSH EDI
PUSH ESI
PUSH EBX
CALL 0x0003a210
ADD EBX,0x1d3685
SUB ESP,0x1c
MOV ESI,dword ptr [EBP + 0x10]
MOV EDI,dword ptr [EBP + 0x8]
MOV ECX,dword ptr [ESI + 0x18]
TEST ECX,ECX
JNZ 0x00240ad0
CMP dword ptr [EBP + 0xc],0x40
JBE 0x00240aba
TEST EDI,0x3
JZ 0x00240aa0
MOV EAX,dword ptr [EBP + 0xc]
LEA ECX,[ESI + 0x1c]
MOV dword ptr [EBP + -0x1c],ECX
SUB EAX,0x41
SHR EAX,0x6
LEA EBX,[EAX + 0x1]
MOV dword ptr [EBP + -0x20],EAX
SHL EBX,0x6
ADD EBX,EDI
LEA ESI,[ESI]
MOV EAX,dword ptr [EDI]
MOV EDX,dword ptr [EBP + -0x1c]
SUB ESP,0x4
ADD EDI,0x40
MOV dword ptr [EDX],EAX
MOV EAX,dword ptr [EDI + -0x3c]
MOV dword ptr [EDX + 0x4],EAX
MOV EAX,dword ptr [EDI + -0x38]
MOV dword ptr [EDX + 0x8],EAX
MOV EAX,dword ptr [EDI + -0x34]
MOV dword ptr [EDX + 0xc],EAX
MOV EAX,dword ptr [EDI + -0x30]
MOV dword ptr [EDX + 0x10],EAX
MOV EAX,dword ptr [EDI + -0x2c]
MOV dword ptr [EDX + 0x14],EAX
MOV EAX,dword ptr [EDI + -0x28]
MOV dword ptr [EDX + 0x18],EAX
MOV EAX,dword ptr [EDI + -0x24]
MOV dword ptr [EDX + 0x1c],EAX
MOV EAX,dword ptr [EDI + -0x20]
MOV dword ptr [EDX + 0x20],EAX
MOV EAX,dword ptr [EDI + -0x1c]
MOV dword ptr [EDX + 0x24],EAX
MOV EAX,dword ptr [EDI + -0x18]
MOV dword ptr [EDX + 0x28],EAX
MOV EAX,dword ptr [EDI + -0x14]
MOV dword ptr [EDX + 0x2c],EAX
MOV EAX,dword ptr [EDI + -0x10]
MOV dword ptr [EDX + 0x30],EAX
MOV EAX,dword ptr [EDI + -0xc]
MOV dword ptr [EDX + 0x34],EAX
MOV EAX,dword ptr [EDI + -0x8]
MOV dword ptr [EDX + 0x38],EAX
MOV EAX,dword ptr [EDI + -0x4]
MOV dword ptr [EDX + 0x3c],EAX
PUSH ESI
PUSH 0x40
PUSH EDX
CALL 0x00240130
ADD ESP,0x10
CMP EDI,EBX
JNZ 0x002409c8
MOV EAX,dword ptr [EBP + -0x20]
MOV ECX,dword ptr [EBP + 0xc]
SHL EAX,0x6
NEG EAX
LEA EAX,[ECX + EAX*0x1 + -0x40]
MOV dword ptr [EBP + 0xc],EAX
CMP dword ptr [EBP + 0xc],0x4
JC 0x00240b18
MOV EDX,dword ptr [EBX]
MOV EAX,dword ptr [EBP + -0x1c]
MOV dword ptr [EAX],EDX
MOV ECX,dword ptr [EBP + 0xc]
MOV EDX,dword ptr [EBX + ECX*0x1 + -0x4]
MOV dword ptr [EAX + ECX*0x1 + -0x4],EDX
LEA EDX,[EAX + 0x4]
AND EDX,0xfffffffc
SUB EAX,EDX
SUB EBX,EAX
ADD EAX,dword ptr [EBP + 0xc]
AND EAX,0xfffffffc
CMP EAX,0x4
JC 0x00240b31
AND EAX,0xfffffffc
XOR ECX,ECX
MOV EDI,dword ptr [EBX + ECX*0x1]
MOV dword ptr [EDX + ECX*0x1],EDI
ADD ECX,0x4
CMP ECX,EAX
JC 0x00240a8b
JMP 0x00240b31
MOV EBX,dword ptr [EBP + 0xc]
SUB ESP,0x4
PUSH ESI
AND EBX,0xffffffc0
PUSH EBX
PUSH EDI
ADD EDI,EBX
CALL 0x00240130
AND dword ptr [EBP + 0xc],0x3f
ADD ESP,0x10
MOV EDX,dword ptr [EBP + 0xc]
TEST EDX,EDX
JNZ 0x00240bfa
LEA ESP,[EBP + -0xc]
POP EBX
POP ESI
POP EDI
POP EBP
RET
MOV EDX,0x80
LEA EAX,[ESI + ECX*0x1 + 0x1c]
MOV dword ptr [EBP + -0x20],ECX
SUB EDX,ECX
CMP EDX,dword ptr [EBP + 0xc]
CMOVA EDX,dword ptr [EBP + 0xc]
SUB ESP,0x4
PUSH EDX
PUSH EDI
PUSH EAX
MOV dword ptr [EBP + -0x1c],EDX
CALL 0x0002c2d0
MOV EAX,dword ptr [EBP + -0x1c]
MOV ECX,dword ptr [EBP + -0x20]
ADD ESP,0x10
ADD dword ptr [ESI + 0x18],EAX
LEA EBX,[ECX + EAX*0x1]
CMP EBX,0x40
JA 0x00240b40
MOV EAX,dword ptr [EBP + -0x1c]
SUB dword ptr [EBP + 0xc],EAX
ADD EDI,EAX
JMP 0x00240995
MOV EAX,dword ptr [EBP + 0xc]
TEST EAX,EAX
JZ 0x00240b31
MOVZX EDX,byte ptr [EBX]
MOV EAX,dword ptr [EBP + -0x1c]
MOV byte ptr [EAX],DL
TEST byte ptr [EBP + 0xc],0x2
JNZ 0x00240be2
MOV EAX,dword ptr [EBP + 0xc]
MOV dword ptr [ESI + 0x18],EAX
LEA ESP,[EBP + -0xc]
POP EBX
POP ESI
POP EDI
POP EBP
RET
MOV ECX,EBX
SUB ESP,0x4
LEA EAX,[ESI + 0x1c]
AND ECX,0xffffffc0
PUSH ESI
PUSH ECX
PUSH EAX
MOV dword ptr [EBP + -0x20],ECX
MOV dword ptr [EBP + -0x24],EAX
CALL 0x00240130
MOV EDX,EBX
MOV ECX,dword ptr [EBP + -0x20]
AND EDX,0x3f
LEA ECX,[ESI + ECX*0x1 + 0x1c]
CMP EDX,0x4
JNC 0x00240ba0
TEST EDX,EDX
JZ 0x00240b90
MOVZX EAX,byte ptr [ECX]
AND EBX,0x2
MOV byte ptr [ESI + 0x1c],AL
JZ 0x00240b90
MOVZX ECX,word ptr [ECX + EDX*0x1 + -0x2]
MOV EAX,dword ptr [EBP + -0x24]
MOV word ptr [EAX + EDX*0x1 + -0x2],CX
LEA ESI,[ESI]
LEA ESI,[ESI]
MOV dword ptr [ESI + 0x18],EDX
ADD ESP,0x10
JMP 0x00240b07
MOV EBX,dword ptr [ECX]
MOV dword ptr [ESI + 0x1c],EBX
MOV EBX,dword ptr [EDX + ECX*0x1 + -0x4]
MOV EAX,dword ptr [EBP + -0x24]
MOV dword ptr [EAX + EDX*0x1 + -0x4],EBX
LEA EBX,[ESI + 0x20]
AND EBX,0xfffffffc
SUB EAX,EBX
SUB ECX,EAX
ADD EAX,EDX
AND EAX,0xfffffffc
CMP EAX,0x4
JC 0x00240b90
MOV dword ptr [EBP + -0x24],EDX
AND EAX,0xfffffffc
MOV dword ptr [EBP + -0x20],EAX
XOR EAX,EAX
MOV EDX,dword ptr [ECX + EAX*0x1]
MOV dword ptr [EBX + EAX*0x1],EDX
ADD EAX,0x4
CMP EAX,dword ptr [EBP + -0x20]
JC 0x00240bcf
MOV EDX,dword ptr [EBP + -0x24]
JMP 0x00240b90
MOV EAX,dword ptr [EBP + 0xc]
MOV ECX,dword ptr [EBP + 0xc]
MOVZX EDX,word ptr [EBX + EAX*0x1 + -0x2]
MOV EAX,dword ptr [EBP + -0x1c]
MOV word ptr [EAX + ECX*0x1 + -0x2],DX
JMP 0x00240b31
LEA EAX,[ESI + 0x1c]
MOV EBX,EDI
MOV dword ptr [EBP + -0x1c],EAX
JMP 0x00240a51
(translation_unit "/* WARNING: Function: __i686.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n\nvoid FUN_00240970(undefined4 *param_1,uint param_2,int param_3)\n\n{\n  uint uVar1;\n  int iVar2;\n  uint uVar3;\n  uint uVar4;\n  uint uVar5;\n  uint uVar6;\n  undefined4 *puVar7;\n  undefined4 *puVar8;\n  undefined4 *local_20;\n  \n  iVar2 = *(int *)(param_3 + 0x18);\n  if (iVar2 != 0) {\n    uVar1 = 0x80U - iVar2;\n    if (param_2 < 0x80U - iVar2) {\n      uVar1 = param_2;\n    }\n    memcpy((void *)(param_3 + 0x1c + iVar2),param_1,uVar1);\n    *(int *)(param_3 + 0x18) = *(int *)(param_3 + 0x18) + uVar1;\n    uVar5 = iVar2 + uVar1;\n    if (0x40 < uVar5) {\n      FUN_00240130(param_3 + 0x1c,uVar5 & 0xffffffc0,param_3);\n      uVar4 = uVar5 & 0x3f;\n      puVar8 = (undefined4 *)(param_3 + 0x1c + (uVar5 & 0xffffffc0));\n      if (uVar4 < 4) {\n        if ((uVar4 != 0) &&\n           (*(undefined1 *)(param_3 + 0x1c) = *(undefined1 *)puVar8, (uVar5 & 2) != 0)) {\n          *(undefined2 *)(param_3 + 0x1a + uVar4) = *(undefined2 *)((int)puVar8 + (uVar4 - 2));\n        }\n      }\n      else {\n        *(undefined4 *)(param_3 + 0x1c) = *puVar8;\n        *(undefined4 *)(param_3 + 0x18 + uVar4) = *(undefined4 *)((uVar4 - 4) + (int)puVar8);\n        uVar6 = param_3 + 0x20U & 0xfffffffc;\n        iVar2 = (param_3 + 0x1c) - uVar6;\n        uVar5 = iVar2 + uVar4 & 0xfffffffc;\n        if (3 < uVar5) {\n          uVar3 = 0;\n          do {\n            *(undefined4 *)(uVar6 + uVar3) = *(undefined4 *)((int)puVar8 + (uVar3 - iVar2));\n            uVar3 = uVar3 + 4;\n          } while (uVar3 < uVar5);\n        }\n      }\n      *(uint *)(param_3 + 0x18) = uVar4;\n    }\n    param_2 = param_2 - uVar1;\n    param_1 = (undefined4 *)((int)param_1 + uVar1);\n  }\n  puVar8 = param_1;\n  if (0x40 < param_2) {\n    if (((uint)param_1 & 3) != 0) {\n      uVar1 = param_2 - 0x41 >> 6;\n      puVar8 = param_1 + (uVar1 + 1) * 0x10;\n      do {\n        puVar7 = param_1 + 0x10;\n        *(undefined4 *)(param_3 + 0x1c) = *param_1;\n        *(undefined4 *)(param_3 + 0x20) = param_1[1];\n        *(undefined4 *)(param_3 + 0x24) = param_1[2];\n        *(undefined4 *)(param_3 + 0x28) = param_1[3];\n        *(undefined4 *)(param_3 + 0x2c) = param_1[4];\n        *(undefined4 *)(param_3 + 0x30) = param_1[5];\n        *(undefined4 *)(param_3 + 0x34) = param_1[6];\n        *(undefined4 *)(param_3 + 0x38) = param_1[7];\n        *(undefined4 *)(param_3 + 0x3c) = param_1[8];\n        *(undefined4 *)(param_3 + 0x40) = param_1[9];\n        *(undefined4 *)(param_3 + 0x44) = param_1[10];\n        *(undefined4 *)(param_3 + 0x48) = param_1[0xb];\n        *(undefined4 *)(param_3 + 0x4c) = param_1[0xc];\n        *(undefined4 *)(param_3 + 0x50) = param_1[0xd];\n        *(undefined4 *)(param_3 + 0x54) = param_1[0xe];\n        *(undefined4 *)(param_3 + 0x58) = param_1[0xf];\n        FUN_00240130((undefined4 *)(param_3 + 0x1c),0x40,param_3);\n        param_1 = puVar7;\n      } while (puVar7 != puVar8);\n      param_2 = (param_2 - 0x40) + uVar1 * -0x40;\n      goto LAB_00240a51;\n    }\n    puVar8 = (undefined4 *)((int)param_1 + (param_2 & 0xffffffc0));\n    FUN_00240130(param_1,param_2 & 0xffffffc0,param_3);\n    param_2 = param_2 & 0x3f;\n  }\n  if (param_2 == 0) {\n    return;\n  }\nLAB_00240a51:\n  local_20 = (undefined4 *)(param_3 + 0x1c);\n  if (param_2 < 4) {\n    if ((param_2 != 0) && (*(undefined1 *)local_20 = *(undefined1 *)puVar8, (param_2 & 2) != 0)) {\n      *(undefined2 *)(param_3 + 0x1a + param_2) = *(undefined2 *)((int)puVar8 + (param_2 - 2));\n    }\n  }\n  else {\n    *local_20 = *puVar8;\n    *(undefined4 *)(param_3 + 0x18 + param_2) = *(undefined4 *)((int)puVar8 + (param_2 - 4));\n    uVar5 = param_3 + 0x20U & 0xfffffffc;\n    iVar2 = (int)local_20 - uVar5;\n    uVar1 = iVar2 + param_2 & 0xfffffffc;\n    if (3 < uVar1) {\n      uVar4 = 0;\n      do {\n        *(undefined4 *)(uVar5 + uVar4) = *(undefined4 *)((int)puVar8 + (uVar4 - iVar2));\n        uVar4 = uVar4 + 4;\n      } while (uVar4 < uVar1);\n    }\n  }\n  *(uint *)(param_3 + 0x18) = param_2;\n  return;\n}\n\n" comment (function_definition "void FUN_00240970(undefined4 *param_1,uint param_2,int param_3)\n\n{\n  uint uVar1;\n  int iVar2;\n  uint uVar3;\n  uint uVar4;\n  uint uVar5;\n  uint uVar6;\n  undefined4 *puVar7;\n  undefined4 *puVar8;\n  undefined4 *local_20;\n  \n  iVar2 = *(int *)(param_3 + 0x18);\n  if (iVar2 != 0) {\n    uVar1 = 0x80U - iVar2;\n    if (param_2 < 0x80U - iVar2) {\n      uVar1 = param_2;\n    }\n    memcpy((void *)(param_3 + 0x1c + iVar2),param_1,uVar1);\n    *(int *)(param_3 + 0x18) = *(int *)(param_3 + 0x18) + uVar1;\n    uVar5 = iVar2 + uVar1;\n    if (0x40 < uVar5) {\n      FUN_00240130(param_3 + 0x1c,uVar5 & 0xffffffc0,param_3);\n      uVar4 = uVar5 & 0x3f;\n      puVar8 = (undefined4 *)(param_3 + 0x1c + (uVar5 & 0xffffffc0));\n      if (uVar4 < 4) {\n        if ((uVar4 != 0) &&\n           (*(undefined1 *)(param_3 + 0x1c) = *(undefined1 *)puVar8, (uVar5 & 2) != 0)) {\n          *(undefined2 *)(param_3 + 0x1a + uVar4) = *(undefined2 *)((int)puVar8 + (uVar4 - 2));\n        }\n      }\n      else {\n        *(undefined4 *)(param_3 + 0x1c) = *puVar8;\n        *(undefined4 *)(param_3 + 0x18 + uVar4) = *(undefined4 *)((uVar4 - 4) + (int)puVar8);\n        uVar6 = param_3 + 0x20U & 0xfffffffc;\n        iVar2 = (param_3 + 0x1c) - uVar6;\n        uVar5 = iVar2 + uVar4 & 0xfffffffc;\n        if (3 < uVar5) {\n          uVar3 = 0;\n          do {\n            *(undefined4 *)(uVar6 + uVar3) = *(undefined4 *)((int)puVar8 + (uVar3 - iVar2));\n            uVar3 = uVar3 + 4;\n          } while (uVar3 < uVar5);\n        }\n      }\n      *(uint *)(param_3 + 0x18) = uVar4;\n    }\n    param_2 = param_2 - uVar1;\n    param_1 = (undefined4 *)((int)param_1 + uVar1);\n  }\n  puVar8 = param_1;\n  if (0x40 < param_2) {\n    if (((uint)param_1 & 3) != 0) {\n      uVar1 = param_2 - 0x41 >> 6;\n      puVar8 = param_1 + (uVar1 + 1) * 0x10;\n      do {\n        puVar7 = param_1 + 0x10;\n        *(undefined4 *)(param_3 + 0x1c) = *param_1;\n        *(undefined4 *)(param_3 + 0x20) = param_1[1];\n        *(undefined4 *)(param_3 + 0x24) = param_1[2];\n        *(undefined4 *)(param_3 + 0x28) = param_1[3];\n        *(undefined4 *)(param_3 + 0x2c) = param_1[4];\n        *(undefined4 *)(param_3 + 0x30) = param_1[5];\n        *(undefined4 *)(param_3 + 0x34) = param_1[6];\n        *(undefined4 *)(param_3 + 0x38) = param_1[7];\n        *(undefined4 *)(param_3 + 0x3c) = param_1[8];\n        *(undefined4 *)(param_3 + 0x40) = param_1[9];\n        *(undefined4 *)(param_3 + 0x44) = param_1[10];\n        *(undefined4 *)(param_3 + 0x48) = param_1[0xb];\n        *(undefined4 *)(param_3 + 0x4c) = param_1[0xc];\n        *(undefined4 *)(param_3 + 0x50) = param_1[0xd];\n        *(undefined4 *)(param_3 + 0x54) = param_1[0xe];\n        *(undefined4 *)(param_3 + 0x58) = param_1[0xf];\n        FUN_00240130((undefined4 *)(param_3 + 0x1c),0x40,param_3);\n        param_1 = puVar7;\n      } while (puVar7 != puVar8);\n      param_2 = (param_2 - 0x40) + uVar1 * -0x40;\n      goto LAB_00240a51;\n    }\n    puVar8 = (undefined4 *)((int)param_1 + (param_2 & 0xffffffc0));\n    FUN_00240130(param_1,param_2 & 0xffffffc0,param_3);\n    param_2 = param_2 & 0x3f;\n  }\n  if (param_2 == 0) {\n    return;\n  }\nLAB_00240a51:\n  local_20 = (undefined4 *)(param_3 + 0x1c);\n  if (param_2 < 4) {\n    if ((param_2 != 0) && (*(undefined1 *)local_20 = *(undefined1 *)puVar8, (param_2 & 2) != 0)) {\n      *(undefined2 *)(param_3 + 0x1a + param_2) = *(undefined2 *)((int)puVar8 + (param_2 - 2));\n    }\n  }\n  else {\n    *local_20 = *puVar8;\n    *(undefined4 *)(param_3 + 0x18 + param_2) = *(undefined4 *)((int)puVar8 + (param_2 - 4));\n    uVar5 = param_3 + 0x20U & 0xfffffffc;\n    iVar2 = (int)local_20 - uVar5;\n    uVar1 = iVar2 + param_2 & 0xfffffffc;\n    if (3 < uVar1) {\n      uVar4 = 0;\n      do {\n        *(undefined4 *)(uVar5 + uVar4) = *(undefined4 *)((int)puVar8 + (uVar4 - iVar2));\n        uVar4 = uVar4 + 4;\n      } while (uVar4 < uVar1);\n    }\n  }\n  *(uint *)(param_3 + 0x18) = param_2;\n  return;\n}" primitive_type (function_declarator "FUN_00240970(undefined4 *param_1,uint param_2,int param_3)" identifier (parameter_list "(undefined4 *param_1,uint param_2,int param_3)" ( (parameter_declaration "undefined4 *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "uint param_2" type_identifier identifier) , (parameter_declaration "int param_3" primitive_type identifier) ))) (compound_statement "{\n  uint uVar1;\n  int iVar2;\n  uint uVar3;\n  uint uVar4;\n  uint uVar5;\n  uint uVar6;\n  undefined4 *puVar7;\n  undefined4 *puVar8;\n  undefined4 *local_20;\n  \n  iVar2 = *(int *)(param_3 + 0x18);\n  if (iVar2 != 0) {\n    uVar1 = 0x80U - iVar2;\n    if (param_2 < 0x80U - iVar2) {\n      uVar1 = param_2;\n    }\n    memcpy((void *)(param_3 + 0x1c + iVar2),param_1,uVar1);\n    *(int *)(param_3 + 0x18) = *(int *)(param_3 + 0x18) + uVar1;\n    uVar5 = iVar2 + uVar1;\n    if (0x40 < uVar5) {\n      FUN_00240130(param_3 + 0x1c,uVar5 & 0xffffffc0,param_3);\n      uVar4 = uVar5 & 0x3f;\n      puVar8 = (undefined4 *)(param_3 + 0x1c + (uVar5 & 0xffffffc0));\n      if (uVar4 < 4) {\n        if ((uVar4 != 0) &&\n           (*(undefined1 *)(param_3 + 0x1c) = *(undefined1 *)puVar8, (uVar5 & 2) != 0)) {\n          *(undefined2 *)(param_3 + 0x1a + uVar4) = *(undefined2 *)((int)puVar8 + (uVar4 - 2));\n        }\n      }\n      else {\n        *(undefined4 *)(param_3 + 0x1c) = *puVar8;\n        *(undefined4 *)(param_3 + 0x18 + uVar4) = *(undefined4 *)((uVar4 - 4) + (int)puVar8);\n        uVar6 = param_3 + 0x20U & 0xfffffffc;\n        iVar2 = (param_3 + 0x1c) - uVar6;\n        uVar5 = iVar2 + uVar4 & 0xfffffffc;\n        if (3 < uVar5) {\n          uVar3 = 0;\n          do {\n            *(undefined4 *)(uVar6 + uVar3) = *(undefined4 *)((int)puVar8 + (uVar3 - iVar2));\n            uVar3 = uVar3 + 4;\n          } while (uVar3 < uVar5);\n        }\n      }\n      *(uint *)(param_3 + 0x18) = uVar4;\n    }\n    param_2 = param_2 - uVar1;\n    param_1 = (undefined4 *)((int)param_1 + uVar1);\n  }\n  puVar8 = param_1;\n  if (0x40 < param_2) {\n    if (((uint)param_1 & 3) != 0) {\n      uVar1 = param_2 - 0x41 >> 6;\n      puVar8 = param_1 + (uVar1 + 1) * 0x10;\n      do {\n        puVar7 = param_1 + 0x10;\n        *(undefined4 *)(param_3 + 0x1c) = *param_1;\n        *(undefined4 *)(param_3 + 0x20) = param_1[1];\n        *(undefined4 *)(param_3 + 0x24) = param_1[2];\n        *(undefined4 *)(param_3 + 0x28) = param_1[3];\n        *(undefined4 *)(param_3 + 0x2c) = param_1[4];\n        *(undefined4 *)(param_3 + 0x30) = param_1[5];\n        *(undefined4 *)(param_3 + 0x34) = param_1[6];\n        *(undefined4 *)(param_3 + 0x38) = param_1[7];\n        *(undefined4 *)(param_3 + 0x3c) = param_1[8];\n        *(undefined4 *)(param_3 + 0x40) = param_1[9];\n        *(undefined4 *)(param_3 + 0x44) = param_1[10];\n        *(undefined4 *)(param_3 + 0x48) = param_1[0xb];\n        *(undefined4 *)(param_3 + 0x4c) = param_1[0xc];\n        *(undefined4 *)(param_3 + 0x50) = param_1[0xd];\n        *(undefined4 *)(param_3 + 0x54) = param_1[0xe];\n        *(undefined4 *)(param_3 + 0x58) = param_1[0xf];\n        FUN_00240130((undefined4 *)(param_3 + 0x1c),0x40,param_3);\n        param_1 = puVar7;\n      } while (puVar7 != puVar8);\n      param_2 = (param_2 - 0x40) + uVar1 * -0x40;\n      goto LAB_00240a51;\n    }\n    puVar8 = (undefined4 *)((int)param_1 + (param_2 & 0xffffffc0));\n    FUN_00240130(param_1,param_2 & 0xffffffc0,param_3);\n    param_2 = param_2 & 0x3f;\n  }\n  if (param_2 == 0) {\n    return;\n  }\nLAB_00240a51:\n  local_20 = (undefined4 *)(param_3 + 0x1c);\n  if (param_2 < 4) {\n    if ((param_2 != 0) && (*(undefined1 *)local_20 = *(undefined1 *)puVar8, (param_2 & 2) != 0)) {\n      *(undefined2 *)(param_3 + 0x1a + param_2) = *(undefined2 *)((int)puVar8 + (param_2 - 2));\n    }\n  }\n  else {\n    *local_20 = *puVar8;\n    *(undefined4 *)(param_3 + 0x18 + param_2) = *(undefined4 *)((int)puVar8 + (param_2 - 4));\n    uVar5 = param_3 + 0x20U & 0xfffffffc;\n    iVar2 = (int)local_20 - uVar5;\n    uVar1 = iVar2 + param_2 & 0xfffffffc;\n    if (3 < uVar1) {\n      uVar4 = 0;\n      do {\n        *(undefined4 *)(uVar5 + uVar4) = *(undefined4 *)((int)puVar8 + (uVar4 - iVar2));\n        uVar4 = uVar4 + 4;\n      } while (uVar4 < uVar1);\n    }\n  }\n  *(uint *)(param_3 + 0x18) = param_2;\n  return;\n}" { (declaration "uint uVar1;" type_identifier identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "uint uVar4;" type_identifier identifier ;) (declaration "uint uVar5;" type_identifier identifier ;) (declaration "uint uVar6;" type_identifier identifier ;) (declaration "undefined4 *puVar7;" type_identifier (pointer_declarator "*puVar7" * identifier) ;) (declaration "undefined4 *puVar8;" type_identifier (pointer_declarator "*puVar8" * identifier) ;) (declaration "undefined4 *local_20;" type_identifier (pointer_declarator "*local_20" * identifier) ;) (expression_statement "iVar2 = *(int *)(param_3 + 0x18);" (assignment_expression "iVar2 = *(int *)(param_3 + 0x18)" identifier = (pointer_expression "*(int *)(param_3 + 0x18)" * (cast_expression "(int *)(param_3 + 0x18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x18)" ( (binary_expression "param_3 + 0x18" identifier + number_literal) ))))) ;) (if_statement "if (iVar2 != 0) {\n    uVar1 = 0x80U - iVar2;\n    if (param_2 < 0x80U - iVar2) {\n      uVar1 = param_2;\n    }\n    memcpy((void *)(param_3 + 0x1c + iVar2),param_1,uVar1);\n    *(int *)(param_3 + 0x18) = *(int *)(param_3 + 0x18) + uVar1;\n    uVar5 = iVar2 + uVar1;\n    if (0x40 < uVar5) {\n      FUN_00240130(param_3 + 0x1c,uVar5 & 0xffffffc0,param_3);\n      uVar4 = uVar5 & 0x3f;\n      puVar8 = (undefined4 *)(param_3 + 0x1c + (uVar5 & 0xffffffc0));\n      if (uVar4 < 4) {\n        if ((uVar4 != 0) &&\n           (*(undefined1 *)(param_3 + 0x1c) = *(undefined1 *)puVar8, (uVar5 & 2) != 0)) {\n          *(undefined2 *)(param_3 + 0x1a + uVar4) = *(undefined2 *)((int)puVar8 + (uVar4 - 2));\n        }\n      }\n      else {\n        *(undefined4 *)(param_3 + 0x1c) = *puVar8;\n        *(undefined4 *)(param_3 + 0x18 + uVar4) = *(undefined4 *)((uVar4 - 4) + (int)puVar8);\n        uVar6 = param_3 + 0x20U & 0xfffffffc;\n        iVar2 = (param_3 + 0x1c) - uVar6;\n        uVar5 = iVar2 + uVar4 & 0xfffffffc;\n        if (3 < uVar5) {\n          uVar3 = 0;\n          do {\n            *(undefined4 *)(uVar6 + uVar3) = *(undefined4 *)((int)puVar8 + (uVar3 - iVar2));\n            uVar3 = uVar3 + 4;\n          } while (uVar3 < uVar5);\n        }\n      }\n      *(uint *)(param_3 + 0x18) = uVar4;\n    }\n    param_2 = param_2 - uVar1;\n    param_1 = (undefined4 *)((int)param_1 + uVar1);\n  }" if (parenthesized_expression "(iVar2 != 0)" ( (binary_expression "iVar2 != 0" identifier != number_literal) )) (compound_statement "{\n    uVar1 = 0x80U - iVar2;\n    if (param_2 < 0x80U - iVar2) {\n      uVar1 = param_2;\n    }\n    memcpy((void *)(param_3 + 0x1c + iVar2),param_1,uVar1);\n    *(int *)(param_3 + 0x18) = *(int *)(param_3 + 0x18) + uVar1;\n    uVar5 = iVar2 + uVar1;\n    if (0x40 < uVar5) {\n      FUN_00240130(param_3 + 0x1c,uVar5 & 0xffffffc0,param_3);\n      uVar4 = uVar5 & 0x3f;\n      puVar8 = (undefined4 *)(param_3 + 0x1c + (uVar5 & 0xffffffc0));\n      if (uVar4 < 4) {\n        if ((uVar4 != 0) &&\n           (*(undefined1 *)(param_3 + 0x1c) = *(undefined1 *)puVar8, (uVar5 & 2) != 0)) {\n          *(undefined2 *)(param_3 + 0x1a + uVar4) = *(undefined2 *)((int)puVar8 + (uVar4 - 2));\n        }\n      }\n      else {\n        *(undefined4 *)(param_3 + 0x1c) = *puVar8;\n        *(undefined4 *)(param_3 + 0x18 + uVar4) = *(undefined4 *)((uVar4 - 4) + (int)puVar8);\n        uVar6 = param_3 + 0x20U & 0xfffffffc;\n        iVar2 = (param_3 + 0x1c) - uVar6;\n        uVar5 = iVar2 + uVar4 & 0xfffffffc;\n        if (3 < uVar5) {\n          uVar3 = 0;\n          do {\n            *(undefined4 *)(uVar6 + uVar3) = *(undefined4 *)((int)puVar8 + (uVar3 - iVar2));\n            uVar3 = uVar3 + 4;\n          } while (uVar3 < uVar5);\n        }\n      }\n      *(uint *)(param_3 + 0x18) = uVar4;\n    }\n    param_2 = param_2 - uVar1;\n    param_1 = (undefined4 *)((int)param_1 + uVar1);\n  }" { (expression_statement "uVar1 = 0x80U - iVar2;" (assignment_expression "uVar1 = 0x80U - iVar2" identifier = (binary_expression "0x80U - iVar2" number_literal - identifier)) ;) (if_statement "if (param_2 < 0x80U - iVar2) {\n      uVar1 = param_2;\n    }" if (parenthesized_expression "(param_2 < 0x80U - iVar2)" ( (binary_expression "param_2 < 0x80U - iVar2" identifier < (binary_expression "0x80U - iVar2" number_literal - identifier)) )) (compound_statement "{\n      uVar1 = param_2;\n    }" { (expression_statement "uVar1 = param_2;" (assignment_expression "uVar1 = param_2" identifier = identifier) ;) })) (expression_statement "memcpy((void *)(param_3 + 0x1c + iVar2),param_1,uVar1);" (call_expression "memcpy((void *)(param_3 + 0x1c + iVar2),param_1,uVar1)" identifier (argument_list "((void *)(param_3 + 0x1c + iVar2),param_1,uVar1)" ( (cast_expression "(void *)(param_3 + 0x1c + iVar2)" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x1c + iVar2)" ( (binary_expression "param_3 + 0x1c + iVar2" (binary_expression "param_3 + 0x1c" identifier + number_literal) + identifier) ))) , identifier , identifier ))) ;) (expression_statement "*(int *)(param_3 + 0x18) = *(int *)(param_3 + 0x18) + uVar1;" (assignment_expression "*(int *)(param_3 + 0x18) = *(int *)(param_3 + 0x18) + uVar1" (pointer_expression "*(int *)(param_3 + 0x18)" * (cast_expression "(int *)(param_3 + 0x18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x18)" ( (binary_expression "param_3 + 0x18" identifier + number_literal) )))) = (binary_expression "*(int *)(param_3 + 0x18) + uVar1" (pointer_expression "*(int *)(param_3 + 0x18)" * (cast_expression "(int *)(param_3 + 0x18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x18)" ( (binary_expression "param_3 + 0x18" identifier + number_literal) )))) + identifier)) ;) (expression_statement "uVar5 = iVar2 + uVar1;" (assignment_expression "uVar5 = iVar2 + uVar1" identifier = (binary_expression "iVar2 + uVar1" identifier + identifier)) ;) (if_statement "if (0x40 < uVar5) {\n      FUN_00240130(param_3 + 0x1c,uVar5 & 0xffffffc0,param_3);\n      uVar4 = uVar5 & 0x3f;\n      puVar8 = (undefined4 *)(param_3 + 0x1c + (uVar5 & 0xffffffc0));\n      if (uVar4 < 4) {\n        if ((uVar4 != 0) &&\n           (*(undefined1 *)(param_3 + 0x1c) = *(undefined1 *)puVar8, (uVar5 & 2) != 0)) {\n          *(undefined2 *)(param_3 + 0x1a + uVar4) = *(undefined2 *)((int)puVar8 + (uVar4 - 2));\n        }\n      }\n      else {\n        *(undefined4 *)(param_3 + 0x1c) = *puVar8;\n        *(undefined4 *)(param_3 + 0x18 + uVar4) = *(undefined4 *)((uVar4 - 4) + (int)puVar8);\n        uVar6 = param_3 + 0x20U & 0xfffffffc;\n        iVar2 = (param_3 + 0x1c) - uVar6;\n        uVar5 = iVar2 + uVar4 & 0xfffffffc;\n        if (3 < uVar5) {\n          uVar3 = 0;\n          do {\n            *(undefined4 *)(uVar6 + uVar3) = *(undefined4 *)((int)puVar8 + (uVar3 - iVar2));\n            uVar3 = uVar3 + 4;\n          } while (uVar3 < uVar5);\n        }\n      }\n      *(uint *)(param_3 + 0x18) = uVar4;\n    }" if (parenthesized_expression "(0x40 < uVar5)" ( (binary_expression "0x40 < uVar5" number_literal < identifier) )) (compound_statement "{\n      FUN_00240130(param_3 + 0x1c,uVar5 & 0xffffffc0,param_3);\n      uVar4 = uVar5 & 0x3f;\n      puVar8 = (undefined4 *)(param_3 + 0x1c + (uVar5 & 0xffffffc0));\n      if (uVar4 < 4) {\n        if ((uVar4 != 0) &&\n           (*(undefined1 *)(param_3 + 0x1c) = *(undefined1 *)puVar8, (uVar5 & 2) != 0)) {\n          *(undefined2 *)(param_3 + 0x1a + uVar4) = *(undefined2 *)((int)puVar8 + (uVar4 - 2));\n        }\n      }\n      else {\n        *(undefined4 *)(param_3 + 0x1c) = *puVar8;\n        *(undefined4 *)(param_3 + 0x18 + uVar4) = *(undefined4 *)((uVar4 - 4) + (int)puVar8);\n        uVar6 = param_3 + 0x20U & 0xfffffffc;\n        iVar2 = (param_3 + 0x1c) - uVar6;\n        uVar5 = iVar2 + uVar4 & 0xfffffffc;\n        if (3 < uVar5) {\n          uVar3 = 0;\n          do {\n            *(undefined4 *)(uVar6 + uVar3) = *(undefined4 *)((int)puVar8 + (uVar3 - iVar2));\n            uVar3 = uVar3 + 4;\n          } while (uVar3 < uVar5);\n        }\n      }\n      *(uint *)(param_3 + 0x18) = uVar4;\n    }" { (expression_statement "FUN_00240130(param_3 + 0x1c,uVar5 & 0xffffffc0,param_3);" (call_expression "FUN_00240130(param_3 + 0x1c,uVar5 & 0xffffffc0,param_3)" identifier (argument_list "(param_3 + 0x1c,uVar5 & 0xffffffc0,param_3)" ( (binary_expression "param_3 + 0x1c" identifier + number_literal) , (binary_expression "uVar5 & 0xffffffc0" identifier & number_literal) , identifier ))) ;) (expression_statement "uVar4 = uVar5 & 0x3f;" (assignment_expression "uVar4 = uVar5 & 0x3f" identifier = (binary_expression "uVar5 & 0x3f" identifier & number_literal)) ;) (expression_statement "puVar8 = (undefined4 *)(param_3 + 0x1c + (uVar5 & 0xffffffc0));" (assignment_expression "puVar8 = (undefined4 *)(param_3 + 0x1c + (uVar5 & 0xffffffc0))" identifier = (cast_expression "(undefined4 *)(param_3 + 0x1c + (uVar5 & 0xffffffc0))" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x1c + (uVar5 & 0xffffffc0))" ( (binary_expression "param_3 + 0x1c + (uVar5 & 0xffffffc0)" (binary_expression "param_3 + 0x1c" identifier + number_literal) + (parenthesized_expression "(uVar5 & 0xffffffc0)" ( (binary_expression "uVar5 & 0xffffffc0" identifier & number_literal) ))) )))) ;) (if_statement "if (uVar4 < 4) {\n        if ((uVar4 != 0) &&\n           (*(undefined1 *)(param_3 + 0x1c) = *(undefined1 *)puVar8, (uVar5 & 2) != 0)) {\n          *(undefined2 *)(param_3 + 0x1a + uVar4) = *(undefined2 *)((int)puVar8 + (uVar4 - 2));\n        }\n      }\n      else {\n        *(undefined4 *)(param_3 + 0x1c) = *puVar8;\n        *(undefined4 *)(param_3 + 0x18 + uVar4) = *(undefined4 *)((uVar4 - 4) + (int)puVar8);\n        uVar6 = param_3 + 0x20U & 0xfffffffc;\n        iVar2 = (param_3 + 0x1c) - uVar6;\n        uVar5 = iVar2 + uVar4 & 0xfffffffc;\n        if (3 < uVar5) {\n          uVar3 = 0;\n          do {\n            *(undefined4 *)(uVar6 + uVar3) = *(undefined4 *)((int)puVar8 + (uVar3 - iVar2));\n            uVar3 = uVar3 + 4;\n          } while (uVar3 < uVar5);\n        }\n      }" if (parenthesized_expression "(uVar4 < 4)" ( (binary_expression "uVar4 < 4" identifier < number_literal) )) (compound_statement "{\n        if ((uVar4 != 0) &&\n           (*(undefined1 *)(param_3 + 0x1c) = *(undefined1 *)puVar8, (uVar5 & 2) != 0)) {\n          *(undefined2 *)(param_3 + 0x1a + uVar4) = *(undefined2 *)((int)puVar8 + (uVar4 - 2));\n        }\n      }" { (if_statement "if ((uVar4 != 0) &&\n           (*(undefined1 *)(param_3 + 0x1c) = *(undefined1 *)puVar8, (uVar5 & 2) != 0)) {\n          *(undefined2 *)(param_3 + 0x1a + uVar4) = *(undefined2 *)((int)puVar8 + (uVar4 - 2));\n        }" if (parenthesized_expression "((uVar4 != 0) &&\n           (*(undefined1 *)(param_3 + 0x1c) = *(undefined1 *)puVar8, (uVar5 & 2) != 0))" ( (binary_expression "(uVar4 != 0) &&\n           (*(undefined1 *)(param_3 + 0x1c) = *(undefined1 *)puVar8, (uVar5 & 2) != 0)" (parenthesized_expression "(uVar4 != 0)" ( (binary_expression "uVar4 != 0" identifier != number_literal) )) && (parenthesized_expression "(*(undefined1 *)(param_3 + 0x1c) = *(undefined1 *)puVar8, (uVar5 & 2) != 0)" ( (comma_expression "*(undefined1 *)(param_3 + 0x1c) = *(undefined1 *)puVar8, (uVar5 & 2) != 0" (assignment_expression "*(undefined1 *)(param_3 + 0x1c) = *(undefined1 *)puVar8" (pointer_expression "*(undefined1 *)(param_3 + 0x1c)" * (cast_expression "(undefined1 *)(param_3 + 0x1c)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x1c)" ( (binary_expression "param_3 + 0x1c" identifier + number_literal) )))) = (pointer_expression "*(undefined1 *)puVar8" * (cast_expression "(undefined1 *)puVar8" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier))) , (binary_expression "(uVar5 & 2) != 0" (parenthesized_expression "(uVar5 & 2)" ( (binary_expression "uVar5 & 2" identifier & number_literal) )) != number_literal)) ))) )) (compound_statement "{\n          *(undefined2 *)(param_3 + 0x1a + uVar4) = *(undefined2 *)((int)puVar8 + (uVar4 - 2));\n        }" { (expression_statement "*(undefined2 *)(param_3 + 0x1a + uVar4) = *(undefined2 *)((int)puVar8 + (uVar4 - 2));" (assignment_expression "*(undefined2 *)(param_3 + 0x1a + uVar4) = *(undefined2 *)((int)puVar8 + (uVar4 - 2))" (pointer_expression "*(undefined2 *)(param_3 + 0x1a + uVar4)" * (cast_expression "(undefined2 *)(param_3 + 0x1a + uVar4)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x1a + uVar4)" ( (binary_expression "param_3 + 0x1a + uVar4" (binary_expression "param_3 + 0x1a" identifier + number_literal) + identifier) )))) = (pointer_expression "*(undefined2 *)((int)puVar8 + (uVar4 - 2))" * (cast_expression "(undefined2 *)((int)puVar8 + (uVar4 - 2))" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar8 + (uVar4 - 2))" ( (binary_expression "(int)puVar8 + (uVar4 - 2)" (cast_expression "(int)puVar8" ( (type_descriptor "int" primitive_type) ) identifier) + (parenthesized_expression "(uVar4 - 2)" ( (binary_expression "uVar4 - 2" identifier - number_literal) ))) ))))) ;) })) }) (else_clause "else {\n        *(undefined4 *)(param_3 + 0x1c) = *puVar8;\n        *(undefined4 *)(param_3 + 0x18 + uVar4) = *(undefined4 *)((uVar4 - 4) + (int)puVar8);\n        uVar6 = param_3 + 0x20U & 0xfffffffc;\n        iVar2 = (param_3 + 0x1c) - uVar6;\n        uVar5 = iVar2 + uVar4 & 0xfffffffc;\n        if (3 < uVar5) {\n          uVar3 = 0;\n          do {\n            *(undefined4 *)(uVar6 + uVar3) = *(undefined4 *)((int)puVar8 + (uVar3 - iVar2));\n            uVar3 = uVar3 + 4;\n          } while (uVar3 < uVar5);\n        }\n      }" else (compound_statement "{\n        *(undefined4 *)(param_3 + 0x1c) = *puVar8;\n        *(undefined4 *)(param_3 + 0x18 + uVar4) = *(undefined4 *)((uVar4 - 4) + (int)puVar8);\n        uVar6 = param_3 + 0x20U & 0xfffffffc;\n        iVar2 = (param_3 + 0x1c) - uVar6;\n        uVar5 = iVar2 + uVar4 & 0xfffffffc;\n        if (3 < uVar5) {\n          uVar3 = 0;\n          do {\n            *(undefined4 *)(uVar6 + uVar3) = *(undefined4 *)((int)puVar8 + (uVar3 - iVar2));\n            uVar3 = uVar3 + 4;\n          } while (uVar3 < uVar5);\n        }\n      }" { (expression_statement "*(undefined4 *)(param_3 + 0x1c) = *puVar8;" (assignment_expression "*(undefined4 *)(param_3 + 0x1c) = *puVar8" (pointer_expression "*(undefined4 *)(param_3 + 0x1c)" * (cast_expression "(undefined4 *)(param_3 + 0x1c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x1c)" ( (binary_expression "param_3 + 0x1c" identifier + number_literal) )))) = (pointer_expression "*puVar8" * identifier)) ;) (expression_statement "*(undefined4 *)(param_3 + 0x18 + uVar4) = *(undefined4 *)((uVar4 - 4) + (int)puVar8);" (assignment_expression "*(undefined4 *)(param_3 + 0x18 + uVar4) = *(undefined4 *)((uVar4 - 4) + (int)puVar8)" (pointer_expression "*(undefined4 *)(param_3 + 0x18 + uVar4)" * (cast_expression "(undefined4 *)(param_3 + 0x18 + uVar4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x18 + uVar4)" ( (binary_expression "param_3 + 0x18 + uVar4" (binary_expression "param_3 + 0x18" identifier + number_literal) + identifier) )))) = (pointer_expression "*(undefined4 *)((uVar4 - 4) + (int)puVar8)" * (cast_expression "(undefined4 *)((uVar4 - 4) + (int)puVar8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((uVar4 - 4) + (int)puVar8)" ( (binary_expression "(uVar4 - 4) + (int)puVar8" (parenthesized_expression "(uVar4 - 4)" ( (binary_expression "uVar4 - 4" identifier - number_literal) )) + (cast_expression "(int)puVar8" ( (type_descriptor "int" primitive_type) ) identifier)) ))))) ;) (expression_statement "uVar6 = param_3 + 0x20U & 0xfffffffc;" (assignment_expression "uVar6 = param_3 + 0x20U & 0xfffffffc" identifier = (binary_expression "param_3 + 0x20U & 0xfffffffc" (binary_expression "param_3 + 0x20U" identifier + number_literal) & number_literal)) ;) (expression_statement "iVar2 = (param_3 + 0x1c) - uVar6;" (assignment_expression "iVar2 = (param_3 + 0x1c) - uVar6" identifier = (binary_expression "(param_3 + 0x1c) - uVar6" (parenthesized_expression "(param_3 + 0x1c)" ( (binary_expression "param_3 + 0x1c" identifier + number_literal) )) - identifier)) ;) (expression_statement "uVar5 = iVar2 + uVar4 & 0xfffffffc;" (assignment_expression "uVar5 = iVar2 + uVar4 & 0xfffffffc" identifier = (binary_expression "iVar2 + uVar4 & 0xfffffffc" (binary_expression "iVar2 + uVar4" identifier + identifier) & number_literal)) ;) (if_statement "if (3 < uVar5) {\n          uVar3 = 0;\n          do {\n            *(undefined4 *)(uVar6 + uVar3) = *(undefined4 *)((int)puVar8 + (uVar3 - iVar2));\n            uVar3 = uVar3 + 4;\n          } while (uVar3 < uVar5);\n        }" if (parenthesized_expression "(3 < uVar5)" ( (binary_expression "3 < uVar5" number_literal < identifier) )) (compound_statement "{\n          uVar3 = 0;\n          do {\n            *(undefined4 *)(uVar6 + uVar3) = *(undefined4 *)((int)puVar8 + (uVar3 - iVar2));\n            uVar3 = uVar3 + 4;\n          } while (uVar3 < uVar5);\n        }" { (expression_statement "uVar3 = 0;" (assignment_expression "uVar3 = 0" identifier = number_literal) ;) (do_statement "do {\n            *(undefined4 *)(uVar6 + uVar3) = *(undefined4 *)((int)puVar8 + (uVar3 - iVar2));\n            uVar3 = uVar3 + 4;\n          } while (uVar3 < uVar5);" do (compound_statement "{\n            *(undefined4 *)(uVar6 + uVar3) = *(undefined4 *)((int)puVar8 + (uVar3 - iVar2));\n            uVar3 = uVar3 + 4;\n          }" { (expression_statement "*(undefined4 *)(uVar6 + uVar3) = *(undefined4 *)((int)puVar8 + (uVar3 - iVar2));" (assignment_expression "*(undefined4 *)(uVar6 + uVar3) = *(undefined4 *)((int)puVar8 + (uVar3 - iVar2))" (pointer_expression "*(undefined4 *)(uVar6 + uVar3)" * (cast_expression "(undefined4 *)(uVar6 + uVar3)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar6 + uVar3)" ( (binary_expression "uVar6 + uVar3" identifier + identifier) )))) = (pointer_expression "*(undefined4 *)((int)puVar8 + (uVar3 - iVar2))" * (cast_expression "(undefined4 *)((int)puVar8 + (uVar3 - iVar2))" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar8 + (uVar3 - iVar2))" ( (binary_expression "(int)puVar8 + (uVar3 - iVar2)" (cast_expression "(int)puVar8" ( (type_descriptor "int" primitive_type) ) identifier) + (parenthesized_expression "(uVar3 - iVar2)" ( (binary_expression "uVar3 - iVar2" identifier - identifier) ))) ))))) ;) (expression_statement "uVar3 = uVar3 + 4;" (assignment_expression "uVar3 = uVar3 + 4" identifier = (binary_expression "uVar3 + 4" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar3 < uVar5)" ( (binary_expression "uVar3 < uVar5" identifier < identifier) )) ;) })) }))) (expression_statement "*(uint *)(param_3 + 0x18) = uVar4;" (assignment_expression "*(uint *)(param_3 + 0x18) = uVar4" (pointer_expression "*(uint *)(param_3 + 0x18)" * (cast_expression "(uint *)(param_3 + 0x18)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x18)" ( (binary_expression "param_3 + 0x18" identifier + number_literal) )))) = identifier) ;) })) (expression_statement "param_2 = param_2 - uVar1;" (assignment_expression "param_2 = param_2 - uVar1" identifier = (binary_expression "param_2 - uVar1" identifier - identifier)) ;) (expression_statement "param_1 = (undefined4 *)((int)param_1 + uVar1);" (assignment_expression "param_1 = (undefined4 *)((int)param_1 + uVar1)" identifier = (cast_expression "(undefined4 *)((int)param_1 + uVar1)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_1 + uVar1)" ( (binary_expression "(int)param_1 + uVar1" (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) ;) })) (expression_statement "puVar8 = param_1;" (assignment_expression "puVar8 = param_1" identifier = identifier) ;) (if_statement "if (0x40 < param_2) {\n    if (((uint)param_1 & 3) != 0) {\n      uVar1 = param_2 - 0x41 >> 6;\n      puVar8 = param_1 + (uVar1 + 1) * 0x10;\n      do {\n        puVar7 = param_1 + 0x10;\n        *(undefined4 *)(param_3 + 0x1c) = *param_1;\n        *(undefined4 *)(param_3 + 0x20) = param_1[1];\n        *(undefined4 *)(param_3 + 0x24) = param_1[2];\n        *(undefined4 *)(param_3 + 0x28) = param_1[3];\n        *(undefined4 *)(param_3 + 0x2c) = param_1[4];\n        *(undefined4 *)(param_3 + 0x30) = param_1[5];\n        *(undefined4 *)(param_3 + 0x34) = param_1[6];\n        *(undefined4 *)(param_3 + 0x38) = param_1[7];\n        *(undefined4 *)(param_3 + 0x3c) = param_1[8];\n        *(undefined4 *)(param_3 + 0x40) = param_1[9];\n        *(undefined4 *)(param_3 + 0x44) = param_1[10];\n        *(undefined4 *)(param_3 + 0x48) = param_1[0xb];\n        *(undefined4 *)(param_3 + 0x4c) = param_1[0xc];\n        *(undefined4 *)(param_3 + 0x50) = param_1[0xd];\n        *(undefined4 *)(param_3 + 0x54) = param_1[0xe];\n        *(undefined4 *)(param_3 + 0x58) = param_1[0xf];\n        FUN_00240130((undefined4 *)(param_3 + 0x1c),0x40,param_3);\n        param_1 = puVar7;\n      } while (puVar7 != puVar8);\n      param_2 = (param_2 - 0x40) + uVar1 * -0x40;\n      goto LAB_00240a51;\n    }\n    puVar8 = (undefined4 *)((int)param_1 + (param_2 & 0xffffffc0));\n    FUN_00240130(param_1,param_2 & 0xffffffc0,param_3);\n    param_2 = param_2 & 0x3f;\n  }" if (parenthesized_expression "(0x40 < param_2)" ( (binary_expression "0x40 < param_2" number_literal < identifier) )) (compound_statement "{\n    if (((uint)param_1 & 3) != 0) {\n      uVar1 = param_2 - 0x41 >> 6;\n      puVar8 = param_1 + (uVar1 + 1) * 0x10;\n      do {\n        puVar7 = param_1 + 0x10;\n        *(undefined4 *)(param_3 + 0x1c) = *param_1;\n        *(undefined4 *)(param_3 + 0x20) = param_1[1];\n        *(undefined4 *)(param_3 + 0x24) = param_1[2];\n        *(undefined4 *)(param_3 + 0x28) = param_1[3];\n        *(undefined4 *)(param_3 + 0x2c) = param_1[4];\n        *(undefined4 *)(param_3 + 0x30) = param_1[5];\n        *(undefined4 *)(param_3 + 0x34) = param_1[6];\n        *(undefined4 *)(param_3 + 0x38) = param_1[7];\n        *(undefined4 *)(param_3 + 0x3c) = param_1[8];\n        *(undefined4 *)(param_3 + 0x40) = param_1[9];\n        *(undefined4 *)(param_3 + 0x44) = param_1[10];\n        *(undefined4 *)(param_3 + 0x48) = param_1[0xb];\n        *(undefined4 *)(param_3 + 0x4c) = param_1[0xc];\n        *(undefined4 *)(param_3 + 0x50) = param_1[0xd];\n        *(undefined4 *)(param_3 + 0x54) = param_1[0xe];\n        *(undefined4 *)(param_3 + 0x58) = param_1[0xf];\n        FUN_00240130((undefined4 *)(param_3 + 0x1c),0x40,param_3);\n        param_1 = puVar7;\n      } while (puVar7 != puVar8);\n      param_2 = (param_2 - 0x40) + uVar1 * -0x40;\n      goto LAB_00240a51;\n    }\n    puVar8 = (undefined4 *)((int)param_1 + (param_2 & 0xffffffc0));\n    FUN_00240130(param_1,param_2 & 0xffffffc0,param_3);\n    param_2 = param_2 & 0x3f;\n  }" { (if_statement "if (((uint)param_1 & 3) != 0) {\n      uVar1 = param_2 - 0x41 >> 6;\n      puVar8 = param_1 + (uVar1 + 1) * 0x10;\n      do {\n        puVar7 = param_1 + 0x10;\n        *(undefined4 *)(param_3 + 0x1c) = *param_1;\n        *(undefined4 *)(param_3 + 0x20) = param_1[1];\n        *(undefined4 *)(param_3 + 0x24) = param_1[2];\n        *(undefined4 *)(param_3 + 0x28) = param_1[3];\n        *(undefined4 *)(param_3 + 0x2c) = param_1[4];\n        *(undefined4 *)(param_3 + 0x30) = param_1[5];\n        *(undefined4 *)(param_3 + 0x34) = param_1[6];\n        *(undefined4 *)(param_3 + 0x38) = param_1[7];\n        *(undefined4 *)(param_3 + 0x3c) = param_1[8];\n        *(undefined4 *)(param_3 + 0x40) = param_1[9];\n        *(undefined4 *)(param_3 + 0x44) = param_1[10];\n        *(undefined4 *)(param_3 + 0x48) = param_1[0xb];\n        *(undefined4 *)(param_3 + 0x4c) = param_1[0xc];\n        *(undefined4 *)(param_3 + 0x50) = param_1[0xd];\n        *(undefined4 *)(param_3 + 0x54) = param_1[0xe];\n        *(undefined4 *)(param_3 + 0x58) = param_1[0xf];\n        FUN_00240130((undefined4 *)(param_3 + 0x1c),0x40,param_3);\n        param_1 = puVar7;\n      } while (puVar7 != puVar8);\n      param_2 = (param_2 - 0x40) + uVar1 * -0x40;\n      goto LAB_00240a51;\n    }" if (parenthesized_expression "(((uint)param_1 & 3) != 0)" ( (binary_expression "((uint)param_1 & 3) != 0" (parenthesized_expression "((uint)param_1 & 3)" ( (binary_expression "(uint)param_1 & 3" (cast_expression "(uint)param_1" ( (type_descriptor "uint" type_identifier) ) identifier) & number_literal) )) != number_literal) )) (compound_statement "{\n      uVar1 = param_2 - 0x41 >> 6;\n      puVar8 = param_1 + (uVar1 + 1) * 0x10;\n      do {\n        puVar7 = param_1 + 0x10;\n        *(undefined4 *)(param_3 + 0x1c) = *param_1;\n        *(undefined4 *)(param_3 + 0x20) = param_1[1];\n        *(undefined4 *)(param_3 + 0x24) = param_1[2];\n        *(undefined4 *)(param_3 + 0x28) = param_1[3];\n        *(undefined4 *)(param_3 + 0x2c) = param_1[4];\n        *(undefined4 *)(param_3 + 0x30) = param_1[5];\n        *(undefined4 *)(param_3 + 0x34) = param_1[6];\n        *(undefined4 *)(param_3 + 0x38) = param_1[7];\n        *(undefined4 *)(param_3 + 0x3c) = param_1[8];\n        *(undefined4 *)(param_3 + 0x40) = param_1[9];\n        *(undefined4 *)(param_3 + 0x44) = param_1[10];\n        *(undefined4 *)(param_3 + 0x48) = param_1[0xb];\n        *(undefined4 *)(param_3 + 0x4c) = param_1[0xc];\n        *(undefined4 *)(param_3 + 0x50) = param_1[0xd];\n        *(undefined4 *)(param_3 + 0x54) = param_1[0xe];\n        *(undefined4 *)(param_3 + 0x58) = param_1[0xf];\n        FUN_00240130((undefined4 *)(param_3 + 0x1c),0x40,param_3);\n        param_1 = puVar7;\n      } while (puVar7 != puVar8);\n      param_2 = (param_2 - 0x40) + uVar1 * -0x40;\n      goto LAB_00240a51;\n    }" { (expression_statement "uVar1 = param_2 - 0x41 >> 6;" (assignment_expression "uVar1 = param_2 - 0x41 >> 6" identifier = (binary_expression "param_2 - 0x41 >> 6" (binary_expression "param_2 - 0x41" identifier - number_literal) >> number_literal)) ;) (expression_statement "puVar8 = param_1 + (uVar1 + 1) * 0x10;" (assignment_expression "puVar8 = param_1 + (uVar1 + 1) * 0x10" identifier = (binary_expression "param_1 + (uVar1 + 1) * 0x10" identifier + (binary_expression "(uVar1 + 1) * 0x10" (parenthesized_expression "(uVar1 + 1)" ( (binary_expression "uVar1 + 1" identifier + number_literal) )) * number_literal))) ;) (do_statement "do {\n        puVar7 = param_1 + 0x10;\n        *(undefined4 *)(param_3 + 0x1c) = *param_1;\n        *(undefined4 *)(param_3 + 0x20) = param_1[1];\n        *(undefined4 *)(param_3 + 0x24) = param_1[2];\n        *(undefined4 *)(param_3 + 0x28) = param_1[3];\n        *(undefined4 *)(param_3 + 0x2c) = param_1[4];\n        *(undefined4 *)(param_3 + 0x30) = param_1[5];\n        *(undefined4 *)(param_3 + 0x34) = param_1[6];\n        *(undefined4 *)(param_3 + 0x38) = param_1[7];\n        *(undefined4 *)(param_3 + 0x3c) = param_1[8];\n        *(undefined4 *)(param_3 + 0x40) = param_1[9];\n        *(undefined4 *)(param_3 + 0x44) = param_1[10];\n        *(undefined4 *)(param_3 + 0x48) = param_1[0xb];\n        *(undefined4 *)(param_3 + 0x4c) = param_1[0xc];\n        *(undefined4 *)(param_3 + 0x50) = param_1[0xd];\n        *(undefined4 *)(param_3 + 0x54) = param_1[0xe];\n        *(undefined4 *)(param_3 + 0x58) = param_1[0xf];\n        FUN_00240130((undefined4 *)(param_3 + 0x1c),0x40,param_3);\n        param_1 = puVar7;\n      } while (puVar7 != puVar8);" do (compound_statement "{\n        puVar7 = param_1 + 0x10;\n        *(undefined4 *)(param_3 + 0x1c) = *param_1;\n        *(undefined4 *)(param_3 + 0x20) = param_1[1];\n        *(undefined4 *)(param_3 + 0x24) = param_1[2];\n        *(undefined4 *)(param_3 + 0x28) = param_1[3];\n        *(undefined4 *)(param_3 + 0x2c) = param_1[4];\n        *(undefined4 *)(param_3 + 0x30) = param_1[5];\n        *(undefined4 *)(param_3 + 0x34) = param_1[6];\n        *(undefined4 *)(param_3 + 0x38) = param_1[7];\n        *(undefined4 *)(param_3 + 0x3c) = param_1[8];\n        *(undefined4 *)(param_3 + 0x40) = param_1[9];\n        *(undefined4 *)(param_3 + 0x44) = param_1[10];\n        *(undefined4 *)(param_3 + 0x48) = param_1[0xb];\n        *(undefined4 *)(param_3 + 0x4c) = param_1[0xc];\n        *(undefined4 *)(param_3 + 0x50) = param_1[0xd];\n        *(undefined4 *)(param_3 + 0x54) = param_1[0xe];\n        *(undefined4 *)(param_3 + 0x58) = param_1[0xf];\n        FUN_00240130((undefined4 *)(param_3 + 0x1c),0x40,param_3);\n        param_1 = puVar7;\n      }" { (expression_statement "puVar7 = param_1 + 0x10;" (assignment_expression "puVar7 = param_1 + 0x10" identifier = (binary_expression "param_1 + 0x10" identifier + number_literal)) ;) (expression_statement "*(undefined4 *)(param_3 + 0x1c) = *param_1;" (assignment_expression "*(undefined4 *)(param_3 + 0x1c) = *param_1" (pointer_expression "*(undefined4 *)(param_3 + 0x1c)" * (cast_expression "(undefined4 *)(param_3 + 0x1c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x1c)" ( (binary_expression "param_3 + 0x1c" identifier + number_literal) )))) = (pointer_expression "*param_1" * identifier)) ;) (expression_statement "*(undefined4 *)(param_3 + 0x20) = param_1[1];" (assignment_expression "*(undefined4 *)(param_3 + 0x20) = param_1[1]" (pointer_expression "*(undefined4 *)(param_3 + 0x20)" * (cast_expression "(undefined4 *)(param_3 + 0x20)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x20)" ( (binary_expression "param_3 + 0x20" identifier + number_literal) )))) = (subscript_expression "param_1[1]" identifier [ number_literal ])) ;) (expression_statement "*(undefined4 *)(param_3 + 0x24) = param_1[2];" (assignment_expression "*(undefined4 *)(param_3 + 0x24) = param_1[2]" (pointer_expression "*(undefined4 *)(param_3 + 0x24)" * (cast_expression "(undefined4 *)(param_3 + 0x24)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x24)" ( (binary_expression "param_3 + 0x24" identifier + number_literal) )))) = (subscript_expression "param_1[2]" identifier [ number_literal ])) ;) (expression_statement "*(undefined4 *)(param_3 + 0x28) = param_1[3];" (assignment_expression "*(undefined4 *)(param_3 + 0x28) = param_1[3]" (pointer_expression "*(undefined4 *)(param_3 + 0x28)" * (cast_expression "(undefined4 *)(param_3 + 0x28)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x28)" ( (binary_expression "param_3 + 0x28" identifier + number_literal) )))) = (subscript_expression "param_1[3]" identifier [ number_literal ])) ;) (expression_statement "*(undefined4 *)(param_3 + 0x2c) = param_1[4];" (assignment_expression "*(undefined4 *)(param_3 + 0x2c) = param_1[4]" (pointer_expression "*(undefined4 *)(param_3 + 0x2c)" * (cast_expression "(undefined4 *)(param_3 + 0x2c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x2c)" ( (binary_expression "param_3 + 0x2c" identifier + number_literal) )))) = (subscript_expression "param_1[4]" identifier [ number_literal ])) ;) (expression_statement "*(undefined4 *)(param_3 + 0x30) = param_1[5];" (assignment_expression "*(undefined4 *)(param_3 + 0x30) = param_1[5]" (pointer_expression "*(undefined4 *)(param_3 + 0x30)" * (cast_expression "(undefined4 *)(param_3 + 0x30)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x30)" ( (binary_expression "param_3 + 0x30" identifier + number_literal) )))) = (subscript_expression "param_1[5]" identifier [ number_literal ])) ;) (expression_statement "*(undefined4 *)(param_3 + 0x34) = param_1[6];" (assignment_expression "*(undefined4 *)(param_3 + 0x34) = param_1[6]" (pointer_expression "*(undefined4 *)(param_3 + 0x34)" * (cast_expression "(undefined4 *)(param_3 + 0x34)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x34)" ( (binary_expression "param_3 + 0x34" identifier + number_literal) )))) = (subscript_expression "param_1[6]" identifier [ number_literal ])) ;) (expression_statement "*(undefined4 *)(param_3 + 0x38) = param_1[7];" (assignment_expression "*(undefined4 *)(param_3 + 0x38) = param_1[7]" (pointer_expression "*(undefined4 *)(param_3 + 0x38)" * (cast_expression "(undefined4 *)(param_3 + 0x38)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x38)" ( (binary_expression "param_3 + 0x38" identifier + number_literal) )))) = (subscript_expression "param_1[7]" identifier [ number_literal ])) ;) (expression_statement "*(undefined4 *)(param_3 + 0x3c) = param_1[8];" (assignment_expression "*(undefined4 *)(param_3 + 0x3c) = param_1[8]" (pointer_expression "*(undefined4 *)(param_3 + 0x3c)" * (cast_expression "(undefined4 *)(param_3 + 0x3c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x3c)" ( (binary_expression "param_3 + 0x3c" identifier + number_literal) )))) = (subscript_expression "param_1[8]" identifier [ number_literal ])) ;) (expression_statement "*(undefined4 *)(param_3 + 0x40) = param_1[9];" (assignment_expression "*(undefined4 *)(param_3 + 0x40) = param_1[9]" (pointer_expression "*(undefined4 *)(param_3 + 0x40)" * (cast_expression "(undefined4 *)(param_3 + 0x40)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x40)" ( (binary_expression "param_3 + 0x40" identifier + number_literal) )))) = (subscript_expression "param_1[9]" identifier [ number_literal ])) ;) (expression_statement "*(undefined4 *)(param_3 + 0x44) = param_1[10];" (assignment_expression "*(undefined4 *)(param_3 + 0x44) = param_1[10]" (pointer_expression "*(undefined4 *)(param_3 + 0x44)" * (cast_expression "(undefined4 *)(param_3 + 0x44)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x44)" ( (binary_expression "param_3 + 0x44" identifier + number_literal) )))) = (subscript_expression "param_1[10]" identifier [ number_literal ])) ;) (expression_statement "*(undefined4 *)(param_3 + 0x48) = param_1[0xb];" (assignment_expression "*(undefined4 *)(param_3 + 0x48) = param_1[0xb]" (pointer_expression "*(undefined4 *)(param_3 + 0x48)" * (cast_expression "(undefined4 *)(param_3 + 0x48)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x48)" ( (binary_expression "param_3 + 0x48" identifier + number_literal) )))) = (subscript_expression "param_1[0xb]" identifier [ number_literal ])) ;) (expression_statement "*(undefined4 *)(param_3 + 0x4c) = param_1[0xc];" (assignment_expression "*(undefined4 *)(param_3 + 0x4c) = param_1[0xc]" (pointer_expression "*(undefined4 *)(param_3 + 0x4c)" * (cast_expression "(undefined4 *)(param_3 + 0x4c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x4c)" ( (binary_expression "param_3 + 0x4c" identifier + number_literal) )))) = (subscript_expression "param_1[0xc]" identifier [ number_literal ])) ;) (expression_statement "*(undefined4 *)(param_3 + 0x50) = param_1[0xd];" (assignment_expression "*(undefined4 *)(param_3 + 0x50) = param_1[0xd]" (pointer_expression "*(undefined4 *)(param_3 + 0x50)" * (cast_expression "(undefined4 *)(param_3 + 0x50)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x50)" ( (binary_expression "param_3 + 0x50" identifier + number_literal) )))) = (subscript_expression "param_1[0xd]" identifier [ number_literal ])) ;) (expression_statement "*(undefined4 *)(param_3 + 0x54) = param_1[0xe];" (assignment_expression "*(undefined4 *)(param_3 + 0x54) = param_1[0xe]" (pointer_expression "*(undefined4 *)(param_3 + 0x54)" * (cast_expression "(undefined4 *)(param_3 + 0x54)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x54)" ( (binary_expression "param_3 + 0x54" identifier + number_literal) )))) = (subscript_expression "param_1[0xe]" identifier [ number_literal ])) ;) (expression_statement "*(undefined4 *)(param_3 + 0x58) = param_1[0xf];" (assignment_expression "*(undefined4 *)(param_3 + 0x58) = param_1[0xf]" (pointer_expression "*(undefined4 *)(param_3 + 0x58)" * (cast_expression "(undefined4 *)(param_3 + 0x58)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x58)" ( (binary_expression "param_3 + 0x58" identifier + number_literal) )))) = (subscript_expression "param_1[0xf]" identifier [ number_literal ])) ;) (expression_statement "FUN_00240130((undefined4 *)(param_3 + 0x1c),0x40,param_3);" (call_expression "FUN_00240130((undefined4 *)(param_3 + 0x1c),0x40,param_3)" identifier (argument_list "((undefined4 *)(param_3 + 0x1c),0x40,param_3)" ( (cast_expression "(undefined4 *)(param_3 + 0x1c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x1c)" ( (binary_expression "param_3 + 0x1c" identifier + number_literal) ))) , number_literal , identifier ))) ;) (expression_statement "param_1 = puVar7;" (assignment_expression "param_1 = puVar7" identifier = identifier) ;) }) while (parenthesized_expression "(puVar7 != puVar8)" ( (binary_expression "puVar7 != puVar8" identifier != identifier) )) ;) (expression_statement "param_2 = (param_2 - 0x40) + uVar1 * -0x40;" (assignment_expression "param_2 = (param_2 - 0x40) + uVar1 * -0x40" identifier = (binary_expression "(param_2 - 0x40) + uVar1 * -0x40" (parenthesized_expression "(param_2 - 0x40)" ( (binary_expression "param_2 - 0x40" identifier - number_literal) )) + (binary_expression "uVar1 * -0x40" identifier * number_literal))) ;) (goto_statement "goto LAB_00240a51;" goto statement_identifier ;) })) (expression_statement "puVar8 = (undefined4 *)((int)param_1 + (param_2 & 0xffffffc0));" (assignment_expression "puVar8 = (undefined4 *)((int)param_1 + (param_2 & 0xffffffc0))" identifier = (cast_expression "(undefined4 *)((int)param_1 + (param_2 & 0xffffffc0))" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_1 + (param_2 & 0xffffffc0))" ( (binary_expression "(int)param_1 + (param_2 & 0xffffffc0)" (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier) + (parenthesized_expression "(param_2 & 0xffffffc0)" ( (binary_expression "param_2 & 0xffffffc0" identifier & number_literal) ))) )))) ;) (expression_statement "FUN_00240130(param_1,param_2 & 0xffffffc0,param_3);" (call_expression "FUN_00240130(param_1,param_2 & 0xffffffc0,param_3)" identifier (argument_list "(param_1,param_2 & 0xffffffc0,param_3)" ( identifier , (binary_expression "param_2 & 0xffffffc0" identifier & number_literal) , identifier ))) ;) (expression_statement "param_2 = param_2 & 0x3f;" (assignment_expression "param_2 = param_2 & 0x3f" identifier = (binary_expression "param_2 & 0x3f" identifier & number_literal)) ;) })) (if_statement "if (param_2 == 0) {\n    return;\n  }" if (parenthesized_expression "(param_2 == 0)" ( (binary_expression "param_2 == 0" identifier == number_literal) )) (compound_statement "{\n    return;\n  }" { (return_statement "return;" return ;) })) (labeled_statement "LAB_00240a51:\n  local_20 = (undefined4 *)(param_3 + 0x1c);" statement_identifier : (expression_statement "local_20 = (undefined4 *)(param_3 + 0x1c);" (assignment_expression "local_20 = (undefined4 *)(param_3 + 0x1c)" identifier = (cast_expression "(undefined4 *)(param_3 + 0x1c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x1c)" ( (binary_expression "param_3 + 0x1c" identifier + number_literal) )))) ;)) (if_statement "if (param_2 < 4) {\n    if ((param_2 != 0) && (*(undefined1 *)local_20 = *(undefined1 *)puVar8, (param_2 & 2) != 0)) {\n      *(undefined2 *)(param_3 + 0x1a + param_2) = *(undefined2 *)((int)puVar8 + (param_2 - 2));\n    }\n  }\n  else {\n    *local_20 = *puVar8;\n    *(undefined4 *)(param_3 + 0x18 + param_2) = *(undefined4 *)((int)puVar8 + (param_2 - 4));\n    uVar5 = param_3 + 0x20U & 0xfffffffc;\n    iVar2 = (int)local_20 - uVar5;\n    uVar1 = iVar2 + param_2 & 0xfffffffc;\n    if (3 < uVar1) {\n      uVar4 = 0;\n      do {\n        *(undefined4 *)(uVar5 + uVar4) = *(undefined4 *)((int)puVar8 + (uVar4 - iVar2));\n        uVar4 = uVar4 + 4;\n      } while (uVar4 < uVar1);\n    }\n  }" if (parenthesized_expression "(param_2 < 4)" ( (binary_expression "param_2 < 4" identifier < number_literal) )) (compound_statement "{\n    if ((param_2 != 0) && (*(undefined1 *)local_20 = *(undefined1 *)puVar8, (param_2 & 2) != 0)) {\n      *(undefined2 *)(param_3 + 0x1a + param_2) = *(undefined2 *)((int)puVar8 + (param_2 - 2));\n    }\n  }" { (if_statement "if ((param_2 != 0) && (*(undefined1 *)local_20 = *(undefined1 *)puVar8, (param_2 & 2) != 0)) {\n      *(undefined2 *)(param_3 + 0x1a + param_2) = *(undefined2 *)((int)puVar8 + (param_2 - 2));\n    }" if (parenthesized_expression "((param_2 != 0) && (*(undefined1 *)local_20 = *(undefined1 *)puVar8, (param_2 & 2) != 0))" ( (binary_expression "(param_2 != 0) && (*(undefined1 *)local_20 = *(undefined1 *)puVar8, (param_2 & 2) != 0)" (parenthesized_expression "(param_2 != 0)" ( (binary_expression "param_2 != 0" identifier != number_literal) )) && (parenthesized_expression "(*(undefined1 *)local_20 = *(undefined1 *)puVar8, (param_2 & 2) != 0)" ( (comma_expression "*(undefined1 *)local_20 = *(undefined1 *)puVar8, (param_2 & 2) != 0" (assignment_expression "*(undefined1 *)local_20 = *(undefined1 *)puVar8" (pointer_expression "*(undefined1 *)local_20" * (cast_expression "(undefined1 *)local_20" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) = (pointer_expression "*(undefined1 *)puVar8" * (cast_expression "(undefined1 *)puVar8" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier))) , (binary_expression "(param_2 & 2) != 0" (parenthesized_expression "(param_2 & 2)" ( (binary_expression "param_2 & 2" identifier & number_literal) )) != number_literal)) ))) )) (compound_statement "{\n      *(undefined2 *)(param_3 + 0x1a + param_2) = *(undefined2 *)((int)puVar8 + (param_2 - 2));\n    }" { (expression_statement "*(undefined2 *)(param_3 + 0x1a + param_2) = *(undefined2 *)((int)puVar8 + (param_2 - 2));" (assignment_expression "*(undefined2 *)(param_3 + 0x1a + param_2) = *(undefined2 *)((int)puVar8 + (param_2 - 2))" (pointer_expression "*(undefined2 *)(param_3 + 0x1a + param_2)" * (cast_expression "(undefined2 *)(param_3 + 0x1a + param_2)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x1a + param_2)" ( (binary_expression "param_3 + 0x1a + param_2" (binary_expression "param_3 + 0x1a" identifier + number_literal) + identifier) )))) = (pointer_expression "*(undefined2 *)((int)puVar8 + (param_2 - 2))" * (cast_expression "(undefined2 *)((int)puVar8 + (param_2 - 2))" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar8 + (param_2 - 2))" ( (binary_expression "(int)puVar8 + (param_2 - 2)" (cast_expression "(int)puVar8" ( (type_descriptor "int" primitive_type) ) identifier) + (parenthesized_expression "(param_2 - 2)" ( (binary_expression "param_2 - 2" identifier - number_literal) ))) ))))) ;) })) }) (else_clause "else {\n    *local_20 = *puVar8;\n    *(undefined4 *)(param_3 + 0x18 + param_2) = *(undefined4 *)((int)puVar8 + (param_2 - 4));\n    uVar5 = param_3 + 0x20U & 0xfffffffc;\n    iVar2 = (int)local_20 - uVar5;\n    uVar1 = iVar2 + param_2 & 0xfffffffc;\n    if (3 < uVar1) {\n      uVar4 = 0;\n      do {\n        *(undefined4 *)(uVar5 + uVar4) = *(undefined4 *)((int)puVar8 + (uVar4 - iVar2));\n        uVar4 = uVar4 + 4;\n      } while (uVar4 < uVar1);\n    }\n  }" else (compound_statement "{\n    *local_20 = *puVar8;\n    *(undefined4 *)(param_3 + 0x18 + param_2) = *(undefined4 *)((int)puVar8 + (param_2 - 4));\n    uVar5 = param_3 + 0x20U & 0xfffffffc;\n    iVar2 = (int)local_20 - uVar5;\n    uVar1 = iVar2 + param_2 & 0xfffffffc;\n    if (3 < uVar1) {\n      uVar4 = 0;\n      do {\n        *(undefined4 *)(uVar5 + uVar4) = *(undefined4 *)((int)puVar8 + (uVar4 - iVar2));\n        uVar4 = uVar4 + 4;\n      } while (uVar4 < uVar1);\n    }\n  }" { (expression_statement "*local_20 = *puVar8;" (assignment_expression "*local_20 = *puVar8" (pointer_expression "*local_20" * identifier) = (pointer_expression "*puVar8" * identifier)) ;) (expression_statement "*(undefined4 *)(param_3 + 0x18 + param_2) = *(undefined4 *)((int)puVar8 + (param_2 - 4));" (assignment_expression "*(undefined4 *)(param_3 + 0x18 + param_2) = *(undefined4 *)((int)puVar8 + (param_2 - 4))" (pointer_expression "*(undefined4 *)(param_3 + 0x18 + param_2)" * (cast_expression "(undefined4 *)(param_3 + 0x18 + param_2)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x18 + param_2)" ( (binary_expression "param_3 + 0x18 + param_2" (binary_expression "param_3 + 0x18" identifier + number_literal) + identifier) )))) = (pointer_expression "*(undefined4 *)((int)puVar8 + (param_2 - 4))" * (cast_expression "(undefined4 *)((int)puVar8 + (param_2 - 4))" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar8 + (param_2 - 4))" ( (binary_expression "(int)puVar8 + (param_2 - 4)" (cast_expression "(int)puVar8" ( (type_descriptor "int" primitive_type) ) identifier) + (parenthesized_expression "(param_2 - 4)" ( (binary_expression "param_2 - 4" identifier - number_literal) ))) ))))) ;) (expression_statement "uVar5 = param_3 + 0x20U & 0xfffffffc;" (assignment_expression "uVar5 = param_3 + 0x20U & 0xfffffffc" identifier = (binary_expression "param_3 + 0x20U & 0xfffffffc" (binary_expression "param_3 + 0x20U" identifier + number_literal) & number_literal)) ;) (expression_statement "iVar2 = (int)local_20 - uVar5;" (assignment_expression "iVar2 = (int)local_20 - uVar5" identifier = (binary_expression "(int)local_20 - uVar5" (cast_expression "(int)local_20" ( (type_descriptor "int" primitive_type) ) identifier) - identifier)) ;) (expression_statement "uVar1 = iVar2 + param_2 & 0xfffffffc;" (assignment_expression "uVar1 = iVar2 + param_2 & 0xfffffffc" identifier = (binary_expression "iVar2 + param_2 & 0xfffffffc" (binary_expression "iVar2 + param_2" identifier + identifier) & number_literal)) ;) (if_statement "if (3 < uVar1) {\n      uVar4 = 0;\n      do {\n        *(undefined4 *)(uVar5 + uVar4) = *(undefined4 *)((int)puVar8 + (uVar4 - iVar2));\n        uVar4 = uVar4 + 4;\n      } while (uVar4 < uVar1);\n    }" if (parenthesized_expression "(3 < uVar1)" ( (binary_expression "3 < uVar1" number_literal < identifier) )) (compound_statement "{\n      uVar4 = 0;\n      do {\n        *(undefined4 *)(uVar5 + uVar4) = *(undefined4 *)((int)puVar8 + (uVar4 - iVar2));\n        uVar4 = uVar4 + 4;\n      } while (uVar4 < uVar1);\n    }" { (expression_statement "uVar4 = 0;" (assignment_expression "uVar4 = 0" identifier = number_literal) ;) (do_statement "do {\n        *(undefined4 *)(uVar5 + uVar4) = *(undefined4 *)((int)puVar8 + (uVar4 - iVar2));\n        uVar4 = uVar4 + 4;\n      } while (uVar4 < uVar1);" do (compound_statement "{\n        *(undefined4 *)(uVar5 + uVar4) = *(undefined4 *)((int)puVar8 + (uVar4 - iVar2));\n        uVar4 = uVar4 + 4;\n      }" { (expression_statement "*(undefined4 *)(uVar5 + uVar4) = *(undefined4 *)((int)puVar8 + (uVar4 - iVar2));" (assignment_expression "*(undefined4 *)(uVar5 + uVar4) = *(undefined4 *)((int)puVar8 + (uVar4 - iVar2))" (pointer_expression "*(undefined4 *)(uVar5 + uVar4)" * (cast_expression "(undefined4 *)(uVar5 + uVar4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar5 + uVar4)" ( (binary_expression "uVar5 + uVar4" identifier + identifier) )))) = (pointer_expression "*(undefined4 *)((int)puVar8 + (uVar4 - iVar2))" * (cast_expression "(undefined4 *)((int)puVar8 + (uVar4 - iVar2))" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar8 + (uVar4 - iVar2))" ( (binary_expression "(int)puVar8 + (uVar4 - iVar2)" (cast_expression "(int)puVar8" ( (type_descriptor "int" primitive_type) ) identifier) + (parenthesized_expression "(uVar4 - iVar2)" ( (binary_expression "uVar4 - iVar2" identifier - identifier) ))) ))))) ;) (expression_statement "uVar4 = uVar4 + 4;" (assignment_expression "uVar4 = uVar4 + 4" identifier = (binary_expression "uVar4 + 4" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar4 < uVar1)" ( (binary_expression "uVar4 < uVar1" identifier < identifier) )) ;) })) }))) (expression_statement "*(uint *)(param_3 + 0x18) = param_2;" (assignment_expression "*(uint *)(param_3 + 0x18) = param_2" (pointer_expression "*(uint *)(param_3 + 0x18)" * (cast_expression "(uint *)(param_3 + 0x18)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x18)" ( (binary_expression "param_3 + 0x18" identifier + number_literal) )))) = identifier) ;) (return_statement "return;" return ;) })))
(translation_unit "/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n\nvoid md5_process_bytes(void *buffer,size_t len,md5_ctx *ctx)\n\n{\n}\n\n" comment (function_definition "void md5_process_bytes(void *buffer,size_t len,md5_ctx *ctx)\n\n{\n}" primitive_type (function_declarator "md5_process_bytes(void *buffer,size_t len,md5_ctx *ctx)" identifier (parameter_list "(void *buffer,size_t len,md5_ctx *ctx)" ( (parameter_declaration "void *buffer" primitive_type (pointer_declarator "*buffer" * identifier)) , (parameter_declaration "size_t len" primitive_type identifier) , (parameter_declaration "md5_ctx *ctx" type_identifier (pointer_declarator "*ctx" * identifier)) ))) (compound_statement "{\n}" { })))
(translation_unit "void FUN_00240970(undefined4 *param_1,uint param_2,int param_3)\n\n{\n  uint uVar1;\n  int iVar2;\n  uint uVar3;\n  uint uVar4;\n  uint uVar5;\n  uint uVar6;\n  undefined4 *puVar7;\n  undefined4 *puVar8;\n  undefined4 *local_20;\n  \n  iVar2 = *(int *)(param_3 + 0x18);\n  if (iVar2 != 0) {\n    uVar1 = 0x80U - iVar2;\n    if (param_2 < 0x80U - iVar2) {\n      uVar1 = param_2;\n    }\n    memcpy((void *)(param_3 + 0x1c + iVar2),param_1,uVar1);\n    *(int *)(param_3 + 0x18) = *(int *)(param_3 + 0x18) + uVar1;\n    uVar5 = iVar2 + uVar1;\n    if (0x40 < uVar5) {\n      FUN_00240130(param_3 + 0x1c,uVar5 & 0xffffffc0,param_3);\n      uVar4 = uVar5 & 0x3f;\n      puVar8 = (undefined4 *)(param_3 + 0x1c + (uVar5 & 0xffffffc0));\n      if (uVar4 < 4) {\n        if ((uVar4 != 0) &&\n           (*(undefined1 *)(param_3 + 0x1c) = *(undefined1 *)puVar8, (uVar5 & 2) != 0)) {\n          *(undefined2 *)(param_3 + 0x1a + uVar4) = *(undefined2 *)((int)puVar8 + (uVar4 - 2));\n        }\n      }\n      else {\n        *(undefined4 *)(param_3 + 0x1c) = *puVar8;\n        *(undefined4 *)(param_3 + 0x18 + uVar4) = *(undefined4 *)((uVar4 - 4) + (int)puVar8);\n        uVar6 = param_3 + 0x20U & 0xfffffffc;\n        iVar2 = (param_3 + 0x1c) - uVar6;\n        uVar5 = iVar2 + uVar4 & 0xfffffffc;\n        if (3 < uVar5) {\n          uVar3 = 0;\n          do {\n            *(undefined4 *)(uVar6 + uVar3) = *(undefined4 *)((int)puVar8 + (uVar3 - iVar2));\n            uVar3 = uVar3 + 4;\n          } while (uVar3 < uVar5);\n        }\n      }\n      *(uint *)(param_3 + 0x18) = uVar4;\n    }\n    param_2 = param_2 - uVar1;\n    param_1 = (undefined4 *)((int)param_1 + uVar1);\n  }\n  puVar8 = param_1;\n  if (0x40 < param_2) {\n    if (((uint)param_1 & 3) != 0) {\n      uVar1 = param_2 - 0x41 >> 6;\n      puVar8 = param_1 + (uVar1 + 1) * 0x10;\n      do {\n        puVar7 = param_1 + 0x10;\n        *(undefined4 *)(param_3 + 0x1c) = *param_1;\n        *(undefined4 *)(param_3 + 0x20) = param_1[1];\n        *(undefined4 *)(param_3 + 0x24) = param_1[2];\n        *(undefined4 *)(param_3 + 0x28) = param_1[3];\n        *(undefined4 *)(param_3 + 0x2c) = param_1[4];\n        *(undefined4 *)(param_3 + 0x30) = param_1[5];\n        *(undefined4 *)(param_3 + 0x34) = param_1[6];\n        *(undefined4 *)(param_3 + 0x38) = param_1[7];\n        *(undefined4 *)(param_3 + 0x3c) = param_1[8];\n        *(undefined4 *)(param_3 + 0x40) = param_1[9];\n        *(undefined4 *)(param_3 + 0x44) = param_1[10];\n        *(undefined4 *)(param_3 + 0x48) = param_1[0xb];\n        *(undefined4 *)(param_3 + 0x4c) = param_1[0xc];\n        *(undefined4 *)(param_3 + 0x50) = param_1[0xd];\n        *(undefined4 *)(param_3 + 0x54) = param_1[0xe];\n        *(undefined4 *)(param_3 + 0x58) = param_1[0xf];\n        FUN_00240130((undefined4 *)(param_3 + 0x1c),0x40,param_3);\n        param_1 = puVar7;\n      } while (puVar7 != puVar8);\n      param_2 = (param_2 - 0x40) + uVar1 * -0x40;\n      goto LAB_00240a51;\n    }\n    puVar8 = (undefined4 *)((int)param_1 + (param_2 & 0xffffffc0));\n    FUN_00240130(param_1,param_2 & 0xffffffc0,param_3);\n    param_2 = param_2 & 0x3f;\n  }\n  if (param_2 == 0) {\n    return;\n  }\nLAB_00240a51:\n  local_20 = (undefined4 *)(param_3 + 0x1c);\n  if (param_2 < 4) {\n    if ((param_2 != 0) && (*(undefined1 *)local_20 = *(undefined1 *)puVar8, (param_2 & 2) != 0)) {\n      *(undefined2 *)(param_3 + 0x1a + param_2) = *(undefined2 *)((int)puVar8 + (param_2 - 2));\n    }\n  }\n  else {\n    *local_20 = *puVar8;\n    *(undefined4 *)(param_3 + 0x18 + param_2) = *(undefined4 *)((int)puVar8 + (param_2 - 4));\n    uVar5 = param_3 + 0x20U & 0xfffffffc;\n    iVar2 = (int)local_20 - uVar5;\n    uVar1 = iVar2 + param_2 & 0xfffffffc;\n    if (3 < uVar1) {\n      uVar4 = 0;\n      do {\n        *(undefined4 *)(uVar5 + uVar4) = *(undefined4 *)((int)puVar8 + (uVar4 - iVar2));\n        uVar4 = uVar4 + 4;\n      } while (uVar4 < uVar1);\n    }\n  }\n  *(uint *)(param_3 + 0x18) = param_2;\n  return;\n}\n\n" (function_definition "void FUN_00240970(undefined4 *param_1,uint param_2,int param_3)\n\n{\n  uint uVar1;\n  int iVar2;\n  uint uVar3;\n  uint uVar4;\n  uint uVar5;\n  uint uVar6;\n  undefined4 *puVar7;\n  undefined4 *puVar8;\n  undefined4 *local_20;\n  \n  iVar2 = *(int *)(param_3 + 0x18);\n  if (iVar2 != 0) {\n    uVar1 = 0x80U - iVar2;\n    if (param_2 < 0x80U - iVar2) {\n      uVar1 = param_2;\n    }\n    memcpy((void *)(param_3 + 0x1c + iVar2),param_1,uVar1);\n    *(int *)(param_3 + 0x18) = *(int *)(param_3 + 0x18) + uVar1;\n    uVar5 = iVar2 + uVar1;\n    if (0x40 < uVar5) {\n      FUN_00240130(param_3 + 0x1c,uVar5 & 0xffffffc0,param_3);\n      uVar4 = uVar5 & 0x3f;\n      puVar8 = (undefined4 *)(param_3 + 0x1c + (uVar5 & 0xffffffc0));\n      if (uVar4 < 4) {\n        if ((uVar4 != 0) &&\n           (*(undefined1 *)(param_3 + 0x1c) = *(undefined1 *)puVar8, (uVar5 & 2) != 0)) {\n          *(undefined2 *)(param_3 + 0x1a + uVar4) = *(undefined2 *)((int)puVar8 + (uVar4 - 2));\n        }\n      }\n      else {\n        *(undefined4 *)(param_3 + 0x1c) = *puVar8;\n        *(undefined4 *)(param_3 + 0x18 + uVar4) = *(undefined4 *)((uVar4 - 4) + (int)puVar8);\n        uVar6 = param_3 + 0x20U & 0xfffffffc;\n        iVar2 = (param_3 + 0x1c) - uVar6;\n        uVar5 = iVar2 + uVar4 & 0xfffffffc;\n        if (3 < uVar5) {\n          uVar3 = 0;\n          do {\n            *(undefined4 *)(uVar6 + uVar3) = *(undefined4 *)((int)puVar8 + (uVar3 - iVar2));\n            uVar3 = uVar3 + 4;\n          } while (uVar3 < uVar5);\n        }\n      }\n      *(uint *)(param_3 + 0x18) = uVar4;\n    }\n    param_2 = param_2 - uVar1;\n    param_1 = (undefined4 *)((int)param_1 + uVar1);\n  }\n  puVar8 = param_1;\n  if (0x40 < param_2) {\n    if (((uint)param_1 & 3) != 0) {\n      uVar1 = param_2 - 0x41 >> 6;\n      puVar8 = param_1 + (uVar1 + 1) * 0x10;\n      do {\n        puVar7 = param_1 + 0x10;\n        *(undefined4 *)(param_3 + 0x1c) = *param_1;\n        *(undefined4 *)(param_3 + 0x20) = param_1[1];\n        *(undefined4 *)(param_3 + 0x24) = param_1[2];\n        *(undefined4 *)(param_3 + 0x28) = param_1[3];\n        *(undefined4 *)(param_3 + 0x2c) = param_1[4];\n        *(undefined4 *)(param_3 + 0x30) = param_1[5];\n        *(undefined4 *)(param_3 + 0x34) = param_1[6];\n        *(undefined4 *)(param_3 + 0x38) = param_1[7];\n        *(undefined4 *)(param_3 + 0x3c) = param_1[8];\n        *(undefined4 *)(param_3 + 0x40) = param_1[9];\n        *(undefined4 *)(param_3 + 0x44) = param_1[10];\n        *(undefined4 *)(param_3 + 0x48) = param_1[0xb];\n        *(undefined4 *)(param_3 + 0x4c) = param_1[0xc];\n        *(undefined4 *)(param_3 + 0x50) = param_1[0xd];\n        *(undefined4 *)(param_3 + 0x54) = param_1[0xe];\n        *(undefined4 *)(param_3 + 0x58) = param_1[0xf];\n        FUN_00240130((undefined4 *)(param_3 + 0x1c),0x40,param_3);\n        param_1 = puVar7;\n      } while (puVar7 != puVar8);\n      param_2 = (param_2 - 0x40) + uVar1 * -0x40;\n      goto LAB_00240a51;\n    }\n    puVar8 = (undefined4 *)((int)param_1 + (param_2 & 0xffffffc0));\n    FUN_00240130(param_1,param_2 & 0xffffffc0,param_3);\n    param_2 = param_2 & 0x3f;\n  }\n  if (param_2 == 0) {\n    return;\n  }\nLAB_00240a51:\n  local_20 = (undefined4 *)(param_3 + 0x1c);\n  if (param_2 < 4) {\n    if ((param_2 != 0) && (*(undefined1 *)local_20 = *(undefined1 *)puVar8, (param_2 & 2) != 0)) {\n      *(undefined2 *)(param_3 + 0x1a + param_2) = *(undefined2 *)((int)puVar8 + (param_2 - 2));\n    }\n  }\n  else {\n    *local_20 = *puVar8;\n    *(undefined4 *)(param_3 + 0x18 + param_2) = *(undefined4 *)((int)puVar8 + (param_2 - 4));\n    uVar5 = param_3 + 0x20U & 0xfffffffc;\n    iVar2 = (int)local_20 - uVar5;\n    uVar1 = iVar2 + param_2 & 0xfffffffc;\n    if (3 < uVar1) {\n      uVar4 = 0;\n      do {\n        *(undefined4 *)(uVar5 + uVar4) = *(undefined4 *)((int)puVar8 + (uVar4 - iVar2));\n        uVar4 = uVar4 + 4;\n      } while (uVar4 < uVar1);\n    }\n  }\n  *(uint *)(param_3 + 0x18) = param_2;\n  return;\n}" primitive_type (function_declarator "FUN_00240970(undefined4 *param_1,uint param_2,int param_3)" identifier (parameter_list "(undefined4 *param_1,uint param_2,int param_3)" ( (parameter_declaration "undefined4 *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "uint param_2" type_identifier identifier) , (parameter_declaration "int param_3" primitive_type identifier) ))) (compound_statement "{\n  uint uVar1;\n  int iVar2;\n  uint uVar3;\n  uint uVar4;\n  uint uVar5;\n  uint uVar6;\n  undefined4 *puVar7;\n  undefined4 *puVar8;\n  undefined4 *local_20;\n  \n  iVar2 = *(int *)(param_3 + 0x18);\n  if (iVar2 != 0) {\n    uVar1 = 0x80U - iVar2;\n    if (param_2 < 0x80U - iVar2) {\n      uVar1 = param_2;\n    }\n    memcpy((void *)(param_3 + 0x1c + iVar2),param_1,uVar1);\n    *(int *)(param_3 + 0x18) = *(int *)(param_3 + 0x18) + uVar1;\n    uVar5 = iVar2 + uVar1;\n    if (0x40 < uVar5) {\n      FUN_00240130(param_3 + 0x1c,uVar5 & 0xffffffc0,param_3);\n      uVar4 = uVar5 & 0x3f;\n      puVar8 = (undefined4 *)(param_3 + 0x1c + (uVar5 & 0xffffffc0));\n      if (uVar4 < 4) {\n        if ((uVar4 != 0) &&\n           (*(undefined1 *)(param_3 + 0x1c) = *(undefined1 *)puVar8, (uVar5 & 2) != 0)) {\n          *(undefined2 *)(param_3 + 0x1a + uVar4) = *(undefined2 *)((int)puVar8 + (uVar4 - 2));\n        }\n      }\n      else {\n        *(undefined4 *)(param_3 + 0x1c) = *puVar8;\n        *(undefined4 *)(param_3 + 0x18 + uVar4) = *(undefined4 *)((uVar4 - 4) + (int)puVar8);\n        uVar6 = param_3 + 0x20U & 0xfffffffc;\n        iVar2 = (param_3 + 0x1c) - uVar6;\n        uVar5 = iVar2 + uVar4 & 0xfffffffc;\n        if (3 < uVar5) {\n          uVar3 = 0;\n          do {\n            *(undefined4 *)(uVar6 + uVar3) = *(undefined4 *)((int)puVar8 + (uVar3 - iVar2));\n            uVar3 = uVar3 + 4;\n          } while (uVar3 < uVar5);\n        }\n      }\n      *(uint *)(param_3 + 0x18) = uVar4;\n    }\n    param_2 = param_2 - uVar1;\n    param_1 = (undefined4 *)((int)param_1 + uVar1);\n  }\n  puVar8 = param_1;\n  if (0x40 < param_2) {\n    if (((uint)param_1 & 3) != 0) {\n      uVar1 = param_2 - 0x41 >> 6;\n      puVar8 = param_1 + (uVar1 + 1) * 0x10;\n      do {\n        puVar7 = param_1 + 0x10;\n        *(undefined4 *)(param_3 + 0x1c) = *param_1;\n        *(undefined4 *)(param_3 + 0x20) = param_1[1];\n        *(undefined4 *)(param_3 + 0x24) = param_1[2];\n        *(undefined4 *)(param_3 + 0x28) = param_1[3];\n        *(undefined4 *)(param_3 + 0x2c) = param_1[4];\n        *(undefined4 *)(param_3 + 0x30) = param_1[5];\n        *(undefined4 *)(param_3 + 0x34) = param_1[6];\n        *(undefined4 *)(param_3 + 0x38) = param_1[7];\n        *(undefined4 *)(param_3 + 0x3c) = param_1[8];\n        *(undefined4 *)(param_3 + 0x40) = param_1[9];\n        *(undefined4 *)(param_3 + 0x44) = param_1[10];\n        *(undefined4 *)(param_3 + 0x48) = param_1[0xb];\n        *(undefined4 *)(param_3 + 0x4c) = param_1[0xc];\n        *(undefined4 *)(param_3 + 0x50) = param_1[0xd];\n        *(undefined4 *)(param_3 + 0x54) = param_1[0xe];\n        *(undefined4 *)(param_3 + 0x58) = param_1[0xf];\n        FUN_00240130((undefined4 *)(param_3 + 0x1c),0x40,param_3);\n        param_1 = puVar7;\n      } while (puVar7 != puVar8);\n      param_2 = (param_2 - 0x40) + uVar1 * -0x40;\n      goto LAB_00240a51;\n    }\n    puVar8 = (undefined4 *)((int)param_1 + (param_2 & 0xffffffc0));\n    FUN_00240130(param_1,param_2 & 0xffffffc0,param_3);\n    param_2 = param_2 & 0x3f;\n  }\n  if (param_2 == 0) {\n    return;\n  }\nLAB_00240a51:\n  local_20 = (undefined4 *)(param_3 + 0x1c);\n  if (param_2 < 4) {\n    if ((param_2 != 0) && (*(undefined1 *)local_20 = *(undefined1 *)puVar8, (param_2 & 2) != 0)) {\n      *(undefined2 *)(param_3 + 0x1a + param_2) = *(undefined2 *)((int)puVar8 + (param_2 - 2));\n    }\n  }\n  else {\n    *local_20 = *puVar8;\n    *(undefined4 *)(param_3 + 0x18 + param_2) = *(undefined4 *)((int)puVar8 + (param_2 - 4));\n    uVar5 = param_3 + 0x20U & 0xfffffffc;\n    iVar2 = (int)local_20 - uVar5;\n    uVar1 = iVar2 + param_2 & 0xfffffffc;\n    if (3 < uVar1) {\n      uVar4 = 0;\n      do {\n        *(undefined4 *)(uVar5 + uVar4) = *(undefined4 *)((int)puVar8 + (uVar4 - iVar2));\n        uVar4 = uVar4 + 4;\n      } while (uVar4 < uVar1);\n    }\n  }\n  *(uint *)(param_3 + 0x18) = param_2;\n  return;\n}" { (declaration "uint uVar1;" type_identifier identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "uint uVar4;" type_identifier identifier ;) (declaration "uint uVar5;" type_identifier identifier ;) (declaration "uint uVar6;" type_identifier identifier ;) (declaration "undefined4 *puVar7;" type_identifier (pointer_declarator "*puVar7" * identifier) ;) (declaration "undefined4 *puVar8;" type_identifier (pointer_declarator "*puVar8" * identifier) ;) (declaration "undefined4 *local_20;" type_identifier (pointer_declarator "*local_20" * identifier) ;) (expression_statement "iVar2 = *(int *)(param_3 + 0x18);" (assignment_expression "iVar2 = *(int *)(param_3 + 0x18)" identifier = (pointer_expression "*(int *)(param_3 + 0x18)" * (cast_expression "(int *)(param_3 + 0x18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x18)" ( (binary_expression "param_3 + 0x18" identifier + number_literal) ))))) ;) (if_statement "if (iVar2 != 0) {\n    uVar1 = 0x80U - iVar2;\n    if (param_2 < 0x80U - iVar2) {\n      uVar1 = param_2;\n    }\n    memcpy((void *)(param_3 + 0x1c + iVar2),param_1,uVar1);\n    *(int *)(param_3 + 0x18) = *(int *)(param_3 + 0x18) + uVar1;\n    uVar5 = iVar2 + uVar1;\n    if (0x40 < uVar5) {\n      FUN_00240130(param_3 + 0x1c,uVar5 & 0xffffffc0,param_3);\n      uVar4 = uVar5 & 0x3f;\n      puVar8 = (undefined4 *)(param_3 + 0x1c + (uVar5 & 0xffffffc0));\n      if (uVar4 < 4) {\n        if ((uVar4 != 0) &&\n           (*(undefined1 *)(param_3 + 0x1c) = *(undefined1 *)puVar8, (uVar5 & 2) != 0)) {\n          *(undefined2 *)(param_3 + 0x1a + uVar4) = *(undefined2 *)((int)puVar8 + (uVar4 - 2));\n        }\n      }\n      else {\n        *(undefined4 *)(param_3 + 0x1c) = *puVar8;\n        *(undefined4 *)(param_3 + 0x18 + uVar4) = *(undefined4 *)((uVar4 - 4) + (int)puVar8);\n        uVar6 = param_3 + 0x20U & 0xfffffffc;\n        iVar2 = (param_3 + 0x1c) - uVar6;\n        uVar5 = iVar2 + uVar4 & 0xfffffffc;\n        if (3 < uVar5) {\n          uVar3 = 0;\n          do {\n            *(undefined4 *)(uVar6 + uVar3) = *(undefined4 *)((int)puVar8 + (uVar3 - iVar2));\n            uVar3 = uVar3 + 4;\n          } while (uVar3 < uVar5);\n        }\n      }\n      *(uint *)(param_3 + 0x18) = uVar4;\n    }\n    param_2 = param_2 - uVar1;\n    param_1 = (undefined4 *)((int)param_1 + uVar1);\n  }" if (parenthesized_expression "(iVar2 != 0)" ( (binary_expression "iVar2 != 0" identifier != number_literal) )) (compound_statement "{\n    uVar1 = 0x80U - iVar2;\n    if (param_2 < 0x80U - iVar2) {\n      uVar1 = param_2;\n    }\n    memcpy((void *)(param_3 + 0x1c + iVar2),param_1,uVar1);\n    *(int *)(param_3 + 0x18) = *(int *)(param_3 + 0x18) + uVar1;\n    uVar5 = iVar2 + uVar1;\n    if (0x40 < uVar5) {\n      FUN_00240130(param_3 + 0x1c,uVar5 & 0xffffffc0,param_3);\n      uVar4 = uVar5 & 0x3f;\n      puVar8 = (undefined4 *)(param_3 + 0x1c + (uVar5 & 0xffffffc0));\n      if (uVar4 < 4) {\n        if ((uVar4 != 0) &&\n           (*(undefined1 *)(param_3 + 0x1c) = *(undefined1 *)puVar8, (uVar5 & 2) != 0)) {\n          *(undefined2 *)(param_3 + 0x1a + uVar4) = *(undefined2 *)((int)puVar8 + (uVar4 - 2));\n        }\n      }\n      else {\n        *(undefined4 *)(param_3 + 0x1c) = *puVar8;\n        *(undefined4 *)(param_3 + 0x18 + uVar4) = *(undefined4 *)((uVar4 - 4) + (int)puVar8);\n        uVar6 = param_3 + 0x20U & 0xfffffffc;\n        iVar2 = (param_3 + 0x1c) - uVar6;\n        uVar5 = iVar2 + uVar4 & 0xfffffffc;\n        if (3 < uVar5) {\n          uVar3 = 0;\n          do {\n            *(undefined4 *)(uVar6 + uVar3) = *(undefined4 *)((int)puVar8 + (uVar3 - iVar2));\n            uVar3 = uVar3 + 4;\n          } while (uVar3 < uVar5);\n        }\n      }\n      *(uint *)(param_3 + 0x18) = uVar4;\n    }\n    param_2 = param_2 - uVar1;\n    param_1 = (undefined4 *)((int)param_1 + uVar1);\n  }" { (expression_statement "uVar1 = 0x80U - iVar2;" (assignment_expression "uVar1 = 0x80U - iVar2" identifier = (binary_expression "0x80U - iVar2" number_literal - identifier)) ;) (if_statement "if (param_2 < 0x80U - iVar2) {\n      uVar1 = param_2;\n    }" if (parenthesized_expression "(param_2 < 0x80U - iVar2)" ( (binary_expression "param_2 < 0x80U - iVar2" identifier < (binary_expression "0x80U - iVar2" number_literal - identifier)) )) (compound_statement "{\n      uVar1 = param_2;\n    }" { (expression_statement "uVar1 = param_2;" (assignment_expression "uVar1 = param_2" identifier = identifier) ;) })) (expression_statement "memcpy((void *)(param_3 + 0x1c + iVar2),param_1,uVar1);" (call_expression "memcpy((void *)(param_3 + 0x1c + iVar2),param_1,uVar1)" identifier (argument_list "((void *)(param_3 + 0x1c + iVar2),param_1,uVar1)" ( (cast_expression "(void *)(param_3 + 0x1c + iVar2)" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x1c + iVar2)" ( (binary_expression "param_3 + 0x1c + iVar2" (binary_expression "param_3 + 0x1c" identifier + number_literal) + identifier) ))) , identifier , identifier ))) ;) (expression_statement "*(int *)(param_3 + 0x18) = *(int *)(param_3 + 0x18) + uVar1;" (assignment_expression "*(int *)(param_3 + 0x18) = *(int *)(param_3 + 0x18) + uVar1" (pointer_expression "*(int *)(param_3 + 0x18)" * (cast_expression "(int *)(param_3 + 0x18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x18)" ( (binary_expression "param_3 + 0x18" identifier + number_literal) )))) = (binary_expression "*(int *)(param_3 + 0x18) + uVar1" (pointer_expression "*(int *)(param_3 + 0x18)" * (cast_expression "(int *)(param_3 + 0x18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x18)" ( (binary_expression "param_3 + 0x18" identifier + number_literal) )))) + identifier)) ;) (expression_statement "uVar5 = iVar2 + uVar1;" (assignment_expression "uVar5 = iVar2 + uVar1" identifier = (binary_expression "iVar2 + uVar1" identifier + identifier)) ;) (if_statement "if (0x40 < uVar5) {\n      FUN_00240130(param_3 + 0x1c,uVar5 & 0xffffffc0,param_3);\n      uVar4 = uVar5 & 0x3f;\n      puVar8 = (undefined4 *)(param_3 + 0x1c + (uVar5 & 0xffffffc0));\n      if (uVar4 < 4) {\n        if ((uVar4 != 0) &&\n           (*(undefined1 *)(param_3 + 0x1c) = *(undefined1 *)puVar8, (uVar5 & 2) != 0)) {\n          *(undefined2 *)(param_3 + 0x1a + uVar4) = *(undefined2 *)((int)puVar8 + (uVar4 - 2));\n        }\n      }\n      else {\n        *(undefined4 *)(param_3 + 0x1c) = *puVar8;\n        *(undefined4 *)(param_3 + 0x18 + uVar4) = *(undefined4 *)((uVar4 - 4) + (int)puVar8);\n        uVar6 = param_3 + 0x20U & 0xfffffffc;\n        iVar2 = (param_3 + 0x1c) - uVar6;\n        uVar5 = iVar2 + uVar4 & 0xfffffffc;\n        if (3 < uVar5) {\n          uVar3 = 0;\n          do {\n            *(undefined4 *)(uVar6 + uVar3) = *(undefined4 *)((int)puVar8 + (uVar3 - iVar2));\n            uVar3 = uVar3 + 4;\n          } while (uVar3 < uVar5);\n        }\n      }\n      *(uint *)(param_3 + 0x18) = uVar4;\n    }" if (parenthesized_expression "(0x40 < uVar5)" ( (binary_expression "0x40 < uVar5" number_literal < identifier) )) (compound_statement "{\n      FUN_00240130(param_3 + 0x1c,uVar5 & 0xffffffc0,param_3);\n      uVar4 = uVar5 & 0x3f;\n      puVar8 = (undefined4 *)(param_3 + 0x1c + (uVar5 & 0xffffffc0));\n      if (uVar4 < 4) {\n        if ((uVar4 != 0) &&\n           (*(undefined1 *)(param_3 + 0x1c) = *(undefined1 *)puVar8, (uVar5 & 2) != 0)) {\n          *(undefined2 *)(param_3 + 0x1a + uVar4) = *(undefined2 *)((int)puVar8 + (uVar4 - 2));\n        }\n      }\n      else {\n        *(undefined4 *)(param_3 + 0x1c) = *puVar8;\n        *(undefined4 *)(param_3 + 0x18 + uVar4) = *(undefined4 *)((uVar4 - 4) + (int)puVar8);\n        uVar6 = param_3 + 0x20U & 0xfffffffc;\n        iVar2 = (param_3 + 0x1c) - uVar6;\n        uVar5 = iVar2 + uVar4 & 0xfffffffc;\n        if (3 < uVar5) {\n          uVar3 = 0;\n          do {\n            *(undefined4 *)(uVar6 + uVar3) = *(undefined4 *)((int)puVar8 + (uVar3 - iVar2));\n            uVar3 = uVar3 + 4;\n          } while (uVar3 < uVar5);\n        }\n      }\n      *(uint *)(param_3 + 0x18) = uVar4;\n    }" { (expression_statement "FUN_00240130(param_3 + 0x1c,uVar5 & 0xffffffc0,param_3);" (call_expression "FUN_00240130(param_3 + 0x1c,uVar5 & 0xffffffc0,param_3)" identifier (argument_list "(param_3 + 0x1c,uVar5 & 0xffffffc0,param_3)" ( (binary_expression "param_3 + 0x1c" identifier + number_literal) , (binary_expression "uVar5 & 0xffffffc0" identifier & number_literal) , identifier ))) ;) (expression_statement "uVar4 = uVar5 & 0x3f;" (assignment_expression "uVar4 = uVar5 & 0x3f" identifier = (binary_expression "uVar5 & 0x3f" identifier & number_literal)) ;) (expression_statement "puVar8 = (undefined4 *)(param_3 + 0x1c + (uVar5 & 0xffffffc0));" (assignment_expression "puVar8 = (undefined4 *)(param_3 + 0x1c + (uVar5 & 0xffffffc0))" identifier = (cast_expression "(undefined4 *)(param_3 + 0x1c + (uVar5 & 0xffffffc0))" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x1c + (uVar5 & 0xffffffc0))" ( (binary_expression "param_3 + 0x1c + (uVar5 & 0xffffffc0)" (binary_expression "param_3 + 0x1c" identifier + number_literal) + (parenthesized_expression "(uVar5 & 0xffffffc0)" ( (binary_expression "uVar5 & 0xffffffc0" identifier & number_literal) ))) )))) ;) (if_statement "if (uVar4 < 4) {\n        if ((uVar4 != 0) &&\n           (*(undefined1 *)(param_3 + 0x1c) = *(undefined1 *)puVar8, (uVar5 & 2) != 0)) {\n          *(undefined2 *)(param_3 + 0x1a + uVar4) = *(undefined2 *)((int)puVar8 + (uVar4 - 2));\n        }\n      }\n      else {\n        *(undefined4 *)(param_3 + 0x1c) = *puVar8;\n        *(undefined4 *)(param_3 + 0x18 + uVar4) = *(undefined4 *)((uVar4 - 4) + (int)puVar8);\n        uVar6 = param_3 + 0x20U & 0xfffffffc;\n        iVar2 = (param_3 + 0x1c) - uVar6;\n        uVar5 = iVar2 + uVar4 & 0xfffffffc;\n        if (3 < uVar5) {\n          uVar3 = 0;\n          do {\n            *(undefined4 *)(uVar6 + uVar3) = *(undefined4 *)((int)puVar8 + (uVar3 - iVar2));\n            uVar3 = uVar3 + 4;\n          } while (uVar3 < uVar5);\n        }\n      }" if (parenthesized_expression "(uVar4 < 4)" ( (binary_expression "uVar4 < 4" identifier < number_literal) )) (compound_statement "{\n        if ((uVar4 != 0) &&\n           (*(undefined1 *)(param_3 + 0x1c) = *(undefined1 *)puVar8, (uVar5 & 2) != 0)) {\n          *(undefined2 *)(param_3 + 0x1a + uVar4) = *(undefined2 *)((int)puVar8 + (uVar4 - 2));\n        }\n      }" { (if_statement "if ((uVar4 != 0) &&\n           (*(undefined1 *)(param_3 + 0x1c) = *(undefined1 *)puVar8, (uVar5 & 2) != 0)) {\n          *(undefined2 *)(param_3 + 0x1a + uVar4) = *(undefined2 *)((int)puVar8 + (uVar4 - 2));\n        }" if (parenthesized_expression "((uVar4 != 0) &&\n           (*(undefined1 *)(param_3 + 0x1c) = *(undefined1 *)puVar8, (uVar5 & 2) != 0))" ( (binary_expression "(uVar4 != 0) &&\n           (*(undefined1 *)(param_3 + 0x1c) = *(undefined1 *)puVar8, (uVar5 & 2) != 0)" (parenthesized_expression "(uVar4 != 0)" ( (binary_expression "uVar4 != 0" identifier != number_literal) )) && (parenthesized_expression "(*(undefined1 *)(param_3 + 0x1c) = *(undefined1 *)puVar8, (uVar5 & 2) != 0)" ( (comma_expression "*(undefined1 *)(param_3 + 0x1c) = *(undefined1 *)puVar8, (uVar5 & 2) != 0" (assignment_expression "*(undefined1 *)(param_3 + 0x1c) = *(undefined1 *)puVar8" (pointer_expression "*(undefined1 *)(param_3 + 0x1c)" * (cast_expression "(undefined1 *)(param_3 + 0x1c)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x1c)" ( (binary_expression "param_3 + 0x1c" identifier + number_literal) )))) = (pointer_expression "*(undefined1 *)puVar8" * (cast_expression "(undefined1 *)puVar8" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier))) , (binary_expression "(uVar5 & 2) != 0" (parenthesized_expression "(uVar5 & 2)" ( (binary_expression "uVar5 & 2" identifier & number_literal) )) != number_literal)) ))) )) (compound_statement "{\n          *(undefined2 *)(param_3 + 0x1a + uVar4) = *(undefined2 *)((int)puVar8 + (uVar4 - 2));\n        }" { (expression_statement "*(undefined2 *)(param_3 + 0x1a + uVar4) = *(undefined2 *)((int)puVar8 + (uVar4 - 2));" (assignment_expression "*(undefined2 *)(param_3 + 0x1a + uVar4) = *(undefined2 *)((int)puVar8 + (uVar4 - 2))" (pointer_expression "*(undefined2 *)(param_3 + 0x1a + uVar4)" * (cast_expression "(undefined2 *)(param_3 + 0x1a + uVar4)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x1a + uVar4)" ( (binary_expression "param_3 + 0x1a + uVar4" (binary_expression "param_3 + 0x1a" identifier + number_literal) + identifier) )))) = (pointer_expression "*(undefined2 *)((int)puVar8 + (uVar4 - 2))" * (cast_expression "(undefined2 *)((int)puVar8 + (uVar4 - 2))" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar8 + (uVar4 - 2))" ( (binary_expression "(int)puVar8 + (uVar4 - 2)" (cast_expression "(int)puVar8" ( (type_descriptor "int" primitive_type) ) identifier) + (parenthesized_expression "(uVar4 - 2)" ( (binary_expression "uVar4 - 2" identifier - number_literal) ))) ))))) ;) })) }) (else_clause "else {\n        *(undefined4 *)(param_3 + 0x1c) = *puVar8;\n        *(undefined4 *)(param_3 + 0x18 + uVar4) = *(undefined4 *)((uVar4 - 4) + (int)puVar8);\n        uVar6 = param_3 + 0x20U & 0xfffffffc;\n        iVar2 = (param_3 + 0x1c) - uVar6;\n        uVar5 = iVar2 + uVar4 & 0xfffffffc;\n        if (3 < uVar5) {\n          uVar3 = 0;\n          do {\n            *(undefined4 *)(uVar6 + uVar3) = *(undefined4 *)((int)puVar8 + (uVar3 - iVar2));\n            uVar3 = uVar3 + 4;\n          } while (uVar3 < uVar5);\n        }\n      }" else (compound_statement "{\n        *(undefined4 *)(param_3 + 0x1c) = *puVar8;\n        *(undefined4 *)(param_3 + 0x18 + uVar4) = *(undefined4 *)((uVar4 - 4) + (int)puVar8);\n        uVar6 = param_3 + 0x20U & 0xfffffffc;\n        iVar2 = (param_3 + 0x1c) - uVar6;\n        uVar5 = iVar2 + uVar4 & 0xfffffffc;\n        if (3 < uVar5) {\n          uVar3 = 0;\n          do {\n            *(undefined4 *)(uVar6 + uVar3) = *(undefined4 *)((int)puVar8 + (uVar3 - iVar2));\n            uVar3 = uVar3 + 4;\n          } while (uVar3 < uVar5);\n        }\n      }" { (expression_statement "*(undefined4 *)(param_3 + 0x1c) = *puVar8;" (assignment_expression "*(undefined4 *)(param_3 + 0x1c) = *puVar8" (pointer_expression "*(undefined4 *)(param_3 + 0x1c)" * (cast_expression "(undefined4 *)(param_3 + 0x1c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x1c)" ( (binary_expression "param_3 + 0x1c" identifier + number_literal) )))) = (pointer_expression "*puVar8" * identifier)) ;) (expression_statement "*(undefined4 *)(param_3 + 0x18 + uVar4) = *(undefined4 *)((uVar4 - 4) + (int)puVar8);" (assignment_expression "*(undefined4 *)(param_3 + 0x18 + uVar4) = *(undefined4 *)((uVar4 - 4) + (int)puVar8)" (pointer_expression "*(undefined4 *)(param_3 + 0x18 + uVar4)" * (cast_expression "(undefined4 *)(param_3 + 0x18 + uVar4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x18 + uVar4)" ( (binary_expression "param_3 + 0x18 + uVar4" (binary_expression "param_3 + 0x18" identifier + number_literal) + identifier) )))) = (pointer_expression "*(undefined4 *)((uVar4 - 4) + (int)puVar8)" * (cast_expression "(undefined4 *)((uVar4 - 4) + (int)puVar8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((uVar4 - 4) + (int)puVar8)" ( (binary_expression "(uVar4 - 4) + (int)puVar8" (parenthesized_expression "(uVar4 - 4)" ( (binary_expression "uVar4 - 4" identifier - number_literal) )) + (cast_expression "(int)puVar8" ( (type_descriptor "int" primitive_type) ) identifier)) ))))) ;) (expression_statement "uVar6 = param_3 + 0x20U & 0xfffffffc;" (assignment_expression "uVar6 = param_3 + 0x20U & 0xfffffffc" identifier = (binary_expression "param_3 + 0x20U & 0xfffffffc" (binary_expression "param_3 + 0x20U" identifier + number_literal) & number_literal)) ;) (expression_statement "iVar2 = (param_3 + 0x1c) - uVar6;" (assignment_expression "iVar2 = (param_3 + 0x1c) - uVar6" identifier = (binary_expression "(param_3 + 0x1c) - uVar6" (parenthesized_expression "(param_3 + 0x1c)" ( (binary_expression "param_3 + 0x1c" identifier + number_literal) )) - identifier)) ;) (expression_statement "uVar5 = iVar2 + uVar4 & 0xfffffffc;" (assignment_expression "uVar5 = iVar2 + uVar4 & 0xfffffffc" identifier = (binary_expression "iVar2 + uVar4 & 0xfffffffc" (binary_expression "iVar2 + uVar4" identifier + identifier) & number_literal)) ;) (if_statement "if (3 < uVar5) {\n          uVar3 = 0;\n          do {\n            *(undefined4 *)(uVar6 + uVar3) = *(undefined4 *)((int)puVar8 + (uVar3 - iVar2));\n            uVar3 = uVar3 + 4;\n          } while (uVar3 < uVar5);\n        }" if (parenthesized_expression "(3 < uVar5)" ( (binary_expression "3 < uVar5" number_literal < identifier) )) (compound_statement "{\n          uVar3 = 0;\n          do {\n            *(undefined4 *)(uVar6 + uVar3) = *(undefined4 *)((int)puVar8 + (uVar3 - iVar2));\n            uVar3 = uVar3 + 4;\n          } while (uVar3 < uVar5);\n        }" { (expression_statement "uVar3 = 0;" (assignment_expression "uVar3 = 0" identifier = number_literal) ;) (do_statement "do {\n            *(undefined4 *)(uVar6 + uVar3) = *(undefined4 *)((int)puVar8 + (uVar3 - iVar2));\n            uVar3 = uVar3 + 4;\n          } while (uVar3 < uVar5);" do (compound_statement "{\n            *(undefined4 *)(uVar6 + uVar3) = *(undefined4 *)((int)puVar8 + (uVar3 - iVar2));\n            uVar3 = uVar3 + 4;\n          }" { (expression_statement "*(undefined4 *)(uVar6 + uVar3) = *(undefined4 *)((int)puVar8 + (uVar3 - iVar2));" (assignment_expression "*(undefined4 *)(uVar6 + uVar3) = *(undefined4 *)((int)puVar8 + (uVar3 - iVar2))" (pointer_expression "*(undefined4 *)(uVar6 + uVar3)" * (cast_expression "(undefined4 *)(uVar6 + uVar3)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar6 + uVar3)" ( (binary_expression "uVar6 + uVar3" identifier + identifier) )))) = (pointer_expression "*(undefined4 *)((int)puVar8 + (uVar3 - iVar2))" * (cast_expression "(undefined4 *)((int)puVar8 + (uVar3 - iVar2))" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar8 + (uVar3 - iVar2))" ( (binary_expression "(int)puVar8 + (uVar3 - iVar2)" (cast_expression "(int)puVar8" ( (type_descriptor "int" primitive_type) ) identifier) + (parenthesized_expression "(uVar3 - iVar2)" ( (binary_expression "uVar3 - iVar2" identifier - identifier) ))) ))))) ;) (expression_statement "uVar3 = uVar3 + 4;" (assignment_expression "uVar3 = uVar3 + 4" identifier = (binary_expression "uVar3 + 4" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar3 < uVar5)" ( (binary_expression "uVar3 < uVar5" identifier < identifier) )) ;) })) }))) (expression_statement "*(uint *)(param_3 + 0x18) = uVar4;" (assignment_expression "*(uint *)(param_3 + 0x18) = uVar4" (pointer_expression "*(uint *)(param_3 + 0x18)" * (cast_expression "(uint *)(param_3 + 0x18)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x18)" ( (binary_expression "param_3 + 0x18" identifier + number_literal) )))) = identifier) ;) })) (expression_statement "param_2 = param_2 - uVar1;" (assignment_expression "param_2 = param_2 - uVar1" identifier = (binary_expression "param_2 - uVar1" identifier - identifier)) ;) (expression_statement "param_1 = (undefined4 *)((int)param_1 + uVar1);" (assignment_expression "param_1 = (undefined4 *)((int)param_1 + uVar1)" identifier = (cast_expression "(undefined4 *)((int)param_1 + uVar1)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_1 + uVar1)" ( (binary_expression "(int)param_1 + uVar1" (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) ;) })) (expression_statement "puVar8 = param_1;" (assignment_expression "puVar8 = param_1" identifier = identifier) ;) (if_statement "if (0x40 < param_2) {\n    if (((uint)param_1 & 3) != 0) {\n      uVar1 = param_2 - 0x41 >> 6;\n      puVar8 = param_1 + (uVar1 + 1) * 0x10;\n      do {\n        puVar7 = param_1 + 0x10;\n        *(undefined4 *)(param_3 + 0x1c) = *param_1;\n        *(undefined4 *)(param_3 + 0x20) = param_1[1];\n        *(undefined4 *)(param_3 + 0x24) = param_1[2];\n        *(undefined4 *)(param_3 + 0x28) = param_1[3];\n        *(undefined4 *)(param_3 + 0x2c) = param_1[4];\n        *(undefined4 *)(param_3 + 0x30) = param_1[5];\n        *(undefined4 *)(param_3 + 0x34) = param_1[6];\n        *(undefined4 *)(param_3 + 0x38) = param_1[7];\n        *(undefined4 *)(param_3 + 0x3c) = param_1[8];\n        *(undefined4 *)(param_3 + 0x40) = param_1[9];\n        *(undefined4 *)(param_3 + 0x44) = param_1[10];\n        *(undefined4 *)(param_3 + 0x48) = param_1[0xb];\n        *(undefined4 *)(param_3 + 0x4c) = param_1[0xc];\n        *(undefined4 *)(param_3 + 0x50) = param_1[0xd];\n        *(undefined4 *)(param_3 + 0x54) = param_1[0xe];\n        *(undefined4 *)(param_3 + 0x58) = param_1[0xf];\n        FUN_00240130((undefined4 *)(param_3 + 0x1c),0x40,param_3);\n        param_1 = puVar7;\n      } while (puVar7 != puVar8);\n      param_2 = (param_2 - 0x40) + uVar1 * -0x40;\n      goto LAB_00240a51;\n    }\n    puVar8 = (undefined4 *)((int)param_1 + (param_2 & 0xffffffc0));\n    FUN_00240130(param_1,param_2 & 0xffffffc0,param_3);\n    param_2 = param_2 & 0x3f;\n  }" if (parenthesized_expression "(0x40 < param_2)" ( (binary_expression "0x40 < param_2" number_literal < identifier) )) (compound_statement "{\n    if (((uint)param_1 & 3) != 0) {\n      uVar1 = param_2 - 0x41 >> 6;\n      puVar8 = param_1 + (uVar1 + 1) * 0x10;\n      do {\n        puVar7 = param_1 + 0x10;\n        *(undefined4 *)(param_3 + 0x1c) = *param_1;\n        *(undefined4 *)(param_3 + 0x20) = param_1[1];\n        *(undefined4 *)(param_3 + 0x24) = param_1[2];\n        *(undefined4 *)(param_3 + 0x28) = param_1[3];\n        *(undefined4 *)(param_3 + 0x2c) = param_1[4];\n        *(undefined4 *)(param_3 + 0x30) = param_1[5];\n        *(undefined4 *)(param_3 + 0x34) = param_1[6];\n        *(undefined4 *)(param_3 + 0x38) = param_1[7];\n        *(undefined4 *)(param_3 + 0x3c) = param_1[8];\n        *(undefined4 *)(param_3 + 0x40) = param_1[9];\n        *(undefined4 *)(param_3 + 0x44) = param_1[10];\n        *(undefined4 *)(param_3 + 0x48) = param_1[0xb];\n        *(undefined4 *)(param_3 + 0x4c) = param_1[0xc];\n        *(undefined4 *)(param_3 + 0x50) = param_1[0xd];\n        *(undefined4 *)(param_3 + 0x54) = param_1[0xe];\n        *(undefined4 *)(param_3 + 0x58) = param_1[0xf];\n        FUN_00240130((undefined4 *)(param_3 + 0x1c),0x40,param_3);\n        param_1 = puVar7;\n      } while (puVar7 != puVar8);\n      param_2 = (param_2 - 0x40) + uVar1 * -0x40;\n      goto LAB_00240a51;\n    }\n    puVar8 = (undefined4 *)((int)param_1 + (param_2 & 0xffffffc0));\n    FUN_00240130(param_1,param_2 & 0xffffffc0,param_3);\n    param_2 = param_2 & 0x3f;\n  }" { (if_statement "if (((uint)param_1 & 3) != 0) {\n      uVar1 = param_2 - 0x41 >> 6;\n      puVar8 = param_1 + (uVar1 + 1) * 0x10;\n      do {\n        puVar7 = param_1 + 0x10;\n        *(undefined4 *)(param_3 + 0x1c) = *param_1;\n        *(undefined4 *)(param_3 + 0x20) = param_1[1];\n        *(undefined4 *)(param_3 + 0x24) = param_1[2];\n        *(undefined4 *)(param_3 + 0x28) = param_1[3];\n        *(undefined4 *)(param_3 + 0x2c) = param_1[4];\n        *(undefined4 *)(param_3 + 0x30) = param_1[5];\n        *(undefined4 *)(param_3 + 0x34) = param_1[6];\n        *(undefined4 *)(param_3 + 0x38) = param_1[7];\n        *(undefined4 *)(param_3 + 0x3c) = param_1[8];\n        *(undefined4 *)(param_3 + 0x40) = param_1[9];\n        *(undefined4 *)(param_3 + 0x44) = param_1[10];\n        *(undefined4 *)(param_3 + 0x48) = param_1[0xb];\n        *(undefined4 *)(param_3 + 0x4c) = param_1[0xc];\n        *(undefined4 *)(param_3 + 0x50) = param_1[0xd];\n        *(undefined4 *)(param_3 + 0x54) = param_1[0xe];\n        *(undefined4 *)(param_3 + 0x58) = param_1[0xf];\n        FUN_00240130((undefined4 *)(param_3 + 0x1c),0x40,param_3);\n        param_1 = puVar7;\n      } while (puVar7 != puVar8);\n      param_2 = (param_2 - 0x40) + uVar1 * -0x40;\n      goto LAB_00240a51;\n    }" if (parenthesized_expression "(((uint)param_1 & 3) != 0)" ( (binary_expression "((uint)param_1 & 3) != 0" (parenthesized_expression "((uint)param_1 & 3)" ( (binary_expression "(uint)param_1 & 3" (cast_expression "(uint)param_1" ( (type_descriptor "uint" type_identifier) ) identifier) & number_literal) )) != number_literal) )) (compound_statement "{\n      uVar1 = param_2 - 0x41 >> 6;\n      puVar8 = param_1 + (uVar1 + 1) * 0x10;\n      do {\n        puVar7 = param_1 + 0x10;\n        *(undefined4 *)(param_3 + 0x1c) = *param_1;\n        *(undefined4 *)(param_3 + 0x20) = param_1[1];\n        *(undefined4 *)(param_3 + 0x24) = param_1[2];\n        *(undefined4 *)(param_3 + 0x28) = param_1[3];\n        *(undefined4 *)(param_3 + 0x2c) = param_1[4];\n        *(undefined4 *)(param_3 + 0x30) = param_1[5];\n        *(undefined4 *)(param_3 + 0x34) = param_1[6];\n        *(undefined4 *)(param_3 + 0x38) = param_1[7];\n        *(undefined4 *)(param_3 + 0x3c) = param_1[8];\n        *(undefined4 *)(param_3 + 0x40) = param_1[9];\n        *(undefined4 *)(param_3 + 0x44) = param_1[10];\n        *(undefined4 *)(param_3 + 0x48) = param_1[0xb];\n        *(undefined4 *)(param_3 + 0x4c) = param_1[0xc];\n        *(undefined4 *)(param_3 + 0x50) = param_1[0xd];\n        *(undefined4 *)(param_3 + 0x54) = param_1[0xe];\n        *(undefined4 *)(param_3 + 0x58) = param_1[0xf];\n        FUN_00240130((undefined4 *)(param_3 + 0x1c),0x40,param_3);\n        param_1 = puVar7;\n      } while (puVar7 != puVar8);\n      param_2 = (param_2 - 0x40) + uVar1 * -0x40;\n      goto LAB_00240a51;\n    }" { (expression_statement "uVar1 = param_2 - 0x41 >> 6;" (assignment_expression "uVar1 = param_2 - 0x41 >> 6" identifier = (binary_expression "param_2 - 0x41 >> 6" (binary_expression "param_2 - 0x41" identifier - number_literal) >> number_literal)) ;) (expression_statement "puVar8 = param_1 + (uVar1 + 1) * 0x10;" (assignment_expression "puVar8 = param_1 + (uVar1 + 1) * 0x10" identifier = (binary_expression "param_1 + (uVar1 + 1) * 0x10" identifier + (binary_expression "(uVar1 + 1) * 0x10" (parenthesized_expression "(uVar1 + 1)" ( (binary_expression "uVar1 + 1" identifier + number_literal) )) * number_literal))) ;) (do_statement "do {\n        puVar7 = param_1 + 0x10;\n        *(undefined4 *)(param_3 + 0x1c) = *param_1;\n        *(undefined4 *)(param_3 + 0x20) = param_1[1];\n        *(undefined4 *)(param_3 + 0x24) = param_1[2];\n        *(undefined4 *)(param_3 + 0x28) = param_1[3];\n        *(undefined4 *)(param_3 + 0x2c) = param_1[4];\n        *(undefined4 *)(param_3 + 0x30) = param_1[5];\n        *(undefined4 *)(param_3 + 0x34) = param_1[6];\n        *(undefined4 *)(param_3 + 0x38) = param_1[7];\n        *(undefined4 *)(param_3 + 0x3c) = param_1[8];\n        *(undefined4 *)(param_3 + 0x40) = param_1[9];\n        *(undefined4 *)(param_3 + 0x44) = param_1[10];\n        *(undefined4 *)(param_3 + 0x48) = param_1[0xb];\n        *(undefined4 *)(param_3 + 0x4c) = param_1[0xc];\n        *(undefined4 *)(param_3 + 0x50) = param_1[0xd];\n        *(undefined4 *)(param_3 + 0x54) = param_1[0xe];\n        *(undefined4 *)(param_3 + 0x58) = param_1[0xf];\n        FUN_00240130((undefined4 *)(param_3 + 0x1c),0x40,param_3);\n        param_1 = puVar7;\n      } while (puVar7 != puVar8);" do (compound_statement "{\n        puVar7 = param_1 + 0x10;\n        *(undefined4 *)(param_3 + 0x1c) = *param_1;\n        *(undefined4 *)(param_3 + 0x20) = param_1[1];\n        *(undefined4 *)(param_3 + 0x24) = param_1[2];\n        *(undefined4 *)(param_3 + 0x28) = param_1[3];\n        *(undefined4 *)(param_3 + 0x2c) = param_1[4];\n        *(undefined4 *)(param_3 + 0x30) = param_1[5];\n        *(undefined4 *)(param_3 + 0x34) = param_1[6];\n        *(undefined4 *)(param_3 + 0x38) = param_1[7];\n        *(undefined4 *)(param_3 + 0x3c) = param_1[8];\n        *(undefined4 *)(param_3 + 0x40) = param_1[9];\n        *(undefined4 *)(param_3 + 0x44) = param_1[10];\n        *(undefined4 *)(param_3 + 0x48) = param_1[0xb];\n        *(undefined4 *)(param_3 + 0x4c) = param_1[0xc];\n        *(undefined4 *)(param_3 + 0x50) = param_1[0xd];\n        *(undefined4 *)(param_3 + 0x54) = param_1[0xe];\n        *(undefined4 *)(param_3 + 0x58) = param_1[0xf];\n        FUN_00240130((undefined4 *)(param_3 + 0x1c),0x40,param_3);\n        param_1 = puVar7;\n      }" { (expression_statement "puVar7 = param_1 + 0x10;" (assignment_expression "puVar7 = param_1 + 0x10" identifier = (binary_expression "param_1 + 0x10" identifier + number_literal)) ;) (expression_statement "*(undefined4 *)(param_3 + 0x1c) = *param_1;" (assignment_expression "*(undefined4 *)(param_3 + 0x1c) = *param_1" (pointer_expression "*(undefined4 *)(param_3 + 0x1c)" * (cast_expression "(undefined4 *)(param_3 + 0x1c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x1c)" ( (binary_expression "param_3 + 0x1c" identifier + number_literal) )))) = (pointer_expression "*param_1" * identifier)) ;) (expression_statement "*(undefined4 *)(param_3 + 0x20) = param_1[1];" (assignment_expression "*(undefined4 *)(param_3 + 0x20) = param_1[1]" (pointer_expression "*(undefined4 *)(param_3 + 0x20)" * (cast_expression "(undefined4 *)(param_3 + 0x20)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x20)" ( (binary_expression "param_3 + 0x20" identifier + number_literal) )))) = (subscript_expression "param_1[1]" identifier [ number_literal ])) ;) (expression_statement "*(undefined4 *)(param_3 + 0x24) = param_1[2];" (assignment_expression "*(undefined4 *)(param_3 + 0x24) = param_1[2]" (pointer_expression "*(undefined4 *)(param_3 + 0x24)" * (cast_expression "(undefined4 *)(param_3 + 0x24)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x24)" ( (binary_expression "param_3 + 0x24" identifier + number_literal) )))) = (subscript_expression "param_1[2]" identifier [ number_literal ])) ;) (expression_statement "*(undefined4 *)(param_3 + 0x28) = param_1[3];" (assignment_expression "*(undefined4 *)(param_3 + 0x28) = param_1[3]" (pointer_expression "*(undefined4 *)(param_3 + 0x28)" * (cast_expression "(undefined4 *)(param_3 + 0x28)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x28)" ( (binary_expression "param_3 + 0x28" identifier + number_literal) )))) = (subscript_expression "param_1[3]" identifier [ number_literal ])) ;) (expression_statement "*(undefined4 *)(param_3 + 0x2c) = param_1[4];" (assignment_expression "*(undefined4 *)(param_3 + 0x2c) = param_1[4]" (pointer_expression "*(undefined4 *)(param_3 + 0x2c)" * (cast_expression "(undefined4 *)(param_3 + 0x2c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x2c)" ( (binary_expression "param_3 + 0x2c" identifier + number_literal) )))) = (subscript_expression "param_1[4]" identifier [ number_literal ])) ;) (expression_statement "*(undefined4 *)(param_3 + 0x30) = param_1[5];" (assignment_expression "*(undefined4 *)(param_3 + 0x30) = param_1[5]" (pointer_expression "*(undefined4 *)(param_3 + 0x30)" * (cast_expression "(undefined4 *)(param_3 + 0x30)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x30)" ( (binary_expression "param_3 + 0x30" identifier + number_literal) )))) = (subscript_expression "param_1[5]" identifier [ number_literal ])) ;) (expression_statement "*(undefined4 *)(param_3 + 0x34) = param_1[6];" (assignment_expression "*(undefined4 *)(param_3 + 0x34) = param_1[6]" (pointer_expression "*(undefined4 *)(param_3 + 0x34)" * (cast_expression "(undefined4 *)(param_3 + 0x34)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x34)" ( (binary_expression "param_3 + 0x34" identifier + number_literal) )))) = (subscript_expression "param_1[6]" identifier [ number_literal ])) ;) (expression_statement "*(undefined4 *)(param_3 + 0x38) = param_1[7];" (assignment_expression "*(undefined4 *)(param_3 + 0x38) = param_1[7]" (pointer_expression "*(undefined4 *)(param_3 + 0x38)" * (cast_expression "(undefined4 *)(param_3 + 0x38)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x38)" ( (binary_expression "param_3 + 0x38" identifier + number_literal) )))) = (subscript_expression "param_1[7]" identifier [ number_literal ])) ;) (expression_statement "*(undefined4 *)(param_3 + 0x3c) = param_1[8];" (assignment_expression "*(undefined4 *)(param_3 + 0x3c) = param_1[8]" (pointer_expression "*(undefined4 *)(param_3 + 0x3c)" * (cast_expression "(undefined4 *)(param_3 + 0x3c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x3c)" ( (binary_expression "param_3 + 0x3c" identifier + number_literal) )))) = (subscript_expression "param_1[8]" identifier [ number_literal ])) ;) (expression_statement "*(undefined4 *)(param_3 + 0x40) = param_1[9];" (assignment_expression "*(undefined4 *)(param_3 + 0x40) = param_1[9]" (pointer_expression "*(undefined4 *)(param_3 + 0x40)" * (cast_expression "(undefined4 *)(param_3 + 0x40)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x40)" ( (binary_expression "param_3 + 0x40" identifier + number_literal) )))) = (subscript_expression "param_1[9]" identifier [ number_literal ])) ;) (expression_statement "*(undefined4 *)(param_3 + 0x44) = param_1[10];" (assignment_expression "*(undefined4 *)(param_3 + 0x44) = param_1[10]" (pointer_expression "*(undefined4 *)(param_3 + 0x44)" * (cast_expression "(undefined4 *)(param_3 + 0x44)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x44)" ( (binary_expression "param_3 + 0x44" identifier + number_literal) )))) = (subscript_expression "param_1[10]" identifier [ number_literal ])) ;) (expression_statement "*(undefined4 *)(param_3 + 0x48) = param_1[0xb];" (assignment_expression "*(undefined4 *)(param_3 + 0x48) = param_1[0xb]" (pointer_expression "*(undefined4 *)(param_3 + 0x48)" * (cast_expression "(undefined4 *)(param_3 + 0x48)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x48)" ( (binary_expression "param_3 + 0x48" identifier + number_literal) )))) = (subscript_expression "param_1[0xb]" identifier [ number_literal ])) ;) (expression_statement "*(undefined4 *)(param_3 + 0x4c) = param_1[0xc];" (assignment_expression "*(undefined4 *)(param_3 + 0x4c) = param_1[0xc]" (pointer_expression "*(undefined4 *)(param_3 + 0x4c)" * (cast_expression "(undefined4 *)(param_3 + 0x4c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x4c)" ( (binary_expression "param_3 + 0x4c" identifier + number_literal) )))) = (subscript_expression "param_1[0xc]" identifier [ number_literal ])) ;) (expression_statement "*(undefined4 *)(param_3 + 0x50) = param_1[0xd];" (assignment_expression "*(undefined4 *)(param_3 + 0x50) = param_1[0xd]" (pointer_expression "*(undefined4 *)(param_3 + 0x50)" * (cast_expression "(undefined4 *)(param_3 + 0x50)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x50)" ( (binary_expression "param_3 + 0x50" identifier + number_literal) )))) = (subscript_expression "param_1[0xd]" identifier [ number_literal ])) ;) (expression_statement "*(undefined4 *)(param_3 + 0x54) = param_1[0xe];" (assignment_expression "*(undefined4 *)(param_3 + 0x54) = param_1[0xe]" (pointer_expression "*(undefined4 *)(param_3 + 0x54)" * (cast_expression "(undefined4 *)(param_3 + 0x54)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x54)" ( (binary_expression "param_3 + 0x54" identifier + number_literal) )))) = (subscript_expression "param_1[0xe]" identifier [ number_literal ])) ;) (expression_statement "*(undefined4 *)(param_3 + 0x58) = param_1[0xf];" (assignment_expression "*(undefined4 *)(param_3 + 0x58) = param_1[0xf]" (pointer_expression "*(undefined4 *)(param_3 + 0x58)" * (cast_expression "(undefined4 *)(param_3 + 0x58)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x58)" ( (binary_expression "param_3 + 0x58" identifier + number_literal) )))) = (subscript_expression "param_1[0xf]" identifier [ number_literal ])) ;) (expression_statement "FUN_00240130((undefined4 *)(param_3 + 0x1c),0x40,param_3);" (call_expression "FUN_00240130((undefined4 *)(param_3 + 0x1c),0x40,param_3)" identifier (argument_list "((undefined4 *)(param_3 + 0x1c),0x40,param_3)" ( (cast_expression "(undefined4 *)(param_3 + 0x1c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x1c)" ( (binary_expression "param_3 + 0x1c" identifier + number_literal) ))) , number_literal , identifier ))) ;) (expression_statement "param_1 = puVar7;" (assignment_expression "param_1 = puVar7" identifier = identifier) ;) }) while (parenthesized_expression "(puVar7 != puVar8)" ( (binary_expression "puVar7 != puVar8" identifier != identifier) )) ;) (expression_statement "param_2 = (param_2 - 0x40) + uVar1 * -0x40;" (assignment_expression "param_2 = (param_2 - 0x40) + uVar1 * -0x40" identifier = (binary_expression "(param_2 - 0x40) + uVar1 * -0x40" (parenthesized_expression "(param_2 - 0x40)" ( (binary_expression "param_2 - 0x40" identifier - number_literal) )) + (binary_expression "uVar1 * -0x40" identifier * number_literal))) ;) (goto_statement "goto LAB_00240a51;" goto statement_identifier ;) })) (expression_statement "puVar8 = (undefined4 *)((int)param_1 + (param_2 & 0xffffffc0));" (assignment_expression "puVar8 = (undefined4 *)((int)param_1 + (param_2 & 0xffffffc0))" identifier = (cast_expression "(undefined4 *)((int)param_1 + (param_2 & 0xffffffc0))" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_1 + (param_2 & 0xffffffc0))" ( (binary_expression "(int)param_1 + (param_2 & 0xffffffc0)" (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier) + (parenthesized_expression "(param_2 & 0xffffffc0)" ( (binary_expression "param_2 & 0xffffffc0" identifier & number_literal) ))) )))) ;) (expression_statement "FUN_00240130(param_1,param_2 & 0xffffffc0,param_3);" (call_expression "FUN_00240130(param_1,param_2 & 0xffffffc0,param_3)" identifier (argument_list "(param_1,param_2 & 0xffffffc0,param_3)" ( identifier , (binary_expression "param_2 & 0xffffffc0" identifier & number_literal) , identifier ))) ;) (expression_statement "param_2 = param_2 & 0x3f;" (assignment_expression "param_2 = param_2 & 0x3f" identifier = (binary_expression "param_2 & 0x3f" identifier & number_literal)) ;) })) (if_statement "if (param_2 == 0) {\n    return;\n  }" if (parenthesized_expression "(param_2 == 0)" ( (binary_expression "param_2 == 0" identifier == number_literal) )) (compound_statement "{\n    return;\n  }" { (return_statement "return;" return ;) })) (labeled_statement "LAB_00240a51:\n  local_20 = (undefined4 *)(param_3 + 0x1c);" statement_identifier : (expression_statement "local_20 = (undefined4 *)(param_3 + 0x1c);" (assignment_expression "local_20 = (undefined4 *)(param_3 + 0x1c)" identifier = (cast_expression "(undefined4 *)(param_3 + 0x1c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x1c)" ( (binary_expression "param_3 + 0x1c" identifier + number_literal) )))) ;)) (if_statement "if (param_2 < 4) {\n    if ((param_2 != 0) && (*(undefined1 *)local_20 = *(undefined1 *)puVar8, (param_2 & 2) != 0)) {\n      *(undefined2 *)(param_3 + 0x1a + param_2) = *(undefined2 *)((int)puVar8 + (param_2 - 2));\n    }\n  }\n  else {\n    *local_20 = *puVar8;\n    *(undefined4 *)(param_3 + 0x18 + param_2) = *(undefined4 *)((int)puVar8 + (param_2 - 4));\n    uVar5 = param_3 + 0x20U & 0xfffffffc;\n    iVar2 = (int)local_20 - uVar5;\n    uVar1 = iVar2 + param_2 & 0xfffffffc;\n    if (3 < uVar1) {\n      uVar4 = 0;\n      do {\n        *(undefined4 *)(uVar5 + uVar4) = *(undefined4 *)((int)puVar8 + (uVar4 - iVar2));\n        uVar4 = uVar4 + 4;\n      } while (uVar4 < uVar1);\n    }\n  }" if (parenthesized_expression "(param_2 < 4)" ( (binary_expression "param_2 < 4" identifier < number_literal) )) (compound_statement "{\n    if ((param_2 != 0) && (*(undefined1 *)local_20 = *(undefined1 *)puVar8, (param_2 & 2) != 0)) {\n      *(undefined2 *)(param_3 + 0x1a + param_2) = *(undefined2 *)((int)puVar8 + (param_2 - 2));\n    }\n  }" { (if_statement "if ((param_2 != 0) && (*(undefined1 *)local_20 = *(undefined1 *)puVar8, (param_2 & 2) != 0)) {\n      *(undefined2 *)(param_3 + 0x1a + param_2) = *(undefined2 *)((int)puVar8 + (param_2 - 2));\n    }" if (parenthesized_expression "((param_2 != 0) && (*(undefined1 *)local_20 = *(undefined1 *)puVar8, (param_2 & 2) != 0))" ( (binary_expression "(param_2 != 0) && (*(undefined1 *)local_20 = *(undefined1 *)puVar8, (param_2 & 2) != 0)" (parenthesized_expression "(param_2 != 0)" ( (binary_expression "param_2 != 0" identifier != number_literal) )) && (parenthesized_expression "(*(undefined1 *)local_20 = *(undefined1 *)puVar8, (param_2 & 2) != 0)" ( (comma_expression "*(undefined1 *)local_20 = *(undefined1 *)puVar8, (param_2 & 2) != 0" (assignment_expression "*(undefined1 *)local_20 = *(undefined1 *)puVar8" (pointer_expression "*(undefined1 *)local_20" * (cast_expression "(undefined1 *)local_20" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) = (pointer_expression "*(undefined1 *)puVar8" * (cast_expression "(undefined1 *)puVar8" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier))) , (binary_expression "(param_2 & 2) != 0" (parenthesized_expression "(param_2 & 2)" ( (binary_expression "param_2 & 2" identifier & number_literal) )) != number_literal)) ))) )) (compound_statement "{\n      *(undefined2 *)(param_3 + 0x1a + param_2) = *(undefined2 *)((int)puVar8 + (param_2 - 2));\n    }" { (expression_statement "*(undefined2 *)(param_3 + 0x1a + param_2) = *(undefined2 *)((int)puVar8 + (param_2 - 2));" (assignment_expression "*(undefined2 *)(param_3 + 0x1a + param_2) = *(undefined2 *)((int)puVar8 + (param_2 - 2))" (pointer_expression "*(undefined2 *)(param_3 + 0x1a + param_2)" * (cast_expression "(undefined2 *)(param_3 + 0x1a + param_2)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x1a + param_2)" ( (binary_expression "param_3 + 0x1a + param_2" (binary_expression "param_3 + 0x1a" identifier + number_literal) + identifier) )))) = (pointer_expression "*(undefined2 *)((int)puVar8 + (param_2 - 2))" * (cast_expression "(undefined2 *)((int)puVar8 + (param_2 - 2))" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar8 + (param_2 - 2))" ( (binary_expression "(int)puVar8 + (param_2 - 2)" (cast_expression "(int)puVar8" ( (type_descriptor "int" primitive_type) ) identifier) + (parenthesized_expression "(param_2 - 2)" ( (binary_expression "param_2 - 2" identifier - number_literal) ))) ))))) ;) })) }) (else_clause "else {\n    *local_20 = *puVar8;\n    *(undefined4 *)(param_3 + 0x18 + param_2) = *(undefined4 *)((int)puVar8 + (param_2 - 4));\n    uVar5 = param_3 + 0x20U & 0xfffffffc;\n    iVar2 = (int)local_20 - uVar5;\n    uVar1 = iVar2 + param_2 & 0xfffffffc;\n    if (3 < uVar1) {\n      uVar4 = 0;\n      do {\n        *(undefined4 *)(uVar5 + uVar4) = *(undefined4 *)((int)puVar8 + (uVar4 - iVar2));\n        uVar4 = uVar4 + 4;\n      } while (uVar4 < uVar1);\n    }\n  }" else (compound_statement "{\n    *local_20 = *puVar8;\n    *(undefined4 *)(param_3 + 0x18 + param_2) = *(undefined4 *)((int)puVar8 + (param_2 - 4));\n    uVar5 = param_3 + 0x20U & 0xfffffffc;\n    iVar2 = (int)local_20 - uVar5;\n    uVar1 = iVar2 + param_2 & 0xfffffffc;\n    if (3 < uVar1) {\n      uVar4 = 0;\n      do {\n        *(undefined4 *)(uVar5 + uVar4) = *(undefined4 *)((int)puVar8 + (uVar4 - iVar2));\n        uVar4 = uVar4 + 4;\n      } while (uVar4 < uVar1);\n    }\n  }" { (expression_statement "*local_20 = *puVar8;" (assignment_expression "*local_20 = *puVar8" (pointer_expression "*local_20" * identifier) = (pointer_expression "*puVar8" * identifier)) ;) (expression_statement "*(undefined4 *)(param_3 + 0x18 + param_2) = *(undefined4 *)((int)puVar8 + (param_2 - 4));" (assignment_expression "*(undefined4 *)(param_3 + 0x18 + param_2) = *(undefined4 *)((int)puVar8 + (param_2 - 4))" (pointer_expression "*(undefined4 *)(param_3 + 0x18 + param_2)" * (cast_expression "(undefined4 *)(param_3 + 0x18 + param_2)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x18 + param_2)" ( (binary_expression "param_3 + 0x18 + param_2" (binary_expression "param_3 + 0x18" identifier + number_literal) + identifier) )))) = (pointer_expression "*(undefined4 *)((int)puVar8 + (param_2 - 4))" * (cast_expression "(undefined4 *)((int)puVar8 + (param_2 - 4))" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar8 + (param_2 - 4))" ( (binary_expression "(int)puVar8 + (param_2 - 4)" (cast_expression "(int)puVar8" ( (type_descriptor "int" primitive_type) ) identifier) + (parenthesized_expression "(param_2 - 4)" ( (binary_expression "param_2 - 4" identifier - number_literal) ))) ))))) ;) (expression_statement "uVar5 = param_3 + 0x20U & 0xfffffffc;" (assignment_expression "uVar5 = param_3 + 0x20U & 0xfffffffc" identifier = (binary_expression "param_3 + 0x20U & 0xfffffffc" (binary_expression "param_3 + 0x20U" identifier + number_literal) & number_literal)) ;) (expression_statement "iVar2 = (int)local_20 - uVar5;" (assignment_expression "iVar2 = (int)local_20 - uVar5" identifier = (binary_expression "(int)local_20 - uVar5" (cast_expression "(int)local_20" ( (type_descriptor "int" primitive_type) ) identifier) - identifier)) ;) (expression_statement "uVar1 = iVar2 + param_2 & 0xfffffffc;" (assignment_expression "uVar1 = iVar2 + param_2 & 0xfffffffc" identifier = (binary_expression "iVar2 + param_2 & 0xfffffffc" (binary_expression "iVar2 + param_2" identifier + identifier) & number_literal)) ;) (if_statement "if (3 < uVar1) {\n      uVar4 = 0;\n      do {\n        *(undefined4 *)(uVar5 + uVar4) = *(undefined4 *)((int)puVar8 + (uVar4 - iVar2));\n        uVar4 = uVar4 + 4;\n      } while (uVar4 < uVar1);\n    }" if (parenthesized_expression "(3 < uVar1)" ( (binary_expression "3 < uVar1" number_literal < identifier) )) (compound_statement "{\n      uVar4 = 0;\n      do {\n        *(undefined4 *)(uVar5 + uVar4) = *(undefined4 *)((int)puVar8 + (uVar4 - iVar2));\n        uVar4 = uVar4 + 4;\n      } while (uVar4 < uVar1);\n    }" { (expression_statement "uVar4 = 0;" (assignment_expression "uVar4 = 0" identifier = number_literal) ;) (do_statement "do {\n        *(undefined4 *)(uVar5 + uVar4) = *(undefined4 *)((int)puVar8 + (uVar4 - iVar2));\n        uVar4 = uVar4 + 4;\n      } while (uVar4 < uVar1);" do (compound_statement "{\n        *(undefined4 *)(uVar5 + uVar4) = *(undefined4 *)((int)puVar8 + (uVar4 - iVar2));\n        uVar4 = uVar4 + 4;\n      }" { (expression_statement "*(undefined4 *)(uVar5 + uVar4) = *(undefined4 *)((int)puVar8 + (uVar4 - iVar2));" (assignment_expression "*(undefined4 *)(uVar5 + uVar4) = *(undefined4 *)((int)puVar8 + (uVar4 - iVar2))" (pointer_expression "*(undefined4 *)(uVar5 + uVar4)" * (cast_expression "(undefined4 *)(uVar5 + uVar4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar5 + uVar4)" ( (binary_expression "uVar5 + uVar4" identifier + identifier) )))) = (pointer_expression "*(undefined4 *)((int)puVar8 + (uVar4 - iVar2))" * (cast_expression "(undefined4 *)((int)puVar8 + (uVar4 - iVar2))" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar8 + (uVar4 - iVar2))" ( (binary_expression "(int)puVar8 + (uVar4 - iVar2)" (cast_expression "(int)puVar8" ( (type_descriptor "int" primitive_type) ) identifier) + (parenthesized_expression "(uVar4 - iVar2)" ( (binary_expression "uVar4 - iVar2" identifier - identifier) ))) ))))) ;) (expression_statement "uVar4 = uVar4 + 4;" (assignment_expression "uVar4 = uVar4 + 4" identifier = (binary_expression "uVar4 + 4" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar4 < uVar1)" ( (binary_expression "uVar4 < uVar1" identifier < identifier) )) ;) })) }))) (expression_statement "*(uint *)(param_3 + 0x18) = param_2;" (assignment_expression "*(uint *)(param_3 + 0x18) = param_2" (pointer_expression "*(uint *)(param_3 + 0x18)" * (cast_expression "(uint *)(param_3 + 0x18)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x18)" ( (binary_expression "param_3 + 0x18" identifier + number_literal) )))) = identifier) ;) (return_statement "return;" return ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression LIT - IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < (binary_expression LIT - IDENT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) })) (expression_statement (call_expression IDENT (argument_list ( (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) + IDENT) ))) , IDENT , IDENT ))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) , (binary_expression IDENT & LIT) , IDENT ))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT & LIT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) + (parenthesized_expression ( (binary_expression IDENT & LIT) ))) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != LIT) )) && (parenthesized_expression ( (comma_expression (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT))) , (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) != LIT)) ))) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) + IDENT) )))) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + (parenthesized_expression ( (binary_expression IDENT - LIT) ))) ))))) ;) })) }) (else_clause else (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) + IDENT) )))) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT - LIT) )) + (cast_expression ( (type_descriptor TYPE) ) IDENT)) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + LIT) & LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression IDENT + LIT) )) - IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + IDENT) & LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + IDENT) )))) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + (parenthesized_expression ( (binary_expression IDENT - IDENT) ))) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT < IDENT) )) ;) })) }))) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - IDENT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + IDENT) )))) ;) })) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) & LIT) )) != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT - LIT) >> LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (binary_expression (parenthesized_expression ( (binary_expression IDENT + LIT) )) * LIT))) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (call_expression IDENT (argument_list ( (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))) , LIT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) while (parenthesized_expression ( (binary_expression IDENT != IDENT) )) ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression IDENT - LIT) )) + (binary_expression IDENT * LIT))) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + (parenthesized_expression ( (binary_expression IDENT & LIT) ))) )))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , (binary_expression IDENT & LIT) , IDENT ))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT & LIT)) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (return_statement return ;) })) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != LIT) )) && (parenthesized_expression ( (comma_expression (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT))) , (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) != LIT)) ))) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) + IDENT) )))) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + (parenthesized_expression ( (binary_expression IDENT - LIT) ))) ))))) ;) })) }) (else_clause else (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) + IDENT) )))) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + (parenthesized_expression ( (binary_expression IDENT - LIT) ))) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + LIT) & LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) - IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + IDENT) & LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + IDENT) )))) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + (parenthesized_expression ( (binary_expression IDENT - IDENT) ))) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT < IDENT) )) ;) })) }))) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (return_statement return ;) })))
(function_definition "void FUN_00240970(undefined4 *param_1,uint param_2,int param_3)\n\n{\n  uint uVar1;\n  int iVar2;\n  uint uVar3;\n  uint uVar4;\n  uint uVar5;\n  uint uVar6;\n  undefined4 *puVar7;\n  undefined4 *puVar8;\n  undefined4 *local_20;\n  \n  iVar2 = *(int *)(param_3 + 0x18);\n  if (iVar2 != 0) {\n    uVar1 = 0x80U - iVar2;\n    if (param_2 < 0x80U - iVar2) {\n      uVar1 = param_2;\n    }\n    memcpy((void *)(param_3 + 0x1c + iVar2),param_1,uVar1);\n    *(int *)(param_3 + 0x18) = *(int *)(param_3 + 0x18) + uVar1;\n    uVar5 = iVar2 + uVar1;\n    if (0x40 < uVar5) {\n      FUN_00240130(param_3 + 0x1c,uVar5 & 0xffffffc0,param_3);\n      uVar4 = uVar5 & 0x3f;\n      puVar8 = (undefined4 *)(param_3 + 0x1c + (uVar5 & 0xffffffc0));\n      if (uVar4 < 4) {\n        if ((uVar4 != 0) &&\n           (*(undefined1 *)(param_3 + 0x1c) = *(undefined1 *)puVar8, (uVar5 & 2) != 0)) {\n          *(undefined2 *)(param_3 + 0x1a + uVar4) = *(undefined2 *)((int)puVar8 + (uVar4 - 2));\n        }\n      }\n      else {\n        *(undefined4 *)(param_3 + 0x1c) = *puVar8;\n        *(undefined4 *)(param_3 + 0x18 + uVar4) = *(undefined4 *)((uVar4 - 4) + (int)puVar8);\n        uVar6 = param_3 + 0x20U & 0xfffffffc;\n        iVar2 = (param_3 + 0x1c) - uVar6;\n        uVar5 = iVar2 + uVar4 & 0xfffffffc;\n        if (3 < uVar5) {\n          uVar3 = 0;\n          do {\n            *(undefined4 *)(uVar6 + uVar3) = *(undefined4 *)((int)puVar8 + (uVar3 - iVar2));\n            uVar3 = uVar3 + 4;\n          } while (uVar3 < uVar5);\n        }\n      }\n      *(uint *)(param_3 + 0x18) = uVar4;\n    }\n    param_2 = param_2 - uVar1;\n    param_1 = (undefined4 *)((int)param_1 + uVar1);\n  }\n  puVar8 = param_1;\n  if (0x40 < param_2) {\n    if (((uint)param_1 & 3) != 0) {\n      uVar1 = param_2 - 0x41 >> 6;\n      puVar8 = param_1 + (uVar1 + 1) * 0x10;\n      do {\n        puVar7 = param_1 + 0x10;\n        *(undefined4 *)(param_3 + 0x1c) = *param_1;\n        *(undefined4 *)(param_3 + 0x20) = param_1[1];\n        *(undefined4 *)(param_3 + 0x24) = param_1[2];\n        *(undefined4 *)(param_3 + 0x28) = param_1[3];\n        *(undefined4 *)(param_3 + 0x2c) = param_1[4];\n        *(undefined4 *)(param_3 + 0x30) = param_1[5];\n        *(undefined4 *)(param_3 + 0x34) = param_1[6];\n        *(undefined4 *)(param_3 + 0x38) = param_1[7];\n        *(undefined4 *)(param_3 + 0x3c) = param_1[8];\n        *(undefined4 *)(param_3 + 0x40) = param_1[9];\n        *(undefined4 *)(param_3 + 0x44) = param_1[10];\n        *(undefined4 *)(param_3 + 0x48) = param_1[0xb];\n        *(undefined4 *)(param_3 + 0x4c) = param_1[0xc];\n        *(undefined4 *)(param_3 + 0x50) = param_1[0xd];\n        *(undefined4 *)(param_3 + 0x54) = param_1[0xe];\n        *(undefined4 *)(param_3 + 0x58) = param_1[0xf];\n        FUN_00240130((undefined4 *)(param_3 + 0x1c),0x40,param_3);\n        param_1 = puVar7;\n      } while (puVar7 != puVar8);\n      param_2 = (param_2 - 0x40) + uVar1 * -0x40;\n      goto LAB_00240a51;\n    }\n    puVar8 = (undefined4 *)((int)param_1 + (param_2 & 0xffffffc0));\n    FUN_00240130(param_1,param_2 & 0xffffffc0,param_3);\n    param_2 = param_2 & 0x3f;\n  }\n  if (param_2 == 0) {\n    return;\n  }\nLAB_00240a51:\n  local_20 = (undefined4 *)(param_3 + 0x1c);\n  if (param_2 < 4) {\n    if ((param_2 != 0) && (*(undefined1 *)local_20 = *(undefined1 *)puVar8, (param_2 & 2) != 0)) {\n      *(undefined2 *)(param_3 + 0x1a + param_2) = *(undefined2 *)((int)puVar8 + (param_2 - 2));\n    }\n  }\n  else {\n    *local_20 = *puVar8;\n    *(undefined4 *)(param_3 + 0x18 + param_2) = *(undefined4 *)((int)puVar8 + (param_2 - 4));\n    uVar5 = param_3 + 0x20U & 0xfffffffc;\n    iVar2 = (int)local_20 - uVar5;\n    uVar1 = iVar2 + param_2 & 0xfffffffc;\n    if (3 < uVar1) {\n      uVar4 = 0;\n      do {\n        *(undefined4 *)(uVar5 + uVar4) = *(undefined4 *)((int)puVar8 + (uVar4 - iVar2));\n        uVar4 = uVar4 + 4;\n      } while (uVar4 < uVar1);\n    }\n  }\n  *(uint *)(param_3 + 0x18) = param_2;\n  return;\n}" (primitive_type "void") (function_declarator "FUN_00240970(undefined4 *param_1,uint param_2,int param_3)" (identifier "FUN_00240970") (parameter_list "(undefined4 *param_1,uint param_2,int param_3)" (( "(") (parameter_declaration "undefined4 *param_1" (type_identifier "undefined4") (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) (, ",") (parameter_declaration "uint param_2" (type_identifier "uint") (identifier "param_2")) (, ",") (parameter_declaration "int param_3" (primitive_type "int") (identifier "param_3")) () ")"))) (compound_statement "{\n  uint uVar1;\n  int iVar2;\n  uint uVar3;\n  uint uVar4;\n  uint uVar5;\n  uint uVar6;\n  undefined4 *puVar7;\n  undefined4 *puVar8;\n  undefined4 *local_20;\n  \n  iVar2 = *(int *)(param_3 + 0x18);\n  if (iVar2 != 0) {\n    uVar1 = 0x80U - iVar2;\n    if (param_2 < 0x80U - iVar2) {\n      uVar1 = param_2;\n    }\n    memcpy((void *)(param_3 + 0x1c + iVar2),param_1,uVar1);\n    *(int *)(param_3 + 0x18) = *(int *)(param_3 + 0x18) + uVar1;\n    uVar5 = iVar2 + uVar1;\n    if (0x40 < uVar5) {\n      FUN_00240130(param_3 + 0x1c,uVar5 & 0xffffffc0,param_3);\n      uVar4 = uVar5 & 0x3f;\n      puVar8 = (undefined4 *)(param_3 + 0x1c + (uVar5 & 0xffffffc0));\n      if (uVar4 < 4) {\n        if ((uVar4 != 0) &&\n           (*(undefined1 *)(param_3 + 0x1c) = *(undefined1 *)puVar8, (uVar5 & 2) != 0)) {\n          *(undefined2 *)(param_3 + 0x1a + uVar4) = *(undefined2 *)((int)puVar8 + (uVar4 - 2));\n        }\n      }\n      else {\n        *(undefined4 *)(param_3 + 0x1c) = *puVar8;\n        *(undefined4 *)(param_3 + 0x18 + uVar4) = *(undefined4 *)((uVar4 - 4) + (int)puVar8);\n        uVar6 = param_3 + 0x20U & 0xfffffffc;\n        iVar2 = (param_3 + 0x1c) - uVar6;\n        uVar5 = iVar2 + uVar4 & 0xfffffffc;\n        if (3 < uVar5) {\n          uVar3 = 0;\n          do {\n            *(undefined4 *)(uVar6 + uVar3) = *(undefined4 *)((int)puVar8 + (uVar3 - iVar2));\n            uVar3 = uVar3 + 4;\n          } while (uVar3 < uVar5);\n        }\n      }\n      *(uint *)(param_3 + 0x18) = uVar4;\n    }\n    param_2 = param_2 - uVar1;\n    param_1 = (undefined4 *)((int)param_1 + uVar1);\n  }\n  puVar8 = param_1;\n  if (0x40 < param_2) {\n    if (((uint)param_1 & 3) != 0) {\n      uVar1 = param_2 - 0x41 >> 6;\n      puVar8 = param_1 + (uVar1 + 1) * 0x10;\n      do {\n        puVar7 = param_1 + 0x10;\n        *(undefined4 *)(param_3 + 0x1c) = *param_1;\n        *(undefined4 *)(param_3 + 0x20) = param_1[1];\n        *(undefined4 *)(param_3 + 0x24) = param_1[2];\n        *(undefined4 *)(param_3 + 0x28) = param_1[3];\n        *(undefined4 *)(param_3 + 0x2c) = param_1[4];\n        *(undefined4 *)(param_3 + 0x30) = param_1[5];\n        *(undefined4 *)(param_3 + 0x34) = param_1[6];\n        *(undefined4 *)(param_3 + 0x38) = param_1[7];\n        *(undefined4 *)(param_3 + 0x3c) = param_1[8];\n        *(undefined4 *)(param_3 + 0x40) = param_1[9];\n        *(undefined4 *)(param_3 + 0x44) = param_1[10];\n        *(undefined4 *)(param_3 + 0x48) = param_1[0xb];\n        *(undefined4 *)(param_3 + 0x4c) = param_1[0xc];\n        *(undefined4 *)(param_3 + 0x50) = param_1[0xd];\n        *(undefined4 *)(param_3 + 0x54) = param_1[0xe];\n        *(undefined4 *)(param_3 + 0x58) = param_1[0xf];\n        FUN_00240130((undefined4 *)(param_3 + 0x1c),0x40,param_3);\n        param_1 = puVar7;\n      } while (puVar7 != puVar8);\n      param_2 = (param_2 - 0x40) + uVar1 * -0x40;\n      goto LAB_00240a51;\n    }\n    puVar8 = (undefined4 *)((int)param_1 + (param_2 & 0xffffffc0));\n    FUN_00240130(param_1,param_2 & 0xffffffc0,param_3);\n    param_2 = param_2 & 0x3f;\n  }\n  if (param_2 == 0) {\n    return;\n  }\nLAB_00240a51:\n  local_20 = (undefined4 *)(param_3 + 0x1c);\n  if (param_2 < 4) {\n    if ((param_2 != 0) && (*(undefined1 *)local_20 = *(undefined1 *)puVar8, (param_2 & 2) != 0)) {\n      *(undefined2 *)(param_3 + 0x1a + param_2) = *(undefined2 *)((int)puVar8 + (param_2 - 2));\n    }\n  }\n  else {\n    *local_20 = *puVar8;\n    *(undefined4 *)(param_3 + 0x18 + param_2) = *(undefined4 *)((int)puVar8 + (param_2 - 4));\n    uVar5 = param_3 + 0x20U & 0xfffffffc;\n    iVar2 = (int)local_20 - uVar5;\n    uVar1 = iVar2 + param_2 & 0xfffffffc;\n    if (3 < uVar1) {\n      uVar4 = 0;\n      do {\n        *(undefined4 *)(uVar5 + uVar4) = *(undefined4 *)((int)puVar8 + (uVar4 - iVar2));\n        uVar4 = uVar4 + 4;\n      } while (uVar4 < uVar1);\n    }\n  }\n  *(uint *)(param_3 + 0x18) = param_2;\n  return;\n}" ({ "{") (declaration "uint uVar1;" (type_identifier "uint") (identifier "uVar1") (; ";")) (declaration "int iVar2;" (primitive_type "int") (identifier "iVar2") (; ";")) (declaration "uint uVar3;" (type_identifier "uint") (identifier "uVar3") (; ";")) (declaration "uint uVar4;" (type_identifier "uint") (identifier "uVar4") (; ";")) (declaration "uint uVar5;" (type_identifier "uint") (identifier "uVar5") (; ";")) (declaration "uint uVar6;" (type_identifier "uint") (identifier "uVar6") (; ";")) (declaration "undefined4 *puVar7;" (type_identifier "undefined4") (pointer_declarator "*puVar7" (* "*") (identifier "puVar7")) (; ";")) (declaration "undefined4 *puVar8;" (type_identifier "undefined4") (pointer_declarator "*puVar8" (* "*") (identifier "puVar8")) (; ";")) (declaration "undefined4 *local_20;" (type_identifier "undefined4") (pointer_declarator "*local_20" (* "*") (identifier "local_20")) (; ";")) (expression_statement "iVar2 = *(int *)(param_3 + 0x18);" (assignment_expression "iVar2 = *(int *)(param_3 + 0x18)" (identifier "iVar2") (= "=") (pointer_expression "*(int *)(param_3 + 0x18)" (* "*") (cast_expression "(int *)(param_3 + 0x18)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + 0x18)" (( "(") (binary_expression "param_3 + 0x18" (identifier "param_3") (+ "+") (number_literal "0x18")) () ")"))))) (; ";")) (if_statement "if (iVar2 != 0) {\n    uVar1 = 0x80U - iVar2;\n    if (param_2 < 0x80U - iVar2) {\n      uVar1 = param_2;\n    }\n    memcpy((void *)(param_3 + 0x1c + iVar2),param_1,uVar1);\n    *(int *)(param_3 + 0x18) = *(int *)(param_3 + 0x18) + uVar1;\n    uVar5 = iVar2 + uVar1;\n    if (0x40 < uVar5) {\n      FUN_00240130(param_3 + 0x1c,uVar5 & 0xffffffc0,param_3);\n      uVar4 = uVar5 & 0x3f;\n      puVar8 = (undefined4 *)(param_3 + 0x1c + (uVar5 & 0xffffffc0));\n      if (uVar4 < 4) {\n        if ((uVar4 != 0) &&\n           (*(undefined1 *)(param_3 + 0x1c) = *(undefined1 *)puVar8, (uVar5 & 2) != 0)) {\n          *(undefined2 *)(param_3 + 0x1a + uVar4) = *(undefined2 *)((int)puVar8 + (uVar4 - 2));\n        }\n      }\n      else {\n        *(undefined4 *)(param_3 + 0x1c) = *puVar8;\n        *(undefined4 *)(param_3 + 0x18 + uVar4) = *(undefined4 *)((uVar4 - 4) + (int)puVar8);\n        uVar6 = param_3 + 0x20U & 0xfffffffc;\n        iVar2 = (param_3 + 0x1c) - uVar6;\n        uVar5 = iVar2 + uVar4 & 0xfffffffc;\n        if (3 < uVar5) {\n          uVar3 = 0;\n          do {\n            *(undefined4 *)(uVar6 + uVar3) = *(undefined4 *)((int)puVar8 + (uVar3 - iVar2));\n            uVar3 = uVar3 + 4;\n          } while (uVar3 < uVar5);\n        }\n      }\n      *(uint *)(param_3 + 0x18) = uVar4;\n    }\n    param_2 = param_2 - uVar1;\n    param_1 = (undefined4 *)((int)param_1 + uVar1);\n  }" (if "if") (parenthesized_expression "(iVar2 != 0)" (( "(") (binary_expression "iVar2 != 0" (identifier "iVar2") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    uVar1 = 0x80U - iVar2;\n    if (param_2 < 0x80U - iVar2) {\n      uVar1 = param_2;\n    }\n    memcpy((void *)(param_3 + 0x1c + iVar2),param_1,uVar1);\n    *(int *)(param_3 + 0x18) = *(int *)(param_3 + 0x18) + uVar1;\n    uVar5 = iVar2 + uVar1;\n    if (0x40 < uVar5) {\n      FUN_00240130(param_3 + 0x1c,uVar5 & 0xffffffc0,param_3);\n      uVar4 = uVar5 & 0x3f;\n      puVar8 = (undefined4 *)(param_3 + 0x1c + (uVar5 & 0xffffffc0));\n      if (uVar4 < 4) {\n        if ((uVar4 != 0) &&\n           (*(undefined1 *)(param_3 + 0x1c) = *(undefined1 *)puVar8, (uVar5 & 2) != 0)) {\n          *(undefined2 *)(param_3 + 0x1a + uVar4) = *(undefined2 *)((int)puVar8 + (uVar4 - 2));\n        }\n      }\n      else {\n        *(undefined4 *)(param_3 + 0x1c) = *puVar8;\n        *(undefined4 *)(param_3 + 0x18 + uVar4) = *(undefined4 *)((uVar4 - 4) + (int)puVar8);\n        uVar6 = param_3 + 0x20U & 0xfffffffc;\n        iVar2 = (param_3 + 0x1c) - uVar6;\n        uVar5 = iVar2 + uVar4 & 0xfffffffc;\n        if (3 < uVar5) {\n          uVar3 = 0;\n          do {\n            *(undefined4 *)(uVar6 + uVar3) = *(undefined4 *)((int)puVar8 + (uVar3 - iVar2));\n            uVar3 = uVar3 + 4;\n          } while (uVar3 < uVar5);\n        }\n      }\n      *(uint *)(param_3 + 0x18) = uVar4;\n    }\n    param_2 = param_2 - uVar1;\n    param_1 = (undefined4 *)((int)param_1 + uVar1);\n  }" ({ "{") (expression_statement "uVar1 = 0x80U - iVar2;" (assignment_expression "uVar1 = 0x80U - iVar2" (identifier "uVar1") (= "=") (binary_expression "0x80U - iVar2" (number_literal "0x80U") (- "-") (identifier "iVar2"))) (; ";")) (if_statement "if (param_2 < 0x80U - iVar2) {\n      uVar1 = param_2;\n    }" (if "if") (parenthesized_expression "(param_2 < 0x80U - iVar2)" (( "(") (binary_expression "param_2 < 0x80U - iVar2" (identifier "param_2") (< "<") (binary_expression "0x80U - iVar2" (number_literal "0x80U") (- "-") (identifier "iVar2"))) () ")")) (compound_statement "{\n      uVar1 = param_2;\n    }" ({ "{") (expression_statement "uVar1 = param_2;" (assignment_expression "uVar1 = param_2" (identifier "uVar1") (= "=") (identifier "param_2")) (; ";")) (} "}"))) (expression_statement "memcpy((void *)(param_3 + 0x1c + iVar2),param_1,uVar1);" (call_expression "memcpy((void *)(param_3 + 0x1c + iVar2),param_1,uVar1)" (identifier "memcpy") (argument_list "((void *)(param_3 + 0x1c + iVar2),param_1,uVar1)" (( "(") (cast_expression "(void *)(param_3 + 0x1c + iVar2)" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + 0x1c + iVar2)" (( "(") (binary_expression "param_3 + 0x1c + iVar2" (binary_expression "param_3 + 0x1c" (identifier "param_3") (+ "+") (number_literal "0x1c")) (+ "+") (identifier "iVar2")) () ")"))) (, ",") (identifier "param_1") (, ",") (identifier "uVar1") () ")"))) (; ";")) (expression_statement "*(int *)(param_3 + 0x18) = *(int *)(param_3 + 0x18) + uVar1;" (assignment_expression "*(int *)(param_3 + 0x18) = *(int *)(param_3 + 0x18) + uVar1" (pointer_expression "*(int *)(param_3 + 0x18)" (* "*") (cast_expression "(int *)(param_3 + 0x18)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + 0x18)" (( "(") (binary_expression "param_3 + 0x18" (identifier "param_3") (+ "+") (number_literal "0x18")) () ")")))) (= "=") (binary_expression "*(int *)(param_3 + 0x18) + uVar1" (pointer_expression "*(int *)(param_3 + 0x18)" (* "*") (cast_expression "(int *)(param_3 + 0x18)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + 0x18)" (( "(") (binary_expression "param_3 + 0x18" (identifier "param_3") (+ "+") (number_literal "0x18")) () ")")))) (+ "+") (identifier "uVar1"))) (; ";")) (expression_statement "uVar5 = iVar2 + uVar1;" (assignment_expression "uVar5 = iVar2 + uVar1" (identifier "uVar5") (= "=") (binary_expression "iVar2 + uVar1" (identifier "iVar2") (+ "+") (identifier "uVar1"))) (; ";")) (if_statement "if (0x40 < uVar5) {\n      FUN_00240130(param_3 + 0x1c,uVar5 & 0xffffffc0,param_3);\n      uVar4 = uVar5 & 0x3f;\n      puVar8 = (undefined4 *)(param_3 + 0x1c + (uVar5 & 0xffffffc0));\n      if (uVar4 < 4) {\n        if ((uVar4 != 0) &&\n           (*(undefined1 *)(param_3 + 0x1c) = *(undefined1 *)puVar8, (uVar5 & 2) != 0)) {\n          *(undefined2 *)(param_3 + 0x1a + uVar4) = *(undefined2 *)((int)puVar8 + (uVar4 - 2));\n        }\n      }\n      else {\n        *(undefined4 *)(param_3 + 0x1c) = *puVar8;\n        *(undefined4 *)(param_3 + 0x18 + uVar4) = *(undefined4 *)((uVar4 - 4) + (int)puVar8);\n        uVar6 = param_3 + 0x20U & 0xfffffffc;\n        iVar2 = (param_3 + 0x1c) - uVar6;\n        uVar5 = iVar2 + uVar4 & 0xfffffffc;\n        if (3 < uVar5) {\n          uVar3 = 0;\n          do {\n            *(undefined4 *)(uVar6 + uVar3) = *(undefined4 *)((int)puVar8 + (uVar3 - iVar2));\n            uVar3 = uVar3 + 4;\n          } while (uVar3 < uVar5);\n        }\n      }\n      *(uint *)(param_3 + 0x18) = uVar4;\n    }" (if "if") (parenthesized_expression "(0x40 < uVar5)" (( "(") (binary_expression "0x40 < uVar5" (number_literal "0x40") (< "<") (identifier "uVar5")) () ")")) (compound_statement "{\n      FUN_00240130(param_3 + 0x1c,uVar5 & 0xffffffc0,param_3);\n      uVar4 = uVar5 & 0x3f;\n      puVar8 = (undefined4 *)(param_3 + 0x1c + (uVar5 & 0xffffffc0));\n      if (uVar4 < 4) {\n        if ((uVar4 != 0) &&\n           (*(undefined1 *)(param_3 + 0x1c) = *(undefined1 *)puVar8, (uVar5 & 2) != 0)) {\n          *(undefined2 *)(param_3 + 0x1a + uVar4) = *(undefined2 *)((int)puVar8 + (uVar4 - 2));\n        }\n      }\n      else {\n        *(undefined4 *)(param_3 + 0x1c) = *puVar8;\n        *(undefined4 *)(param_3 + 0x18 + uVar4) = *(undefined4 *)((uVar4 - 4) + (int)puVar8);\n        uVar6 = param_3 + 0x20U & 0xfffffffc;\n        iVar2 = (param_3 + 0x1c) - uVar6;\n        uVar5 = iVar2 + uVar4 & 0xfffffffc;\n        if (3 < uVar5) {\n          uVar3 = 0;\n          do {\n            *(undefined4 *)(uVar6 + uVar3) = *(undefined4 *)((int)puVar8 + (uVar3 - iVar2));\n            uVar3 = uVar3 + 4;\n          } while (uVar3 < uVar5);\n        }\n      }\n      *(uint *)(param_3 + 0x18) = uVar4;\n    }" ({ "{") (expression_statement "FUN_00240130(param_3 + 0x1c,uVar5 & 0xffffffc0,param_3);" (call_expression "FUN_00240130(param_3 + 0x1c,uVar5 & 0xffffffc0,param_3)" (identifier "FUN_00240130") (argument_list "(param_3 + 0x1c,uVar5 & 0xffffffc0,param_3)" (( "(") (binary_expression "param_3 + 0x1c" (identifier "param_3") (+ "+") (number_literal "0x1c")) (, ",") (binary_expression "uVar5 & 0xffffffc0" (identifier "uVar5") (& "&") (number_literal "0xffffffc0")) (, ",") (identifier "param_3") () ")"))) (; ";")) (expression_statement "uVar4 = uVar5 & 0x3f;" (assignment_expression "uVar4 = uVar5 & 0x3f" (identifier "uVar4") (= "=") (binary_expression "uVar5 & 0x3f" (identifier "uVar5") (& "&") (number_literal "0x3f"))) (; ";")) (expression_statement "puVar8 = (undefined4 *)(param_3 + 0x1c + (uVar5 & 0xffffffc0));" (assignment_expression "puVar8 = (undefined4 *)(param_3 + 0x1c + (uVar5 & 0xffffffc0))" (identifier "puVar8") (= "=") (cast_expression "(undefined4 *)(param_3 + 0x1c + (uVar5 & 0xffffffc0))" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + 0x1c + (uVar5 & 0xffffffc0))" (( "(") (binary_expression "param_3 + 0x1c + (uVar5 & 0xffffffc0)" (binary_expression "param_3 + 0x1c" (identifier "param_3") (+ "+") (number_literal "0x1c")) (+ "+") (parenthesized_expression "(uVar5 & 0xffffffc0)" (( "(") (binary_expression "uVar5 & 0xffffffc0" (identifier "uVar5") (& "&") (number_literal "0xffffffc0")) () ")"))) () ")")))) (; ";")) (if_statement "if (uVar4 < 4) {\n        if ((uVar4 != 0) &&\n           (*(undefined1 *)(param_3 + 0x1c) = *(undefined1 *)puVar8, (uVar5 & 2) != 0)) {\n          *(undefined2 *)(param_3 + 0x1a + uVar4) = *(undefined2 *)((int)puVar8 + (uVar4 - 2));\n        }\n      }\n      else {\n        *(undefined4 *)(param_3 + 0x1c) = *puVar8;\n        *(undefined4 *)(param_3 + 0x18 + uVar4) = *(undefined4 *)((uVar4 - 4) + (int)puVar8);\n        uVar6 = param_3 + 0x20U & 0xfffffffc;\n        iVar2 = (param_3 + 0x1c) - uVar6;\n        uVar5 = iVar2 + uVar4 & 0xfffffffc;\n        if (3 < uVar5) {\n          uVar3 = 0;\n          do {\n            *(undefined4 *)(uVar6 + uVar3) = *(undefined4 *)((int)puVar8 + (uVar3 - iVar2));\n            uVar3 = uVar3 + 4;\n          } while (uVar3 < uVar5);\n        }\n      }" (if "if") (parenthesized_expression "(uVar4 < 4)" (( "(") (binary_expression "uVar4 < 4" (identifier "uVar4") (< "<") (number_literal "4")) () ")")) (compound_statement "{\n        if ((uVar4 != 0) &&\n           (*(undefined1 *)(param_3 + 0x1c) = *(undefined1 *)puVar8, (uVar5 & 2) != 0)) {\n          *(undefined2 *)(param_3 + 0x1a + uVar4) = *(undefined2 *)((int)puVar8 + (uVar4 - 2));\n        }\n      }" ({ "{") (if_statement "if ((uVar4 != 0) &&\n           (*(undefined1 *)(param_3 + 0x1c) = *(undefined1 *)puVar8, (uVar5 & 2) != 0)) {\n          *(undefined2 *)(param_3 + 0x1a + uVar4) = *(undefined2 *)((int)puVar8 + (uVar4 - 2));\n        }" (if "if") (parenthesized_expression "((uVar4 != 0) &&\n           (*(undefined1 *)(param_3 + 0x1c) = *(undefined1 *)puVar8, (uVar5 & 2) != 0))" (( "(") (binary_expression "(uVar4 != 0) &&\n           (*(undefined1 *)(param_3 + 0x1c) = *(undefined1 *)puVar8, (uVar5 & 2) != 0)" (parenthesized_expression "(uVar4 != 0)" (( "(") (binary_expression "uVar4 != 0" (identifier "uVar4") (!= "!=") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(*(undefined1 *)(param_3 + 0x1c) = *(undefined1 *)puVar8, (uVar5 & 2) != 0)" (( "(") (comma_expression "*(undefined1 *)(param_3 + 0x1c) = *(undefined1 *)puVar8, (uVar5 & 2) != 0" (assignment_expression "*(undefined1 *)(param_3 + 0x1c) = *(undefined1 *)puVar8" (pointer_expression "*(undefined1 *)(param_3 + 0x1c)" (* "*") (cast_expression "(undefined1 *)(param_3 + 0x1c)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + 0x1c)" (( "(") (binary_expression "param_3 + 0x1c" (identifier "param_3") (+ "+") (number_literal "0x1c")) () ")")))) (= "=") (pointer_expression "*(undefined1 *)puVar8" (* "*") (cast_expression "(undefined1 *)puVar8" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "puVar8")))) (, ",") (binary_expression "(uVar5 & 2) != 0" (parenthesized_expression "(uVar5 & 2)" (( "(") (binary_expression "uVar5 & 2" (identifier "uVar5") (& "&") (number_literal "2")) () ")")) (!= "!=") (number_literal "0"))) () ")"))) () ")")) (compound_statement "{\n          *(undefined2 *)(param_3 + 0x1a + uVar4) = *(undefined2 *)((int)puVar8 + (uVar4 - 2));\n        }" ({ "{") (expression_statement "*(undefined2 *)(param_3 + 0x1a + uVar4) = *(undefined2 *)((int)puVar8 + (uVar4 - 2));" (assignment_expression "*(undefined2 *)(param_3 + 0x1a + uVar4) = *(undefined2 *)((int)puVar8 + (uVar4 - 2))" (pointer_expression "*(undefined2 *)(param_3 + 0x1a + uVar4)" (* "*") (cast_expression "(undefined2 *)(param_3 + 0x1a + uVar4)" (( "(") (type_descriptor "undefined2 *" (type_identifier "undefined2") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + 0x1a + uVar4)" (( "(") (binary_expression "param_3 + 0x1a + uVar4" (binary_expression "param_3 + 0x1a" (identifier "param_3") (+ "+") (number_literal "0x1a")) (+ "+") (identifier "uVar4")) () ")")))) (= "=") (pointer_expression "*(undefined2 *)((int)puVar8 + (uVar4 - 2))" (* "*") (cast_expression "(undefined2 *)((int)puVar8 + (uVar4 - 2))" (( "(") (type_descriptor "undefined2 *" (type_identifier "undefined2") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar8 + (uVar4 - 2))" (( "(") (binary_expression "(int)puVar8 + (uVar4 - 2)" (cast_expression "(int)puVar8" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar8")) (+ "+") (parenthesized_expression "(uVar4 - 2)" (( "(") (binary_expression "uVar4 - 2" (identifier "uVar4") (- "-") (number_literal "2")) () ")"))) () ")"))))) (; ";")) (} "}"))) (} "}")) (else_clause "else {\n        *(undefined4 *)(param_3 + 0x1c) = *puVar8;\n        *(undefined4 *)(param_3 + 0x18 + uVar4) = *(undefined4 *)((uVar4 - 4) + (int)puVar8);\n        uVar6 = param_3 + 0x20U & 0xfffffffc;\n        iVar2 = (param_3 + 0x1c) - uVar6;\n        uVar5 = iVar2 + uVar4 & 0xfffffffc;\n        if (3 < uVar5) {\n          uVar3 = 0;\n          do {\n            *(undefined4 *)(uVar6 + uVar3) = *(undefined4 *)((int)puVar8 + (uVar3 - iVar2));\n            uVar3 = uVar3 + 4;\n          } while (uVar3 < uVar5);\n        }\n      }" (else "else") (compound_statement "{\n        *(undefined4 *)(param_3 + 0x1c) = *puVar8;\n        *(undefined4 *)(param_3 + 0x18 + uVar4) = *(undefined4 *)((uVar4 - 4) + (int)puVar8);\n        uVar6 = param_3 + 0x20U & 0xfffffffc;\n        iVar2 = (param_3 + 0x1c) - uVar6;\n        uVar5 = iVar2 + uVar4 & 0xfffffffc;\n        if (3 < uVar5) {\n          uVar3 = 0;\n          do {\n            *(undefined4 *)(uVar6 + uVar3) = *(undefined4 *)((int)puVar8 + (uVar3 - iVar2));\n            uVar3 = uVar3 + 4;\n          } while (uVar3 < uVar5);\n        }\n      }" ({ "{") (expression_statement "*(undefined4 *)(param_3 + 0x1c) = *puVar8;" (assignment_expression "*(undefined4 *)(param_3 + 0x1c) = *puVar8" (pointer_expression "*(undefined4 *)(param_3 + 0x1c)" (* "*") (cast_expression "(undefined4 *)(param_3 + 0x1c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + 0x1c)" (( "(") (binary_expression "param_3 + 0x1c" (identifier "param_3") (+ "+") (number_literal "0x1c")) () ")")))) (= "=") (pointer_expression "*puVar8" (* "*") (identifier "puVar8"))) (; ";")) (expression_statement "*(undefined4 *)(param_3 + 0x18 + uVar4) = *(undefined4 *)((uVar4 - 4) + (int)puVar8);" (assignment_expression "*(undefined4 *)(param_3 + 0x18 + uVar4) = *(undefined4 *)((uVar4 - 4) + (int)puVar8)" (pointer_expression "*(undefined4 *)(param_3 + 0x18 + uVar4)" (* "*") (cast_expression "(undefined4 *)(param_3 + 0x18 + uVar4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + 0x18 + uVar4)" (( "(") (binary_expression "param_3 + 0x18 + uVar4" (binary_expression "param_3 + 0x18" (identifier "param_3") (+ "+") (number_literal "0x18")) (+ "+") (identifier "uVar4")) () ")")))) (= "=") (pointer_expression "*(undefined4 *)((uVar4 - 4) + (int)puVar8)" (* "*") (cast_expression "(undefined4 *)((uVar4 - 4) + (int)puVar8)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((uVar4 - 4) + (int)puVar8)" (( "(") (binary_expression "(uVar4 - 4) + (int)puVar8" (parenthesized_expression "(uVar4 - 4)" (( "(") (binary_expression "uVar4 - 4" (identifier "uVar4") (- "-") (number_literal "4")) () ")")) (+ "+") (cast_expression "(int)puVar8" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar8"))) () ")"))))) (; ";")) (expression_statement "uVar6 = param_3 + 0x20U & 0xfffffffc;" (assignment_expression "uVar6 = param_3 + 0x20U & 0xfffffffc" (identifier "uVar6") (= "=") (binary_expression "param_3 + 0x20U & 0xfffffffc" (binary_expression "param_3 + 0x20U" (identifier "param_3") (+ "+") (number_literal "0x20U")) (& "&") (number_literal "0xfffffffc"))) (; ";")) (expression_statement "iVar2 = (param_3 + 0x1c) - uVar6;" (assignment_expression "iVar2 = (param_3 + 0x1c) - uVar6" (identifier "iVar2") (= "=") (binary_expression "(param_3 + 0x1c) - uVar6" (parenthesized_expression "(param_3 + 0x1c)" (( "(") (binary_expression "param_3 + 0x1c" (identifier "param_3") (+ "+") (number_literal "0x1c")) () ")")) (- "-") (identifier "uVar6"))) (; ";")) (expression_statement "uVar5 = iVar2 + uVar4 & 0xfffffffc;" (assignment_expression "uVar5 = iVar2 + uVar4 & 0xfffffffc" (identifier "uVar5") (= "=") (binary_expression "iVar2 + uVar4 & 0xfffffffc" (binary_expression "iVar2 + uVar4" (identifier "iVar2") (+ "+") (identifier "uVar4")) (& "&") (number_literal "0xfffffffc"))) (; ";")) (if_statement "if (3 < uVar5) {\n          uVar3 = 0;\n          do {\n            *(undefined4 *)(uVar6 + uVar3) = *(undefined4 *)((int)puVar8 + (uVar3 - iVar2));\n            uVar3 = uVar3 + 4;\n          } while (uVar3 < uVar5);\n        }" (if "if") (parenthesized_expression "(3 < uVar5)" (( "(") (binary_expression "3 < uVar5" (number_literal "3") (< "<") (identifier "uVar5")) () ")")) (compound_statement "{\n          uVar3 = 0;\n          do {\n            *(undefined4 *)(uVar6 + uVar3) = *(undefined4 *)((int)puVar8 + (uVar3 - iVar2));\n            uVar3 = uVar3 + 4;\n          } while (uVar3 < uVar5);\n        }" ({ "{") (expression_statement "uVar3 = 0;" (assignment_expression "uVar3 = 0" (identifier "uVar3") (= "=") (number_literal "0")) (; ";")) (do_statement "do {\n            *(undefined4 *)(uVar6 + uVar3) = *(undefined4 *)((int)puVar8 + (uVar3 - iVar2));\n            uVar3 = uVar3 + 4;\n          } while (uVar3 < uVar5);" (do "do") (compound_statement "{\n            *(undefined4 *)(uVar6 + uVar3) = *(undefined4 *)((int)puVar8 + (uVar3 - iVar2));\n            uVar3 = uVar3 + 4;\n          }" ({ "{") (expression_statement "*(undefined4 *)(uVar6 + uVar3) = *(undefined4 *)((int)puVar8 + (uVar3 - iVar2));" (assignment_expression "*(undefined4 *)(uVar6 + uVar3) = *(undefined4 *)((int)puVar8 + (uVar3 - iVar2))" (pointer_expression "*(undefined4 *)(uVar6 + uVar3)" (* "*") (cast_expression "(undefined4 *)(uVar6 + uVar3)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar6 + uVar3)" (( "(") (binary_expression "uVar6 + uVar3" (identifier "uVar6") (+ "+") (identifier "uVar3")) () ")")))) (= "=") (pointer_expression "*(undefined4 *)((int)puVar8 + (uVar3 - iVar2))" (* "*") (cast_expression "(undefined4 *)((int)puVar8 + (uVar3 - iVar2))" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar8 + (uVar3 - iVar2))" (( "(") (binary_expression "(int)puVar8 + (uVar3 - iVar2)" (cast_expression "(int)puVar8" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar8")) (+ "+") (parenthesized_expression "(uVar3 - iVar2)" (( "(") (binary_expression "uVar3 - iVar2" (identifier "uVar3") (- "-") (identifier "iVar2")) () ")"))) () ")"))))) (; ";")) (expression_statement "uVar3 = uVar3 + 4;" (assignment_expression "uVar3 = uVar3 + 4" (identifier "uVar3") (= "=") (binary_expression "uVar3 + 4" (identifier "uVar3") (+ "+") (number_literal "4"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(uVar3 < uVar5)" (( "(") (binary_expression "uVar3 < uVar5" (identifier "uVar3") (< "<") (identifier "uVar5")) () ")")) (; ";")) (} "}"))) (} "}")))) (expression_statement "*(uint *)(param_3 + 0x18) = uVar4;" (assignment_expression "*(uint *)(param_3 + 0x18) = uVar4" (pointer_expression "*(uint *)(param_3 + 0x18)" (* "*") (cast_expression "(uint *)(param_3 + 0x18)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + 0x18)" (( "(") (binary_expression "param_3 + 0x18" (identifier "param_3") (+ "+") (number_literal "0x18")) () ")")))) (= "=") (identifier "uVar4")) (; ";")) (} "}"))) (expression_statement "param_2 = param_2 - uVar1;" (assignment_expression "param_2 = param_2 - uVar1" (identifier "param_2") (= "=") (binary_expression "param_2 - uVar1" (identifier "param_2") (- "-") (identifier "uVar1"))) (; ";")) (expression_statement "param_1 = (undefined4 *)((int)param_1 + uVar1);" (assignment_expression "param_1 = (undefined4 *)((int)param_1 + uVar1)" (identifier "param_1") (= "=") (cast_expression "(undefined4 *)((int)param_1 + uVar1)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)param_1 + uVar1)" (( "(") (binary_expression "(int)param_1 + uVar1" (cast_expression "(int)param_1" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_1")) (+ "+") (identifier "uVar1")) () ")")))) (; ";")) (} "}"))) (expression_statement "puVar8 = param_1;" (assignment_expression "puVar8 = param_1" (identifier "puVar8") (= "=") (identifier "param_1")) (; ";")) (if_statement "if (0x40 < param_2) {\n    if (((uint)param_1 & 3) != 0) {\n      uVar1 = param_2 - 0x41 >> 6;\n      puVar8 = param_1 + (uVar1 + 1) * 0x10;\n      do {\n        puVar7 = param_1 + 0x10;\n        *(undefined4 *)(param_3 + 0x1c) = *param_1;\n        *(undefined4 *)(param_3 + 0x20) = param_1[1];\n        *(undefined4 *)(param_3 + 0x24) = param_1[2];\n        *(undefined4 *)(param_3 + 0x28) = param_1[3];\n        *(undefined4 *)(param_3 + 0x2c) = param_1[4];\n        *(undefined4 *)(param_3 + 0x30) = param_1[5];\n        *(undefined4 *)(param_3 + 0x34) = param_1[6];\n        *(undefined4 *)(param_3 + 0x38) = param_1[7];\n        *(undefined4 *)(param_3 + 0x3c) = param_1[8];\n        *(undefined4 *)(param_3 + 0x40) = param_1[9];\n        *(undefined4 *)(param_3 + 0x44) = param_1[10];\n        *(undefined4 *)(param_3 + 0x48) = param_1[0xb];\n        *(undefined4 *)(param_3 + 0x4c) = param_1[0xc];\n        *(undefined4 *)(param_3 + 0x50) = param_1[0xd];\n        *(undefined4 *)(param_3 + 0x54) = param_1[0xe];\n        *(undefined4 *)(param_3 + 0x58) = param_1[0xf];\n        FUN_00240130((undefined4 *)(param_3 + 0x1c),0x40,param_3);\n        param_1 = puVar7;\n      } while (puVar7 != puVar8);\n      param_2 = (param_2 - 0x40) + uVar1 * -0x40;\n      goto LAB_00240a51;\n    }\n    puVar8 = (undefined4 *)((int)param_1 + (param_2 & 0xffffffc0));\n    FUN_00240130(param_1,param_2 & 0xffffffc0,param_3);\n    param_2 = param_2 & 0x3f;\n  }" (if "if") (parenthesized_expression "(0x40 < param_2)" (( "(") (binary_expression "0x40 < param_2" (number_literal "0x40") (< "<") (identifier "param_2")) () ")")) (compound_statement "{\n    if (((uint)param_1 & 3) != 0) {\n      uVar1 = param_2 - 0x41 >> 6;\n      puVar8 = param_1 + (uVar1 + 1) * 0x10;\n      do {\n        puVar7 = param_1 + 0x10;\n        *(undefined4 *)(param_3 + 0x1c) = *param_1;\n        *(undefined4 *)(param_3 + 0x20) = param_1[1];\n        *(undefined4 *)(param_3 + 0x24) = param_1[2];\n        *(undefined4 *)(param_3 + 0x28) = param_1[3];\n        *(undefined4 *)(param_3 + 0x2c) = param_1[4];\n        *(undefined4 *)(param_3 + 0x30) = param_1[5];\n        *(undefined4 *)(param_3 + 0x34) = param_1[6];\n        *(undefined4 *)(param_3 + 0x38) = param_1[7];\n        *(undefined4 *)(param_3 + 0x3c) = param_1[8];\n        *(undefined4 *)(param_3 + 0x40) = param_1[9];\n        *(undefined4 *)(param_3 + 0x44) = param_1[10];\n        *(undefined4 *)(param_3 + 0x48) = param_1[0xb];\n        *(undefined4 *)(param_3 + 0x4c) = param_1[0xc];\n        *(undefined4 *)(param_3 + 0x50) = param_1[0xd];\n        *(undefined4 *)(param_3 + 0x54) = param_1[0xe];\n        *(undefined4 *)(param_3 + 0x58) = param_1[0xf];\n        FUN_00240130((undefined4 *)(param_3 + 0x1c),0x40,param_3);\n        param_1 = puVar7;\n      } while (puVar7 != puVar8);\n      param_2 = (param_2 - 0x40) + uVar1 * -0x40;\n      goto LAB_00240a51;\n    }\n    puVar8 = (undefined4 *)((int)param_1 + (param_2 & 0xffffffc0));\n    FUN_00240130(param_1,param_2 & 0xffffffc0,param_3);\n    param_2 = param_2 & 0x3f;\n  }" ({ "{") (if_statement "if (((uint)param_1 & 3) != 0) {\n      uVar1 = param_2 - 0x41 >> 6;\n      puVar8 = param_1 + (uVar1 + 1) * 0x10;\n      do {\n        puVar7 = param_1 + 0x10;\n        *(undefined4 *)(param_3 + 0x1c) = *param_1;\n        *(undefined4 *)(param_3 + 0x20) = param_1[1];\n        *(undefined4 *)(param_3 + 0x24) = param_1[2];\n        *(undefined4 *)(param_3 + 0x28) = param_1[3];\n        *(undefined4 *)(param_3 + 0x2c) = param_1[4];\n        *(undefined4 *)(param_3 + 0x30) = param_1[5];\n        *(undefined4 *)(param_3 + 0x34) = param_1[6];\n        *(undefined4 *)(param_3 + 0x38) = param_1[7];\n        *(undefined4 *)(param_3 + 0x3c) = param_1[8];\n        *(undefined4 *)(param_3 + 0x40) = param_1[9];\n        *(undefined4 *)(param_3 + 0x44) = param_1[10];\n        *(undefined4 *)(param_3 + 0x48) = param_1[0xb];\n        *(undefined4 *)(param_3 + 0x4c) = param_1[0xc];\n        *(undefined4 *)(param_3 + 0x50) = param_1[0xd];\n        *(undefined4 *)(param_3 + 0x54) = param_1[0xe];\n        *(undefined4 *)(param_3 + 0x58) = param_1[0xf];\n        FUN_00240130((undefined4 *)(param_3 + 0x1c),0x40,param_3);\n        param_1 = puVar7;\n      } while (puVar7 != puVar8);\n      param_2 = (param_2 - 0x40) + uVar1 * -0x40;\n      goto LAB_00240a51;\n    }" (if "if") (parenthesized_expression "(((uint)param_1 & 3) != 0)" (( "(") (binary_expression "((uint)param_1 & 3) != 0" (parenthesized_expression "((uint)param_1 & 3)" (( "(") (binary_expression "(uint)param_1 & 3" (cast_expression "(uint)param_1" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "param_1")) (& "&") (number_literal "3")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      uVar1 = param_2 - 0x41 >> 6;\n      puVar8 = param_1 + (uVar1 + 1) * 0x10;\n      do {\n        puVar7 = param_1 + 0x10;\n        *(undefined4 *)(param_3 + 0x1c) = *param_1;\n        *(undefined4 *)(param_3 + 0x20) = param_1[1];\n        *(undefined4 *)(param_3 + 0x24) = param_1[2];\n        *(undefined4 *)(param_3 + 0x28) = param_1[3];\n        *(undefined4 *)(param_3 + 0x2c) = param_1[4];\n        *(undefined4 *)(param_3 + 0x30) = param_1[5];\n        *(undefined4 *)(param_3 + 0x34) = param_1[6];\n        *(undefined4 *)(param_3 + 0x38) = param_1[7];\n        *(undefined4 *)(param_3 + 0x3c) = param_1[8];\n        *(undefined4 *)(param_3 + 0x40) = param_1[9];\n        *(undefined4 *)(param_3 + 0x44) = param_1[10];\n        *(undefined4 *)(param_3 + 0x48) = param_1[0xb];\n        *(undefined4 *)(param_3 + 0x4c) = param_1[0xc];\n        *(undefined4 *)(param_3 + 0x50) = param_1[0xd];\n        *(undefined4 *)(param_3 + 0x54) = param_1[0xe];\n        *(undefined4 *)(param_3 + 0x58) = param_1[0xf];\n        FUN_00240130((undefined4 *)(param_3 + 0x1c),0x40,param_3);\n        param_1 = puVar7;\n      } while (puVar7 != puVar8);\n      param_2 = (param_2 - 0x40) + uVar1 * -0x40;\n      goto LAB_00240a51;\n    }" ({ "{") (expression_statement "uVar1 = param_2 - 0x41 >> 6;" (assignment_expression "uVar1 = param_2 - 0x41 >> 6" (identifier "uVar1") (= "=") (binary_expression "param_2 - 0x41 >> 6" (binary_expression "param_2 - 0x41" (identifier "param_2") (- "-") (number_literal "0x41")) (>> ">>") (number_literal "6"))) (; ";")) (expression_statement "puVar8 = param_1 + (uVar1 + 1) * 0x10;" (assignment_expression "puVar8 = param_1 + (uVar1 + 1) * 0x10" (identifier "puVar8") (= "=") (binary_expression "param_1 + (uVar1 + 1) * 0x10" (identifier "param_1") (+ "+") (binary_expression "(uVar1 + 1) * 0x10" (parenthesized_expression "(uVar1 + 1)" (( "(") (binary_expression "uVar1 + 1" (identifier "uVar1") (+ "+") (number_literal "1")) () ")")) (* "*") (number_literal "0x10")))) (; ";")) (do_statement "do {\n        puVar7 = param_1 + 0x10;\n        *(undefined4 *)(param_3 + 0x1c) = *param_1;\n        *(undefined4 *)(param_3 + 0x20) = param_1[1];\n        *(undefined4 *)(param_3 + 0x24) = param_1[2];\n        *(undefined4 *)(param_3 + 0x28) = param_1[3];\n        *(undefined4 *)(param_3 + 0x2c) = param_1[4];\n        *(undefined4 *)(param_3 + 0x30) = param_1[5];\n        *(undefined4 *)(param_3 + 0x34) = param_1[6];\n        *(undefined4 *)(param_3 + 0x38) = param_1[7];\n        *(undefined4 *)(param_3 + 0x3c) = param_1[8];\n        *(undefined4 *)(param_3 + 0x40) = param_1[9];\n        *(undefined4 *)(param_3 + 0x44) = param_1[10];\n        *(undefined4 *)(param_3 + 0x48) = param_1[0xb];\n        *(undefined4 *)(param_3 + 0x4c) = param_1[0xc];\n        *(undefined4 *)(param_3 + 0x50) = param_1[0xd];\n        *(undefined4 *)(param_3 + 0x54) = param_1[0xe];\n        *(undefined4 *)(param_3 + 0x58) = param_1[0xf];\n        FUN_00240130((undefined4 *)(param_3 + 0x1c),0x40,param_3);\n        param_1 = puVar7;\n      } while (puVar7 != puVar8);" (do "do") (compound_statement "{\n        puVar7 = param_1 + 0x10;\n        *(undefined4 *)(param_3 + 0x1c) = *param_1;\n        *(undefined4 *)(param_3 + 0x20) = param_1[1];\n        *(undefined4 *)(param_3 + 0x24) = param_1[2];\n        *(undefined4 *)(param_3 + 0x28) = param_1[3];\n        *(undefined4 *)(param_3 + 0x2c) = param_1[4];\n        *(undefined4 *)(param_3 + 0x30) = param_1[5];\n        *(undefined4 *)(param_3 + 0x34) = param_1[6];\n        *(undefined4 *)(param_3 + 0x38) = param_1[7];\n        *(undefined4 *)(param_3 + 0x3c) = param_1[8];\n        *(undefined4 *)(param_3 + 0x40) = param_1[9];\n        *(undefined4 *)(param_3 + 0x44) = param_1[10];\n        *(undefined4 *)(param_3 + 0x48) = param_1[0xb];\n        *(undefined4 *)(param_3 + 0x4c) = param_1[0xc];\n        *(undefined4 *)(param_3 + 0x50) = param_1[0xd];\n        *(undefined4 *)(param_3 + 0x54) = param_1[0xe];\n        *(undefined4 *)(param_3 + 0x58) = param_1[0xf];\n        FUN_00240130((undefined4 *)(param_3 + 0x1c),0x40,param_3);\n        param_1 = puVar7;\n      }" ({ "{") (expression_statement "puVar7 = param_1 + 0x10;" (assignment_expression "puVar7 = param_1 + 0x10" (identifier "puVar7") (= "=") (binary_expression "param_1 + 0x10" (identifier "param_1") (+ "+") (number_literal "0x10"))) (; ";")) (expression_statement "*(undefined4 *)(param_3 + 0x1c) = *param_1;" (assignment_expression "*(undefined4 *)(param_3 + 0x1c) = *param_1" (pointer_expression "*(undefined4 *)(param_3 + 0x1c)" (* "*") (cast_expression "(undefined4 *)(param_3 + 0x1c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + 0x1c)" (( "(") (binary_expression "param_3 + 0x1c" (identifier "param_3") (+ "+") (number_literal "0x1c")) () ")")))) (= "=") (pointer_expression "*param_1" (* "*") (identifier "param_1"))) (; ";")) (expression_statement "*(undefined4 *)(param_3 + 0x20) = param_1[1];" (assignment_expression "*(undefined4 *)(param_3 + 0x20) = param_1[1]" (pointer_expression "*(undefined4 *)(param_3 + 0x20)" (* "*") (cast_expression "(undefined4 *)(param_3 + 0x20)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + 0x20)" (( "(") (binary_expression "param_3 + 0x20" (identifier "param_3") (+ "+") (number_literal "0x20")) () ")")))) (= "=") (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "*(undefined4 *)(param_3 + 0x24) = param_1[2];" (assignment_expression "*(undefined4 *)(param_3 + 0x24) = param_1[2]" (pointer_expression "*(undefined4 *)(param_3 + 0x24)" (* "*") (cast_expression "(undefined4 *)(param_3 + 0x24)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + 0x24)" (( "(") (binary_expression "param_3 + 0x24" (identifier "param_3") (+ "+") (number_literal "0x24")) () ")")))) (= "=") (subscript_expression "param_1[2]" (identifier "param_1") ([ "[") (number_literal "2") (] "]"))) (; ";")) (expression_statement "*(undefined4 *)(param_3 + 0x28) = param_1[3];" (assignment_expression "*(undefined4 *)(param_3 + 0x28) = param_1[3]" (pointer_expression "*(undefined4 *)(param_3 + 0x28)" (* "*") (cast_expression "(undefined4 *)(param_3 + 0x28)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + 0x28)" (( "(") (binary_expression "param_3 + 0x28" (identifier "param_3") (+ "+") (number_literal "0x28")) () ")")))) (= "=") (subscript_expression "param_1[3]" (identifier "param_1") ([ "[") (number_literal "3") (] "]"))) (; ";")) (expression_statement "*(undefined4 *)(param_3 + 0x2c) = param_1[4];" (assignment_expression "*(undefined4 *)(param_3 + 0x2c) = param_1[4]" (pointer_expression "*(undefined4 *)(param_3 + 0x2c)" (* "*") (cast_expression "(undefined4 *)(param_3 + 0x2c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + 0x2c)" (( "(") (binary_expression "param_3 + 0x2c" (identifier "param_3") (+ "+") (number_literal "0x2c")) () ")")))) (= "=") (subscript_expression "param_1[4]" (identifier "param_1") ([ "[") (number_literal "4") (] "]"))) (; ";")) (expression_statement "*(undefined4 *)(param_3 + 0x30) = param_1[5];" (assignment_expression "*(undefined4 *)(param_3 + 0x30) = param_1[5]" (pointer_expression "*(undefined4 *)(param_3 + 0x30)" (* "*") (cast_expression "(undefined4 *)(param_3 + 0x30)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + 0x30)" (( "(") (binary_expression "param_3 + 0x30" (identifier "param_3") (+ "+") (number_literal "0x30")) () ")")))) (= "=") (subscript_expression "param_1[5]" (identifier "param_1") ([ "[") (number_literal "5") (] "]"))) (; ";")) (expression_statement "*(undefined4 *)(param_3 + 0x34) = param_1[6];" (assignment_expression "*(undefined4 *)(param_3 + 0x34) = param_1[6]" (pointer_expression "*(undefined4 *)(param_3 + 0x34)" (* "*") (cast_expression "(undefined4 *)(param_3 + 0x34)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + 0x34)" (( "(") (binary_expression "param_3 + 0x34" (identifier "param_3") (+ "+") (number_literal "0x34")) () ")")))) (= "=") (subscript_expression "param_1[6]" (identifier "param_1") ([ "[") (number_literal "6") (] "]"))) (; ";")) (expression_statement "*(undefined4 *)(param_3 + 0x38) = param_1[7];" (assignment_expression "*(undefined4 *)(param_3 + 0x38) = param_1[7]" (pointer_expression "*(undefined4 *)(param_3 + 0x38)" (* "*") (cast_expression "(undefined4 *)(param_3 + 0x38)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + 0x38)" (( "(") (binary_expression "param_3 + 0x38" (identifier "param_3") (+ "+") (number_literal "0x38")) () ")")))) (= "=") (subscript_expression "param_1[7]" (identifier "param_1") ([ "[") (number_literal "7") (] "]"))) (; ";")) (expression_statement "*(undefined4 *)(param_3 + 0x3c) = param_1[8];" (assignment_expression "*(undefined4 *)(param_3 + 0x3c) = param_1[8]" (pointer_expression "*(undefined4 *)(param_3 + 0x3c)" (* "*") (cast_expression "(undefined4 *)(param_3 + 0x3c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + 0x3c)" (( "(") (binary_expression "param_3 + 0x3c" (identifier "param_3") (+ "+") (number_literal "0x3c")) () ")")))) (= "=") (subscript_expression "param_1[8]" (identifier "param_1") ([ "[") (number_literal "8") (] "]"))) (; ";")) (expression_statement "*(undefined4 *)(param_3 + 0x40) = param_1[9];" (assignment_expression "*(undefined4 *)(param_3 + 0x40) = param_1[9]" (pointer_expression "*(undefined4 *)(param_3 + 0x40)" (* "*") (cast_expression "(undefined4 *)(param_3 + 0x40)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + 0x40)" (( "(") (binary_expression "param_3 + 0x40" (identifier "param_3") (+ "+") (number_literal "0x40")) () ")")))) (= "=") (subscript_expression "param_1[9]" (identifier "param_1") ([ "[") (number_literal "9") (] "]"))) (; ";")) (expression_statement "*(undefined4 *)(param_3 + 0x44) = param_1[10];" (assignment_expression "*(undefined4 *)(param_3 + 0x44) = param_1[10]" (pointer_expression "*(undefined4 *)(param_3 + 0x44)" (* "*") (cast_expression "(undefined4 *)(param_3 + 0x44)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + 0x44)" (( "(") (binary_expression "param_3 + 0x44" (identifier "param_3") (+ "+") (number_literal "0x44")) () ")")))) (= "=") (subscript_expression "param_1[10]" (identifier "param_1") ([ "[") (number_literal "10") (] "]"))) (; ";")) (expression_statement "*(undefined4 *)(param_3 + 0x48) = param_1[0xb];" (assignment_expression "*(undefined4 *)(param_3 + 0x48) = param_1[0xb]" (pointer_expression "*(undefined4 *)(param_3 + 0x48)" (* "*") (cast_expression "(undefined4 *)(param_3 + 0x48)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + 0x48)" (( "(") (binary_expression "param_3 + 0x48" (identifier "param_3") (+ "+") (number_literal "0x48")) () ")")))) (= "=") (subscript_expression "param_1[0xb]" (identifier "param_1") ([ "[") (number_literal "0xb") (] "]"))) (; ";")) (expression_statement "*(undefined4 *)(param_3 + 0x4c) = param_1[0xc];" (assignment_expression "*(undefined4 *)(param_3 + 0x4c) = param_1[0xc]" (pointer_expression "*(undefined4 *)(param_3 + 0x4c)" (* "*") (cast_expression "(undefined4 *)(param_3 + 0x4c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + 0x4c)" (( "(") (binary_expression "param_3 + 0x4c" (identifier "param_3") (+ "+") (number_literal "0x4c")) () ")")))) (= "=") (subscript_expression "param_1[0xc]" (identifier "param_1") ([ "[") (number_literal "0xc") (] "]"))) (; ";")) (expression_statement "*(undefined4 *)(param_3 + 0x50) = param_1[0xd];" (assignment_expression "*(undefined4 *)(param_3 + 0x50) = param_1[0xd]" (pointer_expression "*(undefined4 *)(param_3 + 0x50)" (* "*") (cast_expression "(undefined4 *)(param_3 + 0x50)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + 0x50)" (( "(") (binary_expression "param_3 + 0x50" (identifier "param_3") (+ "+") (number_literal "0x50")) () ")")))) (= "=") (subscript_expression "param_1[0xd]" (identifier "param_1") ([ "[") (number_literal "0xd") (] "]"))) (; ";")) (expression_statement "*(undefined4 *)(param_3 + 0x54) = param_1[0xe];" (assignment_expression "*(undefined4 *)(param_3 + 0x54) = param_1[0xe]" (pointer_expression "*(undefined4 *)(param_3 + 0x54)" (* "*") (cast_expression "(undefined4 *)(param_3 + 0x54)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + 0x54)" (( "(") (binary_expression "param_3 + 0x54" (identifier "param_3") (+ "+") (number_literal "0x54")) () ")")))) (= "=") (subscript_expression "param_1[0xe]" (identifier "param_1") ([ "[") (number_literal "0xe") (] "]"))) (; ";")) (expression_statement "*(undefined4 *)(param_3 + 0x58) = param_1[0xf];" (assignment_expression "*(undefined4 *)(param_3 + 0x58) = param_1[0xf]" (pointer_expression "*(undefined4 *)(param_3 + 0x58)" (* "*") (cast_expression "(undefined4 *)(param_3 + 0x58)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + 0x58)" (( "(") (binary_expression "param_3 + 0x58" (identifier "param_3") (+ "+") (number_literal "0x58")) () ")")))) (= "=") (subscript_expression "param_1[0xf]" (identifier "param_1") ([ "[") (number_literal "0xf") (] "]"))) (; ";")) (expression_statement "FUN_00240130((undefined4 *)(param_3 + 0x1c),0x40,param_3);" (call_expression "FUN_00240130((undefined4 *)(param_3 + 0x1c),0x40,param_3)" (identifier "FUN_00240130") (argument_list "((undefined4 *)(param_3 + 0x1c),0x40,param_3)" (( "(") (cast_expression "(undefined4 *)(param_3 + 0x1c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + 0x1c)" (( "(") (binary_expression "param_3 + 0x1c" (identifier "param_3") (+ "+") (number_literal "0x1c")) () ")"))) (, ",") (number_literal "0x40") (, ",") (identifier "param_3") () ")"))) (; ";")) (expression_statement "param_1 = puVar7;" (assignment_expression "param_1 = puVar7" (identifier "param_1") (= "=") (identifier "puVar7")) (; ";")) (} "}")) (while "while") (parenthesized_expression "(puVar7 != puVar8)" (( "(") (binary_expression "puVar7 != puVar8" (identifier "puVar7") (!= "!=") (identifier "puVar8")) () ")")) (; ";")) (expression_statement "param_2 = (param_2 - 0x40) + uVar1 * -0x40;" (assignment_expression "param_2 = (param_2 - 0x40) + uVar1 * -0x40" (identifier "param_2") (= "=") (binary_expression "(param_2 - 0x40) + uVar1 * -0x40" (parenthesized_expression "(param_2 - 0x40)" (( "(") (binary_expression "param_2 - 0x40" (identifier "param_2") (- "-") (number_literal "0x40")) () ")")) (+ "+") (binary_expression "uVar1 * -0x40" (identifier "uVar1") (* "*") (number_literal "-0x40")))) (; ";")) (goto_statement "goto LAB_00240a51;" (goto "goto") (statement_identifier "LAB_00240a51") (; ";")) (} "}"))) (expression_statement "puVar8 = (undefined4 *)((int)param_1 + (param_2 & 0xffffffc0));" (assignment_expression "puVar8 = (undefined4 *)((int)param_1 + (param_2 & 0xffffffc0))" (identifier "puVar8") (= "=") (cast_expression "(undefined4 *)((int)param_1 + (param_2 & 0xffffffc0))" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)param_1 + (param_2 & 0xffffffc0))" (( "(") (binary_expression "(int)param_1 + (param_2 & 0xffffffc0)" (cast_expression "(int)param_1" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_1")) (+ "+") (parenthesized_expression "(param_2 & 0xffffffc0)" (( "(") (binary_expression "param_2 & 0xffffffc0" (identifier "param_2") (& "&") (number_literal "0xffffffc0")) () ")"))) () ")")))) (; ";")) (expression_statement "FUN_00240130(param_1,param_2 & 0xffffffc0,param_3);" (call_expression "FUN_00240130(param_1,param_2 & 0xffffffc0,param_3)" (identifier "FUN_00240130") (argument_list "(param_1,param_2 & 0xffffffc0,param_3)" (( "(") (identifier "param_1") (, ",") (binary_expression "param_2 & 0xffffffc0" (identifier "param_2") (& "&") (number_literal "0xffffffc0")) (, ",") (identifier "param_3") () ")"))) (; ";")) (expression_statement "param_2 = param_2 & 0x3f;" (assignment_expression "param_2 = param_2 & 0x3f" (identifier "param_2") (= "=") (binary_expression "param_2 & 0x3f" (identifier "param_2") (& "&") (number_literal "0x3f"))) (; ";")) (} "}"))) (if_statement "if (param_2 == 0) {\n    return;\n  }" (if "if") (parenthesized_expression "(param_2 == 0)" (( "(") (binary_expression "param_2 == 0" (identifier "param_2") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    return;\n  }" ({ "{") (return_statement "return;" (return "return") (; ";")) (} "}"))) (labeled_statement "LAB_00240a51:\n  local_20 = (undefined4 *)(param_3 + 0x1c);" (statement_identifier "LAB_00240a51") (: ":") (expression_statement "local_20 = (undefined4 *)(param_3 + 0x1c);" (assignment_expression "local_20 = (undefined4 *)(param_3 + 0x1c)" (identifier "local_20") (= "=") (cast_expression "(undefined4 *)(param_3 + 0x1c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + 0x1c)" (( "(") (binary_expression "param_3 + 0x1c" (identifier "param_3") (+ "+") (number_literal "0x1c")) () ")")))) (; ";"))) (if_statement "if (param_2 < 4) {\n    if ((param_2 != 0) && (*(undefined1 *)local_20 = *(undefined1 *)puVar8, (param_2 & 2) != 0)) {\n      *(undefined2 *)(param_3 + 0x1a + param_2) = *(undefined2 *)((int)puVar8 + (param_2 - 2));\n    }\n  }\n  else {\n    *local_20 = *puVar8;\n    *(undefined4 *)(param_3 + 0x18 + param_2) = *(undefined4 *)((int)puVar8 + (param_2 - 4));\n    uVar5 = param_3 + 0x20U & 0xfffffffc;\n    iVar2 = (int)local_20 - uVar5;\n    uVar1 = iVar2 + param_2 & 0xfffffffc;\n    if (3 < uVar1) {\n      uVar4 = 0;\n      do {\n        *(undefined4 *)(uVar5 + uVar4) = *(undefined4 *)((int)puVar8 + (uVar4 - iVar2));\n        uVar4 = uVar4 + 4;\n      } while (uVar4 < uVar1);\n    }\n  }" (if "if") (parenthesized_expression "(param_2 < 4)" (( "(") (binary_expression "param_2 < 4" (identifier "param_2") (< "<") (number_literal "4")) () ")")) (compound_statement "{\n    if ((param_2 != 0) && (*(undefined1 *)local_20 = *(undefined1 *)puVar8, (param_2 & 2) != 0)) {\n      *(undefined2 *)(param_3 + 0x1a + param_2) = *(undefined2 *)((int)puVar8 + (param_2 - 2));\n    }\n  }" ({ "{") (if_statement "if ((param_2 != 0) && (*(undefined1 *)local_20 = *(undefined1 *)puVar8, (param_2 & 2) != 0)) {\n      *(undefined2 *)(param_3 + 0x1a + param_2) = *(undefined2 *)((int)puVar8 + (param_2 - 2));\n    }" (if "if") (parenthesized_expression "((param_2 != 0) && (*(undefined1 *)local_20 = *(undefined1 *)puVar8, (param_2 & 2) != 0))" (( "(") (binary_expression "(param_2 != 0) && (*(undefined1 *)local_20 = *(undefined1 *)puVar8, (param_2 & 2) != 0)" (parenthesized_expression "(param_2 != 0)" (( "(") (binary_expression "param_2 != 0" (identifier "param_2") (!= "!=") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(*(undefined1 *)local_20 = *(undefined1 *)puVar8, (param_2 & 2) != 0)" (( "(") (comma_expression "*(undefined1 *)local_20 = *(undefined1 *)puVar8, (param_2 & 2) != 0" (assignment_expression "*(undefined1 *)local_20 = *(undefined1 *)puVar8" (pointer_expression "*(undefined1 *)local_20" (* "*") (cast_expression "(undefined1 *)local_20" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "local_20"))) (= "=") (pointer_expression "*(undefined1 *)puVar8" (* "*") (cast_expression "(undefined1 *)puVar8" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "puVar8")))) (, ",") (binary_expression "(param_2 & 2) != 0" (parenthesized_expression "(param_2 & 2)" (( "(") (binary_expression "param_2 & 2" (identifier "param_2") (& "&") (number_literal "2")) () ")")) (!= "!=") (number_literal "0"))) () ")"))) () ")")) (compound_statement "{\n      *(undefined2 *)(param_3 + 0x1a + param_2) = *(undefined2 *)((int)puVar8 + (param_2 - 2));\n    }" ({ "{") (expression_statement "*(undefined2 *)(param_3 + 0x1a + param_2) = *(undefined2 *)((int)puVar8 + (param_2 - 2));" (assignment_expression "*(undefined2 *)(param_3 + 0x1a + param_2) = *(undefined2 *)((int)puVar8 + (param_2 - 2))" (pointer_expression "*(undefined2 *)(param_3 + 0x1a + param_2)" (* "*") (cast_expression "(undefined2 *)(param_3 + 0x1a + param_2)" (( "(") (type_descriptor "undefined2 *" (type_identifier "undefined2") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + 0x1a + param_2)" (( "(") (binary_expression "param_3 + 0x1a + param_2" (binary_expression "param_3 + 0x1a" (identifier "param_3") (+ "+") (number_literal "0x1a")) (+ "+") (identifier "param_2")) () ")")))) (= "=") (pointer_expression "*(undefined2 *)((int)puVar8 + (param_2 - 2))" (* "*") (cast_expression "(undefined2 *)((int)puVar8 + (param_2 - 2))" (( "(") (type_descriptor "undefined2 *" (type_identifier "undefined2") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar8 + (param_2 - 2))" (( "(") (binary_expression "(int)puVar8 + (param_2 - 2)" (cast_expression "(int)puVar8" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar8")) (+ "+") (parenthesized_expression "(param_2 - 2)" (( "(") (binary_expression "param_2 - 2" (identifier "param_2") (- "-") (number_literal "2")) () ")"))) () ")"))))) (; ";")) (} "}"))) (} "}")) (else_clause "else {\n    *local_20 = *puVar8;\n    *(undefined4 *)(param_3 + 0x18 + param_2) = *(undefined4 *)((int)puVar8 + (param_2 - 4));\n    uVar5 = param_3 + 0x20U & 0xfffffffc;\n    iVar2 = (int)local_20 - uVar5;\n    uVar1 = iVar2 + param_2 & 0xfffffffc;\n    if (3 < uVar1) {\n      uVar4 = 0;\n      do {\n        *(undefined4 *)(uVar5 + uVar4) = *(undefined4 *)((int)puVar8 + (uVar4 - iVar2));\n        uVar4 = uVar4 + 4;\n      } while (uVar4 < uVar1);\n    }\n  }" (else "else") (compound_statement "{\n    *local_20 = *puVar8;\n    *(undefined4 *)(param_3 + 0x18 + param_2) = *(undefined4 *)((int)puVar8 + (param_2 - 4));\n    uVar5 = param_3 + 0x20U & 0xfffffffc;\n    iVar2 = (int)local_20 - uVar5;\n    uVar1 = iVar2 + param_2 & 0xfffffffc;\n    if (3 < uVar1) {\n      uVar4 = 0;\n      do {\n        *(undefined4 *)(uVar5 + uVar4) = *(undefined4 *)((int)puVar8 + (uVar4 - iVar2));\n        uVar4 = uVar4 + 4;\n      } while (uVar4 < uVar1);\n    }\n  }" ({ "{") (expression_statement "*local_20 = *puVar8;" (assignment_expression "*local_20 = *puVar8" (pointer_expression "*local_20" (* "*") (identifier "local_20")) (= "=") (pointer_expression "*puVar8" (* "*") (identifier "puVar8"))) (; ";")) (expression_statement "*(undefined4 *)(param_3 + 0x18 + param_2) = *(undefined4 *)((int)puVar8 + (param_2 - 4));" (assignment_expression "*(undefined4 *)(param_3 + 0x18 + param_2) = *(undefined4 *)((int)puVar8 + (param_2 - 4))" (pointer_expression "*(undefined4 *)(param_3 + 0x18 + param_2)" (* "*") (cast_expression "(undefined4 *)(param_3 + 0x18 + param_2)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + 0x18 + param_2)" (( "(") (binary_expression "param_3 + 0x18 + param_2" (binary_expression "param_3 + 0x18" (identifier "param_3") (+ "+") (number_literal "0x18")) (+ "+") (identifier "param_2")) () ")")))) (= "=") (pointer_expression "*(undefined4 *)((int)puVar8 + (param_2 - 4))" (* "*") (cast_expression "(undefined4 *)((int)puVar8 + (param_2 - 4))" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar8 + (param_2 - 4))" (( "(") (binary_expression "(int)puVar8 + (param_2 - 4)" (cast_expression "(int)puVar8" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar8")) (+ "+") (parenthesized_expression "(param_2 - 4)" (( "(") (binary_expression "param_2 - 4" (identifier "param_2") (- "-") (number_literal "4")) () ")"))) () ")"))))) (; ";")) (expression_statement "uVar5 = param_3 + 0x20U & 0xfffffffc;" (assignment_expression "uVar5 = param_3 + 0x20U & 0xfffffffc" (identifier "uVar5") (= "=") (binary_expression "param_3 + 0x20U & 0xfffffffc" (binary_expression "param_3 + 0x20U" (identifier "param_3") (+ "+") (number_literal "0x20U")) (& "&") (number_literal "0xfffffffc"))) (; ";")) (expression_statement "iVar2 = (int)local_20 - uVar5;" (assignment_expression "iVar2 = (int)local_20 - uVar5" (identifier "iVar2") (= "=") (binary_expression "(int)local_20 - uVar5" (cast_expression "(int)local_20" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_20")) (- "-") (identifier "uVar5"))) (; ";")) (expression_statement "uVar1 = iVar2 + param_2 & 0xfffffffc;" (assignment_expression "uVar1 = iVar2 + param_2 & 0xfffffffc" (identifier "uVar1") (= "=") (binary_expression "iVar2 + param_2 & 0xfffffffc" (binary_expression "iVar2 + param_2" (identifier "iVar2") (+ "+") (identifier "param_2")) (& "&") (number_literal "0xfffffffc"))) (; ";")) (if_statement "if (3 < uVar1) {\n      uVar4 = 0;\n      do {\n        *(undefined4 *)(uVar5 + uVar4) = *(undefined4 *)((int)puVar8 + (uVar4 - iVar2));\n        uVar4 = uVar4 + 4;\n      } while (uVar4 < uVar1);\n    }" (if "if") (parenthesized_expression "(3 < uVar1)" (( "(") (binary_expression "3 < uVar1" (number_literal "3") (< "<") (identifier "uVar1")) () ")")) (compound_statement "{\n      uVar4 = 0;\n      do {\n        *(undefined4 *)(uVar5 + uVar4) = *(undefined4 *)((int)puVar8 + (uVar4 - iVar2));\n        uVar4 = uVar4 + 4;\n      } while (uVar4 < uVar1);\n    }" ({ "{") (expression_statement "uVar4 = 0;" (assignment_expression "uVar4 = 0" (identifier "uVar4") (= "=") (number_literal "0")) (; ";")) (do_statement "do {\n        *(undefined4 *)(uVar5 + uVar4) = *(undefined4 *)((int)puVar8 + (uVar4 - iVar2));\n        uVar4 = uVar4 + 4;\n      } while (uVar4 < uVar1);" (do "do") (compound_statement "{\n        *(undefined4 *)(uVar5 + uVar4) = *(undefined4 *)((int)puVar8 + (uVar4 - iVar2));\n        uVar4 = uVar4 + 4;\n      }" ({ "{") (expression_statement "*(undefined4 *)(uVar5 + uVar4) = *(undefined4 *)((int)puVar8 + (uVar4 - iVar2));" (assignment_expression "*(undefined4 *)(uVar5 + uVar4) = *(undefined4 *)((int)puVar8 + (uVar4 - iVar2))" (pointer_expression "*(undefined4 *)(uVar5 + uVar4)" (* "*") (cast_expression "(undefined4 *)(uVar5 + uVar4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar5 + uVar4)" (( "(") (binary_expression "uVar5 + uVar4" (identifier "uVar5") (+ "+") (identifier "uVar4")) () ")")))) (= "=") (pointer_expression "*(undefined4 *)((int)puVar8 + (uVar4 - iVar2))" (* "*") (cast_expression "(undefined4 *)((int)puVar8 + (uVar4 - iVar2))" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar8 + (uVar4 - iVar2))" (( "(") (binary_expression "(int)puVar8 + (uVar4 - iVar2)" (cast_expression "(int)puVar8" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar8")) (+ "+") (parenthesized_expression "(uVar4 - iVar2)" (( "(") (binary_expression "uVar4 - iVar2" (identifier "uVar4") (- "-") (identifier "iVar2")) () ")"))) () ")"))))) (; ";")) (expression_statement "uVar4 = uVar4 + 4;" (assignment_expression "uVar4 = uVar4 + 4" (identifier "uVar4") (= "=") (binary_expression "uVar4 + 4" (identifier "uVar4") (+ "+") (number_literal "4"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(uVar4 < uVar1)" (( "(") (binary_expression "uVar4 < uVar1" (identifier "uVar4") (< "<") (identifier "uVar1")) () ")")) (; ";")) (} "}"))) (} "}")))) (expression_statement "*(uint *)(param_3 + 0x18) = param_2;" (assignment_expression "*(uint *)(param_3 + 0x18) = param_2" (pointer_expression "*(uint *)(param_3 + 0x18)" (* "*") (cast_expression "(uint *)(param_3 + 0x18)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + 0x18)" (( "(") (binary_expression "param_3 + 0x18" (identifier "param_3") (+ "+") (number_literal "0x18")) () ")")))) (= "=") (identifier "param_2")) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}")))

/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */

void function_1(void *buffer,size_t len,type_1 *ctx)

{
}


(translation_unit (function_definition type: (primitive_type) declarator: (function_declarator declarator: (identifier) parameters: (parameter_list (parameter_declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (parameter_declaration type: (type_identifier) declarator: (identifier)) (parameter_declaration type: (primitive_type) declarator: (identifier)))) body: (compound_statement (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (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))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (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))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (number_literal) right: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (binary_expression left: (number_literal) right: (identifier)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (identifier))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (identifier)))) (identifier) (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: (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: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (number_literal) right: (identifier))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (binary_expression left: (identifier) right: (number_literal)) (binary_expression left: (identifier) right: (number_literal)) (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (parenthesized_expression (comma_expression left: (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) right: (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal)))))) consequence: (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (identifier))))) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))))))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (identifier))))) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (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: (identifier) right: (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (identifier) right: (identifier)) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (number_literal) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (do_statement body: (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))))) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))))))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (identifier)))))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (number_literal) right: (identifier))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (number_literal))) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal))))) (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))) (number_literal) (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (identifier)))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (binary_expression left: (identifier) right: (number_literal))))) (goto_statement label: (statement_identifier)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (binary_expression left: (identifier) right: (number_literal)) (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (return_statement))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (parenthesized_expression (comma_expression left: (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier))) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) right: (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal)))))) consequence: (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (identifier))))) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))))))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (identifier))))) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (identifier) right: (identifier)) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (number_literal) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (do_statement body: (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))))) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))))))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (return_statement))))

/* WARNING: Function: __i686.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */

void MASKED(undefined4 *param_1,uint param_2,int param_3)

{
  uint uVar1;
  int iVar2;
  uint uVar3;
  uint uVar4;
  uint uVar5;
  uint uVar6;
  undefined4 *puVar7;
  undefined4 *puVar8;
  undefined4 *local_20;
  
  iVar2 = *(int *)(param_3 + 0x18);
  if (iVar2 != 0) {
    uVar1 = 0x80U - iVar2;
    if (param_2 < 0x80U - iVar2) {
      uVar1 = param_2;
    }
    memcpy((void *)(param_3 + 0x1c + iVar2),param_1,uVar1);
    *(int *)(param_3 + 0x18) = *(int *)(param_3 + 0x18) + uVar1;
    uVar5 = iVar2 + uVar1;
    if (0x40 < uVar5) {
      FUN_00240130(param_3 + 0x1c,uVar5 & 0xffffffc0,param_3);
      uVar4 = uVar5 & 0x3f;
      puVar8 = (undefined4 *)(param_3 + 0x1c + (uVar5 & 0xffffffc0));
      if (uVar4 < 4) {
        if ((uVar4 != 0) &&
           (*(undefined1 *)(param_3 + 0x1c) = *(undefined1 *)puVar8, (uVar5 & 2) != 0)) {
          *(undefined2 *)(param_3 + 0x1a + uVar4) = *(undefined2 *)((int)puVar8 + (uVar4 - 2));
        }
      }
      else {
        *(undefined4 *)(param_3 + 0x1c) = *puVar8;
        *(undefined4 *)(param_3 + 0x18 + uVar4) = *(undefined4 *)((uVar4 - 4) + (int)puVar8);
        uVar6 = param_3 + 0x20U & 0xfffffffc;
        iVar2 = (param_3 + 0x1c) - uVar6;
        uVar5 = iVar2 + uVar4 & 0xfffffffc;
        if (3 < uVar5) {
          uVar3 = 0;
          do {
            *(undefined4 *)(uVar6 + uVar3) = *(undefined4 *)((int)puVar8 + (uVar3 - iVar2));
            uVar3 = uVar3 + 4;
          } while (uVar3 < uVar5);
        }
      }
      *(uint *)(param_3 + 0x18) = uVar4;
    }
    param_2 = param_2 - uVar1;
    param_1 = (undefined4 *)((int)param_1 + uVar1);
  }
  puVar8 = param_1;
  if (0x40 < param_2) {
    if (((uint)param_1 & 3) != 0) {
      uVar1 = param_2 - 0x41 >> 6;
      puVar8 = param_1 + (uVar1 + 1) * 0x10;
      do {
        puVar7 = param_1 + 0x10;
        *(undefined4 *)(param_3 + 0x1c) = *param_1;
        *(undefined4 *)(param_3 + 0x20) = param_1[1];
        *(undefined4 *)(param_3 + 0x24) = param_1[2];
        *(undefined4 *)(param_3 + 0x28) = param_1[3];
        *(undefined4 *)(param_3 + 0x2c) = param_1[4];
        *(undefined4 *)(param_3 + 0x30) = param_1[5];
        *(undefined4 *)(param_3 + 0x34) = param_1[6];
        *(undefined4 *)(param_3 + 0x38) = param_1[7];
        *(undefined4 *)(param_3 + 0x3c) = param_1[8];
        *(undefined4 *)(param_3 + 0x40) = param_1[9];
        *(undefined4 *)(param_3 + 0x44) = param_1[10];
        *(undefined4 *)(param_3 + 0x48) = param_1[0xb];
        *(undefined4 *)(param_3 + 0x4c) = param_1[0xc];
        *(undefined4 *)(param_3 + 0x50) = param_1[0xd];
        *(undefined4 *)(param_3 + 0x54) = param_1[0xe];
        *(undefined4 *)(param_3 + 0x58) = param_1[0xf];
        FUN_00240130((undefined4 *)(param_3 + 0x1c),0x40,param_3);
        param_1 = puVar7;
      } while (puVar7 != puVar8);
      param_2 = (param_2 - 0x40) + uVar1 * -0x40;
      goto LAB_00240a51;
    }
    puVar8 = (undefined4 *)((int)param_1 + (param_2 & 0xffffffc0));
    FUN_00240130(param_1,param_2 & 0xffffffc0,param_3);
    param_2 = param_2 & 0x3f;
  }
  if (param_2 == 0) {
    return;
  }
LAB_00240a51:
  local_20 = (undefined4 *)(param_3 + 0x1c);
  if (param_2 < 4) {
    if ((param_2 != 0) && (*(undefined1 *)local_20 = *(undefined1 *)puVar8, (param_2 & 2) != 0)) {
      *(undefined2 *)(param_3 + 0x1a + param_2) = *(undefined2 *)((int)puVar8 + (param_2 - 2));
    }
  }
  else {
    *local_20 = *puVar8;
    *(undefined4 *)(param_3 + 0x18 + param_2) = *(undefined4 *)((int)puVar8 + (param_2 - 4));
    uVar5 = param_3 + 0x20U & 0xfffffffc;
    iVar2 = (int)local_20 - uVar5;
    uVar1 = iVar2 + param_2 & 0xfffffffc;
    if (3 < uVar1) {
      uVar4 = 0;
      do {
        *(undefined4 *)(uVar5 + uVar4) = *(undefined4 *)((int)puVar8 + (uVar4 - iVar2));
        uVar4 = uVar4 + 4;
      } while (uVar4 < uVar1);
    }
  }
  *(uint *)(param_3 + 0x18) = param_2;
  return;
}

