
void insert_pad(lang_statement_union_type **ptr,fill_type *fill,bfd_size_type alignment_needed,
               asection *output_section,bfd_vma dot)

{
  wildcard_list *pwVar1;
  longlong lVar2;
  lang_statement_union_type *plVar3;
  walk_wild_section_handler_t p_Var4;
  wildcard_list *pwVar5;
  wildcard_list *pwVar6;
  uint uVar7;
  uint uVar8;
  uint in_a3;
  name_list *pnVar9;
  uint uVar10;
  uint uVar11;
  
  if ((((ptr == (lang_statement_union_type **)(PTR_DAT_001db8f8 + -0x3b70)) ||
       (ptr == (lang_statement_union_type **)0x0)) || (ptr[1] != (lang_statement_union_type *)0xc))
     || (ptr[6] != alignment_needed._0_4_)) {
    plVar3 = *ptr;
    if (((plVar3 == (lang_statement_union_type *)0x0) ||
        ((plVar3->header).type != lang_padding_statement_enum)) ||
       ((plVar3->wild_statement).children.head != alignment_needed._0_4_)) {
      plVar3 = (lang_statement_union_type *)stat_alloc(0x20);
      (plVar3->header).next = *ptr;
      *ptr = plVar3;
      (plVar3->header).type = lang_padding_statement_enum;
      (plVar3->data_statement).output_section = (asection *)alignment_needed._0_4_;
      if (fill == (fill_type *)0x0) {
        fill = (fill_type *)(PTR_DAT_001db8f8 + -0x3c08);
      }
      (plVar3->padding_statement).fill = fill;
      p_Var4 = ((alignment_needed._0_4_)->wild_statement).walk_wild_section_handler;
      ptr = (lang_statement_union_type **)plVar3;
    }
    else {
      p_Var4 = ((alignment_needed._0_4_)->wild_statement).walk_wild_section_handler;
      ptr = (lang_statement_union_type **)plVar3;
    }
  }
  else {
    p_Var4 = ((alignment_needed._0_4_)->wild_statement).walk_wild_section_handler;
  }
  pnVar9 = ((alignment_needed._0_4_)->wild_statement).exclude_name_list;
  uVar7 = ((alignment_needed._0_4_)->wild_statement).keep_sections;
  ((lang_reloc_statement_type *)ptr)->section = output_section;
  ((lang_wild_statement_type *)ptr)->keep_sections = in_a3;
  ((lang_data_statement_type *)ptr)->exp = (etree_union *)((int)dot._4_4_ - (int)p_Var4);
  ((lang_wild_statement_type *)ptr)->filename =
       (char *)((dot._0_4_ - (int)pnVar9) -
               (uint)(dot._4_4_ < (etree_union *)((int)dot._4_4_ - (int)p_Var4)));
  if ((uVar7 & 0x800) == 0) {
    uVar8 = *(uint *)(PTR_DAT_001db8f8 + -0x3ba4);
    uVar10 = (uint)output_section >> (uVar8 & 0x1f);
    uVar11 = uVar10;
    uVar7 = ((int)output_section << 1) << (~uVar8 & 0x1f) | in_a3 >> (uVar8 & 0x1f);
    if ((uVar8 & 0x20) != 0) {
      uVar11 = 0;
      uVar7 = uVar10;
    }
    lVar2 = dot + CONCAT44(uVar11,uVar7);
    uVar11 = (uint)lVar2;
    uVar7 = uVar11 - (int)p_Var4;
    pwVar5 = (wildcard_list *)(uVar7 << (uVar8 & 0x1f));
    pwVar6 = pwVar5;
    pwVar1 = (wildcard_list *)
             (((int)((ulonglong)lVar2 >> 0x20) - (int)pnVar9) - (uint)(uVar11 < uVar7) <<
              (uVar8 & 0x1f) | (uVar7 >> 1) >> (~uVar8 & 0x1f));
    if ((uVar8 & 0x20) != 0) {
      pwVar6 = (wildcard_list *)0x0;
      pwVar1 = pwVar5;
    }
    ((alignment_needed._0_4_)->wild_statement).handler_data[2] = pwVar1;
    ((alignment_needed._0_4_)->wild_statement).handler_data[3] = pwVar6;
  }
  return;
}



void FUN_0002687c(undefined4 *param_1,undefined *param_2,uint param_3,uint param_4,int param_5,
                 undefined4 param_6,int param_7,uint param_8)

{
  undefined4 *puVar1;
  int iVar2;
  uint uVar3;
  uint uVar4;
  uint uVar5;
  uint uVar6;
  int iVar7;
  uint uVar8;
  uint uVar9;
  
  if ((((param_1 == (undefined4 *)(PTR_DAT_001db8f8 + -0x3b70)) || (param_1 == (undefined4 *)0x0))
      || (param_1[1] != 0xc)) || (param_1[6] != param_5)) {
    puVar1 = (undefined4 *)*param_1;
    if (((puVar1 == (undefined4 *)0x0) || (puVar1[1] != 0xc)) || (puVar1[6] != param_5)) {
      puVar1 = (undefined4 *)stat_alloc(0x20);
      *puVar1 = *param_1;
      *param_1 = puVar1;
      puVar1[1] = 0xc;
      puVar1[6] = param_5;
      if (param_2 == (undefined *)0x0) {
        param_2 = PTR_DAT_001db8f8 + -0x3c08;
      }
      puVar1[7] = param_2;
      iVar2 = *(int *)(param_5 + 0x24);
      param_1 = puVar1;
    }
    else {
      iVar2 = *(int *)(param_5 + 0x24);
      param_1 = puVar1;
    }
  }
  else {
    iVar2 = *(int *)(param_5 + 0x24);
  }
  iVar7 = *(int *)(param_5 + 0x20);
  uVar5 = *(uint *)(param_5 + 0x14);
  param_1[4] = param_3;
  param_1[5] = param_4;
  param_1[3] = param_8 - iVar2;
  param_1[2] = (param_7 - iVar7) - (uint)(param_8 < param_8 - iVar2);
  if ((uVar5 & 0x800) == 0) {
    uVar6 = *(uint *)(PTR_DAT_001db8f8 + -0x3ba4);
    uVar8 = param_3 >> (uVar6 & 0x1f);
    uVar9 = uVar8;
    uVar5 = (param_3 << 1) << (~uVar6 & 0x1f) | param_4 >> (uVar6 & 0x1f);
    if ((uVar6 & 0x20) != 0) {
      uVar9 = 0;
      uVar5 = uVar8;
    }
    param_8 = uVar5 + param_8;
    uVar3 = param_8 - iVar2;
    uVar4 = uVar3 << (uVar6 & 0x1f);
    uVar8 = uVar4;
    uVar5 = (((uint)(param_8 < uVar5) + uVar9 + param_7) - iVar7) - (uint)(param_8 < uVar3) <<
            (uVar6 & 0x1f) | (uVar3 >> 1) >> (~uVar6 & 0x1f);
    if ((uVar6 & 0x20) != 0) {
      uVar8 = 0;
      uVar5 = uVar4;
    }
    *(uint *)(param_5 + 0x30) = uVar5;
    *(uint *)(param_5 + 0x34) = uVar8;
  }
  return;
}


