
/* WARNING: Enum "<anon>": Some values do not have unique names */
/* DWARF original prototype: void do_write(Arm_v4bx_stub * this, uchar * view, section_size_type
   view_size, bool big_endian) */

void __thiscall
anon_unknown.dwarf_9b9b16::Arm_v4bx_stub::do_write
          (Arm_v4bx_stub *this,uchar *view,section_size_type view_size,bool big_endian)

{
  Type TVar1;
  Insn_template *pIVar2;
  uint uVar3;
  long lVar4;
  uint *puVar5;
  int *piVar6;
  
  pIVar2 = ((this->super_Stub).stub_template_)->insns_;
  TVar1 = pIVar2->type_;
  uVar3 = this->reg_ * 0x10000 + pIVar2->data_;
  if (big_endian) {
    *(uint *)view =
         uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 | pIVar2->data_ * 0x1000000
    ;
    if (TVar1 != 0) {
      if (TVar1 < THUMB32_TYPE) {
        lVar4 = 2;
      }
      else {
        if (DATA_TYPE < TVar1) goto LAB_00232334;
        lVar4 = 4;
      }
      puVar5 = (uint *)(view + lVar4);
      uVar3 = this->reg_ + pIVar2[1].data_;
      *puVar5 = uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 | uVar3 * 0x1000000;
      TVar1 = pIVar2[1].type_;
      if (TVar1 != 0) {
        if (TVar1 < THUMB32_TYPE) {
          uVar3 = this->reg_ + pIVar2[2].data_;
          *(uint *)((long)puVar5 + 2) =
               uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 | uVar3 * 0x1000000;
          return;
        }
        if (TVar1 < (ARM_TYPE|THUMB16_SPECIAL_TYPE)) {
          uVar3 = this->reg_ + pIVar2[2].data_;
          puVar5[1] = uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |
                      uVar3 * 0x1000000;
          return;
        }
      }
    }
  }
  else {
    *(uint *)view = uVar3;
    if (TVar1 != 0) {
      if (TVar1 < THUMB32_TYPE) {
        lVar4 = 2;
      }
      else {
        if (DATA_TYPE < TVar1) goto LAB_00232334;
        lVar4 = 4;
      }
      piVar6 = (int *)(view + lVar4);
      *piVar6 = this->reg_ + pIVar2[1].data_;
      TVar1 = pIVar2[1].type_;
      if (TVar1 != 0) {
        if (TVar1 < THUMB32_TYPE) {
          *(uint32_t *)((long)piVar6 + 2) = this->reg_ + pIVar2[2].data_;
          return;
        }
        if (TVar1 < (ARM_TYPE|THUMB16_SPECIAL_TYPE)) {
          piVar6[1] = this->reg_ + pIVar2[2].data_;
          return;
        }
      }
    }
  }
LAB_00232334:
                    /* WARNING: Subroutine does not return */
  Insn_template::size((Insn_template *)this);
}



void FUN_00232240(long param_1,uint *param_2,undefined8 param_3,int param_4,undefined8 param_5,
                 int param_6)

{
  int *piVar1;
  uint uVar2;
  uint uVar3;
  uint uVar4;
  long lVar5;
  int extraout_EDX;
  uint uVar6;
  uint uVar7;
  
  piVar1 = *(int **)(*(long *)(param_1 + 8) + 8);
  uVar3 = piVar1[1];
  uVar2 = *(int *)(param_1 + 0x18) * 0x10000 + *piVar1;
  if ((char)param_4 == '\0') {
    *param_2 = uVar2;
    if (uVar3 != 0) {
      if (uVar3 < 3) {
        lVar5 = 2;
      }
      else {
        if (5 < uVar3) goto LAB_00232334;
        lVar5 = 4;
      }
      param_2 = (uint *)((long)param_2 + lVar5);
      *param_2 = *(int *)(param_1 + 0x18) + piVar1[4];
      uVar2 = piVar1[5];
      if (uVar2 != 0) {
        if (uVar2 < 3) {
          *(int *)((long)param_2 + 2) = *(int *)(param_1 + 0x18) + piVar1[8];
          return;
        }
        if (uVar2 < 6) {
          param_2[1] = *(int *)(param_1 + 0x18) + piVar1[8];
          return;
        }
      }
    }
  }
  else {
    *param_2 = uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 | *piVar1 * 0x1000000
    ;
    if (uVar3 != 0) {
      if (uVar3 < 3) {
        lVar5 = 2;
      }
      else {
        if (5 < uVar3) goto LAB_00232334;
        lVar5 = 4;
      }
      param_2 = (uint *)((long)param_2 + lVar5);
      uVar2 = *(int *)(param_1 + 0x18) + piVar1[4];
      *param_2 = uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 | uVar2 * 0x1000000
      ;
      uVar2 = piVar1[5];
      if (uVar2 != 0) {
        if (uVar2 < 3) {
          uVar3 = *(int *)(param_1 + 0x18) + piVar1[8];
          *(uint *)((long)param_2 + 2) =
               uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 | uVar3 * 0x1000000;
          return;
        }
        if (uVar2 < 6) {
          uVar3 = *(int *)(param_1 + 0x18) + piVar1[8];
          param_2[1] = uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |
                       uVar3 * 0x1000000;
          return;
        }
      }
    }
  }
LAB_00232334:
  FUN_00230fb0();
  uVar6 = extraout_EDX + (((-8 - param_6) + uVar3) - param_4);
  uVar3 = (int)uVar6 >> 0x1c | 0xe28fc200;
  uVar2 = (int)uVar6 >> 0x14 & 0xff;
  uVar7 = uVar6 & 0xfff | 0xe5bcf000;
  uVar4 = (int)uVar6 >> 0xc & 0xff;
  if (*(long *)(PTR_DAT_0067cb08 + 0x10) == 0) {
                    /* WARNING: Subroutine does not return */
    FUN_00231730();
  }
  if (*(char *)(*(long *)(PTR_DAT_0067cb08 + 0x10) + 0x671) != '\0') {
    *param_2 = uVar3;
    param_2[1] = uVar2 | 0xe28cc600;
    param_2[2] = uVar4 | 0xe28cca00;
    param_2[3] = uVar7;
    return;
  }
  *param_2 = uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |
             ((int)uVar6 >> 0x1c) << 0x18;
  param_2[1] = uVar2 << 0x18 | 0xc68ce2;
  param_2[2] = uVar4 << 0x18 | 0xca8ce2;
  param_2[3] = (uVar7 & 0xff00) << 8 | 0xbce5 | (uVar6 & 0xfff) << 0x18;
  return;
}


