
/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */
/* WARNING: Unknown calling convention -- yet parameter storage is locked */
/* DWARF original name:
   __insertion_sort<__gnu_cxx::__normal_iterator<gold::Output_section::Input_section*,
   std::vector<gold::Output_section::Input_section> >, __gnu_cxx::__ops::_Iter_comp_iter<(anonymous
   namespace)::Sort_toc_sections<true> > > */

void std::
     __insertion_sort<__gnu_cxx::__normal_iterator<gold::Output_section::Input_section*,_std::vector<gold::Output_section::Input_section>_>,___gnu_cxx::__ops::_Iter_comp_iter<(anonymous_namespace)::Sort_toc_sections<true>_>_>
               (void)

{
  value_type __val;
  
}



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

void __regparm3 FUN_000b6440(uint *param_1,uint *param_2)

{
  uint *puVar1;
  uint uVar2;
  int iVar3;
  uint *puVar4;
  byte bVar5;
  uint *puVar6;
  uint local_34;
  uint local_30;
  uint local_2c;
  uint local_28;
  uint local_24;
  uint local_20;
  undefined4 uStack_14;
  
  uStack_14 = 0xb6449;
  if ((param_1 == param_2) || (param_2 == param_1 + 6)) {
    return;
  }
  puVar6 = param_1 + 6;
LAB_000b64c1:
  do {
    if (*puVar6 < 0xfffffffc) {
      iVar3 = FUN_002c6110(puVar6);
      bVar5 = *(byte *)(iVar3 + 0x14c);
      if (3 < *param_1 + 4) {
        iVar3 = FUN_002c6110(param_1);
        bVar5 = bVar5 & (*(byte *)(iVar3 + 0x14c) ^ 1);
      }
      if (bVar5 == 0) goto LAB_000b64e0;
    }
    else if (*param_1 + 4 < 4) {
LAB_000b64e0:
      local_30 = puVar6[1];
      local_34 = *puVar6;
      local_2c = puVar6[2];
      uVar2 = local_34 + 4;
      local_28 = puVar6[3];
      local_24 = puVar6[4];
      local_20 = puVar6[5];
      puVar1 = puVar6;
      do {
        puVar4 = puVar1 + -6;
        if (uVar2 < 4) {
          if (0xfffffffb < *puVar4) goto LAB_000b6489;
        }
        else {
          iVar3 = FUN_002c6110(&local_34);
          bVar5 = *(byte *)(iVar3 + 0x14c);
          if (3 < *puVar4 + 4) {
            iVar3 = FUN_002c6110(puVar4);
            bVar5 = bVar5 & (*(byte *)(iVar3 + 0x14c) ^ 1);
          }
          if (bVar5 == 0) goto LAB_000b6489;
          uVar2 = local_34 + 4;
        }
        *puVar1 = *puVar4;
        puVar1[1] = puVar1[-5];
        puVar1[2] = puVar1[-4];
        puVar1[3] = puVar1[-3];
        puVar1[4] = puVar1[-2];
        puVar1[5] = puVar1[-1];
        puVar1 = puVar4;
      } while( true );
    }
    local_34 = *puVar6;
    puVar1 = puVar6 + 6;
    local_30 = puVar6[1];
    iVar3 = ((int)puVar6 - (int)param_1 >> 3) * -0x55555555;
    local_2c = puVar6[2];
    local_28 = puVar6[3];
    local_24 = puVar6[4];
    local_20 = puVar6[5];
    puVar4 = puVar1;
    if (0 < (int)puVar6 - (int)param_1) {
      do {
        puVar4[-6] = puVar4[-0xc];
        puVar4[-5] = puVar4[-0xb];
        puVar4[-4] = puVar4[-10];
        puVar4[-3] = puVar4[-9];
        puVar4[-2] = puVar4[-8];
        puVar4[-1] = puVar4[-7];
        iVar3 = iVar3 + -1;
        puVar4 = puVar4 + -6;
      } while (iVar3 != 0);
    }
    *param_1 = local_34;
    param_1[1] = local_30;
    param_1[2] = local_2c;
    param_1[3] = local_28;
    param_1[4] = local_24;
    param_1[5] = local_20;
    puVar6 = puVar1;
    if (param_2 == puVar1) {
      return;
    }
  } while( true );
LAB_000b6489:
  puVar6 = puVar6 + 6;
  *puVar1 = local_34;
  puVar1[1] = local_30;
  puVar1[2] = local_2c;
  puVar1[3] = local_28;
  puVar1[4] = local_24;
  puVar1[5] = local_20;
  if (param_2 == puVar6) {
    return;
  }
  goto LAB_000b64c1;
}