lui gp,0x1c
addiu gp,gp,-0x2fac
addu gp,gp,t9
lw v0,-0x7fd8(gp)
addiu sp,sp,-0x38
addiu v0,v0,-0x3b70
sw gp,0x10(sp)
sw s6,0x30(sp)
sw s5,0x2c(sp)
or s5,a1,zero
sw s4,0x28(sp)
or s4,a0,zero
sw s3,0x24(sp)
sw s2,0x20(sp)
or s2,a2,zero
sw s1,0x1c(sp)
sw s0,0x18(sp)
or s0,a3,zero
sw ra,0x34(sp)
lw s3,0x48(sp)
lw s6,0x50(sp)
beq a0,v0,0x000268ec
_lw s1,0x54(sp)
beq a0,zero,0x000268ec
_li v0,0xc
lw v1,0x4(a0)
beq v1,v0,0x00026a20
_nop
lw v0,0x0(s4)
beq v0,zero,0x00026904
_li v1,0xc
lw a0,0x4(v0)
beq a0,v1,0x00026a0c
_nop
lw t9,-0x7d30(gp)
bal 0x0002663c
_li a0,0x20
lw v1,0x0(s4)
lw gp,0x10(sp)
sw v1,0x0(v0)
li v1,0xc
sw v0,0x0(s4)
sw v1,0x4(v0)
beq s5,zero,0x00026a00
_sw s3,0x18(v0)
sw s5,0x1c(v0)
lw v1,0x24(s3)
lw t0,0x20(s3)
lw a0,0x14(s3)
subu a2,s1,v1
sw s2,0x10(v0)
subu a1,s6,t0
sw s0,0x14(v0)
sltu a3,s1,a2
sw a2,0xc(v0)
subu a1,a1,a3
andi a0,a0,0x800
bne a0,zero,0x000269d8
_sw a1,0x8(v0)
lw v0,-0x7fd8(gp)
sll t1,s2,0x1
lw a1,-0x3ba4(v0)
nor t2,zero,a1
sllv t1,t1,t2
srlv a3,s0,a1
srlv s2,s2,a1
andi a0,a1,0x20
or a3,t1,a3
movn a3,s2,a0
movn s2,zero,a0
addu s1,a3,s1
addu v0,s2,s6
sltu a3,s1,a3
addu v0,a3,v0
subu v1,s1,v1
subu v0,v0,t0
sltu s1,s1,v1
srl a2,v1,0x1
subu v0,v0,s1
srlv a2,a2,t2
sllv v0,v0,a1
sllv v1,v1,a1
or v0,v0,a2
movn v0,v1,a0
movn v1,zero,a0
sw v0,0x30(s3)
sw v1,0x34(s3)
lw ra,0x34(sp)
lw s6,0x30(sp)
lw s5,0x2c(sp)
lw s4,0x28(sp)
lw s3,0x24(sp)
lw s2,0x20(sp)
lw s1,0x1c(sp)
lw s0,0x18(sp)
jr ra
_addiu sp,sp,0x38
lw s5,-0x7fd8(gp)
b 0x00026930
_addiu s5,s5,-0x3c08
lw v1,0x18(v0)
bne v1,s3,0x00026908
_lw t9,-0x7d30(gp)
b 0x00026938
_lw v1,0x24(s3)
lw v0,0x18(a0)
bne v0,s3,0x000268ec
_or v0,a0,zero
b 0x00026938
_lw v1,0x24(s3)
(translation_unit "void FUN_0002687c(undefined4 *param_1,undefined *param_2,uint param_3,uint param_4,int param_5,\n                 undefined4 param_6,int param_7,uint param_8)\n\n{\n  undefined4 *puVar1;\n  int iVar2;\n  uint uVar3;\n  uint uVar4;\n  uint uVar5;\n  uint uVar6;\n  int iVar7;\n  uint uVar8;\n  uint uVar9;\n  \n  if ((((param_1 == (undefined4 *)(PTR_DAT_001db8f8 + -0x3b70)) || (param_1 == (undefined4 *)0x0))\n      || (param_1[1] != 0xc)) || (param_1[6] != param_5)) {\n    puVar1 = (undefined4 *)*param_1;\n    if (((puVar1 == (undefined4 *)0x0) || (puVar1[1] != 0xc)) || (puVar1[6] != param_5)) {\n      puVar1 = (undefined4 *)stat_alloc(0x20);\n      *puVar1 = *param_1;\n      *param_1 = puVar1;\n      puVar1[1] = 0xc;\n      puVar1[6] = param_5;\n      if (param_2 == (undefined *)0x0) {\n        param_2 = PTR_DAT_001db8f8 + -0x3c08;\n      }\n      puVar1[7] = param_2;\n      iVar2 = *(int *)(param_5 + 0x24);\n      param_1 = puVar1;\n    }\n    else {\n      iVar2 = *(int *)(param_5 + 0x24);\n      param_1 = puVar1;\n    }\n  }\n  else {\n    iVar2 = *(int *)(param_5 + 0x24);\n  }\n  iVar7 = *(int *)(param_5 + 0x20);\n  uVar5 = *(uint *)(param_5 + 0x14);\n  param_1[4] = param_3;\n  param_1[5] = param_4;\n  param_1[3] = param_8 - iVar2;\n  param_1[2] = (param_7 - iVar7) - (uint)(param_8 < param_8 - iVar2);\n  if ((uVar5 & 0x800) == 0) {\n    uVar6 = *(uint *)(PTR_DAT_001db8f8 + -0x3ba4);\n    uVar8 = param_3 >> (uVar6 & 0x1f);\n    uVar9 = uVar8;\n    uVar5 = (param_3 << 1) << (~uVar6 & 0x1f) | param_4 >> (uVar6 & 0x1f);\n    if ((uVar6 & 0x20) != 0) {\n      uVar9 = 0;\n      uVar5 = uVar8;\n    }\n    param_8 = uVar5 + param_8;\n    uVar3 = param_8 - iVar2;\n    uVar4 = uVar3 << (uVar6 & 0x1f);\n    uVar8 = uVar4;\n    uVar5 = (((uint)(param_8 < uVar5) + uVar9 + param_7) - iVar7) - (uint)(param_8 < uVar3) <<\n            (uVar6 & 0x1f) | (uVar3 >> 1) >> (~uVar6 & 0x1f);\n    if ((uVar6 & 0x20) != 0) {\n      uVar8 = 0;\n      uVar5 = uVar4;\n    }\n    *(uint *)(param_5 + 0x30) = uVar5;\n    *(uint *)(param_5 + 0x34) = uVar8;\n  }\n  return;\n}\n\n" (function_definition "void FUN_0002687c(undefined4 *param_1,undefined *param_2,uint param_3,uint param_4,int param_5,\n                 undefined4 param_6,int param_7,uint param_8)\n\n{\n  undefined4 *puVar1;\n  int iVar2;\n  uint uVar3;\n  uint uVar4;\n  uint uVar5;\n  uint uVar6;\n  int iVar7;\n  uint uVar8;\n  uint uVar9;\n  \n  if ((((param_1 == (undefined4 *)(PTR_DAT_001db8f8 + -0x3b70)) || (param_1 == (undefined4 *)0x0))\n      || (param_1[1] != 0xc)) || (param_1[6] != param_5)) {\n    puVar1 = (undefined4 *)*param_1;\n    if (((puVar1 == (undefined4 *)0x0) || (puVar1[1] != 0xc)) || (puVar1[6] != param_5)) {\n      puVar1 = (undefined4 *)stat_alloc(0x20);\n      *puVar1 = *param_1;\n      *param_1 = puVar1;\n      puVar1[1] = 0xc;\n      puVar1[6] = param_5;\n      if (param_2 == (undefined *)0x0) {\n        param_2 = PTR_DAT_001db8f8 + -0x3c08;\n      }\n      puVar1[7] = param_2;\n      iVar2 = *(int *)(param_5 + 0x24);\n      param_1 = puVar1;\n    }\n    else {\n      iVar2 = *(int *)(param_5 + 0x24);\n      param_1 = puVar1;\n    }\n  }\n  else {\n    iVar2 = *(int *)(param_5 + 0x24);\n  }\n  iVar7 = *(int *)(param_5 + 0x20);\n  uVar5 = *(uint *)(param_5 + 0x14);\n  param_1[4] = param_3;\n  param_1[5] = param_4;\n  param_1[3] = param_8 - iVar2;\n  param_1[2] = (param_7 - iVar7) - (uint)(param_8 < param_8 - iVar2);\n  if ((uVar5 & 0x800) == 0) {\n    uVar6 = *(uint *)(PTR_DAT_001db8f8 + -0x3ba4);\n    uVar8 = param_3 >> (uVar6 & 0x1f);\n    uVar9 = uVar8;\n    uVar5 = (param_3 << 1) << (~uVar6 & 0x1f) | param_4 >> (uVar6 & 0x1f);\n    if ((uVar6 & 0x20) != 0) {\n      uVar9 = 0;\n      uVar5 = uVar8;\n    }\n    param_8 = uVar5 + param_8;\n    uVar3 = param_8 - iVar2;\n    uVar4 = uVar3 << (uVar6 & 0x1f);\n    uVar8 = uVar4;\n    uVar5 = (((uint)(param_8 < uVar5) + uVar9 + param_7) - iVar7) - (uint)(param_8 < uVar3) <<\n            (uVar6 & 0x1f) | (uVar3 >> 1) >> (~uVar6 & 0x1f);\n    if ((uVar6 & 0x20) != 0) {\n      uVar8 = 0;\n      uVar5 = uVar4;\n    }\n    *(uint *)(param_5 + 0x30) = uVar5;\n    *(uint *)(param_5 + 0x34) = uVar8;\n  }\n  return;\n}" primitive_type (function_declarator "FUN_0002687c(undefined4 *param_1,undefined *param_2,uint param_3,uint param_4,int param_5,\n                 undefined4 param_6,int param_7,uint param_8)" identifier (parameter_list "(undefined4 *param_1,undefined *param_2,uint param_3,uint param_4,int param_5,\n                 undefined4 param_6,int param_7,uint param_8)" ( (parameter_declaration "undefined4 *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "undefined *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "uint param_3" type_identifier identifier) , (parameter_declaration "uint param_4" type_identifier identifier) , (parameter_declaration "int param_5" primitive_type identifier) , (parameter_declaration "undefined4 param_6" type_identifier identifier) , (parameter_declaration "int param_7" primitive_type identifier) , (parameter_declaration "uint param_8" type_identifier identifier) ))) (compound_statement "{\n  undefined4 *puVar1;\n  int iVar2;\n  uint uVar3;\n  uint uVar4;\n  uint uVar5;\n  uint uVar6;\n  int iVar7;\n  uint uVar8;\n  uint uVar9;\n  \n  if ((((param_1 == (undefined4 *)(PTR_DAT_001db8f8 + -0x3b70)) || (param_1 == (undefined4 *)0x0))\n      || (param_1[1] != 0xc)) || (param_1[6] != param_5)) {\n    puVar1 = (undefined4 *)*param_1;\n    if (((puVar1 == (undefined4 *)0x0) || (puVar1[1] != 0xc)) || (puVar1[6] != param_5)) {\n      puVar1 = (undefined4 *)stat_alloc(0x20);\n      *puVar1 = *param_1;\n      *param_1 = puVar1;\n      puVar1[1] = 0xc;\n      puVar1[6] = param_5;\n      if (param_2 == (undefined *)0x0) {\n        param_2 = PTR_DAT_001db8f8 + -0x3c08;\n      }\n      puVar1[7] = param_2;\n      iVar2 = *(int *)(param_5 + 0x24);\n      param_1 = puVar1;\n    }\n    else {\n      iVar2 = *(int *)(param_5 + 0x24);\n      param_1 = puVar1;\n    }\n  }\n  else {\n    iVar2 = *(int *)(param_5 + 0x24);\n  }\n  iVar7 = *(int *)(param_5 + 0x20);\n  uVar5 = *(uint *)(param_5 + 0x14);\n  param_1[4] = param_3;\n  param_1[5] = param_4;\n  param_1[3] = param_8 - iVar2;\n  param_1[2] = (param_7 - iVar7) - (uint)(param_8 < param_8 - iVar2);\n  if ((uVar5 & 0x800) == 0) {\n    uVar6 = *(uint *)(PTR_DAT_001db8f8 + -0x3ba4);\n    uVar8 = param_3 >> (uVar6 & 0x1f);\n    uVar9 = uVar8;\n    uVar5 = (param_3 << 1) << (~uVar6 & 0x1f) | param_4 >> (uVar6 & 0x1f);\n    if ((uVar6 & 0x20) != 0) {\n      uVar9 = 0;\n      uVar5 = uVar8;\n    }\n    param_8 = uVar5 + param_8;\n    uVar3 = param_8 - iVar2;\n    uVar4 = uVar3 << (uVar6 & 0x1f);\n    uVar8 = uVar4;\n    uVar5 = (((uint)(param_8 < uVar5) + uVar9 + param_7) - iVar7) - (uint)(param_8 < uVar3) <<\n            (uVar6 & 0x1f) | (uVar3 >> 1) >> (~uVar6 & 0x1f);\n    if ((uVar6 & 0x20) != 0) {\n      uVar8 = 0;\n      uVar5 = uVar4;\n    }\n    *(uint *)(param_5 + 0x30) = uVar5;\n    *(uint *)(param_5 + 0x34) = uVar8;\n  }\n  return;\n}" { (declaration "undefined4 *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "uint uVar4;" type_identifier identifier ;) (declaration "uint uVar5;" type_identifier identifier ;) (declaration "uint uVar6;" type_identifier identifier ;) (declaration "int iVar7;" primitive_type identifier ;) (declaration "uint uVar8;" type_identifier identifier ;) (declaration "uint uVar9;" type_identifier identifier ;) (if_statement "if ((((param_1 == (undefined4 *)(PTR_DAT_001db8f8 + -0x3b70)) || (param_1 == (undefined4 *)0x0))\n      || (param_1[1] != 0xc)) || (param_1[6] != param_5)) {\n    puVar1 = (undefined4 *)*param_1;\n    if (((puVar1 == (undefined4 *)0x0) || (puVar1[1] != 0xc)) || (puVar1[6] != param_5)) {\n      puVar1 = (undefined4 *)stat_alloc(0x20);\n      *puVar1 = *param_1;\n      *param_1 = puVar1;\n      puVar1[1] = 0xc;\n      puVar1[6] = param_5;\n      if (param_2 == (undefined *)0x0) {\n        param_2 = PTR_DAT_001db8f8 + -0x3c08;\n      }\n      puVar1[7] = param_2;\n      iVar2 = *(int *)(param_5 + 0x24);\n      param_1 = puVar1;\n    }\n    else {\n      iVar2 = *(int *)(param_5 + 0x24);\n      param_1 = puVar1;\n    }\n  }\n  else {\n    iVar2 = *(int *)(param_5 + 0x24);\n  }" if (parenthesized_expression "((((param_1 == (undefined4 *)(PTR_DAT_001db8f8 + -0x3b70)) || (param_1 == (undefined4 *)0x0))\n      || (param_1[1] != 0xc)) || (param_1[6] != param_5))" ( (binary_expression "(((param_1 == (undefined4 *)(PTR_DAT_001db8f8 + -0x3b70)) || (param_1 == (undefined4 *)0x0))\n      || (param_1[1] != 0xc)) || (param_1[6] != param_5)" (parenthesized_expression "(((param_1 == (undefined4 *)(PTR_DAT_001db8f8 + -0x3b70)) || (param_1 == (undefined4 *)0x0))\n      || (param_1[1] != 0xc))" ( (binary_expression "((param_1 == (undefined4 *)(PTR_DAT_001db8f8 + -0x3b70)) || (param_1 == (undefined4 *)0x0))\n      || (param_1[1] != 0xc)" (parenthesized_expression "((param_1 == (undefined4 *)(PTR_DAT_001db8f8 + -0x3b70)) || (param_1 == (undefined4 *)0x0))" ( (binary_expression "(param_1 == (undefined4 *)(PTR_DAT_001db8f8 + -0x3b70)) || (param_1 == (undefined4 *)0x0)" (parenthesized_expression "(param_1 == (undefined4 *)(PTR_DAT_001db8f8 + -0x3b70))" ( (binary_expression "param_1 == (undefined4 *)(PTR_DAT_001db8f8 + -0x3b70)" identifier == (cast_expression "(undefined4 *)(PTR_DAT_001db8f8 + -0x3b70)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_001db8f8 + -0x3b70)" ( (binary_expression "PTR_DAT_001db8f8 + -0x3b70" identifier + number_literal) )))) )) || (parenthesized_expression "(param_1 == (undefined4 *)0x0)" ( (binary_expression "param_1 == (undefined4 *)0x0" identifier == (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ))) )) || (parenthesized_expression "(param_1[1] != 0xc)" ( (binary_expression "param_1[1] != 0xc" (subscript_expression "param_1[1]" identifier [ number_literal ]) != number_literal) ))) )) || (parenthesized_expression "(param_1[6] != param_5)" ( (binary_expression "param_1[6] != param_5" (subscript_expression "param_1[6]" identifier [ number_literal ]) != identifier) ))) )) (compound_statement "{\n    puVar1 = (undefined4 *)*param_1;\n    if (((puVar1 == (undefined4 *)0x0) || (puVar1[1] != 0xc)) || (puVar1[6] != param_5)) {\n      puVar1 = (undefined4 *)stat_alloc(0x20);\n      *puVar1 = *param_1;\n      *param_1 = puVar1;\n      puVar1[1] = 0xc;\n      puVar1[6] = param_5;\n      if (param_2 == (undefined *)0x0) {\n        param_2 = PTR_DAT_001db8f8 + -0x3c08;\n      }\n      puVar1[7] = param_2;\n      iVar2 = *(int *)(param_5 + 0x24);\n      param_1 = puVar1;\n    }\n    else {\n      iVar2 = *(int *)(param_5 + 0x24);\n      param_1 = puVar1;\n    }\n  }" { (expression_statement "puVar1 = (undefined4 *)*param_1;" (assignment_expression "puVar1 = (undefined4 *)*param_1" identifier = (cast_expression "(undefined4 *)*param_1" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_1" * identifier))) ;) (if_statement "if (((puVar1 == (undefined4 *)0x0) || (puVar1[1] != 0xc)) || (puVar1[6] != param_5)) {\n      puVar1 = (undefined4 *)stat_alloc(0x20);\n      *puVar1 = *param_1;\n      *param_1 = puVar1;\n      puVar1[1] = 0xc;\n      puVar1[6] = param_5;\n      if (param_2 == (undefined *)0x0) {\n        param_2 = PTR_DAT_001db8f8 + -0x3c08;\n      }\n      puVar1[7] = param_2;\n      iVar2 = *(int *)(param_5 + 0x24);\n      param_1 = puVar1;\n    }\n    else {\n      iVar2 = *(int *)(param_5 + 0x24);\n      param_1 = puVar1;\n    }" if (parenthesized_expression "(((puVar1 == (undefined4 *)0x0) || (puVar1[1] != 0xc)) || (puVar1[6] != param_5))" ( (binary_expression "((puVar1 == (undefined4 *)0x0) || (puVar1[1] != 0xc)) || (puVar1[6] != param_5)" (parenthesized_expression "((puVar1 == (undefined4 *)0x0) || (puVar1[1] != 0xc))" ( (binary_expression "(puVar1 == (undefined4 *)0x0) || (puVar1[1] != 0xc)" (parenthesized_expression "(puVar1 == (undefined4 *)0x0)" ( (binary_expression "puVar1 == (undefined4 *)0x0" identifier == (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) || (parenthesized_expression "(puVar1[1] != 0xc)" ( (binary_expression "puVar1[1] != 0xc" (subscript_expression "puVar1[1]" identifier [ number_literal ]) != number_literal) ))) )) || (parenthesized_expression "(puVar1[6] != param_5)" ( (binary_expression "puVar1[6] != param_5" (subscript_expression "puVar1[6]" identifier [ number_literal ]) != identifier) ))) )) (compound_statement "{\n      puVar1 = (undefined4 *)stat_alloc(0x20);\n      *puVar1 = *param_1;\n      *param_1 = puVar1;\n      puVar1[1] = 0xc;\n      puVar1[6] = param_5;\n      if (param_2 == (undefined *)0x0) {\n        param_2 = PTR_DAT_001db8f8 + -0x3c08;\n      }\n      puVar1[7] = param_2;\n      iVar2 = *(int *)(param_5 + 0x24);\n      param_1 = puVar1;\n    }" { (expression_statement "puVar1 = (undefined4 *)stat_alloc(0x20);" (assignment_expression "puVar1 = (undefined4 *)stat_alloc(0x20)" identifier = (cast_expression "(undefined4 *)stat_alloc(0x20)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "stat_alloc(0x20)" identifier (argument_list "(0x20)" ( number_literal ))))) ;) (expression_statement "*puVar1 = *param_1;" (assignment_expression "*puVar1 = *param_1" (pointer_expression "*puVar1" * identifier) = (pointer_expression "*param_1" * identifier)) ;) (expression_statement "*param_1 = puVar1;" (assignment_expression "*param_1 = puVar1" (pointer_expression "*param_1" * identifier) = identifier) ;) (expression_statement "puVar1[1] = 0xc;" (assignment_expression "puVar1[1] = 0xc" (subscript_expression "puVar1[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar1[6] = param_5;" (assignment_expression "puVar1[6] = param_5" (subscript_expression "puVar1[6]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (param_2 == (undefined *)0x0) {\n        param_2 = PTR_DAT_001db8f8 + -0x3c08;\n      }" if (parenthesized_expression "(param_2 == (undefined *)0x0)" ( (binary_expression "param_2 == (undefined *)0x0" identifier == (cast_expression "(undefined *)0x0" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        param_2 = PTR_DAT_001db8f8 + -0x3c08;\n      }" { (expression_statement "param_2 = PTR_DAT_001db8f8 + -0x3c08;" (assignment_expression "param_2 = PTR_DAT_001db8f8 + -0x3c08" identifier = (binary_expression "PTR_DAT_001db8f8 + -0x3c08" identifier + number_literal)) ;) })) (expression_statement "puVar1[7] = param_2;" (assignment_expression "puVar1[7] = param_2" (subscript_expression "puVar1[7]" identifier [ number_literal ]) = identifier) ;) (expression_statement "iVar2 = *(int *)(param_5 + 0x24);" (assignment_expression "iVar2 = *(int *)(param_5 + 0x24)" identifier = (pointer_expression "*(int *)(param_5 + 0x24)" * (cast_expression "(int *)(param_5 + 0x24)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_5 + 0x24)" ( (binary_expression "param_5 + 0x24" identifier + number_literal) ))))) ;) (expression_statement "param_1 = puVar1;" (assignment_expression "param_1 = puVar1" identifier = identifier) ;) }) (else_clause "else {\n      iVar2 = *(int *)(param_5 + 0x24);\n      param_1 = puVar1;\n    }" else (compound_statement "{\n      iVar2 = *(int *)(param_5 + 0x24);\n      param_1 = puVar1;\n    }" { (expression_statement "iVar2 = *(int *)(param_5 + 0x24);" (assignment_expression "iVar2 = *(int *)(param_5 + 0x24)" identifier = (pointer_expression "*(int *)(param_5 + 0x24)" * (cast_expression "(int *)(param_5 + 0x24)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_5 + 0x24)" ( (binary_expression "param_5 + 0x24" identifier + number_literal) ))))) ;) (expression_statement "param_1 = puVar1;" (assignment_expression "param_1 = puVar1" identifier = identifier) ;) }))) }) (else_clause "else {\n    iVar2 = *(int *)(param_5 + 0x24);\n  }" else (compound_statement "{\n    iVar2 = *(int *)(param_5 + 0x24);\n  }" { (expression_statement "iVar2 = *(int *)(param_5 + 0x24);" (assignment_expression "iVar2 = *(int *)(param_5 + 0x24)" identifier = (pointer_expression "*(int *)(param_5 + 0x24)" * (cast_expression "(int *)(param_5 + 0x24)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_5 + 0x24)" ( (binary_expression "param_5 + 0x24" identifier + number_literal) ))))) ;) }))) (expression_statement "iVar7 = *(int *)(param_5 + 0x20);" (assignment_expression "iVar7 = *(int *)(param_5 + 0x20)" identifier = (pointer_expression "*(int *)(param_5 + 0x20)" * (cast_expression "(int *)(param_5 + 0x20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_5 + 0x20)" ( (binary_expression "param_5 + 0x20" identifier + number_literal) ))))) ;) (expression_statement "uVar5 = *(uint *)(param_5 + 0x14);" (assignment_expression "uVar5 = *(uint *)(param_5 + 0x14)" identifier = (pointer_expression "*(uint *)(param_5 + 0x14)" * (cast_expression "(uint *)(param_5 + 0x14)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_5 + 0x14)" ( (binary_expression "param_5 + 0x14" identifier + number_literal) ))))) ;) (expression_statement "param_1[4] = param_3;" (assignment_expression "param_1[4] = param_3" (subscript_expression "param_1[4]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_1[5] = param_4;" (assignment_expression "param_1[5] = param_4" (subscript_expression "param_1[5]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_1[3] = param_8 - iVar2;" (assignment_expression "param_1[3] = param_8 - iVar2" (subscript_expression "param_1[3]" identifier [ number_literal ]) = (binary_expression "param_8 - iVar2" identifier - identifier)) ;) (expression_statement "param_1[2] = (param_7 - iVar7) - (uint)(param_8 < param_8 - iVar2);" (assignment_expression "param_1[2] = (param_7 - iVar7) - (uint)(param_8 < param_8 - iVar2)" (subscript_expression "param_1[2]" identifier [ number_literal ]) = (binary_expression "(param_7 - iVar7) - (uint)(param_8 < param_8 - iVar2)" (parenthesized_expression "(param_7 - iVar7)" ( (binary_expression "param_7 - iVar7" identifier - identifier) )) - (call_expression "(uint)(param_8 < param_8 - iVar2)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(param_8 < param_8 - iVar2)" ( (binary_expression "param_8 < param_8 - iVar2" identifier < (binary_expression "param_8 - iVar2" identifier - identifier)) ))))) ;) (if_statement "if ((uVar5 & 0x800) == 0) {\n    uVar6 = *(uint *)(PTR_DAT_001db8f8 + -0x3ba4);\n    uVar8 = param_3 >> (uVar6 & 0x1f);\n    uVar9 = uVar8;\n    uVar5 = (param_3 << 1) << (~uVar6 & 0x1f) | param_4 >> (uVar6 & 0x1f);\n    if ((uVar6 & 0x20) != 0) {\n      uVar9 = 0;\n      uVar5 = uVar8;\n    }\n    param_8 = uVar5 + param_8;\n    uVar3 = param_8 - iVar2;\n    uVar4 = uVar3 << (uVar6 & 0x1f);\n    uVar8 = uVar4;\n    uVar5 = (((uint)(param_8 < uVar5) + uVar9 + param_7) - iVar7) - (uint)(param_8 < uVar3) <<\n            (uVar6 & 0x1f) | (uVar3 >> 1) >> (~uVar6 & 0x1f);\n    if ((uVar6 & 0x20) != 0) {\n      uVar8 = 0;\n      uVar5 = uVar4;\n    }\n    *(uint *)(param_5 + 0x30) = uVar5;\n    *(uint *)(param_5 + 0x34) = uVar8;\n  }" if (parenthesized_expression "((uVar5 & 0x800) == 0)" ( (binary_expression "(uVar5 & 0x800) == 0" (parenthesized_expression "(uVar5 & 0x800)" ( (binary_expression "uVar5 & 0x800" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n    uVar6 = *(uint *)(PTR_DAT_001db8f8 + -0x3ba4);\n    uVar8 = param_3 >> (uVar6 & 0x1f);\n    uVar9 = uVar8;\n    uVar5 = (param_3 << 1) << (~uVar6 & 0x1f) | param_4 >> (uVar6 & 0x1f);\n    if ((uVar6 & 0x20) != 0) {\n      uVar9 = 0;\n      uVar5 = uVar8;\n    }\n    param_8 = uVar5 + param_8;\n    uVar3 = param_8 - iVar2;\n    uVar4 = uVar3 << (uVar6 & 0x1f);\n    uVar8 = uVar4;\n    uVar5 = (((uint)(param_8 < uVar5) + uVar9 + param_7) - iVar7) - (uint)(param_8 < uVar3) <<\n            (uVar6 & 0x1f) | (uVar3 >> 1) >> (~uVar6 & 0x1f);\n    if ((uVar6 & 0x20) != 0) {\n      uVar8 = 0;\n      uVar5 = uVar4;\n    }\n    *(uint *)(param_5 + 0x30) = uVar5;\n    *(uint *)(param_5 + 0x34) = uVar8;\n  }" { (expression_statement "uVar6 = *(uint *)(PTR_DAT_001db8f8 + -0x3ba4);" (assignment_expression "uVar6 = *(uint *)(PTR_DAT_001db8f8 + -0x3ba4)" identifier = (pointer_expression "*(uint *)(PTR_DAT_001db8f8 + -0x3ba4)" * (cast_expression "(uint *)(PTR_DAT_001db8f8 + -0x3ba4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_001db8f8 + -0x3ba4)" ( (binary_expression "PTR_DAT_001db8f8 + -0x3ba4" identifier + number_literal) ))))) ;) (expression_statement "uVar8 = param_3 >> (uVar6 & 0x1f);" (assignment_expression "uVar8 = param_3 >> (uVar6 & 0x1f)" identifier = (binary_expression "param_3 >> (uVar6 & 0x1f)" identifier >> (parenthesized_expression "(uVar6 & 0x1f)" ( (binary_expression "uVar6 & 0x1f" identifier & number_literal) )))) ;) (expression_statement "uVar9 = uVar8;" (assignment_expression "uVar9 = uVar8" identifier = identifier) ;) (expression_statement "uVar5 = (param_3 << 1) << (~uVar6 & 0x1f) | param_4 >> (uVar6 & 0x1f);" (assignment_expression "uVar5 = (param_3 << 1) << (~uVar6 & 0x1f) | param_4 >> (uVar6 & 0x1f)" identifier = (binary_expression "(param_3 << 1) << (~uVar6 & 0x1f) | param_4 >> (uVar6 & 0x1f)" (binary_expression "(param_3 << 1) << (~uVar6 & 0x1f)" (parenthesized_expression "(param_3 << 1)" ( (binary_expression "param_3 << 1" identifier << number_literal) )) << (parenthesized_expression "(~uVar6 & 0x1f)" ( (binary_expression "~uVar6 & 0x1f" (unary_expression "~uVar6" ~ identifier) & number_literal) ))) | (binary_expression "param_4 >> (uVar6 & 0x1f)" identifier >> (parenthesized_expression "(uVar6 & 0x1f)" ( (binary_expression "uVar6 & 0x1f" identifier & number_literal) ))))) ;) (if_statement "if ((uVar6 & 0x20) != 0) {\n      uVar9 = 0;\n      uVar5 = uVar8;\n    }" if (parenthesized_expression "((uVar6 & 0x20) != 0)" ( (binary_expression "(uVar6 & 0x20) != 0" (parenthesized_expression "(uVar6 & 0x20)" ( (binary_expression "uVar6 & 0x20" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n      uVar9 = 0;\n      uVar5 = uVar8;\n    }" { (expression_statement "uVar9 = 0;" (assignment_expression "uVar9 = 0" identifier = number_literal) ;) (expression_statement "uVar5 = uVar8;" (assignment_expression "uVar5 = uVar8" identifier = identifier) ;) })) (expression_statement "param_8 = uVar5 + param_8;" (assignment_expression "param_8 = uVar5 + param_8" identifier = (binary_expression "uVar5 + param_8" identifier + identifier)) ;) (expression_statement "uVar3 = param_8 - iVar2;" (assignment_expression "uVar3 = param_8 - iVar2" identifier = (binary_expression "param_8 - iVar2" identifier - identifier)) ;) (expression_statement "uVar4 = uVar3 << (uVar6 & 0x1f);" (assignment_expression "uVar4 = uVar3 << (uVar6 & 0x1f)" identifier = (binary_expression "uVar3 << (uVar6 & 0x1f)" identifier << (parenthesized_expression "(uVar6 & 0x1f)" ( (binary_expression "uVar6 & 0x1f" identifier & number_literal) )))) ;) (expression_statement "uVar8 = uVar4;" (assignment_expression "uVar8 = uVar4" identifier = identifier) ;) (expression_statement "uVar5 = (((uint)(param_8 < uVar5) + uVar9 + param_7) - iVar7) - (uint)(param_8 < uVar3) <<\n            (uVar6 & 0x1f) | (uVar3 >> 1) >> (~uVar6 & 0x1f);" (assignment_expression "uVar5 = (((uint)(param_8 < uVar5) + uVar9 + param_7) - iVar7) - (uint)(param_8 < uVar3) <<\n            (uVar6 & 0x1f) | (uVar3 >> 1) >> (~uVar6 & 0x1f)" identifier = (binary_expression "(((uint)(param_8 < uVar5) + uVar9 + param_7) - iVar7) - (uint)(param_8 < uVar3) <<\n            (uVar6 & 0x1f) | (uVar3 >> 1) >> (~uVar6 & 0x1f)" (binary_expression "(((uint)(param_8 < uVar5) + uVar9 + param_7) - iVar7) - (uint)(param_8 < uVar3) <<\n            (uVar6 & 0x1f)" (binary_expression "(((uint)(param_8 < uVar5) + uVar9 + param_7) - iVar7) - (uint)(param_8 < uVar3)" (parenthesized_expression "(((uint)(param_8 < uVar5) + uVar9 + param_7) - iVar7)" ( (binary_expression "((uint)(param_8 < uVar5) + uVar9 + param_7) - iVar7" (parenthesized_expression "((uint)(param_8 < uVar5) + uVar9 + param_7)" ( (binary_expression "(uint)(param_8 < uVar5) + uVar9 + param_7" (binary_expression "(uint)(param_8 < uVar5) + uVar9" (call_expression "(uint)(param_8 < uVar5)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(param_8 < uVar5)" ( (binary_expression "param_8 < uVar5" identifier < identifier) ))) + identifier) + identifier) )) - identifier) )) - (call_expression "(uint)(param_8 < uVar3)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(param_8 < uVar3)" ( (binary_expression "param_8 < uVar3" identifier < identifier) )))) << (parenthesized_expression "(uVar6 & 0x1f)" ( (binary_expression "uVar6 & 0x1f" identifier & number_literal) ))) | (binary_expression "(uVar3 >> 1) >> (~uVar6 & 0x1f)" (parenthesized_expression "(uVar3 >> 1)" ( (binary_expression "uVar3 >> 1" identifier >> number_literal) )) >> (parenthesized_expression "(~uVar6 & 0x1f)" ( (binary_expression "~uVar6 & 0x1f" (unary_expression "~uVar6" ~ identifier) & number_literal) ))))) ;) (if_statement "if ((uVar6 & 0x20) != 0) {\n      uVar8 = 0;\n      uVar5 = uVar4;\n    }" if (parenthesized_expression "((uVar6 & 0x20) != 0)" ( (binary_expression "(uVar6 & 0x20) != 0" (parenthesized_expression "(uVar6 & 0x20)" ( (binary_expression "uVar6 & 0x20" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n      uVar8 = 0;\n      uVar5 = uVar4;\n    }" { (expression_statement "uVar8 = 0;" (assignment_expression "uVar8 = 0" identifier = number_literal) ;) (expression_statement "uVar5 = uVar4;" (assignment_expression "uVar5 = uVar4" identifier = identifier) ;) })) (expression_statement "*(uint *)(param_5 + 0x30) = uVar5;" (assignment_expression "*(uint *)(param_5 + 0x30) = uVar5" (pointer_expression "*(uint *)(param_5 + 0x30)" * (cast_expression "(uint *)(param_5 + 0x30)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_5 + 0x30)" ( (binary_expression "param_5 + 0x30" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(uint *)(param_5 + 0x34) = uVar8;" (assignment_expression "*(uint *)(param_5 + 0x34) = uVar8" (pointer_expression "*(uint *)(param_5 + 0x34)" * (cast_expression "(uint *)(param_5 + 0x34)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_5 + 0x34)" ( (binary_expression "param_5 + 0x34" identifier + number_literal) )))) = identifier) ;) })) (return_statement "return;" return ;) })))
(translation_unit "void insert_pad(lang_statement_union_type **ptr,fill_type *fill,bfd_size_type alignment_needed,\n               asection *output_section,bfd_vma dot)\n\n{\n  wildcard_list *pwVar1;\n  longlong lVar2;\n  lang_statement_union_type *plVar3;\n  walk_wild_section_handler_t p_Var4;\n  wildcard_list *pwVar5;\n  wildcard_list *pwVar6;\n  uint uVar7;\n  uint uVar8;\n  uint in_a3;\n  name_list *pnVar9;\n  uint uVar10;\n  uint uVar11;\n  \n  if ((((ptr == (lang_statement_union_type **)(PTR_DAT_001db8f8 + -0x3b70)) ||\n       (ptr == (lang_statement_union_type **)0x0)) || (ptr[1] != (lang_statement_union_type *)0xc))\n     || (ptr[6] != alignment_needed._0_4_)) {\n    plVar3 = *ptr;\n    if (((plVar3 == (lang_statement_union_type *)0x0) ||\n        ((plVar3->header).type != lang_padding_statement_enum)) ||\n       ((plVar3->wild_statement).children.head != alignment_needed._0_4_)) {\n      plVar3 = (lang_statement_union_type *)stat_alloc(0x20);\n      (plVar3->header).next = *ptr;\n      *ptr = plVar3;\n      (plVar3->header).type = lang_padding_statement_enum;\n      (plVar3->data_statement).output_section = (asection *)alignment_needed._0_4_;\n      if (fill == (fill_type *)0x0) {\n        fill = (fill_type *)(PTR_DAT_001db8f8 + -0x3c08);\n      }\n      (plVar3->padding_statement).fill = fill;\n      p_Var4 = ((alignment_needed._0_4_)->wild_statement).walk_wild_section_handler;\n      ptr = (lang_statement_union_type **)plVar3;\n    }\n    else {\n      p_Var4 = ((alignment_needed._0_4_)->wild_statement).walk_wild_section_handler;\n      ptr = (lang_statement_union_type **)plVar3;\n    }\n  }\n  else {\n    p_Var4 = ((alignment_needed._0_4_)->wild_statement).walk_wild_section_handler;\n  }\n  pnVar9 = ((alignment_needed._0_4_)->wild_statement).exclude_name_list;\n  uVar7 = ((alignment_needed._0_4_)->wild_statement).keep_sections;\n  ((lang_reloc_statement_type *)ptr)->section = output_section;\n  ((lang_wild_statement_type *)ptr)->keep_sections = in_a3;\n  ((lang_data_statement_type *)ptr)->exp = (etree_union *)((int)dot._4_4_ - (int)p_Var4);\n  ((lang_wild_statement_type *)ptr)->filename =\n       (char *)((dot._0_4_ - (int)pnVar9) -\n               (uint)(dot._4_4_ < (etree_union *)((int)dot._4_4_ - (int)p_Var4)));\n  if ((uVar7 & 0x800) == 0) {\n    uVar8 = *(uint *)(PTR_DAT_001db8f8 + -0x3ba4);\n    uVar10 = (uint)output_section >> (uVar8 & 0x1f);\n    uVar11 = uVar10;\n    uVar7 = ((int)output_section << 1) << (~uVar8 & 0x1f) | in_a3 >> (uVar8 & 0x1f);\n    if ((uVar8 & 0x20) != 0) {\n      uVar11 = 0;\n      uVar7 = uVar10;\n    }\n    lVar2 = dot + CONCAT44(uVar11,uVar7);\n    uVar11 = (uint)lVar2;\n    uVar7 = uVar11 - (int)p_Var4;\n    pwVar5 = (wildcard_list *)(uVar7 << (uVar8 & 0x1f));\n    pwVar6 = pwVar5;\n    pwVar1 = (wildcard_list *)\n             (((int)((ulonglong)lVar2 >> 0x20) - (int)pnVar9) - (uint)(uVar11 < uVar7) <<\n              (uVar8 & 0x1f) | (uVar7 >> 1) >> (~uVar8 & 0x1f));\n    if ((uVar8 & 0x20) != 0) {\n      pwVar6 = (wildcard_list *)0x0;\n      pwVar1 = pwVar5;\n    }\n    ((alignment_needed._0_4_)->wild_statement).handler_data[2] = pwVar1;\n    ((alignment_needed._0_4_)->wild_statement).handler_data[3] = pwVar6;\n  }\n  return;\n}\n\n" (function_definition "void insert_pad(lang_statement_union_type **ptr,fill_type *fill,bfd_size_type alignment_needed,\n               asection *output_section,bfd_vma dot)\n\n{\n  wildcard_list *pwVar1;\n  longlong lVar2;\n  lang_statement_union_type *plVar3;\n  walk_wild_section_handler_t p_Var4;\n  wildcard_list *pwVar5;\n  wildcard_list *pwVar6;\n  uint uVar7;\n  uint uVar8;\n  uint in_a3;\n  name_list *pnVar9;\n  uint uVar10;\n  uint uVar11;\n  \n  if ((((ptr == (lang_statement_union_type **)(PTR_DAT_001db8f8 + -0x3b70)) ||\n       (ptr == (lang_statement_union_type **)0x0)) || (ptr[1] != (lang_statement_union_type *)0xc))\n     || (ptr[6] != alignment_needed._0_4_)) {\n    plVar3 = *ptr;\n    if (((plVar3 == (lang_statement_union_type *)0x0) ||\n        ((plVar3->header).type != lang_padding_statement_enum)) ||\n       ((plVar3->wild_statement).children.head != alignment_needed._0_4_)) {\n      plVar3 = (lang_statement_union_type *)stat_alloc(0x20);\n      (plVar3->header).next = *ptr;\n      *ptr = plVar3;\n      (plVar3->header).type = lang_padding_statement_enum;\n      (plVar3->data_statement).output_section = (asection *)alignment_needed._0_4_;\n      if (fill == (fill_type *)0x0) {\n        fill = (fill_type *)(PTR_DAT_001db8f8 + -0x3c08);\n      }\n      (plVar3->padding_statement).fill = fill;\n      p_Var4 = ((alignment_needed._0_4_)->wild_statement).walk_wild_section_handler;\n      ptr = (lang_statement_union_type **)plVar3;\n    }\n    else {\n      p_Var4 = ((alignment_needed._0_4_)->wild_statement).walk_wild_section_handler;\n      ptr = (lang_statement_union_type **)plVar3;\n    }\n  }\n  else {\n    p_Var4 = ((alignment_needed._0_4_)->wild_statement).walk_wild_section_handler;\n  }\n  pnVar9 = ((alignment_needed._0_4_)->wild_statement).exclude_name_list;\n  uVar7 = ((alignment_needed._0_4_)->wild_statement).keep_sections;\n  ((lang_reloc_statement_type *)ptr)->section = output_section;\n  ((lang_wild_statement_type *)ptr)->keep_sections = in_a3;\n  ((lang_data_statement_type *)ptr)->exp = (etree_union *)((int)dot._4_4_ - (int)p_Var4);\n  ((lang_wild_statement_type *)ptr)->filename =\n       (char *)((dot._0_4_ - (int)pnVar9) -\n               (uint)(dot._4_4_ < (etree_union *)((int)dot._4_4_ - (int)p_Var4)));\n  if ((uVar7 & 0x800) == 0) {\n    uVar8 = *(uint *)(PTR_DAT_001db8f8 + -0x3ba4);\n    uVar10 = (uint)output_section >> (uVar8 & 0x1f);\n    uVar11 = uVar10;\n    uVar7 = ((int)output_section << 1) << (~uVar8 & 0x1f) | in_a3 >> (uVar8 & 0x1f);\n    if ((uVar8 & 0x20) != 0) {\n      uVar11 = 0;\n      uVar7 = uVar10;\n    }\n    lVar2 = dot + CONCAT44(uVar11,uVar7);\n    uVar11 = (uint)lVar2;\n    uVar7 = uVar11 - (int)p_Var4;\n    pwVar5 = (wildcard_list *)(uVar7 << (uVar8 & 0x1f));\n    pwVar6 = pwVar5;\n    pwVar1 = (wildcard_list *)\n             (((int)((ulonglong)lVar2 >> 0x20) - (int)pnVar9) - (uint)(uVar11 < uVar7) <<\n              (uVar8 & 0x1f) | (uVar7 >> 1) >> (~uVar8 & 0x1f));\n    if ((uVar8 & 0x20) != 0) {\n      pwVar6 = (wildcard_list *)0x0;\n      pwVar1 = pwVar5;\n    }\n    ((alignment_needed._0_4_)->wild_statement).handler_data[2] = pwVar1;\n    ((alignment_needed._0_4_)->wild_statement).handler_data[3] = pwVar6;\n  }\n  return;\n}" primitive_type (function_declarator "insert_pad(lang_statement_union_type **ptr,fill_type *fill,bfd_size_type alignment_needed,\n               asection *output_section,bfd_vma dot)" identifier (parameter_list "(lang_statement_union_type **ptr,fill_type *fill,bfd_size_type alignment_needed,\n               asection *output_section,bfd_vma dot)" ( (parameter_declaration "lang_statement_union_type **ptr" type_identifier (pointer_declarator "**ptr" * (pointer_declarator "*ptr" * identifier))) , (parameter_declaration "fill_type *fill" type_identifier (pointer_declarator "*fill" * identifier)) , (parameter_declaration "bfd_size_type alignment_needed" type_identifier identifier) , (parameter_declaration "asection *output_section" type_identifier (pointer_declarator "*output_section" * identifier)) , (parameter_declaration "bfd_vma dot" type_identifier identifier) ))) (compound_statement "{\n  wildcard_list *pwVar1;\n  longlong lVar2;\n  lang_statement_union_type *plVar3;\n  walk_wild_section_handler_t p_Var4;\n  wildcard_list *pwVar5;\n  wildcard_list *pwVar6;\n  uint uVar7;\n  uint uVar8;\n  uint in_a3;\n  name_list *pnVar9;\n  uint uVar10;\n  uint uVar11;\n  \n  if ((((ptr == (lang_statement_union_type **)(PTR_DAT_001db8f8 + -0x3b70)) ||\n       (ptr == (lang_statement_union_type **)0x0)) || (ptr[1] != (lang_statement_union_type *)0xc))\n     || (ptr[6] != alignment_needed._0_4_)) {\n    plVar3 = *ptr;\n    if (((plVar3 == (lang_statement_union_type *)0x0) ||\n        ((plVar3->header).type != lang_padding_statement_enum)) ||\n       ((plVar3->wild_statement).children.head != alignment_needed._0_4_)) {\n      plVar3 = (lang_statement_union_type *)stat_alloc(0x20);\n      (plVar3->header).next = *ptr;\n      *ptr = plVar3;\n      (plVar3->header).type = lang_padding_statement_enum;\n      (plVar3->data_statement).output_section = (asection *)alignment_needed._0_4_;\n      if (fill == (fill_type *)0x0) {\n        fill = (fill_type *)(PTR_DAT_001db8f8 + -0x3c08);\n      }\n      (plVar3->padding_statement).fill = fill;\n      p_Var4 = ((alignment_needed._0_4_)->wild_statement).walk_wild_section_handler;\n      ptr = (lang_statement_union_type **)plVar3;\n    }\n    else {\n      p_Var4 = ((alignment_needed._0_4_)->wild_statement).walk_wild_section_handler;\n      ptr = (lang_statement_union_type **)plVar3;\n    }\n  }\n  else {\n    p_Var4 = ((alignment_needed._0_4_)->wild_statement).walk_wild_section_handler;\n  }\n  pnVar9 = ((alignment_needed._0_4_)->wild_statement).exclude_name_list;\n  uVar7 = ((alignment_needed._0_4_)->wild_statement).keep_sections;\n  ((lang_reloc_statement_type *)ptr)->section = output_section;\n  ((lang_wild_statement_type *)ptr)->keep_sections = in_a3;\n  ((lang_data_statement_type *)ptr)->exp = (etree_union *)((int)dot._4_4_ - (int)p_Var4);\n  ((lang_wild_statement_type *)ptr)->filename =\n       (char *)((dot._0_4_ - (int)pnVar9) -\n               (uint)(dot._4_4_ < (etree_union *)((int)dot._4_4_ - (int)p_Var4)));\n  if ((uVar7 & 0x800) == 0) {\n    uVar8 = *(uint *)(PTR_DAT_001db8f8 + -0x3ba4);\n    uVar10 = (uint)output_section >> (uVar8 & 0x1f);\n    uVar11 = uVar10;\n    uVar7 = ((int)output_section << 1) << (~uVar8 & 0x1f) | in_a3 >> (uVar8 & 0x1f);\n    if ((uVar8 & 0x20) != 0) {\n      uVar11 = 0;\n      uVar7 = uVar10;\n    }\n    lVar2 = dot + CONCAT44(uVar11,uVar7);\n    uVar11 = (uint)lVar2;\n    uVar7 = uVar11 - (int)p_Var4;\n    pwVar5 = (wildcard_list *)(uVar7 << (uVar8 & 0x1f));\n    pwVar6 = pwVar5;\n    pwVar1 = (wildcard_list *)\n             (((int)((ulonglong)lVar2 >> 0x20) - (int)pnVar9) - (uint)(uVar11 < uVar7) <<\n              (uVar8 & 0x1f) | (uVar7 >> 1) >> (~uVar8 & 0x1f));\n    if ((uVar8 & 0x20) != 0) {\n      pwVar6 = (wildcard_list *)0x0;\n      pwVar1 = pwVar5;\n    }\n    ((alignment_needed._0_4_)->wild_statement).handler_data[2] = pwVar1;\n    ((alignment_needed._0_4_)->wild_statement).handler_data[3] = pwVar6;\n  }\n  return;\n}" { (declaration "wildcard_list *pwVar1;" type_identifier (pointer_declarator "*pwVar1" * identifier) ;) (declaration "longlong lVar2;" type_identifier identifier ;) (declaration "lang_statement_union_type *plVar3;" type_identifier (pointer_declarator "*plVar3" * identifier) ;) (declaration "walk_wild_section_handler_t p_Var4;" type_identifier identifier ;) (declaration "wildcard_list *pwVar5;" type_identifier (pointer_declarator "*pwVar5" * identifier) ;) (declaration "wildcard_list *pwVar6;" type_identifier (pointer_declarator "*pwVar6" * identifier) ;) (declaration "uint uVar7;" type_identifier identifier ;) (declaration "uint uVar8;" type_identifier identifier ;) (declaration "uint in_a3;" type_identifier identifier ;) (declaration "name_list *pnVar9;" type_identifier (pointer_declarator "*pnVar9" * identifier) ;) (declaration "uint uVar10;" type_identifier identifier ;) (declaration "uint uVar11;" type_identifier identifier ;) (if_statement "if ((((ptr == (lang_statement_union_type **)(PTR_DAT_001db8f8 + -0x3b70)) ||\n       (ptr == (lang_statement_union_type **)0x0)) || (ptr[1] != (lang_statement_union_type *)0xc))\n     || (ptr[6] != alignment_needed._0_4_)) {\n    plVar3 = *ptr;\n    if (((plVar3 == (lang_statement_union_type *)0x0) ||\n        ((plVar3->header).type != lang_padding_statement_enum)) ||\n       ((plVar3->wild_statement).children.head != alignment_needed._0_4_)) {\n      plVar3 = (lang_statement_union_type *)stat_alloc(0x20);\n      (plVar3->header).next = *ptr;\n      *ptr = plVar3;\n      (plVar3->header).type = lang_padding_statement_enum;\n      (plVar3->data_statement).output_section = (asection *)alignment_needed._0_4_;\n      if (fill == (fill_type *)0x0) {\n        fill = (fill_type *)(PTR_DAT_001db8f8 + -0x3c08);\n      }\n      (plVar3->padding_statement).fill = fill;\n      p_Var4 = ((alignment_needed._0_4_)->wild_statement).walk_wild_section_handler;\n      ptr = (lang_statement_union_type **)plVar3;\n    }\n    else {\n      p_Var4 = ((alignment_needed._0_4_)->wild_statement).walk_wild_section_handler;\n      ptr = (lang_statement_union_type **)plVar3;\n    }\n  }\n  else {\n    p_Var4 = ((alignment_needed._0_4_)->wild_statement).walk_wild_section_handler;\n  }" if (parenthesized_expression "((((ptr == (lang_statement_union_type **)(PTR_DAT_001db8f8 + -0x3b70)) ||\n       (ptr == (lang_statement_union_type **)0x0)) || (ptr[1] != (lang_statement_union_type *)0xc))\n     || (ptr[6] != alignment_needed._0_4_))" ( (binary_expression "(((ptr == (lang_statement_union_type **)(PTR_DAT_001db8f8 + -0x3b70)) ||\n       (ptr == (lang_statement_union_type **)0x0)) || (ptr[1] != (lang_statement_union_type *)0xc))\n     || (ptr[6] != alignment_needed._0_4_)" (parenthesized_expression "(((ptr == (lang_statement_union_type **)(PTR_DAT_001db8f8 + -0x3b70)) ||\n       (ptr == (lang_statement_union_type **)0x0)) || (ptr[1] != (lang_statement_union_type *)0xc))" ( (binary_expression "((ptr == (lang_statement_union_type **)(PTR_DAT_001db8f8 + -0x3b70)) ||\n       (ptr == (lang_statement_union_type **)0x0)) || (ptr[1] != (lang_statement_union_type *)0xc)" (parenthesized_expression "((ptr == (lang_statement_union_type **)(PTR_DAT_001db8f8 + -0x3b70)) ||\n       (ptr == (lang_statement_union_type **)0x0))" ( (binary_expression "(ptr == (lang_statement_union_type **)(PTR_DAT_001db8f8 + -0x3b70)) ||\n       (ptr == (lang_statement_union_type **)0x0)" (parenthesized_expression "(ptr == (lang_statement_union_type **)(PTR_DAT_001db8f8 + -0x3b70))" ( (binary_expression "ptr == (lang_statement_union_type **)(PTR_DAT_001db8f8 + -0x3b70)" identifier == (cast_expression "(lang_statement_union_type **)(PTR_DAT_001db8f8 + -0x3b70)" ( (type_descriptor "lang_statement_union_type **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(PTR_DAT_001db8f8 + -0x3b70)" ( (binary_expression "PTR_DAT_001db8f8 + -0x3b70" identifier + number_literal) )))) )) || (parenthesized_expression "(ptr == (lang_statement_union_type **)0x0)" ( (binary_expression "ptr == (lang_statement_union_type **)0x0" identifier == (cast_expression "(lang_statement_union_type **)0x0" ( (type_descriptor "lang_statement_union_type **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) number_literal)) ))) )) || (parenthesized_expression "(ptr[1] != (lang_statement_union_type *)0xc)" ( (binary_expression "ptr[1] != (lang_statement_union_type *)0xc" (subscript_expression "ptr[1]" identifier [ number_literal ]) != (cast_expression "(lang_statement_union_type *)0xc" ( (type_descriptor "lang_statement_union_type *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ))) )) || (parenthesized_expression "(ptr[6] != alignment_needed._0_4_)" ( (binary_expression "ptr[6] != alignment_needed._0_4_" (subscript_expression "ptr[6]" identifier [ number_literal ]) != (field_expression "alignment_needed._0_4_" identifier . field_identifier)) ))) )) (compound_statement "{\n    plVar3 = *ptr;\n    if (((plVar3 == (lang_statement_union_type *)0x0) ||\n        ((plVar3->header).type != lang_padding_statement_enum)) ||\n       ((plVar3->wild_statement).children.head != alignment_needed._0_4_)) {\n      plVar3 = (lang_statement_union_type *)stat_alloc(0x20);\n      (plVar3->header).next = *ptr;\n      *ptr = plVar3;\n      (plVar3->header).type = lang_padding_statement_enum;\n      (plVar3->data_statement).output_section = (asection *)alignment_needed._0_4_;\n      if (fill == (fill_type *)0x0) {\n        fill = (fill_type *)(PTR_DAT_001db8f8 + -0x3c08);\n      }\n      (plVar3->padding_statement).fill = fill;\n      p_Var4 = ((alignment_needed._0_4_)->wild_statement).walk_wild_section_handler;\n      ptr = (lang_statement_union_type **)plVar3;\n    }\n    else {\n      p_Var4 = ((alignment_needed._0_4_)->wild_statement).walk_wild_section_handler;\n      ptr = (lang_statement_union_type **)plVar3;\n    }\n  }" { (expression_statement "plVar3 = *ptr;" (assignment_expression "plVar3 = *ptr" identifier = (pointer_expression "*ptr" * identifier)) ;) (if_statement "if (((plVar3 == (lang_statement_union_type *)0x0) ||\n        ((plVar3->header).type != lang_padding_statement_enum)) ||\n       ((plVar3->wild_statement).children.head != alignment_needed._0_4_)) {\n      plVar3 = (lang_statement_union_type *)stat_alloc(0x20);\n      (plVar3->header).next = *ptr;\n      *ptr = plVar3;\n      (plVar3->header).type = lang_padding_statement_enum;\n      (plVar3->data_statement).output_section = (asection *)alignment_needed._0_4_;\n      if (fill == (fill_type *)0x0) {\n        fill = (fill_type *)(PTR_DAT_001db8f8 + -0x3c08);\n      }\n      (plVar3->padding_statement).fill = fill;\n      p_Var4 = ((alignment_needed._0_4_)->wild_statement).walk_wild_section_handler;\n      ptr = (lang_statement_union_type **)plVar3;\n    }\n    else {\n      p_Var4 = ((alignment_needed._0_4_)->wild_statement).walk_wild_section_handler;\n      ptr = (lang_statement_union_type **)plVar3;\n    }" if (parenthesized_expression "(((plVar3 == (lang_statement_union_type *)0x0) ||\n        ((plVar3->header).type != lang_padding_statement_enum)) ||\n       ((plVar3->wild_statement).children.head != alignment_needed._0_4_))" ( (binary_expression "((plVar3 == (lang_statement_union_type *)0x0) ||\n        ((plVar3->header).type != lang_padding_statement_enum)) ||\n       ((plVar3->wild_statement).children.head != alignment_needed._0_4_)" (parenthesized_expression "((plVar3 == (lang_statement_union_type *)0x0) ||\n        ((plVar3->header).type != lang_padding_statement_enum))" ( (binary_expression "(plVar3 == (lang_statement_union_type *)0x0) ||\n        ((plVar3->header).type != lang_padding_statement_enum)" (parenthesized_expression "(plVar3 == (lang_statement_union_type *)0x0)" ( (binary_expression "plVar3 == (lang_statement_union_type *)0x0" identifier == (cast_expression "(lang_statement_union_type *)0x0" ( (type_descriptor "lang_statement_union_type *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) || (parenthesized_expression "((plVar3->header).type != lang_padding_statement_enum)" ( (binary_expression "(plVar3->header).type != lang_padding_statement_enum" (field_expression "(plVar3->header).type" (parenthesized_expression "(plVar3->header)" ( (field_expression "plVar3->header" identifier -> field_identifier) )) . field_identifier) != identifier) ))) )) || (parenthesized_expression "((plVar3->wild_statement).children.head != alignment_needed._0_4_)" ( (binary_expression "(plVar3->wild_statement).children.head != alignment_needed._0_4_" (field_expression "(plVar3->wild_statement).children.head" (field_expression "(plVar3->wild_statement).children" (parenthesized_expression "(plVar3->wild_statement)" ( (field_expression "plVar3->wild_statement" identifier -> field_identifier) )) . field_identifier) . field_identifier) != (field_expression "alignment_needed._0_4_" identifier . field_identifier)) ))) )) (compound_statement "{\n      plVar3 = (lang_statement_union_type *)stat_alloc(0x20);\n      (plVar3->header).next = *ptr;\n      *ptr = plVar3;\n      (plVar3->header).type = lang_padding_statement_enum;\n      (plVar3->data_statement).output_section = (asection *)alignment_needed._0_4_;\n      if (fill == (fill_type *)0x0) {\n        fill = (fill_type *)(PTR_DAT_001db8f8 + -0x3c08);\n      }\n      (plVar3->padding_statement).fill = fill;\n      p_Var4 = ((alignment_needed._0_4_)->wild_statement).walk_wild_section_handler;\n      ptr = (lang_statement_union_type **)plVar3;\n    }" { (expression_statement "plVar3 = (lang_statement_union_type *)stat_alloc(0x20);" (assignment_expression "plVar3 = (lang_statement_union_type *)stat_alloc(0x20)" identifier = (cast_expression "(lang_statement_union_type *)stat_alloc(0x20)" ( (type_descriptor "lang_statement_union_type *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "stat_alloc(0x20)" identifier (argument_list "(0x20)" ( number_literal ))))) ;) (expression_statement "(plVar3->header).next = *ptr;" (assignment_expression "(plVar3->header).next = *ptr" (field_expression "(plVar3->header).next" (parenthesized_expression "(plVar3->header)" ( (field_expression "plVar3->header" identifier -> field_identifier) )) . field_identifier) = (pointer_expression "*ptr" * identifier)) ;) (expression_statement "*ptr = plVar3;" (assignment_expression "*ptr = plVar3" (pointer_expression "*ptr" * identifier) = identifier) ;) (expression_statement "(plVar3->header).type = lang_padding_statement_enum;" (assignment_expression "(plVar3->header).type = lang_padding_statement_enum" (field_expression "(plVar3->header).type" (parenthesized_expression "(plVar3->header)" ( (field_expression "plVar3->header" identifier -> field_identifier) )) . field_identifier) = identifier) ;) (expression_statement "(plVar3->data_statement).output_section = (asection *)alignment_needed._0_4_;" (assignment_expression "(plVar3->data_statement).output_section = (asection *)alignment_needed._0_4_" (field_expression "(plVar3->data_statement).output_section" (parenthesized_expression "(plVar3->data_statement)" ( (field_expression "plVar3->data_statement" identifier -> field_identifier) )) . field_identifier) = (cast_expression "(asection *)alignment_needed._0_4_" ( (type_descriptor "asection *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "alignment_needed._0_4_" identifier . field_identifier))) ;) (if_statement "if (fill == (fill_type *)0x0) {\n        fill = (fill_type *)(PTR_DAT_001db8f8 + -0x3c08);\n      }" if (parenthesized_expression "(fill == (fill_type *)0x0)" ( (binary_expression "fill == (fill_type *)0x0" identifier == (cast_expression "(fill_type *)0x0" ( (type_descriptor "fill_type *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        fill = (fill_type *)(PTR_DAT_001db8f8 + -0x3c08);\n      }" { (expression_statement "fill = (fill_type *)(PTR_DAT_001db8f8 + -0x3c08);" (assignment_expression "fill = (fill_type *)(PTR_DAT_001db8f8 + -0x3c08)" identifier = (cast_expression "(fill_type *)(PTR_DAT_001db8f8 + -0x3c08)" ( (type_descriptor "fill_type *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_001db8f8 + -0x3c08)" ( (binary_expression "PTR_DAT_001db8f8 + -0x3c08" identifier + number_literal) )))) ;) })) (expression_statement "(plVar3->padding_statement).fill = fill;" (assignment_expression "(plVar3->padding_statement).fill = fill" (field_expression "(plVar3->padding_statement).fill" (parenthesized_expression "(plVar3->padding_statement)" ( (field_expression "plVar3->padding_statement" identifier -> field_identifier) )) . field_identifier) = identifier) ;) (expression_statement "p_Var4 = ((alignment_needed._0_4_)->wild_statement).walk_wild_section_handler;" (assignment_expression "p_Var4 = ((alignment_needed._0_4_)->wild_statement).walk_wild_section_handler" identifier = (field_expression "((alignment_needed._0_4_)->wild_statement).walk_wild_section_handler" (parenthesized_expression "((alignment_needed._0_4_)->wild_statement)" ( (field_expression "(alignment_needed._0_4_)->wild_statement" (parenthesized_expression "(alignment_needed._0_4_)" ( (field_expression "alignment_needed._0_4_" identifier . field_identifier) )) -> field_identifier) )) . field_identifier)) ;) (expression_statement "ptr = (lang_statement_union_type **)plVar3;" (assignment_expression "ptr = (lang_statement_union_type **)plVar3" identifier = (cast_expression "(lang_statement_union_type **)plVar3" ( (type_descriptor "lang_statement_union_type **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier)) ;) }) (else_clause "else {\n      p_Var4 = ((alignment_needed._0_4_)->wild_statement).walk_wild_section_handler;\n      ptr = (lang_statement_union_type **)plVar3;\n    }" else (compound_statement "{\n      p_Var4 = ((alignment_needed._0_4_)->wild_statement).walk_wild_section_handler;\n      ptr = (lang_statement_union_type **)plVar3;\n    }" { (expression_statement "p_Var4 = ((alignment_needed._0_4_)->wild_statement).walk_wild_section_handler;" (assignment_expression "p_Var4 = ((alignment_needed._0_4_)->wild_statement).walk_wild_section_handler" identifier = (field_expression "((alignment_needed._0_4_)->wild_statement).walk_wild_section_handler" (parenthesized_expression "((alignment_needed._0_4_)->wild_statement)" ( (field_expression "(alignment_needed._0_4_)->wild_statement" (parenthesized_expression "(alignment_needed._0_4_)" ( (field_expression "alignment_needed._0_4_" identifier . field_identifier) )) -> field_identifier) )) . field_identifier)) ;) (expression_statement "ptr = (lang_statement_union_type **)plVar3;" (assignment_expression "ptr = (lang_statement_union_type **)plVar3" identifier = (cast_expression "(lang_statement_union_type **)plVar3" ( (type_descriptor "lang_statement_union_type **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier)) ;) }))) }) (else_clause "else {\n    p_Var4 = ((alignment_needed._0_4_)->wild_statement).walk_wild_section_handler;\n  }" else (compound_statement "{\n    p_Var4 = ((alignment_needed._0_4_)->wild_statement).walk_wild_section_handler;\n  }" { (expression_statement "p_Var4 = ((alignment_needed._0_4_)->wild_statement).walk_wild_section_handler;" (assignment_expression "p_Var4 = ((alignment_needed._0_4_)->wild_statement).walk_wild_section_handler" identifier = (field_expression "((alignment_needed._0_4_)->wild_statement).walk_wild_section_handler" (parenthesized_expression "((alignment_needed._0_4_)->wild_statement)" ( (field_expression "(alignment_needed._0_4_)->wild_statement" (parenthesized_expression "(alignment_needed._0_4_)" ( (field_expression "alignment_needed._0_4_" identifier . field_identifier) )) -> field_identifier) )) . field_identifier)) ;) }))) (expression_statement "pnVar9 = ((alignment_needed._0_4_)->wild_statement).exclude_name_list;" (assignment_expression "pnVar9 = ((alignment_needed._0_4_)->wild_statement).exclude_name_list" identifier = (field_expression "((alignment_needed._0_4_)->wild_statement).exclude_name_list" (parenthesized_expression "((alignment_needed._0_4_)->wild_statement)" ( (field_expression "(alignment_needed._0_4_)->wild_statement" (parenthesized_expression "(alignment_needed._0_4_)" ( (field_expression "alignment_needed._0_4_" identifier . field_identifier) )) -> field_identifier) )) . field_identifier)) ;) (expression_statement "uVar7 = ((alignment_needed._0_4_)->wild_statement).keep_sections;" (assignment_expression "uVar7 = ((alignment_needed._0_4_)->wild_statement).keep_sections" identifier = (field_expression "((alignment_needed._0_4_)->wild_statement).keep_sections" (parenthesized_expression "((alignment_needed._0_4_)->wild_statement)" ( (field_expression "(alignment_needed._0_4_)->wild_statement" (parenthesized_expression "(alignment_needed._0_4_)" ( (field_expression "alignment_needed._0_4_" identifier . field_identifier) )) -> field_identifier) )) . field_identifier)) ;) (expression_statement "((lang_reloc_statement_type *)ptr)->section = output_section;" (assignment_expression "((lang_reloc_statement_type *)ptr)->section = output_section" (field_expression "((lang_reloc_statement_type *)ptr)->section" (parenthesized_expression "((lang_reloc_statement_type *)ptr)" ( (cast_expression "(lang_reloc_statement_type *)ptr" ( (type_descriptor "lang_reloc_statement_type *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) )) -> field_identifier) = identifier) ;) (expression_statement "((lang_wild_statement_type *)ptr)->keep_sections = in_a3;" (assignment_expression "((lang_wild_statement_type *)ptr)->keep_sections = in_a3" (field_expression "((lang_wild_statement_type *)ptr)->keep_sections" (parenthesized_expression "((lang_wild_statement_type *)ptr)" ( (cast_expression "(lang_wild_statement_type *)ptr" ( (type_descriptor "lang_wild_statement_type *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) )) -> field_identifier) = identifier) ;) (expression_statement "((lang_data_statement_type *)ptr)->exp = (etree_union *)((int)dot._4_4_ - (int)p_Var4);" (assignment_expression "((lang_data_statement_type *)ptr)->exp = (etree_union *)((int)dot._4_4_ - (int)p_Var4)" (field_expression "((lang_data_statement_type *)ptr)->exp" (parenthesized_expression "((lang_data_statement_type *)ptr)" ( (cast_expression "(lang_data_statement_type *)ptr" ( (type_descriptor "lang_data_statement_type *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) )) -> field_identifier) = (cast_expression "(etree_union *)((int)dot._4_4_ - (int)p_Var4)" ( (type_descriptor "etree_union *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)dot._4_4_ - (int)p_Var4)" ( (binary_expression "(int)dot._4_4_ - (int)p_Var4" (cast_expression "(int)dot._4_4_" ( (type_descriptor "int" primitive_type) ) (field_expression "dot._4_4_" identifier . field_identifier)) - (cast_expression "(int)p_Var4" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;) (expression_statement "((lang_wild_statement_type *)ptr)->filename =\n       (char *)((dot._0_4_ - (int)pnVar9) -\n               (uint)(dot._4_4_ < (etree_union *)((int)dot._4_4_ - (int)p_Var4)));" (assignment_expression "((lang_wild_statement_type *)ptr)->filename =\n       (char *)((dot._0_4_ - (int)pnVar9) -\n               (uint)(dot._4_4_ < (etree_union *)((int)dot._4_4_ - (int)p_Var4)))" (field_expression "((lang_wild_statement_type *)ptr)->filename" (parenthesized_expression "((lang_wild_statement_type *)ptr)" ( (cast_expression "(lang_wild_statement_type *)ptr" ( (type_descriptor "lang_wild_statement_type *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) )) -> field_identifier) = (cast_expression "(char *)((dot._0_4_ - (int)pnVar9) -\n               (uint)(dot._4_4_ < (etree_union *)((int)dot._4_4_ - (int)p_Var4)))" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((dot._0_4_ - (int)pnVar9) -\n               (uint)(dot._4_4_ < (etree_union *)((int)dot._4_4_ - (int)p_Var4)))" ( (binary_expression "(dot._0_4_ - (int)pnVar9) -\n               (uint)(dot._4_4_ < (etree_union *)((int)dot._4_4_ - (int)p_Var4))" (parenthesized_expression "(dot._0_4_ - (int)pnVar9)" ( (binary_expression "dot._0_4_ - (int)pnVar9" (field_expression "dot._0_4_" identifier . field_identifier) - (cast_expression "(int)pnVar9" ( (type_descriptor "int" primitive_type) ) identifier)) )) - (call_expression "(uint)(dot._4_4_ < (etree_union *)((int)dot._4_4_ - (int)p_Var4))" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(dot._4_4_ < (etree_union *)((int)dot._4_4_ - (int)p_Var4))" ( (binary_expression "dot._4_4_ < (etree_union *)((int)dot._4_4_ - (int)p_Var4)" (field_expression "dot._4_4_" identifier . field_identifier) < (cast_expression "(etree_union *)((int)dot._4_4_ - (int)p_Var4)" ( (type_descriptor "etree_union *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)dot._4_4_ - (int)p_Var4)" ( (binary_expression "(int)dot._4_4_ - (int)p_Var4" (cast_expression "(int)dot._4_4_" ( (type_descriptor "int" primitive_type) ) (field_expression "dot._4_4_" identifier . field_identifier)) - (cast_expression "(int)p_Var4" ( (type_descriptor "int" primitive_type) ) identifier)) )))) )))) )))) ;) (if_statement "if ((uVar7 & 0x800) == 0) {\n    uVar8 = *(uint *)(PTR_DAT_001db8f8 + -0x3ba4);\n    uVar10 = (uint)output_section >> (uVar8 & 0x1f);\n    uVar11 = uVar10;\n    uVar7 = ((int)output_section << 1) << (~uVar8 & 0x1f) | in_a3 >> (uVar8 & 0x1f);\n    if ((uVar8 & 0x20) != 0) {\n      uVar11 = 0;\n      uVar7 = uVar10;\n    }\n    lVar2 = dot + CONCAT44(uVar11,uVar7);\n    uVar11 = (uint)lVar2;\n    uVar7 = uVar11 - (int)p_Var4;\n    pwVar5 = (wildcard_list *)(uVar7 << (uVar8 & 0x1f));\n    pwVar6 = pwVar5;\n    pwVar1 = (wildcard_list *)\n             (((int)((ulonglong)lVar2 >> 0x20) - (int)pnVar9) - (uint)(uVar11 < uVar7) <<\n              (uVar8 & 0x1f) | (uVar7 >> 1) >> (~uVar8 & 0x1f));\n    if ((uVar8 & 0x20) != 0) {\n      pwVar6 = (wildcard_list *)0x0;\n      pwVar1 = pwVar5;\n    }\n    ((alignment_needed._0_4_)->wild_statement).handler_data[2] = pwVar1;\n    ((alignment_needed._0_4_)->wild_statement).handler_data[3] = pwVar6;\n  }" if (parenthesized_expression "((uVar7 & 0x800) == 0)" ( (binary_expression "(uVar7 & 0x800) == 0" (parenthesized_expression "(uVar7 & 0x800)" ( (binary_expression "uVar7 & 0x800" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n    uVar8 = *(uint *)(PTR_DAT_001db8f8 + -0x3ba4);\n    uVar10 = (uint)output_section >> (uVar8 & 0x1f);\n    uVar11 = uVar10;\n    uVar7 = ((int)output_section << 1) << (~uVar8 & 0x1f) | in_a3 >> (uVar8 & 0x1f);\n    if ((uVar8 & 0x20) != 0) {\n      uVar11 = 0;\n      uVar7 = uVar10;\n    }\n    lVar2 = dot + CONCAT44(uVar11,uVar7);\n    uVar11 = (uint)lVar2;\n    uVar7 = uVar11 - (int)p_Var4;\n    pwVar5 = (wildcard_list *)(uVar7 << (uVar8 & 0x1f));\n    pwVar6 = pwVar5;\n    pwVar1 = (wildcard_list *)\n             (((int)((ulonglong)lVar2 >> 0x20) - (int)pnVar9) - (uint)(uVar11 < uVar7) <<\n              (uVar8 & 0x1f) | (uVar7 >> 1) >> (~uVar8 & 0x1f));\n    if ((uVar8 & 0x20) != 0) {\n      pwVar6 = (wildcard_list *)0x0;\n      pwVar1 = pwVar5;\n    }\n    ((alignment_needed._0_4_)->wild_statement).handler_data[2] = pwVar1;\n    ((alignment_needed._0_4_)->wild_statement).handler_data[3] = pwVar6;\n  }" { (expression_statement "uVar8 = *(uint *)(PTR_DAT_001db8f8 + -0x3ba4);" (assignment_expression "uVar8 = *(uint *)(PTR_DAT_001db8f8 + -0x3ba4)" identifier = (pointer_expression "*(uint *)(PTR_DAT_001db8f8 + -0x3ba4)" * (cast_expression "(uint *)(PTR_DAT_001db8f8 + -0x3ba4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_001db8f8 + -0x3ba4)" ( (binary_expression "PTR_DAT_001db8f8 + -0x3ba4" identifier + number_literal) ))))) ;) (expression_statement "uVar10 = (uint)output_section >> (uVar8 & 0x1f);" (assignment_expression "uVar10 = (uint)output_section >> (uVar8 & 0x1f)" identifier = (binary_expression "(uint)output_section >> (uVar8 & 0x1f)" (cast_expression "(uint)output_section" ( (type_descriptor "uint" type_identifier) ) identifier) >> (parenthesized_expression "(uVar8 & 0x1f)" ( (binary_expression "uVar8 & 0x1f" identifier & number_literal) )))) ;) (expression_statement "uVar11 = uVar10;" (assignment_expression "uVar11 = uVar10" identifier = identifier) ;) (expression_statement "uVar7 = ((int)output_section << 1) << (~uVar8 & 0x1f) | in_a3 >> (uVar8 & 0x1f);" (assignment_expression "uVar7 = ((int)output_section << 1) << (~uVar8 & 0x1f) | in_a3 >> (uVar8 & 0x1f)" identifier = (binary_expression "((int)output_section << 1) << (~uVar8 & 0x1f) | in_a3 >> (uVar8 & 0x1f)" (binary_expression "((int)output_section << 1) << (~uVar8 & 0x1f)" (parenthesized_expression "((int)output_section << 1)" ( (binary_expression "(int)output_section << 1" (cast_expression "(int)output_section" ( (type_descriptor "int" primitive_type) ) identifier) << number_literal) )) << (parenthesized_expression "(~uVar8 & 0x1f)" ( (binary_expression "~uVar8 & 0x1f" (unary_expression "~uVar8" ~ identifier) & number_literal) ))) | (binary_expression "in_a3 >> (uVar8 & 0x1f)" identifier >> (parenthesized_expression "(uVar8 & 0x1f)" ( (binary_expression "uVar8 & 0x1f" identifier & number_literal) ))))) ;) (if_statement "if ((uVar8 & 0x20) != 0) {\n      uVar11 = 0;\n      uVar7 = uVar10;\n    }" if (parenthesized_expression "((uVar8 & 0x20) != 0)" ( (binary_expression "(uVar8 & 0x20) != 0" (parenthesized_expression "(uVar8 & 0x20)" ( (binary_expression "uVar8 & 0x20" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n      uVar11 = 0;\n      uVar7 = uVar10;\n    }" { (expression_statement "uVar11 = 0;" (assignment_expression "uVar11 = 0" identifier = number_literal) ;) (expression_statement "uVar7 = uVar10;" (assignment_expression "uVar7 = uVar10" identifier = identifier) ;) })) (expression_statement "lVar2 = dot + CONCAT44(uVar11,uVar7);" (assignment_expression "lVar2 = dot + CONCAT44(uVar11,uVar7)" identifier = (binary_expression "dot + CONCAT44(uVar11,uVar7)" identifier + (call_expression "CONCAT44(uVar11,uVar7)" identifier (argument_list "(uVar11,uVar7)" ( identifier , identifier ))))) ;) (expression_statement "uVar11 = (uint)lVar2;" (assignment_expression "uVar11 = (uint)lVar2" identifier = (cast_expression "(uint)lVar2" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "uVar7 = uVar11 - (int)p_Var4;" (assignment_expression "uVar7 = uVar11 - (int)p_Var4" identifier = (binary_expression "uVar11 - (int)p_Var4" identifier - (cast_expression "(int)p_Var4" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "pwVar5 = (wildcard_list *)(uVar7 << (uVar8 & 0x1f));" (assignment_expression "pwVar5 = (wildcard_list *)(uVar7 << (uVar8 & 0x1f))" identifier = (cast_expression "(wildcard_list *)(uVar7 << (uVar8 & 0x1f))" ( (type_descriptor "wildcard_list *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar7 << (uVar8 & 0x1f))" ( (binary_expression "uVar7 << (uVar8 & 0x1f)" identifier << (parenthesized_expression "(uVar8 & 0x1f)" ( (binary_expression "uVar8 & 0x1f" identifier & number_literal) ))) )))) ;) (expression_statement "pwVar6 = pwVar5;" (assignment_expression "pwVar6 = pwVar5" identifier = identifier) ;) (expression_statement "pwVar1 = (wildcard_list *)\n             (((int)((ulonglong)lVar2 >> 0x20) - (int)pnVar9) - (uint)(uVar11 < uVar7) <<\n              (uVar8 & 0x1f) | (uVar7 >> 1) >> (~uVar8 & 0x1f));" (assignment_expression "pwVar1 = (wildcard_list *)\n             (((int)((ulonglong)lVar2 >> 0x20) - (int)pnVar9) - (uint)(uVar11 < uVar7) <<\n              (uVar8 & 0x1f) | (uVar7 >> 1) >> (~uVar8 & 0x1f))" identifier = (cast_expression "(wildcard_list *)\n             (((int)((ulonglong)lVar2 >> 0x20) - (int)pnVar9) - (uint)(uVar11 < uVar7) <<\n              (uVar8 & 0x1f) | (uVar7 >> 1) >> (~uVar8 & 0x1f))" ( (type_descriptor "wildcard_list *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(((int)((ulonglong)lVar2 >> 0x20) - (int)pnVar9) - (uint)(uVar11 < uVar7) <<\n              (uVar8 & 0x1f) | (uVar7 >> 1) >> (~uVar8 & 0x1f))" ( (binary_expression "((int)((ulonglong)lVar2 >> 0x20) - (int)pnVar9) - (uint)(uVar11 < uVar7) <<\n              (uVar8 & 0x1f) | (uVar7 >> 1) >> (~uVar8 & 0x1f)" (binary_expression "((int)((ulonglong)lVar2 >> 0x20) - (int)pnVar9) - (uint)(uVar11 < uVar7) <<\n              (uVar8 & 0x1f)" (binary_expression "((int)((ulonglong)lVar2 >> 0x20) - (int)pnVar9) - (uint)(uVar11 < uVar7)" (parenthesized_expression "((int)((ulonglong)lVar2 >> 0x20) - (int)pnVar9)" ( (binary_expression "(int)((ulonglong)lVar2 >> 0x20) - (int)pnVar9" (cast_expression "(int)((ulonglong)lVar2 >> 0x20)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((ulonglong)lVar2 >> 0x20)" ( (binary_expression "(ulonglong)lVar2 >> 0x20" (cast_expression "(ulonglong)lVar2" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) ))) - (cast_expression "(int)pnVar9" ( (type_descriptor "int" primitive_type) ) identifier)) )) - (call_expression "(uint)(uVar11 < uVar7)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar11 < uVar7)" ( (binary_expression "uVar11 < uVar7" identifier < identifier) )))) << (parenthesized_expression "(uVar8 & 0x1f)" ( (binary_expression "uVar8 & 0x1f" identifier & number_literal) ))) | (binary_expression "(uVar7 >> 1) >> (~uVar8 & 0x1f)" (parenthesized_expression "(uVar7 >> 1)" ( (binary_expression "uVar7 >> 1" identifier >> number_literal) )) >> (parenthesized_expression "(~uVar8 & 0x1f)" ( (binary_expression "~uVar8 & 0x1f" (unary_expression "~uVar8" ~ identifier) & number_literal) )))) )))) ;) (if_statement "if ((uVar8 & 0x20) != 0) {\n      pwVar6 = (wildcard_list *)0x0;\n      pwVar1 = pwVar5;\n    }" if (parenthesized_expression "((uVar8 & 0x20) != 0)" ( (binary_expression "(uVar8 & 0x20) != 0" (parenthesized_expression "(uVar8 & 0x20)" ( (binary_expression "uVar8 & 0x20" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n      pwVar6 = (wildcard_list *)0x0;\n      pwVar1 = pwVar5;\n    }" { (expression_statement "pwVar6 = (wildcard_list *)0x0;" (assignment_expression "pwVar6 = (wildcard_list *)0x0" identifier = (cast_expression "(wildcard_list *)0x0" ( (type_descriptor "wildcard_list *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "pwVar1 = pwVar5;" (assignment_expression "pwVar1 = pwVar5" identifier = identifier) ;) })) (expression_statement "((alignment_needed._0_4_)->wild_statement).handler_data[2] = pwVar1;" (assignment_expression "((alignment_needed._0_4_)->wild_statement).handler_data[2] = pwVar1" (subscript_expression "((alignment_needed._0_4_)->wild_statement).handler_data[2]" (field_expression "((alignment_needed._0_4_)->wild_statement).handler_data" (parenthesized_expression "((alignment_needed._0_4_)->wild_statement)" ( (field_expression "(alignment_needed._0_4_)->wild_statement" (parenthesized_expression "(alignment_needed._0_4_)" ( (field_expression "alignment_needed._0_4_" identifier . field_identifier) )) -> field_identifier) )) . field_identifier) [ number_literal ]) = identifier) ;) (expression_statement "((alignment_needed._0_4_)->wild_statement).handler_data[3] = pwVar6;" (assignment_expression "((alignment_needed._0_4_)->wild_statement).handler_data[3] = pwVar6" (subscript_expression "((alignment_needed._0_4_)->wild_statement).handler_data[3]" (field_expression "((alignment_needed._0_4_)->wild_statement).handler_data" (parenthesized_expression "((alignment_needed._0_4_)->wild_statement)" ( (field_expression "(alignment_needed._0_4_)->wild_statement" (parenthesized_expression "(alignment_needed._0_4_)" ( (field_expression "alignment_needed._0_4_" identifier . field_identifier) )) -> field_identifier) )) . field_identifier) [ number_literal ]) = identifier) ;) })) (return_statement "return;" return ;) })))
(translation_unit "void FUN_0002687c(undefined4 *param_1,undefined *param_2,uint param_3,uint param_4,int param_5,\n                 undefined4 param_6,int param_7,uint param_8)\n\n{\n  undefined4 *puVar1;\n  int iVar2;\n  uint uVar3;\n  uint uVar4;\n  uint uVar5;\n  uint uVar6;\n  int iVar7;\n  uint uVar8;\n  uint uVar9;\n  \n  if ((((param_1 == (undefined4 *)(PTR_DAT_001db8f8 + -0x3b70)) || (param_1 == (undefined4 *)0x0))\n      || (param_1[1] != 0xc)) || (param_1[6] != param_5)) {\n    puVar1 = (undefined4 *)*param_1;\n    if (((puVar1 == (undefined4 *)0x0) || (puVar1[1] != 0xc)) || (puVar1[6] != param_5)) {\n      puVar1 = (undefined4 *)stat_alloc(0x20);\n      *puVar1 = *param_1;\n      *param_1 = puVar1;\n      puVar1[1] = 0xc;\n      puVar1[6] = param_5;\n      if (param_2 == (undefined *)0x0) {\n        param_2 = PTR_DAT_001db8f8 + -0x3c08;\n      }\n      puVar1[7] = param_2;\n      iVar2 = *(int *)(param_5 + 0x24);\n      param_1 = puVar1;\n    }\n    else {\n      iVar2 = *(int *)(param_5 + 0x24);\n      param_1 = puVar1;\n    }\n  }\n  else {\n    iVar2 = *(int *)(param_5 + 0x24);\n  }\n  iVar7 = *(int *)(param_5 + 0x20);\n  uVar5 = *(uint *)(param_5 + 0x14);\n  param_1[4] = param_3;\n  param_1[5] = param_4;\n  param_1[3] = param_8 - iVar2;\n  param_1[2] = (param_7 - iVar7) - (uint)(param_8 < param_8 - iVar2);\n  if ((uVar5 & 0x800) == 0) {\n    uVar6 = *(uint *)(PTR_DAT_001db8f8 + -0x3ba4);\n    uVar8 = param_3 >> (uVar6 & 0x1f);\n    uVar9 = uVar8;\n    uVar5 = (param_3 << 1) << (~uVar6 & 0x1f) | param_4 >> (uVar6 & 0x1f);\n    if ((uVar6 & 0x20) != 0) {\n      uVar9 = 0;\n      uVar5 = uVar8;\n    }\n    param_8 = uVar5 + param_8;\n    uVar3 = param_8 - iVar2;\n    uVar4 = uVar3 << (uVar6 & 0x1f);\n    uVar8 = uVar4;\n    uVar5 = (((uint)(param_8 < uVar5) + uVar9 + param_7) - iVar7) - (uint)(param_8 < uVar3) <<\n            (uVar6 & 0x1f) | (uVar3 >> 1) >> (~uVar6 & 0x1f);\n    if ((uVar6 & 0x20) != 0) {\n      uVar8 = 0;\n      uVar5 = uVar4;\n    }\n    *(uint *)(param_5 + 0x30) = uVar5;\n    *(uint *)(param_5 + 0x34) = uVar8;\n  }\n  return;\n}\n\n" (function_definition "void FUN_0002687c(undefined4 *param_1,undefined *param_2,uint param_3,uint param_4,int param_5,\n                 undefined4 param_6,int param_7,uint param_8)\n\n{\n  undefined4 *puVar1;\n  int iVar2;\n  uint uVar3;\n  uint uVar4;\n  uint uVar5;\n  uint uVar6;\n  int iVar7;\n  uint uVar8;\n  uint uVar9;\n  \n  if ((((param_1 == (undefined4 *)(PTR_DAT_001db8f8 + -0x3b70)) || (param_1 == (undefined4 *)0x0))\n      || (param_1[1] != 0xc)) || (param_1[6] != param_5)) {\n    puVar1 = (undefined4 *)*param_1;\n    if (((puVar1 == (undefined4 *)0x0) || (puVar1[1] != 0xc)) || (puVar1[6] != param_5)) {\n      puVar1 = (undefined4 *)stat_alloc(0x20);\n      *puVar1 = *param_1;\n      *param_1 = puVar1;\n      puVar1[1] = 0xc;\n      puVar1[6] = param_5;\n      if (param_2 == (undefined *)0x0) {\n        param_2 = PTR_DAT_001db8f8 + -0x3c08;\n      }\n      puVar1[7] = param_2;\n      iVar2 = *(int *)(param_5 + 0x24);\n      param_1 = puVar1;\n    }\n    else {\n      iVar2 = *(int *)(param_5 + 0x24);\n      param_1 = puVar1;\n    }\n  }\n  else {\n    iVar2 = *(int *)(param_5 + 0x24);\n  }\n  iVar7 = *(int *)(param_5 + 0x20);\n  uVar5 = *(uint *)(param_5 + 0x14);\n  param_1[4] = param_3;\n  param_1[5] = param_4;\n  param_1[3] = param_8 - iVar2;\n  param_1[2] = (param_7 - iVar7) - (uint)(param_8 < param_8 - iVar2);\n  if ((uVar5 & 0x800) == 0) {\n    uVar6 = *(uint *)(PTR_DAT_001db8f8 + -0x3ba4);\n    uVar8 = param_3 >> (uVar6 & 0x1f);\n    uVar9 = uVar8;\n    uVar5 = (param_3 << 1) << (~uVar6 & 0x1f) | param_4 >> (uVar6 & 0x1f);\n    if ((uVar6 & 0x20) != 0) {\n      uVar9 = 0;\n      uVar5 = uVar8;\n    }\n    param_8 = uVar5 + param_8;\n    uVar3 = param_8 - iVar2;\n    uVar4 = uVar3 << (uVar6 & 0x1f);\n    uVar8 = uVar4;\n    uVar5 = (((uint)(param_8 < uVar5) + uVar9 + param_7) - iVar7) - (uint)(param_8 < uVar3) <<\n            (uVar6 & 0x1f) | (uVar3 >> 1) >> (~uVar6 & 0x1f);\n    if ((uVar6 & 0x20) != 0) {\n      uVar8 = 0;\n      uVar5 = uVar4;\n    }\n    *(uint *)(param_5 + 0x30) = uVar5;\n    *(uint *)(param_5 + 0x34) = uVar8;\n  }\n  return;\n}" primitive_type (function_declarator "FUN_0002687c(undefined4 *param_1,undefined *param_2,uint param_3,uint param_4,int param_5,\n                 undefined4 param_6,int param_7,uint param_8)" identifier (parameter_list "(undefined4 *param_1,undefined *param_2,uint param_3,uint param_4,int param_5,\n                 undefined4 param_6,int param_7,uint param_8)" ( (parameter_declaration "undefined4 *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "undefined *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "uint param_3" type_identifier identifier) , (parameter_declaration "uint param_4" type_identifier identifier) , (parameter_declaration "int param_5" primitive_type identifier) , (parameter_declaration "undefined4 param_6" type_identifier identifier) , (parameter_declaration "int param_7" primitive_type identifier) , (parameter_declaration "uint param_8" type_identifier identifier) ))) (compound_statement "{\n  undefined4 *puVar1;\n  int iVar2;\n  uint uVar3;\n  uint uVar4;\n  uint uVar5;\n  uint uVar6;\n  int iVar7;\n  uint uVar8;\n  uint uVar9;\n  \n  if ((((param_1 == (undefined4 *)(PTR_DAT_001db8f8 + -0x3b70)) || (param_1 == (undefined4 *)0x0))\n      || (param_1[1] != 0xc)) || (param_1[6] != param_5)) {\n    puVar1 = (undefined4 *)*param_1;\n    if (((puVar1 == (undefined4 *)0x0) || (puVar1[1] != 0xc)) || (puVar1[6] != param_5)) {\n      puVar1 = (undefined4 *)stat_alloc(0x20);\n      *puVar1 = *param_1;\n      *param_1 = puVar1;\n      puVar1[1] = 0xc;\n      puVar1[6] = param_5;\n      if (param_2 == (undefined *)0x0) {\n        param_2 = PTR_DAT_001db8f8 + -0x3c08;\n      }\n      puVar1[7] = param_2;\n      iVar2 = *(int *)(param_5 + 0x24);\n      param_1 = puVar1;\n    }\n    else {\n      iVar2 = *(int *)(param_5 + 0x24);\n      param_1 = puVar1;\n    }\n  }\n  else {\n    iVar2 = *(int *)(param_5 + 0x24);\n  }\n  iVar7 = *(int *)(param_5 + 0x20);\n  uVar5 = *(uint *)(param_5 + 0x14);\n  param_1[4] = param_3;\n  param_1[5] = param_4;\n  param_1[3] = param_8 - iVar2;\n  param_1[2] = (param_7 - iVar7) - (uint)(param_8 < param_8 - iVar2);\n  if ((uVar5 & 0x800) == 0) {\n    uVar6 = *(uint *)(PTR_DAT_001db8f8 + -0x3ba4);\n    uVar8 = param_3 >> (uVar6 & 0x1f);\n    uVar9 = uVar8;\n    uVar5 = (param_3 << 1) << (~uVar6 & 0x1f) | param_4 >> (uVar6 & 0x1f);\n    if ((uVar6 & 0x20) != 0) {\n      uVar9 = 0;\n      uVar5 = uVar8;\n    }\n    param_8 = uVar5 + param_8;\n    uVar3 = param_8 - iVar2;\n    uVar4 = uVar3 << (uVar6 & 0x1f);\n    uVar8 = uVar4;\n    uVar5 = (((uint)(param_8 < uVar5) + uVar9 + param_7) - iVar7) - (uint)(param_8 < uVar3) <<\n            (uVar6 & 0x1f) | (uVar3 >> 1) >> (~uVar6 & 0x1f);\n    if ((uVar6 & 0x20) != 0) {\n      uVar8 = 0;\n      uVar5 = uVar4;\n    }\n    *(uint *)(param_5 + 0x30) = uVar5;\n    *(uint *)(param_5 + 0x34) = uVar8;\n  }\n  return;\n}" { (declaration "undefined4 *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "uint uVar4;" type_identifier identifier ;) (declaration "uint uVar5;" type_identifier identifier ;) (declaration "uint uVar6;" type_identifier identifier ;) (declaration "int iVar7;" primitive_type identifier ;) (declaration "uint uVar8;" type_identifier identifier ;) (declaration "uint uVar9;" type_identifier identifier ;) (if_statement "if ((((param_1 == (undefined4 *)(PTR_DAT_001db8f8 + -0x3b70)) || (param_1 == (undefined4 *)0x0))\n      || (param_1[1] != 0xc)) || (param_1[6] != param_5)) {\n    puVar1 = (undefined4 *)*param_1;\n    if (((puVar1 == (undefined4 *)0x0) || (puVar1[1] != 0xc)) || (puVar1[6] != param_5)) {\n      puVar1 = (undefined4 *)stat_alloc(0x20);\n      *puVar1 = *param_1;\n      *param_1 = puVar1;\n      puVar1[1] = 0xc;\n      puVar1[6] = param_5;\n      if (param_2 == (undefined *)0x0) {\n        param_2 = PTR_DAT_001db8f8 + -0x3c08;\n      }\n      puVar1[7] = param_2;\n      iVar2 = *(int *)(param_5 + 0x24);\n      param_1 = puVar1;\n    }\n    else {\n      iVar2 = *(int *)(param_5 + 0x24);\n      param_1 = puVar1;\n    }\n  }\n  else {\n    iVar2 = *(int *)(param_5 + 0x24);\n  }" if (parenthesized_expression "((((param_1 == (undefined4 *)(PTR_DAT_001db8f8 + -0x3b70)) || (param_1 == (undefined4 *)0x0))\n      || (param_1[1] != 0xc)) || (param_1[6] != param_5))" ( (binary_expression "(((param_1 == (undefined4 *)(PTR_DAT_001db8f8 + -0x3b70)) || (param_1 == (undefined4 *)0x0))\n      || (param_1[1] != 0xc)) || (param_1[6] != param_5)" (parenthesized_expression "(((param_1 == (undefined4 *)(PTR_DAT_001db8f8 + -0x3b70)) || (param_1 == (undefined4 *)0x0))\n      || (param_1[1] != 0xc))" ( (binary_expression "((param_1 == (undefined4 *)(PTR_DAT_001db8f8 + -0x3b70)) || (param_1 == (undefined4 *)0x0))\n      || (param_1[1] != 0xc)" (parenthesized_expression "((param_1 == (undefined4 *)(PTR_DAT_001db8f8 + -0x3b70)) || (param_1 == (undefined4 *)0x0))" ( (binary_expression "(param_1 == (undefined4 *)(PTR_DAT_001db8f8 + -0x3b70)) || (param_1 == (undefined4 *)0x0)" (parenthesized_expression "(param_1 == (undefined4 *)(PTR_DAT_001db8f8 + -0x3b70))" ( (binary_expression "param_1 == (undefined4 *)(PTR_DAT_001db8f8 + -0x3b70)" identifier == (cast_expression "(undefined4 *)(PTR_DAT_001db8f8 + -0x3b70)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_001db8f8 + -0x3b70)" ( (binary_expression "PTR_DAT_001db8f8 + -0x3b70" identifier + number_literal) )))) )) || (parenthesized_expression "(param_1 == (undefined4 *)0x0)" ( (binary_expression "param_1 == (undefined4 *)0x0" identifier == (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ))) )) || (parenthesized_expression "(param_1[1] != 0xc)" ( (binary_expression "param_1[1] != 0xc" (subscript_expression "param_1[1]" identifier [ number_literal ]) != number_literal) ))) )) || (parenthesized_expression "(param_1[6] != param_5)" ( (binary_expression "param_1[6] != param_5" (subscript_expression "param_1[6]" identifier [ number_literal ]) != identifier) ))) )) (compound_statement "{\n    puVar1 = (undefined4 *)*param_1;\n    if (((puVar1 == (undefined4 *)0x0) || (puVar1[1] != 0xc)) || (puVar1[6] != param_5)) {\n      puVar1 = (undefined4 *)stat_alloc(0x20);\n      *puVar1 = *param_1;\n      *param_1 = puVar1;\n      puVar1[1] = 0xc;\n      puVar1[6] = param_5;\n      if (param_2 == (undefined *)0x0) {\n        param_2 = PTR_DAT_001db8f8 + -0x3c08;\n      }\n      puVar1[7] = param_2;\n      iVar2 = *(int *)(param_5 + 0x24);\n      param_1 = puVar1;\n    }\n    else {\n      iVar2 = *(int *)(param_5 + 0x24);\n      param_1 = puVar1;\n    }\n  }" { (expression_statement "puVar1 = (undefined4 *)*param_1;" (assignment_expression "puVar1 = (undefined4 *)*param_1" identifier = (cast_expression "(undefined4 *)*param_1" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_1" * identifier))) ;) (if_statement "if (((puVar1 == (undefined4 *)0x0) || (puVar1[1] != 0xc)) || (puVar1[6] != param_5)) {\n      puVar1 = (undefined4 *)stat_alloc(0x20);\n      *puVar1 = *param_1;\n      *param_1 = puVar1;\n      puVar1[1] = 0xc;\n      puVar1[6] = param_5;\n      if (param_2 == (undefined *)0x0) {\n        param_2 = PTR_DAT_001db8f8 + -0x3c08;\n      }\n      puVar1[7] = param_2;\n      iVar2 = *(int *)(param_5 + 0x24);\n      param_1 = puVar1;\n    }\n    else {\n      iVar2 = *(int *)(param_5 + 0x24);\n      param_1 = puVar1;\n    }" if (parenthesized_expression "(((puVar1 == (undefined4 *)0x0) || (puVar1[1] != 0xc)) || (puVar1[6] != param_5))" ( (binary_expression "((puVar1 == (undefined4 *)0x0) || (puVar1[1] != 0xc)) || (puVar1[6] != param_5)" (parenthesized_expression "((puVar1 == (undefined4 *)0x0) || (puVar1[1] != 0xc))" ( (binary_expression "(puVar1 == (undefined4 *)0x0) || (puVar1[1] != 0xc)" (parenthesized_expression "(puVar1 == (undefined4 *)0x0)" ( (binary_expression "puVar1 == (undefined4 *)0x0" identifier == (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) || (parenthesized_expression "(puVar1[1] != 0xc)" ( (binary_expression "puVar1[1] != 0xc" (subscript_expression "puVar1[1]" identifier [ number_literal ]) != number_literal) ))) )) || (parenthesized_expression "(puVar1[6] != param_5)" ( (binary_expression "puVar1[6] != param_5" (subscript_expression "puVar1[6]" identifier [ number_literal ]) != identifier) ))) )) (compound_statement "{\n      puVar1 = (undefined4 *)stat_alloc(0x20);\n      *puVar1 = *param_1;\n      *param_1 = puVar1;\n      puVar1[1] = 0xc;\n      puVar1[6] = param_5;\n      if (param_2 == (undefined *)0x0) {\n        param_2 = PTR_DAT_001db8f8 + -0x3c08;\n      }\n      puVar1[7] = param_2;\n      iVar2 = *(int *)(param_5 + 0x24);\n      param_1 = puVar1;\n    }" { (expression_statement "puVar1 = (undefined4 *)stat_alloc(0x20);" (assignment_expression "puVar1 = (undefined4 *)stat_alloc(0x20)" identifier = (cast_expression "(undefined4 *)stat_alloc(0x20)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "stat_alloc(0x20)" identifier (argument_list "(0x20)" ( number_literal ))))) ;) (expression_statement "*puVar1 = *param_1;" (assignment_expression "*puVar1 = *param_1" (pointer_expression "*puVar1" * identifier) = (pointer_expression "*param_1" * identifier)) ;) (expression_statement "*param_1 = puVar1;" (assignment_expression "*param_1 = puVar1" (pointer_expression "*param_1" * identifier) = identifier) ;) (expression_statement "puVar1[1] = 0xc;" (assignment_expression "puVar1[1] = 0xc" (subscript_expression "puVar1[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar1[6] = param_5;" (assignment_expression "puVar1[6] = param_5" (subscript_expression "puVar1[6]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (param_2 == (undefined *)0x0) {\n        param_2 = PTR_DAT_001db8f8 + -0x3c08;\n      }" if (parenthesized_expression "(param_2 == (undefined *)0x0)" ( (binary_expression "param_2 == (undefined *)0x0" identifier == (cast_expression "(undefined *)0x0" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        param_2 = PTR_DAT_001db8f8 + -0x3c08;\n      }" { (expression_statement "param_2 = PTR_DAT_001db8f8 + -0x3c08;" (assignment_expression "param_2 = PTR_DAT_001db8f8 + -0x3c08" identifier = (binary_expression "PTR_DAT_001db8f8 + -0x3c08" identifier + number_literal)) ;) })) (expression_statement "puVar1[7] = param_2;" (assignment_expression "puVar1[7] = param_2" (subscript_expression "puVar1[7]" identifier [ number_literal ]) = identifier) ;) (expression_statement "iVar2 = *(int *)(param_5 + 0x24);" (assignment_expression "iVar2 = *(int *)(param_5 + 0x24)" identifier = (pointer_expression "*(int *)(param_5 + 0x24)" * (cast_expression "(int *)(param_5 + 0x24)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_5 + 0x24)" ( (binary_expression "param_5 + 0x24" identifier + number_literal) ))))) ;) (expression_statement "param_1 = puVar1;" (assignment_expression "param_1 = puVar1" identifier = identifier) ;) }) (else_clause "else {\n      iVar2 = *(int *)(param_5 + 0x24);\n      param_1 = puVar1;\n    }" else (compound_statement "{\n      iVar2 = *(int *)(param_5 + 0x24);\n      param_1 = puVar1;\n    }" { (expression_statement "iVar2 = *(int *)(param_5 + 0x24);" (assignment_expression "iVar2 = *(int *)(param_5 + 0x24)" identifier = (pointer_expression "*(int *)(param_5 + 0x24)" * (cast_expression "(int *)(param_5 + 0x24)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_5 + 0x24)" ( (binary_expression "param_5 + 0x24" identifier + number_literal) ))))) ;) (expression_statement "param_1 = puVar1;" (assignment_expression "param_1 = puVar1" identifier = identifier) ;) }))) }) (else_clause "else {\n    iVar2 = *(int *)(param_5 + 0x24);\n  }" else (compound_statement "{\n    iVar2 = *(int *)(param_5 + 0x24);\n  }" { (expression_statement "iVar2 = *(int *)(param_5 + 0x24);" (assignment_expression "iVar2 = *(int *)(param_5 + 0x24)" identifier = (pointer_expression "*(int *)(param_5 + 0x24)" * (cast_expression "(int *)(param_5 + 0x24)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_5 + 0x24)" ( (binary_expression "param_5 + 0x24" identifier + number_literal) ))))) ;) }))) (expression_statement "iVar7 = *(int *)(param_5 + 0x20);" (assignment_expression "iVar7 = *(int *)(param_5 + 0x20)" identifier = (pointer_expression "*(int *)(param_5 + 0x20)" * (cast_expression "(int *)(param_5 + 0x20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_5 + 0x20)" ( (binary_expression "param_5 + 0x20" identifier + number_literal) ))))) ;) (expression_statement "uVar5 = *(uint *)(param_5 + 0x14);" (assignment_expression "uVar5 = *(uint *)(param_5 + 0x14)" identifier = (pointer_expression "*(uint *)(param_5 + 0x14)" * (cast_expression "(uint *)(param_5 + 0x14)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_5 + 0x14)" ( (binary_expression "param_5 + 0x14" identifier + number_literal) ))))) ;) (expression_statement "param_1[4] = param_3;" (assignment_expression "param_1[4] = param_3" (subscript_expression "param_1[4]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_1[5] = param_4;" (assignment_expression "param_1[5] = param_4" (subscript_expression "param_1[5]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_1[3] = param_8 - iVar2;" (assignment_expression "param_1[3] = param_8 - iVar2" (subscript_expression "param_1[3]" identifier [ number_literal ]) = (binary_expression "param_8 - iVar2" identifier - identifier)) ;) (expression_statement "param_1[2] = (param_7 - iVar7) - (uint)(param_8 < param_8 - iVar2);" (assignment_expression "param_1[2] = (param_7 - iVar7) - (uint)(param_8 < param_8 - iVar2)" (subscript_expression "param_1[2]" identifier [ number_literal ]) = (binary_expression "(param_7 - iVar7) - (uint)(param_8 < param_8 - iVar2)" (parenthesized_expression "(param_7 - iVar7)" ( (binary_expression "param_7 - iVar7" identifier - identifier) )) - (call_expression "(uint)(param_8 < param_8 - iVar2)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(param_8 < param_8 - iVar2)" ( (binary_expression "param_8 < param_8 - iVar2" identifier < (binary_expression "param_8 - iVar2" identifier - identifier)) ))))) ;) (if_statement "if ((uVar5 & 0x800) == 0) {\n    uVar6 = *(uint *)(PTR_DAT_001db8f8 + -0x3ba4);\n    uVar8 = param_3 >> (uVar6 & 0x1f);\n    uVar9 = uVar8;\n    uVar5 = (param_3 << 1) << (~uVar6 & 0x1f) | param_4 >> (uVar6 & 0x1f);\n    if ((uVar6 & 0x20) != 0) {\n      uVar9 = 0;\n      uVar5 = uVar8;\n    }\n    param_8 = uVar5 + param_8;\n    uVar3 = param_8 - iVar2;\n    uVar4 = uVar3 << (uVar6 & 0x1f);\n    uVar8 = uVar4;\n    uVar5 = (((uint)(param_8 < uVar5) + uVar9 + param_7) - iVar7) - (uint)(param_8 < uVar3) <<\n            (uVar6 & 0x1f) | (uVar3 >> 1) >> (~uVar6 & 0x1f);\n    if ((uVar6 & 0x20) != 0) {\n      uVar8 = 0;\n      uVar5 = uVar4;\n    }\n    *(uint *)(param_5 + 0x30) = uVar5;\n    *(uint *)(param_5 + 0x34) = uVar8;\n  }" if (parenthesized_expression "((uVar5 & 0x800) == 0)" ( (binary_expression "(uVar5 & 0x800) == 0" (parenthesized_expression "(uVar5 & 0x800)" ( (binary_expression "uVar5 & 0x800" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n    uVar6 = *(uint *)(PTR_DAT_001db8f8 + -0x3ba4);\n    uVar8 = param_3 >> (uVar6 & 0x1f);\n    uVar9 = uVar8;\n    uVar5 = (param_3 << 1) << (~uVar6 & 0x1f) | param_4 >> (uVar6 & 0x1f);\n    if ((uVar6 & 0x20) != 0) {\n      uVar9 = 0;\n      uVar5 = uVar8;\n    }\n    param_8 = uVar5 + param_8;\n    uVar3 = param_8 - iVar2;\n    uVar4 = uVar3 << (uVar6 & 0x1f);\n    uVar8 = uVar4;\n    uVar5 = (((uint)(param_8 < uVar5) + uVar9 + param_7) - iVar7) - (uint)(param_8 < uVar3) <<\n            (uVar6 & 0x1f) | (uVar3 >> 1) >> (~uVar6 & 0x1f);\n    if ((uVar6 & 0x20) != 0) {\n      uVar8 = 0;\n      uVar5 = uVar4;\n    }\n    *(uint *)(param_5 + 0x30) = uVar5;\n    *(uint *)(param_5 + 0x34) = uVar8;\n  }" { (expression_statement "uVar6 = *(uint *)(PTR_DAT_001db8f8 + -0x3ba4);" (assignment_expression "uVar6 = *(uint *)(PTR_DAT_001db8f8 + -0x3ba4)" identifier = (pointer_expression "*(uint *)(PTR_DAT_001db8f8 + -0x3ba4)" * (cast_expression "(uint *)(PTR_DAT_001db8f8 + -0x3ba4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_001db8f8 + -0x3ba4)" ( (binary_expression "PTR_DAT_001db8f8 + -0x3ba4" identifier + number_literal) ))))) ;) (expression_statement "uVar8 = param_3 >> (uVar6 & 0x1f);" (assignment_expression "uVar8 = param_3 >> (uVar6 & 0x1f)" identifier = (binary_expression "param_3 >> (uVar6 & 0x1f)" identifier >> (parenthesized_expression "(uVar6 & 0x1f)" ( (binary_expression "uVar6 & 0x1f" identifier & number_literal) )))) ;) (expression_statement "uVar9 = uVar8;" (assignment_expression "uVar9 = uVar8" identifier = identifier) ;) (expression_statement "uVar5 = (param_3 << 1) << (~uVar6 & 0x1f) | param_4 >> (uVar6 & 0x1f);" (assignment_expression "uVar5 = (param_3 << 1) << (~uVar6 & 0x1f) | param_4 >> (uVar6 & 0x1f)" identifier = (binary_expression "(param_3 << 1) << (~uVar6 & 0x1f) | param_4 >> (uVar6 & 0x1f)" (binary_expression "(param_3 << 1) << (~uVar6 & 0x1f)" (parenthesized_expression "(param_3 << 1)" ( (binary_expression "param_3 << 1" identifier << number_literal) )) << (parenthesized_expression "(~uVar6 & 0x1f)" ( (binary_expression "~uVar6 & 0x1f" (unary_expression "~uVar6" ~ identifier) & number_literal) ))) | (binary_expression "param_4 >> (uVar6 & 0x1f)" identifier >> (parenthesized_expression "(uVar6 & 0x1f)" ( (binary_expression "uVar6 & 0x1f" identifier & number_literal) ))))) ;) (if_statement "if ((uVar6 & 0x20) != 0) {\n      uVar9 = 0;\n      uVar5 = uVar8;\n    }" if (parenthesized_expression "((uVar6 & 0x20) != 0)" ( (binary_expression "(uVar6 & 0x20) != 0" (parenthesized_expression "(uVar6 & 0x20)" ( (binary_expression "uVar6 & 0x20" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n      uVar9 = 0;\n      uVar5 = uVar8;\n    }" { (expression_statement "uVar9 = 0;" (assignment_expression "uVar9 = 0" identifier = number_literal) ;) (expression_statement "uVar5 = uVar8;" (assignment_expression "uVar5 = uVar8" identifier = identifier) ;) })) (expression_statement "param_8 = uVar5 + param_8;" (assignment_expression "param_8 = uVar5 + param_8" identifier = (binary_expression "uVar5 + param_8" identifier + identifier)) ;) (expression_statement "uVar3 = param_8 - iVar2;" (assignment_expression "uVar3 = param_8 - iVar2" identifier = (binary_expression "param_8 - iVar2" identifier - identifier)) ;) (expression_statement "uVar4 = uVar3 << (uVar6 & 0x1f);" (assignment_expression "uVar4 = uVar3 << (uVar6 & 0x1f)" identifier = (binary_expression "uVar3 << (uVar6 & 0x1f)" identifier << (parenthesized_expression "(uVar6 & 0x1f)" ( (binary_expression "uVar6 & 0x1f" identifier & number_literal) )))) ;) (expression_statement "uVar8 = uVar4;" (assignment_expression "uVar8 = uVar4" identifier = identifier) ;) (expression_statement "uVar5 = (((uint)(param_8 < uVar5) + uVar9 + param_7) - iVar7) - (uint)(param_8 < uVar3) <<\n            (uVar6 & 0x1f) | (uVar3 >> 1) >> (~uVar6 & 0x1f);" (assignment_expression "uVar5 = (((uint)(param_8 < uVar5) + uVar9 + param_7) - iVar7) - (uint)(param_8 < uVar3) <<\n            (uVar6 & 0x1f) | (uVar3 >> 1) >> (~uVar6 & 0x1f)" identifier = (binary_expression "(((uint)(param_8 < uVar5) + uVar9 + param_7) - iVar7) - (uint)(param_8 < uVar3) <<\n            (uVar6 & 0x1f) | (uVar3 >> 1) >> (~uVar6 & 0x1f)" (binary_expression "(((uint)(param_8 < uVar5) + uVar9 + param_7) - iVar7) - (uint)(param_8 < uVar3) <<\n            (uVar6 & 0x1f)" (binary_expression "(((uint)(param_8 < uVar5) + uVar9 + param_7) - iVar7) - (uint)(param_8 < uVar3)" (parenthesized_expression "(((uint)(param_8 < uVar5) + uVar9 + param_7) - iVar7)" ( (binary_expression "((uint)(param_8 < uVar5) + uVar9 + param_7) - iVar7" (parenthesized_expression "((uint)(param_8 < uVar5) + uVar9 + param_7)" ( (binary_expression "(uint)(param_8 < uVar5) + uVar9 + param_7" (binary_expression "(uint)(param_8 < uVar5) + uVar9" (call_expression "(uint)(param_8 < uVar5)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(param_8 < uVar5)" ( (binary_expression "param_8 < uVar5" identifier < identifier) ))) + identifier) + identifier) )) - identifier) )) - (call_expression "(uint)(param_8 < uVar3)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(param_8 < uVar3)" ( (binary_expression "param_8 < uVar3" identifier < identifier) )))) << (parenthesized_expression "(uVar6 & 0x1f)" ( (binary_expression "uVar6 & 0x1f" identifier & number_literal) ))) | (binary_expression "(uVar3 >> 1) >> (~uVar6 & 0x1f)" (parenthesized_expression "(uVar3 >> 1)" ( (binary_expression "uVar3 >> 1" identifier >> number_literal) )) >> (parenthesized_expression "(~uVar6 & 0x1f)" ( (binary_expression "~uVar6 & 0x1f" (unary_expression "~uVar6" ~ identifier) & number_literal) ))))) ;) (if_statement "if ((uVar6 & 0x20) != 0) {\n      uVar8 = 0;\n      uVar5 = uVar4;\n    }" if (parenthesized_expression "((uVar6 & 0x20) != 0)" ( (binary_expression "(uVar6 & 0x20) != 0" (parenthesized_expression "(uVar6 & 0x20)" ( (binary_expression "uVar6 & 0x20" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n      uVar8 = 0;\n      uVar5 = uVar4;\n    }" { (expression_statement "uVar8 = 0;" (assignment_expression "uVar8 = 0" identifier = number_literal) ;) (expression_statement "uVar5 = uVar4;" (assignment_expression "uVar5 = uVar4" identifier = identifier) ;) })) (expression_statement "*(uint *)(param_5 + 0x30) = uVar5;" (assignment_expression "*(uint *)(param_5 + 0x30) = uVar5" (pointer_expression "*(uint *)(param_5 + 0x30)" * (cast_expression "(uint *)(param_5 + 0x30)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_5 + 0x30)" ( (binary_expression "param_5 + 0x30" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(uint *)(param_5 + 0x34) = uVar8;" (assignment_expression "*(uint *)(param_5 + 0x34) = uVar8" (pointer_expression "*(uint *)(param_5 + 0x34)" * (cast_expression "(uint *)(param_5 + 0x34)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_5 + 0x34)" ( (binary_expression "param_5 + 0x34" identifier + number_literal) )))) = identifier) ;) })) (return_statement "return;" return ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE 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 TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) )) || (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ))) )) || (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) != LIT) ))) )) || (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) != IDENT) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) || (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) != LIT) ))) )) || (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) != IDENT) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( LIT ))))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) })) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }))) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) }))) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression IDENT - IDENT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression (parenthesized_expression ( (binary_expression IDENT - IDENT) )) - (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT < (binary_expression IDENT - IDENT)) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT >> (parenthesized_expression ( (binary_expression IDENT & LIT) )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (parenthesized_expression ( (binary_expression IDENT << LIT) )) << (parenthesized_expression ( (binary_expression (unary_expression ~ IDENT) & LIT) ))) | (binary_expression IDENT >> (parenthesized_expression ( (binary_expression IDENT & LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT << (parenthesized_expression ( (binary_expression IDENT & LIT) )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT < IDENT) ))) + IDENT) + IDENT) )) - IDENT) )) - (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT < IDENT) )))) << (parenthesized_expression ( (binary_expression IDENT & LIT) ))) | (binary_expression (parenthesized_expression ( (binary_expression IDENT >> LIT) )) >> (parenthesized_expression ( (binary_expression (unary_expression ~ IDENT) & LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) })) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) })) (return_statement return ;) })))
(function_definition "void FUN_0002687c(undefined4 *param_1,undefined *param_2,uint param_3,uint param_4,int param_5,\n                 undefined4 param_6,int param_7,uint param_8)\n\n{\n  undefined4 *puVar1;\n  int iVar2;\n  uint uVar3;\n  uint uVar4;\n  uint uVar5;\n  uint uVar6;\n  int iVar7;\n  uint uVar8;\n  uint uVar9;\n  \n  if ((((param_1 == (undefined4 *)(PTR_DAT_001db8f8 + -0x3b70)) || (param_1 == (undefined4 *)0x0))\n      || (param_1[1] != 0xc)) || (param_1[6] != param_5)) {\n    puVar1 = (undefined4 *)*param_1;\n    if (((puVar1 == (undefined4 *)0x0) || (puVar1[1] != 0xc)) || (puVar1[6] != param_5)) {\n      puVar1 = (undefined4 *)stat_alloc(0x20);\n      *puVar1 = *param_1;\n      *param_1 = puVar1;\n      puVar1[1] = 0xc;\n      puVar1[6] = param_5;\n      if (param_2 == (undefined *)0x0) {\n        param_2 = PTR_DAT_001db8f8 + -0x3c08;\n      }\n      puVar1[7] = param_2;\n      iVar2 = *(int *)(param_5 + 0x24);\n      param_1 = puVar1;\n    }\n    else {\n      iVar2 = *(int *)(param_5 + 0x24);\n      param_1 = puVar1;\n    }\n  }\n  else {\n    iVar2 = *(int *)(param_5 + 0x24);\n  }\n  iVar7 = *(int *)(param_5 + 0x20);\n  uVar5 = *(uint *)(param_5 + 0x14);\n  param_1[4] = param_3;\n  param_1[5] = param_4;\n  param_1[3] = param_8 - iVar2;\n  param_1[2] = (param_7 - iVar7) - (uint)(param_8 < param_8 - iVar2);\n  if ((uVar5 & 0x800) == 0) {\n    uVar6 = *(uint *)(PTR_DAT_001db8f8 + -0x3ba4);\n    uVar8 = param_3 >> (uVar6 & 0x1f);\n    uVar9 = uVar8;\n    uVar5 = (param_3 << 1) << (~uVar6 & 0x1f) | param_4 >> (uVar6 & 0x1f);\n    if ((uVar6 & 0x20) != 0) {\n      uVar9 = 0;\n      uVar5 = uVar8;\n    }\n    param_8 = uVar5 + param_8;\n    uVar3 = param_8 - iVar2;\n    uVar4 = uVar3 << (uVar6 & 0x1f);\n    uVar8 = uVar4;\n    uVar5 = (((uint)(param_8 < uVar5) + uVar9 + param_7) - iVar7) - (uint)(param_8 < uVar3) <<\n            (uVar6 & 0x1f) | (uVar3 >> 1) >> (~uVar6 & 0x1f);\n    if ((uVar6 & 0x20) != 0) {\n      uVar8 = 0;\n      uVar5 = uVar4;\n    }\n    *(uint *)(param_5 + 0x30) = uVar5;\n    *(uint *)(param_5 + 0x34) = uVar8;\n  }\n  return;\n}" (primitive_type "void") (function_declarator "FUN_0002687c(undefined4 *param_1,undefined *param_2,uint param_3,uint param_4,int param_5,\n                 undefined4 param_6,int param_7,uint param_8)" (identifier "FUN_0002687c") (parameter_list "(undefined4 *param_1,undefined *param_2,uint param_3,uint param_4,int param_5,\n                 undefined4 param_6,int param_7,uint param_8)" (( "(") (parameter_declaration "undefined4 *param_1" (type_identifier "undefined4") (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) (, ",") (parameter_declaration "undefined *param_2" (type_identifier "undefined") (pointer_declarator "*param_2" (* "*") (identifier "param_2"))) (, ",") (parameter_declaration "uint param_3" (type_identifier "uint") (identifier "param_3")) (, ",") (parameter_declaration "uint param_4" (type_identifier "uint") (identifier "param_4")) (, ",") (parameter_declaration "int param_5" (primitive_type "int") (identifier "param_5")) (, ",") (parameter_declaration "undefined4 param_6" (type_identifier "undefined4") (identifier "param_6")) (, ",") (parameter_declaration "int param_7" (primitive_type "int") (identifier "param_7")) (, ",") (parameter_declaration "uint param_8" (type_identifier "uint") (identifier "param_8")) () ")"))) (compound_statement "{\n  undefined4 *puVar1;\n  int iVar2;\n  uint uVar3;\n  uint uVar4;\n  uint uVar5;\n  uint uVar6;\n  int iVar7;\n  uint uVar8;\n  uint uVar9;\n  \n  if ((((param_1 == (undefined4 *)(PTR_DAT_001db8f8 + -0x3b70)) || (param_1 == (undefined4 *)0x0))\n      || (param_1[1] != 0xc)) || (param_1[6] != param_5)) {\n    puVar1 = (undefined4 *)*param_1;\n    if (((puVar1 == (undefined4 *)0x0) || (puVar1[1] != 0xc)) || (puVar1[6] != param_5)) {\n      puVar1 = (undefined4 *)stat_alloc(0x20);\n      *puVar1 = *param_1;\n      *param_1 = puVar1;\n      puVar1[1] = 0xc;\n      puVar1[6] = param_5;\n      if (param_2 == (undefined *)0x0) {\n        param_2 = PTR_DAT_001db8f8 + -0x3c08;\n      }\n      puVar1[7] = param_2;\n      iVar2 = *(int *)(param_5 + 0x24);\n      param_1 = puVar1;\n    }\n    else {\n      iVar2 = *(int *)(param_5 + 0x24);\n      param_1 = puVar1;\n    }\n  }\n  else {\n    iVar2 = *(int *)(param_5 + 0x24);\n  }\n  iVar7 = *(int *)(param_5 + 0x20);\n  uVar5 = *(uint *)(param_5 + 0x14);\n  param_1[4] = param_3;\n  param_1[5] = param_4;\n  param_1[3] = param_8 - iVar2;\n  param_1[2] = (param_7 - iVar7) - (uint)(param_8 < param_8 - iVar2);\n  if ((uVar5 & 0x800) == 0) {\n    uVar6 = *(uint *)(PTR_DAT_001db8f8 + -0x3ba4);\n    uVar8 = param_3 >> (uVar6 & 0x1f);\n    uVar9 = uVar8;\n    uVar5 = (param_3 << 1) << (~uVar6 & 0x1f) | param_4 >> (uVar6 & 0x1f);\n    if ((uVar6 & 0x20) != 0) {\n      uVar9 = 0;\n      uVar5 = uVar8;\n    }\n    param_8 = uVar5 + param_8;\n    uVar3 = param_8 - iVar2;\n    uVar4 = uVar3 << (uVar6 & 0x1f);\n    uVar8 = uVar4;\n    uVar5 = (((uint)(param_8 < uVar5) + uVar9 + param_7) - iVar7) - (uint)(param_8 < uVar3) <<\n            (uVar6 & 0x1f) | (uVar3 >> 1) >> (~uVar6 & 0x1f);\n    if ((uVar6 & 0x20) != 0) {\n      uVar8 = 0;\n      uVar5 = uVar4;\n    }\n    *(uint *)(param_5 + 0x30) = uVar5;\n    *(uint *)(param_5 + 0x34) = uVar8;\n  }\n  return;\n}" ({ "{") (declaration "undefined4 *puVar1;" (type_identifier "undefined4") (pointer_declarator "*puVar1" (* "*") (identifier "puVar1")) (; ";")) (declaration "int iVar2;" (primitive_type "int") (identifier "iVar2") (; ";")) (declaration "uint uVar3;" (type_identifier "uint") (identifier "uVar3") (; ";")) (declaration "uint uVar4;" (type_identifier "uint") (identifier "uVar4") (; ";")) (declaration "uint uVar5;" (type_identifier "uint") (identifier "uVar5") (; ";")) (declaration "uint uVar6;" (type_identifier "uint") (identifier "uVar6") (; ";")) (declaration "int iVar7;" (primitive_type "int") (identifier "iVar7") (; ";")) (declaration "uint uVar8;" (type_identifier "uint") (identifier "uVar8") (; ";")) (declaration "uint uVar9;" (type_identifier "uint") (identifier "uVar9") (; ";")) (if_statement "if ((((param_1 == (undefined4 *)(PTR_DAT_001db8f8 + -0x3b70)) || (param_1 == (undefined4 *)0x0))\n      || (param_1[1] != 0xc)) || (param_1[6] != param_5)) {\n    puVar1 = (undefined4 *)*param_1;\n    if (((puVar1 == (undefined4 *)0x0) || (puVar1[1] != 0xc)) || (puVar1[6] != param_5)) {\n      puVar1 = (undefined4 *)stat_alloc(0x20);\n      *puVar1 = *param_1;\n      *param_1 = puVar1;\n      puVar1[1] = 0xc;\n      puVar1[6] = param_5;\n      if (param_2 == (undefined *)0x0) {\n        param_2 = PTR_DAT_001db8f8 + -0x3c08;\n      }\n      puVar1[7] = param_2;\n      iVar2 = *(int *)(param_5 + 0x24);\n      param_1 = puVar1;\n    }\n    else {\n      iVar2 = *(int *)(param_5 + 0x24);\n      param_1 = puVar1;\n    }\n  }\n  else {\n    iVar2 = *(int *)(param_5 + 0x24);\n  }" (if "if") (parenthesized_expression "((((param_1 == (undefined4 *)(PTR_DAT_001db8f8 + -0x3b70)) || (param_1 == (undefined4 *)0x0))\n      || (param_1[1] != 0xc)) || (param_1[6] != param_5))" (( "(") (binary_expression "(((param_1 == (undefined4 *)(PTR_DAT_001db8f8 + -0x3b70)) || (param_1 == (undefined4 *)0x0))\n      || (param_1[1] != 0xc)) || (param_1[6] != param_5)" (parenthesized_expression "(((param_1 == (undefined4 *)(PTR_DAT_001db8f8 + -0x3b70)) || (param_1 == (undefined4 *)0x0))\n      || (param_1[1] != 0xc))" (( "(") (binary_expression "((param_1 == (undefined4 *)(PTR_DAT_001db8f8 + -0x3b70)) || (param_1 == (undefined4 *)0x0))\n      || (param_1[1] != 0xc)" (parenthesized_expression "((param_1 == (undefined4 *)(PTR_DAT_001db8f8 + -0x3b70)) || (param_1 == (undefined4 *)0x0))" (( "(") (binary_expression "(param_1 == (undefined4 *)(PTR_DAT_001db8f8 + -0x3b70)) || (param_1 == (undefined4 *)0x0)" (parenthesized_expression "(param_1 == (undefined4 *)(PTR_DAT_001db8f8 + -0x3b70))" (( "(") (binary_expression "param_1 == (undefined4 *)(PTR_DAT_001db8f8 + -0x3b70)" (identifier "param_1") (== "==") (cast_expression "(undefined4 *)(PTR_DAT_001db8f8 + -0x3b70)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_DAT_001db8f8 + -0x3b70)" (( "(") (binary_expression "PTR_DAT_001db8f8 + -0x3b70" (identifier "PTR_DAT_001db8f8") (+ "+") (number_literal "-0x3b70")) () ")")))) () ")")) (|| "||") (parenthesized_expression "(param_1 == (undefined4 *)0x0)" (( "(") (binary_expression "param_1 == (undefined4 *)0x0" (identifier "param_1") (== "==") (cast_expression "(undefined4 *)0x0" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")"))) () ")")) (|| "||") (parenthesized_expression "(param_1[1] != 0xc)" (( "(") (binary_expression "param_1[1] != 0xc" (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]")) (!= "!=") (number_literal "0xc")) () ")"))) () ")")) (|| "||") (parenthesized_expression "(param_1[6] != param_5)" (( "(") (binary_expression "param_1[6] != param_5" (subscript_expression "param_1[6]" (identifier "param_1") ([ "[") (number_literal "6") (] "]")) (!= "!=") (identifier "param_5")) () ")"))) () ")")) (compound_statement "{\n    puVar1 = (undefined4 *)*param_1;\n    if (((puVar1 == (undefined4 *)0x0) || (puVar1[1] != 0xc)) || (puVar1[6] != param_5)) {\n      puVar1 = (undefined4 *)stat_alloc(0x20);\n      *puVar1 = *param_1;\n      *param_1 = puVar1;\n      puVar1[1] = 0xc;\n      puVar1[6] = param_5;\n      if (param_2 == (undefined *)0x0) {\n        param_2 = PTR_DAT_001db8f8 + -0x3c08;\n      }\n      puVar1[7] = param_2;\n      iVar2 = *(int *)(param_5 + 0x24);\n      param_1 = puVar1;\n    }\n    else {\n      iVar2 = *(int *)(param_5 + 0x24);\n      param_1 = puVar1;\n    }\n  }" ({ "{") (expression_statement "puVar1 = (undefined4 *)*param_1;" (assignment_expression "puVar1 = (undefined4 *)*param_1" (identifier "puVar1") (= "=") (cast_expression "(undefined4 *)*param_1" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*param_1" (* "*") (identifier "param_1")))) (; ";")) (if_statement "if (((puVar1 == (undefined4 *)0x0) || (puVar1[1] != 0xc)) || (puVar1[6] != param_5)) {\n      puVar1 = (undefined4 *)stat_alloc(0x20);\n      *puVar1 = *param_1;\n      *param_1 = puVar1;\n      puVar1[1] = 0xc;\n      puVar1[6] = param_5;\n      if (param_2 == (undefined *)0x0) {\n        param_2 = PTR_DAT_001db8f8 + -0x3c08;\n      }\n      puVar1[7] = param_2;\n      iVar2 = *(int *)(param_5 + 0x24);\n      param_1 = puVar1;\n    }\n    else {\n      iVar2 = *(int *)(param_5 + 0x24);\n      param_1 = puVar1;\n    }" (if "if") (parenthesized_expression "(((puVar1 == (undefined4 *)0x0) || (puVar1[1] != 0xc)) || (puVar1[6] != param_5))" (( "(") (binary_expression "((puVar1 == (undefined4 *)0x0) || (puVar1[1] != 0xc)) || (puVar1[6] != param_5)" (parenthesized_expression "((puVar1 == (undefined4 *)0x0) || (puVar1[1] != 0xc))" (( "(") (binary_expression "(puVar1 == (undefined4 *)0x0) || (puVar1[1] != 0xc)" (parenthesized_expression "(puVar1 == (undefined4 *)0x0)" (( "(") (binary_expression "puVar1 == (undefined4 *)0x0" (identifier "puVar1") (== "==") (cast_expression "(undefined4 *)0x0" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (|| "||") (parenthesized_expression "(puVar1[1] != 0xc)" (( "(") (binary_expression "puVar1[1] != 0xc" (subscript_expression "puVar1[1]" (identifier "puVar1") ([ "[") (number_literal "1") (] "]")) (!= "!=") (number_literal "0xc")) () ")"))) () ")")) (|| "||") (parenthesized_expression "(puVar1[6] != param_5)" (( "(") (binary_expression "puVar1[6] != param_5" (subscript_expression "puVar1[6]" (identifier "puVar1") ([ "[") (number_literal "6") (] "]")) (!= "!=") (identifier "param_5")) () ")"))) () ")")) (compound_statement "{\n      puVar1 = (undefined4 *)stat_alloc(0x20);\n      *puVar1 = *param_1;\n      *param_1 = puVar1;\n      puVar1[1] = 0xc;\n      puVar1[6] = param_5;\n      if (param_2 == (undefined *)0x0) {\n        param_2 = PTR_DAT_001db8f8 + -0x3c08;\n      }\n      puVar1[7] = param_2;\n      iVar2 = *(int *)(param_5 + 0x24);\n      param_1 = puVar1;\n    }" ({ "{") (expression_statement "puVar1 = (undefined4 *)stat_alloc(0x20);" (assignment_expression "puVar1 = (undefined4 *)stat_alloc(0x20)" (identifier "puVar1") (= "=") (cast_expression "(undefined4 *)stat_alloc(0x20)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "stat_alloc(0x20)" (identifier "stat_alloc") (argument_list "(0x20)" (( "(") (number_literal "0x20") () ")"))))) (; ";")) (expression_statement "*puVar1 = *param_1;" (assignment_expression "*puVar1 = *param_1" (pointer_expression "*puVar1" (* "*") (identifier "puVar1")) (= "=") (pointer_expression "*param_1" (* "*") (identifier "param_1"))) (; ";")) (expression_statement "*param_1 = puVar1;" (assignment_expression "*param_1 = puVar1" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (= "=") (identifier "puVar1")) (; ";")) (expression_statement "puVar1[1] = 0xc;" (assignment_expression "puVar1[1] = 0xc" (subscript_expression "puVar1[1]" (identifier "puVar1") ([ "[") (number_literal "1") (] "]")) (= "=") (number_literal "0xc")) (; ";")) (expression_statement "puVar1[6] = param_5;" (assignment_expression "puVar1[6] = param_5" (subscript_expression "puVar1[6]" (identifier "puVar1") ([ "[") (number_literal "6") (] "]")) (= "=") (identifier "param_5")) (; ";")) (if_statement "if (param_2 == (undefined *)0x0) {\n        param_2 = PTR_DAT_001db8f8 + -0x3c08;\n      }" (if "if") (parenthesized_expression "(param_2 == (undefined *)0x0)" (( "(") (binary_expression "param_2 == (undefined *)0x0" (identifier "param_2") (== "==") (cast_expression "(undefined *)0x0" (( "(") (type_descriptor "undefined *" (type_identifier "undefined") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n        param_2 = PTR_DAT_001db8f8 + -0x3c08;\n      }" ({ "{") (expression_statement "param_2 = PTR_DAT_001db8f8 + -0x3c08;" (assignment_expression "param_2 = PTR_DAT_001db8f8 + -0x3c08" (identifier "param_2") (= "=") (binary_expression "PTR_DAT_001db8f8 + -0x3c08" (identifier "PTR_DAT_001db8f8") (+ "+") (number_literal "-0x3c08"))) (; ";")) (} "}"))) (expression_statement "puVar1[7] = param_2;" (assignment_expression "puVar1[7] = param_2" (subscript_expression "puVar1[7]" (identifier "puVar1") ([ "[") (number_literal "7") (] "]")) (= "=") (identifier "param_2")) (; ";")) (expression_statement "iVar2 = *(int *)(param_5 + 0x24);" (assignment_expression "iVar2 = *(int *)(param_5 + 0x24)" (identifier "iVar2") (= "=") (pointer_expression "*(int *)(param_5 + 0x24)" (* "*") (cast_expression "(int *)(param_5 + 0x24)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_5 + 0x24)" (( "(") (binary_expression "param_5 + 0x24" (identifier "param_5") (+ "+") (number_literal "0x24")) () ")"))))) (; ";")) (expression_statement "param_1 = puVar1;" (assignment_expression "param_1 = puVar1" (identifier "param_1") (= "=") (identifier "puVar1")) (; ";")) (} "}")) (else_clause "else {\n      iVar2 = *(int *)(param_5 + 0x24);\n      param_1 = puVar1;\n    }" (else "else") (compound_statement "{\n      iVar2 = *(int *)(param_5 + 0x24);\n      param_1 = puVar1;\n    }" ({ "{") (expression_statement "iVar2 = *(int *)(param_5 + 0x24);" (assignment_expression "iVar2 = *(int *)(param_5 + 0x24)" (identifier "iVar2") (= "=") (pointer_expression "*(int *)(param_5 + 0x24)" (* "*") (cast_expression "(int *)(param_5 + 0x24)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_5 + 0x24)" (( "(") (binary_expression "param_5 + 0x24" (identifier "param_5") (+ "+") (number_literal "0x24")) () ")"))))) (; ";")) (expression_statement "param_1 = puVar1;" (assignment_expression "param_1 = puVar1" (identifier "param_1") (= "=") (identifier "puVar1")) (; ";")) (} "}")))) (} "}")) (else_clause "else {\n    iVar2 = *(int *)(param_5 + 0x24);\n  }" (else "else") (compound_statement "{\n    iVar2 = *(int *)(param_5 + 0x24);\n  }" ({ "{") (expression_statement "iVar2 = *(int *)(param_5 + 0x24);" (assignment_expression "iVar2 = *(int *)(param_5 + 0x24)" (identifier "iVar2") (= "=") (pointer_expression "*(int *)(param_5 + 0x24)" (* "*") (cast_expression "(int *)(param_5 + 0x24)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_5 + 0x24)" (( "(") (binary_expression "param_5 + 0x24" (identifier "param_5") (+ "+") (number_literal "0x24")) () ")"))))) (; ";")) (} "}")))) (expression_statement "iVar7 = *(int *)(param_5 + 0x20);" (assignment_expression "iVar7 = *(int *)(param_5 + 0x20)" (identifier "iVar7") (= "=") (pointer_expression "*(int *)(param_5 + 0x20)" (* "*") (cast_expression "(int *)(param_5 + 0x20)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_5 + 0x20)" (( "(") (binary_expression "param_5 + 0x20" (identifier "param_5") (+ "+") (number_literal "0x20")) () ")"))))) (; ";")) (expression_statement "uVar5 = *(uint *)(param_5 + 0x14);" (assignment_expression "uVar5 = *(uint *)(param_5 + 0x14)" (identifier "uVar5") (= "=") (pointer_expression "*(uint *)(param_5 + 0x14)" (* "*") (cast_expression "(uint *)(param_5 + 0x14)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_5 + 0x14)" (( "(") (binary_expression "param_5 + 0x14" (identifier "param_5") (+ "+") (number_literal "0x14")) () ")"))))) (; ";")) (expression_statement "param_1[4] = param_3;" (assignment_expression "param_1[4] = param_3" (subscript_expression "param_1[4]" (identifier "param_1") ([ "[") (number_literal "4") (] "]")) (= "=") (identifier "param_3")) (; ";")) (expression_statement "param_1[5] = param_4;" (assignment_expression "param_1[5] = param_4" (subscript_expression "param_1[5]" (identifier "param_1") ([ "[") (number_literal "5") (] "]")) (= "=") (identifier "param_4")) (; ";")) (expression_statement "param_1[3] = param_8 - iVar2;" (assignment_expression "param_1[3] = param_8 - iVar2" (subscript_expression "param_1[3]" (identifier "param_1") ([ "[") (number_literal "3") (] "]")) (= "=") (binary_expression "param_8 - iVar2" (identifier "param_8") (- "-") (identifier "iVar2"))) (; ";")) (expression_statement "param_1[2] = (param_7 - iVar7) - (uint)(param_8 < param_8 - iVar2);" (assignment_expression "param_1[2] = (param_7 - iVar7) - (uint)(param_8 < param_8 - iVar2)" (subscript_expression "param_1[2]" (identifier "param_1") ([ "[") (number_literal "2") (] "]")) (= "=") (binary_expression "(param_7 - iVar7) - (uint)(param_8 < param_8 - iVar2)" (parenthesized_expression "(param_7 - iVar7)" (( "(") (binary_expression "param_7 - iVar7" (identifier "param_7") (- "-") (identifier "iVar7")) () ")")) (- "-") (call_expression "(uint)(param_8 < param_8 - iVar2)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(param_8 < param_8 - iVar2)" (( "(") (binary_expression "param_8 < param_8 - iVar2" (identifier "param_8") (< "<") (binary_expression "param_8 - iVar2" (identifier "param_8") (- "-") (identifier "iVar2"))) () ")"))))) (; ";")) (if_statement "if ((uVar5 & 0x800) == 0) {\n    uVar6 = *(uint *)(PTR_DAT_001db8f8 + -0x3ba4);\n    uVar8 = param_3 >> (uVar6 & 0x1f);\n    uVar9 = uVar8;\n    uVar5 = (param_3 << 1) << (~uVar6 & 0x1f) | param_4 >> (uVar6 & 0x1f);\n    if ((uVar6 & 0x20) != 0) {\n      uVar9 = 0;\n      uVar5 = uVar8;\n    }\n    param_8 = uVar5 + param_8;\n    uVar3 = param_8 - iVar2;\n    uVar4 = uVar3 << (uVar6 & 0x1f);\n    uVar8 = uVar4;\n    uVar5 = (((uint)(param_8 < uVar5) + uVar9 + param_7) - iVar7) - (uint)(param_8 < uVar3) <<\n            (uVar6 & 0x1f) | (uVar3 >> 1) >> (~uVar6 & 0x1f);\n    if ((uVar6 & 0x20) != 0) {\n      uVar8 = 0;\n      uVar5 = uVar4;\n    }\n    *(uint *)(param_5 + 0x30) = uVar5;\n    *(uint *)(param_5 + 0x34) = uVar8;\n  }" (if "if") (parenthesized_expression "((uVar5 & 0x800) == 0)" (( "(") (binary_expression "(uVar5 & 0x800) == 0" (parenthesized_expression "(uVar5 & 0x800)" (( "(") (binary_expression "uVar5 & 0x800" (identifier "uVar5") (& "&") (number_literal "0x800")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    uVar6 = *(uint *)(PTR_DAT_001db8f8 + -0x3ba4);\n    uVar8 = param_3 >> (uVar6 & 0x1f);\n    uVar9 = uVar8;\n    uVar5 = (param_3 << 1) << (~uVar6 & 0x1f) | param_4 >> (uVar6 & 0x1f);\n    if ((uVar6 & 0x20) != 0) {\n      uVar9 = 0;\n      uVar5 = uVar8;\n    }\n    param_8 = uVar5 + param_8;\n    uVar3 = param_8 - iVar2;\n    uVar4 = uVar3 << (uVar6 & 0x1f);\n    uVar8 = uVar4;\n    uVar5 = (((uint)(param_8 < uVar5) + uVar9 + param_7) - iVar7) - (uint)(param_8 < uVar3) <<\n            (uVar6 & 0x1f) | (uVar3 >> 1) >> (~uVar6 & 0x1f);\n    if ((uVar6 & 0x20) != 0) {\n      uVar8 = 0;\n      uVar5 = uVar4;\n    }\n    *(uint *)(param_5 + 0x30) = uVar5;\n    *(uint *)(param_5 + 0x34) = uVar8;\n  }" ({ "{") (expression_statement "uVar6 = *(uint *)(PTR_DAT_001db8f8 + -0x3ba4);" (assignment_expression "uVar6 = *(uint *)(PTR_DAT_001db8f8 + -0x3ba4)" (identifier "uVar6") (= "=") (pointer_expression "*(uint *)(PTR_DAT_001db8f8 + -0x3ba4)" (* "*") (cast_expression "(uint *)(PTR_DAT_001db8f8 + -0x3ba4)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_DAT_001db8f8 + -0x3ba4)" (( "(") (binary_expression "PTR_DAT_001db8f8 + -0x3ba4" (identifier "PTR_DAT_001db8f8") (+ "+") (number_literal "-0x3ba4")) () ")"))))) (; ";")) (expression_statement "uVar8 = param_3 >> (uVar6 & 0x1f);" (assignment_expression "uVar8 = param_3 >> (uVar6 & 0x1f)" (identifier "uVar8") (= "=") (binary_expression "param_3 >> (uVar6 & 0x1f)" (identifier "param_3") (>> ">>") (parenthesized_expression "(uVar6 & 0x1f)" (( "(") (binary_expression "uVar6 & 0x1f" (identifier "uVar6") (& "&") (number_literal "0x1f")) () ")")))) (; ";")) (expression_statement "uVar9 = uVar8;" (assignment_expression "uVar9 = uVar8" (identifier "uVar9") (= "=") (identifier "uVar8")) (; ";")) (expression_statement "uVar5 = (param_3 << 1) << (~uVar6 & 0x1f) | param_4 >> (uVar6 & 0x1f);" (assignment_expression "uVar5 = (param_3 << 1) << (~uVar6 & 0x1f) | param_4 >> (uVar6 & 0x1f)" (identifier "uVar5") (= "=") (binary_expression "(param_3 << 1) << (~uVar6 & 0x1f) | param_4 >> (uVar6 & 0x1f)" (binary_expression "(param_3 << 1) << (~uVar6 & 0x1f)" (parenthesized_expression "(param_3 << 1)" (( "(") (binary_expression "param_3 << 1" (identifier "param_3") (<< "<<") (number_literal "1")) () ")")) (<< "<<") (parenthesized_expression "(~uVar6 & 0x1f)" (( "(") (binary_expression "~uVar6 & 0x1f" (unary_expression "~uVar6" (~ "~") (identifier "uVar6")) (& "&") (number_literal "0x1f")) () ")"))) (| "|") (binary_expression "param_4 >> (uVar6 & 0x1f)" (identifier "param_4") (>> ">>") (parenthesized_expression "(uVar6 & 0x1f)" (( "(") (binary_expression "uVar6 & 0x1f" (identifier "uVar6") (& "&") (number_literal "0x1f")) () ")"))))) (; ";")) (if_statement "if ((uVar6 & 0x20) != 0) {\n      uVar9 = 0;\n      uVar5 = uVar8;\n    }" (if "if") (parenthesized_expression "((uVar6 & 0x20) != 0)" (( "(") (binary_expression "(uVar6 & 0x20) != 0" (parenthesized_expression "(uVar6 & 0x20)" (( "(") (binary_expression "uVar6 & 0x20" (identifier "uVar6") (& "&") (number_literal "0x20")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      uVar9 = 0;\n      uVar5 = uVar8;\n    }" ({ "{") (expression_statement "uVar9 = 0;" (assignment_expression "uVar9 = 0" (identifier "uVar9") (= "=") (number_literal "0")) (; ";")) (expression_statement "uVar5 = uVar8;" (assignment_expression "uVar5 = uVar8" (identifier "uVar5") (= "=") (identifier "uVar8")) (; ";")) (} "}"))) (expression_statement "param_8 = uVar5 + param_8;" (assignment_expression "param_8 = uVar5 + param_8" (identifier "param_8") (= "=") (binary_expression "uVar5 + param_8" (identifier "uVar5") (+ "+") (identifier "param_8"))) (; ";")) (expression_statement "uVar3 = param_8 - iVar2;" (assignment_expression "uVar3 = param_8 - iVar2" (identifier "uVar3") (= "=") (binary_expression "param_8 - iVar2" (identifier "param_8") (- "-") (identifier "iVar2"))) (; ";")) (expression_statement "uVar4 = uVar3 << (uVar6 & 0x1f);" (assignment_expression "uVar4 = uVar3 << (uVar6 & 0x1f)" (identifier "uVar4") (= "=") (binary_expression "uVar3 << (uVar6 & 0x1f)" (identifier "uVar3") (<< "<<") (parenthesized_expression "(uVar6 & 0x1f)" (( "(") (binary_expression "uVar6 & 0x1f" (identifier "uVar6") (& "&") (number_literal "0x1f")) () ")")))) (; ";")) (expression_statement "uVar8 = uVar4;" (assignment_expression "uVar8 = uVar4" (identifier "uVar8") (= "=") (identifier "uVar4")) (; ";")) (expression_statement "uVar5 = (((uint)(param_8 < uVar5) + uVar9 + param_7) - iVar7) - (uint)(param_8 < uVar3) <<\n            (uVar6 & 0x1f) | (uVar3 >> 1) >> (~uVar6 & 0x1f);" (assignment_expression "uVar5 = (((uint)(param_8 < uVar5) + uVar9 + param_7) - iVar7) - (uint)(param_8 < uVar3) <<\n            (uVar6 & 0x1f) | (uVar3 >> 1) >> (~uVar6 & 0x1f)" (identifier "uVar5") (= "=") (binary_expression "(((uint)(param_8 < uVar5) + uVar9 + param_7) - iVar7) - (uint)(param_8 < uVar3) <<\n            (uVar6 & 0x1f) | (uVar3 >> 1) >> (~uVar6 & 0x1f)" (binary_expression "(((uint)(param_8 < uVar5) + uVar9 + param_7) - iVar7) - (uint)(param_8 < uVar3) <<\n            (uVar6 & 0x1f)" (binary_expression "(((uint)(param_8 < uVar5) + uVar9 + param_7) - iVar7) - (uint)(param_8 < uVar3)" (parenthesized_expression "(((uint)(param_8 < uVar5) + uVar9 + param_7) - iVar7)" (( "(") (binary_expression "((uint)(param_8 < uVar5) + uVar9 + param_7) - iVar7" (parenthesized_expression "((uint)(param_8 < uVar5) + uVar9 + param_7)" (( "(") (binary_expression "(uint)(param_8 < uVar5) + uVar9 + param_7" (binary_expression "(uint)(param_8 < uVar5) + uVar9" (call_expression "(uint)(param_8 < uVar5)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(param_8 < uVar5)" (( "(") (binary_expression "param_8 < uVar5" (identifier "param_8") (< "<") (identifier "uVar5")) () ")"))) (+ "+") (identifier "uVar9")) (+ "+") (identifier "param_7")) () ")")) (- "-") (identifier "iVar7")) () ")")) (- "-") (call_expression "(uint)(param_8 < uVar3)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(param_8 < uVar3)" (( "(") (binary_expression "param_8 < uVar3" (identifier "param_8") (< "<") (identifier "uVar3")) () ")")))) (<< "<<") (parenthesized_expression "(uVar6 & 0x1f)" (( "(") (binary_expression "uVar6 & 0x1f" (identifier "uVar6") (& "&") (number_literal "0x1f")) () ")"))) (| "|") (binary_expression "(uVar3 >> 1) >> (~uVar6 & 0x1f)" (parenthesized_expression "(uVar3 >> 1)" (( "(") (binary_expression "uVar3 >> 1" (identifier "uVar3") (>> ">>") (number_literal "1")) () ")")) (>> ">>") (parenthesized_expression "(~uVar6 & 0x1f)" (( "(") (binary_expression "~uVar6 & 0x1f" (unary_expression "~uVar6" (~ "~") (identifier "uVar6")) (& "&") (number_literal "0x1f")) () ")"))))) (; ";")) (if_statement "if ((uVar6 & 0x20) != 0) {\n      uVar8 = 0;\n      uVar5 = uVar4;\n    }" (if "if") (parenthesized_expression "((uVar6 & 0x20) != 0)" (( "(") (binary_expression "(uVar6 & 0x20) != 0" (parenthesized_expression "(uVar6 & 0x20)" (( "(") (binary_expression "uVar6 & 0x20" (identifier "uVar6") (& "&") (number_literal "0x20")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      uVar8 = 0;\n      uVar5 = uVar4;\n    }" ({ "{") (expression_statement "uVar8 = 0;" (assignment_expression "uVar8 = 0" (identifier "uVar8") (= "=") (number_literal "0")) (; ";")) (expression_statement "uVar5 = uVar4;" (assignment_expression "uVar5 = uVar4" (identifier "uVar5") (= "=") (identifier "uVar4")) (; ";")) (} "}"))) (expression_statement "*(uint *)(param_5 + 0x30) = uVar5;" (assignment_expression "*(uint *)(param_5 + 0x30) = uVar5" (pointer_expression "*(uint *)(param_5 + 0x30)" (* "*") (cast_expression "(uint *)(param_5 + 0x30)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_5 + 0x30)" (( "(") (binary_expression "param_5 + 0x30" (identifier "param_5") (+ "+") (number_literal "0x30")) () ")")))) (= "=") (identifier "uVar5")) (; ";")) (expression_statement "*(uint *)(param_5 + 0x34) = uVar8;" (assignment_expression "*(uint *)(param_5 + 0x34) = uVar8" (pointer_expression "*(uint *)(param_5 + 0x34)" (* "*") (cast_expression "(uint *)(param_5 + 0x34)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_5 + 0x34)" (( "(") (binary_expression "param_5 + 0x34" (identifier "param_5") (+ "+") (number_literal "0x34")) () ")")))) (= "=") (identifier "uVar8")) (; ";")) (} "}"))) (return_statement "return;" (return "return") (; ";")) (} "}")))
(translation_unit (function_definition type: (primitive_type) declarator: (function_declarator declarator: (identifier) parameters: (parameter_list (parameter_declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (parameter_declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (parameter_declaration type: (type_identifier) 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)) (parameter_declaration type: (type_identifier) declarator: (identifier)))) body: (compound_statement (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) right: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))))) right: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))))) right: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (pointer_expression argument: (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) right: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))))) right: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (call_expression function: (identifier) arguments: (argument_list (number_literal)))))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (identifier))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (identifier)))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (binary_expression left: (identifier) right: (identifier)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) right: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier)))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (parenthesized_expression (binary_expression left: (unary_expression argument: (identifier)) right: (number_literal)))) right: (binary_expression left: (identifier) right: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (binary_expression left: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (binary_expression left: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (identifier) right: (identifier)))) right: (identifier)) right: (identifier))) right: (identifier))) right: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (identifier) right: (identifier))))) right: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))) right: (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (parenthesized_expression (binary_expression left: (unary_expression argument: (identifier)) right: (number_literal))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (identifier))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))))) (return_statement))))