MOV RAX,qword ptr [RDI + 0x8]
MOV RDX,qword ptr [RAX + 0x8]
MOV EAX,dword ptr [RDI + 0x18]
MOV R8D,dword ptr [RDX + 0x4]
SHL EAX,0x10
ADD EAX,dword ptr [RDX]
TEST CL,CL
JZ 0x002322a0
BSWAP EAX
MOV dword ptr [RSI],EAX
TEST R8D,R8D
JZ 0x00232334
CMP R8D,0x2
JA 0x002322e0
MOV EAX,0x2
ADD RSI,RAX
MOV EAX,dword ptr [RDI + 0x18]
ADD EAX,dword ptr [RDX + 0x10]
BSWAP EAX
MOV dword ptr [RSI],EAX
MOV EAX,dword ptr [RDX + 0x14]
TEST EAX,EAX
JZ 0x00232334
CMP EAX,0x2
JA 0x00232300
MOV EAX,dword ptr [RDI + 0x18]
MOV ECX,0x2
ADD EAX,dword ptr [RDX + 0x20]
BSWAP EAX
MOV dword ptr [RSI + RCX*0x1],EAX
RET
MOV dword ptr [RSI],EAX
TEST R8D,R8D
JZ 0x00232334
CMP R8D,0x2
JA 0x002322f0
MOV EAX,0x2
ADD RSI,RAX
MOV EAX,dword ptr [RDI + 0x18]
ADD EAX,dword ptr [RDX + 0x10]
MOV dword ptr [RSI],EAX
MOV EAX,dword ptr [RDX + 0x14]
TEST EAX,EAX
JZ 0x00232334
CMP EAX,0x2
JA 0x00232320
MOV EAX,dword ptr [RDI + 0x18]
MOV ECX,0x2
ADD EAX,dword ptr [RDX + 0x20]
MOV dword ptr [RSI + RCX*0x1],EAX
RET
CMP R8D,0x5
JA 0x00232334
MOV EAX,0x4
JMP 0x00232270
CMP R8D,0x5
JA 0x00232334
MOV EAX,0x4
JMP 0x002322b6
CMP EAX,0x5
JA 0x00232334
MOV EAX,dword ptr [RDI + 0x18]
MOV ECX,0x4
ADD EAX,dword ptr [RDX + 0x20]
BSWAP EAX
MOV dword ptr [RSI + RCX*0x1],EAX
RET
CMP EAX,0x5
JA 0x00232334
MOV EAX,dword ptr [RDI + 0x18]
MOV ECX,0x4
ADD EAX,dword ptr [RDX + 0x20]
MOV dword ptr [RSI + RCX*0x1],EAX
RET
PUSH RAX
CALL 0x00230fb0
NOP word ptr [RAX + RAX*0x1]
(translation_unit "void FUN_00232240(long param_1,uint *param_2,undefined8 param_3,int param_4,undefined8 param_5,\n                 int param_6)\n\n{\n  int *piVar1;\n  uint uVar2;\n  uint uVar3;\n  uint uVar4;\n  long lVar5;\n  int extraout_EDX;\n  uint uVar6;\n  uint uVar7;\n  \n  piVar1 = *(int **)(*(long *)(param_1 + 8) + 8);\n  uVar3 = piVar1[1];\n  uVar2 = *(int *)(param_1 + 0x18) * 0x10000 + *piVar1;\n  if ((char)param_4 == '\0') {\n    *param_2 = uVar2;\n    if (uVar3 != 0) {\n      if (uVar3 < 3) {\n        lVar5 = 2;\n      }\n      else {\n        if (5 < uVar3) goto LAB_00232334;\n        lVar5 = 4;\n      }\n      param_2 = (uint *)((long)param_2 + lVar5);\n      *param_2 = *(int *)(param_1 + 0x18) + piVar1[4];\n      uVar2 = piVar1[5];\n      if (uVar2 != 0) {\n        if (uVar2 < 3) {\n          *(int *)((long)param_2 + 2) = *(int *)(param_1 + 0x18) + piVar1[8];\n          return;\n        }\n        if (uVar2 < 6) {\n          param_2[1] = *(int *)(param_1 + 0x18) + piVar1[8];\n          return;\n        }\n      }\n    }\n  }\n  else {\n    *param_2 = uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 | *piVar1 * 0x1000000\n    ;\n    if (uVar3 != 0) {\n      if (uVar3 < 3) {\n        lVar5 = 2;\n      }\n      else {\n        if (5 < uVar3) goto LAB_00232334;\n        lVar5 = 4;\n      }\n      param_2 = (uint *)((long)param_2 + lVar5);\n      uVar2 = *(int *)(param_1 + 0x18) + piVar1[4];\n      *param_2 = uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 | uVar2 * 0x1000000\n      ;\n      uVar2 = piVar1[5];\n      if (uVar2 != 0) {\n        if (uVar2 < 3) {\n          uVar3 = *(int *)(param_1 + 0x18) + piVar1[8];\n          *(uint *)((long)param_2 + 2) =\n               uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 | uVar3 * 0x1000000;\n          return;\n        }\n        if (uVar2 < 6) {\n          uVar3 = *(int *)(param_1 + 0x18) + piVar1[8];\n          param_2[1] = uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                       uVar3 * 0x1000000;\n          return;\n        }\n      }\n    }\n  }\nLAB_00232334:\n  FUN_00230fb0();\n  uVar6 = extraout_EDX + (((-8 - param_6) + uVar3) - param_4);\n  uVar3 = (int)uVar6 >> 0x1c | 0xe28fc200;\n  uVar2 = (int)uVar6 >> 0x14 & 0xff;\n  uVar7 = uVar6 & 0xfff | 0xe5bcf000;\n  uVar4 = (int)uVar6 >> 0xc & 0xff;\n  if (*(long *)(PTR_DAT_0067cb08 + 0x10) == 0) {\n                    /* WARNING: Subroutine does not return */\n    FUN_00231730();\n  }\n  if (*(char *)(*(long *)(PTR_DAT_0067cb08 + 0x10) + 0x671) != '\0') {\n    *param_2 = uVar3;\n    param_2[1] = uVar2 | 0xe28cc600;\n    param_2[2] = uVar4 | 0xe28cca00;\n    param_2[3] = uVar7;\n    return;\n  }\n  *param_2 = uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n             ((int)uVar6 >> 0x1c) << 0x18;\n  param_2[1] = uVar2 << 0x18 | 0xc68ce2;\n  param_2[2] = uVar4 << 0x18 | 0xca8ce2;\n  param_2[3] = (uVar7 & 0xff00) << 8 | 0xbce5 | (uVar6 & 0xfff) << 0x18;\n  return;\n}\n\n" (function_definition "void FUN_00232240(long param_1,uint *param_2,undefined8 param_3,int param_4,undefined8 param_5,\n                 int param_6)\n\n{\n  int *piVar1;\n  uint uVar2;\n  uint uVar3;\n  uint uVar4;\n  long lVar5;\n  int extraout_EDX;\n  uint uVar6;\n  uint uVar7;\n  \n  piVar1 = *(int **)(*(long *)(param_1 + 8) + 8);\n  uVar3 = piVar1[1];\n  uVar2 = *(int *)(param_1 + 0x18) * 0x10000 + *piVar1;\n  if ((char)param_4 == '\0') {\n    *param_2 = uVar2;\n    if (uVar3 != 0) {\n      if (uVar3 < 3) {\n        lVar5 = 2;\n      }\n      else {\n        if (5 < uVar3) goto LAB_00232334;\n        lVar5 = 4;\n      }\n      param_2 = (uint *)((long)param_2 + lVar5);\n      *param_2 = *(int *)(param_1 + 0x18) + piVar1[4];\n      uVar2 = piVar1[5];\n      if (uVar2 != 0) {\n        if (uVar2 < 3) {\n          *(int *)((long)param_2 + 2) = *(int *)(param_1 + 0x18) + piVar1[8];\n          return;\n        }\n        if (uVar2 < 6) {\n          param_2[1] = *(int *)(param_1 + 0x18) + piVar1[8];\n          return;\n        }\n      }\n    }\n  }\n  else {\n    *param_2 = uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 | *piVar1 * 0x1000000\n    ;\n    if (uVar3 != 0) {\n      if (uVar3 < 3) {\n        lVar5 = 2;\n      }\n      else {\n        if (5 < uVar3) goto LAB_00232334;\n        lVar5 = 4;\n      }\n      param_2 = (uint *)((long)param_2 + lVar5);\n      uVar2 = *(int *)(param_1 + 0x18) + piVar1[4];\n      *param_2 = uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 | uVar2 * 0x1000000\n      ;\n      uVar2 = piVar1[5];\n      if (uVar2 != 0) {\n        if (uVar2 < 3) {\n          uVar3 = *(int *)(param_1 + 0x18) + piVar1[8];\n          *(uint *)((long)param_2 + 2) =\n               uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 | uVar3 * 0x1000000;\n          return;\n        }\n        if (uVar2 < 6) {\n          uVar3 = *(int *)(param_1 + 0x18) + piVar1[8];\n          param_2[1] = uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                       uVar3 * 0x1000000;\n          return;\n        }\n      }\n    }\n  }\nLAB_00232334:\n  FUN_00230fb0();\n  uVar6 = extraout_EDX + (((-8 - param_6) + uVar3) - param_4);\n  uVar3 = (int)uVar6 >> 0x1c | 0xe28fc200;\n  uVar2 = (int)uVar6 >> 0x14 & 0xff;\n  uVar7 = uVar6 & 0xfff | 0xe5bcf000;\n  uVar4 = (int)uVar6 >> 0xc & 0xff;\n  if (*(long *)(PTR_DAT_0067cb08 + 0x10) == 0) {\n                    /* WARNING: Subroutine does not return */\n    FUN_00231730();\n  }\n  if (*(char *)(*(long *)(PTR_DAT_0067cb08 + 0x10) + 0x671) != '\0') {\n    *param_2 = uVar3;\n    param_2[1] = uVar2 | 0xe28cc600;\n    param_2[2] = uVar4 | 0xe28cca00;\n    param_2[3] = uVar7;\n    return;\n  }\n  *param_2 = uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n             ((int)uVar6 >> 0x1c) << 0x18;\n  param_2[1] = uVar2 << 0x18 | 0xc68ce2;\n  param_2[2] = uVar4 << 0x18 | 0xca8ce2;\n  param_2[3] = (uVar7 & 0xff00) << 8 | 0xbce5 | (uVar6 & 0xfff) << 0x18;\n  return;\n}" primitive_type (function_declarator "FUN_00232240(long param_1,uint *param_2,undefined8 param_3,int param_4,undefined8 param_5,\n                 int param_6)" identifier (parameter_list "(long param_1,uint *param_2,undefined8 param_3,int param_4,undefined8 param_5,\n                 int param_6)" ( (parameter_declaration "long param_1" (sized_type_specifier "long" long) identifier) , (parameter_declaration "uint *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "undefined8 param_3" type_identifier identifier) , (parameter_declaration "int param_4" primitive_type identifier) , (parameter_declaration "undefined8 param_5" type_identifier identifier) , (parameter_declaration "int param_6" primitive_type identifier) ))) (compound_statement "{\n  int *piVar1;\n  uint uVar2;\n  uint uVar3;\n  uint uVar4;\n  long lVar5;\n  int extraout_EDX;\n  uint uVar6;\n  uint uVar7;\n  \n  piVar1 = *(int **)(*(long *)(param_1 + 8) + 8);\n  uVar3 = piVar1[1];\n  uVar2 = *(int *)(param_1 + 0x18) * 0x10000 + *piVar1;\n  if ((char)param_4 == '\0') {\n    *param_2 = uVar2;\n    if (uVar3 != 0) {\n      if (uVar3 < 3) {\n        lVar5 = 2;\n      }\n      else {\n        if (5 < uVar3) goto LAB_00232334;\n        lVar5 = 4;\n      }\n      param_2 = (uint *)((long)param_2 + lVar5);\n      *param_2 = *(int *)(param_1 + 0x18) + piVar1[4];\n      uVar2 = piVar1[5];\n      if (uVar2 != 0) {\n        if (uVar2 < 3) {\n          *(int *)((long)param_2 + 2) = *(int *)(param_1 + 0x18) + piVar1[8];\n          return;\n        }\n        if (uVar2 < 6) {\n          param_2[1] = *(int *)(param_1 + 0x18) + piVar1[8];\n          return;\n        }\n      }\n    }\n  }\n  else {\n    *param_2 = uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 | *piVar1 * 0x1000000\n    ;\n    if (uVar3 != 0) {\n      if (uVar3 < 3) {\n        lVar5 = 2;\n      }\n      else {\n        if (5 < uVar3) goto LAB_00232334;\n        lVar5 = 4;\n      }\n      param_2 = (uint *)((long)param_2 + lVar5);\n      uVar2 = *(int *)(param_1 + 0x18) + piVar1[4];\n      *param_2 = uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 | uVar2 * 0x1000000\n      ;\n      uVar2 = piVar1[5];\n      if (uVar2 != 0) {\n        if (uVar2 < 3) {\n          uVar3 = *(int *)(param_1 + 0x18) + piVar1[8];\n          *(uint *)((long)param_2 + 2) =\n               uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 | uVar3 * 0x1000000;\n          return;\n        }\n        if (uVar2 < 6) {\n          uVar3 = *(int *)(param_1 + 0x18) + piVar1[8];\n          param_2[1] = uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                       uVar3 * 0x1000000;\n          return;\n        }\n      }\n    }\n  }\nLAB_00232334:\n  FUN_00230fb0();\n  uVar6 = extraout_EDX + (((-8 - param_6) + uVar3) - param_4);\n  uVar3 = (int)uVar6 >> 0x1c | 0xe28fc200;\n  uVar2 = (int)uVar6 >> 0x14 & 0xff;\n  uVar7 = uVar6 & 0xfff | 0xe5bcf000;\n  uVar4 = (int)uVar6 >> 0xc & 0xff;\n  if (*(long *)(PTR_DAT_0067cb08 + 0x10) == 0) {\n                    /* WARNING: Subroutine does not return */\n    FUN_00231730();\n  }\n  if (*(char *)(*(long *)(PTR_DAT_0067cb08 + 0x10) + 0x671) != '\0') {\n    *param_2 = uVar3;\n    param_2[1] = uVar2 | 0xe28cc600;\n    param_2[2] = uVar4 | 0xe28cca00;\n    param_2[3] = uVar7;\n    return;\n  }\n  *param_2 = uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n             ((int)uVar6 >> 0x1c) << 0x18;\n  param_2[1] = uVar2 << 0x18 | 0xc68ce2;\n  param_2[2] = uVar4 << 0x18 | 0xca8ce2;\n  param_2[3] = (uVar7 & 0xff00) << 8 | 0xbce5 | (uVar6 & 0xfff) << 0x18;\n  return;\n}" { (declaration "int *piVar1;" primitive_type (pointer_declarator "*piVar1" * identifier) ;) (declaration "uint uVar2;" type_identifier identifier ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "uint uVar4;" type_identifier identifier ;) (declaration "long lVar5;" (sized_type_specifier "long" long) identifier ;) (declaration "int extraout_EDX;" primitive_type identifier ;) (declaration "uint uVar6;" type_identifier identifier ;) (declaration "uint uVar7;" type_identifier identifier ;) (expression_statement "piVar1 = *(int **)(*(long *)(param_1 + 8) + 8);" (assignment_expression "piVar1 = *(int **)(*(long *)(param_1 + 8) + 8)" identifier = (pointer_expression "*(int **)(*(long *)(param_1 + 8) + 8)" * (cast_expression "(int **)(*(long *)(param_1 + 8) + 8)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(long *)(param_1 + 8) + 8)" ( (binary_expression "*(long *)(param_1 + 8) + 8" (pointer_expression "*(long *)(param_1 + 8)" * (cast_expression "(long *)(param_1 + 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) )))) + number_literal) ))))) ;) (expression_statement "uVar3 = piVar1[1];" (assignment_expression "uVar3 = piVar1[1]" identifier = (subscript_expression "piVar1[1]" identifier [ number_literal ])) ;) (expression_statement "uVar2 = *(int *)(param_1 + 0x18) * 0x10000 + *piVar1;" (assignment_expression "uVar2 = *(int *)(param_1 + 0x18) * 0x10000 + *piVar1" identifier = (binary_expression "*(int *)(param_1 + 0x18) * 0x10000 + *piVar1" (binary_expression "*(int *)(param_1 + 0x18) * 0x10000" (pointer_expression "*(int *)(param_1 + 0x18)" * (cast_expression "(int *)(param_1 + 0x18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x18)" ( (binary_expression "param_1 + 0x18" identifier + number_literal) )))) * number_literal) + (pointer_expression "*piVar1" * identifier))) ;) (if_statement "if ((char)param_4 == '\0') {\n    *param_2 = uVar2;\n    if (uVar3 != 0) {\n      if (uVar3 < 3) {\n        lVar5 = 2;\n      }\n      else {\n        if (5 < uVar3) goto LAB_00232334;\n        lVar5 = 4;\n      }\n      param_2 = (uint *)((long)param_2 + lVar5);\n      *param_2 = *(int *)(param_1 + 0x18) + piVar1[4];\n      uVar2 = piVar1[5];\n      if (uVar2 != 0) {\n        if (uVar2 < 3) {\n          *(int *)((long)param_2 + 2) = *(int *)(param_1 + 0x18) + piVar1[8];\n          return;\n        }\n        if (uVar2 < 6) {\n          param_2[1] = *(int *)(param_1 + 0x18) + piVar1[8];\n          return;\n        }\n      }\n    }\n  }\n  else {\n    *param_2 = uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 | *piVar1 * 0x1000000\n    ;\n    if (uVar3 != 0) {\n      if (uVar3 < 3) {\n        lVar5 = 2;\n      }\n      else {\n        if (5 < uVar3) goto LAB_00232334;\n        lVar5 = 4;\n      }\n      param_2 = (uint *)((long)param_2 + lVar5);\n      uVar2 = *(int *)(param_1 + 0x18) + piVar1[4];\n      *param_2 = uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 | uVar2 * 0x1000000\n      ;\n      uVar2 = piVar1[5];\n      if (uVar2 != 0) {\n        if (uVar2 < 3) {\n          uVar3 = *(int *)(param_1 + 0x18) + piVar1[8];\n          *(uint *)((long)param_2 + 2) =\n               uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 | uVar3 * 0x1000000;\n          return;\n        }\n        if (uVar2 < 6) {\n          uVar3 = *(int *)(param_1 + 0x18) + piVar1[8];\n          param_2[1] = uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                       uVar3 * 0x1000000;\n          return;\n        }\n      }\n    }\n  }" if (parenthesized_expression "((char)param_4 == '\0')" ( (binary_expression "(char)param_4 == '\0'" (cast_expression "(char)param_4" ( (type_descriptor "char" primitive_type) ) identifier) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    *param_2 = uVar2;\n    if (uVar3 != 0) {\n      if (uVar3 < 3) {\n        lVar5 = 2;\n      }\n      else {\n        if (5 < uVar3) goto LAB_00232334;\n        lVar5 = 4;\n      }\n      param_2 = (uint *)((long)param_2 + lVar5);\n      *param_2 = *(int *)(param_1 + 0x18) + piVar1[4];\n      uVar2 = piVar1[5];\n      if (uVar2 != 0) {\n        if (uVar2 < 3) {\n          *(int *)((long)param_2 + 2) = *(int *)(param_1 + 0x18) + piVar1[8];\n          return;\n        }\n        if (uVar2 < 6) {\n          param_2[1] = *(int *)(param_1 + 0x18) + piVar1[8];\n          return;\n        }\n      }\n    }\n  }" { (expression_statement "*param_2 = uVar2;" (assignment_expression "*param_2 = uVar2" (pointer_expression "*param_2" * identifier) = identifier) ;) (if_statement "if (uVar3 != 0) {\n      if (uVar3 < 3) {\n        lVar5 = 2;\n      }\n      else {\n        if (5 < uVar3) goto LAB_00232334;\n        lVar5 = 4;\n      }\n      param_2 = (uint *)((long)param_2 + lVar5);\n      *param_2 = *(int *)(param_1 + 0x18) + piVar1[4];\n      uVar2 = piVar1[5];\n      if (uVar2 != 0) {\n        if (uVar2 < 3) {\n          *(int *)((long)param_2 + 2) = *(int *)(param_1 + 0x18) + piVar1[8];\n          return;\n        }\n        if (uVar2 < 6) {\n          param_2[1] = *(int *)(param_1 + 0x18) + piVar1[8];\n          return;\n        }\n      }\n    }" if (parenthesized_expression "(uVar3 != 0)" ( (binary_expression "uVar3 != 0" identifier != number_literal) )) (compound_statement "{\n      if (uVar3 < 3) {\n        lVar5 = 2;\n      }\n      else {\n        if (5 < uVar3) goto LAB_00232334;\n        lVar5 = 4;\n      }\n      param_2 = (uint *)((long)param_2 + lVar5);\n      *param_2 = *(int *)(param_1 + 0x18) + piVar1[4];\n      uVar2 = piVar1[5];\n      if (uVar2 != 0) {\n        if (uVar2 < 3) {\n          *(int *)((long)param_2 + 2) = *(int *)(param_1 + 0x18) + piVar1[8];\n          return;\n        }\n        if (uVar2 < 6) {\n          param_2[1] = *(int *)(param_1 + 0x18) + piVar1[8];\n          return;\n        }\n      }\n    }" { (if_statement "if (uVar3 < 3) {\n        lVar5 = 2;\n      }\n      else {\n        if (5 < uVar3) goto LAB_00232334;\n        lVar5 = 4;\n      }" if (parenthesized_expression "(uVar3 < 3)" ( (binary_expression "uVar3 < 3" identifier < number_literal) )) (compound_statement "{\n        lVar5 = 2;\n      }" { (expression_statement "lVar5 = 2;" (assignment_expression "lVar5 = 2" identifier = number_literal) ;) }) (else_clause "else {\n        if (5 < uVar3) goto LAB_00232334;\n        lVar5 = 4;\n      }" else (compound_statement "{\n        if (5 < uVar3) goto LAB_00232334;\n        lVar5 = 4;\n      }" { (if_statement "if (5 < uVar3) goto LAB_00232334;" if (parenthesized_expression "(5 < uVar3)" ( (binary_expression "5 < uVar3" number_literal < identifier) )) (goto_statement "goto LAB_00232334;" goto statement_identifier ;)) (expression_statement "lVar5 = 4;" (assignment_expression "lVar5 = 4" identifier = number_literal) ;) }))) (expression_statement "param_2 = (uint *)((long)param_2 + lVar5);" (assignment_expression "param_2 = (uint *)((long)param_2 + lVar5)" identifier = (cast_expression "(uint *)((long)param_2 + lVar5)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_2 + lVar5)" ( (binary_expression "(long)param_2 + lVar5" (cast_expression "(long)param_2" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + identifier) )))) ;) (expression_statement "*param_2 = *(int *)(param_1 + 0x18) + piVar1[4];" (assignment_expression "*param_2 = *(int *)(param_1 + 0x18) + piVar1[4]" (pointer_expression "*param_2" * identifier) = (binary_expression "*(int *)(param_1 + 0x18) + piVar1[4]" (pointer_expression "*(int *)(param_1 + 0x18)" * (cast_expression "(int *)(param_1 + 0x18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x18)" ( (binary_expression "param_1 + 0x18" identifier + number_literal) )))) + (subscript_expression "piVar1[4]" identifier [ number_literal ]))) ;) (expression_statement "uVar2 = piVar1[5];" (assignment_expression "uVar2 = piVar1[5]" identifier = (subscript_expression "piVar1[5]" identifier [ number_literal ])) ;) (if_statement "if (uVar2 != 0) {\n        if (uVar2 < 3) {\n          *(int *)((long)param_2 + 2) = *(int *)(param_1 + 0x18) + piVar1[8];\n          return;\n        }\n        if (uVar2 < 6) {\n          param_2[1] = *(int *)(param_1 + 0x18) + piVar1[8];\n          return;\n        }\n      }" if (parenthesized_expression "(uVar2 != 0)" ( (binary_expression "uVar2 != 0" identifier != number_literal) )) (compound_statement "{\n        if (uVar2 < 3) {\n          *(int *)((long)param_2 + 2) = *(int *)(param_1 + 0x18) + piVar1[8];\n          return;\n        }\n        if (uVar2 < 6) {\n          param_2[1] = *(int *)(param_1 + 0x18) + piVar1[8];\n          return;\n        }\n      }" { (if_statement "if (uVar2 < 3) {\n          *(int *)((long)param_2 + 2) = *(int *)(param_1 + 0x18) + piVar1[8];\n          return;\n        }" if (parenthesized_expression "(uVar2 < 3)" ( (binary_expression "uVar2 < 3" identifier < number_literal) )) (compound_statement "{\n          *(int *)((long)param_2 + 2) = *(int *)(param_1 + 0x18) + piVar1[8];\n          return;\n        }" { (expression_statement "*(int *)((long)param_2 + 2) = *(int *)(param_1 + 0x18) + piVar1[8];" (assignment_expression "*(int *)((long)param_2 + 2) = *(int *)(param_1 + 0x18) + piVar1[8]" (pointer_expression "*(int *)((long)param_2 + 2)" * (cast_expression "(int *)((long)param_2 + 2)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_2 + 2)" ( (binary_expression "(long)param_2 + 2" (cast_expression "(long)param_2" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) = (binary_expression "*(int *)(param_1 + 0x18) + piVar1[8]" (pointer_expression "*(int *)(param_1 + 0x18)" * (cast_expression "(int *)(param_1 + 0x18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x18)" ( (binary_expression "param_1 + 0x18" identifier + number_literal) )))) + (subscript_expression "piVar1[8]" identifier [ number_literal ]))) ;) (return_statement "return;" return ;) })) (if_statement "if (uVar2 < 6) {\n          param_2[1] = *(int *)(param_1 + 0x18) + piVar1[8];\n          return;\n        }" if (parenthesized_expression "(uVar2 < 6)" ( (binary_expression "uVar2 < 6" identifier < number_literal) )) (compound_statement "{\n          param_2[1] = *(int *)(param_1 + 0x18) + piVar1[8];\n          return;\n        }" { (expression_statement "param_2[1] = *(int *)(param_1 + 0x18) + piVar1[8];" (assignment_expression "param_2[1] = *(int *)(param_1 + 0x18) + piVar1[8]" (subscript_expression "param_2[1]" identifier [ number_literal ]) = (binary_expression "*(int *)(param_1 + 0x18) + piVar1[8]" (pointer_expression "*(int *)(param_1 + 0x18)" * (cast_expression "(int *)(param_1 + 0x18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x18)" ( (binary_expression "param_1 + 0x18" identifier + number_literal) )))) + (subscript_expression "piVar1[8]" identifier [ number_literal ]))) ;) (return_statement "return;" return ;) })) })) })) }) (else_clause "else {\n    *param_2 = uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 | *piVar1 * 0x1000000\n    ;\n    if (uVar3 != 0) {\n      if (uVar3 < 3) {\n        lVar5 = 2;\n      }\n      else {\n        if (5 < uVar3) goto LAB_00232334;\n        lVar5 = 4;\n      }\n      param_2 = (uint *)((long)param_2 + lVar5);\n      uVar2 = *(int *)(param_1 + 0x18) + piVar1[4];\n      *param_2 = uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 | uVar2 * 0x1000000\n      ;\n      uVar2 = piVar1[5];\n      if (uVar2 != 0) {\n        if (uVar2 < 3) {\n          uVar3 = *(int *)(param_1 + 0x18) + piVar1[8];\n          *(uint *)((long)param_2 + 2) =\n               uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 | uVar3 * 0x1000000;\n          return;\n        }\n        if (uVar2 < 6) {\n          uVar3 = *(int *)(param_1 + 0x18) + piVar1[8];\n          param_2[1] = uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                       uVar3 * 0x1000000;\n          return;\n        }\n      }\n    }\n  }" else (compound_statement "{\n    *param_2 = uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 | *piVar1 * 0x1000000\n    ;\n    if (uVar3 != 0) {\n      if (uVar3 < 3) {\n        lVar5 = 2;\n      }\n      else {\n        if (5 < uVar3) goto LAB_00232334;\n        lVar5 = 4;\n      }\n      param_2 = (uint *)((long)param_2 + lVar5);\n      uVar2 = *(int *)(param_1 + 0x18) + piVar1[4];\n      *param_2 = uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 | uVar2 * 0x1000000\n      ;\n      uVar2 = piVar1[5];\n      if (uVar2 != 0) {\n        if (uVar2 < 3) {\n          uVar3 = *(int *)(param_1 + 0x18) + piVar1[8];\n          *(uint *)((long)param_2 + 2) =\n               uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 | uVar3 * 0x1000000;\n          return;\n        }\n        if (uVar2 < 6) {\n          uVar3 = *(int *)(param_1 + 0x18) + piVar1[8];\n          param_2[1] = uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                       uVar3 * 0x1000000;\n          return;\n        }\n      }\n    }\n  }" { (expression_statement "*param_2 = uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 | *piVar1 * 0x1000000\n    ;" (assignment_expression "*param_2 = uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 | *piVar1 * 0x1000000" (pointer_expression "*param_2" * identifier) = (binary_expression "uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 | *piVar1 * 0x1000000" (binary_expression "uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8" (binary_expression "uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8" (binary_expression "uVar2 >> 0x18" identifier >> number_literal) | (binary_expression "(uVar2 & 0xff0000) >> 8" (parenthesized_expression "(uVar2 & 0xff0000)" ( (binary_expression "uVar2 & 0xff0000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar2 & 0xff00) << 8" (parenthesized_expression "(uVar2 & 0xff00)" ( (binary_expression "uVar2 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "*piVar1 * 0x1000000" (pointer_expression "*piVar1" * identifier) * number_literal))) ;) (if_statement "if (uVar3 != 0) {\n      if (uVar3 < 3) {\n        lVar5 = 2;\n      }\n      else {\n        if (5 < uVar3) goto LAB_00232334;\n        lVar5 = 4;\n      }\n      param_2 = (uint *)((long)param_2 + lVar5);\n      uVar2 = *(int *)(param_1 + 0x18) + piVar1[4];\n      *param_2 = uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 | uVar2 * 0x1000000\n      ;\n      uVar2 = piVar1[5];\n      if (uVar2 != 0) {\n        if (uVar2 < 3) {\n          uVar3 = *(int *)(param_1 + 0x18) + piVar1[8];\n          *(uint *)((long)param_2 + 2) =\n               uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 | uVar3 * 0x1000000;\n          return;\n        }\n        if (uVar2 < 6) {\n          uVar3 = *(int *)(param_1 + 0x18) + piVar1[8];\n          param_2[1] = uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                       uVar3 * 0x1000000;\n          return;\n        }\n      }\n    }" if (parenthesized_expression "(uVar3 != 0)" ( (binary_expression "uVar3 != 0" identifier != number_literal) )) (compound_statement "{\n      if (uVar3 < 3) {\n        lVar5 = 2;\n      }\n      else {\n        if (5 < uVar3) goto LAB_00232334;\n        lVar5 = 4;\n      }\n      param_2 = (uint *)((long)param_2 + lVar5);\n      uVar2 = *(int *)(param_1 + 0x18) + piVar1[4];\n      *param_2 = uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 | uVar2 * 0x1000000\n      ;\n      uVar2 = piVar1[5];\n      if (uVar2 != 0) {\n        if (uVar2 < 3) {\n          uVar3 = *(int *)(param_1 + 0x18) + piVar1[8];\n          *(uint *)((long)param_2 + 2) =\n               uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 | uVar3 * 0x1000000;\n          return;\n        }\n        if (uVar2 < 6) {\n          uVar3 = *(int *)(param_1 + 0x18) + piVar1[8];\n          param_2[1] = uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                       uVar3 * 0x1000000;\n          return;\n        }\n      }\n    }" { (if_statement "if (uVar3 < 3) {\n        lVar5 = 2;\n      }\n      else {\n        if (5 < uVar3) goto LAB_00232334;\n        lVar5 = 4;\n      }" if (parenthesized_expression "(uVar3 < 3)" ( (binary_expression "uVar3 < 3" identifier < number_literal) )) (compound_statement "{\n        lVar5 = 2;\n      }" { (expression_statement "lVar5 = 2;" (assignment_expression "lVar5 = 2" identifier = number_literal) ;) }) (else_clause "else {\n        if (5 < uVar3) goto LAB_00232334;\n        lVar5 = 4;\n      }" else (compound_statement "{\n        if (5 < uVar3) goto LAB_00232334;\n        lVar5 = 4;\n      }" { (if_statement "if (5 < uVar3) goto LAB_00232334;" if (parenthesized_expression "(5 < uVar3)" ( (binary_expression "5 < uVar3" number_literal < identifier) )) (goto_statement "goto LAB_00232334;" goto statement_identifier ;)) (expression_statement "lVar5 = 4;" (assignment_expression "lVar5 = 4" identifier = number_literal) ;) }))) (expression_statement "param_2 = (uint *)((long)param_2 + lVar5);" (assignment_expression "param_2 = (uint *)((long)param_2 + lVar5)" identifier = (cast_expression "(uint *)((long)param_2 + lVar5)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_2 + lVar5)" ( (binary_expression "(long)param_2 + lVar5" (cast_expression "(long)param_2" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + identifier) )))) ;) (expression_statement "uVar2 = *(int *)(param_1 + 0x18) + piVar1[4];" (assignment_expression "uVar2 = *(int *)(param_1 + 0x18) + piVar1[4]" identifier = (binary_expression "*(int *)(param_1 + 0x18) + piVar1[4]" (pointer_expression "*(int *)(param_1 + 0x18)" * (cast_expression "(int *)(param_1 + 0x18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x18)" ( (binary_expression "param_1 + 0x18" identifier + number_literal) )))) + (subscript_expression "piVar1[4]" identifier [ number_literal ]))) ;) (expression_statement "*param_2 = uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 | uVar2 * 0x1000000\n      ;" (assignment_expression "*param_2 = uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 | uVar2 * 0x1000000" (pointer_expression "*param_2" * identifier) = (binary_expression "uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 | uVar2 * 0x1000000" (binary_expression "uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8" (binary_expression "uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8" (binary_expression "uVar2 >> 0x18" identifier >> number_literal) | (binary_expression "(uVar2 & 0xff0000) >> 8" (parenthesized_expression "(uVar2 & 0xff0000)" ( (binary_expression "uVar2 & 0xff0000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar2 & 0xff00) << 8" (parenthesized_expression "(uVar2 & 0xff00)" ( (binary_expression "uVar2 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "uVar2 * 0x1000000" identifier * number_literal))) ;) (expression_statement "uVar2 = piVar1[5];" (assignment_expression "uVar2 = piVar1[5]" identifier = (subscript_expression "piVar1[5]" identifier [ number_literal ])) ;) (if_statement "if (uVar2 != 0) {\n        if (uVar2 < 3) {\n          uVar3 = *(int *)(param_1 + 0x18) + piVar1[8];\n          *(uint *)((long)param_2 + 2) =\n               uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 | uVar3 * 0x1000000;\n          return;\n        }\n        if (uVar2 < 6) {\n          uVar3 = *(int *)(param_1 + 0x18) + piVar1[8];\n          param_2[1] = uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                       uVar3 * 0x1000000;\n          return;\n        }\n      }" if (parenthesized_expression "(uVar2 != 0)" ( (binary_expression "uVar2 != 0" identifier != number_literal) )) (compound_statement "{\n        if (uVar2 < 3) {\n          uVar3 = *(int *)(param_1 + 0x18) + piVar1[8];\n          *(uint *)((long)param_2 + 2) =\n               uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 | uVar3 * 0x1000000;\n          return;\n        }\n        if (uVar2 < 6) {\n          uVar3 = *(int *)(param_1 + 0x18) + piVar1[8];\n          param_2[1] = uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                       uVar3 * 0x1000000;\n          return;\n        }\n      }" { (if_statement "if (uVar2 < 3) {\n          uVar3 = *(int *)(param_1 + 0x18) + piVar1[8];\n          *(uint *)((long)param_2 + 2) =\n               uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 | uVar3 * 0x1000000;\n          return;\n        }" if (parenthesized_expression "(uVar2 < 3)" ( (binary_expression "uVar2 < 3" identifier < number_literal) )) (compound_statement "{\n          uVar3 = *(int *)(param_1 + 0x18) + piVar1[8];\n          *(uint *)((long)param_2 + 2) =\n               uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 | uVar3 * 0x1000000;\n          return;\n        }" { (expression_statement "uVar3 = *(int *)(param_1 + 0x18) + piVar1[8];" (assignment_expression "uVar3 = *(int *)(param_1 + 0x18) + piVar1[8]" identifier = (binary_expression "*(int *)(param_1 + 0x18) + piVar1[8]" (pointer_expression "*(int *)(param_1 + 0x18)" * (cast_expression "(int *)(param_1 + 0x18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x18)" ( (binary_expression "param_1 + 0x18" identifier + number_literal) )))) + (subscript_expression "piVar1[8]" identifier [ number_literal ]))) ;) (expression_statement "*(uint *)((long)param_2 + 2) =\n               uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 | uVar3 * 0x1000000;" (assignment_expression "*(uint *)((long)param_2 + 2) =\n               uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 | uVar3 * 0x1000000" (pointer_expression "*(uint *)((long)param_2 + 2)" * (cast_expression "(uint *)((long)param_2 + 2)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_2 + 2)" ( (binary_expression "(long)param_2 + 2" (cast_expression "(long)param_2" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) = (binary_expression "uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 | uVar3 * 0x1000000" (binary_expression "uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8" (binary_expression "uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8" (binary_expression "uVar3 >> 0x18" identifier >> number_literal) | (binary_expression "(uVar3 & 0xff0000) >> 8" (parenthesized_expression "(uVar3 & 0xff0000)" ( (binary_expression "uVar3 & 0xff0000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar3 & 0xff00) << 8" (parenthesized_expression "(uVar3 & 0xff00)" ( (binary_expression "uVar3 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "uVar3 * 0x1000000" identifier * number_literal))) ;) (return_statement "return;" return ;) })) (if_statement "if (uVar2 < 6) {\n          uVar3 = *(int *)(param_1 + 0x18) + piVar1[8];\n          param_2[1] = uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                       uVar3 * 0x1000000;\n          return;\n        }" if (parenthesized_expression "(uVar2 < 6)" ( (binary_expression "uVar2 < 6" identifier < number_literal) )) (compound_statement "{\n          uVar3 = *(int *)(param_1 + 0x18) + piVar1[8];\n          param_2[1] = uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                       uVar3 * 0x1000000;\n          return;\n        }" { (expression_statement "uVar3 = *(int *)(param_1 + 0x18) + piVar1[8];" (assignment_expression "uVar3 = *(int *)(param_1 + 0x18) + piVar1[8]" identifier = (binary_expression "*(int *)(param_1 + 0x18) + piVar1[8]" (pointer_expression "*(int *)(param_1 + 0x18)" * (cast_expression "(int *)(param_1 + 0x18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x18)" ( (binary_expression "param_1 + 0x18" identifier + number_literal) )))) + (subscript_expression "piVar1[8]" identifier [ number_literal ]))) ;) (expression_statement "param_2[1] = uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                       uVar3 * 0x1000000;" (assignment_expression "param_2[1] = uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                       uVar3 * 0x1000000" (subscript_expression "param_2[1]" identifier [ number_literal ]) = (binary_expression "uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                       uVar3 * 0x1000000" (binary_expression "uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8" (binary_expression "uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8" (binary_expression "uVar3 >> 0x18" identifier >> number_literal) | (binary_expression "(uVar3 & 0xff0000) >> 8" (parenthesized_expression "(uVar3 & 0xff0000)" ( (binary_expression "uVar3 & 0xff0000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar3 & 0xff00) << 8" (parenthesized_expression "(uVar3 & 0xff00)" ( (binary_expression "uVar3 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "uVar3 * 0x1000000" identifier * number_literal))) ;) (return_statement "return;" return ;) })) })) })) }))) (labeled_statement "LAB_00232334:\n  FUN_00230fb0();" statement_identifier : (expression_statement "FUN_00230fb0();" (call_expression "FUN_00230fb0()" identifier (argument_list "()" ( ))) ;)) (expression_statement "uVar6 = extraout_EDX + (((-8 - param_6) + uVar3) - param_4);" (assignment_expression "uVar6 = extraout_EDX + (((-8 - param_6) + uVar3) - param_4)" identifier = (binary_expression "extraout_EDX + (((-8 - param_6) + uVar3) - param_4)" identifier + (parenthesized_expression "(((-8 - param_6) + uVar3) - param_4)" ( (binary_expression "((-8 - param_6) + uVar3) - param_4" (parenthesized_expression "((-8 - param_6) + uVar3)" ( (binary_expression "(-8 - param_6) + uVar3" (parenthesized_expression "(-8 - param_6)" ( (binary_expression "-8 - param_6" number_literal - identifier) )) + identifier) )) - identifier) )))) ;) (expression_statement "uVar3 = (int)uVar6 >> 0x1c | 0xe28fc200;" (assignment_expression "uVar3 = (int)uVar6 >> 0x1c | 0xe28fc200" identifier = (binary_expression "(int)uVar6 >> 0x1c | 0xe28fc200" (binary_expression "(int)uVar6 >> 0x1c" (cast_expression "(int)uVar6" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal) | number_literal)) ;) (expression_statement "uVar2 = (int)uVar6 >> 0x14 & 0xff;" (assignment_expression "uVar2 = (int)uVar6 >> 0x14 & 0xff" identifier = (binary_expression "(int)uVar6 >> 0x14 & 0xff" (binary_expression "(int)uVar6 >> 0x14" (cast_expression "(int)uVar6" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal) & number_literal)) ;) (expression_statement "uVar7 = uVar6 & 0xfff | 0xe5bcf000;" (assignment_expression "uVar7 = uVar6 & 0xfff | 0xe5bcf000" identifier = (binary_expression "uVar6 & 0xfff | 0xe5bcf000" (binary_expression "uVar6 & 0xfff" identifier & number_literal) | number_literal)) ;) (expression_statement "uVar4 = (int)uVar6 >> 0xc & 0xff;" (assignment_expression "uVar4 = (int)uVar6 >> 0xc & 0xff" identifier = (binary_expression "(int)uVar6 >> 0xc & 0xff" (binary_expression "(int)uVar6 >> 0xc" (cast_expression "(int)uVar6" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal) & number_literal)) ;) (if_statement "if (*(long *)(PTR_DAT_0067cb08 + 0x10) == 0) {\n                    /* WARNING: Subroutine does not return */\n    FUN_00231730();\n  }" if (parenthesized_expression "(*(long *)(PTR_DAT_0067cb08 + 0x10) == 0)" ( (binary_expression "*(long *)(PTR_DAT_0067cb08 + 0x10) == 0" (pointer_expression "*(long *)(PTR_DAT_0067cb08 + 0x10)" * (cast_expression "(long *)(PTR_DAT_0067cb08 + 0x10)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_0067cb08 + 0x10)" ( (binary_expression "PTR_DAT_0067cb08 + 0x10" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    FUN_00231730();\n  }" { comment (expression_statement "FUN_00231730();" (call_expression "FUN_00231730()" identifier (argument_list "()" ( ))) ;) })) (if_statement "if (*(char *)(*(long *)(PTR_DAT_0067cb08 + 0x10) + 0x671) != '\0') {\n    *param_2 = uVar3;\n    param_2[1] = uVar2 | 0xe28cc600;\n    param_2[2] = uVar4 | 0xe28cca00;\n    param_2[3] = uVar7;\n    return;\n  }" if (parenthesized_expression "(*(char *)(*(long *)(PTR_DAT_0067cb08 + 0x10) + 0x671) != '\0')" ( (binary_expression "*(char *)(*(long *)(PTR_DAT_0067cb08 + 0x10) + 0x671) != '\0'" (pointer_expression "*(char *)(*(long *)(PTR_DAT_0067cb08 + 0x10) + 0x671)" * (cast_expression "(char *)(*(long *)(PTR_DAT_0067cb08 + 0x10) + 0x671)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(PTR_DAT_0067cb08 + 0x10) + 0x671)" ( (binary_expression "*(long *)(PTR_DAT_0067cb08 + 0x10) + 0x671" (pointer_expression "*(long *)(PTR_DAT_0067cb08 + 0x10)" * (cast_expression "(long *)(PTR_DAT_0067cb08 + 0x10)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_0067cb08 + 0x10)" ( (binary_expression "PTR_DAT_0067cb08 + 0x10" identifier + number_literal) )))) + number_literal) )))) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    *param_2 = uVar3;\n    param_2[1] = uVar2 | 0xe28cc600;\n    param_2[2] = uVar4 | 0xe28cca00;\n    param_2[3] = uVar7;\n    return;\n  }" { (expression_statement "*param_2 = uVar3;" (assignment_expression "*param_2 = uVar3" (pointer_expression "*param_2" * identifier) = identifier) ;) (expression_statement "param_2[1] = uVar2 | 0xe28cc600;" (assignment_expression "param_2[1] = uVar2 | 0xe28cc600" (subscript_expression "param_2[1]" identifier [ number_literal ]) = (binary_expression "uVar2 | 0xe28cc600" identifier | number_literal)) ;) (expression_statement "param_2[2] = uVar4 | 0xe28cca00;" (assignment_expression "param_2[2] = uVar4 | 0xe28cca00" (subscript_expression "param_2[2]" identifier [ number_literal ]) = (binary_expression "uVar4 | 0xe28cca00" identifier | number_literal)) ;) (expression_statement "param_2[3] = uVar7;" (assignment_expression "param_2[3] = uVar7" (subscript_expression "param_2[3]" identifier [ number_literal ]) = identifier) ;) (return_statement "return;" return ;) })) (expression_statement "*param_2 = uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n             ((int)uVar6 >> 0x1c) << 0x18;" (assignment_expression "*param_2 = uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n             ((int)uVar6 >> 0x1c) << 0x18" (pointer_expression "*param_2" * identifier) = (binary_expression "uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n             ((int)uVar6 >> 0x1c) << 0x18" (binary_expression "uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8" (binary_expression "uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8" (binary_expression "uVar3 >> 0x18" identifier >> number_literal) | (binary_expression "(uVar3 & 0xff0000) >> 8" (parenthesized_expression "(uVar3 & 0xff0000)" ( (binary_expression "uVar3 & 0xff0000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar3 & 0xff00) << 8" (parenthesized_expression "(uVar3 & 0xff00)" ( (binary_expression "uVar3 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "((int)uVar6 >> 0x1c) << 0x18" (parenthesized_expression "((int)uVar6 >> 0x1c)" ( (binary_expression "(int)uVar6 >> 0x1c" (cast_expression "(int)uVar6" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal) )) << number_literal))) ;) (expression_statement "param_2[1] = uVar2 << 0x18 | 0xc68ce2;" (assignment_expression "param_2[1] = uVar2 << 0x18 | 0xc68ce2" (subscript_expression "param_2[1]" identifier [ number_literal ]) = (binary_expression "uVar2 << 0x18 | 0xc68ce2" (binary_expression "uVar2 << 0x18" identifier << number_literal) | number_literal)) ;) (expression_statement "param_2[2] = uVar4 << 0x18 | 0xca8ce2;" (assignment_expression "param_2[2] = uVar4 << 0x18 | 0xca8ce2" (subscript_expression "param_2[2]" identifier [ number_literal ]) = (binary_expression "uVar4 << 0x18 | 0xca8ce2" (binary_expression "uVar4 << 0x18" identifier << number_literal) | number_literal)) ;) (expression_statement "param_2[3] = (uVar7 & 0xff00) << 8 | 0xbce5 | (uVar6 & 0xfff) << 0x18;" (assignment_expression "param_2[3] = (uVar7 & 0xff00) << 8 | 0xbce5 | (uVar6 & 0xfff) << 0x18" (subscript_expression "param_2[3]" identifier [ number_literal ]) = (binary_expression "(uVar7 & 0xff00) << 8 | 0xbce5 | (uVar6 & 0xfff) << 0x18" (binary_expression "(uVar7 & 0xff00) << 8 | 0xbce5" (binary_expression "(uVar7 & 0xff00) << 8" (parenthesized_expression "(uVar7 & 0xff00)" ( (binary_expression "uVar7 & 0xff00" identifier & number_literal) )) << number_literal) | number_literal) | (binary_expression "(uVar6 & 0xfff) << 0x18" (parenthesized_expression "(uVar6 & 0xfff)" ( (binary_expression "uVar6 & 0xfff" identifier & number_literal) )) << number_literal))) ;) (return_statement "return;" return ;) })))
(translation_unit "/* WARNING: Enum "<anon>": Some values do not have unique names */\n/* DWARF original prototype: void do_write(Arm_v4bx_stub * this, uchar * view, section_size_type\n   view_size, bool big_endian) */\n\nvoid __thiscall\nanon_unknown.dwarf_9b9b16::Arm_v4bx_stub::do_write\n          (Arm_v4bx_stub *this,uchar *view,section_size_type view_size,bool big_endian)\n\n{\n  Type TVar1;\n  Insn_template *pIVar2;\n  uint uVar3;\n  long lVar4;\n  uint *puVar5;\n  int *piVar6;\n  \n  pIVar2 = ((this->super_Stub).stub_template_)->insns_;\n  TVar1 = pIVar2->type_;\n  uVar3 = this->reg_ * 0x10000 + pIVar2->data_;\n  if (big_endian) {\n    *(uint *)view =\n         uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 | pIVar2->data_ * 0x1000000\n    ;\n    if (TVar1 != 0) {\n      if (TVar1 < THUMB32_TYPE) {\n        lVar4 = 2;\n      }\n      else {\n        if (DATA_TYPE < TVar1) goto LAB_00232334;\n        lVar4 = 4;\n      }\n      puVar5 = (uint *)(view + lVar4);\n      uVar3 = this->reg_ + pIVar2[1].data_;\n      *puVar5 = uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 | uVar3 * 0x1000000;\n      TVar1 = pIVar2[1].type_;\n      if (TVar1 != 0) {\n        if (TVar1 < THUMB32_TYPE) {\n          uVar3 = this->reg_ + pIVar2[2].data_;\n          *(uint *)((long)puVar5 + 2) =\n               uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 | uVar3 * 0x1000000;\n          return;\n        }\n        if (TVar1 < (ARM_TYPE|THUMB16_SPECIAL_TYPE)) {\n          uVar3 = this->reg_ + pIVar2[2].data_;\n          puVar5[1] = uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                      uVar3 * 0x1000000;\n          return;\n        }\n      }\n    }\n  }\n  else {\n    *(uint *)view = uVar3;\n    if (TVar1 != 0) {\n      if (TVar1 < THUMB32_TYPE) {\n        lVar4 = 2;\n      }\n      else {\n        if (DATA_TYPE < TVar1) goto LAB_00232334;\n        lVar4 = 4;\n      }\n      piVar6 = (int *)(view + lVar4);\n      *piVar6 = this->reg_ + pIVar2[1].data_;\n      TVar1 = pIVar2[1].type_;\n      if (TVar1 != 0) {\n        if (TVar1 < THUMB32_TYPE) {\n          *(uint32_t *)((long)piVar6 + 2) = this->reg_ + pIVar2[2].data_;\n          return;\n        }\n        if (TVar1 < (ARM_TYPE|THUMB16_SPECIAL_TYPE)) {\n          piVar6[1] = this->reg_ + pIVar2[2].data_;\n          return;\n        }\n      }\n    }\n  }\nLAB_00232334:\n                    /* WARNING: Subroutine does not return */\n  Insn_template::size((Insn_template *)this);\n}\n\n" comment comment (function_definition "void __thiscall\nanon_unknown.dwarf_9b9b16::Arm_v4bx_stub::do_write\n          (Arm_v4bx_stub *this,uchar *view,section_size_type view_size,bool big_endian)\n\n{\n  Type TVar1;\n  Insn_template *pIVar2;\n  uint uVar3;\n  long lVar4;\n  uint *puVar5;\n  int *piVar6;\n  \n  pIVar2 = ((this->super_Stub).stub_template_)->insns_;\n  TVar1 = pIVar2->type_;\n  uVar3 = this->reg_ * 0x10000 + pIVar2->data_;\n  if (big_endian) {\n    *(uint *)view =\n         uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 | pIVar2->data_ * 0x1000000\n    ;\n    if (TVar1 != 0) {\n      if (TVar1 < THUMB32_TYPE) {\n        lVar4 = 2;\n      }\n      else {\n        if (DATA_TYPE < TVar1) goto LAB_00232334;\n        lVar4 = 4;\n      }\n      puVar5 = (uint *)(view + lVar4);\n      uVar3 = this->reg_ + pIVar2[1].data_;\n      *puVar5 = uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 | uVar3 * 0x1000000;\n      TVar1 = pIVar2[1].type_;\n      if (TVar1 != 0) {\n        if (TVar1 < THUMB32_TYPE) {\n          uVar3 = this->reg_ + pIVar2[2].data_;\n          *(uint *)((long)puVar5 + 2) =\n               uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 | uVar3 * 0x1000000;\n          return;\n        }\n        if (TVar1 < (ARM_TYPE|THUMB16_SPECIAL_TYPE)) {\n          uVar3 = this->reg_ + pIVar2[2].data_;\n          puVar5[1] = uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                      uVar3 * 0x1000000;\n          return;\n        }\n      }\n    }\n  }\n  else {\n    *(uint *)view = uVar3;\n    if (TVar1 != 0) {\n      if (TVar1 < THUMB32_TYPE) {\n        lVar4 = 2;\n      }\n      else {\n        if (DATA_TYPE < TVar1) goto LAB_00232334;\n        lVar4 = 4;\n      }\n      piVar6 = (int *)(view + lVar4);\n      *piVar6 = this->reg_ + pIVar2[1].data_;\n      TVar1 = pIVar2[1].type_;\n      if (TVar1 != 0) {\n        if (TVar1 < THUMB32_TYPE) {\n          *(uint32_t *)((long)piVar6 + 2) = this->reg_ + pIVar2[2].data_;\n          return;\n        }\n        if (TVar1 < (ARM_TYPE|THUMB16_SPECIAL_TYPE)) {\n          piVar6[1] = this->reg_ + pIVar2[2].data_;\n          return;\n        }\n      }\n    }\n  }\nLAB_00232334:\n                    /* WARNING: Subroutine does not return */\n  Insn_template::size((Insn_template *)this);\n}" primitive_type (ms_call_modifier "__thiscall" __thiscall) (ERROR "anon_unknown.dwarf_9b9b16::Arm_v4bx_stub::" identifier . identifier : : identifier : :) (function_declarator "do_write\n          (Arm_v4bx_stub *this,uchar *view,section_size_type view_size,bool big_endian)" identifier (parameter_list "(Arm_v4bx_stub *this,uchar *view,section_size_type view_size,bool big_endian)" ( (parameter_declaration "Arm_v4bx_stub *this" type_identifier (pointer_declarator "*this" * identifier)) , (parameter_declaration "uchar *view" type_identifier (pointer_declarator "*view" * identifier)) , (parameter_declaration "section_size_type view_size" type_identifier identifier) , (parameter_declaration "bool big_endian" primitive_type identifier) ))) (compound_statement "{\n  Type TVar1;\n  Insn_template *pIVar2;\n  uint uVar3;\n  long lVar4;\n  uint *puVar5;\n  int *piVar6;\n  \n  pIVar2 = ((this->super_Stub).stub_template_)->insns_;\n  TVar1 = pIVar2->type_;\n  uVar3 = this->reg_ * 0x10000 + pIVar2->data_;\n  if (big_endian) {\n    *(uint *)view =\n         uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 | pIVar2->data_ * 0x1000000\n    ;\n    if (TVar1 != 0) {\n      if (TVar1 < THUMB32_TYPE) {\n        lVar4 = 2;\n      }\n      else {\n        if (DATA_TYPE < TVar1) goto LAB_00232334;\n        lVar4 = 4;\n      }\n      puVar5 = (uint *)(view + lVar4);\n      uVar3 = this->reg_ + pIVar2[1].data_;\n      *puVar5 = uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 | uVar3 * 0x1000000;\n      TVar1 = pIVar2[1].type_;\n      if (TVar1 != 0) {\n        if (TVar1 < THUMB32_TYPE) {\n          uVar3 = this->reg_ + pIVar2[2].data_;\n          *(uint *)((long)puVar5 + 2) =\n               uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 | uVar3 * 0x1000000;\n          return;\n        }\n        if (TVar1 < (ARM_TYPE|THUMB16_SPECIAL_TYPE)) {\n          uVar3 = this->reg_ + pIVar2[2].data_;\n          puVar5[1] = uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                      uVar3 * 0x1000000;\n          return;\n        }\n      }\n    }\n  }\n  else {\n    *(uint *)view = uVar3;\n    if (TVar1 != 0) {\n      if (TVar1 < THUMB32_TYPE) {\n        lVar4 = 2;\n      }\n      else {\n        if (DATA_TYPE < TVar1) goto LAB_00232334;\n        lVar4 = 4;\n      }\n      piVar6 = (int *)(view + lVar4);\n      *piVar6 = this->reg_ + pIVar2[1].data_;\n      TVar1 = pIVar2[1].type_;\n      if (TVar1 != 0) {\n        if (TVar1 < THUMB32_TYPE) {\n          *(uint32_t *)((long)piVar6 + 2) = this->reg_ + pIVar2[2].data_;\n          return;\n        }\n        if (TVar1 < (ARM_TYPE|THUMB16_SPECIAL_TYPE)) {\n          piVar6[1] = this->reg_ + pIVar2[2].data_;\n          return;\n        }\n      }\n    }\n  }\nLAB_00232334:\n                    /* WARNING: Subroutine does not return */\n  Insn_template::size((Insn_template *)this);\n}" { (declaration "Type TVar1;" type_identifier identifier ;) (declaration "Insn_template *pIVar2;" type_identifier (pointer_declarator "*pIVar2" * identifier) ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "long lVar4;" (sized_type_specifier "long" long) identifier ;) (declaration "uint *puVar5;" type_identifier (pointer_declarator "*puVar5" * identifier) ;) (declaration "int *piVar6;" primitive_type (pointer_declarator "*piVar6" * identifier) ;) (expression_statement "pIVar2 = ((this->super_Stub).stub_template_)->insns_;" (assignment_expression "pIVar2 = ((this->super_Stub).stub_template_)->insns_" identifier = (field_expression "((this->super_Stub).stub_template_)->insns_" (parenthesized_expression "((this->super_Stub).stub_template_)" ( (field_expression "(this->super_Stub).stub_template_" (parenthesized_expression "(this->super_Stub)" ( (field_expression "this->super_Stub" identifier -> field_identifier) )) . field_identifier) )) -> field_identifier)) ;) (expression_statement "TVar1 = pIVar2->type_;" (assignment_expression "TVar1 = pIVar2->type_" identifier = (field_expression "pIVar2->type_" identifier -> field_identifier)) ;) (expression_statement "uVar3 = this->reg_ * 0x10000 + pIVar2->data_;" (assignment_expression "uVar3 = this->reg_ * 0x10000 + pIVar2->data_" identifier = (binary_expression "this->reg_ * 0x10000 + pIVar2->data_" (binary_expression "this->reg_ * 0x10000" (field_expression "this->reg_" identifier -> field_identifier) * number_literal) + (field_expression "pIVar2->data_" identifier -> field_identifier))) ;) (if_statement "if (big_endian) {\n    *(uint *)view =\n         uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 | pIVar2->data_ * 0x1000000\n    ;\n    if (TVar1 != 0) {\n      if (TVar1 < THUMB32_TYPE) {\n        lVar4 = 2;\n      }\n      else {\n        if (DATA_TYPE < TVar1) goto LAB_00232334;\n        lVar4 = 4;\n      }\n      puVar5 = (uint *)(view + lVar4);\n      uVar3 = this->reg_ + pIVar2[1].data_;\n      *puVar5 = uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 | uVar3 * 0x1000000;\n      TVar1 = pIVar2[1].type_;\n      if (TVar1 != 0) {\n        if (TVar1 < THUMB32_TYPE) {\n          uVar3 = this->reg_ + pIVar2[2].data_;\n          *(uint *)((long)puVar5 + 2) =\n               uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 | uVar3 * 0x1000000;\n          return;\n        }\n        if (TVar1 < (ARM_TYPE|THUMB16_SPECIAL_TYPE)) {\n          uVar3 = this->reg_ + pIVar2[2].data_;\n          puVar5[1] = uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                      uVar3 * 0x1000000;\n          return;\n        }\n      }\n    }\n  }\n  else {\n    *(uint *)view = uVar3;\n    if (TVar1 != 0) {\n      if (TVar1 < THUMB32_TYPE) {\n        lVar4 = 2;\n      }\n      else {\n        if (DATA_TYPE < TVar1) goto LAB_00232334;\n        lVar4 = 4;\n      }\n      piVar6 = (int *)(view + lVar4);\n      *piVar6 = this->reg_ + pIVar2[1].data_;\n      TVar1 = pIVar2[1].type_;\n      if (TVar1 != 0) {\n        if (TVar1 < THUMB32_TYPE) {\n          *(uint32_t *)((long)piVar6 + 2) = this->reg_ + pIVar2[2].data_;\n          return;\n        }\n        if (TVar1 < (ARM_TYPE|THUMB16_SPECIAL_TYPE)) {\n          piVar6[1] = this->reg_ + pIVar2[2].data_;\n          return;\n        }\n      }\n    }\n  }" if (parenthesized_expression "(big_endian)" ( identifier )) (compound_statement "{\n    *(uint *)view =\n         uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 | pIVar2->data_ * 0x1000000\n    ;\n    if (TVar1 != 0) {\n      if (TVar1 < THUMB32_TYPE) {\n        lVar4 = 2;\n      }\n      else {\n        if (DATA_TYPE < TVar1) goto LAB_00232334;\n        lVar4 = 4;\n      }\n      puVar5 = (uint *)(view + lVar4);\n      uVar3 = this->reg_ + pIVar2[1].data_;\n      *puVar5 = uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 | uVar3 * 0x1000000;\n      TVar1 = pIVar2[1].type_;\n      if (TVar1 != 0) {\n        if (TVar1 < THUMB32_TYPE) {\n          uVar3 = this->reg_ + pIVar2[2].data_;\n          *(uint *)((long)puVar5 + 2) =\n               uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 | uVar3 * 0x1000000;\n          return;\n        }\n        if (TVar1 < (ARM_TYPE|THUMB16_SPECIAL_TYPE)) {\n          uVar3 = this->reg_ + pIVar2[2].data_;\n          puVar5[1] = uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                      uVar3 * 0x1000000;\n          return;\n        }\n      }\n    }\n  }" { (expression_statement "*(uint *)view =\n         uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 | pIVar2->data_ * 0x1000000\n    ;" (assignment_expression "*(uint *)view =\n         uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 | pIVar2->data_ * 0x1000000" (pointer_expression "*(uint *)view" * (cast_expression "(uint *)view" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) = (binary_expression "uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 | pIVar2->data_ * 0x1000000" (binary_expression "uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8" (binary_expression "uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8" (binary_expression "uVar3 >> 0x18" identifier >> number_literal) | (binary_expression "(uVar3 & 0xff0000) >> 8" (parenthesized_expression "(uVar3 & 0xff0000)" ( (binary_expression "uVar3 & 0xff0000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar3 & 0xff00) << 8" (parenthesized_expression "(uVar3 & 0xff00)" ( (binary_expression "uVar3 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "pIVar2->data_ * 0x1000000" (field_expression "pIVar2->data_" identifier -> field_identifier) * number_literal))) ;) (if_statement "if (TVar1 != 0) {\n      if (TVar1 < THUMB32_TYPE) {\n        lVar4 = 2;\n      }\n      else {\n        if (DATA_TYPE < TVar1) goto LAB_00232334;\n        lVar4 = 4;\n      }\n      puVar5 = (uint *)(view + lVar4);\n      uVar3 = this->reg_ + pIVar2[1].data_;\n      *puVar5 = uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 | uVar3 * 0x1000000;\n      TVar1 = pIVar2[1].type_;\n      if (TVar1 != 0) {\n        if (TVar1 < THUMB32_TYPE) {\n          uVar3 = this->reg_ + pIVar2[2].data_;\n          *(uint *)((long)puVar5 + 2) =\n               uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 | uVar3 * 0x1000000;\n          return;\n        }\n        if (TVar1 < (ARM_TYPE|THUMB16_SPECIAL_TYPE)) {\n          uVar3 = this->reg_ + pIVar2[2].data_;\n          puVar5[1] = uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                      uVar3 * 0x1000000;\n          return;\n        }\n      }\n    }" if (parenthesized_expression "(TVar1 != 0)" ( (binary_expression "TVar1 != 0" identifier != number_literal) )) (compound_statement "{\n      if (TVar1 < THUMB32_TYPE) {\n        lVar4 = 2;\n      }\n      else {\n        if (DATA_TYPE < TVar1) goto LAB_00232334;\n        lVar4 = 4;\n      }\n      puVar5 = (uint *)(view + lVar4);\n      uVar3 = this->reg_ + pIVar2[1].data_;\n      *puVar5 = uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 | uVar3 * 0x1000000;\n      TVar1 = pIVar2[1].type_;\n      if (TVar1 != 0) {\n        if (TVar1 < THUMB32_TYPE) {\n          uVar3 = this->reg_ + pIVar2[2].data_;\n          *(uint *)((long)puVar5 + 2) =\n               uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 | uVar3 * 0x1000000;\n          return;\n        }\n        if (TVar1 < (ARM_TYPE|THUMB16_SPECIAL_TYPE)) {\n          uVar3 = this->reg_ + pIVar2[2].data_;\n          puVar5[1] = uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                      uVar3 * 0x1000000;\n          return;\n        }\n      }\n    }" { (if_statement "if (TVar1 < THUMB32_TYPE) {\n        lVar4 = 2;\n      }\n      else {\n        if (DATA_TYPE < TVar1) goto LAB_00232334;\n        lVar4 = 4;\n      }" if (parenthesized_expression "(TVar1 < THUMB32_TYPE)" ( (binary_expression "TVar1 < THUMB32_TYPE" identifier < identifier) )) (compound_statement "{\n        lVar4 = 2;\n      }" { (expression_statement "lVar4 = 2;" (assignment_expression "lVar4 = 2" identifier = number_literal) ;) }) (else_clause "else {\n        if (DATA_TYPE < TVar1) goto LAB_00232334;\n        lVar4 = 4;\n      }" else (compound_statement "{\n        if (DATA_TYPE < TVar1) goto LAB_00232334;\n        lVar4 = 4;\n      }" { (if_statement "if (DATA_TYPE < TVar1) goto LAB_00232334;" if (parenthesized_expression "(DATA_TYPE < TVar1)" ( (binary_expression "DATA_TYPE < TVar1" identifier < identifier) )) (goto_statement "goto LAB_00232334;" goto statement_identifier ;)) (expression_statement "lVar4 = 4;" (assignment_expression "lVar4 = 4" identifier = number_literal) ;) }))) (expression_statement "puVar5 = (uint *)(view + lVar4);" (assignment_expression "puVar5 = (uint *)(view + lVar4)" identifier = (cast_expression "(uint *)(view + lVar4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(view + lVar4)" ( (binary_expression "view + lVar4" identifier + identifier) )))) ;) (expression_statement "uVar3 = this->reg_ + pIVar2[1].data_;" (assignment_expression "uVar3 = this->reg_ + pIVar2[1].data_" identifier = (binary_expression "this->reg_ + pIVar2[1].data_" (field_expression "this->reg_" identifier -> field_identifier) + (field_expression "pIVar2[1].data_" (subscript_expression "pIVar2[1]" identifier [ number_literal ]) . field_identifier))) ;) (expression_statement "*puVar5 = uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 | uVar3 * 0x1000000;" (assignment_expression "*puVar5 = uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 | uVar3 * 0x1000000" (pointer_expression "*puVar5" * identifier) = (binary_expression "uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 | uVar3 * 0x1000000" (binary_expression "uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8" (binary_expression "uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8" (binary_expression "uVar3 >> 0x18" identifier >> number_literal) | (binary_expression "(uVar3 & 0xff0000) >> 8" (parenthesized_expression "(uVar3 & 0xff0000)" ( (binary_expression "uVar3 & 0xff0000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar3 & 0xff00) << 8" (parenthesized_expression "(uVar3 & 0xff00)" ( (binary_expression "uVar3 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "uVar3 * 0x1000000" identifier * number_literal))) ;) (expression_statement "TVar1 = pIVar2[1].type_;" (assignment_expression "TVar1 = pIVar2[1].type_" identifier = (field_expression "pIVar2[1].type_" (subscript_expression "pIVar2[1]" identifier [ number_literal ]) . field_identifier)) ;) (if_statement "if (TVar1 != 0) {\n        if (TVar1 < THUMB32_TYPE) {\n          uVar3 = this->reg_ + pIVar2[2].data_;\n          *(uint *)((long)puVar5 + 2) =\n               uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 | uVar3 * 0x1000000;\n          return;\n        }\n        if (TVar1 < (ARM_TYPE|THUMB16_SPECIAL_TYPE)) {\n          uVar3 = this->reg_ + pIVar2[2].data_;\n          puVar5[1] = uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                      uVar3 * 0x1000000;\n          return;\n        }\n      }" if (parenthesized_expression "(TVar1 != 0)" ( (binary_expression "TVar1 != 0" identifier != number_literal) )) (compound_statement "{\n        if (TVar1 < THUMB32_TYPE) {\n          uVar3 = this->reg_ + pIVar2[2].data_;\n          *(uint *)((long)puVar5 + 2) =\n               uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 | uVar3 * 0x1000000;\n          return;\n        }\n        if (TVar1 < (ARM_TYPE|THUMB16_SPECIAL_TYPE)) {\n          uVar3 = this->reg_ + pIVar2[2].data_;\n          puVar5[1] = uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                      uVar3 * 0x1000000;\n          return;\n        }\n      }" { (if_statement "if (TVar1 < THUMB32_TYPE) {\n          uVar3 = this->reg_ + pIVar2[2].data_;\n          *(uint *)((long)puVar5 + 2) =\n               uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 | uVar3 * 0x1000000;\n          return;\n        }" if (parenthesized_expression "(TVar1 < THUMB32_TYPE)" ( (binary_expression "TVar1 < THUMB32_TYPE" identifier < identifier) )) (compound_statement "{\n          uVar3 = this->reg_ + pIVar2[2].data_;\n          *(uint *)((long)puVar5 + 2) =\n               uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 | uVar3 * 0x1000000;\n          return;\n        }" { (expression_statement "uVar3 = this->reg_ + pIVar2[2].data_;" (assignment_expression "uVar3 = this->reg_ + pIVar2[2].data_" identifier = (binary_expression "this->reg_ + pIVar2[2].data_" (field_expression "this->reg_" identifier -> field_identifier) + (field_expression "pIVar2[2].data_" (subscript_expression "pIVar2[2]" identifier [ number_literal ]) . field_identifier))) ;) (expression_statement "*(uint *)((long)puVar5 + 2) =\n               uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 | uVar3 * 0x1000000;" (assignment_expression "*(uint *)((long)puVar5 + 2) =\n               uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 | uVar3 * 0x1000000" (pointer_expression "*(uint *)((long)puVar5 + 2)" * (cast_expression "(uint *)((long)puVar5 + 2)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)puVar5 + 2)" ( (binary_expression "(long)puVar5 + 2" (cast_expression "(long)puVar5" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) = (binary_expression "uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 | uVar3 * 0x1000000" (binary_expression "uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8" (binary_expression "uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8" (binary_expression "uVar3 >> 0x18" identifier >> number_literal) | (binary_expression "(uVar3 & 0xff0000) >> 8" (parenthesized_expression "(uVar3 & 0xff0000)" ( (binary_expression "uVar3 & 0xff0000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar3 & 0xff00) << 8" (parenthesized_expression "(uVar3 & 0xff00)" ( (binary_expression "uVar3 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "uVar3 * 0x1000000" identifier * number_literal))) ;) (return_statement "return;" return ;) })) (if_statement "if (TVar1 < (ARM_TYPE|THUMB16_SPECIAL_TYPE)) {\n          uVar3 = this->reg_ + pIVar2[2].data_;\n          puVar5[1] = uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                      uVar3 * 0x1000000;\n          return;\n        }" if (parenthesized_expression "(TVar1 < (ARM_TYPE|THUMB16_SPECIAL_TYPE))" ( (binary_expression "TVar1 < (ARM_TYPE|THUMB16_SPECIAL_TYPE)" identifier < (parenthesized_expression "(ARM_TYPE|THUMB16_SPECIAL_TYPE)" ( (binary_expression "ARM_TYPE|THUMB16_SPECIAL_TYPE" identifier | identifier) ))) )) (compound_statement "{\n          uVar3 = this->reg_ + pIVar2[2].data_;\n          puVar5[1] = uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                      uVar3 * 0x1000000;\n          return;\n        }" { (expression_statement "uVar3 = this->reg_ + pIVar2[2].data_;" (assignment_expression "uVar3 = this->reg_ + pIVar2[2].data_" identifier = (binary_expression "this->reg_ + pIVar2[2].data_" (field_expression "this->reg_" identifier -> field_identifier) + (field_expression "pIVar2[2].data_" (subscript_expression "pIVar2[2]" identifier [ number_literal ]) . field_identifier))) ;) (expression_statement "puVar5[1] = uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                      uVar3 * 0x1000000;" (assignment_expression "puVar5[1] = uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                      uVar3 * 0x1000000" (subscript_expression "puVar5[1]" identifier [ number_literal ]) = (binary_expression "uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                      uVar3 * 0x1000000" (binary_expression "uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8" (binary_expression "uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8" (binary_expression "uVar3 >> 0x18" identifier >> number_literal) | (binary_expression "(uVar3 & 0xff0000) >> 8" (parenthesized_expression "(uVar3 & 0xff0000)" ( (binary_expression "uVar3 & 0xff0000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar3 & 0xff00) << 8" (parenthesized_expression "(uVar3 & 0xff00)" ( (binary_expression "uVar3 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "uVar3 * 0x1000000" identifier * number_literal))) ;) (return_statement "return;" return ;) })) })) })) }) (else_clause "else {\n    *(uint *)view = uVar3;\n    if (TVar1 != 0) {\n      if (TVar1 < THUMB32_TYPE) {\n        lVar4 = 2;\n      }\n      else {\n        if (DATA_TYPE < TVar1) goto LAB_00232334;\n        lVar4 = 4;\n      }\n      piVar6 = (int *)(view + lVar4);\n      *piVar6 = this->reg_ + pIVar2[1].data_;\n      TVar1 = pIVar2[1].type_;\n      if (TVar1 != 0) {\n        if (TVar1 < THUMB32_TYPE) {\n          *(uint32_t *)((long)piVar6 + 2) = this->reg_ + pIVar2[2].data_;\n          return;\n        }\n        if (TVar1 < (ARM_TYPE|THUMB16_SPECIAL_TYPE)) {\n          piVar6[1] = this->reg_ + pIVar2[2].data_;\n          return;\n        }\n      }\n    }\n  }" else (compound_statement "{\n    *(uint *)view = uVar3;\n    if (TVar1 != 0) {\n      if (TVar1 < THUMB32_TYPE) {\n        lVar4 = 2;\n      }\n      else {\n        if (DATA_TYPE < TVar1) goto LAB_00232334;\n        lVar4 = 4;\n      }\n      piVar6 = (int *)(view + lVar4);\n      *piVar6 = this->reg_ + pIVar2[1].data_;\n      TVar1 = pIVar2[1].type_;\n      if (TVar1 != 0) {\n        if (TVar1 < THUMB32_TYPE) {\n          *(uint32_t *)((long)piVar6 + 2) = this->reg_ + pIVar2[2].data_;\n          return;\n        }\n        if (TVar1 < (ARM_TYPE|THUMB16_SPECIAL_TYPE)) {\n          piVar6[1] = this->reg_ + pIVar2[2].data_;\n          return;\n        }\n      }\n    }\n  }" { (expression_statement "*(uint *)view = uVar3;" (assignment_expression "*(uint *)view = uVar3" (pointer_expression "*(uint *)view" * (cast_expression "(uint *)view" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) = identifier) ;) (if_statement "if (TVar1 != 0) {\n      if (TVar1 < THUMB32_TYPE) {\n        lVar4 = 2;\n      }\n      else {\n        if (DATA_TYPE < TVar1) goto LAB_00232334;\n        lVar4 = 4;\n      }\n      piVar6 = (int *)(view + lVar4);\n      *piVar6 = this->reg_ + pIVar2[1].data_;\n      TVar1 = pIVar2[1].type_;\n      if (TVar1 != 0) {\n        if (TVar1 < THUMB32_TYPE) {\n          *(uint32_t *)((long)piVar6 + 2) = this->reg_ + pIVar2[2].data_;\n          return;\n        }\n        if (TVar1 < (ARM_TYPE|THUMB16_SPECIAL_TYPE)) {\n          piVar6[1] = this->reg_ + pIVar2[2].data_;\n          return;\n        }\n      }\n    }" if (parenthesized_expression "(TVar1 != 0)" ( (binary_expression "TVar1 != 0" identifier != number_literal) )) (compound_statement "{\n      if (TVar1 < THUMB32_TYPE) {\n        lVar4 = 2;\n      }\n      else {\n        if (DATA_TYPE < TVar1) goto LAB_00232334;\n        lVar4 = 4;\n      }\n      piVar6 = (int *)(view + lVar4);\n      *piVar6 = this->reg_ + pIVar2[1].data_;\n      TVar1 = pIVar2[1].type_;\n      if (TVar1 != 0) {\n        if (TVar1 < THUMB32_TYPE) {\n          *(uint32_t *)((long)piVar6 + 2) = this->reg_ + pIVar2[2].data_;\n          return;\n        }\n        if (TVar1 < (ARM_TYPE|THUMB16_SPECIAL_TYPE)) {\n          piVar6[1] = this->reg_ + pIVar2[2].data_;\n          return;\n        }\n      }\n    }" { (if_statement "if (TVar1 < THUMB32_TYPE) {\n        lVar4 = 2;\n      }\n      else {\n        if (DATA_TYPE < TVar1) goto LAB_00232334;\n        lVar4 = 4;\n      }" if (parenthesized_expression "(TVar1 < THUMB32_TYPE)" ( (binary_expression "TVar1 < THUMB32_TYPE" identifier < identifier) )) (compound_statement "{\n        lVar4 = 2;\n      }" { (expression_statement "lVar4 = 2;" (assignment_expression "lVar4 = 2" identifier = number_literal) ;) }) (else_clause "else {\n        if (DATA_TYPE < TVar1) goto LAB_00232334;\n        lVar4 = 4;\n      }" else (compound_statement "{\n        if (DATA_TYPE < TVar1) goto LAB_00232334;\n        lVar4 = 4;\n      }" { (if_statement "if (DATA_TYPE < TVar1) goto LAB_00232334;" if (parenthesized_expression "(DATA_TYPE < TVar1)" ( (binary_expression "DATA_TYPE < TVar1" identifier < identifier) )) (goto_statement "goto LAB_00232334;" goto statement_identifier ;)) (expression_statement "lVar4 = 4;" (assignment_expression "lVar4 = 4" identifier = number_literal) ;) }))) (expression_statement "piVar6 = (int *)(view + lVar4);" (assignment_expression "piVar6 = (int *)(view + lVar4)" identifier = (cast_expression "(int *)(view + lVar4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(view + lVar4)" ( (binary_expression "view + lVar4" identifier + identifier) )))) ;) (expression_statement "*piVar6 = this->reg_ + pIVar2[1].data_;" (assignment_expression "*piVar6 = this->reg_ + pIVar2[1].data_" (pointer_expression "*piVar6" * identifier) = (binary_expression "this->reg_ + pIVar2[1].data_" (field_expression "this->reg_" identifier -> field_identifier) + (field_expression "pIVar2[1].data_" (subscript_expression "pIVar2[1]" identifier [ number_literal ]) . field_identifier))) ;) (expression_statement "TVar1 = pIVar2[1].type_;" (assignment_expression "TVar1 = pIVar2[1].type_" identifier = (field_expression "pIVar2[1].type_" (subscript_expression "pIVar2[1]" identifier [ number_literal ]) . field_identifier)) ;) (if_statement "if (TVar1 != 0) {\n        if (TVar1 < THUMB32_TYPE) {\n          *(uint32_t *)((long)piVar6 + 2) = this->reg_ + pIVar2[2].data_;\n          return;\n        }\n        if (TVar1 < (ARM_TYPE|THUMB16_SPECIAL_TYPE)) {\n          piVar6[1] = this->reg_ + pIVar2[2].data_;\n          return;\n        }\n      }" if (parenthesized_expression "(TVar1 != 0)" ( (binary_expression "TVar1 != 0" identifier != number_literal) )) (compound_statement "{\n        if (TVar1 < THUMB32_TYPE) {\n          *(uint32_t *)((long)piVar6 + 2) = this->reg_ + pIVar2[2].data_;\n          return;\n        }\n        if (TVar1 < (ARM_TYPE|THUMB16_SPECIAL_TYPE)) {\n          piVar6[1] = this->reg_ + pIVar2[2].data_;\n          return;\n        }\n      }" { (if_statement "if (TVar1 < THUMB32_TYPE) {\n          *(uint32_t *)((long)piVar6 + 2) = this->reg_ + pIVar2[2].data_;\n          return;\n        }" if (parenthesized_expression "(TVar1 < THUMB32_TYPE)" ( (binary_expression "TVar1 < THUMB32_TYPE" identifier < identifier) )) (compound_statement "{\n          *(uint32_t *)((long)piVar6 + 2) = this->reg_ + pIVar2[2].data_;\n          return;\n        }" { (expression_statement "*(uint32_t *)((long)piVar6 + 2) = this->reg_ + pIVar2[2].data_;" (assignment_expression "*(uint32_t *)((long)piVar6 + 2) = this->reg_ + pIVar2[2].data_" (pointer_expression "*(uint32_t *)((long)piVar6 + 2)" * (cast_expression "(uint32_t *)((long)piVar6 + 2)" ( (type_descriptor "uint32_t *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)piVar6 + 2)" ( (binary_expression "(long)piVar6 + 2" (cast_expression "(long)piVar6" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) = (binary_expression "this->reg_ + pIVar2[2].data_" (field_expression "this->reg_" identifier -> field_identifier) + (field_expression "pIVar2[2].data_" (subscript_expression "pIVar2[2]" identifier [ number_literal ]) . field_identifier))) ;) (return_statement "return;" return ;) })) (if_statement "if (TVar1 < (ARM_TYPE|THUMB16_SPECIAL_TYPE)) {\n          piVar6[1] = this->reg_ + pIVar2[2].data_;\n          return;\n        }" if (parenthesized_expression "(TVar1 < (ARM_TYPE|THUMB16_SPECIAL_TYPE))" ( (binary_expression "TVar1 < (ARM_TYPE|THUMB16_SPECIAL_TYPE)" identifier < (parenthesized_expression "(ARM_TYPE|THUMB16_SPECIAL_TYPE)" ( (binary_expression "ARM_TYPE|THUMB16_SPECIAL_TYPE" identifier | identifier) ))) )) (compound_statement "{\n          piVar6[1] = this->reg_ + pIVar2[2].data_;\n          return;\n        }" { (expression_statement "piVar6[1] = this->reg_ + pIVar2[2].data_;" (assignment_expression "piVar6[1] = this->reg_ + pIVar2[2].data_" (subscript_expression "piVar6[1]" identifier [ number_literal ]) = (binary_expression "this->reg_ + pIVar2[2].data_" (field_expression "this->reg_" identifier -> field_identifier) + (field_expression "pIVar2[2].data_" (subscript_expression "pIVar2[2]" identifier [ number_literal ]) . field_identifier))) ;) (return_statement "return;" return ;) })) })) })) }))) (labeled_statement "LAB_00232334:\n                    /* WARNING: Subroutine does not return */\n  Insn_template::size((Insn_template *)this);" statement_identifier : comment (labeled_statement "Insn_template::size((Insn_template *)this);" statement_identifier : (ERROR ":" :) (expression_statement "size((Insn_template *)this);" (call_expression "size((Insn_template *)this)" identifier (argument_list "((Insn_template *)this)" ( (cast_expression "(Insn_template *)this" ( (type_descriptor "Insn_template *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) ))) ;))) })))
(translation_unit "void FUN_00232240(long param_1,uint *param_2,undefined8 param_3,int param_4,undefined8 param_5,\n                 int param_6)\n\n{\n  int *piVar1;\n  uint uVar2;\n  uint uVar3;\n  uint uVar4;\n  long lVar5;\n  int extraout_EDX;\n  uint uVar6;\n  uint uVar7;\n  \n  piVar1 = *(int **)(*(long *)(param_1 + 8) + 8);\n  uVar3 = piVar1[1];\n  uVar2 = *(int *)(param_1 + 0x18) * 0x10000 + *piVar1;\n  if ((char)param_4 == '\0') {\n    *param_2 = uVar2;\n    if (uVar3 != 0) {\n      if (uVar3 < 3) {\n        lVar5 = 2;\n      }\n      else {\n        if (5 < uVar3) goto LAB_00232334;\n        lVar5 = 4;\n      }\n      param_2 = (uint *)((long)param_2 + lVar5);\n      *param_2 = *(int *)(param_1 + 0x18) + piVar1[4];\n      uVar2 = piVar1[5];\n      if (uVar2 != 0) {\n        if (uVar2 < 3) {\n          *(int *)((long)param_2 + 2) = *(int *)(param_1 + 0x18) + piVar1[8];\n          return;\n        }\n        if (uVar2 < 6) {\n          param_2[1] = *(int *)(param_1 + 0x18) + piVar1[8];\n          return;\n        }\n      }\n    }\n  }\n  else {\n    *param_2 = uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 | *piVar1 * 0x1000000\n    ;\n    if (uVar3 != 0) {\n      if (uVar3 < 3) {\n        lVar5 = 2;\n      }\n      else {\n        if (5 < uVar3) goto LAB_00232334;\n        lVar5 = 4;\n      }\n      param_2 = (uint *)((long)param_2 + lVar5);\n      uVar2 = *(int *)(param_1 + 0x18) + piVar1[4];\n      *param_2 = uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 | uVar2 * 0x1000000\n      ;\n      uVar2 = piVar1[5];\n      if (uVar2 != 0) {\n        if (uVar2 < 3) {\n          uVar3 = *(int *)(param_1 + 0x18) + piVar1[8];\n          *(uint *)((long)param_2 + 2) =\n               uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 | uVar3 * 0x1000000;\n          return;\n        }\n        if (uVar2 < 6) {\n          uVar3 = *(int *)(param_1 + 0x18) + piVar1[8];\n          param_2[1] = uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                       uVar3 * 0x1000000;\n          return;\n        }\n      }\n    }\n  }\nLAB_00232334:\n  FUN_00230fb0();\n  uVar6 = extraout_EDX + (((-8 - param_6) + uVar3) - param_4);\n  uVar3 = (int)uVar6 >> 0x1c | 0xe28fc200;\n  uVar2 = (int)uVar6 >> 0x14 & 0xff;\n  uVar7 = uVar6 & 0xfff | 0xe5bcf000;\n  uVar4 = (int)uVar6 >> 0xc & 0xff;\n  if (*(long *)(PTR_DAT_0067cb08 + 0x10) == 0) {\n                    \n    FUN_00231730();\n  }\n  if (*(char *)(*(long *)(PTR_DAT_0067cb08 + 0x10) + 0x671) != '\0') {\n    *param_2 = uVar3;\n    param_2[1] = uVar2 | 0xe28cc600;\n    param_2[2] = uVar4 | 0xe28cca00;\n    param_2[3] = uVar7;\n    return;\n  }\n  *param_2 = uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n             ((int)uVar6 >> 0x1c) << 0x18;\n  param_2[1] = uVar2 << 0x18 | 0xc68ce2;\n  param_2[2] = uVar4 << 0x18 | 0xca8ce2;\n  param_2[3] = (uVar7 & 0xff00) << 8 | 0xbce5 | (uVar6 & 0xfff) << 0x18;\n  return;\n}\n\n" (function_definition "void FUN_00232240(long param_1,uint *param_2,undefined8 param_3,int param_4,undefined8 param_5,\n                 int param_6)\n\n{\n  int *piVar1;\n  uint uVar2;\n  uint uVar3;\n  uint uVar4;\n  long lVar5;\n  int extraout_EDX;\n  uint uVar6;\n  uint uVar7;\n  \n  piVar1 = *(int **)(*(long *)(param_1 + 8) + 8);\n  uVar3 = piVar1[1];\n  uVar2 = *(int *)(param_1 + 0x18) * 0x10000 + *piVar1;\n  if ((char)param_4 == '\0') {\n    *param_2 = uVar2;\n    if (uVar3 != 0) {\n      if (uVar3 < 3) {\n        lVar5 = 2;\n      }\n      else {\n        if (5 < uVar3) goto LAB_00232334;\n        lVar5 = 4;\n      }\n      param_2 = (uint *)((long)param_2 + lVar5);\n      *param_2 = *(int *)(param_1 + 0x18) + piVar1[4];\n      uVar2 = piVar1[5];\n      if (uVar2 != 0) {\n        if (uVar2 < 3) {\n          *(int *)((long)param_2 + 2) = *(int *)(param_1 + 0x18) + piVar1[8];\n          return;\n        }\n        if (uVar2 < 6) {\n          param_2[1] = *(int *)(param_1 + 0x18) + piVar1[8];\n          return;\n        }\n      }\n    }\n  }\n  else {\n    *param_2 = uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 | *piVar1 * 0x1000000\n    ;\n    if (uVar3 != 0) {\n      if (uVar3 < 3) {\n        lVar5 = 2;\n      }\n      else {\n        if (5 < uVar3) goto LAB_00232334;\n        lVar5 = 4;\n      }\n      param_2 = (uint *)((long)param_2 + lVar5);\n      uVar2 = *(int *)(param_1 + 0x18) + piVar1[4];\n      *param_2 = uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 | uVar2 * 0x1000000\n      ;\n      uVar2 = piVar1[5];\n      if (uVar2 != 0) {\n        if (uVar2 < 3) {\n          uVar3 = *(int *)(param_1 + 0x18) + piVar1[8];\n          *(uint *)((long)param_2 + 2) =\n               uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 | uVar3 * 0x1000000;\n          return;\n        }\n        if (uVar2 < 6) {\n          uVar3 = *(int *)(param_1 + 0x18) + piVar1[8];\n          param_2[1] = uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                       uVar3 * 0x1000000;\n          return;\n        }\n      }\n    }\n  }\nLAB_00232334:\n  FUN_00230fb0();\n  uVar6 = extraout_EDX + (((-8 - param_6) + uVar3) - param_4);\n  uVar3 = (int)uVar6 >> 0x1c | 0xe28fc200;\n  uVar2 = (int)uVar6 >> 0x14 & 0xff;\n  uVar7 = uVar6 & 0xfff | 0xe5bcf000;\n  uVar4 = (int)uVar6 >> 0xc & 0xff;\n  if (*(long *)(PTR_DAT_0067cb08 + 0x10) == 0) {\n                    \n    FUN_00231730();\n  }\n  if (*(char *)(*(long *)(PTR_DAT_0067cb08 + 0x10) + 0x671) != '\0') {\n    *param_2 = uVar3;\n    param_2[1] = uVar2 | 0xe28cc600;\n    param_2[2] = uVar4 | 0xe28cca00;\n    param_2[3] = uVar7;\n    return;\n  }\n  *param_2 = uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n             ((int)uVar6 >> 0x1c) << 0x18;\n  param_2[1] = uVar2 << 0x18 | 0xc68ce2;\n  param_2[2] = uVar4 << 0x18 | 0xca8ce2;\n  param_2[3] = (uVar7 & 0xff00) << 8 | 0xbce5 | (uVar6 & 0xfff) << 0x18;\n  return;\n}" primitive_type (function_declarator "FUN_00232240(long param_1,uint *param_2,undefined8 param_3,int param_4,undefined8 param_5,\n                 int param_6)" identifier (parameter_list "(long param_1,uint *param_2,undefined8 param_3,int param_4,undefined8 param_5,\n                 int param_6)" ( (parameter_declaration "long param_1" (sized_type_specifier "long" long) identifier) , (parameter_declaration "uint *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "undefined8 param_3" type_identifier identifier) , (parameter_declaration "int param_4" primitive_type identifier) , (parameter_declaration "undefined8 param_5" type_identifier identifier) , (parameter_declaration "int param_6" primitive_type identifier) ))) (compound_statement "{\n  int *piVar1;\n  uint uVar2;\n  uint uVar3;\n  uint uVar4;\n  long lVar5;\n  int extraout_EDX;\n  uint uVar6;\n  uint uVar7;\n  \n  piVar1 = *(int **)(*(long *)(param_1 + 8) + 8);\n  uVar3 = piVar1[1];\n  uVar2 = *(int *)(param_1 + 0x18) * 0x10000 + *piVar1;\n  if ((char)param_4 == '\0') {\n    *param_2 = uVar2;\n    if (uVar3 != 0) {\n      if (uVar3 < 3) {\n        lVar5 = 2;\n      }\n      else {\n        if (5 < uVar3) goto LAB_00232334;\n        lVar5 = 4;\n      }\n      param_2 = (uint *)((long)param_2 + lVar5);\n      *param_2 = *(int *)(param_1 + 0x18) + piVar1[4];\n      uVar2 = piVar1[5];\n      if (uVar2 != 0) {\n        if (uVar2 < 3) {\n          *(int *)((long)param_2 + 2) = *(int *)(param_1 + 0x18) + piVar1[8];\n          return;\n        }\n        if (uVar2 < 6) {\n          param_2[1] = *(int *)(param_1 + 0x18) + piVar1[8];\n          return;\n        }\n      }\n    }\n  }\n  else {\n    *param_2 = uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 | *piVar1 * 0x1000000\n    ;\n    if (uVar3 != 0) {\n      if (uVar3 < 3) {\n        lVar5 = 2;\n      }\n      else {\n        if (5 < uVar3) goto LAB_00232334;\n        lVar5 = 4;\n      }\n      param_2 = (uint *)((long)param_2 + lVar5);\n      uVar2 = *(int *)(param_1 + 0x18) + piVar1[4];\n      *param_2 = uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 | uVar2 * 0x1000000\n      ;\n      uVar2 = piVar1[5];\n      if (uVar2 != 0) {\n        if (uVar2 < 3) {\n          uVar3 = *(int *)(param_1 + 0x18) + piVar1[8];\n          *(uint *)((long)param_2 + 2) =\n               uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 | uVar3 * 0x1000000;\n          return;\n        }\n        if (uVar2 < 6) {\n          uVar3 = *(int *)(param_1 + 0x18) + piVar1[8];\n          param_2[1] = uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                       uVar3 * 0x1000000;\n          return;\n        }\n      }\n    }\n  }\nLAB_00232334:\n  FUN_00230fb0();\n  uVar6 = extraout_EDX + (((-8 - param_6) + uVar3) - param_4);\n  uVar3 = (int)uVar6 >> 0x1c | 0xe28fc200;\n  uVar2 = (int)uVar6 >> 0x14 & 0xff;\n  uVar7 = uVar6 & 0xfff | 0xe5bcf000;\n  uVar4 = (int)uVar6 >> 0xc & 0xff;\n  if (*(long *)(PTR_DAT_0067cb08 + 0x10) == 0) {\n                    \n    FUN_00231730();\n  }\n  if (*(char *)(*(long *)(PTR_DAT_0067cb08 + 0x10) + 0x671) != '\0') {\n    *param_2 = uVar3;\n    param_2[1] = uVar2 | 0xe28cc600;\n    param_2[2] = uVar4 | 0xe28cca00;\n    param_2[3] = uVar7;\n    return;\n  }\n  *param_2 = uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n             ((int)uVar6 >> 0x1c) << 0x18;\n  param_2[1] = uVar2 << 0x18 | 0xc68ce2;\n  param_2[2] = uVar4 << 0x18 | 0xca8ce2;\n  param_2[3] = (uVar7 & 0xff00) << 8 | 0xbce5 | (uVar6 & 0xfff) << 0x18;\n  return;\n}" { (declaration "int *piVar1;" primitive_type (pointer_declarator "*piVar1" * identifier) ;) (declaration "uint uVar2;" type_identifier identifier ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "uint uVar4;" type_identifier identifier ;) (declaration "long lVar5;" (sized_type_specifier "long" long) identifier ;) (declaration "int extraout_EDX;" primitive_type identifier ;) (declaration "uint uVar6;" type_identifier identifier ;) (declaration "uint uVar7;" type_identifier identifier ;) (expression_statement "piVar1 = *(int **)(*(long *)(param_1 + 8) + 8);" (assignment_expression "piVar1 = *(int **)(*(long *)(param_1 + 8) + 8)" identifier = (pointer_expression "*(int **)(*(long *)(param_1 + 8) + 8)" * (cast_expression "(int **)(*(long *)(param_1 + 8) + 8)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(long *)(param_1 + 8) + 8)" ( (binary_expression "*(long *)(param_1 + 8) + 8" (pointer_expression "*(long *)(param_1 + 8)" * (cast_expression "(long *)(param_1 + 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) )))) + number_literal) ))))) ;) (expression_statement "uVar3 = piVar1[1];" (assignment_expression "uVar3 = piVar1[1]" identifier = (subscript_expression "piVar1[1]" identifier [ number_literal ])) ;) (expression_statement "uVar2 = *(int *)(param_1 + 0x18) * 0x10000 + *piVar1;" (assignment_expression "uVar2 = *(int *)(param_1 + 0x18) * 0x10000 + *piVar1" identifier = (binary_expression "*(int *)(param_1 + 0x18) * 0x10000 + *piVar1" (binary_expression "*(int *)(param_1 + 0x18) * 0x10000" (pointer_expression "*(int *)(param_1 + 0x18)" * (cast_expression "(int *)(param_1 + 0x18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x18)" ( (binary_expression "param_1 + 0x18" identifier + number_literal) )))) * number_literal) + (pointer_expression "*piVar1" * identifier))) ;) (if_statement "if ((char)param_4 == '\0') {\n    *param_2 = uVar2;\n    if (uVar3 != 0) {\n      if (uVar3 < 3) {\n        lVar5 = 2;\n      }\n      else {\n        if (5 < uVar3) goto LAB_00232334;\n        lVar5 = 4;\n      }\n      param_2 = (uint *)((long)param_2 + lVar5);\n      *param_2 = *(int *)(param_1 + 0x18) + piVar1[4];\n      uVar2 = piVar1[5];\n      if (uVar2 != 0) {\n        if (uVar2 < 3) {\n          *(int *)((long)param_2 + 2) = *(int *)(param_1 + 0x18) + piVar1[8];\n          return;\n        }\n        if (uVar2 < 6) {\n          param_2[1] = *(int *)(param_1 + 0x18) + piVar1[8];\n          return;\n        }\n      }\n    }\n  }\n  else {\n    *param_2 = uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 | *piVar1 * 0x1000000\n    ;\n    if (uVar3 != 0) {\n      if (uVar3 < 3) {\n        lVar5 = 2;\n      }\n      else {\n        if (5 < uVar3) goto LAB_00232334;\n        lVar5 = 4;\n      }\n      param_2 = (uint *)((long)param_2 + lVar5);\n      uVar2 = *(int *)(param_1 + 0x18) + piVar1[4];\n      *param_2 = uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 | uVar2 * 0x1000000\n      ;\n      uVar2 = piVar1[5];\n      if (uVar2 != 0) {\n        if (uVar2 < 3) {\n          uVar3 = *(int *)(param_1 + 0x18) + piVar1[8];\n          *(uint *)((long)param_2 + 2) =\n               uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 | uVar3 * 0x1000000;\n          return;\n        }\n        if (uVar2 < 6) {\n          uVar3 = *(int *)(param_1 + 0x18) + piVar1[8];\n          param_2[1] = uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                       uVar3 * 0x1000000;\n          return;\n        }\n      }\n    }\n  }" if (parenthesized_expression "((char)param_4 == '\0')" ( (binary_expression "(char)param_4 == '\0'" (cast_expression "(char)param_4" ( (type_descriptor "char" primitive_type) ) identifier) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    *param_2 = uVar2;\n    if (uVar3 != 0) {\n      if (uVar3 < 3) {\n        lVar5 = 2;\n      }\n      else {\n        if (5 < uVar3) goto LAB_00232334;\n        lVar5 = 4;\n      }\n      param_2 = (uint *)((long)param_2 + lVar5);\n      *param_2 = *(int *)(param_1 + 0x18) + piVar1[4];\n      uVar2 = piVar1[5];\n      if (uVar2 != 0) {\n        if (uVar2 < 3) {\n          *(int *)((long)param_2 + 2) = *(int *)(param_1 + 0x18) + piVar1[8];\n          return;\n        }\n        if (uVar2 < 6) {\n          param_2[1] = *(int *)(param_1 + 0x18) + piVar1[8];\n          return;\n        }\n      }\n    }\n  }" { (expression_statement "*param_2 = uVar2;" (assignment_expression "*param_2 = uVar2" (pointer_expression "*param_2" * identifier) = identifier) ;) (if_statement "if (uVar3 != 0) {\n      if (uVar3 < 3) {\n        lVar5 = 2;\n      }\n      else {\n        if (5 < uVar3) goto LAB_00232334;\n        lVar5 = 4;\n      }\n      param_2 = (uint *)((long)param_2 + lVar5);\n      *param_2 = *(int *)(param_1 + 0x18) + piVar1[4];\n      uVar2 = piVar1[5];\n      if (uVar2 != 0) {\n        if (uVar2 < 3) {\n          *(int *)((long)param_2 + 2) = *(int *)(param_1 + 0x18) + piVar1[8];\n          return;\n        }\n        if (uVar2 < 6) {\n          param_2[1] = *(int *)(param_1 + 0x18) + piVar1[8];\n          return;\n        }\n      }\n    }" if (parenthesized_expression "(uVar3 != 0)" ( (binary_expression "uVar3 != 0" identifier != number_literal) )) (compound_statement "{\n      if (uVar3 < 3) {\n        lVar5 = 2;\n      }\n      else {\n        if (5 < uVar3) goto LAB_00232334;\n        lVar5 = 4;\n      }\n      param_2 = (uint *)((long)param_2 + lVar5);\n      *param_2 = *(int *)(param_1 + 0x18) + piVar1[4];\n      uVar2 = piVar1[5];\n      if (uVar2 != 0) {\n        if (uVar2 < 3) {\n          *(int *)((long)param_2 + 2) = *(int *)(param_1 + 0x18) + piVar1[8];\n          return;\n        }\n        if (uVar2 < 6) {\n          param_2[1] = *(int *)(param_1 + 0x18) + piVar1[8];\n          return;\n        }\n      }\n    }" { (if_statement "if (uVar3 < 3) {\n        lVar5 = 2;\n      }\n      else {\n        if (5 < uVar3) goto LAB_00232334;\n        lVar5 = 4;\n      }" if (parenthesized_expression "(uVar3 < 3)" ( (binary_expression "uVar3 < 3" identifier < number_literal) )) (compound_statement "{\n        lVar5 = 2;\n      }" { (expression_statement "lVar5 = 2;" (assignment_expression "lVar5 = 2" identifier = number_literal) ;) }) (else_clause "else {\n        if (5 < uVar3) goto LAB_00232334;\n        lVar5 = 4;\n      }" else (compound_statement "{\n        if (5 < uVar3) goto LAB_00232334;\n        lVar5 = 4;\n      }" { (if_statement "if (5 < uVar3) goto LAB_00232334;" if (parenthesized_expression "(5 < uVar3)" ( (binary_expression "5 < uVar3" number_literal < identifier) )) (goto_statement "goto LAB_00232334;" goto statement_identifier ;)) (expression_statement "lVar5 = 4;" (assignment_expression "lVar5 = 4" identifier = number_literal) ;) }))) (expression_statement "param_2 = (uint *)((long)param_2 + lVar5);" (assignment_expression "param_2 = (uint *)((long)param_2 + lVar5)" identifier = (cast_expression "(uint *)((long)param_2 + lVar5)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_2 + lVar5)" ( (binary_expression "(long)param_2 + lVar5" (cast_expression "(long)param_2" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + identifier) )))) ;) (expression_statement "*param_2 = *(int *)(param_1 + 0x18) + piVar1[4];" (assignment_expression "*param_2 = *(int *)(param_1 + 0x18) + piVar1[4]" (pointer_expression "*param_2" * identifier) = (binary_expression "*(int *)(param_1 + 0x18) + piVar1[4]" (pointer_expression "*(int *)(param_1 + 0x18)" * (cast_expression "(int *)(param_1 + 0x18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x18)" ( (binary_expression "param_1 + 0x18" identifier + number_literal) )))) + (subscript_expression "piVar1[4]" identifier [ number_literal ]))) ;) (expression_statement "uVar2 = piVar1[5];" (assignment_expression "uVar2 = piVar1[5]" identifier = (subscript_expression "piVar1[5]" identifier [ number_literal ])) ;) (if_statement "if (uVar2 != 0) {\n        if (uVar2 < 3) {\n          *(int *)((long)param_2 + 2) = *(int *)(param_1 + 0x18) + piVar1[8];\n          return;\n        }\n        if (uVar2 < 6) {\n          param_2[1] = *(int *)(param_1 + 0x18) + piVar1[8];\n          return;\n        }\n      }" if (parenthesized_expression "(uVar2 != 0)" ( (binary_expression "uVar2 != 0" identifier != number_literal) )) (compound_statement "{\n        if (uVar2 < 3) {\n          *(int *)((long)param_2 + 2) = *(int *)(param_1 + 0x18) + piVar1[8];\n          return;\n        }\n        if (uVar2 < 6) {\n          param_2[1] = *(int *)(param_1 + 0x18) + piVar1[8];\n          return;\n        }\n      }" { (if_statement "if (uVar2 < 3) {\n          *(int *)((long)param_2 + 2) = *(int *)(param_1 + 0x18) + piVar1[8];\n          return;\n        }" if (parenthesized_expression "(uVar2 < 3)" ( (binary_expression "uVar2 < 3" identifier < number_literal) )) (compound_statement "{\n          *(int *)((long)param_2 + 2) = *(int *)(param_1 + 0x18) + piVar1[8];\n          return;\n        }" { (expression_statement "*(int *)((long)param_2 + 2) = *(int *)(param_1 + 0x18) + piVar1[8];" (assignment_expression "*(int *)((long)param_2 + 2) = *(int *)(param_1 + 0x18) + piVar1[8]" (pointer_expression "*(int *)((long)param_2 + 2)" * (cast_expression "(int *)((long)param_2 + 2)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_2 + 2)" ( (binary_expression "(long)param_2 + 2" (cast_expression "(long)param_2" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) = (binary_expression "*(int *)(param_1 + 0x18) + piVar1[8]" (pointer_expression "*(int *)(param_1 + 0x18)" * (cast_expression "(int *)(param_1 + 0x18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x18)" ( (binary_expression "param_1 + 0x18" identifier + number_literal) )))) + (subscript_expression "piVar1[8]" identifier [ number_literal ]))) ;) (return_statement "return;" return ;) })) (if_statement "if (uVar2 < 6) {\n          param_2[1] = *(int *)(param_1 + 0x18) + piVar1[8];\n          return;\n        }" if (parenthesized_expression "(uVar2 < 6)" ( (binary_expression "uVar2 < 6" identifier < number_literal) )) (compound_statement "{\n          param_2[1] = *(int *)(param_1 + 0x18) + piVar1[8];\n          return;\n        }" { (expression_statement "param_2[1] = *(int *)(param_1 + 0x18) + piVar1[8];" (assignment_expression "param_2[1] = *(int *)(param_1 + 0x18) + piVar1[8]" (subscript_expression "param_2[1]" identifier [ number_literal ]) = (binary_expression "*(int *)(param_1 + 0x18) + piVar1[8]" (pointer_expression "*(int *)(param_1 + 0x18)" * (cast_expression "(int *)(param_1 + 0x18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x18)" ( (binary_expression "param_1 + 0x18" identifier + number_literal) )))) + (subscript_expression "piVar1[8]" identifier [ number_literal ]))) ;) (return_statement "return;" return ;) })) })) })) }) (else_clause "else {\n    *param_2 = uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 | *piVar1 * 0x1000000\n    ;\n    if (uVar3 != 0) {\n      if (uVar3 < 3) {\n        lVar5 = 2;\n      }\n      else {\n        if (5 < uVar3) goto LAB_00232334;\n        lVar5 = 4;\n      }\n      param_2 = (uint *)((long)param_2 + lVar5);\n      uVar2 = *(int *)(param_1 + 0x18) + piVar1[4];\n      *param_2 = uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 | uVar2 * 0x1000000\n      ;\n      uVar2 = piVar1[5];\n      if (uVar2 != 0) {\n        if (uVar2 < 3) {\n          uVar3 = *(int *)(param_1 + 0x18) + piVar1[8];\n          *(uint *)((long)param_2 + 2) =\n               uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 | uVar3 * 0x1000000;\n          return;\n        }\n        if (uVar2 < 6) {\n          uVar3 = *(int *)(param_1 + 0x18) + piVar1[8];\n          param_2[1] = uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                       uVar3 * 0x1000000;\n          return;\n        }\n      }\n    }\n  }" else (compound_statement "{\n    *param_2 = uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 | *piVar1 * 0x1000000\n    ;\n    if (uVar3 != 0) {\n      if (uVar3 < 3) {\n        lVar5 = 2;\n      }\n      else {\n        if (5 < uVar3) goto LAB_00232334;\n        lVar5 = 4;\n      }\n      param_2 = (uint *)((long)param_2 + lVar5);\n      uVar2 = *(int *)(param_1 + 0x18) + piVar1[4];\n      *param_2 = uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 | uVar2 * 0x1000000\n      ;\n      uVar2 = piVar1[5];\n      if (uVar2 != 0) {\n        if (uVar2 < 3) {\n          uVar3 = *(int *)(param_1 + 0x18) + piVar1[8];\n          *(uint *)((long)param_2 + 2) =\n               uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 | uVar3 * 0x1000000;\n          return;\n        }\n        if (uVar2 < 6) {\n          uVar3 = *(int *)(param_1 + 0x18) + piVar1[8];\n          param_2[1] = uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                       uVar3 * 0x1000000;\n          return;\n        }\n      }\n    }\n  }" { (expression_statement "*param_2 = uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 | *piVar1 * 0x1000000\n    ;" (assignment_expression "*param_2 = uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 | *piVar1 * 0x1000000" (pointer_expression "*param_2" * identifier) = (binary_expression "uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 | *piVar1 * 0x1000000" (binary_expression "uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8" (binary_expression "uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8" (binary_expression "uVar2 >> 0x18" identifier >> number_literal) | (binary_expression "(uVar2 & 0xff0000) >> 8" (parenthesized_expression "(uVar2 & 0xff0000)" ( (binary_expression "uVar2 & 0xff0000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar2 & 0xff00) << 8" (parenthesized_expression "(uVar2 & 0xff00)" ( (binary_expression "uVar2 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "*piVar1 * 0x1000000" (pointer_expression "*piVar1" * identifier) * number_literal))) ;) (if_statement "if (uVar3 != 0) {\n      if (uVar3 < 3) {\n        lVar5 = 2;\n      }\n      else {\n        if (5 < uVar3) goto LAB_00232334;\n        lVar5 = 4;\n      }\n      param_2 = (uint *)((long)param_2 + lVar5);\n      uVar2 = *(int *)(param_1 + 0x18) + piVar1[4];\n      *param_2 = uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 | uVar2 * 0x1000000\n      ;\n      uVar2 = piVar1[5];\n      if (uVar2 != 0) {\n        if (uVar2 < 3) {\n          uVar3 = *(int *)(param_1 + 0x18) + piVar1[8];\n          *(uint *)((long)param_2 + 2) =\n               uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 | uVar3 * 0x1000000;\n          return;\n        }\n        if (uVar2 < 6) {\n          uVar3 = *(int *)(param_1 + 0x18) + piVar1[8];\n          param_2[1] = uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                       uVar3 * 0x1000000;\n          return;\n        }\n      }\n    }" if (parenthesized_expression "(uVar3 != 0)" ( (binary_expression "uVar3 != 0" identifier != number_literal) )) (compound_statement "{\n      if (uVar3 < 3) {\n        lVar5 = 2;\n      }\n      else {\n        if (5 < uVar3) goto LAB_00232334;\n        lVar5 = 4;\n      }\n      param_2 = (uint *)((long)param_2 + lVar5);\n      uVar2 = *(int *)(param_1 + 0x18) + piVar1[4];\n      *param_2 = uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 | uVar2 * 0x1000000\n      ;\n      uVar2 = piVar1[5];\n      if (uVar2 != 0) {\n        if (uVar2 < 3) {\n          uVar3 = *(int *)(param_1 + 0x18) + piVar1[8];\n          *(uint *)((long)param_2 + 2) =\n               uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 | uVar3 * 0x1000000;\n          return;\n        }\n        if (uVar2 < 6) {\n          uVar3 = *(int *)(param_1 + 0x18) + piVar1[8];\n          param_2[1] = uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                       uVar3 * 0x1000000;\n          return;\n        }\n      }\n    }" { (if_statement "if (uVar3 < 3) {\n        lVar5 = 2;\n      }\n      else {\n        if (5 < uVar3) goto LAB_00232334;\n        lVar5 = 4;\n      }" if (parenthesized_expression "(uVar3 < 3)" ( (binary_expression "uVar3 < 3" identifier < number_literal) )) (compound_statement "{\n        lVar5 = 2;\n      }" { (expression_statement "lVar5 = 2;" (assignment_expression "lVar5 = 2" identifier = number_literal) ;) }) (else_clause "else {\n        if (5 < uVar3) goto LAB_00232334;\n        lVar5 = 4;\n      }" else (compound_statement "{\n        if (5 < uVar3) goto LAB_00232334;\n        lVar5 = 4;\n      }" { (if_statement "if (5 < uVar3) goto LAB_00232334;" if (parenthesized_expression "(5 < uVar3)" ( (binary_expression "5 < uVar3" number_literal < identifier) )) (goto_statement "goto LAB_00232334;" goto statement_identifier ;)) (expression_statement "lVar5 = 4;" (assignment_expression "lVar5 = 4" identifier = number_literal) ;) }))) (expression_statement "param_2 = (uint *)((long)param_2 + lVar5);" (assignment_expression "param_2 = (uint *)((long)param_2 + lVar5)" identifier = (cast_expression "(uint *)((long)param_2 + lVar5)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_2 + lVar5)" ( (binary_expression "(long)param_2 + lVar5" (cast_expression "(long)param_2" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + identifier) )))) ;) (expression_statement "uVar2 = *(int *)(param_1 + 0x18) + piVar1[4];" (assignment_expression "uVar2 = *(int *)(param_1 + 0x18) + piVar1[4]" identifier = (binary_expression "*(int *)(param_1 + 0x18) + piVar1[4]" (pointer_expression "*(int *)(param_1 + 0x18)" * (cast_expression "(int *)(param_1 + 0x18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x18)" ( (binary_expression "param_1 + 0x18" identifier + number_literal) )))) + (subscript_expression "piVar1[4]" identifier [ number_literal ]))) ;) (expression_statement "*param_2 = uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 | uVar2 * 0x1000000\n      ;" (assignment_expression "*param_2 = uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 | uVar2 * 0x1000000" (pointer_expression "*param_2" * identifier) = (binary_expression "uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 | uVar2 * 0x1000000" (binary_expression "uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8" (binary_expression "uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8" (binary_expression "uVar2 >> 0x18" identifier >> number_literal) | (binary_expression "(uVar2 & 0xff0000) >> 8" (parenthesized_expression "(uVar2 & 0xff0000)" ( (binary_expression "uVar2 & 0xff0000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar2 & 0xff00) << 8" (parenthesized_expression "(uVar2 & 0xff00)" ( (binary_expression "uVar2 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "uVar2 * 0x1000000" identifier * number_literal))) ;) (expression_statement "uVar2 = piVar1[5];" (assignment_expression "uVar2 = piVar1[5]" identifier = (subscript_expression "piVar1[5]" identifier [ number_literal ])) ;) (if_statement "if (uVar2 != 0) {\n        if (uVar2 < 3) {\n          uVar3 = *(int *)(param_1 + 0x18) + piVar1[8];\n          *(uint *)((long)param_2 + 2) =\n               uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 | uVar3 * 0x1000000;\n          return;\n        }\n        if (uVar2 < 6) {\n          uVar3 = *(int *)(param_1 + 0x18) + piVar1[8];\n          param_2[1] = uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                       uVar3 * 0x1000000;\n          return;\n        }\n      }" if (parenthesized_expression "(uVar2 != 0)" ( (binary_expression "uVar2 != 0" identifier != number_literal) )) (compound_statement "{\n        if (uVar2 < 3) {\n          uVar3 = *(int *)(param_1 + 0x18) + piVar1[8];\n          *(uint *)((long)param_2 + 2) =\n               uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 | uVar3 * 0x1000000;\n          return;\n        }\n        if (uVar2 < 6) {\n          uVar3 = *(int *)(param_1 + 0x18) + piVar1[8];\n          param_2[1] = uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                       uVar3 * 0x1000000;\n          return;\n        }\n      }" { (if_statement "if (uVar2 < 3) {\n          uVar3 = *(int *)(param_1 + 0x18) + piVar1[8];\n          *(uint *)((long)param_2 + 2) =\n               uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 | uVar3 * 0x1000000;\n          return;\n        }" if (parenthesized_expression "(uVar2 < 3)" ( (binary_expression "uVar2 < 3" identifier < number_literal) )) (compound_statement "{\n          uVar3 = *(int *)(param_1 + 0x18) + piVar1[8];\n          *(uint *)((long)param_2 + 2) =\n               uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 | uVar3 * 0x1000000;\n          return;\n        }" { (expression_statement "uVar3 = *(int *)(param_1 + 0x18) + piVar1[8];" (assignment_expression "uVar3 = *(int *)(param_1 + 0x18) + piVar1[8]" identifier = (binary_expression "*(int *)(param_1 + 0x18) + piVar1[8]" (pointer_expression "*(int *)(param_1 + 0x18)" * (cast_expression "(int *)(param_1 + 0x18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x18)" ( (binary_expression "param_1 + 0x18" identifier + number_literal) )))) + (subscript_expression "piVar1[8]" identifier [ number_literal ]))) ;) (expression_statement "*(uint *)((long)param_2 + 2) =\n               uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 | uVar3 * 0x1000000;" (assignment_expression "*(uint *)((long)param_2 + 2) =\n               uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 | uVar3 * 0x1000000" (pointer_expression "*(uint *)((long)param_2 + 2)" * (cast_expression "(uint *)((long)param_2 + 2)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_2 + 2)" ( (binary_expression "(long)param_2 + 2" (cast_expression "(long)param_2" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) = (binary_expression "uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 | uVar3 * 0x1000000" (binary_expression "uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8" (binary_expression "uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8" (binary_expression "uVar3 >> 0x18" identifier >> number_literal) | (binary_expression "(uVar3 & 0xff0000) >> 8" (parenthesized_expression "(uVar3 & 0xff0000)" ( (binary_expression "uVar3 & 0xff0000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar3 & 0xff00) << 8" (parenthesized_expression "(uVar3 & 0xff00)" ( (binary_expression "uVar3 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "uVar3 * 0x1000000" identifier * number_literal))) ;) (return_statement "return;" return ;) })) (if_statement "if (uVar2 < 6) {\n          uVar3 = *(int *)(param_1 + 0x18) + piVar1[8];\n          param_2[1] = uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                       uVar3 * 0x1000000;\n          return;\n        }" if (parenthesized_expression "(uVar2 < 6)" ( (binary_expression "uVar2 < 6" identifier < number_literal) )) (compound_statement "{\n          uVar3 = *(int *)(param_1 + 0x18) + piVar1[8];\n          param_2[1] = uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                       uVar3 * 0x1000000;\n          return;\n        }" { (expression_statement "uVar3 = *(int *)(param_1 + 0x18) + piVar1[8];" (assignment_expression "uVar3 = *(int *)(param_1 + 0x18) + piVar1[8]" identifier = (binary_expression "*(int *)(param_1 + 0x18) + piVar1[8]" (pointer_expression "*(int *)(param_1 + 0x18)" * (cast_expression "(int *)(param_1 + 0x18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x18)" ( (binary_expression "param_1 + 0x18" identifier + number_literal) )))) + (subscript_expression "piVar1[8]" identifier [ number_literal ]))) ;) (expression_statement "param_2[1] = uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                       uVar3 * 0x1000000;" (assignment_expression "param_2[1] = uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                       uVar3 * 0x1000000" (subscript_expression "param_2[1]" identifier [ number_literal ]) = (binary_expression "uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                       uVar3 * 0x1000000" (binary_expression "uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8" (binary_expression "uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8" (binary_expression "uVar3 >> 0x18" identifier >> number_literal) | (binary_expression "(uVar3 & 0xff0000) >> 8" (parenthesized_expression "(uVar3 & 0xff0000)" ( (binary_expression "uVar3 & 0xff0000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar3 & 0xff00) << 8" (parenthesized_expression "(uVar3 & 0xff00)" ( (binary_expression "uVar3 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "uVar3 * 0x1000000" identifier * number_literal))) ;) (return_statement "return;" return ;) })) })) })) }))) (labeled_statement "LAB_00232334:\n  FUN_00230fb0();" statement_identifier : (expression_statement "FUN_00230fb0();" (call_expression "FUN_00230fb0()" identifier (argument_list "()" ( ))) ;)) (expression_statement "uVar6 = extraout_EDX + (((-8 - param_6) + uVar3) - param_4);" (assignment_expression "uVar6 = extraout_EDX + (((-8 - param_6) + uVar3) - param_4)" identifier = (binary_expression "extraout_EDX + (((-8 - param_6) + uVar3) - param_4)" identifier + (parenthesized_expression "(((-8 - param_6) + uVar3) - param_4)" ( (binary_expression "((-8 - param_6) + uVar3) - param_4" (parenthesized_expression "((-8 - param_6) + uVar3)" ( (binary_expression "(-8 - param_6) + uVar3" (parenthesized_expression "(-8 - param_6)" ( (binary_expression "-8 - param_6" number_literal - identifier) )) + identifier) )) - identifier) )))) ;) (expression_statement "uVar3 = (int)uVar6 >> 0x1c | 0xe28fc200;" (assignment_expression "uVar3 = (int)uVar6 >> 0x1c | 0xe28fc200" identifier = (binary_expression "(int)uVar6 >> 0x1c | 0xe28fc200" (binary_expression "(int)uVar6 >> 0x1c" (cast_expression "(int)uVar6" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal) | number_literal)) ;) (expression_statement "uVar2 = (int)uVar6 >> 0x14 & 0xff;" (assignment_expression "uVar2 = (int)uVar6 >> 0x14 & 0xff" identifier = (binary_expression "(int)uVar6 >> 0x14 & 0xff" (binary_expression "(int)uVar6 >> 0x14" (cast_expression "(int)uVar6" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal) & number_literal)) ;) (expression_statement "uVar7 = uVar6 & 0xfff | 0xe5bcf000;" (assignment_expression "uVar7 = uVar6 & 0xfff | 0xe5bcf000" identifier = (binary_expression "uVar6 & 0xfff | 0xe5bcf000" (binary_expression "uVar6 & 0xfff" identifier & number_literal) | number_literal)) ;) (expression_statement "uVar4 = (int)uVar6 >> 0xc & 0xff;" (assignment_expression "uVar4 = (int)uVar6 >> 0xc & 0xff" identifier = (binary_expression "(int)uVar6 >> 0xc & 0xff" (binary_expression "(int)uVar6 >> 0xc" (cast_expression "(int)uVar6" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal) & number_literal)) ;) (if_statement "if (*(long *)(PTR_DAT_0067cb08 + 0x10) == 0) {\n                    \n    FUN_00231730();\n  }" if (parenthesized_expression "(*(long *)(PTR_DAT_0067cb08 + 0x10) == 0)" ( (binary_expression "*(long *)(PTR_DAT_0067cb08 + 0x10) == 0" (pointer_expression "*(long *)(PTR_DAT_0067cb08 + 0x10)" * (cast_expression "(long *)(PTR_DAT_0067cb08 + 0x10)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_0067cb08 + 0x10)" ( (binary_expression "PTR_DAT_0067cb08 + 0x10" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n                    \n    FUN_00231730();\n  }" { (expression_statement "FUN_00231730();" (call_expression "FUN_00231730()" identifier (argument_list "()" ( ))) ;) })) (if_statement "if (*(char *)(*(long *)(PTR_DAT_0067cb08 + 0x10) + 0x671) != '\0') {\n    *param_2 = uVar3;\n    param_2[1] = uVar2 | 0xe28cc600;\n    param_2[2] = uVar4 | 0xe28cca00;\n    param_2[3] = uVar7;\n    return;\n  }" if (parenthesized_expression "(*(char *)(*(long *)(PTR_DAT_0067cb08 + 0x10) + 0x671) != '\0')" ( (binary_expression "*(char *)(*(long *)(PTR_DAT_0067cb08 + 0x10) + 0x671) != '\0'" (pointer_expression "*(char *)(*(long *)(PTR_DAT_0067cb08 + 0x10) + 0x671)" * (cast_expression "(char *)(*(long *)(PTR_DAT_0067cb08 + 0x10) + 0x671)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(PTR_DAT_0067cb08 + 0x10) + 0x671)" ( (binary_expression "*(long *)(PTR_DAT_0067cb08 + 0x10) + 0x671" (pointer_expression "*(long *)(PTR_DAT_0067cb08 + 0x10)" * (cast_expression "(long *)(PTR_DAT_0067cb08 + 0x10)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_0067cb08 + 0x10)" ( (binary_expression "PTR_DAT_0067cb08 + 0x10" identifier + number_literal) )))) + number_literal) )))) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    *param_2 = uVar3;\n    param_2[1] = uVar2 | 0xe28cc600;\n    param_2[2] = uVar4 | 0xe28cca00;\n    param_2[3] = uVar7;\n    return;\n  }" { (expression_statement "*param_2 = uVar3;" (assignment_expression "*param_2 = uVar3" (pointer_expression "*param_2" * identifier) = identifier) ;) (expression_statement "param_2[1] = uVar2 | 0xe28cc600;" (assignment_expression "param_2[1] = uVar2 | 0xe28cc600" (subscript_expression "param_2[1]" identifier [ number_literal ]) = (binary_expression "uVar2 | 0xe28cc600" identifier | number_literal)) ;) (expression_statement "param_2[2] = uVar4 | 0xe28cca00;" (assignment_expression "param_2[2] = uVar4 | 0xe28cca00" (subscript_expression "param_2[2]" identifier [ number_literal ]) = (binary_expression "uVar4 | 0xe28cca00" identifier | number_literal)) ;) (expression_statement "param_2[3] = uVar7;" (assignment_expression "param_2[3] = uVar7" (subscript_expression "param_2[3]" identifier [ number_literal ]) = identifier) ;) (return_statement "return;" return ;) })) (expression_statement "*param_2 = uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n             ((int)uVar6 >> 0x1c) << 0x18;" (assignment_expression "*param_2 = uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n             ((int)uVar6 >> 0x1c) << 0x18" (pointer_expression "*param_2" * identifier) = (binary_expression "uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n             ((int)uVar6 >> 0x1c) << 0x18" (binary_expression "uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8" (binary_expression "uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8" (binary_expression "uVar3 >> 0x18" identifier >> number_literal) | (binary_expression "(uVar3 & 0xff0000) >> 8" (parenthesized_expression "(uVar3 & 0xff0000)" ( (binary_expression "uVar3 & 0xff0000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar3 & 0xff00) << 8" (parenthesized_expression "(uVar3 & 0xff00)" ( (binary_expression "uVar3 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "((int)uVar6 >> 0x1c) << 0x18" (parenthesized_expression "((int)uVar6 >> 0x1c)" ( (binary_expression "(int)uVar6 >> 0x1c" (cast_expression "(int)uVar6" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal) )) << number_literal))) ;) (expression_statement "param_2[1] = uVar2 << 0x18 | 0xc68ce2;" (assignment_expression "param_2[1] = uVar2 << 0x18 | 0xc68ce2" (subscript_expression "param_2[1]" identifier [ number_literal ]) = (binary_expression "uVar2 << 0x18 | 0xc68ce2" (binary_expression "uVar2 << 0x18" identifier << number_literal) | number_literal)) ;) (expression_statement "param_2[2] = uVar4 << 0x18 | 0xca8ce2;" (assignment_expression "param_2[2] = uVar4 << 0x18 | 0xca8ce2" (subscript_expression "param_2[2]" identifier [ number_literal ]) = (binary_expression "uVar4 << 0x18 | 0xca8ce2" (binary_expression "uVar4 << 0x18" identifier << number_literal) | number_literal)) ;) (expression_statement "param_2[3] = (uVar7 & 0xff00) << 8 | 0xbce5 | (uVar6 & 0xfff) << 0x18;" (assignment_expression "param_2[3] = (uVar7 & 0xff00) << 8 | 0xbce5 | (uVar6 & 0xfff) << 0x18" (subscript_expression "param_2[3]" identifier [ number_literal ]) = (binary_expression "(uVar7 & 0xff00) << 8 | 0xbce5 | (uVar6 & 0xfff) << 0x18" (binary_expression "(uVar7 & 0xff00) << 8 | 0xbce5" (binary_expression "(uVar7 & 0xff00) << 8" (parenthesized_expression "(uVar7 & 0xff00)" ( (binary_expression "uVar7 & 0xff00" identifier & number_literal) )) << number_literal) | number_literal) | (binary_expression "(uVar6 & 0xfff) << 0x18" (parenthesized_expression "(uVar6 & 0xfff)" ( (binary_expression "uVar6 & 0xfff" identifier & number_literal) )) << number_literal))) ;) (return_statement "return;" return ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration (sized_type_specifier long) IDENT) , (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) * LIT) + (pointer_expression * IDENT))) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) == (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = LIT) ;) }))) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + IDENT) )))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + LIT) )))) = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + (subscript_expression IDENT [ LIT ]))) ;) (return_statement return ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + (subscript_expression IDENT [ LIT ]))) ;) (return_statement return ;) })) })) })) }) (else_clause else (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression (binary_expression (binary_expression (binary_expression IDENT >> LIT) | (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) >> LIT)) | (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) << LIT)) | (binary_expression (pointer_expression * IDENT) * LIT))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = LIT) ;) }))) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + IDENT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression (binary_expression (binary_expression (binary_expression IDENT >> LIT) | (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) >> LIT)) | (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) << LIT)) | (binary_expression IDENT * LIT))) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + LIT) )))) = (binary_expression (binary_expression (binary_expression (binary_expression IDENT >> LIT) | (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) >> LIT)) | (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) << LIT)) | (binary_expression IDENT * LIT))) ;) (return_statement return ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression (binary_expression (binary_expression (binary_expression IDENT >> LIT) | (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) >> LIT)) | (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) << LIT)) | (binary_expression IDENT * LIT))) ;) (return_statement return ;) })) })) })) }))) (labeled_statement statement_identifier : (expression_statement (call_expression IDENT (argument_list ( ))) ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression LIT - IDENT) )) + IDENT) )) - IDENT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) | LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) & LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT & LIT) | LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) & LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) )))) != (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression IDENT | LIT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression IDENT | LIT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (return_statement return ;) })) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression (binary_expression (binary_expression (binary_expression IDENT >> LIT) | (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) >> LIT)) | (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) << LIT)) | (binary_expression (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) )) << LIT))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression (binary_expression IDENT << LIT) | LIT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression (binary_expression IDENT << LIT) | LIT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression (binary_expression (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) << LIT) | LIT) | (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) << LIT))) ;) (return_statement return ;) })))
(function_definition "void FUN_00232240(long param_1,uint *param_2,undefined8 param_3,int param_4,undefined8 param_5,\n                 int param_6)\n\n{\n  int *piVar1;\n  uint uVar2;\n  uint uVar3;\n  uint uVar4;\n  long lVar5;\n  int extraout_EDX;\n  uint uVar6;\n  uint uVar7;\n  \n  piVar1 = *(int **)(*(long *)(param_1 + 8) + 8);\n  uVar3 = piVar1[1];\n  uVar2 = *(int *)(param_1 + 0x18) * 0x10000 + *piVar1;\n  if ((char)param_4 == '\0') {\n    *param_2 = uVar2;\n    if (uVar3 != 0) {\n      if (uVar3 < 3) {\n        lVar5 = 2;\n      }\n      else {\n        if (5 < uVar3) goto LAB_00232334;\n        lVar5 = 4;\n      }\n      param_2 = (uint *)((long)param_2 + lVar5);\n      *param_2 = *(int *)(param_1 + 0x18) + piVar1[4];\n      uVar2 = piVar1[5];\n      if (uVar2 != 0) {\n        if (uVar2 < 3) {\n          *(int *)((long)param_2 + 2) = *(int *)(param_1 + 0x18) + piVar1[8];\n          return;\n        }\n        if (uVar2 < 6) {\n          param_2[1] = *(int *)(param_1 + 0x18) + piVar1[8];\n          return;\n        }\n      }\n    }\n  }\n  else {\n    *param_2 = uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 | *piVar1 * 0x1000000\n    ;\n    if (uVar3 != 0) {\n      if (uVar3 < 3) {\n        lVar5 = 2;\n      }\n      else {\n        if (5 < uVar3) goto LAB_00232334;\n        lVar5 = 4;\n      }\n      param_2 = (uint *)((long)param_2 + lVar5);\n      uVar2 = *(int *)(param_1 + 0x18) + piVar1[4];\n      *param_2 = uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 | uVar2 * 0x1000000\n      ;\n      uVar2 = piVar1[5];\n      if (uVar2 != 0) {\n        if (uVar2 < 3) {\n          uVar3 = *(int *)(param_1 + 0x18) + piVar1[8];\n          *(uint *)((long)param_2 + 2) =\n               uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 | uVar3 * 0x1000000;\n          return;\n        }\n        if (uVar2 < 6) {\n          uVar3 = *(int *)(param_1 + 0x18) + piVar1[8];\n          param_2[1] = uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                       uVar3 * 0x1000000;\n          return;\n        }\n      }\n    }\n  }\nLAB_00232334:\n  FUN_00230fb0();\n  uVar6 = extraout_EDX + (((-8 - param_6) + uVar3) - param_4);\n  uVar3 = (int)uVar6 >> 0x1c | 0xe28fc200;\n  uVar2 = (int)uVar6 >> 0x14 & 0xff;\n  uVar7 = uVar6 & 0xfff | 0xe5bcf000;\n  uVar4 = (int)uVar6 >> 0xc & 0xff;\n  if (*(long *)(PTR_DAT_0067cb08 + 0x10) == 0) {\n                    \n    FUN_00231730();\n  }\n  if (*(char *)(*(long *)(PTR_DAT_0067cb08 + 0x10) + 0x671) != '\0') {\n    *param_2 = uVar3;\n    param_2[1] = uVar2 | 0xe28cc600;\n    param_2[2] = uVar4 | 0xe28cca00;\n    param_2[3] = uVar7;\n    return;\n  }\n  *param_2 = uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n             ((int)uVar6 >> 0x1c) << 0x18;\n  param_2[1] = uVar2 << 0x18 | 0xc68ce2;\n  param_2[2] = uVar4 << 0x18 | 0xca8ce2;\n  param_2[3] = (uVar7 & 0xff00) << 8 | 0xbce5 | (uVar6 & 0xfff) << 0x18;\n  return;\n}" (primitive_type "void") (function_declarator "FUN_00232240(long param_1,uint *param_2,undefined8 param_3,int param_4,undefined8 param_5,\n                 int param_6)" (identifier "FUN_00232240") (parameter_list "(long param_1,uint *param_2,undefined8 param_3,int param_4,undefined8 param_5,\n                 int param_6)" (( "(") (parameter_declaration "long param_1" (sized_type_specifier "long" (long "long")) (identifier "param_1")) (, ",") (parameter_declaration "uint *param_2" (type_identifier "uint") (pointer_declarator "*param_2" (* "*") (identifier "param_2"))) (, ",") (parameter_declaration "undefined8 param_3" (type_identifier "undefined8") (identifier "param_3")) (, ",") (parameter_declaration "int param_4" (primitive_type "int") (identifier "param_4")) (, ",") (parameter_declaration "undefined8 param_5" (type_identifier "undefined8") (identifier "param_5")) (, ",") (parameter_declaration "int param_6" (primitive_type "int") (identifier "param_6")) () ")"))) (compound_statement "{\n  int *piVar1;\n  uint uVar2;\n  uint uVar3;\n  uint uVar4;\n  long lVar5;\n  int extraout_EDX;\n  uint uVar6;\n  uint uVar7;\n  \n  piVar1 = *(int **)(*(long *)(param_1 + 8) + 8);\n  uVar3 = piVar1[1];\n  uVar2 = *(int *)(param_1 + 0x18) * 0x10000 + *piVar1;\n  if ((char)param_4 == '\0') {\n    *param_2 = uVar2;\n    if (uVar3 != 0) {\n      if (uVar3 < 3) {\n        lVar5 = 2;\n      }\n      else {\n        if (5 < uVar3) goto LAB_00232334;\n        lVar5 = 4;\n      }\n      param_2 = (uint *)((long)param_2 + lVar5);\n      *param_2 = *(int *)(param_1 + 0x18) + piVar1[4];\n      uVar2 = piVar1[5];\n      if (uVar2 != 0) {\n        if (uVar2 < 3) {\n          *(int *)((long)param_2 + 2) = *(int *)(param_1 + 0x18) + piVar1[8];\n          return;\n        }\n        if (uVar2 < 6) {\n          param_2[1] = *(int *)(param_1 + 0x18) + piVar1[8];\n          return;\n        }\n      }\n    }\n  }\n  else {\n    *param_2 = uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 | *piVar1 * 0x1000000\n    ;\n    if (uVar3 != 0) {\n      if (uVar3 < 3) {\n        lVar5 = 2;\n      }\n      else {\n        if (5 < uVar3) goto LAB_00232334;\n        lVar5 = 4;\n      }\n      param_2 = (uint *)((long)param_2 + lVar5);\n      uVar2 = *(int *)(param_1 + 0x18) + piVar1[4];\n      *param_2 = uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 | uVar2 * 0x1000000\n      ;\n      uVar2 = piVar1[5];\n      if (uVar2 != 0) {\n        if (uVar2 < 3) {\n          uVar3 = *(int *)(param_1 + 0x18) + piVar1[8];\n          *(uint *)((long)param_2 + 2) =\n               uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 | uVar3 * 0x1000000;\n          return;\n        }\n        if (uVar2 < 6) {\n          uVar3 = *(int *)(param_1 + 0x18) + piVar1[8];\n          param_2[1] = uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                       uVar3 * 0x1000000;\n          return;\n        }\n      }\n    }\n  }\nLAB_00232334:\n  FUN_00230fb0();\n  uVar6 = extraout_EDX + (((-8 - param_6) + uVar3) - param_4);\n  uVar3 = (int)uVar6 >> 0x1c | 0xe28fc200;\n  uVar2 = (int)uVar6 >> 0x14 & 0xff;\n  uVar7 = uVar6 & 0xfff | 0xe5bcf000;\n  uVar4 = (int)uVar6 >> 0xc & 0xff;\n  if (*(long *)(PTR_DAT_0067cb08 + 0x10) == 0) {\n                    \n    FUN_00231730();\n  }\n  if (*(char *)(*(long *)(PTR_DAT_0067cb08 + 0x10) + 0x671) != '\0') {\n    *param_2 = uVar3;\n    param_2[1] = uVar2 | 0xe28cc600;\n    param_2[2] = uVar4 | 0xe28cca00;\n    param_2[3] = uVar7;\n    return;\n  }\n  *param_2 = uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n             ((int)uVar6 >> 0x1c) << 0x18;\n  param_2[1] = uVar2 << 0x18 | 0xc68ce2;\n  param_2[2] = uVar4 << 0x18 | 0xca8ce2;\n  param_2[3] = (uVar7 & 0xff00) << 8 | 0xbce5 | (uVar6 & 0xfff) << 0x18;\n  return;\n}" ({ "{") (declaration "int *piVar1;" (primitive_type "int") (pointer_declarator "*piVar1" (* "*") (identifier "piVar1")) (; ";")) (declaration "uint uVar2;" (type_identifier "uint") (identifier "uVar2") (; ";")) (declaration "uint uVar3;" (type_identifier "uint") (identifier "uVar3") (; ";")) (declaration "uint uVar4;" (type_identifier "uint") (identifier "uVar4") (; ";")) (declaration "long lVar5;" (sized_type_specifier "long" (long "long")) (identifier "lVar5") (; ";")) (declaration "int extraout_EDX;" (primitive_type "int") (identifier "extraout_EDX") (; ";")) (declaration "uint uVar6;" (type_identifier "uint") (identifier "uVar6") (; ";")) (declaration "uint uVar7;" (type_identifier "uint") (identifier "uVar7") (; ";")) (expression_statement "piVar1 = *(int **)(*(long *)(param_1 + 8) + 8);" (assignment_expression "piVar1 = *(int **)(*(long *)(param_1 + 8) + 8)" (identifier "piVar1") (= "=") (pointer_expression "*(int **)(*(long *)(param_1 + 8) + 8)" (* "*") (cast_expression "(int **)(*(long *)(param_1 + 8) + 8)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*(long *)(param_1 + 8) + 8)" (( "(") (binary_expression "*(long *)(param_1 + 8) + 8" (pointer_expression "*(long *)(param_1 + 8)" (* "*") (cast_expression "(long *)(param_1 + 8)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 8)" (( "(") (binary_expression "param_1 + 8" (identifier "param_1") (+ "+") (number_literal "8")) () ")")))) (+ "+") (number_literal "8")) () ")"))))) (; ";")) (expression_statement "uVar3 = piVar1[1];" (assignment_expression "uVar3 = piVar1[1]" (identifier "uVar3") (= "=") (subscript_expression "piVar1[1]" (identifier "piVar1") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "uVar2 = *(int *)(param_1 + 0x18) * 0x10000 + *piVar1;" (assignment_expression "uVar2 = *(int *)(param_1 + 0x18) * 0x10000 + *piVar1" (identifier "uVar2") (= "=") (binary_expression "*(int *)(param_1 + 0x18) * 0x10000 + *piVar1" (binary_expression "*(int *)(param_1 + 0x18) * 0x10000" (pointer_expression "*(int *)(param_1 + 0x18)" (* "*") (cast_expression "(int *)(param_1 + 0x18)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x18)" (( "(") (binary_expression "param_1 + 0x18" (identifier "param_1") (+ "+") (number_literal "0x18")) () ")")))) (* "*") (number_literal "0x10000")) (+ "+") (pointer_expression "*piVar1" (* "*") (identifier "piVar1")))) (; ";")) (if_statement "if ((char)param_4 == '\0') {\n    *param_2 = uVar2;\n    if (uVar3 != 0) {\n      if (uVar3 < 3) {\n        lVar5 = 2;\n      }\n      else {\n        if (5 < uVar3) goto LAB_00232334;\n        lVar5 = 4;\n      }\n      param_2 = (uint *)((long)param_2 + lVar5);\n      *param_2 = *(int *)(param_1 + 0x18) + piVar1[4];\n      uVar2 = piVar1[5];\n      if (uVar2 != 0) {\n        if (uVar2 < 3) {\n          *(int *)((long)param_2 + 2) = *(int *)(param_1 + 0x18) + piVar1[8];\n          return;\n        }\n        if (uVar2 < 6) {\n          param_2[1] = *(int *)(param_1 + 0x18) + piVar1[8];\n          return;\n        }\n      }\n    }\n  }\n  else {\n    *param_2 = uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 | *piVar1 * 0x1000000\n    ;\n    if (uVar3 != 0) {\n      if (uVar3 < 3) {\n        lVar5 = 2;\n      }\n      else {\n        if (5 < uVar3) goto LAB_00232334;\n        lVar5 = 4;\n      }\n      param_2 = (uint *)((long)param_2 + lVar5);\n      uVar2 = *(int *)(param_1 + 0x18) + piVar1[4];\n      *param_2 = uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 | uVar2 * 0x1000000\n      ;\n      uVar2 = piVar1[5];\n      if (uVar2 != 0) {\n        if (uVar2 < 3) {\n          uVar3 = *(int *)(param_1 + 0x18) + piVar1[8];\n          *(uint *)((long)param_2 + 2) =\n               uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 | uVar3 * 0x1000000;\n          return;\n        }\n        if (uVar2 < 6) {\n          uVar3 = *(int *)(param_1 + 0x18) + piVar1[8];\n          param_2[1] = uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                       uVar3 * 0x1000000;\n          return;\n        }\n      }\n    }\n  }" (if "if") (parenthesized_expression "((char)param_4 == '\0')" (( "(") (binary_expression "(char)param_4 == '\0'" (cast_expression "(char)param_4" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (identifier "param_4")) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n    *param_2 = uVar2;\n    if (uVar3 != 0) {\n      if (uVar3 < 3) {\n        lVar5 = 2;\n      }\n      else {\n        if (5 < uVar3) goto LAB_00232334;\n        lVar5 = 4;\n      }\n      param_2 = (uint *)((long)param_2 + lVar5);\n      *param_2 = *(int *)(param_1 + 0x18) + piVar1[4];\n      uVar2 = piVar1[5];\n      if (uVar2 != 0) {\n        if (uVar2 < 3) {\n          *(int *)((long)param_2 + 2) = *(int *)(param_1 + 0x18) + piVar1[8];\n          return;\n        }\n        if (uVar2 < 6) {\n          param_2[1] = *(int *)(param_1 + 0x18) + piVar1[8];\n          return;\n        }\n      }\n    }\n  }" ({ "{") (expression_statement "*param_2 = uVar2;" (assignment_expression "*param_2 = uVar2" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (= "=") (identifier "uVar2")) (; ";")) (if_statement "if (uVar3 != 0) {\n      if (uVar3 < 3) {\n        lVar5 = 2;\n      }\n      else {\n        if (5 < uVar3) goto LAB_00232334;\n        lVar5 = 4;\n      }\n      param_2 = (uint *)((long)param_2 + lVar5);\n      *param_2 = *(int *)(param_1 + 0x18) + piVar1[4];\n      uVar2 = piVar1[5];\n      if (uVar2 != 0) {\n        if (uVar2 < 3) {\n          *(int *)((long)param_2 + 2) = *(int *)(param_1 + 0x18) + piVar1[8];\n          return;\n        }\n        if (uVar2 < 6) {\n          param_2[1] = *(int *)(param_1 + 0x18) + piVar1[8];\n          return;\n        }\n      }\n    }" (if "if") (parenthesized_expression "(uVar3 != 0)" (( "(") (binary_expression "uVar3 != 0" (identifier "uVar3") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      if (uVar3 < 3) {\n        lVar5 = 2;\n      }\n      else {\n        if (5 < uVar3) goto LAB_00232334;\n        lVar5 = 4;\n      }\n      param_2 = (uint *)((long)param_2 + lVar5);\n      *param_2 = *(int *)(param_1 + 0x18) + piVar1[4];\n      uVar2 = piVar1[5];\n      if (uVar2 != 0) {\n        if (uVar2 < 3) {\n          *(int *)((long)param_2 + 2) = *(int *)(param_1 + 0x18) + piVar1[8];\n          return;\n        }\n        if (uVar2 < 6) {\n          param_2[1] = *(int *)(param_1 + 0x18) + piVar1[8];\n          return;\n        }\n      }\n    }" ({ "{") (if_statement "if (uVar3 < 3) {\n        lVar5 = 2;\n      }\n      else {\n        if (5 < uVar3) goto LAB_00232334;\n        lVar5 = 4;\n      }" (if "if") (parenthesized_expression "(uVar3 < 3)" (( "(") (binary_expression "uVar3 < 3" (identifier "uVar3") (< "<") (number_literal "3")) () ")")) (compound_statement "{\n        lVar5 = 2;\n      }" ({ "{") (expression_statement "lVar5 = 2;" (assignment_expression "lVar5 = 2" (identifier "lVar5") (= "=") (number_literal "2")) (; ";")) (} "}")) (else_clause "else {\n        if (5 < uVar3) goto LAB_00232334;\n        lVar5 = 4;\n      }" (else "else") (compound_statement "{\n        if (5 < uVar3) goto LAB_00232334;\n        lVar5 = 4;\n      }" ({ "{") (if_statement "if (5 < uVar3) goto LAB_00232334;" (if "if") (parenthesized_expression "(5 < uVar3)" (( "(") (binary_expression "5 < uVar3" (number_literal "5") (< "<") (identifier "uVar3")) () ")")) (goto_statement "goto LAB_00232334;" (goto "goto") (statement_identifier "LAB_00232334") (; ";"))) (expression_statement "lVar5 = 4;" (assignment_expression "lVar5 = 4" (identifier "lVar5") (= "=") (number_literal "4")) (; ";")) (} "}")))) (expression_statement "param_2 = (uint *)((long)param_2 + lVar5);" (assignment_expression "param_2 = (uint *)((long)param_2 + lVar5)" (identifier "param_2") (= "=") (cast_expression "(uint *)((long)param_2 + lVar5)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)param_2 + lVar5)" (( "(") (binary_expression "(long)param_2 + lVar5" (cast_expression "(long)param_2" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "param_2")) (+ "+") (identifier "lVar5")) () ")")))) (; ";")) (expression_statement "*param_2 = *(int *)(param_1 + 0x18) + piVar1[4];" (assignment_expression "*param_2 = *(int *)(param_1 + 0x18) + piVar1[4]" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (= "=") (binary_expression "*(int *)(param_1 + 0x18) + piVar1[4]" (pointer_expression "*(int *)(param_1 + 0x18)" (* "*") (cast_expression "(int *)(param_1 + 0x18)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x18)" (( "(") (binary_expression "param_1 + 0x18" (identifier "param_1") (+ "+") (number_literal "0x18")) () ")")))) (+ "+") (subscript_expression "piVar1[4]" (identifier "piVar1") ([ "[") (number_literal "4") (] "]")))) (; ";")) (expression_statement "uVar2 = piVar1[5];" (assignment_expression "uVar2 = piVar1[5]" (identifier "uVar2") (= "=") (subscript_expression "piVar1[5]" (identifier "piVar1") ([ "[") (number_literal "5") (] "]"))) (; ";")) (if_statement "if (uVar2 != 0) {\n        if (uVar2 < 3) {\n          *(int *)((long)param_2 + 2) = *(int *)(param_1 + 0x18) + piVar1[8];\n          return;\n        }\n        if (uVar2 < 6) {\n          param_2[1] = *(int *)(param_1 + 0x18) + piVar1[8];\n          return;\n        }\n      }" (if "if") (parenthesized_expression "(uVar2 != 0)" (( "(") (binary_expression "uVar2 != 0" (identifier "uVar2") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n        if (uVar2 < 3) {\n          *(int *)((long)param_2 + 2) = *(int *)(param_1 + 0x18) + piVar1[8];\n          return;\n        }\n        if (uVar2 < 6) {\n          param_2[1] = *(int *)(param_1 + 0x18) + piVar1[8];\n          return;\n        }\n      }" ({ "{") (if_statement "if (uVar2 < 3) {\n          *(int *)((long)param_2 + 2) = *(int *)(param_1 + 0x18) + piVar1[8];\n          return;\n        }" (if "if") (parenthesized_expression "(uVar2 < 3)" (( "(") (binary_expression "uVar2 < 3" (identifier "uVar2") (< "<") (number_literal "3")) () ")")) (compound_statement "{\n          *(int *)((long)param_2 + 2) = *(int *)(param_1 + 0x18) + piVar1[8];\n          return;\n        }" ({ "{") (expression_statement "*(int *)((long)param_2 + 2) = *(int *)(param_1 + 0x18) + piVar1[8];" (assignment_expression "*(int *)((long)param_2 + 2) = *(int *)(param_1 + 0x18) + piVar1[8]" (pointer_expression "*(int *)((long)param_2 + 2)" (* "*") (cast_expression "(int *)((long)param_2 + 2)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)param_2 + 2)" (( "(") (binary_expression "(long)param_2 + 2" (cast_expression "(long)param_2" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "param_2")) (+ "+") (number_literal "2")) () ")")))) (= "=") (binary_expression "*(int *)(param_1 + 0x18) + piVar1[8]" (pointer_expression "*(int *)(param_1 + 0x18)" (* "*") (cast_expression "(int *)(param_1 + 0x18)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x18)" (( "(") (binary_expression "param_1 + 0x18" (identifier "param_1") (+ "+") (number_literal "0x18")) () ")")))) (+ "+") (subscript_expression "piVar1[8]" (identifier "piVar1") ([ "[") (number_literal "8") (] "]")))) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}"))) (if_statement "if (uVar2 < 6) {\n          param_2[1] = *(int *)(param_1 + 0x18) + piVar1[8];\n          return;\n        }" (if "if") (parenthesized_expression "(uVar2 < 6)" (( "(") (binary_expression "uVar2 < 6" (identifier "uVar2") (< "<") (number_literal "6")) () ")")) (compound_statement "{\n          param_2[1] = *(int *)(param_1 + 0x18) + piVar1[8];\n          return;\n        }" ({ "{") (expression_statement "param_2[1] = *(int *)(param_1 + 0x18) + piVar1[8];" (assignment_expression "param_2[1] = *(int *)(param_1 + 0x18) + piVar1[8]" (subscript_expression "param_2[1]" (identifier "param_2") ([ "[") (number_literal "1") (] "]")) (= "=") (binary_expression "*(int *)(param_1 + 0x18) + piVar1[8]" (pointer_expression "*(int *)(param_1 + 0x18)" (* "*") (cast_expression "(int *)(param_1 + 0x18)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x18)" (( "(") (binary_expression "param_1 + 0x18" (identifier "param_1") (+ "+") (number_literal "0x18")) () ")")))) (+ "+") (subscript_expression "piVar1[8]" (identifier "piVar1") ([ "[") (number_literal "8") (] "]")))) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}"))) (} "}"))) (} "}"))) (} "}")) (else_clause "else {\n    *param_2 = uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 | *piVar1 * 0x1000000\n    ;\n    if (uVar3 != 0) {\n      if (uVar3 < 3) {\n        lVar5 = 2;\n      }\n      else {\n        if (5 < uVar3) goto LAB_00232334;\n        lVar5 = 4;\n      }\n      param_2 = (uint *)((long)param_2 + lVar5);\n      uVar2 = *(int *)(param_1 + 0x18) + piVar1[4];\n      *param_2 = uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 | uVar2 * 0x1000000\n      ;\n      uVar2 = piVar1[5];\n      if (uVar2 != 0) {\n        if (uVar2 < 3) {\n          uVar3 = *(int *)(param_1 + 0x18) + piVar1[8];\n          *(uint *)((long)param_2 + 2) =\n               uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 | uVar3 * 0x1000000;\n          return;\n        }\n        if (uVar2 < 6) {\n          uVar3 = *(int *)(param_1 + 0x18) + piVar1[8];\n          param_2[1] = uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                       uVar3 * 0x1000000;\n          return;\n        }\n      }\n    }\n  }" (else "else") (compound_statement "{\n    *param_2 = uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 | *piVar1 * 0x1000000\n    ;\n    if (uVar3 != 0) {\n      if (uVar3 < 3) {\n        lVar5 = 2;\n      }\n      else {\n        if (5 < uVar3) goto LAB_00232334;\n        lVar5 = 4;\n      }\n      param_2 = (uint *)((long)param_2 + lVar5);\n      uVar2 = *(int *)(param_1 + 0x18) + piVar1[4];\n      *param_2 = uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 | uVar2 * 0x1000000\n      ;\n      uVar2 = piVar1[5];\n      if (uVar2 != 0) {\n        if (uVar2 < 3) {\n          uVar3 = *(int *)(param_1 + 0x18) + piVar1[8];\n          *(uint *)((long)param_2 + 2) =\n               uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 | uVar3 * 0x1000000;\n          return;\n        }\n        if (uVar2 < 6) {\n          uVar3 = *(int *)(param_1 + 0x18) + piVar1[8];\n          param_2[1] = uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                       uVar3 * 0x1000000;\n          return;\n        }\n      }\n    }\n  }" ({ "{") (expression_statement "*param_2 = uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 | *piVar1 * 0x1000000\n    ;" (assignment_expression "*param_2 = uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 | *piVar1 * 0x1000000" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (= "=") (binary_expression "uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 | *piVar1 * 0x1000000" (binary_expression "uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8" (binary_expression "uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8" (binary_expression "uVar2 >> 0x18" (identifier "uVar2") (>> ">>") (number_literal "0x18")) (| "|") (binary_expression "(uVar2 & 0xff0000) >> 8" (parenthesized_expression "(uVar2 & 0xff0000)" (( "(") (binary_expression "uVar2 & 0xff0000" (identifier "uVar2") (& "&") (number_literal "0xff0000")) () ")")) (>> ">>") (number_literal "8"))) (| "|") (binary_expression "(uVar2 & 0xff00) << 8" (parenthesized_expression "(uVar2 & 0xff00)" (( "(") (binary_expression "uVar2 & 0xff00" (identifier "uVar2") (& "&") (number_literal "0xff00")) () ")")) (<< "<<") (number_literal "8"))) (| "|") (binary_expression "*piVar1 * 0x1000000" (pointer_expression "*piVar1" (* "*") (identifier "piVar1")) (* "*") (number_literal "0x1000000")))) (; ";")) (if_statement "if (uVar3 != 0) {\n      if (uVar3 < 3) {\n        lVar5 = 2;\n      }\n      else {\n        if (5 < uVar3) goto LAB_00232334;\n        lVar5 = 4;\n      }\n      param_2 = (uint *)((long)param_2 + lVar5);\n      uVar2 = *(int *)(param_1 + 0x18) + piVar1[4];\n      *param_2 = uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 | uVar2 * 0x1000000\n      ;\n      uVar2 = piVar1[5];\n      if (uVar2 != 0) {\n        if (uVar2 < 3) {\n          uVar3 = *(int *)(param_1 + 0x18) + piVar1[8];\n          *(uint *)((long)param_2 + 2) =\n               uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 | uVar3 * 0x1000000;\n          return;\n        }\n        if (uVar2 < 6) {\n          uVar3 = *(int *)(param_1 + 0x18) + piVar1[8];\n          param_2[1] = uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                       uVar3 * 0x1000000;\n          return;\n        }\n      }\n    }" (if "if") (parenthesized_expression "(uVar3 != 0)" (( "(") (binary_expression "uVar3 != 0" (identifier "uVar3") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      if (uVar3 < 3) {\n        lVar5 = 2;\n      }\n      else {\n        if (5 < uVar3) goto LAB_00232334;\n        lVar5 = 4;\n      }\n      param_2 = (uint *)((long)param_2 + lVar5);\n      uVar2 = *(int *)(param_1 + 0x18) + piVar1[4];\n      *param_2 = uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 | uVar2 * 0x1000000\n      ;\n      uVar2 = piVar1[5];\n      if (uVar2 != 0) {\n        if (uVar2 < 3) {\n          uVar3 = *(int *)(param_1 + 0x18) + piVar1[8];\n          *(uint *)((long)param_2 + 2) =\n               uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 | uVar3 * 0x1000000;\n          return;\n        }\n        if (uVar2 < 6) {\n          uVar3 = *(int *)(param_1 + 0x18) + piVar1[8];\n          param_2[1] = uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                       uVar3 * 0x1000000;\n          return;\n        }\n      }\n    }" ({ "{") (if_statement "if (uVar3 < 3) {\n        lVar5 = 2;\n      }\n      else {\n        if (5 < uVar3) goto LAB_00232334;\n        lVar5 = 4;\n      }" (if "if") (parenthesized_expression "(uVar3 < 3)" (( "(") (binary_expression "uVar3 < 3" (identifier "uVar3") (< "<") (number_literal "3")) () ")")) (compound_statement "{\n        lVar5 = 2;\n      }" ({ "{") (expression_statement "lVar5 = 2;" (assignment_expression "lVar5 = 2" (identifier "lVar5") (= "=") (number_literal "2")) (; ";")) (} "}")) (else_clause "else {\n        if (5 < uVar3) goto LAB_00232334;\n        lVar5 = 4;\n      }" (else "else") (compound_statement "{\n        if (5 < uVar3) goto LAB_00232334;\n        lVar5 = 4;\n      }" ({ "{") (if_statement "if (5 < uVar3) goto LAB_00232334;" (if "if") (parenthesized_expression "(5 < uVar3)" (( "(") (binary_expression "5 < uVar3" (number_literal "5") (< "<") (identifier "uVar3")) () ")")) (goto_statement "goto LAB_00232334;" (goto "goto") (statement_identifier "LAB_00232334") (; ";"))) (expression_statement "lVar5 = 4;" (assignment_expression "lVar5 = 4" (identifier "lVar5") (= "=") (number_literal "4")) (; ";")) (} "}")))) (expression_statement "param_2 = (uint *)((long)param_2 + lVar5);" (assignment_expression "param_2 = (uint *)((long)param_2 + lVar5)" (identifier "param_2") (= "=") (cast_expression "(uint *)((long)param_2 + lVar5)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)param_2 + lVar5)" (( "(") (binary_expression "(long)param_2 + lVar5" (cast_expression "(long)param_2" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "param_2")) (+ "+") (identifier "lVar5")) () ")")))) (; ";")) (expression_statement "uVar2 = *(int *)(param_1 + 0x18) + piVar1[4];" (assignment_expression "uVar2 = *(int *)(param_1 + 0x18) + piVar1[4]" (identifier "uVar2") (= "=") (binary_expression "*(int *)(param_1 + 0x18) + piVar1[4]" (pointer_expression "*(int *)(param_1 + 0x18)" (* "*") (cast_expression "(int *)(param_1 + 0x18)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x18)" (( "(") (binary_expression "param_1 + 0x18" (identifier "param_1") (+ "+") (number_literal "0x18")) () ")")))) (+ "+") (subscript_expression "piVar1[4]" (identifier "piVar1") ([ "[") (number_literal "4") (] "]")))) (; ";")) (expression_statement "*param_2 = uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 | uVar2 * 0x1000000\n      ;" (assignment_expression "*param_2 = uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 | uVar2 * 0x1000000" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (= "=") (binary_expression "uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 | uVar2 * 0x1000000" (binary_expression "uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8" (binary_expression "uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8" (binary_expression "uVar2 >> 0x18" (identifier "uVar2") (>> ">>") (number_literal "0x18")) (| "|") (binary_expression "(uVar2 & 0xff0000) >> 8" (parenthesized_expression "(uVar2 & 0xff0000)" (( "(") (binary_expression "uVar2 & 0xff0000" (identifier "uVar2") (& "&") (number_literal "0xff0000")) () ")")) (>> ">>") (number_literal "8"))) (| "|") (binary_expression "(uVar2 & 0xff00) << 8" (parenthesized_expression "(uVar2 & 0xff00)" (( "(") (binary_expression "uVar2 & 0xff00" (identifier "uVar2") (& "&") (number_literal "0xff00")) () ")")) (<< "<<") (number_literal "8"))) (| "|") (binary_expression "uVar2 * 0x1000000" (identifier "uVar2") (* "*") (number_literal "0x1000000")))) (; ";")) (expression_statement "uVar2 = piVar1[5];" (assignment_expression "uVar2 = piVar1[5]" (identifier "uVar2") (= "=") (subscript_expression "piVar1[5]" (identifier "piVar1") ([ "[") (number_literal "5") (] "]"))) (; ";")) (if_statement "if (uVar2 != 0) {\n        if (uVar2 < 3) {\n          uVar3 = *(int *)(param_1 + 0x18) + piVar1[8];\n          *(uint *)((long)param_2 + 2) =\n               uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 | uVar3 * 0x1000000;\n          return;\n        }\n        if (uVar2 < 6) {\n          uVar3 = *(int *)(param_1 + 0x18) + piVar1[8];\n          param_2[1] = uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                       uVar3 * 0x1000000;\n          return;\n        }\n      }" (if "if") (parenthesized_expression "(uVar2 != 0)" (( "(") (binary_expression "uVar2 != 0" (identifier "uVar2") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n        if (uVar2 < 3) {\n          uVar3 = *(int *)(param_1 + 0x18) + piVar1[8];\n          *(uint *)((long)param_2 + 2) =\n               uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 | uVar3 * 0x1000000;\n          return;\n        }\n        if (uVar2 < 6) {\n          uVar3 = *(int *)(param_1 + 0x18) + piVar1[8];\n          param_2[1] = uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                       uVar3 * 0x1000000;\n          return;\n        }\n      }" ({ "{") (if_statement "if (uVar2 < 3) {\n          uVar3 = *(int *)(param_1 + 0x18) + piVar1[8];\n          *(uint *)((long)param_2 + 2) =\n               uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 | uVar3 * 0x1000000;\n          return;\n        }" (if "if") (parenthesized_expression "(uVar2 < 3)" (( "(") (binary_expression "uVar2 < 3" (identifier "uVar2") (< "<") (number_literal "3")) () ")")) (compound_statement "{\n          uVar3 = *(int *)(param_1 + 0x18) + piVar1[8];\n          *(uint *)((long)param_2 + 2) =\n               uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 | uVar3 * 0x1000000;\n          return;\n        }" ({ "{") (expression_statement "uVar3 = *(int *)(param_1 + 0x18) + piVar1[8];" (assignment_expression "uVar3 = *(int *)(param_1 + 0x18) + piVar1[8]" (identifier "uVar3") (= "=") (binary_expression "*(int *)(param_1 + 0x18) + piVar1[8]" (pointer_expression "*(int *)(param_1 + 0x18)" (* "*") (cast_expression "(int *)(param_1 + 0x18)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x18)" (( "(") (binary_expression "param_1 + 0x18" (identifier "param_1") (+ "+") (number_literal "0x18")) () ")")))) (+ "+") (subscript_expression "piVar1[8]" (identifier "piVar1") ([ "[") (number_literal "8") (] "]")))) (; ";")) (expression_statement "*(uint *)((long)param_2 + 2) =\n               uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 | uVar3 * 0x1000000;" (assignment_expression "*(uint *)((long)param_2 + 2) =\n               uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 | uVar3 * 0x1000000" (pointer_expression "*(uint *)((long)param_2 + 2)" (* "*") (cast_expression "(uint *)((long)param_2 + 2)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)param_2 + 2)" (( "(") (binary_expression "(long)param_2 + 2" (cast_expression "(long)param_2" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "param_2")) (+ "+") (number_literal "2")) () ")")))) (= "=") (binary_expression "uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 | uVar3 * 0x1000000" (binary_expression "uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8" (binary_expression "uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8" (binary_expression "uVar3 >> 0x18" (identifier "uVar3") (>> ">>") (number_literal "0x18")) (| "|") (binary_expression "(uVar3 & 0xff0000) >> 8" (parenthesized_expression "(uVar3 & 0xff0000)" (( "(") (binary_expression "uVar3 & 0xff0000" (identifier "uVar3") (& "&") (number_literal "0xff0000")) () ")")) (>> ">>") (number_literal "8"))) (| "|") (binary_expression "(uVar3 & 0xff00) << 8" (parenthesized_expression "(uVar3 & 0xff00)" (( "(") (binary_expression "uVar3 & 0xff00" (identifier "uVar3") (& "&") (number_literal "0xff00")) () ")")) (<< "<<") (number_literal "8"))) (| "|") (binary_expression "uVar3 * 0x1000000" (identifier "uVar3") (* "*") (number_literal "0x1000000")))) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}"))) (if_statement "if (uVar2 < 6) {\n          uVar3 = *(int *)(param_1 + 0x18) + piVar1[8];\n          param_2[1] = uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                       uVar3 * 0x1000000;\n          return;\n        }" (if "if") (parenthesized_expression "(uVar2 < 6)" (( "(") (binary_expression "uVar2 < 6" (identifier "uVar2") (< "<") (number_literal "6")) () ")")) (compound_statement "{\n          uVar3 = *(int *)(param_1 + 0x18) + piVar1[8];\n          param_2[1] = uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                       uVar3 * 0x1000000;\n          return;\n        }" ({ "{") (expression_statement "uVar3 = *(int *)(param_1 + 0x18) + piVar1[8];" (assignment_expression "uVar3 = *(int *)(param_1 + 0x18) + piVar1[8]" (identifier "uVar3") (= "=") (binary_expression "*(int *)(param_1 + 0x18) + piVar1[8]" (pointer_expression "*(int *)(param_1 + 0x18)" (* "*") (cast_expression "(int *)(param_1 + 0x18)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x18)" (( "(") (binary_expression "param_1 + 0x18" (identifier "param_1") (+ "+") (number_literal "0x18")) () ")")))) (+ "+") (subscript_expression "piVar1[8]" (identifier "piVar1") ([ "[") (number_literal "8") (] "]")))) (; ";")) (expression_statement "param_2[1] = uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                       uVar3 * 0x1000000;" (assignment_expression "param_2[1] = uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                       uVar3 * 0x1000000" (subscript_expression "param_2[1]" (identifier "param_2") ([ "[") (number_literal "1") (] "]")) (= "=") (binary_expression "uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                       uVar3 * 0x1000000" (binary_expression "uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8" (binary_expression "uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8" (binary_expression "uVar3 >> 0x18" (identifier "uVar3") (>> ">>") (number_literal "0x18")) (| "|") (binary_expression "(uVar3 & 0xff0000) >> 8" (parenthesized_expression "(uVar3 & 0xff0000)" (( "(") (binary_expression "uVar3 & 0xff0000" (identifier "uVar3") (& "&") (number_literal "0xff0000")) () ")")) (>> ">>") (number_literal "8"))) (| "|") (binary_expression "(uVar3 & 0xff00) << 8" (parenthesized_expression "(uVar3 & 0xff00)" (( "(") (binary_expression "uVar3 & 0xff00" (identifier "uVar3") (& "&") (number_literal "0xff00")) () ")")) (<< "<<") (number_literal "8"))) (| "|") (binary_expression "uVar3 * 0x1000000" (identifier "uVar3") (* "*") (number_literal "0x1000000")))) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}"))) (} "}"))) (} "}"))) (} "}")))) (labeled_statement "LAB_00232334:\n  FUN_00230fb0();" (statement_identifier "LAB_00232334") (: ":") (expression_statement "FUN_00230fb0();" (call_expression "FUN_00230fb0()" (identifier "FUN_00230fb0") (argument_list "()" (( "(") () ")"))) (; ";"))) (expression_statement "uVar6 = extraout_EDX + (((-8 - param_6) + uVar3) - param_4);" (assignment_expression "uVar6 = extraout_EDX + (((-8 - param_6) + uVar3) - param_4)" (identifier "uVar6") (= "=") (binary_expression "extraout_EDX + (((-8 - param_6) + uVar3) - param_4)" (identifier "extraout_EDX") (+ "+") (parenthesized_expression "(((-8 - param_6) + uVar3) - param_4)" (( "(") (binary_expression "((-8 - param_6) + uVar3) - param_4" (parenthesized_expression "((-8 - param_6) + uVar3)" (( "(") (binary_expression "(-8 - param_6) + uVar3" (parenthesized_expression "(-8 - param_6)" (( "(") (binary_expression "-8 - param_6" (number_literal "-8") (- "-") (identifier "param_6")) () ")")) (+ "+") (identifier "uVar3")) () ")")) (- "-") (identifier "param_4")) () ")")))) (; ";")) (expression_statement "uVar3 = (int)uVar6 >> 0x1c | 0xe28fc200;" (assignment_expression "uVar3 = (int)uVar6 >> 0x1c | 0xe28fc200" (identifier "uVar3") (= "=") (binary_expression "(int)uVar6 >> 0x1c | 0xe28fc200" (binary_expression "(int)uVar6 >> 0x1c" (cast_expression "(int)uVar6" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar6")) (>> ">>") (number_literal "0x1c")) (| "|") (number_literal "0xe28fc200"))) (; ";")) (expression_statement "uVar2 = (int)uVar6 >> 0x14 & 0xff;" (assignment_expression "uVar2 = (int)uVar6 >> 0x14 & 0xff" (identifier "uVar2") (= "=") (binary_expression "(int)uVar6 >> 0x14 & 0xff" (binary_expression "(int)uVar6 >> 0x14" (cast_expression "(int)uVar6" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar6")) (>> ">>") (number_literal "0x14")) (& "&") (number_literal "0xff"))) (; ";")) (expression_statement "uVar7 = uVar6 & 0xfff | 0xe5bcf000;" (assignment_expression "uVar7 = uVar6 & 0xfff | 0xe5bcf000" (identifier "uVar7") (= "=") (binary_expression "uVar6 & 0xfff | 0xe5bcf000" (binary_expression "uVar6 & 0xfff" (identifier "uVar6") (& "&") (number_literal "0xfff")) (| "|") (number_literal "0xe5bcf000"))) (; ";")) (expression_statement "uVar4 = (int)uVar6 >> 0xc & 0xff;" (assignment_expression "uVar4 = (int)uVar6 >> 0xc & 0xff" (identifier "uVar4") (= "=") (binary_expression "(int)uVar6 >> 0xc & 0xff" (binary_expression "(int)uVar6 >> 0xc" (cast_expression "(int)uVar6" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar6")) (>> ">>") (number_literal "0xc")) (& "&") (number_literal "0xff"))) (; ";")) (if_statement "if (*(long *)(PTR_DAT_0067cb08 + 0x10) == 0) {\n                    \n    FUN_00231730();\n  }" (if "if") (parenthesized_expression "(*(long *)(PTR_DAT_0067cb08 + 0x10) == 0)" (( "(") (binary_expression "*(long *)(PTR_DAT_0067cb08 + 0x10) == 0" (pointer_expression "*(long *)(PTR_DAT_0067cb08 + 0x10)" (* "*") (cast_expression "(long *)(PTR_DAT_0067cb08 + 0x10)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_DAT_0067cb08 + 0x10)" (( "(") (binary_expression "PTR_DAT_0067cb08 + 0x10" (identifier "PTR_DAT_0067cb08") (+ "+") (number_literal "0x10")) () ")")))) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                    \n    FUN_00231730();\n  }" ({ "{") (expression_statement "FUN_00231730();" (call_expression "FUN_00231730()" (identifier "FUN_00231730") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (if_statement "if (*(char *)(*(long *)(PTR_DAT_0067cb08 + 0x10) + 0x671) != '\0') {\n    *param_2 = uVar3;\n    param_2[1] = uVar2 | 0xe28cc600;\n    param_2[2] = uVar4 | 0xe28cca00;\n    param_2[3] = uVar7;\n    return;\n  }" (if "if") (parenthesized_expression "(*(char *)(*(long *)(PTR_DAT_0067cb08 + 0x10) + 0x671) != '\0')" (( "(") (binary_expression "*(char *)(*(long *)(PTR_DAT_0067cb08 + 0x10) + 0x671) != '\0'" (pointer_expression "*(char *)(*(long *)(PTR_DAT_0067cb08 + 0x10) + 0x671)" (* "*") (cast_expression "(char *)(*(long *)(PTR_DAT_0067cb08 + 0x10) + 0x671)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(long *)(PTR_DAT_0067cb08 + 0x10) + 0x671)" (( "(") (binary_expression "*(long *)(PTR_DAT_0067cb08 + 0x10) + 0x671" (pointer_expression "*(long *)(PTR_DAT_0067cb08 + 0x10)" (* "*") (cast_expression "(long *)(PTR_DAT_0067cb08 + 0x10)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_DAT_0067cb08 + 0x10)" (( "(") (binary_expression "PTR_DAT_0067cb08 + 0x10" (identifier "PTR_DAT_0067cb08") (+ "+") (number_literal "0x10")) () ")")))) (+ "+") (number_literal "0x671")) () ")")))) (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n    *param_2 = uVar3;\n    param_2[1] = uVar2 | 0xe28cc600;\n    param_2[2] = uVar4 | 0xe28cca00;\n    param_2[3] = uVar7;\n    return;\n  }" ({ "{") (expression_statement "*param_2 = uVar3;" (assignment_expression "*param_2 = uVar3" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (= "=") (identifier "uVar3")) (; ";")) (expression_statement "param_2[1] = uVar2 | 0xe28cc600;" (assignment_expression "param_2[1] = uVar2 | 0xe28cc600" (subscript_expression "param_2[1]" (identifier "param_2") ([ "[") (number_literal "1") (] "]")) (= "=") (binary_expression "uVar2 | 0xe28cc600" (identifier "uVar2") (| "|") (number_literal "0xe28cc600"))) (; ";")) (expression_statement "param_2[2] = uVar4 | 0xe28cca00;" (assignment_expression "param_2[2] = uVar4 | 0xe28cca00" (subscript_expression "param_2[2]" (identifier "param_2") ([ "[") (number_literal "2") (] "]")) (= "=") (binary_expression "uVar4 | 0xe28cca00" (identifier "uVar4") (| "|") (number_literal "0xe28cca00"))) (; ";")) (expression_statement "param_2[3] = uVar7;" (assignment_expression "param_2[3] = uVar7" (subscript_expression "param_2[3]" (identifier "param_2") ([ "[") (number_literal "3") (] "]")) (= "=") (identifier "uVar7")) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}"))) (expression_statement "*param_2 = uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n             ((int)uVar6 >> 0x1c) << 0x18;" (assignment_expression "*param_2 = uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n             ((int)uVar6 >> 0x1c) << 0x18" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (= "=") (binary_expression "uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n             ((int)uVar6 >> 0x1c) << 0x18" (binary_expression "uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8" (binary_expression "uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8" (binary_expression "uVar3 >> 0x18" (identifier "uVar3") (>> ">>") (number_literal "0x18")) (| "|") (binary_expression "(uVar3 & 0xff0000) >> 8" (parenthesized_expression "(uVar3 & 0xff0000)" (( "(") (binary_expression "uVar3 & 0xff0000" (identifier "uVar3") (& "&") (number_literal "0xff0000")) () ")")) (>> ">>") (number_literal "8"))) (| "|") (binary_expression "(uVar3 & 0xff00) << 8" (parenthesized_expression "(uVar3 & 0xff00)" (( "(") (binary_expression "uVar3 & 0xff00" (identifier "uVar3") (& "&") (number_literal "0xff00")) () ")")) (<< "<<") (number_literal "8"))) (| "|") (binary_expression "((int)uVar6 >> 0x1c) << 0x18" (parenthesized_expression "((int)uVar6 >> 0x1c)" (( "(") (binary_expression "(int)uVar6 >> 0x1c" (cast_expression "(int)uVar6" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar6")) (>> ">>") (number_literal "0x1c")) () ")")) (<< "<<") (number_literal "0x18")))) (; ";")) (expression_statement "param_2[1] = uVar2 << 0x18 | 0xc68ce2;" (assignment_expression "param_2[1] = uVar2 << 0x18 | 0xc68ce2" (subscript_expression "param_2[1]" (identifier "param_2") ([ "[") (number_literal "1") (] "]")) (= "=") (binary_expression "uVar2 << 0x18 | 0xc68ce2" (binary_expression "uVar2 << 0x18" (identifier "uVar2") (<< "<<") (number_literal "0x18")) (| "|") (number_literal "0xc68ce2"))) (; ";")) (expression_statement "param_2[2] = uVar4 << 0x18 | 0xca8ce2;" (assignment_expression "param_2[2] = uVar4 << 0x18 | 0xca8ce2" (subscript_expression "param_2[2]" (identifier "param_2") ([ "[") (number_literal "2") (] "]")) (= "=") (binary_expression "uVar4 << 0x18 | 0xca8ce2" (binary_expression "uVar4 << 0x18" (identifier "uVar4") (<< "<<") (number_literal "0x18")) (| "|") (number_literal "0xca8ce2"))) (; ";")) (expression_statement "param_2[3] = (uVar7 & 0xff00) << 8 | 0xbce5 | (uVar6 & 0xfff) << 0x18;" (assignment_expression "param_2[3] = (uVar7 & 0xff00) << 8 | 0xbce5 | (uVar6 & 0xfff) << 0x18" (subscript_expression "param_2[3]" (identifier "param_2") ([ "[") (number_literal "3") (] "]")) (= "=") (binary_expression "(uVar7 & 0xff00) << 8 | 0xbce5 | (uVar6 & 0xfff) << 0x18" (binary_expression "(uVar7 & 0xff00) << 8 | 0xbce5" (binary_expression "(uVar7 & 0xff00) << 8" (parenthesized_expression "(uVar7 & 0xff00)" (( "(") (binary_expression "uVar7 & 0xff00" (identifier "uVar7") (& "&") (number_literal "0xff00")) () ")")) (<< "<<") (number_literal "8")) (| "|") (number_literal "0xbce5")) (| "|") (binary_expression "(uVar6 & 0xfff) << 0x18" (parenthesized_expression "(uVar6 & 0xfff)" (( "(") (binary_expression "uVar6 & 0xfff" (identifier "uVar6") (& "&") (number_literal "0xfff")) () ")")) (<< "<<") (number_literal "0x18")))) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}")))