PUSH EBP
PUSH EDI
PUSH ESI
PUSH EBX
CALL 0x00050b50
ADD EBX,0x533bb7
SUB ESP,0x3c
CMP EAX,EDX
JZ 0x000b6694
LEA ECX,[EAX + 0x18]
CMP EDX,ECX
JZ 0x000b6694
MOV dword ptr [ESP + 0x8],EAX
LEA EAX,[ESP + 0x18]
MOV EBP,ECX
MOV dword ptr [ESP + 0xc],EDX
MOV dword ptr [ESP + 0x4],EAX
JMP 0x000b64c1
CMP dword ptr [ESI],-0x4
JC 0x000b656b
MOV EAX,dword ptr [ESP + 0x18]
LEA ECX,[EBP + 0x18]
MOV EBP,ECX
MOV dword ptr [EDI],EAX
MOV EAX,dword ptr [ESP + 0x1c]
MOV dword ptr [EDI + 0x4],EAX
MOV EAX,dword ptr [ESP + 0x20]
MOV dword ptr [EDI + 0x8],EAX
MOV EAX,dword ptr [ESP + 0x24]
MOV dword ptr [EDI + 0xc],EAX
MOV EAX,dword ptr [ESP + 0x28]
MOV dword ptr [EDI + 0x10],EAX
MOV EAX,dword ptr [ESP + 0x2c]
MOV dword ptr [EDI + 0x14],EAX
CMP dword ptr [ESP + 0xc],ECX
JZ 0x000b6694
CMP dword ptr [EBP],-0x4
JC 0x000b65a0
MOV EAX,dword ptr [ESP + 0x8]
MOV EAX,dword ptr [EAX]
MOV dword ptr [ESP],EAX
ADD EAX,0x4
CMP EAX,0x3
JA 0x000b65e7
MOV ECX,dword ptr [EBP + 0x4]
MOV EAX,dword ptr [EBP]
LEA ESI,[EBP + -0x18]
MOV dword ptr [ESP + 0x1c],ECX
MOV ECX,dword ptr [EBP + 0x8]
MOV dword ptr [ESP + 0x18],EAX
ADD EAX,0x4
MOV dword ptr [ESP + 0x20],ECX
MOV ECX,dword ptr [EBP + 0xc]
MOV dword ptr [ESP + 0x24],ECX
MOV ECX,dword ptr [EBP + 0x10]
MOV dword ptr [ESP + 0x28],ECX
MOV ECX,dword ptr [EBP + 0x14]
MOV dword ptr [ESP + 0x2c],ECX
LEA EDI,[ESI + 0x18]
CMP EAX,0x3
JBE 0x000b6480
SUB ESP,0xc
PUSH dword ptr [ESP + 0x10]
CALL 0x002c6110
ADD ESP,0x10
MOVZX ECX,byte ptr [EAX + 0x14c]
MOV EAX,dword ptr [ESI]
ADD EAX,0x4
CMP EAX,0x3
JBE 0x000b655c
MOV byte ptr [ESP],CL
SUB ESP,0xc
PUSH ESI
CALL 0x002c6110
MOVZX ECX,byte ptr [ESP + 0x10]
ADD ESP,0x10
MOVZX EAX,byte ptr [EAX + 0x14c]
XOR EAX,0x1
AND ECX,EAX
TEST CL,CL
JZ 0x000b6489
MOV EAX,dword ptr [ESP + 0x18]
ADD EAX,0x4
MOV ECX,dword ptr [ESI]
SUB ESI,0x18
MOV dword ptr [ESI + 0x30],ECX
MOV ECX,dword ptr [ESI + 0x1c]
MOV dword ptr [ESI + 0x34],ECX
MOV ECX,dword ptr [ESI + 0x20]
MOV dword ptr [ESI + 0x38],ECX
MOV ECX,dword ptr [ESI + 0x24]
MOV dword ptr [ESI + 0x3c],ECX
MOV ECX,dword ptr [ESI + 0x28]
MOV dword ptr [ESI + 0x40],ECX
MOV ECX,dword ptr [ESI + 0x2c]
MOV dword ptr [ESI + 0x44],ECX
JMP 0x000b6510
SUB ESP,0xc
PUSH EBP
CALL 0x002c6110
MOV EDI,dword ptr [ESP + 0x18]
MOVZX ESI,byte ptr [EAX + 0x14c]
MOV EAX,dword ptr [EDI]
MOV dword ptr [ESP + 0x10],EAX
ADD EAX,0x4
ADD ESP,0x10
CMP EAX,0x3
JBE 0x000b65dd
SUB ESP,0xc
PUSH EDI
CALL 0x002c6110
ADD ESP,0x10
MOVZX EAX,byte ptr [EAX + 0x14c]
XOR EAX,0x1
AND ESI,EAX
MOV EAX,ESI
TEST AL,AL
JZ 0x000b64e0
MOV EAX,dword ptr [EBP]
MOV EDX,EBP
SUB EDX,dword ptr [ESP + 0x8]
LEA ECX,[EBP + 0x18]
MOV ESI,EDX
MOV dword ptr [ESP + 0x18],EAX
MOV EAX,dword ptr [EBP + 0x4]
SAR ESI,0x3
IMUL ESI,ESI,-0x55555555
MOV dword ptr [ESP + 0x1c],EAX
MOV EAX,dword ptr [EBP + 0x8]
MOV dword ptr [ESP + 0x20],EAX
MOV EAX,dword ptr [EBP + 0xc]
MOV dword ptr [ESP + 0x24],EAX
MOV EAX,dword ptr [EBP + 0x10]
MOV dword ptr [ESP + 0x28],EAX
MOV EAX,dword ptr [EBP + 0x14]
MOV dword ptr [ESP + 0x2c],EAX
TEST EDX,EDX
JLE 0x000b665b
MOV EAX,ECX
LEA ESI,[ESI]
NOP
SUB EAX,0x18
MOV EDX,dword ptr [EAX + -0x18]
MOV dword ptr [EAX],EDX
MOV EDX,dword ptr [EAX + -0x14]
MOV dword ptr [EAX + 0x4],EDX
MOV EDX,dword ptr [EAX + -0x10]
MOV dword ptr [EAX + 0x8],EDX
MOV EDX,dword ptr [EAX + -0xc]
MOV dword ptr [EAX + 0xc],EDX
MOV EDX,dword ptr [EAX + -0x8]
MOV dword ptr [EAX + 0x10],EDX
MOV EDX,dword ptr [EAX + -0x4]
MOV dword ptr [EAX + 0x14],EDX
SUB ESI,0x1
JNZ 0x000b6630
MOV EDI,dword ptr [ESP + 0x8]
MOV EAX,dword ptr [ESP + 0x18]
MOV EBP,ECX
MOV dword ptr [EDI],EAX
MOV EAX,dword ptr [ESP + 0x1c]
MOV dword ptr [EDI + 0x4],EAX
MOV EAX,dword ptr [ESP + 0x20]
MOV dword ptr [EDI + 0x8],EAX
MOV EAX,dword ptr [ESP + 0x24]
MOV dword ptr [EDI + 0xc],EAX
MOV EAX,dword ptr [ESP + 0x28]
MOV dword ptr [EDI + 0x10],EAX
MOV EAX,dword ptr [ESP + 0x2c]
MOV dword ptr [EDI + 0x14],EAX
CMP dword ptr [ESP + 0xc],ECX
JNZ 0x000b64c1
ADD ESP,0x3c
POP EBX
POP ESI
POP EDI
POP EBP
RET
(translation_unit "/* WARNING: Function: __i686.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n\nvoid __regparm3 FUN_000b6440(uint *param_1,uint *param_2)\n\n{\n  uint *puVar1;\n  uint uVar2;\n  int iVar3;\n  uint *puVar4;\n  byte bVar5;\n  uint *puVar6;\n  uint local_34;\n  uint local_30;\n  uint local_2c;\n  uint local_28;\n  uint local_24;\n  uint local_20;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0xb6449;\n  if ((param_1 == param_2) || (param_2 == param_1 + 6)) {\n    return;\n  }\n  puVar6 = param_1 + 6;\nLAB_000b64c1:\n  do {\n    if (*puVar6 < 0xfffffffc) {\n      iVar3 = FUN_002c6110(puVar6);\n      bVar5 = *(byte *)(iVar3 + 0x14c);\n      if (3 < *param_1 + 4) {\n        iVar3 = FUN_002c6110(param_1);\n        bVar5 = bVar5 & (*(byte *)(iVar3 + 0x14c) ^ 1);\n      }\n      if (bVar5 == 0) goto LAB_000b64e0;\n    }\n    else if (*param_1 + 4 < 4) {\nLAB_000b64e0:\n      local_30 = puVar6[1];\n      local_34 = *puVar6;\n      local_2c = puVar6[2];\n      uVar2 = local_34 + 4;\n      local_28 = puVar6[3];\n      local_24 = puVar6[4];\n      local_20 = puVar6[5];\n      puVar1 = puVar6;\n      do {\n        puVar4 = puVar1 + -6;\n        if (uVar2 < 4) {\n          if (0xfffffffb < *puVar4) goto LAB_000b6489;\n        }\n        else {\n          iVar3 = FUN_002c6110(&local_34);\n          bVar5 = *(byte *)(iVar3 + 0x14c);\n          if (3 < *puVar4 + 4) {\n            iVar3 = FUN_002c6110(puVar4);\n            bVar5 = bVar5 & (*(byte *)(iVar3 + 0x14c) ^ 1);\n          }\n          if (bVar5 == 0) goto LAB_000b6489;\n          uVar2 = local_34 + 4;\n        }\n        *puVar1 = *puVar4;\n        puVar1[1] = puVar1[-5];\n        puVar1[2] = puVar1[-4];\n        puVar1[3] = puVar1[-3];\n        puVar1[4] = puVar1[-2];\n        puVar1[5] = puVar1[-1];\n        puVar1 = puVar4;\n      } while( true );\n    }\n    local_34 = *puVar6;\n    puVar1 = puVar6 + 6;\n    local_30 = puVar6[1];\n    iVar3 = ((int)puVar6 - (int)param_1 >> 3) * -0x55555555;\n    local_2c = puVar6[2];\n    local_28 = puVar6[3];\n    local_24 = puVar6[4];\n    local_20 = puVar6[5];\n    puVar4 = puVar1;\n    if (0 < (int)puVar6 - (int)param_1) {\n      do {\n        puVar4[-6] = puVar4[-0xc];\n        puVar4[-5] = puVar4[-0xb];\n        puVar4[-4] = puVar4[-10];\n        puVar4[-3] = puVar4[-9];\n        puVar4[-2] = puVar4[-8];\n        puVar4[-1] = puVar4[-7];\n        iVar3 = iVar3 + -1;\n        puVar4 = puVar4 + -6;\n      } while (iVar3 != 0);\n    }\n    *param_1 = local_34;\n    param_1[1] = local_30;\n    param_1[2] = local_2c;\n    param_1[3] = local_28;\n    param_1[4] = local_24;\n    param_1[5] = local_20;\n    puVar6 = puVar1;\n    if (param_2 == puVar1) {\n      return;\n    }\n  } while( true );\nLAB_000b6489:\n  puVar6 = puVar6 + 6;\n  *puVar1 = local_34;\n  puVar1[1] = local_30;\n  puVar1[2] = local_2c;\n  puVar1[3] = local_28;\n  puVar1[4] = local_24;\n  puVar1[5] = local_20;\n  if (param_2 == puVar6) {\n    return;\n  }\n  goto LAB_000b64c1;\n}\n\n" comment (function_definition "void __regparm3 FUN_000b6440(uint *param_1,uint *param_2)\n\n{\n  uint *puVar1;\n  uint uVar2;\n  int iVar3;\n  uint *puVar4;\n  byte bVar5;\n  uint *puVar6;\n  uint local_34;\n  uint local_30;\n  uint local_2c;\n  uint local_28;\n  uint local_24;\n  uint local_20;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0xb6449;\n  if ((param_1 == param_2) || (param_2 == param_1 + 6)) {\n    return;\n  }\n  puVar6 = param_1 + 6;\nLAB_000b64c1:\n  do {\n    if (*puVar6 < 0xfffffffc) {\n      iVar3 = FUN_002c6110(puVar6);\n      bVar5 = *(byte *)(iVar3 + 0x14c);\n      if (3 < *param_1 + 4) {\n        iVar3 = FUN_002c6110(param_1);\n        bVar5 = bVar5 & (*(byte *)(iVar3 + 0x14c) ^ 1);\n      }\n      if (bVar5 == 0) goto LAB_000b64e0;\n    }\n    else if (*param_1 + 4 < 4) {\nLAB_000b64e0:\n      local_30 = puVar6[1];\n      local_34 = *puVar6;\n      local_2c = puVar6[2];\n      uVar2 = local_34 + 4;\n      local_28 = puVar6[3];\n      local_24 = puVar6[4];\n      local_20 = puVar6[5];\n      puVar1 = puVar6;\n      do {\n        puVar4 = puVar1 + -6;\n        if (uVar2 < 4) {\n          if (0xfffffffb < *puVar4) goto LAB_000b6489;\n        }\n        else {\n          iVar3 = FUN_002c6110(&local_34);\n          bVar5 = *(byte *)(iVar3 + 0x14c);\n          if (3 < *puVar4 + 4) {\n            iVar3 = FUN_002c6110(puVar4);\n            bVar5 = bVar5 & (*(byte *)(iVar3 + 0x14c) ^ 1);\n          }\n          if (bVar5 == 0) goto LAB_000b6489;\n          uVar2 = local_34 + 4;\n        }\n        *puVar1 = *puVar4;\n        puVar1[1] = puVar1[-5];\n        puVar1[2] = puVar1[-4];\n        puVar1[3] = puVar1[-3];\n        puVar1[4] = puVar1[-2];\n        puVar1[5] = puVar1[-1];\n        puVar1 = puVar4;\n      } while( true );\n    }\n    local_34 = *puVar6;\n    puVar1 = puVar6 + 6;\n    local_30 = puVar6[1];\n    iVar3 = ((int)puVar6 - (int)param_1 >> 3) * -0x55555555;\n    local_2c = puVar6[2];\n    local_28 = puVar6[3];\n    local_24 = puVar6[4];\n    local_20 = puVar6[5];\n    puVar4 = puVar1;\n    if (0 < (int)puVar6 - (int)param_1) {\n      do {\n        puVar4[-6] = puVar4[-0xc];\n        puVar4[-5] = puVar4[-0xb];\n        puVar4[-4] = puVar4[-10];\n        puVar4[-3] = puVar4[-9];\n        puVar4[-2] = puVar4[-8];\n        puVar4[-1] = puVar4[-7];\n        iVar3 = iVar3 + -1;\n        puVar4 = puVar4 + -6;\n      } while (iVar3 != 0);\n    }\n    *param_1 = local_34;\n    param_1[1] = local_30;\n    param_1[2] = local_2c;\n    param_1[3] = local_28;\n    param_1[4] = local_24;\n    param_1[5] = local_20;\n    puVar6 = puVar1;\n    if (param_2 == puVar1) {\n      return;\n    }\n  } while( true );\nLAB_000b6489:\n  puVar6 = puVar6 + 6;\n  *puVar1 = local_34;\n  puVar1[1] = local_30;\n  puVar1[2] = local_2c;\n  puVar1[3] = local_28;\n  puVar1[4] = local_24;\n  puVar1[5] = local_20;\n  if (param_2 == puVar6) {\n    return;\n  }\n  goto LAB_000b64c1;\n}" primitive_type (ERROR "__regparm3" identifier) (function_declarator "FUN_000b6440(uint *param_1,uint *param_2)" identifier (parameter_list "(uint *param_1,uint *param_2)" ( (parameter_declaration "uint *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "uint *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) ))) (compound_statement "{\n  uint *puVar1;\n  uint uVar2;\n  int iVar3;\n  uint *puVar4;\n  byte bVar5;\n  uint *puVar6;\n  uint local_34;\n  uint local_30;\n  uint local_2c;\n  uint local_28;\n  uint local_24;\n  uint local_20;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0xb6449;\n  if ((param_1 == param_2) || (param_2 == param_1 + 6)) {\n    return;\n  }\n  puVar6 = param_1 + 6;\nLAB_000b64c1:\n  do {\n    if (*puVar6 < 0xfffffffc) {\n      iVar3 = FUN_002c6110(puVar6);\n      bVar5 = *(byte *)(iVar3 + 0x14c);\n      if (3 < *param_1 + 4) {\n        iVar3 = FUN_002c6110(param_1);\n        bVar5 = bVar5 & (*(byte *)(iVar3 + 0x14c) ^ 1);\n      }\n      if (bVar5 == 0) goto LAB_000b64e0;\n    }\n    else if (*param_1 + 4 < 4) {\nLAB_000b64e0:\n      local_30 = puVar6[1];\n      local_34 = *puVar6;\n      local_2c = puVar6[2];\n      uVar2 = local_34 + 4;\n      local_28 = puVar6[3];\n      local_24 = puVar6[4];\n      local_20 = puVar6[5];\n      puVar1 = puVar6;\n      do {\n        puVar4 = puVar1 + -6;\n        if (uVar2 < 4) {\n          if (0xfffffffb < *puVar4) goto LAB_000b6489;\n        }\n        else {\n          iVar3 = FUN_002c6110(&local_34);\n          bVar5 = *(byte *)(iVar3 + 0x14c);\n          if (3 < *puVar4 + 4) {\n            iVar3 = FUN_002c6110(puVar4);\n            bVar5 = bVar5 & (*(byte *)(iVar3 + 0x14c) ^ 1);\n          }\n          if (bVar5 == 0) goto LAB_000b6489;\n          uVar2 = local_34 + 4;\n        }\n        *puVar1 = *puVar4;\n        puVar1[1] = puVar1[-5];\n        puVar1[2] = puVar1[-4];\n        puVar1[3] = puVar1[-3];\n        puVar1[4] = puVar1[-2];\n        puVar1[5] = puVar1[-1];\n        puVar1 = puVar4;\n      } while( true );\n    }\n    local_34 = *puVar6;\n    puVar1 = puVar6 + 6;\n    local_30 = puVar6[1];\n    iVar3 = ((int)puVar6 - (int)param_1 >> 3) * -0x55555555;\n    local_2c = puVar6[2];\n    local_28 = puVar6[3];\n    local_24 = puVar6[4];\n    local_20 = puVar6[5];\n    puVar4 = puVar1;\n    if (0 < (int)puVar6 - (int)param_1) {\n      do {\n        puVar4[-6] = puVar4[-0xc];\n        puVar4[-5] = puVar4[-0xb];\n        puVar4[-4] = puVar4[-10];\n        puVar4[-3] = puVar4[-9];\n        puVar4[-2] = puVar4[-8];\n        puVar4[-1] = puVar4[-7];\n        iVar3 = iVar3 + -1;\n        puVar4 = puVar4 + -6;\n      } while (iVar3 != 0);\n    }\n    *param_1 = local_34;\n    param_1[1] = local_30;\n    param_1[2] = local_2c;\n    param_1[3] = local_28;\n    param_1[4] = local_24;\n    param_1[5] = local_20;\n    puVar6 = puVar1;\n    if (param_2 == puVar1) {\n      return;\n    }\n  } while( true );\nLAB_000b6489:\n  puVar6 = puVar6 + 6;\n  *puVar1 = local_34;\n  puVar1[1] = local_30;\n  puVar1[2] = local_2c;\n  puVar1[3] = local_28;\n  puVar1[4] = local_24;\n  puVar1[5] = local_20;\n  if (param_2 == puVar6) {\n    return;\n  }\n  goto LAB_000b64c1;\n}" { (declaration "uint *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "uint uVar2;" type_identifier identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "uint *puVar4;" type_identifier (pointer_declarator "*puVar4" * identifier) ;) (declaration "byte bVar5;" type_identifier identifier ;) (declaration "uint *puVar6;" type_identifier (pointer_declarator "*puVar6" * identifier) ;) (declaration "uint local_34;" type_identifier identifier ;) (declaration "uint local_30;" type_identifier identifier ;) (declaration "uint local_2c;" type_identifier identifier ;) (declaration "uint local_28;" type_identifier identifier ;) (declaration "uint local_24;" type_identifier identifier ;) (declaration "uint local_20;" type_identifier identifier ;) (declaration "undefined4 uStack_14;" type_identifier identifier ;) (expression_statement "uStack_14 = 0xb6449;" (assignment_expression "uStack_14 = 0xb6449" identifier = number_literal) ;) (if_statement "if ((param_1 == param_2) || (param_2 == param_1 + 6)) {\n    return;\n  }" if (parenthesized_expression "((param_1 == param_2) || (param_2 == param_1 + 6))" ( (binary_expression "(param_1 == param_2) || (param_2 == param_1 + 6)" (parenthesized_expression "(param_1 == param_2)" ( (binary_expression "param_1 == param_2" identifier == identifier) )) || (parenthesized_expression "(param_2 == param_1 + 6)" ( (binary_expression "param_2 == param_1 + 6" identifier == (binary_expression "param_1 + 6" identifier + number_literal)) ))) )) (compound_statement "{\n    return;\n  }" { (return_statement "return;" return ;) })) (expression_statement "puVar6 = param_1 + 6;" (assignment_expression "puVar6 = param_1 + 6" identifier = (binary_expression "param_1 + 6" identifier + number_literal)) ;) (labeled_statement "LAB_000b64c1:\n  do {\n    if (*puVar6 < 0xfffffffc) {\n      iVar3 = FUN_002c6110(puVar6);\n      bVar5 = *(byte *)(iVar3 + 0x14c);\n      if (3 < *param_1 + 4) {\n        iVar3 = FUN_002c6110(param_1);\n        bVar5 = bVar5 & (*(byte *)(iVar3 + 0x14c) ^ 1);\n      }\n      if (bVar5 == 0) goto LAB_000b64e0;\n    }\n    else if (*param_1 + 4 < 4) {\nLAB_000b64e0:\n      local_30 = puVar6[1];\n      local_34 = *puVar6;\n      local_2c = puVar6[2];\n      uVar2 = local_34 + 4;\n      local_28 = puVar6[3];\n      local_24 = puVar6[4];\n      local_20 = puVar6[5];\n      puVar1 = puVar6;\n      do {\n        puVar4 = puVar1 + -6;\n        if (uVar2 < 4) {\n          if (0xfffffffb < *puVar4) goto LAB_000b6489;\n        }\n        else {\n          iVar3 = FUN_002c6110(&local_34);\n          bVar5 = *(byte *)(iVar3 + 0x14c);\n          if (3 < *puVar4 + 4) {\n            iVar3 = FUN_002c6110(puVar4);\n            bVar5 = bVar5 & (*(byte *)(iVar3 + 0x14c) ^ 1);\n          }\n          if (bVar5 == 0) goto LAB_000b6489;\n          uVar2 = local_34 + 4;\n        }\n        *puVar1 = *puVar4;\n        puVar1[1] = puVar1[-5];\n        puVar1[2] = puVar1[-4];\n        puVar1[3] = puVar1[-3];\n        puVar1[4] = puVar1[-2];\n        puVar1[5] = puVar1[-1];\n        puVar1 = puVar4;\n      } while( true );\n    }\n    local_34 = *puVar6;\n    puVar1 = puVar6 + 6;\n    local_30 = puVar6[1];\n    iVar3 = ((int)puVar6 - (int)param_1 >> 3) * -0x55555555;\n    local_2c = puVar6[2];\n    local_28 = puVar6[3];\n    local_24 = puVar6[4];\n    local_20 = puVar6[5];\n    puVar4 = puVar1;\n    if (0 < (int)puVar6 - (int)param_1) {\n      do {\n        puVar4[-6] = puVar4[-0xc];\n        puVar4[-5] = puVar4[-0xb];\n        puVar4[-4] = puVar4[-10];\n        puVar4[-3] = puVar4[-9];\n        puVar4[-2] = puVar4[-8];\n        puVar4[-1] = puVar4[-7];\n        iVar3 = iVar3 + -1;\n        puVar4 = puVar4 + -6;\n      } while (iVar3 != 0);\n    }\n    *param_1 = local_34;\n    param_1[1] = local_30;\n    param_1[2] = local_2c;\n    param_1[3] = local_28;\n    param_1[4] = local_24;\n    param_1[5] = local_20;\n    puVar6 = puVar1;\n    if (param_2 == puVar1) {\n      return;\n    }\n  } while( true );" statement_identifier : (do_statement "do {\n    if (*puVar6 < 0xfffffffc) {\n      iVar3 = FUN_002c6110(puVar6);\n      bVar5 = *(byte *)(iVar3 + 0x14c);\n      if (3 < *param_1 + 4) {\n        iVar3 = FUN_002c6110(param_1);\n        bVar5 = bVar5 & (*(byte *)(iVar3 + 0x14c) ^ 1);\n      }\n      if (bVar5 == 0) goto LAB_000b64e0;\n    }\n    else if (*param_1 + 4 < 4) {\nLAB_000b64e0:\n      local_30 = puVar6[1];\n      local_34 = *puVar6;\n      local_2c = puVar6[2];\n      uVar2 = local_34 + 4;\n      local_28 = puVar6[3];\n      local_24 = puVar6[4];\n      local_20 = puVar6[5];\n      puVar1 = puVar6;\n      do {\n        puVar4 = puVar1 + -6;\n        if (uVar2 < 4) {\n          if (0xfffffffb < *puVar4) goto LAB_000b6489;\n        }\n        else {\n          iVar3 = FUN_002c6110(&local_34);\n          bVar5 = *(byte *)(iVar3 + 0x14c);\n          if (3 < *puVar4 + 4) {\n            iVar3 = FUN_002c6110(puVar4);\n            bVar5 = bVar5 & (*(byte *)(iVar3 + 0x14c) ^ 1);\n          }\n          if (bVar5 == 0) goto LAB_000b6489;\n          uVar2 = local_34 + 4;\n        }\n        *puVar1 = *puVar4;\n        puVar1[1] = puVar1[-5];\n        puVar1[2] = puVar1[-4];\n        puVar1[3] = puVar1[-3];\n        puVar1[4] = puVar1[-2];\n        puVar1[5] = puVar1[-1];\n        puVar1 = puVar4;\n      } while( true );\n    }\n    local_34 = *puVar6;\n    puVar1 = puVar6 + 6;\n    local_30 = puVar6[1];\n    iVar3 = ((int)puVar6 - (int)param_1 >> 3) * -0x55555555;\n    local_2c = puVar6[2];\n    local_28 = puVar6[3];\n    local_24 = puVar6[4];\n    local_20 = puVar6[5];\n    puVar4 = puVar1;\n    if (0 < (int)puVar6 - (int)param_1) {\n      do {\n        puVar4[-6] = puVar4[-0xc];\n        puVar4[-5] = puVar4[-0xb];\n        puVar4[-4] = puVar4[-10];\n        puVar4[-3] = puVar4[-9];\n        puVar4[-2] = puVar4[-8];\n        puVar4[-1] = puVar4[-7];\n        iVar3 = iVar3 + -1;\n        puVar4 = puVar4 + -6;\n      } while (iVar3 != 0);\n    }\n    *param_1 = local_34;\n    param_1[1] = local_30;\n    param_1[2] = local_2c;\n    param_1[3] = local_28;\n    param_1[4] = local_24;\n    param_1[5] = local_20;\n    puVar6 = puVar1;\n    if (param_2 == puVar1) {\n      return;\n    }\n  } while( true );" do (compound_statement "{\n    if (*puVar6 < 0xfffffffc) {\n      iVar3 = FUN_002c6110(puVar6);\n      bVar5 = *(byte *)(iVar3 + 0x14c);\n      if (3 < *param_1 + 4) {\n        iVar3 = FUN_002c6110(param_1);\n        bVar5 = bVar5 & (*(byte *)(iVar3 + 0x14c) ^ 1);\n      }\n      if (bVar5 == 0) goto LAB_000b64e0;\n    }\n    else if (*param_1 + 4 < 4) {\nLAB_000b64e0:\n      local_30 = puVar6[1];\n      local_34 = *puVar6;\n      local_2c = puVar6[2];\n      uVar2 = local_34 + 4;\n      local_28 = puVar6[3];\n      local_24 = puVar6[4];\n      local_20 = puVar6[5];\n      puVar1 = puVar6;\n      do {\n        puVar4 = puVar1 + -6;\n        if (uVar2 < 4) {\n          if (0xfffffffb < *puVar4) goto LAB_000b6489;\n        }\n        else {\n          iVar3 = FUN_002c6110(&local_34);\n          bVar5 = *(byte *)(iVar3 + 0x14c);\n          if (3 < *puVar4 + 4) {\n            iVar3 = FUN_002c6110(puVar4);\n            bVar5 = bVar5 & (*(byte *)(iVar3 + 0x14c) ^ 1);\n          }\n          if (bVar5 == 0) goto LAB_000b6489;\n          uVar2 = local_34 + 4;\n        }\n        *puVar1 = *puVar4;\n        puVar1[1] = puVar1[-5];\n        puVar1[2] = puVar1[-4];\n        puVar1[3] = puVar1[-3];\n        puVar1[4] = puVar1[-2];\n        puVar1[5] = puVar1[-1];\n        puVar1 = puVar4;\n      } while( true );\n    }\n    local_34 = *puVar6;\n    puVar1 = puVar6 + 6;\n    local_30 = puVar6[1];\n    iVar3 = ((int)puVar6 - (int)param_1 >> 3) * -0x55555555;\n    local_2c = puVar6[2];\n    local_28 = puVar6[3];\n    local_24 = puVar6[4];\n    local_20 = puVar6[5];\n    puVar4 = puVar1;\n    if (0 < (int)puVar6 - (int)param_1) {\n      do {\n        puVar4[-6] = puVar4[-0xc];\n        puVar4[-5] = puVar4[-0xb];\n        puVar4[-4] = puVar4[-10];\n        puVar4[-3] = puVar4[-9];\n        puVar4[-2] = puVar4[-8];\n        puVar4[-1] = puVar4[-7];\n        iVar3 = iVar3 + -1;\n        puVar4 = puVar4 + -6;\n      } while (iVar3 != 0);\n    }\n    *param_1 = local_34;\n    param_1[1] = local_30;\n    param_1[2] = local_2c;\n    param_1[3] = local_28;\n    param_1[4] = local_24;\n    param_1[5] = local_20;\n    puVar6 = puVar1;\n    if (param_2 == puVar1) {\n      return;\n    }\n  }" { (if_statement "if (*puVar6 < 0xfffffffc) {\n      iVar3 = FUN_002c6110(puVar6);\n      bVar5 = *(byte *)(iVar3 + 0x14c);\n      if (3 < *param_1 + 4) {\n        iVar3 = FUN_002c6110(param_1);\n        bVar5 = bVar5 & (*(byte *)(iVar3 + 0x14c) ^ 1);\n      }\n      if (bVar5 == 0) goto LAB_000b64e0;\n    }\n    else if (*param_1 + 4 < 4) {\nLAB_000b64e0:\n      local_30 = puVar6[1];\n      local_34 = *puVar6;\n      local_2c = puVar6[2];\n      uVar2 = local_34 + 4;\n      local_28 = puVar6[3];\n      local_24 = puVar6[4];\n      local_20 = puVar6[5];\n      puVar1 = puVar6;\n      do {\n        puVar4 = puVar1 + -6;\n        if (uVar2 < 4) {\n          if (0xfffffffb < *puVar4) goto LAB_000b6489;\n        }\n        else {\n          iVar3 = FUN_002c6110(&local_34);\n          bVar5 = *(byte *)(iVar3 + 0x14c);\n          if (3 < *puVar4 + 4) {\n            iVar3 = FUN_002c6110(puVar4);\n            bVar5 = bVar5 & (*(byte *)(iVar3 + 0x14c) ^ 1);\n          }\n          if (bVar5 == 0) goto LAB_000b6489;\n          uVar2 = local_34 + 4;\n        }\n        *puVar1 = *puVar4;\n        puVar1[1] = puVar1[-5];\n        puVar1[2] = puVar1[-4];\n        puVar1[3] = puVar1[-3];\n        puVar1[4] = puVar1[-2];\n        puVar1[5] = puVar1[-1];\n        puVar1 = puVar4;\n      } while( true );\n    }" if (parenthesized_expression "(*puVar6 < 0xfffffffc)" ( (binary_expression "*puVar6 < 0xfffffffc" (pointer_expression "*puVar6" * identifier) < number_literal) )) (compound_statement "{\n      iVar3 = FUN_002c6110(puVar6);\n      bVar5 = *(byte *)(iVar3 + 0x14c);\n      if (3 < *param_1 + 4) {\n        iVar3 = FUN_002c6110(param_1);\n        bVar5 = bVar5 & (*(byte *)(iVar3 + 0x14c) ^ 1);\n      }\n      if (bVar5 == 0) goto LAB_000b64e0;\n    }" { (expression_statement "iVar3 = FUN_002c6110(puVar6);" (assignment_expression "iVar3 = FUN_002c6110(puVar6)" identifier = (call_expression "FUN_002c6110(puVar6)" identifier (argument_list "(puVar6)" ( identifier )))) ;) (expression_statement "bVar5 = *(byte *)(iVar3 + 0x14c);" (assignment_expression "bVar5 = *(byte *)(iVar3 + 0x14c)" identifier = (pointer_expression "*(byte *)(iVar3 + 0x14c)" * (cast_expression "(byte *)(iVar3 + 0x14c)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0x14c)" ( (binary_expression "iVar3 + 0x14c" identifier + number_literal) ))))) ;) (if_statement "if (3 < *param_1 + 4) {\n        iVar3 = FUN_002c6110(param_1);\n        bVar5 = bVar5 & (*(byte *)(iVar3 + 0x14c) ^ 1);\n      }" if (parenthesized_expression "(3 < *param_1 + 4)" ( (binary_expression "3 < *param_1 + 4" number_literal < (binary_expression "*param_1 + 4" (pointer_expression "*param_1" * identifier) + number_literal)) )) (compound_statement "{\n        iVar3 = FUN_002c6110(param_1);\n        bVar5 = bVar5 & (*(byte *)(iVar3 + 0x14c) ^ 1);\n      }" { (expression_statement "iVar3 = FUN_002c6110(param_1);" (assignment_expression "iVar3 = FUN_002c6110(param_1)" identifier = (call_expression "FUN_002c6110(param_1)" identifier (argument_list "(param_1)" ( identifier )))) ;) (expression_statement "bVar5 = bVar5 & (*(byte *)(iVar3 + 0x14c) ^ 1);" (assignment_expression "bVar5 = bVar5 & (*(byte *)(iVar3 + 0x14c) ^ 1)" identifier = (binary_expression "bVar5 & (*(byte *)(iVar3 + 0x14c) ^ 1)" identifier & (parenthesized_expression "(*(byte *)(iVar3 + 0x14c) ^ 1)" ( (binary_expression "*(byte *)(iVar3 + 0x14c) ^ 1" (pointer_expression "*(byte *)(iVar3 + 0x14c)" * (cast_expression "(byte *)(iVar3 + 0x14c)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0x14c)" ( (binary_expression "iVar3 + 0x14c" identifier + number_literal) )))) ^ number_literal) )))) ;) })) (if_statement "if (bVar5 == 0) goto LAB_000b64e0;" if (parenthesized_expression "(bVar5 == 0)" ( (binary_expression "bVar5 == 0" identifier == number_literal) )) (goto_statement "goto LAB_000b64e0;" goto statement_identifier ;)) }) (else_clause "else if (*param_1 + 4 < 4) {\nLAB_000b64e0:\n      local_30 = puVar6[1];\n      local_34 = *puVar6;\n      local_2c = puVar6[2];\n      uVar2 = local_34 + 4;\n      local_28 = puVar6[3];\n      local_24 = puVar6[4];\n      local_20 = puVar6[5];\n      puVar1 = puVar6;\n      do {\n        puVar4 = puVar1 + -6;\n        if (uVar2 < 4) {\n          if (0xfffffffb < *puVar4) goto LAB_000b6489;\n        }\n        else {\n          iVar3 = FUN_002c6110(&local_34);\n          bVar5 = *(byte *)(iVar3 + 0x14c);\n          if (3 < *puVar4 + 4) {\n            iVar3 = FUN_002c6110(puVar4);\n            bVar5 = bVar5 & (*(byte *)(iVar3 + 0x14c) ^ 1);\n          }\n          if (bVar5 == 0) goto LAB_000b6489;\n          uVar2 = local_34 + 4;\n        }\n        *puVar1 = *puVar4;\n        puVar1[1] = puVar1[-5];\n        puVar1[2] = puVar1[-4];\n        puVar1[3] = puVar1[-3];\n        puVar1[4] = puVar1[-2];\n        puVar1[5] = puVar1[-1];\n        puVar1 = puVar4;\n      } while( true );\n    }" else (if_statement "if (*param_1 + 4 < 4) {\nLAB_000b64e0:\n      local_30 = puVar6[1];\n      local_34 = *puVar6;\n      local_2c = puVar6[2];\n      uVar2 = local_34 + 4;\n      local_28 = puVar6[3];\n      local_24 = puVar6[4];\n      local_20 = puVar6[5];\n      puVar1 = puVar6;\n      do {\n        puVar4 = puVar1 + -6;\n        if (uVar2 < 4) {\n          if (0xfffffffb < *puVar4) goto LAB_000b6489;\n        }\n        else {\n          iVar3 = FUN_002c6110(&local_34);\n          bVar5 = *(byte *)(iVar3 + 0x14c);\n          if (3 < *puVar4 + 4) {\n            iVar3 = FUN_002c6110(puVar4);\n            bVar5 = bVar5 & (*(byte *)(iVar3 + 0x14c) ^ 1);\n          }\n          if (bVar5 == 0) goto LAB_000b6489;\n          uVar2 = local_34 + 4;\n        }\n        *puVar1 = *puVar4;\n        puVar1[1] = puVar1[-5];\n        puVar1[2] = puVar1[-4];\n        puVar1[3] = puVar1[-3];\n        puVar1[4] = puVar1[-2];\n        puVar1[5] = puVar1[-1];\n        puVar1 = puVar4;\n      } while( true );\n    }" if (parenthesized_expression "(*param_1 + 4 < 4)" ( (binary_expression "*param_1 + 4 < 4" (binary_expression "*param_1 + 4" (pointer_expression "*param_1" * identifier) + number_literal) < number_literal) )) (compound_statement "{\nLAB_000b64e0:\n      local_30 = puVar6[1];\n      local_34 = *puVar6;\n      local_2c = puVar6[2];\n      uVar2 = local_34 + 4;\n      local_28 = puVar6[3];\n      local_24 = puVar6[4];\n      local_20 = puVar6[5];\n      puVar1 = puVar6;\n      do {\n        puVar4 = puVar1 + -6;\n        if (uVar2 < 4) {\n          if (0xfffffffb < *puVar4) goto LAB_000b6489;\n        }\n        else {\n          iVar3 = FUN_002c6110(&local_34);\n          bVar5 = *(byte *)(iVar3 + 0x14c);\n          if (3 < *puVar4 + 4) {\n            iVar3 = FUN_002c6110(puVar4);\n            bVar5 = bVar5 & (*(byte *)(iVar3 + 0x14c) ^ 1);\n          }\n          if (bVar5 == 0) goto LAB_000b6489;\n          uVar2 = local_34 + 4;\n        }\n        *puVar1 = *puVar4;\n        puVar1[1] = puVar1[-5];\n        puVar1[2] = puVar1[-4];\n        puVar1[3] = puVar1[-3];\n        puVar1[4] = puVar1[-2];\n        puVar1[5] = puVar1[-1];\n        puVar1 = puVar4;\n      } while( true );\n    }" { (labeled_statement "LAB_000b64e0:\n      local_30 = puVar6[1];" statement_identifier : (expression_statement "local_30 = puVar6[1];" (assignment_expression "local_30 = puVar6[1]" identifier = (subscript_expression "puVar6[1]" identifier [ number_literal ])) ;)) (expression_statement "local_34 = *puVar6;" (assignment_expression "local_34 = *puVar6" identifier = (pointer_expression "*puVar6" * identifier)) ;) (expression_statement "local_2c = puVar6[2];" (assignment_expression "local_2c = puVar6[2]" identifier = (subscript_expression "puVar6[2]" identifier [ number_literal ])) ;) (expression_statement "uVar2 = local_34 + 4;" (assignment_expression "uVar2 = local_34 + 4" identifier = (binary_expression "local_34 + 4" identifier + number_literal)) ;) (expression_statement "local_28 = puVar6[3];" (assignment_expression "local_28 = puVar6[3]" identifier = (subscript_expression "puVar6[3]" identifier [ number_literal ])) ;) (expression_statement "local_24 = puVar6[4];" (assignment_expression "local_24 = puVar6[4]" identifier = (subscript_expression "puVar6[4]" identifier [ number_literal ])) ;) (expression_statement "local_20 = puVar6[5];" (assignment_expression "local_20 = puVar6[5]" identifier = (subscript_expression "puVar6[5]" identifier [ number_literal ])) ;) (expression_statement "puVar1 = puVar6;" (assignment_expression "puVar1 = puVar6" identifier = identifier) ;) (do_statement "do {\n        puVar4 = puVar1 + -6;\n        if (uVar2 < 4) {\n          if (0xfffffffb < *puVar4) goto LAB_000b6489;\n        }\n        else {\n          iVar3 = FUN_002c6110(&local_34);\n          bVar5 = *(byte *)(iVar3 + 0x14c);\n          if (3 < *puVar4 + 4) {\n            iVar3 = FUN_002c6110(puVar4);\n            bVar5 = bVar5 & (*(byte *)(iVar3 + 0x14c) ^ 1);\n          }\n          if (bVar5 == 0) goto LAB_000b6489;\n          uVar2 = local_34 + 4;\n        }\n        *puVar1 = *puVar4;\n        puVar1[1] = puVar1[-5];\n        puVar1[2] = puVar1[-4];\n        puVar1[3] = puVar1[-3];\n        puVar1[4] = puVar1[-2];\n        puVar1[5] = puVar1[-1];\n        puVar1 = puVar4;\n      } while( true );" do (compound_statement "{\n        puVar4 = puVar1 + -6;\n        if (uVar2 < 4) {\n          if (0xfffffffb < *puVar4) goto LAB_000b6489;\n        }\n        else {\n          iVar3 = FUN_002c6110(&local_34);\n          bVar5 = *(byte *)(iVar3 + 0x14c);\n          if (3 < *puVar4 + 4) {\n            iVar3 = FUN_002c6110(puVar4);\n            bVar5 = bVar5 & (*(byte *)(iVar3 + 0x14c) ^ 1);\n          }\n          if (bVar5 == 0) goto LAB_000b6489;\n          uVar2 = local_34 + 4;\n        }\n        *puVar1 = *puVar4;\n        puVar1[1] = puVar1[-5];\n        puVar1[2] = puVar1[-4];\n        puVar1[3] = puVar1[-3];\n        puVar1[4] = puVar1[-2];\n        puVar1[5] = puVar1[-1];\n        puVar1 = puVar4;\n      }" { (expression_statement "puVar4 = puVar1 + -6;" (assignment_expression "puVar4 = puVar1 + -6" identifier = (binary_expression "puVar1 + -6" identifier + number_literal)) ;) (if_statement "if (uVar2 < 4) {\n          if (0xfffffffb < *puVar4) goto LAB_000b6489;\n        }\n        else {\n          iVar3 = FUN_002c6110(&local_34);\n          bVar5 = *(byte *)(iVar3 + 0x14c);\n          if (3 < *puVar4 + 4) {\n            iVar3 = FUN_002c6110(puVar4);\n            bVar5 = bVar5 & (*(byte *)(iVar3 + 0x14c) ^ 1);\n          }\n          if (bVar5 == 0) goto LAB_000b6489;\n          uVar2 = local_34 + 4;\n        }" if (parenthesized_expression "(uVar2 < 4)" ( (binary_expression "uVar2 < 4" identifier < number_literal) )) (compound_statement "{\n          if (0xfffffffb < *puVar4) goto LAB_000b6489;\n        }" { (if_statement "if (0xfffffffb < *puVar4) goto LAB_000b6489;" if (parenthesized_expression "(0xfffffffb < *puVar4)" ( (binary_expression "0xfffffffb < *puVar4" number_literal < (pointer_expression "*puVar4" * identifier)) )) (goto_statement "goto LAB_000b6489;" goto statement_identifier ;)) }) (else_clause "else {\n          iVar3 = FUN_002c6110(&local_34);\n          bVar5 = *(byte *)(iVar3 + 0x14c);\n          if (3 < *puVar4 + 4) {\n            iVar3 = FUN_002c6110(puVar4);\n            bVar5 = bVar5 & (*(byte *)(iVar3 + 0x14c) ^ 1);\n          }\n          if (bVar5 == 0) goto LAB_000b6489;\n          uVar2 = local_34 + 4;\n        }" else (compound_statement "{\n          iVar3 = FUN_002c6110(&local_34);\n          bVar5 = *(byte *)(iVar3 + 0x14c);\n          if (3 < *puVar4 + 4) {\n            iVar3 = FUN_002c6110(puVar4);\n            bVar5 = bVar5 & (*(byte *)(iVar3 + 0x14c) ^ 1);\n          }\n          if (bVar5 == 0) goto LAB_000b6489;\n          uVar2 = local_34 + 4;\n        }" { (expression_statement "iVar3 = FUN_002c6110(&local_34);" (assignment_expression "iVar3 = FUN_002c6110(&local_34)" identifier = (call_expression "FUN_002c6110(&local_34)" identifier (argument_list "(&local_34)" ( (pointer_expression "&local_34" & identifier) )))) ;) (expression_statement "bVar5 = *(byte *)(iVar3 + 0x14c);" (assignment_expression "bVar5 = *(byte *)(iVar3 + 0x14c)" identifier = (pointer_expression "*(byte *)(iVar3 + 0x14c)" * (cast_expression "(byte *)(iVar3 + 0x14c)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0x14c)" ( (binary_expression "iVar3 + 0x14c" identifier + number_literal) ))))) ;) (if_statement "if (3 < *puVar4 + 4) {\n            iVar3 = FUN_002c6110(puVar4);\n            bVar5 = bVar5 & (*(byte *)(iVar3 + 0x14c) ^ 1);\n          }" if (parenthesized_expression "(3 < *puVar4 + 4)" ( (binary_expression "3 < *puVar4 + 4" number_literal < (binary_expression "*puVar4 + 4" (pointer_expression "*puVar4" * identifier) + number_literal)) )) (compound_statement "{\n            iVar3 = FUN_002c6110(puVar4);\n            bVar5 = bVar5 & (*(byte *)(iVar3 + 0x14c) ^ 1);\n          }" { (expression_statement "iVar3 = FUN_002c6110(puVar4);" (assignment_expression "iVar3 = FUN_002c6110(puVar4)" identifier = (call_expression "FUN_002c6110(puVar4)" identifier (argument_list "(puVar4)" ( identifier )))) ;) (expression_statement "bVar5 = bVar5 & (*(byte *)(iVar3 + 0x14c) ^ 1);" (assignment_expression "bVar5 = bVar5 & (*(byte *)(iVar3 + 0x14c) ^ 1)" identifier = (binary_expression "bVar5 & (*(byte *)(iVar3 + 0x14c) ^ 1)" identifier & (parenthesized_expression "(*(byte *)(iVar3 + 0x14c) ^ 1)" ( (binary_expression "*(byte *)(iVar3 + 0x14c) ^ 1" (pointer_expression "*(byte *)(iVar3 + 0x14c)" * (cast_expression "(byte *)(iVar3 + 0x14c)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0x14c)" ( (binary_expression "iVar3 + 0x14c" identifier + number_literal) )))) ^ number_literal) )))) ;) })) (if_statement "if (bVar5 == 0) goto LAB_000b6489;" if (parenthesized_expression "(bVar5 == 0)" ( (binary_expression "bVar5 == 0" identifier == number_literal) )) (goto_statement "goto LAB_000b6489;" goto statement_identifier ;)) (expression_statement "uVar2 = local_34 + 4;" (assignment_expression "uVar2 = local_34 + 4" identifier = (binary_expression "local_34 + 4" identifier + number_literal)) ;) }))) (expression_statement "*puVar1 = *puVar4;" (assignment_expression "*puVar1 = *puVar4" (pointer_expression "*puVar1" * identifier) = (pointer_expression "*puVar4" * identifier)) ;) (expression_statement "puVar1[1] = puVar1[-5];" (assignment_expression "puVar1[1] = puVar1[-5]" (subscript_expression "puVar1[1]" identifier [ number_literal ]) = (subscript_expression "puVar1[-5]" identifier [ number_literal ])) ;) (expression_statement "puVar1[2] = puVar1[-4];" (assignment_expression "puVar1[2] = puVar1[-4]" (subscript_expression "puVar1[2]" identifier [ number_literal ]) = (subscript_expression "puVar1[-4]" identifier [ number_literal ])) ;) (expression_statement "puVar1[3] = puVar1[-3];" (assignment_expression "puVar1[3] = puVar1[-3]" (subscript_expression "puVar1[3]" identifier [ number_literal ]) = (subscript_expression "puVar1[-3]" identifier [ number_literal ])) ;) (expression_statement "puVar1[4] = puVar1[-2];" (assignment_expression "puVar1[4] = puVar1[-2]" (subscript_expression "puVar1[4]" identifier [ number_literal ]) = (subscript_expression "puVar1[-2]" identifier [ number_literal ])) ;) (expression_statement "puVar1[5] = puVar1[-1];" (assignment_expression "puVar1[5] = puVar1[-1]" (subscript_expression "puVar1[5]" identifier [ number_literal ]) = (subscript_expression "puVar1[-1]" identifier [ number_literal ])) ;) (expression_statement "puVar1 = puVar4;" (assignment_expression "puVar1 = puVar4" identifier = identifier) ;) }) while (parenthesized_expression "( true )" ( true )) ;) })))) (expression_statement "local_34 = *puVar6;" (assignment_expression "local_34 = *puVar6" identifier = (pointer_expression "*puVar6" * identifier)) ;) (expression_statement "puVar1 = puVar6 + 6;" (assignment_expression "puVar1 = puVar6 + 6" identifier = (binary_expression "puVar6 + 6" identifier + number_literal)) ;) (expression_statement "local_30 = puVar6[1];" (assignment_expression "local_30 = puVar6[1]" identifier = (subscript_expression "puVar6[1]" identifier [ number_literal ])) ;) (expression_statement "iVar3 = ((int)puVar6 - (int)param_1 >> 3) * -0x55555555;" (assignment_expression "iVar3 = ((int)puVar6 - (int)param_1 >> 3) * -0x55555555" identifier = (binary_expression "((int)puVar6 - (int)param_1 >> 3) * -0x55555555" (parenthesized_expression "((int)puVar6 - (int)param_1 >> 3)" ( (binary_expression "(int)puVar6 - (int)param_1 >> 3" (binary_expression "(int)puVar6 - (int)param_1" (cast_expression "(int)puVar6" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier)) >> number_literal) )) * number_literal)) ;) (expression_statement "local_2c = puVar6[2];" (assignment_expression "local_2c = puVar6[2]" identifier = (subscript_expression "puVar6[2]" identifier [ number_literal ])) ;) (expression_statement "local_28 = puVar6[3];" (assignment_expression "local_28 = puVar6[3]" identifier = (subscript_expression "puVar6[3]" identifier [ number_literal ])) ;) (expression_statement "local_24 = puVar6[4];" (assignment_expression "local_24 = puVar6[4]" identifier = (subscript_expression "puVar6[4]" identifier [ number_literal ])) ;) (expression_statement "local_20 = puVar6[5];" (assignment_expression "local_20 = puVar6[5]" identifier = (subscript_expression "puVar6[5]" identifier [ number_literal ])) ;) (expression_statement "puVar4 = puVar1;" (assignment_expression "puVar4 = puVar1" identifier = identifier) ;) (if_statement "if (0 < (int)puVar6 - (int)param_1) {\n      do {\n        puVar4[-6] = puVar4[-0xc];\n        puVar4[-5] = puVar4[-0xb];\n        puVar4[-4] = puVar4[-10];\n        puVar4[-3] = puVar4[-9];\n        puVar4[-2] = puVar4[-8];\n        puVar4[-1] = puVar4[-7];\n        iVar3 = iVar3 + -1;\n        puVar4 = puVar4 + -6;\n      } while (iVar3 != 0);\n    }" if (parenthesized_expression "(0 < (int)puVar6 - (int)param_1)" ( (binary_expression "0 < (int)puVar6 - (int)param_1" number_literal < (binary_expression "(int)puVar6 - (int)param_1" (cast_expression "(int)puVar6" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier))) )) (compound_statement "{\n      do {\n        puVar4[-6] = puVar4[-0xc];\n        puVar4[-5] = puVar4[-0xb];\n        puVar4[-4] = puVar4[-10];\n        puVar4[-3] = puVar4[-9];\n        puVar4[-2] = puVar4[-8];\n        puVar4[-1] = puVar4[-7];\n        iVar3 = iVar3 + -1;\n        puVar4 = puVar4 + -6;\n      } while (iVar3 != 0);\n    }" { (do_statement "do {\n        puVar4[-6] = puVar4[-0xc];\n        puVar4[-5] = puVar4[-0xb];\n        puVar4[-4] = puVar4[-10];\n        puVar4[-3] = puVar4[-9];\n        puVar4[-2] = puVar4[-8];\n        puVar4[-1] = puVar4[-7];\n        iVar3 = iVar3 + -1;\n        puVar4 = puVar4 + -6;\n      } while (iVar3 != 0);" do (compound_statement "{\n        puVar4[-6] = puVar4[-0xc];\n        puVar4[-5] = puVar4[-0xb];\n        puVar4[-4] = puVar4[-10];\n        puVar4[-3] = puVar4[-9];\n        puVar4[-2] = puVar4[-8];\n        puVar4[-1] = puVar4[-7];\n        iVar3 = iVar3 + -1;\n        puVar4 = puVar4 + -6;\n      }" { (expression_statement "puVar4[-6] = puVar4[-0xc];" (assignment_expression "puVar4[-6] = puVar4[-0xc]" (subscript_expression "puVar4[-6]" identifier [ number_literal ]) = (subscript_expression "puVar4[-0xc]" identifier [ number_literal ])) ;) (expression_statement "puVar4[-5] = puVar4[-0xb];" (assignment_expression "puVar4[-5] = puVar4[-0xb]" (subscript_expression "puVar4[-5]" identifier [ number_literal ]) = (subscript_expression "puVar4[-0xb]" identifier [ number_literal ])) ;) (expression_statement "puVar4[-4] = puVar4[-10];" (assignment_expression "puVar4[-4] = puVar4[-10]" (subscript_expression "puVar4[-4]" identifier [ number_literal ]) = (subscript_expression "puVar4[-10]" identifier [ number_literal ])) ;) (expression_statement "puVar4[-3] = puVar4[-9];" (assignment_expression "puVar4[-3] = puVar4[-9]" (subscript_expression "puVar4[-3]" identifier [ number_literal ]) = (subscript_expression "puVar4[-9]" identifier [ number_literal ])) ;) (expression_statement "puVar4[-2] = puVar4[-8];" (assignment_expression "puVar4[-2] = puVar4[-8]" (subscript_expression "puVar4[-2]" identifier [ number_literal ]) = (subscript_expression "puVar4[-8]" identifier [ number_literal ])) ;) (expression_statement "puVar4[-1] = puVar4[-7];" (assignment_expression "puVar4[-1] = puVar4[-7]" (subscript_expression "puVar4[-1]" identifier [ number_literal ]) = (subscript_expression "puVar4[-7]" identifier [ number_literal ])) ;) (expression_statement "iVar3 = iVar3 + -1;" (assignment_expression "iVar3 = iVar3 + -1" identifier = (binary_expression "iVar3 + -1" identifier + number_literal)) ;) (expression_statement "puVar4 = puVar4 + -6;" (assignment_expression "puVar4 = puVar4 + -6" identifier = (binary_expression "puVar4 + -6" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar3 != 0)" ( (binary_expression "iVar3 != 0" identifier != number_literal) )) ;) })) (expression_statement "*param_1 = local_34;" (assignment_expression "*param_1 = local_34" (pointer_expression "*param_1" * identifier) = identifier) ;) (expression_statement "param_1[1] = local_30;" (assignment_expression "param_1[1] = local_30" (subscript_expression "param_1[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_1[2] = local_2c;" (assignment_expression "param_1[2] = local_2c" (subscript_expression "param_1[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_1[3] = local_28;" (assignment_expression "param_1[3] = local_28" (subscript_expression "param_1[3]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_1[4] = local_24;" (assignment_expression "param_1[4] = local_24" (subscript_expression "param_1[4]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_1[5] = local_20;" (assignment_expression "param_1[5] = local_20" (subscript_expression "param_1[5]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar6 = puVar1;" (assignment_expression "puVar6 = puVar1" identifier = identifier) ;) (if_statement "if (param_2 == puVar1) {\n      return;\n    }" if (parenthesized_expression "(param_2 == puVar1)" ( (binary_expression "param_2 == puVar1" identifier == identifier) )) (compound_statement "{\n      return;\n    }" { (return_statement "return;" return ;) })) }) while (parenthesized_expression "( true )" ( true )) ;)) (labeled_statement "LAB_000b6489:\n  puVar6 = puVar6 + 6;" statement_identifier : (expression_statement "puVar6 = puVar6 + 6;" (assignment_expression "puVar6 = puVar6 + 6" identifier = (binary_expression "puVar6 + 6" identifier + number_literal)) ;)) (expression_statement "*puVar1 = local_34;" (assignment_expression "*puVar1 = local_34" (pointer_expression "*puVar1" * identifier) = identifier) ;) (expression_statement "puVar1[1] = local_30;" (assignment_expression "puVar1[1] = local_30" (subscript_expression "puVar1[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar1[2] = local_2c;" (assignment_expression "puVar1[2] = local_2c" (subscript_expression "puVar1[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar1[3] = local_28;" (assignment_expression "puVar1[3] = local_28" (subscript_expression "puVar1[3]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar1[4] = local_24;" (assignment_expression "puVar1[4] = local_24" (subscript_expression "puVar1[4]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar1[5] = local_20;" (assignment_expression "puVar1[5] = local_20" (subscript_expression "puVar1[5]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (param_2 == puVar6) {\n    return;\n  }" if (parenthesized_expression "(param_2 == puVar6)" ( (binary_expression "param_2 == puVar6" identifier == identifier) )) (compound_statement "{\n    return;\n  }" { (return_statement "return;" return ;) })) (goto_statement "goto LAB_000b64c1;" goto statement_identifier ;) })))
(translation_unit "/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n/* WARNING: Unknown calling convention -- yet parameter storage is locked */\n/* DWARF original name:\n   __insertion_sort<__gnu_cxx::__normal_iterator<gold::Output_section::Input_section*,\n   std::vector<gold::Output_section::Input_section> >, __gnu_cxx::__ops::_Iter_comp_iter<(anonymous\n   namespace)::Sort_toc_sections<true> > > */\n\nvoid std::\n     __insertion_sort<__gnu_cxx::__normal_iterator<gold::Output_section::Input_section*,_std::vector<gold::Output_section::Input_section>_>,___gnu_cxx::__ops::_Iter_comp_iter<(anonymous_namespace)::Sort_toc_sections<true>_>_>\n               (void)\n\n{\n  value_type __val;\n  \n}\n\n" comment comment comment (declaration "void std::\n     __insertion_sort<__gnu_cxx::__normal_iterator<gold::Output_section::Input_section*,_std::vector<gold::Output_section::Input_section>_>,___gnu_cxx::__ops::_Iter_comp_iter<(anonymous_namespace)::Sort_toc_sections<true>_>_>\n               (void)\n\n{\n  value_type __val;" primitive_type (ERROR "std::\n     __insertion_sort<__gnu_cxx::__normal_iterator<gold::Output_section::" identifier : : identifier < identifier : : identifier < identifier : : identifier : :) identifier (ERROR "*" *) , (ERROR "_std::vector<gold::Output_section::Input_section>" identifier : : identifier < identifier : : identifier : : identifier >) identifier (ERROR ">" >) , (ERROR "___gnu_cxx::__ops::_Iter_comp_iter<(anonymous_namespace)::Sort_toc_sections<true>_>_>\n               (void)\n\n{\n  value_type" identifier : : identifier : : identifier < ( identifier ) : : identifier < true > identifier > (function_declarator "_>\n               (void)" identifier (ERROR ">" >) (parameter_list "(void)" ( (parameter_declaration "void" primitive_type) ))) { identifier) identifier ;) (ERROR "}" }))
(translation_unit "void __regparm3 FUN_000b6440(uint *param_1,uint *param_2)\n\n{\n  uint *puVar1;\n  uint uVar2;\n  int iVar3;\n  uint *puVar4;\n  byte bVar5;\n  uint *puVar6;\n  uint local_34;\n  uint local_30;\n  uint local_2c;\n  uint local_28;\n  uint local_24;\n  uint local_20;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0xb6449;\n  if ((param_1 == param_2) || (param_2 == param_1 + 6)) {\n    return;\n  }\n  puVar6 = param_1 + 6;\nLAB_000b64c1:\n  do {\n    if (*puVar6 < 0xfffffffc) {\n      iVar3 = FUN_002c6110(puVar6);\n      bVar5 = *(byte *)(iVar3 + 0x14c);\n      if (3 < *param_1 + 4) {\n        iVar3 = FUN_002c6110(param_1);\n        bVar5 = bVar5 & (*(byte *)(iVar3 + 0x14c) ^ 1);\n      }\n      if (bVar5 == 0) goto LAB_000b64e0;\n    }\n    else if (*param_1 + 4 < 4) {\nLAB_000b64e0:\n      local_30 = puVar6[1];\n      local_34 = *puVar6;\n      local_2c = puVar6[2];\n      uVar2 = local_34 + 4;\n      local_28 = puVar6[3];\n      local_24 = puVar6[4];\n      local_20 = puVar6[5];\n      puVar1 = puVar6;\n      do {\n        puVar4 = puVar1 + -6;\n        if (uVar2 < 4) {\n          if (0xfffffffb < *puVar4) goto LAB_000b6489;\n        }\n        else {\n          iVar3 = FUN_002c6110(&local_34);\n          bVar5 = *(byte *)(iVar3 + 0x14c);\n          if (3 < *puVar4 + 4) {\n            iVar3 = FUN_002c6110(puVar4);\n            bVar5 = bVar5 & (*(byte *)(iVar3 + 0x14c) ^ 1);\n          }\n          if (bVar5 == 0) goto LAB_000b6489;\n          uVar2 = local_34 + 4;\n        }\n        *puVar1 = *puVar4;\n        puVar1[1] = puVar1[-5];\n        puVar1[2] = puVar1[-4];\n        puVar1[3] = puVar1[-3];\n        puVar1[4] = puVar1[-2];\n        puVar1[5] = puVar1[-1];\n        puVar1 = puVar4;\n      } while( true );\n    }\n    local_34 = *puVar6;\n    puVar1 = puVar6 + 6;\n    local_30 = puVar6[1];\n    iVar3 = ((int)puVar6 - (int)param_1 >> 3) * -0x55555555;\n    local_2c = puVar6[2];\n    local_28 = puVar6[3];\n    local_24 = puVar6[4];\n    local_20 = puVar6[5];\n    puVar4 = puVar1;\n    if (0 < (int)puVar6 - (int)param_1) {\n      do {\n        puVar4[-6] = puVar4[-0xc];\n        puVar4[-5] = puVar4[-0xb];\n        puVar4[-4] = puVar4[-10];\n        puVar4[-3] = puVar4[-9];\n        puVar4[-2] = puVar4[-8];\n        puVar4[-1] = puVar4[-7];\n        iVar3 = iVar3 + -1;\n        puVar4 = puVar4 + -6;\n      } while (iVar3 != 0);\n    }\n    *param_1 = local_34;\n    param_1[1] = local_30;\n    param_1[2] = local_2c;\n    param_1[3] = local_28;\n    param_1[4] = local_24;\n    param_1[5] = local_20;\n    puVar6 = puVar1;\n    if (param_2 == puVar1) {\n      return;\n    }\n  } while( true );\nLAB_000b6489:\n  puVar6 = puVar6 + 6;\n  *puVar1 = local_34;\n  puVar1[1] = local_30;\n  puVar1[2] = local_2c;\n  puVar1[3] = local_28;\n  puVar1[4] = local_24;\n  puVar1[5] = local_20;\n  if (param_2 == puVar6) {\n    return;\n  }\n  goto LAB_000b64c1;\n}\n\n" (function_definition "void __regparm3 FUN_000b6440(uint *param_1,uint *param_2)\n\n{\n  uint *puVar1;\n  uint uVar2;\n  int iVar3;\n  uint *puVar4;\n  byte bVar5;\n  uint *puVar6;\n  uint local_34;\n  uint local_30;\n  uint local_2c;\n  uint local_28;\n  uint local_24;\n  uint local_20;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0xb6449;\n  if ((param_1 == param_2) || (param_2 == param_1 + 6)) {\n    return;\n  }\n  puVar6 = param_1 + 6;\nLAB_000b64c1:\n  do {\n    if (*puVar6 < 0xfffffffc) {\n      iVar3 = FUN_002c6110(puVar6);\n      bVar5 = *(byte *)(iVar3 + 0x14c);\n      if (3 < *param_1 + 4) {\n        iVar3 = FUN_002c6110(param_1);\n        bVar5 = bVar5 & (*(byte *)(iVar3 + 0x14c) ^ 1);\n      }\n      if (bVar5 == 0) goto LAB_000b64e0;\n    }\n    else if (*param_1 + 4 < 4) {\nLAB_000b64e0:\n      local_30 = puVar6[1];\n      local_34 = *puVar6;\n      local_2c = puVar6[2];\n      uVar2 = local_34 + 4;\n      local_28 = puVar6[3];\n      local_24 = puVar6[4];\n      local_20 = puVar6[5];\n      puVar1 = puVar6;\n      do {\n        puVar4 = puVar1 + -6;\n        if (uVar2 < 4) {\n          if (0xfffffffb < *puVar4) goto LAB_000b6489;\n        }\n        else {\n          iVar3 = FUN_002c6110(&local_34);\n          bVar5 = *(byte *)(iVar3 + 0x14c);\n          if (3 < *puVar4 + 4) {\n            iVar3 = FUN_002c6110(puVar4);\n            bVar5 = bVar5 & (*(byte *)(iVar3 + 0x14c) ^ 1);\n          }\n          if (bVar5 == 0) goto LAB_000b6489;\n          uVar2 = local_34 + 4;\n        }\n        *puVar1 = *puVar4;\n        puVar1[1] = puVar1[-5];\n        puVar1[2] = puVar1[-4];\n        puVar1[3] = puVar1[-3];\n        puVar1[4] = puVar1[-2];\n        puVar1[5] = puVar1[-1];\n        puVar1 = puVar4;\n      } while( true );\n    }\n    local_34 = *puVar6;\n    puVar1 = puVar6 + 6;\n    local_30 = puVar6[1];\n    iVar3 = ((int)puVar6 - (int)param_1 >> 3) * -0x55555555;\n    local_2c = puVar6[2];\n    local_28 = puVar6[3];\n    local_24 = puVar6[4];\n    local_20 = puVar6[5];\n    puVar4 = puVar1;\n    if (0 < (int)puVar6 - (int)param_1) {\n      do {\n        puVar4[-6] = puVar4[-0xc];\n        puVar4[-5] = puVar4[-0xb];\n        puVar4[-4] = puVar4[-10];\n        puVar4[-3] = puVar4[-9];\n        puVar4[-2] = puVar4[-8];\n        puVar4[-1] = puVar4[-7];\n        iVar3 = iVar3 + -1;\n        puVar4 = puVar4 + -6;\n      } while (iVar3 != 0);\n    }\n    *param_1 = local_34;\n    param_1[1] = local_30;\n    param_1[2] = local_2c;\n    param_1[3] = local_28;\n    param_1[4] = local_24;\n    param_1[5] = local_20;\n    puVar6 = puVar1;\n    if (param_2 == puVar1) {\n      return;\n    }\n  } while( true );\nLAB_000b6489:\n  puVar6 = puVar6 + 6;\n  *puVar1 = local_34;\n  puVar1[1] = local_30;\n  puVar1[2] = local_2c;\n  puVar1[3] = local_28;\n  puVar1[4] = local_24;\n  puVar1[5] = local_20;\n  if (param_2 == puVar6) {\n    return;\n  }\n  goto LAB_000b64c1;\n}" primitive_type (ERROR "__regparm3" identifier) (function_declarator "FUN_000b6440(uint *param_1,uint *param_2)" identifier (parameter_list "(uint *param_1,uint *param_2)" ( (parameter_declaration "uint *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "uint *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) ))) (compound_statement "{\n  uint *puVar1;\n  uint uVar2;\n  int iVar3;\n  uint *puVar4;\n  byte bVar5;\n  uint *puVar6;\n  uint local_34;\n  uint local_30;\n  uint local_2c;\n  uint local_28;\n  uint local_24;\n  uint local_20;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0xb6449;\n  if ((param_1 == param_2) || (param_2 == param_1 + 6)) {\n    return;\n  }\n  puVar6 = param_1 + 6;\nLAB_000b64c1:\n  do {\n    if (*puVar6 < 0xfffffffc) {\n      iVar3 = FUN_002c6110(puVar6);\n      bVar5 = *(byte *)(iVar3 + 0x14c);\n      if (3 < *param_1 + 4) {\n        iVar3 = FUN_002c6110(param_1);\n        bVar5 = bVar5 & (*(byte *)(iVar3 + 0x14c) ^ 1);\n      }\n      if (bVar5 == 0) goto LAB_000b64e0;\n    }\n    else if (*param_1 + 4 < 4) {\nLAB_000b64e0:\n      local_30 = puVar6[1];\n      local_34 = *puVar6;\n      local_2c = puVar6[2];\n      uVar2 = local_34 + 4;\n      local_28 = puVar6[3];\n      local_24 = puVar6[4];\n      local_20 = puVar6[5];\n      puVar1 = puVar6;\n      do {\n        puVar4 = puVar1 + -6;\n        if (uVar2 < 4) {\n          if (0xfffffffb < *puVar4) goto LAB_000b6489;\n        }\n        else {\n          iVar3 = FUN_002c6110(&local_34);\n          bVar5 = *(byte *)(iVar3 + 0x14c);\n          if (3 < *puVar4 + 4) {\n            iVar3 = FUN_002c6110(puVar4);\n            bVar5 = bVar5 & (*(byte *)(iVar3 + 0x14c) ^ 1);\n          }\n          if (bVar5 == 0) goto LAB_000b6489;\n          uVar2 = local_34 + 4;\n        }\n        *puVar1 = *puVar4;\n        puVar1[1] = puVar1[-5];\n        puVar1[2] = puVar1[-4];\n        puVar1[3] = puVar1[-3];\n        puVar1[4] = puVar1[-2];\n        puVar1[5] = puVar1[-1];\n        puVar1 = puVar4;\n      } while( true );\n    }\n    local_34 = *puVar6;\n    puVar1 = puVar6 + 6;\n    local_30 = puVar6[1];\n    iVar3 = ((int)puVar6 - (int)param_1 >> 3) * -0x55555555;\n    local_2c = puVar6[2];\n    local_28 = puVar6[3];\n    local_24 = puVar6[4];\n    local_20 = puVar6[5];\n    puVar4 = puVar1;\n    if (0 < (int)puVar6 - (int)param_1) {\n      do {\n        puVar4[-6] = puVar4[-0xc];\n        puVar4[-5] = puVar4[-0xb];\n        puVar4[-4] = puVar4[-10];\n        puVar4[-3] = puVar4[-9];\n        puVar4[-2] = puVar4[-8];\n        puVar4[-1] = puVar4[-7];\n        iVar3 = iVar3 + -1;\n        puVar4 = puVar4 + -6;\n      } while (iVar3 != 0);\n    }\n    *param_1 = local_34;\n    param_1[1] = local_30;\n    param_1[2] = local_2c;\n    param_1[3] = local_28;\n    param_1[4] = local_24;\n    param_1[5] = local_20;\n    puVar6 = puVar1;\n    if (param_2 == puVar1) {\n      return;\n    }\n  } while( true );\nLAB_000b6489:\n  puVar6 = puVar6 + 6;\n  *puVar1 = local_34;\n  puVar1[1] = local_30;\n  puVar1[2] = local_2c;\n  puVar1[3] = local_28;\n  puVar1[4] = local_24;\n  puVar1[5] = local_20;\n  if (param_2 == puVar6) {\n    return;\n  }\n  goto LAB_000b64c1;\n}" { (declaration "uint *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "uint uVar2;" type_identifier identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "uint *puVar4;" type_identifier (pointer_declarator "*puVar4" * identifier) ;) (declaration "byte bVar5;" type_identifier identifier ;) (declaration "uint *puVar6;" type_identifier (pointer_declarator "*puVar6" * identifier) ;) (declaration "uint local_34;" type_identifier identifier ;) (declaration "uint local_30;" type_identifier identifier ;) (declaration "uint local_2c;" type_identifier identifier ;) (declaration "uint local_28;" type_identifier identifier ;) (declaration "uint local_24;" type_identifier identifier ;) (declaration "uint local_20;" type_identifier identifier ;) (declaration "undefined4 uStack_14;" type_identifier identifier ;) (expression_statement "uStack_14 = 0xb6449;" (assignment_expression "uStack_14 = 0xb6449" identifier = number_literal) ;) (if_statement "if ((param_1 == param_2) || (param_2 == param_1 + 6)) {\n    return;\n  }" if (parenthesized_expression "((param_1 == param_2) || (param_2 == param_1 + 6))" ( (binary_expression "(param_1 == param_2) || (param_2 == param_1 + 6)" (parenthesized_expression "(param_1 == param_2)" ( (binary_expression "param_1 == param_2" identifier == identifier) )) || (parenthesized_expression "(param_2 == param_1 + 6)" ( (binary_expression "param_2 == param_1 + 6" identifier == (binary_expression "param_1 + 6" identifier + number_literal)) ))) )) (compound_statement "{\n    return;\n  }" { (return_statement "return;" return ;) })) (expression_statement "puVar6 = param_1 + 6;" (assignment_expression "puVar6 = param_1 + 6" identifier = (binary_expression "param_1 + 6" identifier + number_literal)) ;) (labeled_statement "LAB_000b64c1:\n  do {\n    if (*puVar6 < 0xfffffffc) {\n      iVar3 = FUN_002c6110(puVar6);\n      bVar5 = *(byte *)(iVar3 + 0x14c);\n      if (3 < *param_1 + 4) {\n        iVar3 = FUN_002c6110(param_1);\n        bVar5 = bVar5 & (*(byte *)(iVar3 + 0x14c) ^ 1);\n      }\n      if (bVar5 == 0) goto LAB_000b64e0;\n    }\n    else if (*param_1 + 4 < 4) {\nLAB_000b64e0:\n      local_30 = puVar6[1];\n      local_34 = *puVar6;\n      local_2c = puVar6[2];\n      uVar2 = local_34 + 4;\n      local_28 = puVar6[3];\n      local_24 = puVar6[4];\n      local_20 = puVar6[5];\n      puVar1 = puVar6;\n      do {\n        puVar4 = puVar1 + -6;\n        if (uVar2 < 4) {\n          if (0xfffffffb < *puVar4) goto LAB_000b6489;\n        }\n        else {\n          iVar3 = FUN_002c6110(&local_34);\n          bVar5 = *(byte *)(iVar3 + 0x14c);\n          if (3 < *puVar4 + 4) {\n            iVar3 = FUN_002c6110(puVar4);\n            bVar5 = bVar5 & (*(byte *)(iVar3 + 0x14c) ^ 1);\n          }\n          if (bVar5 == 0) goto LAB_000b6489;\n          uVar2 = local_34 + 4;\n        }\n        *puVar1 = *puVar4;\n        puVar1[1] = puVar1[-5];\n        puVar1[2] = puVar1[-4];\n        puVar1[3] = puVar1[-3];\n        puVar1[4] = puVar1[-2];\n        puVar1[5] = puVar1[-1];\n        puVar1 = puVar4;\n      } while( true );\n    }\n    local_34 = *puVar6;\n    puVar1 = puVar6 + 6;\n    local_30 = puVar6[1];\n    iVar3 = ((int)puVar6 - (int)param_1 >> 3) * -0x55555555;\n    local_2c = puVar6[2];\n    local_28 = puVar6[3];\n    local_24 = puVar6[4];\n    local_20 = puVar6[5];\n    puVar4 = puVar1;\n    if (0 < (int)puVar6 - (int)param_1) {\n      do {\n        puVar4[-6] = puVar4[-0xc];\n        puVar4[-5] = puVar4[-0xb];\n        puVar4[-4] = puVar4[-10];\n        puVar4[-3] = puVar4[-9];\n        puVar4[-2] = puVar4[-8];\n        puVar4[-1] = puVar4[-7];\n        iVar3 = iVar3 + -1;\n        puVar4 = puVar4 + -6;\n      } while (iVar3 != 0);\n    }\n    *param_1 = local_34;\n    param_1[1] = local_30;\n    param_1[2] = local_2c;\n    param_1[3] = local_28;\n    param_1[4] = local_24;\n    param_1[5] = local_20;\n    puVar6 = puVar1;\n    if (param_2 == puVar1) {\n      return;\n    }\n  } while( true );" statement_identifier : (do_statement "do {\n    if (*puVar6 < 0xfffffffc) {\n      iVar3 = FUN_002c6110(puVar6);\n      bVar5 = *(byte *)(iVar3 + 0x14c);\n      if (3 < *param_1 + 4) {\n        iVar3 = FUN_002c6110(param_1);\n        bVar5 = bVar5 & (*(byte *)(iVar3 + 0x14c) ^ 1);\n      }\n      if (bVar5 == 0) goto LAB_000b64e0;\n    }\n    else if (*param_1 + 4 < 4) {\nLAB_000b64e0:\n      local_30 = puVar6[1];\n      local_34 = *puVar6;\n      local_2c = puVar6[2];\n      uVar2 = local_34 + 4;\n      local_28 = puVar6[3];\n      local_24 = puVar6[4];\n      local_20 = puVar6[5];\n      puVar1 = puVar6;\n      do {\n        puVar4 = puVar1 + -6;\n        if (uVar2 < 4) {\n          if (0xfffffffb < *puVar4) goto LAB_000b6489;\n        }\n        else {\n          iVar3 = FUN_002c6110(&local_34);\n          bVar5 = *(byte *)(iVar3 + 0x14c);\n          if (3 < *puVar4 + 4) {\n            iVar3 = FUN_002c6110(puVar4);\n            bVar5 = bVar5 & (*(byte *)(iVar3 + 0x14c) ^ 1);\n          }\n          if (bVar5 == 0) goto LAB_000b6489;\n          uVar2 = local_34 + 4;\n        }\n        *puVar1 = *puVar4;\n        puVar1[1] = puVar1[-5];\n        puVar1[2] = puVar1[-4];\n        puVar1[3] = puVar1[-3];\n        puVar1[4] = puVar1[-2];\n        puVar1[5] = puVar1[-1];\n        puVar1 = puVar4;\n      } while( true );\n    }\n    local_34 = *puVar6;\n    puVar1 = puVar6 + 6;\n    local_30 = puVar6[1];\n    iVar3 = ((int)puVar6 - (int)param_1 >> 3) * -0x55555555;\n    local_2c = puVar6[2];\n    local_28 = puVar6[3];\n    local_24 = puVar6[4];\n    local_20 = puVar6[5];\n    puVar4 = puVar1;\n    if (0 < (int)puVar6 - (int)param_1) {\n      do {\n        puVar4[-6] = puVar4[-0xc];\n        puVar4[-5] = puVar4[-0xb];\n        puVar4[-4] = puVar4[-10];\n        puVar4[-3] = puVar4[-9];\n        puVar4[-2] = puVar4[-8];\n        puVar4[-1] = puVar4[-7];\n        iVar3 = iVar3 + -1;\n        puVar4 = puVar4 + -6;\n      } while (iVar3 != 0);\n    }\n    *param_1 = local_34;\n    param_1[1] = local_30;\n    param_1[2] = local_2c;\n    param_1[3] = local_28;\n    param_1[4] = local_24;\n    param_1[5] = local_20;\n    puVar6 = puVar1;\n    if (param_2 == puVar1) {\n      return;\n    }\n  } while( true );" do (compound_statement "{\n    if (*puVar6 < 0xfffffffc) {\n      iVar3 = FUN_002c6110(puVar6);\n      bVar5 = *(byte *)(iVar3 + 0x14c);\n      if (3 < *param_1 + 4) {\n        iVar3 = FUN_002c6110(param_1);\n        bVar5 = bVar5 & (*(byte *)(iVar3 + 0x14c) ^ 1);\n      }\n      if (bVar5 == 0) goto LAB_000b64e0;\n    }\n    else if (*param_1 + 4 < 4) {\nLAB_000b64e0:\n      local_30 = puVar6[1];\n      local_34 = *puVar6;\n      local_2c = puVar6[2];\n      uVar2 = local_34 + 4;\n      local_28 = puVar6[3];\n      local_24 = puVar6[4];\n      local_20 = puVar6[5];\n      puVar1 = puVar6;\n      do {\n        puVar4 = puVar1 + -6;\n        if (uVar2 < 4) {\n          if (0xfffffffb < *puVar4) goto LAB_000b6489;\n        }\n        else {\n          iVar3 = FUN_002c6110(&local_34);\n          bVar5 = *(byte *)(iVar3 + 0x14c);\n          if (3 < *puVar4 + 4) {\n            iVar3 = FUN_002c6110(puVar4);\n            bVar5 = bVar5 & (*(byte *)(iVar3 + 0x14c) ^ 1);\n          }\n          if (bVar5 == 0) goto LAB_000b6489;\n          uVar2 = local_34 + 4;\n        }\n        *puVar1 = *puVar4;\n        puVar1[1] = puVar1[-5];\n        puVar1[2] = puVar1[-4];\n        puVar1[3] = puVar1[-3];\n        puVar1[4] = puVar1[-2];\n        puVar1[5] = puVar1[-1];\n        puVar1 = puVar4;\n      } while( true );\n    }\n    local_34 = *puVar6;\n    puVar1 = puVar6 + 6;\n    local_30 = puVar6[1];\n    iVar3 = ((int)puVar6 - (int)param_1 >> 3) * -0x55555555;\n    local_2c = puVar6[2];\n    local_28 = puVar6[3];\n    local_24 = puVar6[4];\n    local_20 = puVar6[5];\n    puVar4 = puVar1;\n    if (0 < (int)puVar6 - (int)param_1) {\n      do {\n        puVar4[-6] = puVar4[-0xc];\n        puVar4[-5] = puVar4[-0xb];\n        puVar4[-4] = puVar4[-10];\n        puVar4[-3] = puVar4[-9];\n        puVar4[-2] = puVar4[-8];\n        puVar4[-1] = puVar4[-7];\n        iVar3 = iVar3 + -1;\n        puVar4 = puVar4 + -6;\n      } while (iVar3 != 0);\n    }\n    *param_1 = local_34;\n    param_1[1] = local_30;\n    param_1[2] = local_2c;\n    param_1[3] = local_28;\n    param_1[4] = local_24;\n    param_1[5] = local_20;\n    puVar6 = puVar1;\n    if (param_2 == puVar1) {\n      return;\n    }\n  }" { (if_statement "if (*puVar6 < 0xfffffffc) {\n      iVar3 = FUN_002c6110(puVar6);\n      bVar5 = *(byte *)(iVar3 + 0x14c);\n      if (3 < *param_1 + 4) {\n        iVar3 = FUN_002c6110(param_1);\n        bVar5 = bVar5 & (*(byte *)(iVar3 + 0x14c) ^ 1);\n      }\n      if (bVar5 == 0) goto LAB_000b64e0;\n    }\n    else if (*param_1 + 4 < 4) {\nLAB_000b64e0:\n      local_30 = puVar6[1];\n      local_34 = *puVar6;\n      local_2c = puVar6[2];\n      uVar2 = local_34 + 4;\n      local_28 = puVar6[3];\n      local_24 = puVar6[4];\n      local_20 = puVar6[5];\n      puVar1 = puVar6;\n      do {\n        puVar4 = puVar1 + -6;\n        if (uVar2 < 4) {\n          if (0xfffffffb < *puVar4) goto LAB_000b6489;\n        }\n        else {\n          iVar3 = FUN_002c6110(&local_34);\n          bVar5 = *(byte *)(iVar3 + 0x14c);\n          if (3 < *puVar4 + 4) {\n            iVar3 = FUN_002c6110(puVar4);\n            bVar5 = bVar5 & (*(byte *)(iVar3 + 0x14c) ^ 1);\n          }\n          if (bVar5 == 0) goto LAB_000b6489;\n          uVar2 = local_34 + 4;\n        }\n        *puVar1 = *puVar4;\n        puVar1[1] = puVar1[-5];\n        puVar1[2] = puVar1[-4];\n        puVar1[3] = puVar1[-3];\n        puVar1[4] = puVar1[-2];\n        puVar1[5] = puVar1[-1];\n        puVar1 = puVar4;\n      } while( true );\n    }" if (parenthesized_expression "(*puVar6 < 0xfffffffc)" ( (binary_expression "*puVar6 < 0xfffffffc" (pointer_expression "*puVar6" * identifier) < number_literal) )) (compound_statement "{\n      iVar3 = FUN_002c6110(puVar6);\n      bVar5 = *(byte *)(iVar3 + 0x14c);\n      if (3 < *param_1 + 4) {\n        iVar3 = FUN_002c6110(param_1);\n        bVar5 = bVar5 & (*(byte *)(iVar3 + 0x14c) ^ 1);\n      }\n      if (bVar5 == 0) goto LAB_000b64e0;\n    }" { (expression_statement "iVar3 = FUN_002c6110(puVar6);" (assignment_expression "iVar3 = FUN_002c6110(puVar6)" identifier = (call_expression "FUN_002c6110(puVar6)" identifier (argument_list "(puVar6)" ( identifier )))) ;) (expression_statement "bVar5 = *(byte *)(iVar3 + 0x14c);" (assignment_expression "bVar5 = *(byte *)(iVar3 + 0x14c)" identifier = (pointer_expression "*(byte *)(iVar3 + 0x14c)" * (cast_expression "(byte *)(iVar3 + 0x14c)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0x14c)" ( (binary_expression "iVar3 + 0x14c" identifier + number_literal) ))))) ;) (if_statement "if (3 < *param_1 + 4) {\n        iVar3 = FUN_002c6110(param_1);\n        bVar5 = bVar5 & (*(byte *)(iVar3 + 0x14c) ^ 1);\n      }" if (parenthesized_expression "(3 < *param_1 + 4)" ( (binary_expression "3 < *param_1 + 4" number_literal < (binary_expression "*param_1 + 4" (pointer_expression "*param_1" * identifier) + number_literal)) )) (compound_statement "{\n        iVar3 = FUN_002c6110(param_1);\n        bVar5 = bVar5 & (*(byte *)(iVar3 + 0x14c) ^ 1);\n      }" { (expression_statement "iVar3 = FUN_002c6110(param_1);" (assignment_expression "iVar3 = FUN_002c6110(param_1)" identifier = (call_expression "FUN_002c6110(param_1)" identifier (argument_list "(param_1)" ( identifier )))) ;) (expression_statement "bVar5 = bVar5 & (*(byte *)(iVar3 + 0x14c) ^ 1);" (assignment_expression "bVar5 = bVar5 & (*(byte *)(iVar3 + 0x14c) ^ 1)" identifier = (binary_expression "bVar5 & (*(byte *)(iVar3 + 0x14c) ^ 1)" identifier & (parenthesized_expression "(*(byte *)(iVar3 + 0x14c) ^ 1)" ( (binary_expression "*(byte *)(iVar3 + 0x14c) ^ 1" (pointer_expression "*(byte *)(iVar3 + 0x14c)" * (cast_expression "(byte *)(iVar3 + 0x14c)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0x14c)" ( (binary_expression "iVar3 + 0x14c" identifier + number_literal) )))) ^ number_literal) )))) ;) })) (if_statement "if (bVar5 == 0) goto LAB_000b64e0;" if (parenthesized_expression "(bVar5 == 0)" ( (binary_expression "bVar5 == 0" identifier == number_literal) )) (goto_statement "goto LAB_000b64e0;" goto statement_identifier ;)) }) (else_clause "else if (*param_1 + 4 < 4) {\nLAB_000b64e0:\n      local_30 = puVar6[1];\n      local_34 = *puVar6;\n      local_2c = puVar6[2];\n      uVar2 = local_34 + 4;\n      local_28 = puVar6[3];\n      local_24 = puVar6[4];\n      local_20 = puVar6[5];\n      puVar1 = puVar6;\n      do {\n        puVar4 = puVar1 + -6;\n        if (uVar2 < 4) {\n          if (0xfffffffb < *puVar4) goto LAB_000b6489;\n        }\n        else {\n          iVar3 = FUN_002c6110(&local_34);\n          bVar5 = *(byte *)(iVar3 + 0x14c);\n          if (3 < *puVar4 + 4) {\n            iVar3 = FUN_002c6110(puVar4);\n            bVar5 = bVar5 & (*(byte *)(iVar3 + 0x14c) ^ 1);\n          }\n          if (bVar5 == 0) goto LAB_000b6489;\n          uVar2 = local_34 + 4;\n        }\n        *puVar1 = *puVar4;\n        puVar1[1] = puVar1[-5];\n        puVar1[2] = puVar1[-4];\n        puVar1[3] = puVar1[-3];\n        puVar1[4] = puVar1[-2];\n        puVar1[5] = puVar1[-1];\n        puVar1 = puVar4;\n      } while( true );\n    }" else (if_statement "if (*param_1 + 4 < 4) {\nLAB_000b64e0:\n      local_30 = puVar6[1];\n      local_34 = *puVar6;\n      local_2c = puVar6[2];\n      uVar2 = local_34 + 4;\n      local_28 = puVar6[3];\n      local_24 = puVar6[4];\n      local_20 = puVar6[5];\n      puVar1 = puVar6;\n      do {\n        puVar4 = puVar1 + -6;\n        if (uVar2 < 4) {\n          if (0xfffffffb < *puVar4) goto LAB_000b6489;\n        }\n        else {\n          iVar3 = FUN_002c6110(&local_34);\n          bVar5 = *(byte *)(iVar3 + 0x14c);\n          if (3 < *puVar4 + 4) {\n            iVar3 = FUN_002c6110(puVar4);\n            bVar5 = bVar5 & (*(byte *)(iVar3 + 0x14c) ^ 1);\n          }\n          if (bVar5 == 0) goto LAB_000b6489;\n          uVar2 = local_34 + 4;\n        }\n        *puVar1 = *puVar4;\n        puVar1[1] = puVar1[-5];\n        puVar1[2] = puVar1[-4];\n        puVar1[3] = puVar1[-3];\n        puVar1[4] = puVar1[-2];\n        puVar1[5] = puVar1[-1];\n        puVar1 = puVar4;\n      } while( true );\n    }" if (parenthesized_expression "(*param_1 + 4 < 4)" ( (binary_expression "*param_1 + 4 < 4" (binary_expression "*param_1 + 4" (pointer_expression "*param_1" * identifier) + number_literal) < number_literal) )) (compound_statement "{\nLAB_000b64e0:\n      local_30 = puVar6[1];\n      local_34 = *puVar6;\n      local_2c = puVar6[2];\n      uVar2 = local_34 + 4;\n      local_28 = puVar6[3];\n      local_24 = puVar6[4];\n      local_20 = puVar6[5];\n      puVar1 = puVar6;\n      do {\n        puVar4 = puVar1 + -6;\n        if (uVar2 < 4) {\n          if (0xfffffffb < *puVar4) goto LAB_000b6489;\n        }\n        else {\n          iVar3 = FUN_002c6110(&local_34);\n          bVar5 = *(byte *)(iVar3 + 0x14c);\n          if (3 < *puVar4 + 4) {\n            iVar3 = FUN_002c6110(puVar4);\n            bVar5 = bVar5 & (*(byte *)(iVar3 + 0x14c) ^ 1);\n          }\n          if (bVar5 == 0) goto LAB_000b6489;\n          uVar2 = local_34 + 4;\n        }\n        *puVar1 = *puVar4;\n        puVar1[1] = puVar1[-5];\n        puVar1[2] = puVar1[-4];\n        puVar1[3] = puVar1[-3];\n        puVar1[4] = puVar1[-2];\n        puVar1[5] = puVar1[-1];\n        puVar1 = puVar4;\n      } while( true );\n    }" { (labeled_statement "LAB_000b64e0:\n      local_30 = puVar6[1];" statement_identifier : (expression_statement "local_30 = puVar6[1];" (assignment_expression "local_30 = puVar6[1]" identifier = (subscript_expression "puVar6[1]" identifier [ number_literal ])) ;)) (expression_statement "local_34 = *puVar6;" (assignment_expression "local_34 = *puVar6" identifier = (pointer_expression "*puVar6" * identifier)) ;) (expression_statement "local_2c = puVar6[2];" (assignment_expression "local_2c = puVar6[2]" identifier = (subscript_expression "puVar6[2]" identifier [ number_literal ])) ;) (expression_statement "uVar2 = local_34 + 4;" (assignment_expression "uVar2 = local_34 + 4" identifier = (binary_expression "local_34 + 4" identifier + number_literal)) ;) (expression_statement "local_28 = puVar6[3];" (assignment_expression "local_28 = puVar6[3]" identifier = (subscript_expression "puVar6[3]" identifier [ number_literal ])) ;) (expression_statement "local_24 = puVar6[4];" (assignment_expression "local_24 = puVar6[4]" identifier = (subscript_expression "puVar6[4]" identifier [ number_literal ])) ;) (expression_statement "local_20 = puVar6[5];" (assignment_expression "local_20 = puVar6[5]" identifier = (subscript_expression "puVar6[5]" identifier [ number_literal ])) ;) (expression_statement "puVar1 = puVar6;" (assignment_expression "puVar1 = puVar6" identifier = identifier) ;) (do_statement "do {\n        puVar4 = puVar1 + -6;\n        if (uVar2 < 4) {\n          if (0xfffffffb < *puVar4) goto LAB_000b6489;\n        }\n        else {\n          iVar3 = FUN_002c6110(&local_34);\n          bVar5 = *(byte *)(iVar3 + 0x14c);\n          if (3 < *puVar4 + 4) {\n            iVar3 = FUN_002c6110(puVar4);\n            bVar5 = bVar5 & (*(byte *)(iVar3 + 0x14c) ^ 1);\n          }\n          if (bVar5 == 0) goto LAB_000b6489;\n          uVar2 = local_34 + 4;\n        }\n        *puVar1 = *puVar4;\n        puVar1[1] = puVar1[-5];\n        puVar1[2] = puVar1[-4];\n        puVar1[3] = puVar1[-3];\n        puVar1[4] = puVar1[-2];\n        puVar1[5] = puVar1[-1];\n        puVar1 = puVar4;\n      } while( true );" do (compound_statement "{\n        puVar4 = puVar1 + -6;\n        if (uVar2 < 4) {\n          if (0xfffffffb < *puVar4) goto LAB_000b6489;\n        }\n        else {\n          iVar3 = FUN_002c6110(&local_34);\n          bVar5 = *(byte *)(iVar3 + 0x14c);\n          if (3 < *puVar4 + 4) {\n            iVar3 = FUN_002c6110(puVar4);\n            bVar5 = bVar5 & (*(byte *)(iVar3 + 0x14c) ^ 1);\n          }\n          if (bVar5 == 0) goto LAB_000b6489;\n          uVar2 = local_34 + 4;\n        }\n        *puVar1 = *puVar4;\n        puVar1[1] = puVar1[-5];\n        puVar1[2] = puVar1[-4];\n        puVar1[3] = puVar1[-3];\n        puVar1[4] = puVar1[-2];\n        puVar1[5] = puVar1[-1];\n        puVar1 = puVar4;\n      }" { (expression_statement "puVar4 = puVar1 + -6;" (assignment_expression "puVar4 = puVar1 + -6" identifier = (binary_expression "puVar1 + -6" identifier + number_literal)) ;) (if_statement "if (uVar2 < 4) {\n          if (0xfffffffb < *puVar4) goto LAB_000b6489;\n        }\n        else {\n          iVar3 = FUN_002c6110(&local_34);\n          bVar5 = *(byte *)(iVar3 + 0x14c);\n          if (3 < *puVar4 + 4) {\n            iVar3 = FUN_002c6110(puVar4);\n            bVar5 = bVar5 & (*(byte *)(iVar3 + 0x14c) ^ 1);\n          }\n          if (bVar5 == 0) goto LAB_000b6489;\n          uVar2 = local_34 + 4;\n        }" if (parenthesized_expression "(uVar2 < 4)" ( (binary_expression "uVar2 < 4" identifier < number_literal) )) (compound_statement "{\n          if (0xfffffffb < *puVar4) goto LAB_000b6489;\n        }" { (if_statement "if (0xfffffffb < *puVar4) goto LAB_000b6489;" if (parenthesized_expression "(0xfffffffb < *puVar4)" ( (binary_expression "0xfffffffb < *puVar4" number_literal < (pointer_expression "*puVar4" * identifier)) )) (goto_statement "goto LAB_000b6489;" goto statement_identifier ;)) }) (else_clause "else {\n          iVar3 = FUN_002c6110(&local_34);\n          bVar5 = *(byte *)(iVar3 + 0x14c);\n          if (3 < *puVar4 + 4) {\n            iVar3 = FUN_002c6110(puVar4);\n            bVar5 = bVar5 & (*(byte *)(iVar3 + 0x14c) ^ 1);\n          }\n          if (bVar5 == 0) goto LAB_000b6489;\n          uVar2 = local_34 + 4;\n        }" else (compound_statement "{\n          iVar3 = FUN_002c6110(&local_34);\n          bVar5 = *(byte *)(iVar3 + 0x14c);\n          if (3 < *puVar4 + 4) {\n            iVar3 = FUN_002c6110(puVar4);\n            bVar5 = bVar5 & (*(byte *)(iVar3 + 0x14c) ^ 1);\n          }\n          if (bVar5 == 0) goto LAB_000b6489;\n          uVar2 = local_34 + 4;\n        }" { (expression_statement "iVar3 = FUN_002c6110(&local_34);" (assignment_expression "iVar3 = FUN_002c6110(&local_34)" identifier = (call_expression "FUN_002c6110(&local_34)" identifier (argument_list "(&local_34)" ( (pointer_expression "&local_34" & identifier) )))) ;) (expression_statement "bVar5 = *(byte *)(iVar3 + 0x14c);" (assignment_expression "bVar5 = *(byte *)(iVar3 + 0x14c)" identifier = (pointer_expression "*(byte *)(iVar3 + 0x14c)" * (cast_expression "(byte *)(iVar3 + 0x14c)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0x14c)" ( (binary_expression "iVar3 + 0x14c" identifier + number_literal) ))))) ;) (if_statement "if (3 < *puVar4 + 4) {\n            iVar3 = FUN_002c6110(puVar4);\n            bVar5 = bVar5 & (*(byte *)(iVar3 + 0x14c) ^ 1);\n          }" if (parenthesized_expression "(3 < *puVar4 + 4)" ( (binary_expression "3 < *puVar4 + 4" number_literal < (binary_expression "*puVar4 + 4" (pointer_expression "*puVar4" * identifier) + number_literal)) )) (compound_statement "{\n            iVar3 = FUN_002c6110(puVar4);\n            bVar5 = bVar5 & (*(byte *)(iVar3 + 0x14c) ^ 1);\n          }" { (expression_statement "iVar3 = FUN_002c6110(puVar4);" (assignment_expression "iVar3 = FUN_002c6110(puVar4)" identifier = (call_expression "FUN_002c6110(puVar4)" identifier (argument_list "(puVar4)" ( identifier )))) ;) (expression_statement "bVar5 = bVar5 & (*(byte *)(iVar3 + 0x14c) ^ 1);" (assignment_expression "bVar5 = bVar5 & (*(byte *)(iVar3 + 0x14c) ^ 1)" identifier = (binary_expression "bVar5 & (*(byte *)(iVar3 + 0x14c) ^ 1)" identifier & (parenthesized_expression "(*(byte *)(iVar3 + 0x14c) ^ 1)" ( (binary_expression "*(byte *)(iVar3 + 0x14c) ^ 1" (pointer_expression "*(byte *)(iVar3 + 0x14c)" * (cast_expression "(byte *)(iVar3 + 0x14c)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0x14c)" ( (binary_expression "iVar3 + 0x14c" identifier + number_literal) )))) ^ number_literal) )))) ;) })) (if_statement "if (bVar5 == 0) goto LAB_000b6489;" if (parenthesized_expression "(bVar5 == 0)" ( (binary_expression "bVar5 == 0" identifier == number_literal) )) (goto_statement "goto LAB_000b6489;" goto statement_identifier ;)) (expression_statement "uVar2 = local_34 + 4;" (assignment_expression "uVar2 = local_34 + 4" identifier = (binary_expression "local_34 + 4" identifier + number_literal)) ;) }))) (expression_statement "*puVar1 = *puVar4;" (assignment_expression "*puVar1 = *puVar4" (pointer_expression "*puVar1" * identifier) = (pointer_expression "*puVar4" * identifier)) ;) (expression_statement "puVar1[1] = puVar1[-5];" (assignment_expression "puVar1[1] = puVar1[-5]" (subscript_expression "puVar1[1]" identifier [ number_literal ]) = (subscript_expression "puVar1[-5]" identifier [ number_literal ])) ;) (expression_statement "puVar1[2] = puVar1[-4];" (assignment_expression "puVar1[2] = puVar1[-4]" (subscript_expression "puVar1[2]" identifier [ number_literal ]) = (subscript_expression "puVar1[-4]" identifier [ number_literal ])) ;) (expression_statement "puVar1[3] = puVar1[-3];" (assignment_expression "puVar1[3] = puVar1[-3]" (subscript_expression "puVar1[3]" identifier [ number_literal ]) = (subscript_expression "puVar1[-3]" identifier [ number_literal ])) ;) (expression_statement "puVar1[4] = puVar1[-2];" (assignment_expression "puVar1[4] = puVar1[-2]" (subscript_expression "puVar1[4]" identifier [ number_literal ]) = (subscript_expression "puVar1[-2]" identifier [ number_literal ])) ;) (expression_statement "puVar1[5] = puVar1[-1];" (assignment_expression "puVar1[5] = puVar1[-1]" (subscript_expression "puVar1[5]" identifier [ number_literal ]) = (subscript_expression "puVar1[-1]" identifier [ number_literal ])) ;) (expression_statement "puVar1 = puVar4;" (assignment_expression "puVar1 = puVar4" identifier = identifier) ;) }) while (parenthesized_expression "( true )" ( true )) ;) })))) (expression_statement "local_34 = *puVar6;" (assignment_expression "local_34 = *puVar6" identifier = (pointer_expression "*puVar6" * identifier)) ;) (expression_statement "puVar1 = puVar6 + 6;" (assignment_expression "puVar1 = puVar6 + 6" identifier = (binary_expression "puVar6 + 6" identifier + number_literal)) ;) (expression_statement "local_30 = puVar6[1];" (assignment_expression "local_30 = puVar6[1]" identifier = (subscript_expression "puVar6[1]" identifier [ number_literal ])) ;) (expression_statement "iVar3 = ((int)puVar6 - (int)param_1 >> 3) * -0x55555555;" (assignment_expression "iVar3 = ((int)puVar6 - (int)param_1 >> 3) * -0x55555555" identifier = (binary_expression "((int)puVar6 - (int)param_1 >> 3) * -0x55555555" (parenthesized_expression "((int)puVar6 - (int)param_1 >> 3)" ( (binary_expression "(int)puVar6 - (int)param_1 >> 3" (binary_expression "(int)puVar6 - (int)param_1" (cast_expression "(int)puVar6" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier)) >> number_literal) )) * number_literal)) ;) (expression_statement "local_2c = puVar6[2];" (assignment_expression "local_2c = puVar6[2]" identifier = (subscript_expression "puVar6[2]" identifier [ number_literal ])) ;) (expression_statement "local_28 = puVar6[3];" (assignment_expression "local_28 = puVar6[3]" identifier = (subscript_expression "puVar6[3]" identifier [ number_literal ])) ;) (expression_statement "local_24 = puVar6[4];" (assignment_expression "local_24 = puVar6[4]" identifier = (subscript_expression "puVar6[4]" identifier [ number_literal ])) ;) (expression_statement "local_20 = puVar6[5];" (assignment_expression "local_20 = puVar6[5]" identifier = (subscript_expression "puVar6[5]" identifier [ number_literal ])) ;) (expression_statement "puVar4 = puVar1;" (assignment_expression "puVar4 = puVar1" identifier = identifier) ;) (if_statement "if (0 < (int)puVar6 - (int)param_1) {\n      do {\n        puVar4[-6] = puVar4[-0xc];\n        puVar4[-5] = puVar4[-0xb];\n        puVar4[-4] = puVar4[-10];\n        puVar4[-3] = puVar4[-9];\n        puVar4[-2] = puVar4[-8];\n        puVar4[-1] = puVar4[-7];\n        iVar3 = iVar3 + -1;\n        puVar4 = puVar4 + -6;\n      } while (iVar3 != 0);\n    }" if (parenthesized_expression "(0 < (int)puVar6 - (int)param_1)" ( (binary_expression "0 < (int)puVar6 - (int)param_1" number_literal < (binary_expression "(int)puVar6 - (int)param_1" (cast_expression "(int)puVar6" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier))) )) (compound_statement "{\n      do {\n        puVar4[-6] = puVar4[-0xc];\n        puVar4[-5] = puVar4[-0xb];\n        puVar4[-4] = puVar4[-10];\n        puVar4[-3] = puVar4[-9];\n        puVar4[-2] = puVar4[-8];\n        puVar4[-1] = puVar4[-7];\n        iVar3 = iVar3 + -1;\n        puVar4 = puVar4 + -6;\n      } while (iVar3 != 0);\n    }" { (do_statement "do {\n        puVar4[-6] = puVar4[-0xc];\n        puVar4[-5] = puVar4[-0xb];\n        puVar4[-4] = puVar4[-10];\n        puVar4[-3] = puVar4[-9];\n        puVar4[-2] = puVar4[-8];\n        puVar4[-1] = puVar4[-7];\n        iVar3 = iVar3 + -1;\n        puVar4 = puVar4 + -6;\n      } while (iVar3 != 0);" do (compound_statement "{\n        puVar4[-6] = puVar4[-0xc];\n        puVar4[-5] = puVar4[-0xb];\n        puVar4[-4] = puVar4[-10];\n        puVar4[-3] = puVar4[-9];\n        puVar4[-2] = puVar4[-8];\n        puVar4[-1] = puVar4[-7];\n        iVar3 = iVar3 + -1;\n        puVar4 = puVar4 + -6;\n      }" { (expression_statement "puVar4[-6] = puVar4[-0xc];" (assignment_expression "puVar4[-6] = puVar4[-0xc]" (subscript_expression "puVar4[-6]" identifier [ number_literal ]) = (subscript_expression "puVar4[-0xc]" identifier [ number_literal ])) ;) (expression_statement "puVar4[-5] = puVar4[-0xb];" (assignment_expression "puVar4[-5] = puVar4[-0xb]" (subscript_expression "puVar4[-5]" identifier [ number_literal ]) = (subscript_expression "puVar4[-0xb]" identifier [ number_literal ])) ;) (expression_statement "puVar4[-4] = puVar4[-10];" (assignment_expression "puVar4[-4] = puVar4[-10]" (subscript_expression "puVar4[-4]" identifier [ number_literal ]) = (subscript_expression "puVar4[-10]" identifier [ number_literal ])) ;) (expression_statement "puVar4[-3] = puVar4[-9];" (assignment_expression "puVar4[-3] = puVar4[-9]" (subscript_expression "puVar4[-3]" identifier [ number_literal ]) = (subscript_expression "puVar4[-9]" identifier [ number_literal ])) ;) (expression_statement "puVar4[-2] = puVar4[-8];" (assignment_expression "puVar4[-2] = puVar4[-8]" (subscript_expression "puVar4[-2]" identifier [ number_literal ]) = (subscript_expression "puVar4[-8]" identifier [ number_literal ])) ;) (expression_statement "puVar4[-1] = puVar4[-7];" (assignment_expression "puVar4[-1] = puVar4[-7]" (subscript_expression "puVar4[-1]" identifier [ number_literal ]) = (subscript_expression "puVar4[-7]" identifier [ number_literal ])) ;) (expression_statement "iVar3 = iVar3 + -1;" (assignment_expression "iVar3 = iVar3 + -1" identifier = (binary_expression "iVar3 + -1" identifier + number_literal)) ;) (expression_statement "puVar4 = puVar4 + -6;" (assignment_expression "puVar4 = puVar4 + -6" identifier = (binary_expression "puVar4 + -6" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar3 != 0)" ( (binary_expression "iVar3 != 0" identifier != number_literal) )) ;) })) (expression_statement "*param_1 = local_34;" (assignment_expression "*param_1 = local_34" (pointer_expression "*param_1" * identifier) = identifier) ;) (expression_statement "param_1[1] = local_30;" (assignment_expression "param_1[1] = local_30" (subscript_expression "param_1[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_1[2] = local_2c;" (assignment_expression "param_1[2] = local_2c" (subscript_expression "param_1[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_1[3] = local_28;" (assignment_expression "param_1[3] = local_28" (subscript_expression "param_1[3]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_1[4] = local_24;" (assignment_expression "param_1[4] = local_24" (subscript_expression "param_1[4]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_1[5] = local_20;" (assignment_expression "param_1[5] = local_20" (subscript_expression "param_1[5]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar6 = puVar1;" (assignment_expression "puVar6 = puVar1" identifier = identifier) ;) (if_statement "if (param_2 == puVar1) {\n      return;\n    }" if (parenthesized_expression "(param_2 == puVar1)" ( (binary_expression "param_2 == puVar1" identifier == identifier) )) (compound_statement "{\n      return;\n    }" { (return_statement "return;" return ;) })) }) while (parenthesized_expression "( true )" ( true )) ;)) (labeled_statement "LAB_000b6489:\n  puVar6 = puVar6 + 6;" statement_identifier : (expression_statement "puVar6 = puVar6 + 6;" (assignment_expression "puVar6 = puVar6 + 6" identifier = (binary_expression "puVar6 + 6" identifier + number_literal)) ;)) (expression_statement "*puVar1 = local_34;" (assignment_expression "*puVar1 = local_34" (pointer_expression "*puVar1" * identifier) = identifier) ;) (expression_statement "puVar1[1] = local_30;" (assignment_expression "puVar1[1] = local_30" (subscript_expression "puVar1[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar1[2] = local_2c;" (assignment_expression "puVar1[2] = local_2c" (subscript_expression "puVar1[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar1[3] = local_28;" (assignment_expression "puVar1[3] = local_28" (subscript_expression "puVar1[3]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar1[4] = local_24;" (assignment_expression "puVar1[4] = local_24" (subscript_expression "puVar1[4]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar1[5] = local_20;" (assignment_expression "puVar1[5] = local_20" (subscript_expression "puVar1[5]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (param_2 == puVar6) {\n    return;\n  }" if (parenthesized_expression "(param_2 == puVar6)" ( (binary_expression "param_2 == puVar6" identifier == identifier) )) (compound_statement "{\n    return;\n  }" { (return_statement "return;" return ;) })) (goto_statement "goto LAB_000b64c1;" goto statement_identifier ;) })))
(translation_unit (function_definition TYPE (ERROR IDENT) (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE (pointer_declarator * IDENT)) ))) (compound_statement { (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == IDENT) )) || (parenthesized_expression ( (binary_expression IDENT == (binary_expression IDENT + LIT)) ))) )) (compound_statement { (return_statement return ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (labeled_statement statement_identifier : (do_statement do (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( 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 LIT < (binary_expression (pointer_expression * IDENT) + LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT & (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ^ LIT) )))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (goto_statement goto statement_identifier ;)) }) (else_clause else (if_statement if (parenthesized_expression ( (binary_expression (binary_expression (pointer_expression * IDENT) + LIT) < LIT) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;)) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression LIT < (pointer_expression * IDENT)) )) (goto_statement goto statement_identifier ;)) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (pointer_expression & 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 LIT < (binary_expression (pointer_expression * IDENT) + LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT & (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ^ LIT) )))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }))) (expression_statement (assignment_expression (pointer_expression * IDENT) = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) while (parenthesized_expression ( BOOL )) ;) })))) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) - (cast_expression ( (type_descriptor TYPE) ) IDENT)) >> LIT) )) * LIT)) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) - (cast_expression ( (type_descriptor TYPE) ) IDENT))) )) (compound_statement { (do_statement do (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT != LIT) )) ;) })) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (compound_statement { (return_statement return ;) })) }) while (parenthesized_expression ( BOOL )) ;)) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;)) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (compound_statement { (return_statement return ;) })) (goto_statement goto statement_identifier ;) })))
(function_definition "void __regparm3 FUN_000b6440(uint *param_1,uint *param_2)\n\n{\n  uint *puVar1;\n  uint uVar2;\n  int iVar3;\n  uint *puVar4;\n  byte bVar5;\n  uint *puVar6;\n  uint local_34;\n  uint local_30;\n  uint local_2c;\n  uint local_28;\n  uint local_24;\n  uint local_20;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0xb6449;\n  if ((param_1 == param_2) || (param_2 == param_1 + 6)) {\n    return;\n  }\n  puVar6 = param_1 + 6;\nLAB_000b64c1:\n  do {\n    if (*puVar6 < 0xfffffffc) {\n      iVar3 = FUN_002c6110(puVar6);\n      bVar5 = *(byte *)(iVar3 + 0x14c);\n      if (3 < *param_1 + 4) {\n        iVar3 = FUN_002c6110(param_1);\n        bVar5 = bVar5 & (*(byte *)(iVar3 + 0x14c) ^ 1);\n      }\n      if (bVar5 == 0) goto LAB_000b64e0;\n    }\n    else if (*param_1 + 4 < 4) {\nLAB_000b64e0:\n      local_30 = puVar6[1];\n      local_34 = *puVar6;\n      local_2c = puVar6[2];\n      uVar2 = local_34 + 4;\n      local_28 = puVar6[3];\n      local_24 = puVar6[4];\n      local_20 = puVar6[5];\n      puVar1 = puVar6;\n      do {\n        puVar4 = puVar1 + -6;\n        if (uVar2 < 4) {\n          if (0xfffffffb < *puVar4) goto LAB_000b6489;\n        }\n        else {\n          iVar3 = FUN_002c6110(&local_34);\n          bVar5 = *(byte *)(iVar3 + 0x14c);\n          if (3 < *puVar4 + 4) {\n            iVar3 = FUN_002c6110(puVar4);\n            bVar5 = bVar5 & (*(byte *)(iVar3 + 0x14c) ^ 1);\n          }\n          if (bVar5 == 0) goto LAB_000b6489;\n          uVar2 = local_34 + 4;\n        }\n        *puVar1 = *puVar4;\n        puVar1[1] = puVar1[-5];\n        puVar1[2] = puVar1[-4];\n        puVar1[3] = puVar1[-3];\n        puVar1[4] = puVar1[-2];\n        puVar1[5] = puVar1[-1];\n        puVar1 = puVar4;\n      } while( true );\n    }\n    local_34 = *puVar6;\n    puVar1 = puVar6 + 6;\n    local_30 = puVar6[1];\n    iVar3 = ((int)puVar6 - (int)param_1 >> 3) * -0x55555555;\n    local_2c = puVar6[2];\n    local_28 = puVar6[3];\n    local_24 = puVar6[4];\n    local_20 = puVar6[5];\n    puVar4 = puVar1;\n    if (0 < (int)puVar6 - (int)param_1) {\n      do {\n        puVar4[-6] = puVar4[-0xc];\n        puVar4[-5] = puVar4[-0xb];\n        puVar4[-4] = puVar4[-10];\n        puVar4[-3] = puVar4[-9];\n        puVar4[-2] = puVar4[-8];\n        puVar4[-1] = puVar4[-7];\n        iVar3 = iVar3 + -1;\n        puVar4 = puVar4 + -6;\n      } while (iVar3 != 0);\n    }\n    *param_1 = local_34;\n    param_1[1] = local_30;\n    param_1[2] = local_2c;\n    param_1[3] = local_28;\n    param_1[4] = local_24;\n    param_1[5] = local_20;\n    puVar6 = puVar1;\n    if (param_2 == puVar1) {\n      return;\n    }\n  } while( true );\nLAB_000b6489:\n  puVar6 = puVar6 + 6;\n  *puVar1 = local_34;\n  puVar1[1] = local_30;\n  puVar1[2] = local_2c;\n  puVar1[3] = local_28;\n  puVar1[4] = local_24;\n  puVar1[5] = local_20;\n  if (param_2 == puVar6) {\n    return;\n  }\n  goto LAB_000b64c1;\n}" (primitive_type "void") (ERROR "__regparm3" (identifier "__regparm3")) (function_declarator "FUN_000b6440(uint *param_1,uint *param_2)" (identifier "FUN_000b6440") (parameter_list "(uint *param_1,uint *param_2)" (( "(") (parameter_declaration "uint *param_1" (type_identifier "uint") (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) (, ",") (parameter_declaration "uint *param_2" (type_identifier "uint") (pointer_declarator "*param_2" (* "*") (identifier "param_2"))) () ")"))) (compound_statement "{\n  uint *puVar1;\n  uint uVar2;\n  int iVar3;\n  uint *puVar4;\n  byte bVar5;\n  uint *puVar6;\n  uint local_34;\n  uint local_30;\n  uint local_2c;\n  uint local_28;\n  uint local_24;\n  uint local_20;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0xb6449;\n  if ((param_1 == param_2) || (param_2 == param_1 + 6)) {\n    return;\n  }\n  puVar6 = param_1 + 6;\nLAB_000b64c1:\n  do {\n    if (*puVar6 < 0xfffffffc) {\n      iVar3 = FUN_002c6110(puVar6);\n      bVar5 = *(byte *)(iVar3 + 0x14c);\n      if (3 < *param_1 + 4) {\n        iVar3 = FUN_002c6110(param_1);\n        bVar5 = bVar5 & (*(byte *)(iVar3 + 0x14c) ^ 1);\n      }\n      if (bVar5 == 0) goto LAB_000b64e0;\n    }\n    else if (*param_1 + 4 < 4) {\nLAB_000b64e0:\n      local_30 = puVar6[1];\n      local_34 = *puVar6;\n      local_2c = puVar6[2];\n      uVar2 = local_34 + 4;\n      local_28 = puVar6[3];\n      local_24 = puVar6[4];\n      local_20 = puVar6[5];\n      puVar1 = puVar6;\n      do {\n        puVar4 = puVar1 + -6;\n        if (uVar2 < 4) {\n          if (0xfffffffb < *puVar4) goto LAB_000b6489;\n        }\n        else {\n          iVar3 = FUN_002c6110(&local_34);\n          bVar5 = *(byte *)(iVar3 + 0x14c);\n          if (3 < *puVar4 + 4) {\n            iVar3 = FUN_002c6110(puVar4);\n            bVar5 = bVar5 & (*(byte *)(iVar3 + 0x14c) ^ 1);\n          }\n          if (bVar5 == 0) goto LAB_000b6489;\n          uVar2 = local_34 + 4;\n        }\n        *puVar1 = *puVar4;\n        puVar1[1] = puVar1[-5];\n        puVar1[2] = puVar1[-4];\n        puVar1[3] = puVar1[-3];\n        puVar1[4] = puVar1[-2];\n        puVar1[5] = puVar1[-1];\n        puVar1 = puVar4;\n      } while( true );\n    }\n    local_34 = *puVar6;\n    puVar1 = puVar6 + 6;\n    local_30 = puVar6[1];\n    iVar3 = ((int)puVar6 - (int)param_1 >> 3) * -0x55555555;\n    local_2c = puVar6[2];\n    local_28 = puVar6[3];\n    local_24 = puVar6[4];\n    local_20 = puVar6[5];\n    puVar4 = puVar1;\n    if (0 < (int)puVar6 - (int)param_1) {\n      do {\n        puVar4[-6] = puVar4[-0xc];\n        puVar4[-5] = puVar4[-0xb];\n        puVar4[-4] = puVar4[-10];\n        puVar4[-3] = puVar4[-9];\n        puVar4[-2] = puVar4[-8];\n        puVar4[-1] = puVar4[-7];\n        iVar3 = iVar3 + -1;\n        puVar4 = puVar4 + -6;\n      } while (iVar3 != 0);\n    }\n    *param_1 = local_34;\n    param_1[1] = local_30;\n    param_1[2] = local_2c;\n    param_1[3] = local_28;\n    param_1[4] = local_24;\n    param_1[5] = local_20;\n    puVar6 = puVar1;\n    if (param_2 == puVar1) {\n      return;\n    }\n  } while( true );\nLAB_000b6489:\n  puVar6 = puVar6 + 6;\n  *puVar1 = local_34;\n  puVar1[1] = local_30;\n  puVar1[2] = local_2c;\n  puVar1[3] = local_28;\n  puVar1[4] = local_24;\n  puVar1[5] = local_20;\n  if (param_2 == puVar6) {\n    return;\n  }\n  goto LAB_000b64c1;\n}" ({ "{") (declaration "uint *puVar1;" (type_identifier "uint") (pointer_declarator "*puVar1" (* "*") (identifier "puVar1")) (; ";")) (declaration "uint uVar2;" (type_identifier "uint") (identifier "uVar2") (; ";")) (declaration "int iVar3;" (primitive_type "int") (identifier "iVar3") (; ";")) (declaration "uint *puVar4;" (type_identifier "uint") (pointer_declarator "*puVar4" (* "*") (identifier "puVar4")) (; ";")) (declaration "byte bVar5;" (type_identifier "byte") (identifier "bVar5") (; ";")) (declaration "uint *puVar6;" (type_identifier "uint") (pointer_declarator "*puVar6" (* "*") (identifier "puVar6")) (; ";")) (declaration "uint local_34;" (type_identifier "uint") (identifier "local_34") (; ";")) (declaration "uint local_30;" (type_identifier "uint") (identifier "local_30") (; ";")) (declaration "uint local_2c;" (type_identifier "uint") (identifier "local_2c") (; ";")) (declaration "uint local_28;" (type_identifier "uint") (identifier "local_28") (; ";")) (declaration "uint local_24;" (type_identifier "uint") (identifier "local_24") (; ";")) (declaration "uint local_20;" (type_identifier "uint") (identifier "local_20") (; ";")) (declaration "undefined4 uStack_14;" (type_identifier "undefined4") (identifier "uStack_14") (; ";")) (expression_statement "uStack_14 = 0xb6449;" (assignment_expression "uStack_14 = 0xb6449" (identifier "uStack_14") (= "=") (number_literal "0xb6449")) (; ";")) (if_statement "if ((param_1 == param_2) || (param_2 == param_1 + 6)) {\n    return;\n  }" (if "if") (parenthesized_expression "((param_1 == param_2) || (param_2 == param_1 + 6))" (( "(") (binary_expression "(param_1 == param_2) || (param_2 == param_1 + 6)" (parenthesized_expression "(param_1 == param_2)" (( "(") (binary_expression "param_1 == param_2" (identifier "param_1") (== "==") (identifier "param_2")) () ")")) (|| "||") (parenthesized_expression "(param_2 == param_1 + 6)" (( "(") (binary_expression "param_2 == param_1 + 6" (identifier "param_2") (== "==") (binary_expression "param_1 + 6" (identifier "param_1") (+ "+") (number_literal "6"))) () ")"))) () ")")) (compound_statement "{\n    return;\n  }" ({ "{") (return_statement "return;" (return "return") (; ";")) (} "}"))) (expression_statement "puVar6 = param_1 + 6;" (assignment_expression "puVar6 = param_1 + 6" (identifier "puVar6") (= "=") (binary_expression "param_1 + 6" (identifier "param_1") (+ "+") (number_literal "6"))) (; ";")) (labeled_statement "LAB_000b64c1:\n  do {\n    if (*puVar6 < 0xfffffffc) {\n      iVar3 = FUN_002c6110(puVar6);\n      bVar5 = *(byte *)(iVar3 + 0x14c);\n      if (3 < *param_1 + 4) {\n        iVar3 = FUN_002c6110(param_1);\n        bVar5 = bVar5 & (*(byte *)(iVar3 + 0x14c) ^ 1);\n      }\n      if (bVar5 == 0) goto LAB_000b64e0;\n    }\n    else if (*param_1 + 4 < 4) {\nLAB_000b64e0:\n      local_30 = puVar6[1];\n      local_34 = *puVar6;\n      local_2c = puVar6[2];\n      uVar2 = local_34 + 4;\n      local_28 = puVar6[3];\n      local_24 = puVar6[4];\n      local_20 = puVar6[5];\n      puVar1 = puVar6;\n      do {\n        puVar4 = puVar1 + -6;\n        if (uVar2 < 4) {\n          if (0xfffffffb < *puVar4) goto LAB_000b6489;\n        }\n        else {\n          iVar3 = FUN_002c6110(&local_34);\n          bVar5 = *(byte *)(iVar3 + 0x14c);\n          if (3 < *puVar4 + 4) {\n            iVar3 = FUN_002c6110(puVar4);\n            bVar5 = bVar5 & (*(byte *)(iVar3 + 0x14c) ^ 1);\n          }\n          if (bVar5 == 0) goto LAB_000b6489;\n          uVar2 = local_34 + 4;\n        }\n        *puVar1 = *puVar4;\n        puVar1[1] = puVar1[-5];\n        puVar1[2] = puVar1[-4];\n        puVar1[3] = puVar1[-3];\n        puVar1[4] = puVar1[-2];\n        puVar1[5] = puVar1[-1];\n        puVar1 = puVar4;\n      } while( true );\n    }\n    local_34 = *puVar6;\n    puVar1 = puVar6 + 6;\n    local_30 = puVar6[1];\n    iVar3 = ((int)puVar6 - (int)param_1 >> 3) * -0x55555555;\n    local_2c = puVar6[2];\n    local_28 = puVar6[3];\n    local_24 = puVar6[4];\n    local_20 = puVar6[5];\n    puVar4 = puVar1;\n    if (0 < (int)puVar6 - (int)param_1) {\n      do {\n        puVar4[-6] = puVar4[-0xc];\n        puVar4[-5] = puVar4[-0xb];\n        puVar4[-4] = puVar4[-10];\n        puVar4[-3] = puVar4[-9];\n        puVar4[-2] = puVar4[-8];\n        puVar4[-1] = puVar4[-7];\n        iVar3 = iVar3 + -1;\n        puVar4 = puVar4 + -6;\n      } while (iVar3 != 0);\n    }\n    *param_1 = local_34;\n    param_1[1] = local_30;\n    param_1[2] = local_2c;\n    param_1[3] = local_28;\n    param_1[4] = local_24;\n    param_1[5] = local_20;\n    puVar6 = puVar1;\n    if (param_2 == puVar1) {\n      return;\n    }\n  } while( true );" (statement_identifier "LAB_000b64c1") (: ":") (do_statement "do {\n    if (*puVar6 < 0xfffffffc) {\n      iVar3 = FUN_002c6110(puVar6);\n      bVar5 = *(byte *)(iVar3 + 0x14c);\n      if (3 < *param_1 + 4) {\n        iVar3 = FUN_002c6110(param_1);\n        bVar5 = bVar5 & (*(byte *)(iVar3 + 0x14c) ^ 1);\n      }\n      if (bVar5 == 0) goto LAB_000b64e0;\n    }\n    else if (*param_1 + 4 < 4) {\nLAB_000b64e0:\n      local_30 = puVar6[1];\n      local_34 = *puVar6;\n      local_2c = puVar6[2];\n      uVar2 = local_34 + 4;\n      local_28 = puVar6[3];\n      local_24 = puVar6[4];\n      local_20 = puVar6[5];\n      puVar1 = puVar6;\n      do {\n        puVar4 = puVar1 + -6;\n        if (uVar2 < 4) {\n          if (0xfffffffb < *puVar4) goto LAB_000b6489;\n        }\n        else {\n          iVar3 = FUN_002c6110(&local_34);\n          bVar5 = *(byte *)(iVar3 + 0x14c);\n          if (3 < *puVar4 + 4) {\n            iVar3 = FUN_002c6110(puVar4);\n            bVar5 = bVar5 & (*(byte *)(iVar3 + 0x14c) ^ 1);\n          }\n          if (bVar5 == 0) goto LAB_000b6489;\n          uVar2 = local_34 + 4;\n        }\n        *puVar1 = *puVar4;\n        puVar1[1] = puVar1[-5];\n        puVar1[2] = puVar1[-4];\n        puVar1[3] = puVar1[-3];\n        puVar1[4] = puVar1[-2];\n        puVar1[5] = puVar1[-1];\n        puVar1 = puVar4;\n      } while( true );\n    }\n    local_34 = *puVar6;\n    puVar1 = puVar6 + 6;\n    local_30 = puVar6[1];\n    iVar3 = ((int)puVar6 - (int)param_1 >> 3) * -0x55555555;\n    local_2c = puVar6[2];\n    local_28 = puVar6[3];\n    local_24 = puVar6[4];\n    local_20 = puVar6[5];\n    puVar4 = puVar1;\n    if (0 < (int)puVar6 - (int)param_1) {\n      do {\n        puVar4[-6] = puVar4[-0xc];\n        puVar4[-5] = puVar4[-0xb];\n        puVar4[-4] = puVar4[-10];\n        puVar4[-3] = puVar4[-9];\n        puVar4[-2] = puVar4[-8];\n        puVar4[-1] = puVar4[-7];\n        iVar3 = iVar3 + -1;\n        puVar4 = puVar4 + -6;\n      } while (iVar3 != 0);\n    }\n    *param_1 = local_34;\n    param_1[1] = local_30;\n    param_1[2] = local_2c;\n    param_1[3] = local_28;\n    param_1[4] = local_24;\n    param_1[5] = local_20;\n    puVar6 = puVar1;\n    if (param_2 == puVar1) {\n      return;\n    }\n  } while( true );" (do "do") (compound_statement "{\n    if (*puVar6 < 0xfffffffc) {\n      iVar3 = FUN_002c6110(puVar6);\n      bVar5 = *(byte *)(iVar3 + 0x14c);\n      if (3 < *param_1 + 4) {\n        iVar3 = FUN_002c6110(param_1);\n        bVar5 = bVar5 & (*(byte *)(iVar3 + 0x14c) ^ 1);\n      }\n      if (bVar5 == 0) goto LAB_000b64e0;\n    }\n    else if (*param_1 + 4 < 4) {\nLAB_000b64e0:\n      local_30 = puVar6[1];\n      local_34 = *puVar6;\n      local_2c = puVar6[2];\n      uVar2 = local_34 + 4;\n      local_28 = puVar6[3];\n      local_24 = puVar6[4];\n      local_20 = puVar6[5];\n      puVar1 = puVar6;\n      do {\n        puVar4 = puVar1 + -6;\n        if (uVar2 < 4) {\n          if (0xfffffffb < *puVar4) goto LAB_000b6489;\n        }\n        else {\n          iVar3 = FUN_002c6110(&local_34);\n          bVar5 = *(byte *)(iVar3 + 0x14c);\n          if (3 < *puVar4 + 4) {\n            iVar3 = FUN_002c6110(puVar4);\n            bVar5 = bVar5 & (*(byte *)(iVar3 + 0x14c) ^ 1);\n          }\n          if (bVar5 == 0) goto LAB_000b6489;\n          uVar2 = local_34 + 4;\n        }\n        *puVar1 = *puVar4;\n        puVar1[1] = puVar1[-5];\n        puVar1[2] = puVar1[-4];\n        puVar1[3] = puVar1[-3];\n        puVar1[4] = puVar1[-2];\n        puVar1[5] = puVar1[-1];\n        puVar1 = puVar4;\n      } while( true );\n    }\n    local_34 = *puVar6;\n    puVar1 = puVar6 + 6;\n    local_30 = puVar6[1];\n    iVar3 = ((int)puVar6 - (int)param_1 >> 3) * -0x55555555;\n    local_2c = puVar6[2];\n    local_28 = puVar6[3];\n    local_24 = puVar6[4];\n    local_20 = puVar6[5];\n    puVar4 = puVar1;\n    if (0 < (int)puVar6 - (int)param_1) {\n      do {\n        puVar4[-6] = puVar4[-0xc];\n        puVar4[-5] = puVar4[-0xb];\n        puVar4[-4] = puVar4[-10];\n        puVar4[-3] = puVar4[-9];\n        puVar4[-2] = puVar4[-8];\n        puVar4[-1] = puVar4[-7];\n        iVar3 = iVar3 + -1;\n        puVar4 = puVar4 + -6;\n      } while (iVar3 != 0);\n    }\n    *param_1 = local_34;\n    param_1[1] = local_30;\n    param_1[2] = local_2c;\n    param_1[3] = local_28;\n    param_1[4] = local_24;\n    param_1[5] = local_20;\n    puVar6 = puVar1;\n    if (param_2 == puVar1) {\n      return;\n    }\n  }" ({ "{") (if_statement "if (*puVar6 < 0xfffffffc) {\n      iVar3 = FUN_002c6110(puVar6);\n      bVar5 = *(byte *)(iVar3 + 0x14c);\n      if (3 < *param_1 + 4) {\n        iVar3 = FUN_002c6110(param_1);\n        bVar5 = bVar5 & (*(byte *)(iVar3 + 0x14c) ^ 1);\n      }\n      if (bVar5 == 0) goto LAB_000b64e0;\n    }\n    else if (*param_1 + 4 < 4) {\nLAB_000b64e0:\n      local_30 = puVar6[1];\n      local_34 = *puVar6;\n      local_2c = puVar6[2];\n      uVar2 = local_34 + 4;\n      local_28 = puVar6[3];\n      local_24 = puVar6[4];\n      local_20 = puVar6[5];\n      puVar1 = puVar6;\n      do {\n        puVar4 = puVar1 + -6;\n        if (uVar2 < 4) {\n          if (0xfffffffb < *puVar4) goto LAB_000b6489;\n        }\n        else {\n          iVar3 = FUN_002c6110(&local_34);\n          bVar5 = *(byte *)(iVar3 + 0x14c);\n          if (3 < *puVar4 + 4) {\n            iVar3 = FUN_002c6110(puVar4);\n            bVar5 = bVar5 & (*(byte *)(iVar3 + 0x14c) ^ 1);\n          }\n          if (bVar5 == 0) goto LAB_000b6489;\n          uVar2 = local_34 + 4;\n        }\n        *puVar1 = *puVar4;\n        puVar1[1] = puVar1[-5];\n        puVar1[2] = puVar1[-4];\n        puVar1[3] = puVar1[-3];\n        puVar1[4] = puVar1[-2];\n        puVar1[5] = puVar1[-1];\n        puVar1 = puVar4;\n      } while( true );\n    }" (if "if") (parenthesized_expression "(*puVar6 < 0xfffffffc)" (( "(") (binary_expression "*puVar6 < 0xfffffffc" (pointer_expression "*puVar6" (* "*") (identifier "puVar6")) (< "<") (number_literal "0xfffffffc")) () ")")) (compound_statement "{\n      iVar3 = FUN_002c6110(puVar6);\n      bVar5 = *(byte *)(iVar3 + 0x14c);\n      if (3 < *param_1 + 4) {\n        iVar3 = FUN_002c6110(param_1);\n        bVar5 = bVar5 & (*(byte *)(iVar3 + 0x14c) ^ 1);\n      }\n      if (bVar5 == 0) goto LAB_000b64e0;\n    }" ({ "{") (expression_statement "iVar3 = FUN_002c6110(puVar6);" (assignment_expression "iVar3 = FUN_002c6110(puVar6)" (identifier "iVar3") (= "=") (call_expression "FUN_002c6110(puVar6)" (identifier "FUN_002c6110") (argument_list "(puVar6)" (( "(") (identifier "puVar6") () ")")))) (; ";")) (expression_statement "bVar5 = *(byte *)(iVar3 + 0x14c);" (assignment_expression "bVar5 = *(byte *)(iVar3 + 0x14c)" (identifier "bVar5") (= "=") (pointer_expression "*(byte *)(iVar3 + 0x14c)" (* "*") (cast_expression "(byte *)(iVar3 + 0x14c)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar3 + 0x14c)" (( "(") (binary_expression "iVar3 + 0x14c" (identifier "iVar3") (+ "+") (number_literal "0x14c")) () ")"))))) (; ";")) (if_statement "if (3 < *param_1 + 4) {\n        iVar3 = FUN_002c6110(param_1);\n        bVar5 = bVar5 & (*(byte *)(iVar3 + 0x14c) ^ 1);\n      }" (if "if") (parenthesized_expression "(3 < *param_1 + 4)" (( "(") (binary_expression "3 < *param_1 + 4" (number_literal "3") (< "<") (binary_expression "*param_1 + 4" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (+ "+") (number_literal "4"))) () ")")) (compound_statement "{\n        iVar3 = FUN_002c6110(param_1);\n        bVar5 = bVar5 & (*(byte *)(iVar3 + 0x14c) ^ 1);\n      }" ({ "{") (expression_statement "iVar3 = FUN_002c6110(param_1);" (assignment_expression "iVar3 = FUN_002c6110(param_1)" (identifier "iVar3") (= "=") (call_expression "FUN_002c6110(param_1)" (identifier "FUN_002c6110") (argument_list "(param_1)" (( "(") (identifier "param_1") () ")")))) (; ";")) (expression_statement "bVar5 = bVar5 & (*(byte *)(iVar3 + 0x14c) ^ 1);" (assignment_expression "bVar5 = bVar5 & (*(byte *)(iVar3 + 0x14c) ^ 1)" (identifier "bVar5") (= "=") (binary_expression "bVar5 & (*(byte *)(iVar3 + 0x14c) ^ 1)" (identifier "bVar5") (& "&") (parenthesized_expression "(*(byte *)(iVar3 + 0x14c) ^ 1)" (( "(") (binary_expression "*(byte *)(iVar3 + 0x14c) ^ 1" (pointer_expression "*(byte *)(iVar3 + 0x14c)" (* "*") (cast_expression "(byte *)(iVar3 + 0x14c)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar3 + 0x14c)" (( "(") (binary_expression "iVar3 + 0x14c" (identifier "iVar3") (+ "+") (number_literal "0x14c")) () ")")))) (^ "^") (number_literal "1")) () ")")))) (; ";")) (} "}"))) (if_statement "if (bVar5 == 0) goto LAB_000b64e0;" (if "if") (parenthesized_expression "(bVar5 == 0)" (( "(") (binary_expression "bVar5 == 0" (identifier "bVar5") (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_000b64e0;" (goto "goto") (statement_identifier "LAB_000b64e0") (; ";"))) (} "}")) (else_clause "else if (*param_1 + 4 < 4) {\nLAB_000b64e0:\n      local_30 = puVar6[1];\n      local_34 = *puVar6;\n      local_2c = puVar6[2];\n      uVar2 = local_34 + 4;\n      local_28 = puVar6[3];\n      local_24 = puVar6[4];\n      local_20 = puVar6[5];\n      puVar1 = puVar6;\n      do {\n        puVar4 = puVar1 + -6;\n        if (uVar2 < 4) {\n          if (0xfffffffb < *puVar4) goto LAB_000b6489;\n        }\n        else {\n          iVar3 = FUN_002c6110(&local_34);\n          bVar5 = *(byte *)(iVar3 + 0x14c);\n          if (3 < *puVar4 + 4) {\n            iVar3 = FUN_002c6110(puVar4);\n            bVar5 = bVar5 & (*(byte *)(iVar3 + 0x14c) ^ 1);\n          }\n          if (bVar5 == 0) goto LAB_000b6489;\n          uVar2 = local_34 + 4;\n        }\n        *puVar1 = *puVar4;\n        puVar1[1] = puVar1[-5];\n        puVar1[2] = puVar1[-4];\n        puVar1[3] = puVar1[-3];\n        puVar1[4] = puVar1[-2];\n        puVar1[5] = puVar1[-1];\n        puVar1 = puVar4;\n      } while( true );\n    }" (else "else") (if_statement "if (*param_1 + 4 < 4) {\nLAB_000b64e0:\n      local_30 = puVar6[1];\n      local_34 = *puVar6;\n      local_2c = puVar6[2];\n      uVar2 = local_34 + 4;\n      local_28 = puVar6[3];\n      local_24 = puVar6[4];\n      local_20 = puVar6[5];\n      puVar1 = puVar6;\n      do {\n        puVar4 = puVar1 + -6;\n        if (uVar2 < 4) {\n          if (0xfffffffb < *puVar4) goto LAB_000b6489;\n        }\n        else {\n          iVar3 = FUN_002c6110(&local_34);\n          bVar5 = *(byte *)(iVar3 + 0x14c);\n          if (3 < *puVar4 + 4) {\n            iVar3 = FUN_002c6110(puVar4);\n            bVar5 = bVar5 & (*(byte *)(iVar3 + 0x14c) ^ 1);\n          }\n          if (bVar5 == 0) goto LAB_000b6489;\n          uVar2 = local_34 + 4;\n        }\n        *puVar1 = *puVar4;\n        puVar1[1] = puVar1[-5];\n        puVar1[2] = puVar1[-4];\n        puVar1[3] = puVar1[-3];\n        puVar1[4] = puVar1[-2];\n        puVar1[5] = puVar1[-1];\n        puVar1 = puVar4;\n      } while( true );\n    }" (if "if") (parenthesized_expression "(*param_1 + 4 < 4)" (( "(") (binary_expression "*param_1 + 4 < 4" (binary_expression "*param_1 + 4" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (+ "+") (number_literal "4")) (< "<") (number_literal "4")) () ")")) (compound_statement "{\nLAB_000b64e0:\n      local_30 = puVar6[1];\n      local_34 = *puVar6;\n      local_2c = puVar6[2];\n      uVar2 = local_34 + 4;\n      local_28 = puVar6[3];\n      local_24 = puVar6[4];\n      local_20 = puVar6[5];\n      puVar1 = puVar6;\n      do {\n        puVar4 = puVar1 + -6;\n        if (uVar2 < 4) {\n          if (0xfffffffb < *puVar4) goto LAB_000b6489;\n        }\n        else {\n          iVar3 = FUN_002c6110(&local_34);\n          bVar5 = *(byte *)(iVar3 + 0x14c);\n          if (3 < *puVar4 + 4) {\n            iVar3 = FUN_002c6110(puVar4);\n            bVar5 = bVar5 & (*(byte *)(iVar3 + 0x14c) ^ 1);\n          }\n          if (bVar5 == 0) goto LAB_000b6489;\n          uVar2 = local_34 + 4;\n        }\n        *puVar1 = *puVar4;\n        puVar1[1] = puVar1[-5];\n        puVar1[2] = puVar1[-4];\n        puVar1[3] = puVar1[-3];\n        puVar1[4] = puVar1[-2];\n        puVar1[5] = puVar1[-1];\n        puVar1 = puVar4;\n      } while( true );\n    }" ({ "{") (labeled_statement "LAB_000b64e0:\n      local_30 = puVar6[1];" (statement_identifier "LAB_000b64e0") (: ":") (expression_statement "local_30 = puVar6[1];" (assignment_expression "local_30 = puVar6[1]" (identifier "local_30") (= "=") (subscript_expression "puVar6[1]" (identifier "puVar6") ([ "[") (number_literal "1") (] "]"))) (; ";"))) (expression_statement "local_34 = *puVar6;" (assignment_expression "local_34 = *puVar6" (identifier "local_34") (= "=") (pointer_expression "*puVar6" (* "*") (identifier "puVar6"))) (; ";")) (expression_statement "local_2c = puVar6[2];" (assignment_expression "local_2c = puVar6[2]" (identifier "local_2c") (= "=") (subscript_expression "puVar6[2]" (identifier "puVar6") ([ "[") (number_literal "2") (] "]"))) (; ";")) (expression_statement "uVar2 = local_34 + 4;" (assignment_expression "uVar2 = local_34 + 4" (identifier "uVar2") (= "=") (binary_expression "local_34 + 4" (identifier "local_34") (+ "+") (number_literal "4"))) (; ";")) (expression_statement "local_28 = puVar6[3];" (assignment_expression "local_28 = puVar6[3]" (identifier "local_28") (= "=") (subscript_expression "puVar6[3]" (identifier "puVar6") ([ "[") (number_literal "3") (] "]"))) (; ";")) (expression_statement "local_24 = puVar6[4];" (assignment_expression "local_24 = puVar6[4]" (identifier "local_24") (= "=") (subscript_expression "puVar6[4]" (identifier "puVar6") ([ "[") (number_literal "4") (] "]"))) (; ";")) (expression_statement "local_20 = puVar6[5];" (assignment_expression "local_20 = puVar6[5]" (identifier "local_20") (= "=") (subscript_expression "puVar6[5]" (identifier "puVar6") ([ "[") (number_literal "5") (] "]"))) (; ";")) (expression_statement "puVar1 = puVar6;" (assignment_expression "puVar1 = puVar6" (identifier "puVar1") (= "=") (identifier "puVar6")) (; ";")) (do_statement "do {\n        puVar4 = puVar1 + -6;\n        if (uVar2 < 4) {\n          if (0xfffffffb < *puVar4) goto LAB_000b6489;\n        }\n        else {\n          iVar3 = FUN_002c6110(&local_34);\n          bVar5 = *(byte *)(iVar3 + 0x14c);\n          if (3 < *puVar4 + 4) {\n            iVar3 = FUN_002c6110(puVar4);\n            bVar5 = bVar5 & (*(byte *)(iVar3 + 0x14c) ^ 1);\n          }\n          if (bVar5 == 0) goto LAB_000b6489;\n          uVar2 = local_34 + 4;\n        }\n        *puVar1 = *puVar4;\n        puVar1[1] = puVar1[-5];\n        puVar1[2] = puVar1[-4];\n        puVar1[3] = puVar1[-3];\n        puVar1[4] = puVar1[-2];\n        puVar1[5] = puVar1[-1];\n        puVar1 = puVar4;\n      } while( true );" (do "do") (compound_statement "{\n        puVar4 = puVar1 + -6;\n        if (uVar2 < 4) {\n          if (0xfffffffb < *puVar4) goto LAB_000b6489;\n        }\n        else {\n          iVar3 = FUN_002c6110(&local_34);\n          bVar5 = *(byte *)(iVar3 + 0x14c);\n          if (3 < *puVar4 + 4) {\n            iVar3 = FUN_002c6110(puVar4);\n            bVar5 = bVar5 & (*(byte *)(iVar3 + 0x14c) ^ 1);\n          }\n          if (bVar5 == 0) goto LAB_000b6489;\n          uVar2 = local_34 + 4;\n        }\n        *puVar1 = *puVar4;\n        puVar1[1] = puVar1[-5];\n        puVar1[2] = puVar1[-4];\n        puVar1[3] = puVar1[-3];\n        puVar1[4] = puVar1[-2];\n        puVar1[5] = puVar1[-1];\n        puVar1 = puVar4;\n      }" ({ "{") (expression_statement "puVar4 = puVar1 + -6;" (assignment_expression "puVar4 = puVar1 + -6" (identifier "puVar4") (= "=") (binary_expression "puVar1 + -6" (identifier "puVar1") (+ "+") (number_literal "-6"))) (; ";")) (if_statement "if (uVar2 < 4) {\n          if (0xfffffffb < *puVar4) goto LAB_000b6489;\n        }\n        else {\n          iVar3 = FUN_002c6110(&local_34);\n          bVar5 = *(byte *)(iVar3 + 0x14c);\n          if (3 < *puVar4 + 4) {\n            iVar3 = FUN_002c6110(puVar4);\n            bVar5 = bVar5 & (*(byte *)(iVar3 + 0x14c) ^ 1);\n          }\n          if (bVar5 == 0) goto LAB_000b6489;\n          uVar2 = local_34 + 4;\n        }" (if "if") (parenthesized_expression "(uVar2 < 4)" (( "(") (binary_expression "uVar2 < 4" (identifier "uVar2") (< "<") (number_literal "4")) () ")")) (compound_statement "{\n          if (0xfffffffb < *puVar4) goto LAB_000b6489;\n        }" ({ "{") (if_statement "if (0xfffffffb < *puVar4) goto LAB_000b6489;" (if "if") (parenthesized_expression "(0xfffffffb < *puVar4)" (( "(") (binary_expression "0xfffffffb < *puVar4" (number_literal "0xfffffffb") (< "<") (pointer_expression "*puVar4" (* "*") (identifier "puVar4"))) () ")")) (goto_statement "goto LAB_000b6489;" (goto "goto") (statement_identifier "LAB_000b6489") (; ";"))) (} "}")) (else_clause "else {\n          iVar3 = FUN_002c6110(&local_34);\n          bVar5 = *(byte *)(iVar3 + 0x14c);\n          if (3 < *puVar4 + 4) {\n            iVar3 = FUN_002c6110(puVar4);\n            bVar5 = bVar5 & (*(byte *)(iVar3 + 0x14c) ^ 1);\n          }\n          if (bVar5 == 0) goto LAB_000b6489;\n          uVar2 = local_34 + 4;\n        }" (else "else") (compound_statement "{\n          iVar3 = FUN_002c6110(&local_34);\n          bVar5 = *(byte *)(iVar3 + 0x14c);\n          if (3 < *puVar4 + 4) {\n            iVar3 = FUN_002c6110(puVar4);\n            bVar5 = bVar5 & (*(byte *)(iVar3 + 0x14c) ^ 1);\n          }\n          if (bVar5 == 0) goto LAB_000b6489;\n          uVar2 = local_34 + 4;\n        }" ({ "{") (expression_statement "iVar3 = FUN_002c6110(&local_34);" (assignment_expression "iVar3 = FUN_002c6110(&local_34)" (identifier "iVar3") (= "=") (call_expression "FUN_002c6110(&local_34)" (identifier "FUN_002c6110") (argument_list "(&local_34)" (( "(") (pointer_expression "&local_34" (& "&") (identifier "local_34")) () ")")))) (; ";")) (expression_statement "bVar5 = *(byte *)(iVar3 + 0x14c);" (assignment_expression "bVar5 = *(byte *)(iVar3 + 0x14c)" (identifier "bVar5") (= "=") (pointer_expression "*(byte *)(iVar3 + 0x14c)" (* "*") (cast_expression "(byte *)(iVar3 + 0x14c)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar3 + 0x14c)" (( "(") (binary_expression "iVar3 + 0x14c" (identifier "iVar3") (+ "+") (number_literal "0x14c")) () ")"))))) (; ";")) (if_statement "if (3 < *puVar4 + 4) {\n            iVar3 = FUN_002c6110(puVar4);\n            bVar5 = bVar5 & (*(byte *)(iVar3 + 0x14c) ^ 1);\n          }" (if "if") (parenthesized_expression "(3 < *puVar4 + 4)" (( "(") (binary_expression "3 < *puVar4 + 4" (number_literal "3") (< "<") (binary_expression "*puVar4 + 4" (pointer_expression "*puVar4" (* "*") (identifier "puVar4")) (+ "+") (number_literal "4"))) () ")")) (compound_statement "{\n            iVar3 = FUN_002c6110(puVar4);\n            bVar5 = bVar5 & (*(byte *)(iVar3 + 0x14c) ^ 1);\n          }" ({ "{") (expression_statement "iVar3 = FUN_002c6110(puVar4);" (assignment_expression "iVar3 = FUN_002c6110(puVar4)" (identifier "iVar3") (= "=") (call_expression "FUN_002c6110(puVar4)" (identifier "FUN_002c6110") (argument_list "(puVar4)" (( "(") (identifier "puVar4") () ")")))) (; ";")) (expression_statement "bVar5 = bVar5 & (*(byte *)(iVar3 + 0x14c) ^ 1);" (assignment_expression "bVar5 = bVar5 & (*(byte *)(iVar3 + 0x14c) ^ 1)" (identifier "bVar5") (= "=") (binary_expression "bVar5 & (*(byte *)(iVar3 + 0x14c) ^ 1)" (identifier "bVar5") (& "&") (parenthesized_expression "(*(byte *)(iVar3 + 0x14c) ^ 1)" (( "(") (binary_expression "*(byte *)(iVar3 + 0x14c) ^ 1" (pointer_expression "*(byte *)(iVar3 + 0x14c)" (* "*") (cast_expression "(byte *)(iVar3 + 0x14c)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar3 + 0x14c)" (( "(") (binary_expression "iVar3 + 0x14c" (identifier "iVar3") (+ "+") (number_literal "0x14c")) () ")")))) (^ "^") (number_literal "1")) () ")")))) (; ";")) (} "}"))) (if_statement "if (bVar5 == 0) goto LAB_000b6489;" (if "if") (parenthesized_expression "(bVar5 == 0)" (( "(") (binary_expression "bVar5 == 0" (identifier "bVar5") (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_000b6489;" (goto "goto") (statement_identifier "LAB_000b6489") (; ";"))) (expression_statement "uVar2 = local_34 + 4;" (assignment_expression "uVar2 = local_34 + 4" (identifier "uVar2") (= "=") (binary_expression "local_34 + 4" (identifier "local_34") (+ "+") (number_literal "4"))) (; ";")) (} "}")))) (expression_statement "*puVar1 = *puVar4;" (assignment_expression "*puVar1 = *puVar4" (pointer_expression "*puVar1" (* "*") (identifier "puVar1")) (= "=") (pointer_expression "*puVar4" (* "*") (identifier "puVar4"))) (; ";")) (expression_statement "puVar1[1] = puVar1[-5];" (assignment_expression "puVar1[1] = puVar1[-5]" (subscript_expression "puVar1[1]" (identifier "puVar1") ([ "[") (number_literal "1") (] "]")) (= "=") (subscript_expression "puVar1[-5]" (identifier "puVar1") ([ "[") (number_literal "-5") (] "]"))) (; ";")) (expression_statement "puVar1[2] = puVar1[-4];" (assignment_expression "puVar1[2] = puVar1[-4]" (subscript_expression "puVar1[2]" (identifier "puVar1") ([ "[") (number_literal "2") (] "]")) (= "=") (subscript_expression "puVar1[-4]" (identifier "puVar1") ([ "[") (number_literal "-4") (] "]"))) (; ";")) (expression_statement "puVar1[3] = puVar1[-3];" (assignment_expression "puVar1[3] = puVar1[-3]" (subscript_expression "puVar1[3]" (identifier "puVar1") ([ "[") (number_literal "3") (] "]")) (= "=") (subscript_expression "puVar1[-3]" (identifier "puVar1") ([ "[") (number_literal "-3") (] "]"))) (; ";")) (expression_statement "puVar1[4] = puVar1[-2];" (assignment_expression "puVar1[4] = puVar1[-2]" (subscript_expression "puVar1[4]" (identifier "puVar1") ([ "[") (number_literal "4") (] "]")) (= "=") (subscript_expression "puVar1[-2]" (identifier "puVar1") ([ "[") (number_literal "-2") (] "]"))) (; ";")) (expression_statement "puVar1[5] = puVar1[-1];" (assignment_expression "puVar1[5] = puVar1[-1]" (subscript_expression "puVar1[5]" (identifier "puVar1") ([ "[") (number_literal "5") (] "]")) (= "=") (subscript_expression "puVar1[-1]" (identifier "puVar1") ([ "[") (number_literal "-1") (] "]"))) (; ";")) (expression_statement "puVar1 = puVar4;" (assignment_expression "puVar1 = puVar4" (identifier "puVar1") (= "=") (identifier "puVar4")) (; ";")) (} "}")) (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (; ";")) (} "}"))))) (expression_statement "local_34 = *puVar6;" (assignment_expression "local_34 = *puVar6" (identifier "local_34") (= "=") (pointer_expression "*puVar6" (* "*") (identifier "puVar6"))) (; ";")) (expression_statement "puVar1 = puVar6 + 6;" (assignment_expression "puVar1 = puVar6 + 6" (identifier "puVar1") (= "=") (binary_expression "puVar6 + 6" (identifier "puVar6") (+ "+") (number_literal "6"))) (; ";")) (expression_statement "local_30 = puVar6[1];" (assignment_expression "local_30 = puVar6[1]" (identifier "local_30") (= "=") (subscript_expression "puVar6[1]" (identifier "puVar6") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "iVar3 = ((int)puVar6 - (int)param_1 >> 3) * -0x55555555;" (assignment_expression "iVar3 = ((int)puVar6 - (int)param_1 >> 3) * -0x55555555" (identifier "iVar3") (= "=") (binary_expression "((int)puVar6 - (int)param_1 >> 3) * -0x55555555" (parenthesized_expression "((int)puVar6 - (int)param_1 >> 3)" (( "(") (binary_expression "(int)puVar6 - (int)param_1 >> 3" (binary_expression "(int)puVar6 - (int)param_1" (cast_expression "(int)puVar6" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar6")) (- "-") (cast_expression "(int)param_1" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_1"))) (>> ">>") (number_literal "3")) () ")")) (* "*") (number_literal "-0x55555555"))) (; ";")) (expression_statement "local_2c = puVar6[2];" (assignment_expression "local_2c = puVar6[2]" (identifier "local_2c") (= "=") (subscript_expression "puVar6[2]" (identifier "puVar6") ([ "[") (number_literal "2") (] "]"))) (; ";")) (expression_statement "local_28 = puVar6[3];" (assignment_expression "local_28 = puVar6[3]" (identifier "local_28") (= "=") (subscript_expression "puVar6[3]" (identifier "puVar6") ([ "[") (number_literal "3") (] "]"))) (; ";")) (expression_statement "local_24 = puVar6[4];" (assignment_expression "local_24 = puVar6[4]" (identifier "local_24") (= "=") (subscript_expression "puVar6[4]" (identifier "puVar6") ([ "[") (number_literal "4") (] "]"))) (; ";")) (expression_statement "local_20 = puVar6[5];" (assignment_expression "local_20 = puVar6[5]" (identifier "local_20") (= "=") (subscript_expression "puVar6[5]" (identifier "puVar6") ([ "[") (number_literal "5") (] "]"))) (; ";")) (expression_statement "puVar4 = puVar1;" (assignment_expression "puVar4 = puVar1" (identifier "puVar4") (= "=") (identifier "puVar1")) (; ";")) (if_statement "if (0 < (int)puVar6 - (int)param_1) {\n      do {\n        puVar4[-6] = puVar4[-0xc];\n        puVar4[-5] = puVar4[-0xb];\n        puVar4[-4] = puVar4[-10];\n        puVar4[-3] = puVar4[-9];\n        puVar4[-2] = puVar4[-8];\n        puVar4[-1] = puVar4[-7];\n        iVar3 = iVar3 + -1;\n        puVar4 = puVar4 + -6;\n      } while (iVar3 != 0);\n    }" (if "if") (parenthesized_expression "(0 < (int)puVar6 - (int)param_1)" (( "(") (binary_expression "0 < (int)puVar6 - (int)param_1" (number_literal "0") (< "<") (binary_expression "(int)puVar6 - (int)param_1" (cast_expression "(int)puVar6" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar6")) (- "-") (cast_expression "(int)param_1" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_1")))) () ")")) (compound_statement "{\n      do {\n        puVar4[-6] = puVar4[-0xc];\n        puVar4[-5] = puVar4[-0xb];\n        puVar4[-4] = puVar4[-10];\n        puVar4[-3] = puVar4[-9];\n        puVar4[-2] = puVar4[-8];\n        puVar4[-1] = puVar4[-7];\n        iVar3 = iVar3 + -1;\n        puVar4 = puVar4 + -6;\n      } while (iVar3 != 0);\n    }" ({ "{") (do_statement "do {\n        puVar4[-6] = puVar4[-0xc];\n        puVar4[-5] = puVar4[-0xb];\n        puVar4[-4] = puVar4[-10];\n        puVar4[-3] = puVar4[-9];\n        puVar4[-2] = puVar4[-8];\n        puVar4[-1] = puVar4[-7];\n        iVar3 = iVar3 + -1;\n        puVar4 = puVar4 + -6;\n      } while (iVar3 != 0);" (do "do") (compound_statement "{\n        puVar4[-6] = puVar4[-0xc];\n        puVar4[-5] = puVar4[-0xb];\n        puVar4[-4] = puVar4[-10];\n        puVar4[-3] = puVar4[-9];\n        puVar4[-2] = puVar4[-8];\n        puVar4[-1] = puVar4[-7];\n        iVar3 = iVar3 + -1;\n        puVar4 = puVar4 + -6;\n      }" ({ "{") (expression_statement "puVar4[-6] = puVar4[-0xc];" (assignment_expression "puVar4[-6] = puVar4[-0xc]" (subscript_expression "puVar4[-6]" (identifier "puVar4") ([ "[") (number_literal "-6") (] "]")) (= "=") (subscript_expression "puVar4[-0xc]" (identifier "puVar4") ([ "[") (number_literal "-0xc") (] "]"))) (; ";")) (expression_statement "puVar4[-5] = puVar4[-0xb];" (assignment_expression "puVar4[-5] = puVar4[-0xb]" (subscript_expression "puVar4[-5]" (identifier "puVar4") ([ "[") (number_literal "-5") (] "]")) (= "=") (subscript_expression "puVar4[-0xb]" (identifier "puVar4") ([ "[") (number_literal "-0xb") (] "]"))) (; ";")) (expression_statement "puVar4[-4] = puVar4[-10];" (assignment_expression "puVar4[-4] = puVar4[-10]" (subscript_expression "puVar4[-4]" (identifier "puVar4") ([ "[") (number_literal "-4") (] "]")) (= "=") (subscript_expression "puVar4[-10]" (identifier "puVar4") ([ "[") (number_literal "-10") (] "]"))) (; ";")) (expression_statement "puVar4[-3] = puVar4[-9];" (assignment_expression "puVar4[-3] = puVar4[-9]" (subscript_expression "puVar4[-3]" (identifier "puVar4") ([ "[") (number_literal "-3") (] "]")) (= "=") (subscript_expression "puVar4[-9]" (identifier "puVar4") ([ "[") (number_literal "-9") (] "]"))) (; ";")) (expression_statement "puVar4[-2] = puVar4[-8];" (assignment_expression "puVar4[-2] = puVar4[-8]" (subscript_expression "puVar4[-2]" (identifier "puVar4") ([ "[") (number_literal "-2") (] "]")) (= "=") (subscript_expression "puVar4[-8]" (identifier "puVar4") ([ "[") (number_literal "-8") (] "]"))) (; ";")) (expression_statement "puVar4[-1] = puVar4[-7];" (assignment_expression "puVar4[-1] = puVar4[-7]" (subscript_expression "puVar4[-1]" (identifier "puVar4") ([ "[") (number_literal "-1") (] "]")) (= "=") (subscript_expression "puVar4[-7]" (identifier "puVar4") ([ "[") (number_literal "-7") (] "]"))) (; ";")) (expression_statement "iVar3 = iVar3 + -1;" (assignment_expression "iVar3 = iVar3 + -1" (identifier "iVar3") (= "=") (binary_expression "iVar3 + -1" (identifier "iVar3") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "puVar4 = puVar4 + -6;" (assignment_expression "puVar4 = puVar4 + -6" (identifier "puVar4") (= "=") (binary_expression "puVar4 + -6" (identifier "puVar4") (+ "+") (number_literal "-6"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(iVar3 != 0)" (( "(") (binary_expression "iVar3 != 0" (identifier "iVar3") (!= "!=") (number_literal "0")) () ")")) (; ";")) (} "}"))) (expression_statement "*param_1 = local_34;" (assignment_expression "*param_1 = local_34" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (= "=") (identifier "local_34")) (; ";")) (expression_statement "param_1[1] = local_30;" (assignment_expression "param_1[1] = local_30" (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]")) (= "=") (identifier "local_30")) (; ";")) (expression_statement "param_1[2] = local_2c;" (assignment_expression "param_1[2] = local_2c" (subscript_expression "param_1[2]" (identifier "param_1") ([ "[") (number_literal "2") (] "]")) (= "=") (identifier "local_2c")) (; ";")) (expression_statement "param_1[3] = local_28;" (assignment_expression "param_1[3] = local_28" (subscript_expression "param_1[3]" (identifier "param_1") ([ "[") (number_literal "3") (] "]")) (= "=") (identifier "local_28")) (; ";")) (expression_statement "param_1[4] = local_24;" (assignment_expression "param_1[4] = local_24" (subscript_expression "param_1[4]" (identifier "param_1") ([ "[") (number_literal "4") (] "]")) (= "=") (identifier "local_24")) (; ";")) (expression_statement "param_1[5] = local_20;" (assignment_expression "param_1[5] = local_20" (subscript_expression "param_1[5]" (identifier "param_1") ([ "[") (number_literal "5") (] "]")) (= "=") (identifier "local_20")) (; ";")) (expression_statement "puVar6 = puVar1;" (assignment_expression "puVar6 = puVar1" (identifier "puVar6") (= "=") (identifier "puVar1")) (; ";")) (if_statement "if (param_2 == puVar1) {\n      return;\n    }" (if "if") (parenthesized_expression "(param_2 == puVar1)" (( "(") (binary_expression "param_2 == puVar1" (identifier "param_2") (== "==") (identifier "puVar1")) () ")")) (compound_statement "{\n      return;\n    }" ({ "{") (return_statement "return;" (return "return") (; ";")) (} "}"))) (} "}")) (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (; ";"))) (labeled_statement "LAB_000b6489:\n  puVar6 = puVar6 + 6;" (statement_identifier "LAB_000b6489") (: ":") (expression_statement "puVar6 = puVar6 + 6;" (assignment_expression "puVar6 = puVar6 + 6" (identifier "puVar6") (= "=") (binary_expression "puVar6 + 6" (identifier "puVar6") (+ "+") (number_literal "6"))) (; ";"))) (expression_statement "*puVar1 = local_34;" (assignment_expression "*puVar1 = local_34" (pointer_expression "*puVar1" (* "*") (identifier "puVar1")) (= "=") (identifier "local_34")) (; ";")) (expression_statement "puVar1[1] = local_30;" (assignment_expression "puVar1[1] = local_30" (subscript_expression "puVar1[1]" (identifier "puVar1") ([ "[") (number_literal "1") (] "]")) (= "=") (identifier "local_30")) (; ";")) (expression_statement "puVar1[2] = local_2c;" (assignment_expression "puVar1[2] = local_2c" (subscript_expression "puVar1[2]" (identifier "puVar1") ([ "[") (number_literal "2") (] "]")) (= "=") (identifier "local_2c")) (; ";")) (expression_statement "puVar1[3] = local_28;" (assignment_expression "puVar1[3] = local_28" (subscript_expression "puVar1[3]" (identifier "puVar1") ([ "[") (number_literal "3") (] "]")) (= "=") (identifier "local_28")) (; ";")) (expression_statement "puVar1[4] = local_24;" (assignment_expression "puVar1[4] = local_24" (subscript_expression "puVar1[4]" (identifier "puVar1") ([ "[") (number_literal "4") (] "]")) (= "=") (identifier "local_24")) (; ";")) (expression_statement "puVar1[5] = local_20;" (assignment_expression "puVar1[5] = local_20" (subscript_expression "puVar1[5]" (identifier "puVar1") ([ "[") (number_literal "5") (] "]")) (= "=") (identifier "local_20")) (; ";")) (if_statement "if (param_2 == puVar6) {\n    return;\n  }" (if "if") (parenthesized_expression "(param_2 == puVar6)" (( "(") (binary_expression "param_2 == puVar6" (identifier "param_2") (== "==") (identifier "puVar6")) () ")")) (compound_statement "{\n    return;\n  }" ({ "{") (return_statement "return;" (return "return") (; ";")) (} "}"))) (goto_statement "goto LAB_000b64c1;" (goto "goto") (statement_identifier "LAB_000b64c1") (; ";")) (} "}")))

/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */
/* WARNING: Unknown calling convention -- yet parameter storage is locked */
/* DWARF original name:
   __insertion_sort<__gnu_cxx::__normal_iterator<gold::Output_section::Input_section*,
   std::vector<gold::Output_section::Input_section> >, __gnu_cxx::__ops::_Iter_comp_iter<(anonymous
   namespace)::Sort_toc_sections<true> > > */

void std::
     __insertion_sort<__gnu_cxx::__normal_iterator<gold::Output_section::Input_section*,_std::vector<gold::Output_section::Input_section>_>,___gnu_cxx::__ops::_Iter_comp_iter<(anonymous_namespace)::Sort_toc_sections<true>_>_>
               (void)

{
  value_type __val;
  
}


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

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

void __regparm3 MASKED(uint *param_1,uint *param_2)

{
  uint *puVar1;
  uint uVar2;
  int iVar3;
  uint *puVar4;
  byte bVar5;
  uint *puVar6;
  uint local_34;
  uint local_30;
  uint local_2c;
  uint local_28;
  uint local_24;
  uint local_20;
  undefined4 uStack_14;
  
  uStack_14 = 0xb6449;
  if ((param_1 == param_2) || (param_2 == param_1 + 6)) {
    return;
  }
  puVar6 = param_1 + 6;
LAB_000b64c1:
  do {
    if (*puVar6 < 0xfffffffc) {
      iVar3 = FUN_002c6110(puVar6);
      bVar5 = *(byte *)(iVar3 + 0x14c);
      if (3 < *param_1 + 4) {
        iVar3 = FUN_002c6110(param_1);
        bVar5 = bVar5 & (*(byte *)(iVar3 + 0x14c) ^ 1);
      }
      if (bVar5 == 0) goto LAB_000b64e0;
    }
    else if (*param_1 + 4 < 4) {
LAB_000b64e0:
      local_30 = puVar6[1];
      local_34 = *puVar6;
      local_2c = puVar6[2];
      uVar2 = local_34 + 4;
      local_28 = puVar6[3];
      local_24 = puVar6[4];
      local_20 = puVar6[5];
      puVar1 = puVar6;
      do {
        puVar4 = puVar1 + -6;
        if (uVar2 < 4) {
          if (0xfffffffb < *puVar4) goto LAB_000b6489;
        }
        else {
          iVar3 = FUN_002c6110(&local_34);
          bVar5 = *(byte *)(iVar3 + 0x14c);
          if (3 < *puVar4 + 4) {
            iVar3 = FUN_002c6110(puVar4);
            bVar5 = bVar5 & (*(byte *)(iVar3 + 0x14c) ^ 1);
          }
          if (bVar5 == 0) goto LAB_000b6489;
          uVar2 = local_34 + 4;
        }
        *puVar1 = *puVar4;
        puVar1[1] = puVar1[-5];
        puVar1[2] = puVar1[-4];
        puVar1[3] = puVar1[-3];
        puVar1[4] = puVar1[-2];
        puVar1[5] = puVar1[-1];
        puVar1 = puVar4;
      } while( true );
    }
    local_34 = *puVar6;
    puVar1 = puVar6 + 6;
    local_30 = puVar6[1];
    iVar3 = ((int)puVar6 - (int)param_1 >> 3) * -0x55555555;
    local_2c = puVar6[2];
    local_28 = puVar6[3];
    local_24 = puVar6[4];
    local_20 = puVar6[5];
    puVar4 = puVar1;
    if (0 < (int)puVar6 - (int)param_1) {
      do {
        puVar4[-6] = puVar4[-0xc];
        puVar4[-5] = puVar4[-0xb];
        puVar4[-4] = puVar4[-10];
        puVar4[-3] = puVar4[-9];
        puVar4[-2] = puVar4[-8];
        puVar4[-1] = puVar4[-7];
        iVar3 = iVar3 + -1;
        puVar4 = puVar4 + -6;
      } while (iVar3 != 0);
    }
    *param_1 = local_34;
    param_1[1] = local_30;
    param_1[2] = local_2c;
    param_1[3] = local_28;
    param_1[4] = local_24;
    param_1[5] = local_20;
    puVar6 = puVar1;
    if (param_2 == puVar1) {
      return;
    }
  } while( true );
LAB_000b6489:
  puVar6 = puVar6 + 6;
  *puVar1 = local_34;
  puVar1[1] = local_30;
  puVar1[2] = local_2c;
  puVar1[3] = local_28;
  puVar1[4] = local_24;
  puVar1[5] = local_20;
  if (param_2 == puVar6) {
    return;
  }
  goto LAB_000b64c1;
}