void MASKED(undefined4 *param_1,undefined *param_2,uint param_3,uint param_4,int param_5,
                 undefined4 param_6,int param_7,uint param_8)

{
  undefined4 *puVar1;
  int iVar2;
  uint uVar3;
  uint uVar4;
  uint uVar5;
  uint uVar6;
  int iVar7;
  uint uVar8;
  uint uVar9;
  
  if ((((param_1 == (undefined4 *)(PTR_DAT_001db8f8 + -0x3b70)) || (param_1 == (undefined4 *)0x0))
      || (param_1[1] != 0xc)) || (param_1[6] != param_5)) {
    puVar1 = (undefined4 *)*param_1;
    if (((puVar1 == (undefined4 *)0x0) || (puVar1[1] != 0xc)) || (puVar1[6] != param_5)) {
      puVar1 = (undefined4 *)stat_alloc(0x20);
      *puVar1 = *param_1;
      *param_1 = puVar1;
      puVar1[1] = 0xc;
      puVar1[6] = param_5;
      if (param_2 == (undefined *)0x0) {
        param_2 = PTR_DAT_001db8f8 + -0x3c08;
      }
      puVar1[7] = param_2;
      iVar2 = *(int *)(param_5 + 0x24);
      param_1 = puVar1;
    }
    else {
      iVar2 = *(int *)(param_5 + 0x24);
      param_1 = puVar1;
    }
  }
  else {
    iVar2 = *(int *)(param_5 + 0x24);
  }
  iVar7 = *(int *)(param_5 + 0x20);
  uVar5 = *(uint *)(param_5 + 0x14);
  param_1[4] = param_3;
  param_1[5] = param_4;
  param_1[3] = param_8 - iVar2;
  param_1[2] = (param_7 - iVar7) - (uint)(param_8 < param_8 - iVar2);
  if ((uVar5 & 0x800) == 0) {
    uVar6 = *(uint *)(PTR_DAT_001db8f8 + -0x3ba4);
    uVar8 = param_3 >> (uVar6 & 0x1f);
    uVar9 = uVar8;
    uVar5 = (param_3 << 1) << (~uVar6 & 0x1f) | param_4 >> (uVar6 & 0x1f);
    if ((uVar6 & 0x20) != 0) {
      uVar9 = 0;
      uVar5 = uVar8;
    }
    param_8 = uVar5 + param_8;
    uVar3 = param_8 - iVar2;
    uVar4 = uVar3 << (uVar6 & 0x1f);
    uVar8 = uVar4;
    uVar5 = (((uint)(param_8 < uVar5) + uVar9 + param_7) - iVar7) - (uint)(param_8 < uVar3) <<
            (uVar6 & 0x1f) | (uVar3 >> 1) >> (~uVar6 & 0x1f);
    if ((uVar6 & 0x20) != 0) {
      uVar8 = 0;
      uVar5 = uVar4;
    }
    *(uint *)(param_5 + 0x30) = uVar5;
    *(uint *)(param_5 + 0x34) = uVar8;
  }
  return;
}