/* WARNING: Enum "<anon>": Some values do not have unique names */
/* DWARF original prototype: void do_write(Arm_v4bx_stub * this, uchar * view, section_size_type
   view_size, bool big_endian) */

void __thiscall
anon_unknown.dwarf_9b9b16::type_1::function_1
          (type_1 *this,type_2 *var_5,type_3 view_size,bool big_endian)

{
  type_4 var_2;
  type_5 *pIVar2;
  type_6 var_1;
  long var_6;
  type_6 *puVar5;
  int *piVar6;
  
  pIVar2 = ((this->super_Stub).stub_template_)->insns_;
  var_2 = pIVar2->type_;
  var_1 = this->reg_ * 0x10000 + pIVar2->data_;
  if (big_endian) {
    *(type_6 *)var_5 =
         var_1 >> 0x18 | (var_1 & 0xff0000) >> 8 | (var_1 & 0xff00) << 8 | pIVar2->data_ * 0x1000000
    ;
    if (var_2 != 0) {
      if (var_2 < var_3) {
        var_6 = 2;
      }
      else {
        if (var_4 < var_2) goto LAB_00232334;
        var_6 = 4;
      }
      puVar5 = (type_6 *)(var_5 + var_6);
      var_1 = this->reg_ + pIVar2[1].data_;
      *puVar5 = var_1 >> 0x18 | (var_1 & 0xff0000) >> 8 | (var_1 & 0xff00) << 8 | var_1 * 0x1000000;
      var_2 = pIVar2[1].type_;
      if (var_2 != 0) {
        if (var_2 < var_3) {
          var_1 = this->reg_ + pIVar2[2].data_;
          *(type_6 *)((long)puVar5 + 2) =
               var_1 >> 0x18 | (var_1 & 0xff0000) >> 8 | (var_1 & 0xff00) << 8 | var_1 * 0x1000000;
          return;
        }
        if (var_2 < (var_7|var_8)) {
          var_1 = this->reg_ + pIVar2[2].data_;
          puVar5[1] = var_1 >> 0x18 | (var_1 & 0xff0000) >> 8 | (var_1 & 0xff00) << 8 |
                      var_1 * 0x1000000;
          return;
        }
      }
    }
  }
  else {
    *(type_6 *)var_5 = var_1;
    if (var_2 != 0) {
      if (var_2 < var_3) {
        var_6 = 2;
      }
      else {
        if (var_4 < var_2) goto LAB_00232334;
        var_6 = 4;
      }
      piVar6 = (int *)(var_5 + var_6);
      *piVar6 = this->reg_ + pIVar2[1].data_;
      var_2 = pIVar2[1].type_;
      if (var_2 != 0) {
        if (var_2 < var_3) {
          *(uint32_t *)((long)piVar6 + 2) = this->reg_ + pIVar2[2].data_;
          return;
        }
        if (var_2 < (var_7|var_8)) {
          piVar6[1] = this->reg_ + pIVar2[2].data_;
          return;
        }
      }
    }
  }
LAB_00232334:
                    /* WARNING: Subroutine does not return */
  Insn_template::var_9((type_5 *)this);
}


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

void MASKED(long param_1,uint *param_2,undefined8 param_3,int param_4,undefined8 param_5,
                 int param_6)

{
  int *piVar1;
  uint uVar2;
  uint uVar3;
  uint uVar4;
  long lVar5;
  int extraout_EDX;
  uint uVar6;
  uint uVar7;
  
  piVar1 = *(int **)(*(long *)(param_1 + 8) + 8);
  uVar3 = piVar1[1];
  uVar2 = *(int *)(param_1 + 0x18) * 0x10000 + *piVar1;
  if ((char)param_4 == '\0') {
    *param_2 = uVar2;
    if (uVar3 != 0) {
      if (uVar3 < 3) {
        lVar5 = 2;
      }
      else {
        if (5 < uVar3) goto LAB_00232334;
        lVar5 = 4;
      }
      param_2 = (uint *)((long)param_2 + lVar5);
      *param_2 = *(int *)(param_1 + 0x18) + piVar1[4];
      uVar2 = piVar1[5];
      if (uVar2 != 0) {
        if (uVar2 < 3) {
          *(int *)((long)param_2 + 2) = *(int *)(param_1 + 0x18) + piVar1[8];
          return;
        }
        if (uVar2 < 6) {
          param_2[1] = *(int *)(param_1 + 0x18) + piVar1[8];
          return;
        }
      }
    }
  }
  else {
    *param_2 = uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 | *piVar1 * 0x1000000
    ;
    if (uVar3 != 0) {
      if (uVar3 < 3) {
        lVar5 = 2;
      }
      else {
        if (5 < uVar3) goto LAB_00232334;
        lVar5 = 4;
      }
      param_2 = (uint *)((long)param_2 + lVar5);
      uVar2 = *(int *)(param_1 + 0x18) + piVar1[4];
      *param_2 = uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 | uVar2 * 0x1000000
      ;
      uVar2 = piVar1[5];
      if (uVar2 != 0) {
        if (uVar2 < 3) {
          uVar3 = *(int *)(param_1 + 0x18) + piVar1[8];
          *(uint *)((long)param_2 + 2) =
               uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 | uVar3 * 0x1000000;
          return;
        }
        if (uVar2 < 6) {
          uVar3 = *(int *)(param_1 + 0x18) + piVar1[8];
          param_2[1] = uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |
                       uVar3 * 0x1000000;
          return;
        }
      }
    }
  }
LAB_00232334:
  FUN_00230fb0();
  uVar6 = extraout_EDX + (((-8 - param_6) + uVar3) - param_4);
  uVar3 = (int)uVar6 >> 0x1c | 0xe28fc200;
  uVar2 = (int)uVar6 >> 0x14 & 0xff;
  uVar7 = uVar6 & 0xfff | 0xe5bcf000;
  uVar4 = (int)uVar6 >> 0xc & 0xff;
  if (*(long *)(PTR_DAT_0067cb08 + 0x10) == 0) {
                    /* WARNING: Subroutine does not return */
    FUN_00231730();
  }
  if (*(char *)(*(long *)(PTR_DAT_0067cb08 + 0x10) + 0x671) != '\0') {
    *param_2 = uVar3;
    param_2[1] = uVar2 | 0xe28cc600;
    param_2[2] = uVar4 | 0xe28cca00;
    param_2[3] = uVar7;
    return;
  }
  *param_2 = uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |
             ((int)uVar6 >> 0x1c) << 0x18;
  param_2[1] = uVar2 << 0x18 | 0xc68ce2;
  param_2[2] = uVar4 << 0x18 | 0xca8ce2;
  param_2[3] = (uVar7 & 0xff00) << 8 | 0xbce5 | (uVar6 & 0xfff) << 0x18;
  return;
}

