
/* WARNING: Enum "<anon>": Some values do not have unique names */

Status anon_unknown.dwarf_91258a::Arm_relocate_functions<true>::thm_jump19
                 (uchar *view,Arm_relobj<true> *object,Symbol_value<32> *psymval,Arm_address address
                 ,Arm_address thumb_bit)

{
  Merged_symbol_value<32> *this;
  uint uVar1;
  _Hash_node_base *p_Var2;
  ushort uVar3;
  ushort uVar4;
  Valtype *wv;
  ushort *puVar5;
  Elf_Addr EVar6;
  char *format;
  int extraout_ECX;
  uint uVar7;
  ushort uVar8;
  __bucket_type p_Var9;
  ushort uVar10;
  uint uVar11;
  _Hash_node_base *p_Var12;
  int iVar13;
  int unaff_EDI;
  undefined8 uVar14;
  _Hash_node_base *local_3c;
  __bucket_type local_38;
  
  uVar14 = __x86_get_pc_thunk_di();
  puVar5 = (ushort *)uVar14;
  uVar4 = *puVar5 << 8;
  uVar8 = uVar4 | *puVar5 >> 8;
  uVar3 = puVar5[1] << 8;
  uVar10 = uVar3 | puVar5[1] >> 8;
  uVar11 = (uVar8 & 0x3f | uVar10 >> 4 & 0x80 | uVar8 >> 2 & 0x100 | uVar10 >> 7 & 0x40) << 0xc |
           (uVar10 & 0x7ff) * 2;
  if ((uVar4 & 0x400) != 0) {
    uVar11 = uVar11 - 0x200000;
  }
  if ((char)*(byte *)(extraout_ECX + 0xb) < '\0') {
    iVar13 = uVar11 + *(int *)(extraout_ECX + 0xc);
LAB_00112d6f:
    uVar11 = iVar13 - (int)view;
  }
  else {
    if ((*(byte *)(extraout_ECX + 0xb) & 8) == 0) {
                    /* WARNING: Subroutine does not return */
      gold::do_gold_unreachable((char *)(unaff_EDI + 0x33a72e),0x6ab,(char *)(unaff_EDI + 0x357a35))
      ;
    }
    this = *(Merged_symbol_value<32> **)(extraout_ECX + 0xc);
    local_3c = (_Hash_node_base *)this->input_value_;
    if (uVar11 < 0xffffff00) {
      local_3c = (_Hash_node_base *)((int)&local_3c->_M_nxt + uVar11);
      uVar11 = 0;
    }
    uVar1 = (this->output_addresses_)._M_h._M_bucket_count;
    uVar7 = (uint)local_3c % uVar1;
    local_38 = (this->output_addresses_)._M_h._M_buckets[uVar7];
    if (local_38 != (__bucket_type)0x0) {
      p_Var12 = local_38->_M_nxt[1]._M_nxt;
      p_Var2 = local_38->_M_nxt;
      while (p_Var9 = p_Var2, p_Var12 != local_3c) {
        p_Var2 = p_Var9->_M_nxt;
        if ((p_Var2 == (_Hash_node_base *)0x0) ||
           (p_Var12 = p_Var2[1]._M_nxt, local_38 = p_Var9, uVar7 != (uint)p_Var12 % uVar1))
        goto LAB_00112e0c;
      }
      if (local_38->_M_nxt != (_Hash_node_base *)0x0) {
        iVar13 = (int)&(local_38->_M_nxt[2]._M_nxt)->_M_nxt + uVar11;
        goto LAB_00112d6f;
      }
    }
LAB_00112e0c:
    EVar6 = gold::Merged_symbol_value<32>::value_from_output_section
                      (this,(Relobj *)((ulonglong)uVar14 >> 0x20),
                       *(uint *)(extraout_ECX + 8) & 0x7ffffff,(Elf_Addr)local_3c);
    uVar11 = (uVar11 + EVar6) - (int)view;
  }
  if (object == (Arm_relobj<true> *)0x0) {
    format = (char *)gettext(&UNK_00358c61 + unaff_EDI);
    gold::gold_error(format);
    return STATUS_BAD_RELOC;
  }
  uVar4 = (ushort)((uVar11 >> 0x1f) << 10) | (ushort)(uVar11 >> 0xc) & 0x3f | uVar8 & 0xfbc0;
  *puVar5 = uVar4 << 8 | uVar4 >> 8;
  uVar4 = (ushort)(uVar11 >> 1) & 0x7ff;
  puVar5[1] = uVar4 << 8 |
              (ushort)(uVar3 & 0xd000 | uVar4 | (ushort)((uVar11 >> 0x12 & 1) << 0xd) |
                      (ushort)((uVar11 >> 0x13 & 1) << 0xb)) >> 8;
  return (uint)(0x1fffff < uVar11 + 0x100000);
}



bool FUN_00112c50(int param_1,int param_2)

{
  uint *puVar1;
  int *piVar2;
  ushort uVar3;
  ushort uVar4;
  ushort *puVar5;
  undefined4 uVar6;
  int extraout_ECX;
  uint uVar7;
  ushort uVar8;
  int *piVar9;
  ushort uVar10;
  uint uVar11;
  uint uVar12;
  int iVar13;
  int unaff_EDI;
  undefined8 uVar14;
  uint local_3c;
  int *local_38;
  
  uVar14 = FUN_00074f0a();
  puVar5 = (ushort *)uVar14;
  uVar4 = *puVar5 << 8;
  uVar8 = uVar4 | *puVar5 >> 8;
  uVar3 = puVar5[1] << 8;
  uVar10 = uVar3 | puVar5[1] >> 8;
  uVar11 = (uVar8 & 0x3f | uVar10 >> 4 & 0x80 | uVar8 >> 2 & 0x100 | uVar10 >> 7 & 0x40) << 0xc |
           (uVar10 & 0x7ff) * 2;
  if ((uVar4 & 0x400) != 0) {
    uVar11 = uVar11 - 0x200000;
  }
  if ((char)*(byte *)(extraout_ECX + 0xb) < '\0') {
    iVar13 = uVar11 + *(int *)(extraout_ECX + 0xc);
LAB_00112d6f:
    uVar11 = iVar13 - param_1;
  }
  else {
    if ((*(byte *)(extraout_ECX + 0xb) & 8) == 0) {
                    /* WARNING: Subroutine does not return */
      FUN_002446e0(unaff_EDI + 0x33a72e,0x6ab,unaff_EDI + 0x357a35,(uint)(uVar10 >> 7));
    }
    puVar1 = *(uint **)(extraout_ECX + 0xc);
    local_3c = *puVar1;
    if (uVar11 < 0xffffff00) {
      local_3c = local_3c + uVar11;
      uVar11 = 0;
    }
    uVar7 = local_3c % puVar1[3];
    local_38 = *(int **)(puVar1[2] + uVar7 * 4);
    if (local_38 != (int *)0x0) {
      uVar12 = ((int *)*local_38)[1];
      piVar2 = (int *)*local_38;
      while (piVar9 = piVar2, uVar12 != local_3c) {
        piVar2 = (int *)*piVar9;
        if ((piVar2 == (int *)0x0) ||
           (uVar12 = piVar2[1], local_38 = piVar9, uVar7 != uVar12 % puVar1[3])) goto LAB_00112e0c;
      }
      if (*local_38 != 0) {
        iVar13 = uVar11 + *(int *)(*local_38 + 8);
        goto LAB_00112d6f;
      }
    }
LAB_00112e0c:
    iVar13 = FUN_00318cf0(puVar1,(int)((ulonglong)uVar14 >> 0x20),
                          *(uint *)(extraout_ECX + 8) & 0x7ffffff,local_3c);
    uVar11 = (uVar11 + iVar13) - param_1;
  }
  if (param_2 == 0) {
    uVar6 = gettext(unaff_EDI + 0x358c61);
    FUN_0023b810(uVar6);
    return (bool)2;
  }
  uVar4 = (ushort)((uVar11 >> 0x1f) << 10) | (ushort)(uVar11 >> 0xc) & 0x3f | uVar8 & 0xfbc0;
  *puVar5 = uVar4 << 8 | uVar4 >> 8;
  uVar4 = (ushort)(uVar11 >> 1) & 0x7ff;
  puVar5[1] = uVar4 << 8 |
              (ushort)(uVar3 & 0xd000 | uVar4 | (ushort)((uVar11 >> 0x12 & 1) << 0xd) |
                      (ushort)((uVar11 >> 0x13 & 1) << 0xb)) >> 8;
  return 0x1fffff < uVar11 + 0x100000;
}


PUSH EBP
PUSH EDI
CALL 0x00074f0a
ADD EDI,0x4d73a9
PUSH ESI
PUSH EBX
SUB ESP,0x2c
MOV dword ptr [ESP + 0x1c],EDX
MOV dword ptr [ESP + 0x18],EDI
MOV EDI,EAX
MOVZX EAX,word ptr [EAX]
MOV EBX,EAX
MOVZX EAX,word ptr [EDI + 0x2]
ROL BX,0x8
MOV EBP,EAX
MOV EAX,EBX
MOV word ptr [ESP + 0x8],BX
ROL BP,0x8
SHR EAX,0x2
AND EAX,0x100
MOVZX EDX,BP
MOV word ptr [ESP + 0xa],BP
MOV ESI,EAX
MOV EAX,EDX
SHR EDX,0x7
SHR EAX,0x4
AND EAX,0x80
OR EAX,ESI
MOV ESI,EBX
AND ESI,0x3f
OR ESI,EAX
MOV EAX,EDX
AND EAX,0x40
OR ESI,EAX
MOV EAX,EBP
AND EAX,0x7ff
SHL ESI,0xc
ADD EAX,EAX
OR ESI,EAX
LEA EAX,[ESI + 0xffe00000]
TEST ESI,0x100000
CMOVNZ ESI,EAX
MOVZX EAX,byte ptr [ECX + 0xb]
TEST AL,AL
JS 0x00112e70
TEST AL,0x8
JZ 0x00112e78
MOV EBP,dword ptr [ECX + 0xc]
MOV EAX,dword ptr [EBP]
MOV dword ptr [ESP],EAX
CMP ESI,0xfffffeff
JBE 0x00112df8
MOV EAX,dword ptr [EBP + 0xc]
XOR EDX,EDX
MOV EBX,EAX
MOV dword ptr [ESP + 0xc],EAX
MOV EAX,dword ptr [ESP]
DIV EBX
MOV EAX,dword ptr [EBP + 0x8]
MOV EAX,dword ptr [EAX + EDX*0x4]
MOV dword ptr [ESP + 0x10],EDX
MOV dword ptr [ESP + 0x4],EAX
TEST EAX,EAX
JZ 0x00112e0c
MOV EBX,dword ptr [EAX]
MOV dword ptr [ESP + 0x14],ESI
MOV EAX,dword ptr [EBX + 0x4]
MOV ESI,EAX
JMP 0x00112d55
MOV EAX,dword ptr [EBX]
TEST EAX,EAX
JZ 0x00112e08
MOV ESI,dword ptr [EAX + 0x4]
MOV dword ptr [ESP + 0x4],EBX
XOR EDX,EDX
MOV EBX,EAX
MOV EAX,ESI
DIV dword ptr [ESP + 0xc]
CMP dword ptr [ESP + 0x10],EDX
JNZ 0x00112e08
CMP ESI,dword ptr [ESP]
JNZ 0x00112d30
MOV EAX,dword ptr [ESP + 0x4]
MOV ESI,dword ptr [ESP + 0x14]
MOV EAX,dword ptr [EAX]
TEST EAX,EAX
JZ 0x00112e0c
ADD ESI,dword ptr [EAX + 0x8]
MOV EAX,dword ptr [ESP + 0x44]
SUB ESI,dword ptr [ESP + 0x40]
TEST EAX,EAX
JZ 0x00112e3b
MOV EAX,ESI
MOV EDX,ESI
SHR EAX,0x1f
SHR EDX,0xc
AND EDX,0x3f
SHL EAX,0xa
OR EAX,EDX
MOVZX EDX,word ptr [ESP + 0x8]
AND DX,0xfbc0
OR EAX,EDX
ROL AX,0x8
MOV word ptr [EDI],AX
MOV EAX,ESI
SHR EAX,0x1
AND EAX,0x7ff
MOV EDX,EAX
MOVZX EAX,word ptr [ESP + 0xa]
AND AX,0xd000
OR EAX,EDX
MOV EDX,ESI
SHR EDX,0x12
AND EDX,0x1
SHL EDX,0xd
OR EAX,EDX
MOV EDX,ESI
ADD ESI,0x100000
SHR EDX,0x13
AND EDX,0x1
SHL EDX,0xb
OR EAX,EDX
ROL AX,0x8
MOV word ptr [EDI + 0x2],AX
XOR EAX,EAX
CMP ESI,0x1fffff
SETA AL
ADD ESP,0x2c
POP EBX
POP ESI
POP EDI
POP EBP
RET
ADD EAX,ESI
XOR ESI,ESI
MOV dword ptr [ESP],EAX
JMP 0x00112cfb
MOV ESI,dword ptr [ESP + 0x14]
MOV EAX,dword ptr [ECX + 0x8]
PUSH dword ptr [ESP]
AND EAX,0x7ffffff
PUSH EAX
PUSH dword ptr [ESP + 0x24]
PUSH EBP
MOV EBX,dword ptr [ESP + 0x28]
CALL 0x00318cf0
ADD ESP,0x10
ADD ESI,EAX
MOV EAX,dword ptr [ESP + 0x44]
SUB ESI,dword ptr [ESP + 0x40]
TEST EAX,EAX
JNZ 0x00112d7f
SUB ESP,0xc
MOV EDI,dword ptr [ESP + 0x24]
LEA EAX,[EDI + 0xffe818b8]
MOV EBX,EDI
PUSH EAX
CALL 0x00039440
MOV dword ptr [ESP],EAX
CALL 0x0023b810
ADD ESP,0x10
MOV EAX,0x2
ADD ESP,0x2c
POP EBX
POP ESI
POP EDI
POP EBP
RET
ADD ESI,dword ptr [ECX + 0xc]
JMP 0x00112d6f
PUSH EDX
MOV EBX,dword ptr [ESP + 0x1c]
LEA EAX,[EBX + 0xffe8068c]
PUSH EAX
LEA EAX,[EBX + 0xffe63385]
PUSH 0x6ab
PUSH EAX
CALL 0x002446e0
(translation_unit "bool FUN_00112c50(int param_1,int param_2)\n\n{\n  uint *puVar1;\n  int *piVar2;\n  ushort uVar3;\n  ushort uVar4;\n  ushort *puVar5;\n  undefined4 uVar6;\n  int extraout_ECX;\n  uint uVar7;\n  ushort uVar8;\n  int *piVar9;\n  ushort uVar10;\n  uint uVar11;\n  uint uVar12;\n  int iVar13;\n  int unaff_EDI;\n  undefined8 uVar14;\n  uint local_3c;\n  int *local_38;\n  \n  uVar14 = FUN_00074f0a();\n  puVar5 = (ushort *)uVar14;\n  uVar4 = *puVar5 << 8;\n  uVar8 = uVar4 | *puVar5 >> 8;\n  uVar3 = puVar5[1] << 8;\n  uVar10 = uVar3 | puVar5[1] >> 8;\n  uVar11 = (uVar8 & 0x3f | uVar10 >> 4 & 0x80 | uVar8 >> 2 & 0x100 | uVar10 >> 7 & 0x40) << 0xc |\n           (uVar10 & 0x7ff) * 2;\n  if ((uVar4 & 0x400) != 0) {\n    uVar11 = uVar11 - 0x200000;\n  }\n  if ((char)*(byte *)(extraout_ECX + 0xb) < '\0') {\n    iVar13 = uVar11 + *(int *)(extraout_ECX + 0xc);\nLAB_00112d6f:\n    uVar11 = iVar13 - param_1;\n  }\n  else {\n    if ((*(byte *)(extraout_ECX + 0xb) & 8) == 0) {\n                    /* WARNING: Subroutine does not return */\n      FUN_002446e0(unaff_EDI + 0x33a72e,0x6ab,unaff_EDI + 0x357a35,(uint)(uVar10 >> 7));\n    }\n    puVar1 = *(uint **)(extraout_ECX + 0xc);\n    local_3c = *puVar1;\n    if (uVar11 < 0xffffff00) {\n      local_3c = local_3c + uVar11;\n      uVar11 = 0;\n    }\n    uVar7 = local_3c % puVar1[3];\n    local_38 = *(int **)(puVar1[2] + uVar7 * 4);\n    if (local_38 != (int *)0x0) {\n      uVar12 = ((int *)*local_38)[1];\n      piVar2 = (int *)*local_38;\n      while (piVar9 = piVar2, uVar12 != local_3c) {\n        piVar2 = (int *)*piVar9;\n        if ((piVar2 == (int *)0x0) ||\n           (uVar12 = piVar2[1], local_38 = piVar9, uVar7 != uVar12 % puVar1[3])) goto LAB_00112e0c;\n      }\n      if (*local_38 != 0) {\n        iVar13 = uVar11 + *(int *)(*local_38 + 8);\n        goto LAB_00112d6f;\n      }\n    }\nLAB_00112e0c:\n    iVar13 = FUN_00318cf0(puVar1,(int)((ulonglong)uVar14 >> 0x20),\n                          *(uint *)(extraout_ECX + 8) & 0x7ffffff,local_3c);\n    uVar11 = (uVar11 + iVar13) - param_1;\n  }\n  if (param_2 == 0) {\n    uVar6 = gettext(unaff_EDI + 0x358c61);\n    FUN_0023b810(uVar6);\n    return (bool)2;\n  }\n  uVar4 = (ushort)((uVar11 >> 0x1f) << 10) | (ushort)(uVar11 >> 0xc) & 0x3f | uVar8 & 0xfbc0;\n  *puVar5 = uVar4 << 8 | uVar4 >> 8;\n  uVar4 = (ushort)(uVar11 >> 1) & 0x7ff;\n  puVar5[1] = uVar4 << 8 |\n              (ushort)(uVar3 & 0xd000 | uVar4 | (ushort)((uVar11 >> 0x12 & 1) << 0xd) |\n                      (ushort)((uVar11 >> 0x13 & 1) << 0xb)) >> 8;\n  return 0x1fffff < uVar11 + 0x100000;\n}\n\n" (function_definition "bool FUN_00112c50(int param_1,int param_2)\n\n{\n  uint *puVar1;\n  int *piVar2;\n  ushort uVar3;\n  ushort uVar4;\n  ushort *puVar5;\n  undefined4 uVar6;\n  int extraout_ECX;\n  uint uVar7;\n  ushort uVar8;\n  int *piVar9;\n  ushort uVar10;\n  uint uVar11;\n  uint uVar12;\n  int iVar13;\n  int unaff_EDI;\n  undefined8 uVar14;\n  uint local_3c;\n  int *local_38;\n  \n  uVar14 = FUN_00074f0a();\n  puVar5 = (ushort *)uVar14;\n  uVar4 = *puVar5 << 8;\n  uVar8 = uVar4 | *puVar5 >> 8;\n  uVar3 = puVar5[1] << 8;\n  uVar10 = uVar3 | puVar5[1] >> 8;\n  uVar11 = (uVar8 & 0x3f | uVar10 >> 4 & 0x80 | uVar8 >> 2 & 0x100 | uVar10 >> 7 & 0x40) << 0xc |\n           (uVar10 & 0x7ff) * 2;\n  if ((uVar4 & 0x400) != 0) {\n    uVar11 = uVar11 - 0x200000;\n  }\n  if ((char)*(byte *)(extraout_ECX + 0xb) < '\0') {\n    iVar13 = uVar11 + *(int *)(extraout_ECX + 0xc);\nLAB_00112d6f:\n    uVar11 = iVar13 - param_1;\n  }\n  else {\n    if ((*(byte *)(extraout_ECX + 0xb) & 8) == 0) {\n                    /* WARNING: Subroutine does not return */\n      FUN_002446e0(unaff_EDI + 0x33a72e,0x6ab,unaff_EDI + 0x357a35,(uint)(uVar10 >> 7));\n    }\n    puVar1 = *(uint **)(extraout_ECX + 0xc);\n    local_3c = *puVar1;\n    if (uVar11 < 0xffffff00) {\n      local_3c = local_3c + uVar11;\n      uVar11 = 0;\n    }\n    uVar7 = local_3c % puVar1[3];\n    local_38 = *(int **)(puVar1[2] + uVar7 * 4);\n    if (local_38 != (int *)0x0) {\n      uVar12 = ((int *)*local_38)[1];\n      piVar2 = (int *)*local_38;\n      while (piVar9 = piVar2, uVar12 != local_3c) {\n        piVar2 = (int *)*piVar9;\n        if ((piVar2 == (int *)0x0) ||\n           (uVar12 = piVar2[1], local_38 = piVar9, uVar7 != uVar12 % puVar1[3])) goto LAB_00112e0c;\n      }\n      if (*local_38 != 0) {\n        iVar13 = uVar11 + *(int *)(*local_38 + 8);\n        goto LAB_00112d6f;\n      }\n    }\nLAB_00112e0c:\n    iVar13 = FUN_00318cf0(puVar1,(int)((ulonglong)uVar14 >> 0x20),\n                          *(uint *)(extraout_ECX + 8) & 0x7ffffff,local_3c);\n    uVar11 = (uVar11 + iVar13) - param_1;\n  }\n  if (param_2 == 0) {\n    uVar6 = gettext(unaff_EDI + 0x358c61);\n    FUN_0023b810(uVar6);\n    return (bool)2;\n  }\n  uVar4 = (ushort)((uVar11 >> 0x1f) << 10) | (ushort)(uVar11 >> 0xc) & 0x3f | uVar8 & 0xfbc0;\n  *puVar5 = uVar4 << 8 | uVar4 >> 8;\n  uVar4 = (ushort)(uVar11 >> 1) & 0x7ff;\n  puVar5[1] = uVar4 << 8 |\n              (ushort)(uVar3 & 0xd000 | uVar4 | (ushort)((uVar11 >> 0x12 & 1) << 0xd) |\n                      (ushort)((uVar11 >> 0x13 & 1) << 0xb)) >> 8;\n  return 0x1fffff < uVar11 + 0x100000;\n}" primitive_type (function_declarator "FUN_00112c50(int param_1,int param_2)" identifier (parameter_list "(int param_1,int param_2)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "int param_2" primitive_type identifier) ))) (compound_statement "{\n  uint *puVar1;\n  int *piVar2;\n  ushort uVar3;\n  ushort uVar4;\n  ushort *puVar5;\n  undefined4 uVar6;\n  int extraout_ECX;\n  uint uVar7;\n  ushort uVar8;\n  int *piVar9;\n  ushort uVar10;\n  uint uVar11;\n  uint uVar12;\n  int iVar13;\n  int unaff_EDI;\n  undefined8 uVar14;\n  uint local_3c;\n  int *local_38;\n  \n  uVar14 = FUN_00074f0a();\n  puVar5 = (ushort *)uVar14;\n  uVar4 = *puVar5 << 8;\n  uVar8 = uVar4 | *puVar5 >> 8;\n  uVar3 = puVar5[1] << 8;\n  uVar10 = uVar3 | puVar5[1] >> 8;\n  uVar11 = (uVar8 & 0x3f | uVar10 >> 4 & 0x80 | uVar8 >> 2 & 0x100 | uVar10 >> 7 & 0x40) << 0xc |\n           (uVar10 & 0x7ff) * 2;\n  if ((uVar4 & 0x400) != 0) {\n    uVar11 = uVar11 - 0x200000;\n  }\n  if ((char)*(byte *)(extraout_ECX + 0xb) < '\0') {\n    iVar13 = uVar11 + *(int *)(extraout_ECX + 0xc);\nLAB_00112d6f:\n    uVar11 = iVar13 - param_1;\n  }\n  else {\n    if ((*(byte *)(extraout_ECX + 0xb) & 8) == 0) {\n                    /* WARNING: Subroutine does not return */\n      FUN_002446e0(unaff_EDI + 0x33a72e,0x6ab,unaff_EDI + 0x357a35,(uint)(uVar10 >> 7));\n    }\n    puVar1 = *(uint **)(extraout_ECX + 0xc);\n    local_3c = *puVar1;\n    if (uVar11 < 0xffffff00) {\n      local_3c = local_3c + uVar11;\n      uVar11 = 0;\n    }\n    uVar7 = local_3c % puVar1[3];\n    local_38 = *(int **)(puVar1[2] + uVar7 * 4);\n    if (local_38 != (int *)0x0) {\n      uVar12 = ((int *)*local_38)[1];\n      piVar2 = (int *)*local_38;\n      while (piVar9 = piVar2, uVar12 != local_3c) {\n        piVar2 = (int *)*piVar9;\n        if ((piVar2 == (int *)0x0) ||\n           (uVar12 = piVar2[1], local_38 = piVar9, uVar7 != uVar12 % puVar1[3])) goto LAB_00112e0c;\n      }\n      if (*local_38 != 0) {\n        iVar13 = uVar11 + *(int *)(*local_38 + 8);\n        goto LAB_00112d6f;\n      }\n    }\nLAB_00112e0c:\n    iVar13 = FUN_00318cf0(puVar1,(int)((ulonglong)uVar14 >> 0x20),\n                          *(uint *)(extraout_ECX + 8) & 0x7ffffff,local_3c);\n    uVar11 = (uVar11 + iVar13) - param_1;\n  }\n  if (param_2 == 0) {\n    uVar6 = gettext(unaff_EDI + 0x358c61);\n    FUN_0023b810(uVar6);\n    return (bool)2;\n  }\n  uVar4 = (ushort)((uVar11 >> 0x1f) << 10) | (ushort)(uVar11 >> 0xc) & 0x3f | uVar8 & 0xfbc0;\n  *puVar5 = uVar4 << 8 | uVar4 >> 8;\n  uVar4 = (ushort)(uVar11 >> 1) & 0x7ff;\n  puVar5[1] = uVar4 << 8 |\n              (ushort)(uVar3 & 0xd000 | uVar4 | (ushort)((uVar11 >> 0x12 & 1) << 0xd) |\n                      (ushort)((uVar11 >> 0x13 & 1) << 0xb)) >> 8;\n  return 0x1fffff < uVar11 + 0x100000;\n}" { (declaration "uint *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "int *piVar2;" primitive_type (pointer_declarator "*piVar2" * identifier) ;) (declaration "ushort uVar3;" type_identifier identifier ;) (declaration "ushort uVar4;" type_identifier identifier ;) (declaration "ushort *puVar5;" type_identifier (pointer_declarator "*puVar5" * identifier) ;) (declaration "undefined4 uVar6;" type_identifier identifier ;) (declaration "int extraout_ECX;" primitive_type identifier ;) (declaration "uint uVar7;" type_identifier identifier ;) (declaration "ushort uVar8;" type_identifier identifier ;) (declaration "int *piVar9;" primitive_type (pointer_declarator "*piVar9" * identifier) ;) (declaration "ushort uVar10;" type_identifier identifier ;) (declaration "uint uVar11;" type_identifier identifier ;) (declaration "uint uVar12;" type_identifier identifier ;) (declaration "int iVar13;" primitive_type identifier ;) (declaration "int unaff_EDI;" primitive_type identifier ;) (declaration "undefined8 uVar14;" type_identifier identifier ;) (declaration "uint local_3c;" type_identifier identifier ;) (declaration "int *local_38;" primitive_type (pointer_declarator "*local_38" * identifier) ;) (expression_statement "uVar14 = FUN_00074f0a();" (assignment_expression "uVar14 = FUN_00074f0a()" identifier = (call_expression "FUN_00074f0a()" identifier (argument_list "()" ( )))) ;) (expression_statement "puVar5 = (ushort *)uVar14;" (assignment_expression "puVar5 = (ushort *)uVar14" identifier = (cast_expression "(ushort *)uVar14" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "uVar4 = *puVar5 << 8;" (assignment_expression "uVar4 = *puVar5 << 8" identifier = (binary_expression "*puVar5 << 8" (pointer_expression "*puVar5" * identifier) << number_literal)) ;) (expression_statement "uVar8 = uVar4 | *puVar5 >> 8;" (assignment_expression "uVar8 = uVar4 | *puVar5 >> 8" identifier = (binary_expression "uVar4 | *puVar5 >> 8" identifier | (binary_expression "*puVar5 >> 8" (pointer_expression "*puVar5" * identifier) >> number_literal))) ;) (expression_statement "uVar3 = puVar5[1] << 8;" (assignment_expression "uVar3 = puVar5[1] << 8" identifier = (binary_expression "puVar5[1] << 8" (subscript_expression "puVar5[1]" identifier [ number_literal ]) << number_literal)) ;) (expression_statement "uVar10 = uVar3 | puVar5[1] >> 8;" (assignment_expression "uVar10 = uVar3 | puVar5[1] >> 8" identifier = (binary_expression "uVar3 | puVar5[1] >> 8" identifier | (binary_expression "puVar5[1] >> 8" (subscript_expression "puVar5[1]" identifier [ number_literal ]) >> number_literal))) ;) (expression_statement "uVar11 = (uVar8 & 0x3f | uVar10 >> 4 & 0x80 | uVar8 >> 2 & 0x100 | uVar10 >> 7 & 0x40) << 0xc |\n           (uVar10 & 0x7ff) * 2;" (assignment_expression "uVar11 = (uVar8 & 0x3f | uVar10 >> 4 & 0x80 | uVar8 >> 2 & 0x100 | uVar10 >> 7 & 0x40) << 0xc |\n           (uVar10 & 0x7ff) * 2" identifier = (binary_expression "(uVar8 & 0x3f | uVar10 >> 4 & 0x80 | uVar8 >> 2 & 0x100 | uVar10 >> 7 & 0x40) << 0xc |\n           (uVar10 & 0x7ff) * 2" (binary_expression "(uVar8 & 0x3f | uVar10 >> 4 & 0x80 | uVar8 >> 2 & 0x100 | uVar10 >> 7 & 0x40) << 0xc" (parenthesized_expression "(uVar8 & 0x3f | uVar10 >> 4 & 0x80 | uVar8 >> 2 & 0x100 | uVar10 >> 7 & 0x40)" ( (binary_expression "uVar8 & 0x3f | uVar10 >> 4 & 0x80 | uVar8 >> 2 & 0x100 | uVar10 >> 7 & 0x40" (binary_expression "uVar8 & 0x3f | uVar10 >> 4 & 0x80 | uVar8 >> 2 & 0x100" (binary_expression "uVar8 & 0x3f | uVar10 >> 4 & 0x80" (binary_expression "uVar8 & 0x3f" identifier & number_literal) | (binary_expression "uVar10 >> 4 & 0x80" (binary_expression "uVar10 >> 4" identifier >> number_literal) & number_literal)) | (binary_expression "uVar8 >> 2 & 0x100" (binary_expression "uVar8 >> 2" identifier >> number_literal) & number_literal)) | (binary_expression "uVar10 >> 7 & 0x40" (binary_expression "uVar10 >> 7" identifier >> number_literal) & number_literal)) )) << number_literal) | (binary_expression "(uVar10 & 0x7ff) * 2" (parenthesized_expression "(uVar10 & 0x7ff)" ( (binary_expression "uVar10 & 0x7ff" identifier & number_literal) )) * number_literal))) ;) (if_statement "if ((uVar4 & 0x400) != 0) {\n    uVar11 = uVar11 - 0x200000;\n  }" if (parenthesized_expression "((uVar4 & 0x400) != 0)" ( (binary_expression "(uVar4 & 0x400) != 0" (parenthesized_expression "(uVar4 & 0x400)" ( (binary_expression "uVar4 & 0x400" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n    uVar11 = uVar11 - 0x200000;\n  }" { (expression_statement "uVar11 = uVar11 - 0x200000;" (assignment_expression "uVar11 = uVar11 - 0x200000" identifier = (binary_expression "uVar11 - 0x200000" identifier - number_literal)) ;) })) (if_statement "if ((char)*(byte *)(extraout_ECX + 0xb) < '\0') {\n    iVar13 = uVar11 + *(int *)(extraout_ECX + 0xc);\nLAB_00112d6f:\n    uVar11 = iVar13 - param_1;\n  }\n  else {\n    if ((*(byte *)(extraout_ECX + 0xb) & 8) == 0) {\n                    /* WARNING: Subroutine does not return */\n      FUN_002446e0(unaff_EDI + 0x33a72e,0x6ab,unaff_EDI + 0x357a35,(uint)(uVar10 >> 7));\n    }\n    puVar1 = *(uint **)(extraout_ECX + 0xc);\n    local_3c = *puVar1;\n    if (uVar11 < 0xffffff00) {\n      local_3c = local_3c + uVar11;\n      uVar11 = 0;\n    }\n    uVar7 = local_3c % puVar1[3];\n    local_38 = *(int **)(puVar1[2] + uVar7 * 4);\n    if (local_38 != (int *)0x0) {\n      uVar12 = ((int *)*local_38)[1];\n      piVar2 = (int *)*local_38;\n      while (piVar9 = piVar2, uVar12 != local_3c) {\n        piVar2 = (int *)*piVar9;\n        if ((piVar2 == (int *)0x0) ||\n           (uVar12 = piVar2[1], local_38 = piVar9, uVar7 != uVar12 % puVar1[3])) goto LAB_00112e0c;\n      }\n      if (*local_38 != 0) {\n        iVar13 = uVar11 + *(int *)(*local_38 + 8);\n        goto LAB_00112d6f;\n      }\n    }\nLAB_00112e0c:\n    iVar13 = FUN_00318cf0(puVar1,(int)((ulonglong)uVar14 >> 0x20),\n                          *(uint *)(extraout_ECX + 8) & 0x7ffffff,local_3c);\n    uVar11 = (uVar11 + iVar13) - param_1;\n  }" if (parenthesized_expression "((char)*(byte *)(extraout_ECX + 0xb) < '\0')" ( (binary_expression "(char)*(byte *)(extraout_ECX + 0xb) < '\0'" (cast_expression "(char)*(byte *)(extraout_ECX + 0xb)" ( (type_descriptor "char" primitive_type) ) (pointer_expression "*(byte *)(extraout_ECX + 0xb)" * (cast_expression "(byte *)(extraout_ECX + 0xb)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(extraout_ECX + 0xb)" ( (binary_expression "extraout_ECX + 0xb" identifier + number_literal) ))))) < (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    iVar13 = uVar11 + *(int *)(extraout_ECX + 0xc);\nLAB_00112d6f:\n    uVar11 = iVar13 - param_1;\n  }" { (expression_statement "iVar13 = uVar11 + *(int *)(extraout_ECX + 0xc);" (assignment_expression "iVar13 = uVar11 + *(int *)(extraout_ECX + 0xc)" identifier = (binary_expression "uVar11 + *(int *)(extraout_ECX + 0xc)" identifier + (pointer_expression "*(int *)(extraout_ECX + 0xc)" * (cast_expression "(int *)(extraout_ECX + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(extraout_ECX + 0xc)" ( (binary_expression "extraout_ECX + 0xc" identifier + number_literal) )))))) ;) (labeled_statement "LAB_00112d6f:\n    uVar11 = iVar13 - param_1;" statement_identifier : (expression_statement "uVar11 = iVar13 - param_1;" (assignment_expression "uVar11 = iVar13 - param_1" identifier = (binary_expression "iVar13 - param_1" identifier - identifier)) ;)) }) (else_clause "else {\n    if ((*(byte *)(extraout_ECX + 0xb) & 8) == 0) {\n                    /* WARNING: Subroutine does not return */\n      FUN_002446e0(unaff_EDI + 0x33a72e,0x6ab,unaff_EDI + 0x357a35,(uint)(uVar10 >> 7));\n    }\n    puVar1 = *(uint **)(extraout_ECX + 0xc);\n    local_3c = *puVar1;\n    if (uVar11 < 0xffffff00) {\n      local_3c = local_3c + uVar11;\n      uVar11 = 0;\n    }\n    uVar7 = local_3c % puVar1[3];\n    local_38 = *(int **)(puVar1[2] + uVar7 * 4);\n    if (local_38 != (int *)0x0) {\n      uVar12 = ((int *)*local_38)[1];\n      piVar2 = (int *)*local_38;\n      while (piVar9 = piVar2, uVar12 != local_3c) {\n        piVar2 = (int *)*piVar9;\n        if ((piVar2 == (int *)0x0) ||\n           (uVar12 = piVar2[1], local_38 = piVar9, uVar7 != uVar12 % puVar1[3])) goto LAB_00112e0c;\n      }\n      if (*local_38 != 0) {\n        iVar13 = uVar11 + *(int *)(*local_38 + 8);\n        goto LAB_00112d6f;\n      }\n    }\nLAB_00112e0c:\n    iVar13 = FUN_00318cf0(puVar1,(int)((ulonglong)uVar14 >> 0x20),\n                          *(uint *)(extraout_ECX + 8) & 0x7ffffff,local_3c);\n    uVar11 = (uVar11 + iVar13) - param_1;\n  }" else (compound_statement "{\n    if ((*(byte *)(extraout_ECX + 0xb) & 8) == 0) {\n                    /* WARNING: Subroutine does not return */\n      FUN_002446e0(unaff_EDI + 0x33a72e,0x6ab,unaff_EDI + 0x357a35,(uint)(uVar10 >> 7));\n    }\n    puVar1 = *(uint **)(extraout_ECX + 0xc);\n    local_3c = *puVar1;\n    if (uVar11 < 0xffffff00) {\n      local_3c = local_3c + uVar11;\n      uVar11 = 0;\n    }\n    uVar7 = local_3c % puVar1[3];\n    local_38 = *(int **)(puVar1[2] + uVar7 * 4);\n    if (local_38 != (int *)0x0) {\n      uVar12 = ((int *)*local_38)[1];\n      piVar2 = (int *)*local_38;\n      while (piVar9 = piVar2, uVar12 != local_3c) {\n        piVar2 = (int *)*piVar9;\n        if ((piVar2 == (int *)0x0) ||\n           (uVar12 = piVar2[1], local_38 = piVar9, uVar7 != uVar12 % puVar1[3])) goto LAB_00112e0c;\n      }\n      if (*local_38 != 0) {\n        iVar13 = uVar11 + *(int *)(*local_38 + 8);\n        goto LAB_00112d6f;\n      }\n    }\nLAB_00112e0c:\n    iVar13 = FUN_00318cf0(puVar1,(int)((ulonglong)uVar14 >> 0x20),\n                          *(uint *)(extraout_ECX + 8) & 0x7ffffff,local_3c);\n    uVar11 = (uVar11 + iVar13) - param_1;\n  }" { (if_statement "if ((*(byte *)(extraout_ECX + 0xb) & 8) == 0) {\n                    /* WARNING: Subroutine does not return */\n      FUN_002446e0(unaff_EDI + 0x33a72e,0x6ab,unaff_EDI + 0x357a35,(uint)(uVar10 >> 7));\n    }" if (parenthesized_expression "((*(byte *)(extraout_ECX + 0xb) & 8) == 0)" ( (binary_expression "(*(byte *)(extraout_ECX + 0xb) & 8) == 0" (parenthesized_expression "(*(byte *)(extraout_ECX + 0xb) & 8)" ( (binary_expression "*(byte *)(extraout_ECX + 0xb) & 8" (pointer_expression "*(byte *)(extraout_ECX + 0xb)" * (cast_expression "(byte *)(extraout_ECX + 0xb)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(extraout_ECX + 0xb)" ( (binary_expression "extraout_ECX + 0xb" identifier + number_literal) )))) & number_literal) )) == number_literal) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n      FUN_002446e0(unaff_EDI + 0x33a72e,0x6ab,unaff_EDI + 0x357a35,(uint)(uVar10 >> 7));\n    }" { comment (expression_statement "FUN_002446e0(unaff_EDI + 0x33a72e,0x6ab,unaff_EDI + 0x357a35,(uint)(uVar10 >> 7));" (call_expression "FUN_002446e0(unaff_EDI + 0x33a72e,0x6ab,unaff_EDI + 0x357a35,(uint)(uVar10 >> 7))" identifier (argument_list "(unaff_EDI + 0x33a72e,0x6ab,unaff_EDI + 0x357a35,(uint)(uVar10 >> 7))" ( (binary_expression "unaff_EDI + 0x33a72e" identifier + number_literal) , number_literal , (binary_expression "unaff_EDI + 0x357a35" identifier + number_literal) , (call_expression "(uint)(uVar10 >> 7)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar10 >> 7)" ( (binary_expression "uVar10 >> 7" identifier >> number_literal) ))) ))) ;) })) (expression_statement "puVar1 = *(uint **)(extraout_ECX + 0xc);" (assignment_expression "puVar1 = *(uint **)(extraout_ECX + 0xc)" identifier = (pointer_expression "*(uint **)(extraout_ECX + 0xc)" * (cast_expression "(uint **)(extraout_ECX + 0xc)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(extraout_ECX + 0xc)" ( (binary_expression "extraout_ECX + 0xc" identifier + number_literal) ))))) ;) (expression_statement "local_3c = *puVar1;" (assignment_expression "local_3c = *puVar1" identifier = (pointer_expression "*puVar1" * identifier)) ;) (if_statement "if (uVar11 < 0xffffff00) {\n      local_3c = local_3c + uVar11;\n      uVar11 = 0;\n    }" if (parenthesized_expression "(uVar11 < 0xffffff00)" ( (binary_expression "uVar11 < 0xffffff00" identifier < number_literal) )) (compound_statement "{\n      local_3c = local_3c + uVar11;\n      uVar11 = 0;\n    }" { (expression_statement "local_3c = local_3c + uVar11;" (assignment_expression "local_3c = local_3c + uVar11" identifier = (binary_expression "local_3c + uVar11" identifier + identifier)) ;) (expression_statement "uVar11 = 0;" (assignment_expression "uVar11 = 0" identifier = number_literal) ;) })) (expression_statement "uVar7 = local_3c % puVar1[3];" (assignment_expression "uVar7 = local_3c % puVar1[3]" identifier = (binary_expression "local_3c % puVar1[3]" identifier % (subscript_expression "puVar1[3]" identifier [ number_literal ]))) ;) (expression_statement "local_38 = *(int **)(puVar1[2] + uVar7 * 4);" (assignment_expression "local_38 = *(int **)(puVar1[2] + uVar7 * 4)" identifier = (pointer_expression "*(int **)(puVar1[2] + uVar7 * 4)" * (cast_expression "(int **)(puVar1[2] + uVar7 * 4)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar1[2] + uVar7 * 4)" ( (binary_expression "puVar1[2] + uVar7 * 4" (subscript_expression "puVar1[2]" identifier [ number_literal ]) + (binary_expression "uVar7 * 4" identifier * number_literal)) ))))) ;) (if_statement "if (local_38 != (int *)0x0) {\n      uVar12 = ((int *)*local_38)[1];\n      piVar2 = (int *)*local_38;\n      while (piVar9 = piVar2, uVar12 != local_3c) {\n        piVar2 = (int *)*piVar9;\n        if ((piVar2 == (int *)0x0) ||\n           (uVar12 = piVar2[1], local_38 = piVar9, uVar7 != uVar12 % puVar1[3])) goto LAB_00112e0c;\n      }\n      if (*local_38 != 0) {\n        iVar13 = uVar11 + *(int *)(*local_38 + 8);\n        goto LAB_00112d6f;\n      }\n    }" if (parenthesized_expression "(local_38 != (int *)0x0)" ( (binary_expression "local_38 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      uVar12 = ((int *)*local_38)[1];\n      piVar2 = (int *)*local_38;\n      while (piVar9 = piVar2, uVar12 != local_3c) {\n        piVar2 = (int *)*piVar9;\n        if ((piVar2 == (int *)0x0) ||\n           (uVar12 = piVar2[1], local_38 = piVar9, uVar7 != uVar12 % puVar1[3])) goto LAB_00112e0c;\n      }\n      if (*local_38 != 0) {\n        iVar13 = uVar11 + *(int *)(*local_38 + 8);\n        goto LAB_00112d6f;\n      }\n    }" { (expression_statement "uVar12 = ((int *)*local_38)[1];" (assignment_expression "uVar12 = ((int *)*local_38)[1]" identifier = (subscript_expression "((int *)*local_38)[1]" (parenthesized_expression "((int *)*local_38)" ( (cast_expression "(int *)*local_38" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*local_38" * identifier)) )) [ number_literal ])) ;) (expression_statement "piVar2 = (int *)*local_38;" (assignment_expression "piVar2 = (int *)*local_38" identifier = (cast_expression "(int *)*local_38" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*local_38" * identifier))) ;) (while_statement "while (piVar9 = piVar2, uVar12 != local_3c) {\n        piVar2 = (int *)*piVar9;\n        if ((piVar2 == (int *)0x0) ||\n           (uVar12 = piVar2[1], local_38 = piVar9, uVar7 != uVar12 % puVar1[3])) goto LAB_00112e0c;\n      }" while (parenthesized_expression "(piVar9 = piVar2, uVar12 != local_3c)" ( (comma_expression "piVar9 = piVar2, uVar12 != local_3c" (assignment_expression "piVar9 = piVar2" identifier = identifier) , (binary_expression "uVar12 != local_3c" identifier != identifier)) )) (compound_statement "{\n        piVar2 = (int *)*piVar9;\n        if ((piVar2 == (int *)0x0) ||\n           (uVar12 = piVar2[1], local_38 = piVar9, uVar7 != uVar12 % puVar1[3])) goto LAB_00112e0c;\n      }" { (expression_statement "piVar2 = (int *)*piVar9;" (assignment_expression "piVar2 = (int *)*piVar9" identifier = (cast_expression "(int *)*piVar9" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar9" * identifier))) ;) (if_statement "if ((piVar2 == (int *)0x0) ||\n           (uVar12 = piVar2[1], local_38 = piVar9, uVar7 != uVar12 % puVar1[3])) goto LAB_00112e0c;" if (parenthesized_expression "((piVar2 == (int *)0x0) ||\n           (uVar12 = piVar2[1], local_38 = piVar9, uVar7 != uVar12 % puVar1[3]))" ( (binary_expression "(piVar2 == (int *)0x0) ||\n           (uVar12 = piVar2[1], local_38 = piVar9, uVar7 != uVar12 % puVar1[3])" (parenthesized_expression "(piVar2 == (int *)0x0)" ( (binary_expression "piVar2 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) || (parenthesized_expression "(uVar12 = piVar2[1], local_38 = piVar9, uVar7 != uVar12 % puVar1[3])" ( (comma_expression "uVar12 = piVar2[1], local_38 = piVar9, uVar7 != uVar12 % puVar1[3]" (assignment_expression "uVar12 = piVar2[1]" identifier = (subscript_expression "piVar2[1]" identifier [ number_literal ])) , (comma_expression "local_38 = piVar9, uVar7 != uVar12 % puVar1[3]" (assignment_expression "local_38 = piVar9" identifier = identifier) , (binary_expression "uVar7 != uVar12 % puVar1[3]" identifier != (binary_expression "uVar12 % puVar1[3]" identifier % (subscript_expression "puVar1[3]" identifier [ number_literal ]))))) ))) )) (goto_statement "goto LAB_00112e0c;" goto statement_identifier ;)) })) (if_statement "if (*local_38 != 0) {\n        iVar13 = uVar11 + *(int *)(*local_38 + 8);\n        goto LAB_00112d6f;\n      }" if (parenthesized_expression "(*local_38 != 0)" ( (binary_expression "*local_38 != 0" (pointer_expression "*local_38" * identifier) != number_literal) )) (compound_statement "{\n        iVar13 = uVar11 + *(int *)(*local_38 + 8);\n        goto LAB_00112d6f;\n      }" { (expression_statement "iVar13 = uVar11 + *(int *)(*local_38 + 8);" (assignment_expression "iVar13 = uVar11 + *(int *)(*local_38 + 8)" identifier = (binary_expression "uVar11 + *(int *)(*local_38 + 8)" identifier + (pointer_expression "*(int *)(*local_38 + 8)" * (cast_expression "(int *)(*local_38 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*local_38 + 8)" ( (binary_expression "*local_38 + 8" (pointer_expression "*local_38" * identifier) + number_literal) )))))) ;) (goto_statement "goto LAB_00112d6f;" goto statement_identifier ;) })) })) (labeled_statement "LAB_00112e0c:\n    iVar13 = FUN_00318cf0(puVar1,(int)((ulonglong)uVar14 >> 0x20),\n                          *(uint *)(extraout_ECX + 8) & 0x7ffffff,local_3c);" statement_identifier : (expression_statement "iVar13 = FUN_00318cf0(puVar1,(int)((ulonglong)uVar14 >> 0x20),\n                          *(uint *)(extraout_ECX + 8) & 0x7ffffff,local_3c);" (assignment_expression "iVar13 = FUN_00318cf0(puVar1,(int)((ulonglong)uVar14 >> 0x20),\n                          *(uint *)(extraout_ECX + 8) & 0x7ffffff,local_3c)" identifier = (call_expression "FUN_00318cf0(puVar1,(int)((ulonglong)uVar14 >> 0x20),\n                          *(uint *)(extraout_ECX + 8) & 0x7ffffff,local_3c)" identifier (argument_list "(puVar1,(int)((ulonglong)uVar14 >> 0x20),\n                          *(uint *)(extraout_ECX + 8) & 0x7ffffff,local_3c)" ( identifier , (cast_expression "(int)((ulonglong)uVar14 >> 0x20)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((ulonglong)uVar14 >> 0x20)" ( (binary_expression "(ulonglong)uVar14 >> 0x20" (cast_expression "(ulonglong)uVar14" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) ))) , (binary_expression "*(uint *)(extraout_ECX + 8) & 0x7ffffff" (pointer_expression "*(uint *)(extraout_ECX + 8)" * (cast_expression "(uint *)(extraout_ECX + 8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(extraout_ECX + 8)" ( (binary_expression "extraout_ECX + 8" identifier + number_literal) )))) & number_literal) , identifier )))) ;)) (expression_statement "uVar11 = (uVar11 + iVar13) - param_1;" (assignment_expression "uVar11 = (uVar11 + iVar13) - param_1" identifier = (binary_expression "(uVar11 + iVar13) - param_1" (parenthesized_expression "(uVar11 + iVar13)" ( (binary_expression "uVar11 + iVar13" identifier + identifier) )) - identifier)) ;) }))) (if_statement "if (param_2 == 0) {\n    uVar6 = gettext(unaff_EDI + 0x358c61);\n    FUN_0023b810(uVar6);\n    return (bool)2;\n  }" if (parenthesized_expression "(param_2 == 0)" ( (binary_expression "param_2 == 0" identifier == number_literal) )) (compound_statement "{\n    uVar6 = gettext(unaff_EDI + 0x358c61);\n    FUN_0023b810(uVar6);\n    return (bool)2;\n  }" { (expression_statement "uVar6 = gettext(unaff_EDI + 0x358c61);" (assignment_expression "uVar6 = gettext(unaff_EDI + 0x358c61)" identifier = (call_expression "gettext(unaff_EDI + 0x358c61)" identifier (argument_list "(unaff_EDI + 0x358c61)" ( (binary_expression "unaff_EDI + 0x358c61" identifier + number_literal) )))) ;) (expression_statement "FUN_0023b810(uVar6);" (call_expression "FUN_0023b810(uVar6)" identifier (argument_list "(uVar6)" ( identifier ))) ;) (return_statement "return (bool)2;" return (cast_expression "(bool)2" ( (type_descriptor "bool" primitive_type) ) number_literal) ;) })) (expression_statement "uVar4 = (ushort)((uVar11 >> 0x1f) << 10) | (ushort)(uVar11 >> 0xc) & 0x3f | uVar8 & 0xfbc0;" (assignment_expression "uVar4 = (ushort)((uVar11 >> 0x1f) << 10) | (ushort)(uVar11 >> 0xc) & 0x3f | uVar8 & 0xfbc0" identifier = (binary_expression "(ushort)((uVar11 >> 0x1f) << 10) | (ushort)(uVar11 >> 0xc) & 0x3f | uVar8 & 0xfbc0" (binary_expression "(ushort)((uVar11 >> 0x1f) << 10) | (ushort)(uVar11 >> 0xc) & 0x3f" (call_expression "(ushort)((uVar11 >> 0x1f) << 10)" (parenthesized_expression "(ushort)" ( identifier )) (argument_list "((uVar11 >> 0x1f) << 10)" ( (binary_expression "(uVar11 >> 0x1f) << 10" (parenthesized_expression "(uVar11 >> 0x1f)" ( (binary_expression "uVar11 >> 0x1f" identifier >> number_literal) )) << number_literal) ))) | (binary_expression "(ushort)(uVar11 >> 0xc) & 0x3f" (call_expression "(ushort)(uVar11 >> 0xc)" (parenthesized_expression "(ushort)" ( identifier )) (argument_list "(uVar11 >> 0xc)" ( (binary_expression "uVar11 >> 0xc" identifier >> number_literal) ))) & number_literal)) | (binary_expression "uVar8 & 0xfbc0" identifier & number_literal))) ;) (expression_statement "*puVar5 = uVar4 << 8 | uVar4 >> 8;" (assignment_expression "*puVar5 = uVar4 << 8 | uVar4 >> 8" (pointer_expression "*puVar5" * identifier) = (binary_expression "uVar4 << 8 | uVar4 >> 8" (binary_expression "uVar4 << 8" identifier << number_literal) | (binary_expression "uVar4 >> 8" identifier >> number_literal))) ;) (expression_statement "uVar4 = (ushort)(uVar11 >> 1) & 0x7ff;" (assignment_expression "uVar4 = (ushort)(uVar11 >> 1) & 0x7ff" identifier = (binary_expression "(ushort)(uVar11 >> 1) & 0x7ff" (call_expression "(ushort)(uVar11 >> 1)" (parenthesized_expression "(ushort)" ( identifier )) (argument_list "(uVar11 >> 1)" ( (binary_expression "uVar11 >> 1" identifier >> number_literal) ))) & number_literal)) ;) (expression_statement "puVar5[1] = uVar4 << 8 |\n              (ushort)(uVar3 & 0xd000 | uVar4 | (ushort)((uVar11 >> 0x12 & 1) << 0xd) |\n                      (ushort)((uVar11 >> 0x13 & 1) << 0xb)) >> 8;" (assignment_expression "puVar5[1] = uVar4 << 8 |\n              (ushort)(uVar3 & 0xd000 | uVar4 | (ushort)((uVar11 >> 0x12 & 1) << 0xd) |\n                      (ushort)((uVar11 >> 0x13 & 1) << 0xb)) >> 8" (subscript_expression "puVar5[1]" identifier [ number_literal ]) = (binary_expression "uVar4 << 8 |\n              (ushort)(uVar3 & 0xd000 | uVar4 | (ushort)((uVar11 >> 0x12 & 1) << 0xd) |\n                      (ushort)((uVar11 >> 0x13 & 1) << 0xb)) >> 8" (binary_expression "uVar4 << 8" identifier << number_literal) | (binary_expression "(ushort)(uVar3 & 0xd000 | uVar4 | (ushort)((uVar11 >> 0x12 & 1) << 0xd) |\n                      (ushort)((uVar11 >> 0x13 & 1) << 0xb)) >> 8" (call_expression "(ushort)(uVar3 & 0xd000 | uVar4 | (ushort)((uVar11 >> 0x12 & 1) << 0xd) |\n                      (ushort)((uVar11 >> 0x13 & 1) << 0xb))" (parenthesized_expression "(ushort)" ( identifier )) (argument_list "(uVar3 & 0xd000 | uVar4 | (ushort)((uVar11 >> 0x12 & 1) << 0xd) |\n                      (ushort)((uVar11 >> 0x13 & 1) << 0xb))" ( (binary_expression "uVar3 & 0xd000 | uVar4 | (ushort)((uVar11 >> 0x12 & 1) << 0xd) |\n                      (ushort)((uVar11 >> 0x13 & 1) << 0xb)" (binary_expression "uVar3 & 0xd000 | uVar4 | (ushort)((uVar11 >> 0x12 & 1) << 0xd)" (binary_expression "uVar3 & 0xd000 | uVar4" (binary_expression "uVar3 & 0xd000" identifier & number_literal) | identifier) | (call_expression "(ushort)((uVar11 >> 0x12 & 1) << 0xd)" (parenthesized_expression "(ushort)" ( identifier )) (argument_list "((uVar11 >> 0x12 & 1) << 0xd)" ( (binary_expression "(uVar11 >> 0x12 & 1) << 0xd" (parenthesized_expression "(uVar11 >> 0x12 & 1)" ( (binary_expression "uVar11 >> 0x12 & 1" (binary_expression "uVar11 >> 0x12" identifier >> number_literal) & number_literal) )) << number_literal) )))) | (call_expression "(ushort)((uVar11 >> 0x13 & 1) << 0xb)" (parenthesized_expression "(ushort)" ( identifier )) (argument_list "((uVar11 >> 0x13 & 1) << 0xb)" ( (binary_expression "(uVar11 >> 0x13 & 1) << 0xb" (parenthesized_expression "(uVar11 >> 0x13 & 1)" ( (binary_expression "uVar11 >> 0x13 & 1" (binary_expression "uVar11 >> 0x13" identifier >> number_literal) & number_literal) )) << number_literal) )))) ))) >> number_literal))) ;) (return_statement "return 0x1fffff < uVar11 + 0x100000;" return (binary_expression "0x1fffff < uVar11 + 0x100000" number_literal < (binary_expression "uVar11 + 0x100000" identifier + number_literal)) ;) })))
(translation_unit "/* WARNING: Enum "<anon>": Some values do not have unique names */\n\nStatus anon_unknown.dwarf_91258a::Arm_relocate_functions<true>::thm_jump19\n                 (uchar *view,Arm_relobj<true> *object,Symbol_value<32> *psymval,Arm_address address\n                 ,Arm_address thumb_bit)\n\n{\n  Merged_symbol_value<32> *this;\n  uint uVar1;\n  _Hash_node_base *p_Var2;\n  ushort uVar3;\n  ushort uVar4;\n  Valtype *wv;\n  ushort *puVar5;\n  Elf_Addr EVar6;\n  char *format;\n  int extraout_ECX;\n  uint uVar7;\n  ushort uVar8;\n  __bucket_type p_Var9;\n  ushort uVar10;\n  uint uVar11;\n  _Hash_node_base *p_Var12;\n  int iVar13;\n  int unaff_EDI;\n  undefined8 uVar14;\n  _Hash_node_base *local_3c;\n  __bucket_type local_38;\n  \n  uVar14 = __x86_get_pc_thunk_di();\n  puVar5 = (ushort *)uVar14;\n  uVar4 = *puVar5 << 8;\n  uVar8 = uVar4 | *puVar5 >> 8;\n  uVar3 = puVar5[1] << 8;\n  uVar10 = uVar3 | puVar5[1] >> 8;\n  uVar11 = (uVar8 & 0x3f | uVar10 >> 4 & 0x80 | uVar8 >> 2 & 0x100 | uVar10 >> 7 & 0x40) << 0xc |\n           (uVar10 & 0x7ff) * 2;\n  if ((uVar4 & 0x400) != 0) {\n    uVar11 = uVar11 - 0x200000;\n  }\n  if ((char)*(byte *)(extraout_ECX + 0xb) < '\0') {\n    iVar13 = uVar11 + *(int *)(extraout_ECX + 0xc);\nLAB_00112d6f:\n    uVar11 = iVar13 - (int)view;\n  }\n  else {\n    if ((*(byte *)(extraout_ECX + 0xb) & 8) == 0) {\n                    /* WARNING: Subroutine does not return */\n      gold::do_gold_unreachable((char *)(unaff_EDI + 0x33a72e),0x6ab,(char *)(unaff_EDI + 0x357a35))\n      ;\n    }\n    this = *(Merged_symbol_value<32> **)(extraout_ECX + 0xc);\n    local_3c = (_Hash_node_base *)this->input_value_;\n    if (uVar11 < 0xffffff00) {\n      local_3c = (_Hash_node_base *)((int)&local_3c->_M_nxt + uVar11);\n      uVar11 = 0;\n    }\n    uVar1 = (this->output_addresses_)._M_h._M_bucket_count;\n    uVar7 = (uint)local_3c % uVar1;\n    local_38 = (this->output_addresses_)._M_h._M_buckets[uVar7];\n    if (local_38 != (__bucket_type)0x0) {\n      p_Var12 = local_38->_M_nxt[1]._M_nxt;\n      p_Var2 = local_38->_M_nxt;\n      while (p_Var9 = p_Var2, p_Var12 != local_3c) {\n        p_Var2 = p_Var9->_M_nxt;\n        if ((p_Var2 == (_Hash_node_base *)0x0) ||\n           (p_Var12 = p_Var2[1]._M_nxt, local_38 = p_Var9, uVar7 != (uint)p_Var12 % uVar1))\n        goto LAB_00112e0c;\n      }\n      if (local_38->_M_nxt != (_Hash_node_base *)0x0) {\n        iVar13 = (int)&(local_38->_M_nxt[2]._M_nxt)->_M_nxt + uVar11;\n        goto LAB_00112d6f;\n      }\n    }\nLAB_00112e0c:\n    EVar6 = gold::Merged_symbol_value<32>::value_from_output_section\n                      (this,(Relobj *)((ulonglong)uVar14 >> 0x20),\n                       *(uint *)(extraout_ECX + 8) & 0x7ffffff,(Elf_Addr)local_3c);\n    uVar11 = (uVar11 + EVar6) - (int)view;\n  }\n  if (object == (Arm_relobj<true> *)0x0) {\n    format = (char *)gettext(&UNK_00358c61 + unaff_EDI);\n    gold::gold_error(format);\n    return STATUS_BAD_RELOC;\n  }\n  uVar4 = (ushort)((uVar11 >> 0x1f) << 10) | (ushort)(uVar11 >> 0xc) & 0x3f | uVar8 & 0xfbc0;\n  *puVar5 = uVar4 << 8 | uVar4 >> 8;\n  uVar4 = (ushort)(uVar11 >> 1) & 0x7ff;\n  puVar5[1] = uVar4 << 8 |\n              (ushort)(uVar3 & 0xd000 | uVar4 | (ushort)((uVar11 >> 0x12 & 1) << 0xd) |\n                      (ushort)((uVar11 >> 0x13 & 1) << 0xb)) >> 8;\n  return (uint)(0x1fffff < uVar11 + 0x100000);\n}\n\n" comment (function_definition "Status anon_unknown.dwarf_91258a::Arm_relocate_functions<true>::thm_jump19\n                 (uchar *view,Arm_relobj<true> *object,Symbol_value<32> *psymval,Arm_address address\n                 ,Arm_address thumb_bit)\n\n{\n  Merged_symbol_value<32> *this;\n  uint uVar1;\n  _Hash_node_base *p_Var2;\n  ushort uVar3;\n  ushort uVar4;\n  Valtype *wv;\n  ushort *puVar5;\n  Elf_Addr EVar6;\n  char *format;\n  int extraout_ECX;\n  uint uVar7;\n  ushort uVar8;\n  __bucket_type p_Var9;\n  ushort uVar10;\n  uint uVar11;\n  _Hash_node_base *p_Var12;\n  int iVar13;\n  int unaff_EDI;\n  undefined8 uVar14;\n  _Hash_node_base *local_3c;\n  __bucket_type local_38;\n  \n  uVar14 = __x86_get_pc_thunk_di();\n  puVar5 = (ushort *)uVar14;\n  uVar4 = *puVar5 << 8;\n  uVar8 = uVar4 | *puVar5 >> 8;\n  uVar3 = puVar5[1] << 8;\n  uVar10 = uVar3 | puVar5[1] >> 8;\n  uVar11 = (uVar8 & 0x3f | uVar10 >> 4 & 0x80 | uVar8 >> 2 & 0x100 | uVar10 >> 7 & 0x40) << 0xc |\n           (uVar10 & 0x7ff) * 2;\n  if ((uVar4 & 0x400) != 0) {\n    uVar11 = uVar11 - 0x200000;\n  }\n  if ((char)*(byte *)(extraout_ECX + 0xb) < '\0') {\n    iVar13 = uVar11 + *(int *)(extraout_ECX + 0xc);\nLAB_00112d6f:\n    uVar11 = iVar13 - (int)view;\n  }\n  else {\n    if ((*(byte *)(extraout_ECX + 0xb) & 8) == 0) {\n                    /* WARNING: Subroutine does not return */\n      gold::do_gold_unreachable((char *)(unaff_EDI + 0x33a72e),0x6ab,(char *)(unaff_EDI + 0x357a35))\n      ;\n    }\n    this = *(Merged_symbol_value<32> **)(extraout_ECX + 0xc);\n    local_3c = (_Hash_node_base *)this->input_value_;\n    if (uVar11 < 0xffffff00) {\n      local_3c = (_Hash_node_base *)((int)&local_3c->_M_nxt + uVar11);\n      uVar11 = 0;\n    }\n    uVar1 = (this->output_addresses_)._M_h._M_bucket_count;\n    uVar7 = (uint)local_3c % uVar1;\n    local_38 = (this->output_addresses_)._M_h._M_buckets[uVar7];\n    if (local_38 != (__bucket_type)0x0) {\n      p_Var12 = local_38->_M_nxt[1]._M_nxt;\n      p_Var2 = local_38->_M_nxt;\n      while (p_Var9 = p_Var2, p_Var12 != local_3c) {\n        p_Var2 = p_Var9->_M_nxt;\n        if ((p_Var2 == (_Hash_node_base *)0x0) ||\n           (p_Var12 = p_Var2[1]._M_nxt, local_38 = p_Var9, uVar7 != (uint)p_Var12 % uVar1))\n        goto LAB_00112e0c;\n      }\n      if (local_38->_M_nxt != (_Hash_node_base *)0x0) {\n        iVar13 = (int)&(local_38->_M_nxt[2]._M_nxt)->_M_nxt + uVar11;\n        goto LAB_00112d6f;\n      }\n    }\nLAB_00112e0c:\n    EVar6 = gold::Merged_symbol_value<32>::value_from_output_section\n                      (this,(Relobj *)((ulonglong)uVar14 >> 0x20),\n                       *(uint *)(extraout_ECX + 8) & 0x7ffffff,(Elf_Addr)local_3c);\n    uVar11 = (uVar11 + EVar6) - (int)view;\n  }\n  if (object == (Arm_relobj<true> *)0x0) {\n    format = (char *)gettext(&UNK_00358c61 + unaff_EDI);\n    gold::gold_error(format);\n    return STATUS_BAD_RELOC;\n  }\n  uVar4 = (ushort)((uVar11 >> 0x1f) << 10) | (ushort)(uVar11 >> 0xc) & 0x3f | uVar8 & 0xfbc0;\n  *puVar5 = uVar4 << 8 | uVar4 >> 8;\n  uVar4 = (ushort)(uVar11 >> 1) & 0x7ff;\n  puVar5[1] = uVar4 << 8 |\n              (ushort)(uVar3 & 0xd000 | uVar4 | (ushort)((uVar11 >> 0x12 & 1) << 0xd) |\n                      (ushort)((uVar11 >> 0x13 & 1) << 0xb)) >> 8;\n  return (uint)(0x1fffff < uVar11 + 0x100000);\n}" type_identifier (ERROR "anon_unknown.dwarf_91258a::Arm_relocate_functions<true>::" identifier . identifier : : identifier < true > : :) (function_declarator "thm_jump19\n                 (uchar *view,Arm_relobj<true> *object,Symbol_value<32> *psymval,Arm_address address\n                 ,Arm_address thumb_bit)" identifier (parameter_list "(uchar *view,Arm_relobj<true> *object,Symbol_value<32> *psymval,Arm_address address\n                 ,Arm_address thumb_bit)" ( (parameter_declaration "uchar *view" type_identifier (pointer_declarator "*view" * identifier)) , (parameter_declaration "Arm_relobj<true> *object" type_identifier (ERROR "<true>" < true >) (pointer_declarator "*object" * identifier)) , (parameter_declaration "Symbol_value<32> *psymval" type_identifier (ERROR "<32>" < number_literal >) (pointer_declarator "*psymval" * identifier)) , (parameter_declaration "Arm_address address" type_identifier identifier) , (parameter_declaration "Arm_address thumb_bit" type_identifier identifier) ))) (compound_statement "{\n  Merged_symbol_value<32> *this;\n  uint uVar1;\n  _Hash_node_base *p_Var2;\n  ushort uVar3;\n  ushort uVar4;\n  Valtype *wv;\n  ushort *puVar5;\n  Elf_Addr EVar6;\n  char *format;\n  int extraout_ECX;\n  uint uVar7;\n  ushort uVar8;\n  __bucket_type p_Var9;\n  ushort uVar10;\n  uint uVar11;\n  _Hash_node_base *p_Var12;\n  int iVar13;\n  int unaff_EDI;\n  undefined8 uVar14;\n  _Hash_node_base *local_3c;\n  __bucket_type local_38;\n  \n  uVar14 = __x86_get_pc_thunk_di();\n  puVar5 = (ushort *)uVar14;\n  uVar4 = *puVar5 << 8;\n  uVar8 = uVar4 | *puVar5 >> 8;\n  uVar3 = puVar5[1] << 8;\n  uVar10 = uVar3 | puVar5[1] >> 8;\n  uVar11 = (uVar8 & 0x3f | uVar10 >> 4 & 0x80 | uVar8 >> 2 & 0x100 | uVar10 >> 7 & 0x40) << 0xc |\n           (uVar10 & 0x7ff) * 2;\n  if ((uVar4 & 0x400) != 0) {\n    uVar11 = uVar11 - 0x200000;\n  }\n  if ((char)*(byte *)(extraout_ECX + 0xb) < '\0') {\n    iVar13 = uVar11 + *(int *)(extraout_ECX + 0xc);\nLAB_00112d6f:\n    uVar11 = iVar13 - (int)view;\n  }\n  else {\n    if ((*(byte *)(extraout_ECX + 0xb) & 8) == 0) {\n                    /* WARNING: Subroutine does not return */\n      gold::do_gold_unreachable((char *)(unaff_EDI + 0x33a72e),0x6ab,(char *)(unaff_EDI + 0x357a35))\n      ;\n    }\n    this = *(Merged_symbol_value<32> **)(extraout_ECX + 0xc);\n    local_3c = (_Hash_node_base *)this->input_value_;\n    if (uVar11 < 0xffffff00) {\n      local_3c = (_Hash_node_base *)((int)&local_3c->_M_nxt + uVar11);\n      uVar11 = 0;\n    }\n    uVar1 = (this->output_addresses_)._M_h._M_bucket_count;\n    uVar7 = (uint)local_3c % uVar1;\n    local_38 = (this->output_addresses_)._M_h._M_buckets[uVar7];\n    if (local_38 != (__bucket_type)0x0) {\n      p_Var12 = local_38->_M_nxt[1]._M_nxt;\n      p_Var2 = local_38->_M_nxt;\n      while (p_Var9 = p_Var2, p_Var12 != local_3c) {\n        p_Var2 = p_Var9->_M_nxt;\n        if ((p_Var2 == (_Hash_node_base *)0x0) ||\n           (p_Var12 = p_Var2[1]._M_nxt, local_38 = p_Var9, uVar7 != (uint)p_Var12 % uVar1))\n        goto LAB_00112e0c;\n      }\n      if (local_38->_M_nxt != (_Hash_node_base *)0x0) {\n        iVar13 = (int)&(local_38->_M_nxt[2]._M_nxt)->_M_nxt + uVar11;\n        goto LAB_00112d6f;\n      }\n    }\nLAB_00112e0c:\n    EVar6 = gold::Merged_symbol_value<32>::value_from_output_section\n                      (this,(Relobj *)((ulonglong)uVar14 >> 0x20),\n                       *(uint *)(extraout_ECX + 8) & 0x7ffffff,(Elf_Addr)local_3c);\n    uVar11 = (uVar11 + EVar6) - (int)view;\n  }\n  if (object == (Arm_relobj<true> *)0x0) {\n    format = (char *)gettext(&UNK_00358c61 + unaff_EDI);\n    gold::gold_error(format);\n    return STATUS_BAD_RELOC;\n  }\n  uVar4 = (ushort)((uVar11 >> 0x1f) << 10) | (ushort)(uVar11 >> 0xc) & 0x3f | uVar8 & 0xfbc0;\n  *puVar5 = uVar4 << 8 | uVar4 >> 8;\n  uVar4 = (ushort)(uVar11 >> 1) & 0x7ff;\n  puVar5[1] = uVar4 << 8 |\n              (ushort)(uVar3 & 0xd000 | uVar4 | (ushort)((uVar11 >> 0x12 & 1) << 0xd) |\n                      (ushort)((uVar11 >> 0x13 & 1) << 0xb)) >> 8;\n  return (uint)(0x1fffff < uVar11 + 0x100000);\n}" { (expression_statement "Merged_symbol_value<32> *this;" (binary_expression "Merged_symbol_value<32> *this" (binary_expression "Merged_symbol_value<32" identifier < number_literal) > (pointer_expression "*this" * identifier)) ;) (declaration "uint uVar1;" type_identifier identifier ;) (declaration "_Hash_node_base *p_Var2;" type_identifier (pointer_declarator "*p_Var2" * identifier) ;) (declaration "ushort uVar3;" type_identifier identifier ;) (declaration "ushort uVar4;" type_identifier identifier ;) (declaration "Valtype *wv;" type_identifier (pointer_declarator "*wv" * identifier) ;) (declaration "ushort *puVar5;" type_identifier (pointer_declarator "*puVar5" * identifier) ;) (declaration "Elf_Addr EVar6;" type_identifier identifier ;) (declaration "char *format;" primitive_type (pointer_declarator "*format" * identifier) ;) (declaration "int extraout_ECX;" primitive_type identifier ;) (declaration "uint uVar7;" type_identifier identifier ;) (declaration "ushort uVar8;" type_identifier identifier ;) (declaration "__bucket_type p_Var9;" type_identifier identifier ;) (declaration "ushort uVar10;" type_identifier identifier ;) (declaration "uint uVar11;" type_identifier identifier ;) (declaration "_Hash_node_base *p_Var12;" type_identifier (pointer_declarator "*p_Var12" * identifier) ;) (declaration "int iVar13;" primitive_type identifier ;) (declaration "int unaff_EDI;" primitive_type identifier ;) (declaration "undefined8 uVar14;" type_identifier identifier ;) (declaration "_Hash_node_base *local_3c;" type_identifier (pointer_declarator "*local_3c" * identifier) ;) (declaration "__bucket_type local_38;" type_identifier identifier ;) (expression_statement "uVar14 = __x86_get_pc_thunk_di();" (assignment_expression "uVar14 = __x86_get_pc_thunk_di()" identifier = (call_expression "__x86_get_pc_thunk_di()" identifier (argument_list "()" ( )))) ;) (expression_statement "puVar5 = (ushort *)uVar14;" (assignment_expression "puVar5 = (ushort *)uVar14" identifier = (cast_expression "(ushort *)uVar14" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "uVar4 = *puVar5 << 8;" (assignment_expression "uVar4 = *puVar5 << 8" identifier = (binary_expression "*puVar5 << 8" (pointer_expression "*puVar5" * identifier) << number_literal)) ;) (expression_statement "uVar8 = uVar4 | *puVar5 >> 8;" (assignment_expression "uVar8 = uVar4 | *puVar5 >> 8" identifier = (binary_expression "uVar4 | *puVar5 >> 8" identifier | (binary_expression "*puVar5 >> 8" (pointer_expression "*puVar5" * identifier) >> number_literal))) ;) (expression_statement "uVar3 = puVar5[1] << 8;" (assignment_expression "uVar3 = puVar5[1] << 8" identifier = (binary_expression "puVar5[1] << 8" (subscript_expression "puVar5[1]" identifier [ number_literal ]) << number_literal)) ;) (expression_statement "uVar10 = uVar3 | puVar5[1] >> 8;" (assignment_expression "uVar10 = uVar3 | puVar5[1] >> 8" identifier = (binary_expression "uVar3 | puVar5[1] >> 8" identifier | (binary_expression "puVar5[1] >> 8" (subscript_expression "puVar5[1]" identifier [ number_literal ]) >> number_literal))) ;) (expression_statement "uVar11 = (uVar8 & 0x3f | uVar10 >> 4 & 0x80 | uVar8 >> 2 & 0x100 | uVar10 >> 7 & 0x40) << 0xc |\n           (uVar10 & 0x7ff) * 2;" (assignment_expression "uVar11 = (uVar8 & 0x3f | uVar10 >> 4 & 0x80 | uVar8 >> 2 & 0x100 | uVar10 >> 7 & 0x40) << 0xc |\n           (uVar10 & 0x7ff) * 2" identifier = (binary_expression "(uVar8 & 0x3f | uVar10 >> 4 & 0x80 | uVar8 >> 2 & 0x100 | uVar10 >> 7 & 0x40) << 0xc |\n           (uVar10 & 0x7ff) * 2" (binary_expression "(uVar8 & 0x3f | uVar10 >> 4 & 0x80 | uVar8 >> 2 & 0x100 | uVar10 >> 7 & 0x40) << 0xc" (parenthesized_expression "(uVar8 & 0x3f | uVar10 >> 4 & 0x80 | uVar8 >> 2 & 0x100 | uVar10 >> 7 & 0x40)" ( (binary_expression "uVar8 & 0x3f | uVar10 >> 4 & 0x80 | uVar8 >> 2 & 0x100 | uVar10 >> 7 & 0x40" (binary_expression "uVar8 & 0x3f | uVar10 >> 4 & 0x80 | uVar8 >> 2 & 0x100" (binary_expression "uVar8 & 0x3f | uVar10 >> 4 & 0x80" (binary_expression "uVar8 & 0x3f" identifier & number_literal) | (binary_expression "uVar10 >> 4 & 0x80" (binary_expression "uVar10 >> 4" identifier >> number_literal) & number_literal)) | (binary_expression "uVar8 >> 2 & 0x100" (binary_expression "uVar8 >> 2" identifier >> number_literal) & number_literal)) | (binary_expression "uVar10 >> 7 & 0x40" (binary_expression "uVar10 >> 7" identifier >> number_literal) & number_literal)) )) << number_literal) | (binary_expression "(uVar10 & 0x7ff) * 2" (parenthesized_expression "(uVar10 & 0x7ff)" ( (binary_expression "uVar10 & 0x7ff" identifier & number_literal) )) * number_literal))) ;) (if_statement "if ((uVar4 & 0x400) != 0) {\n    uVar11 = uVar11 - 0x200000;\n  }" if (parenthesized_expression "((uVar4 & 0x400) != 0)" ( (binary_expression "(uVar4 & 0x400) != 0" (parenthesized_expression "(uVar4 & 0x400)" ( (binary_expression "uVar4 & 0x400" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n    uVar11 = uVar11 - 0x200000;\n  }" { (expression_statement "uVar11 = uVar11 - 0x200000;" (assignment_expression "uVar11 = uVar11 - 0x200000" identifier = (binary_expression "uVar11 - 0x200000" identifier - number_literal)) ;) })) (if_statement "if ((char)*(byte *)(extraout_ECX + 0xb) < '\0') {\n    iVar13 = uVar11 + *(int *)(extraout_ECX + 0xc);\nLAB_00112d6f:\n    uVar11 = iVar13 - (int)view;\n  }\n  else {\n    if ((*(byte *)(extraout_ECX + 0xb) & 8) == 0) {\n                    /* WARNING: Subroutine does not return */\n      gold::do_gold_unreachable((char *)(unaff_EDI + 0x33a72e),0x6ab,(char *)(unaff_EDI + 0x357a35))\n      ;\n    }\n    this = *(Merged_symbol_value<32> **)(extraout_ECX + 0xc);\n    local_3c = (_Hash_node_base *)this->input_value_;\n    if (uVar11 < 0xffffff00) {\n      local_3c = (_Hash_node_base *)((int)&local_3c->_M_nxt + uVar11);\n      uVar11 = 0;\n    }\n    uVar1 = (this->output_addresses_)._M_h._M_bucket_count;\n    uVar7 = (uint)local_3c % uVar1;\n    local_38 = (this->output_addresses_)._M_h._M_buckets[uVar7];\n    if (local_38 != (__bucket_type)0x0) {\n      p_Var12 = local_38->_M_nxt[1]._M_nxt;\n      p_Var2 = local_38->_M_nxt;\n      while (p_Var9 = p_Var2, p_Var12 != local_3c) {\n        p_Var2 = p_Var9->_M_nxt;\n        if ((p_Var2 == (_Hash_node_base *)0x0) ||\n           (p_Var12 = p_Var2[1]._M_nxt, local_38 = p_Var9, uVar7 != (uint)p_Var12 % uVar1))\n        goto LAB_00112e0c;\n      }\n      if (local_38->_M_nxt != (_Hash_node_base *)0x0) {\n        iVar13 = (int)&(local_38->_M_nxt[2]._M_nxt)->_M_nxt + uVar11;\n        goto LAB_00112d6f;\n      }\n    }\nLAB_00112e0c:\n    EVar6 = gold::Merged_symbol_value<32>::value_from_output_section\n                      (this,(Relobj *)((ulonglong)uVar14 >> 0x20),\n                       *(uint *)(extraout_ECX + 8) & 0x7ffffff,(Elf_Addr)local_3c);\n    uVar11 = (uVar11 + EVar6) - (int)view;\n  }" if (parenthesized_expression "((char)*(byte *)(extraout_ECX + 0xb) < '\0')" ( (binary_expression "(char)*(byte *)(extraout_ECX + 0xb) < '\0'" (cast_expression "(char)*(byte *)(extraout_ECX + 0xb)" ( (type_descriptor "char" primitive_type) ) (pointer_expression "*(byte *)(extraout_ECX + 0xb)" * (cast_expression "(byte *)(extraout_ECX + 0xb)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(extraout_ECX + 0xb)" ( (binary_expression "extraout_ECX + 0xb" identifier + number_literal) ))))) < (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    iVar13 = uVar11 + *(int *)(extraout_ECX + 0xc);\nLAB_00112d6f:\n    uVar11 = iVar13 - (int)view;\n  }" { (expression_statement "iVar13 = uVar11 + *(int *)(extraout_ECX + 0xc);" (assignment_expression "iVar13 = uVar11 + *(int *)(extraout_ECX + 0xc)" identifier = (binary_expression "uVar11 + *(int *)(extraout_ECX + 0xc)" identifier + (pointer_expression "*(int *)(extraout_ECX + 0xc)" * (cast_expression "(int *)(extraout_ECX + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(extraout_ECX + 0xc)" ( (binary_expression "extraout_ECX + 0xc" identifier + number_literal) )))))) ;) (labeled_statement "LAB_00112d6f:\n    uVar11 = iVar13 - (int)view;" statement_identifier : (expression_statement "uVar11 = iVar13 - (int)view;" (assignment_expression "uVar11 = iVar13 - (int)view" identifier = (binary_expression "iVar13 - (int)view" identifier - (cast_expression "(int)view" ( (type_descriptor "int" primitive_type) ) identifier))) ;)) }) (else_clause "else {\n    if ((*(byte *)(extraout_ECX + 0xb) & 8) == 0) {\n                    /* WARNING: Subroutine does not return */\n      gold::do_gold_unreachable((char *)(unaff_EDI + 0x33a72e),0x6ab,(char *)(unaff_EDI + 0x357a35))\n      ;\n    }\n    this = *(Merged_symbol_value<32> **)(extraout_ECX + 0xc);\n    local_3c = (_Hash_node_base *)this->input_value_;\n    if (uVar11 < 0xffffff00) {\n      local_3c = (_Hash_node_base *)((int)&local_3c->_M_nxt + uVar11);\n      uVar11 = 0;\n    }\n    uVar1 = (this->output_addresses_)._M_h._M_bucket_count;\n    uVar7 = (uint)local_3c % uVar1;\n    local_38 = (this->output_addresses_)._M_h._M_buckets[uVar7];\n    if (local_38 != (__bucket_type)0x0) {\n      p_Var12 = local_38->_M_nxt[1]._M_nxt;\n      p_Var2 = local_38->_M_nxt;\n      while (p_Var9 = p_Var2, p_Var12 != local_3c) {\n        p_Var2 = p_Var9->_M_nxt;\n        if ((p_Var2 == (_Hash_node_base *)0x0) ||\n           (p_Var12 = p_Var2[1]._M_nxt, local_38 = p_Var9, uVar7 != (uint)p_Var12 % uVar1))\n        goto LAB_00112e0c;\n      }\n      if (local_38->_M_nxt != (_Hash_node_base *)0x0) {\n        iVar13 = (int)&(local_38->_M_nxt[2]._M_nxt)->_M_nxt + uVar11;\n        goto LAB_00112d6f;\n      }\n    }\nLAB_00112e0c:\n    EVar6 = gold::Merged_symbol_value<32>::value_from_output_section\n                      (this,(Relobj *)((ulonglong)uVar14 >> 0x20),\n                       *(uint *)(extraout_ECX + 8) & 0x7ffffff,(Elf_Addr)local_3c);\n    uVar11 = (uVar11 + EVar6) - (int)view;\n  }" else (compound_statement "{\n    if ((*(byte *)(extraout_ECX + 0xb) & 8) == 0) {\n                    /* WARNING: Subroutine does not return */\n      gold::do_gold_unreachable((char *)(unaff_EDI + 0x33a72e),0x6ab,(char *)(unaff_EDI + 0x357a35))\n      ;\n    }\n    this = *(Merged_symbol_value<32> **)(extraout_ECX + 0xc);\n    local_3c = (_Hash_node_base *)this->input_value_;\n    if (uVar11 < 0xffffff00) {\n      local_3c = (_Hash_node_base *)((int)&local_3c->_M_nxt + uVar11);\n      uVar11 = 0;\n    }\n    uVar1 = (this->output_addresses_)._M_h._M_bucket_count;\n    uVar7 = (uint)local_3c % uVar1;\n    local_38 = (this->output_addresses_)._M_h._M_buckets[uVar7];\n    if (local_38 != (__bucket_type)0x0) {\n      p_Var12 = local_38->_M_nxt[1]._M_nxt;\n      p_Var2 = local_38->_M_nxt;\n      while (p_Var9 = p_Var2, p_Var12 != local_3c) {\n        p_Var2 = p_Var9->_M_nxt;\n        if ((p_Var2 == (_Hash_node_base *)0x0) ||\n           (p_Var12 = p_Var2[1]._M_nxt, local_38 = p_Var9, uVar7 != (uint)p_Var12 % uVar1))\n        goto LAB_00112e0c;\n      }\n      if (local_38->_M_nxt != (_Hash_node_base *)0x0) {\n        iVar13 = (int)&(local_38->_M_nxt[2]._M_nxt)->_M_nxt + uVar11;\n        goto LAB_00112d6f;\n      }\n    }\nLAB_00112e0c:\n    EVar6 = gold::Merged_symbol_value<32>::value_from_output_section\n                      (this,(Relobj *)((ulonglong)uVar14 >> 0x20),\n                       *(uint *)(extraout_ECX + 8) & 0x7ffffff,(Elf_Addr)local_3c);\n    uVar11 = (uVar11 + EVar6) - (int)view;\n  }" { (if_statement "if ((*(byte *)(extraout_ECX + 0xb) & 8) == 0) {\n                    /* WARNING: Subroutine does not return */\n      gold::do_gold_unreachable((char *)(unaff_EDI + 0x33a72e),0x6ab,(char *)(unaff_EDI + 0x357a35))\n      ;\n    }" if (parenthesized_expression "((*(byte *)(extraout_ECX + 0xb) & 8) == 0)" ( (binary_expression "(*(byte *)(extraout_ECX + 0xb) & 8) == 0" (parenthesized_expression "(*(byte *)(extraout_ECX + 0xb) & 8)" ( (binary_expression "*(byte *)(extraout_ECX + 0xb) & 8" (pointer_expression "*(byte *)(extraout_ECX + 0xb)" * (cast_expression "(byte *)(extraout_ECX + 0xb)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(extraout_ECX + 0xb)" ( (binary_expression "extraout_ECX + 0xb" identifier + number_literal) )))) & number_literal) )) == number_literal) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n      gold::do_gold_unreachable((char *)(unaff_EDI + 0x33a72e),0x6ab,(char *)(unaff_EDI + 0x357a35))\n      ;\n    }" { comment (labeled_statement "gold::do_gold_unreachable((char *)(unaff_EDI + 0x33a72e),0x6ab,(char *)(unaff_EDI + 0x357a35))\n      ;" statement_identifier : (ERROR ":" :) (expression_statement "do_gold_unreachable((char *)(unaff_EDI + 0x33a72e),0x6ab,(char *)(unaff_EDI + 0x357a35))\n      ;" (call_expression "do_gold_unreachable((char *)(unaff_EDI + 0x33a72e),0x6ab,(char *)(unaff_EDI + 0x357a35))" identifier (argument_list "((char *)(unaff_EDI + 0x33a72e),0x6ab,(char *)(unaff_EDI + 0x357a35))" ( (cast_expression "(char *)(unaff_EDI + 0x33a72e)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x33a72e)" ( (binary_expression "unaff_EDI + 0x33a72e" identifier + number_literal) ))) , number_literal , (cast_expression "(char *)(unaff_EDI + 0x357a35)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x357a35)" ( (binary_expression "unaff_EDI + 0x357a35" identifier + number_literal) ))) ))) ;)) })) (expression_statement "this = *(Merged_symbol_value<32> **)(extraout_ECX + 0xc);" (assignment_expression "this = *(Merged_symbol_value<32> **)(extraout_ECX + 0xc)" identifier = (pointer_expression "*(Merged_symbol_value<32> **)(extraout_ECX + 0xc)" * (call_expression "(Merged_symbol_value<32> **)(extraout_ECX + 0xc)" (parenthesized_expression "(Merged_symbol_value<32> **)" ( (binary_expression "Merged_symbol_value<32> **" (binary_expression "Merged_symbol_value<32" identifier < number_literal) > (pointer_expression "**" * (pointer_expression "*" * identifier))) )) (argument_list "(extraout_ECX + 0xc)" ( (binary_expression "extraout_ECX + 0xc" identifier + number_literal) ))))) ;) (expression_statement "local_3c = (_Hash_node_base *)this->input_value_;" (assignment_expression "local_3c = (_Hash_node_base *)this->input_value_" identifier = (cast_expression "(_Hash_node_base *)this->input_value_" ( (type_descriptor "_Hash_node_base *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "this->input_value_" identifier -> field_identifier))) ;) (if_statement "if (uVar11 < 0xffffff00) {\n      local_3c = (_Hash_node_base *)((int)&local_3c->_M_nxt + uVar11);\n      uVar11 = 0;\n    }" if (parenthesized_expression "(uVar11 < 0xffffff00)" ( (binary_expression "uVar11 < 0xffffff00" identifier < number_literal) )) (compound_statement "{\n      local_3c = (_Hash_node_base *)((int)&local_3c->_M_nxt + uVar11);\n      uVar11 = 0;\n    }" { (expression_statement "local_3c = (_Hash_node_base *)((int)&local_3c->_M_nxt + uVar11);" (assignment_expression "local_3c = (_Hash_node_base *)((int)&local_3c->_M_nxt + uVar11)" identifier = (cast_expression "(_Hash_node_base *)((int)&local_3c->_M_nxt + uVar11)" ( (type_descriptor "_Hash_node_base *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&local_3c->_M_nxt + uVar11)" ( (binary_expression "(int)&local_3c->_M_nxt + uVar11" (cast_expression "(int)&local_3c->_M_nxt" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&local_3c->_M_nxt" & (field_expression "local_3c->_M_nxt" identifier -> field_identifier))) + identifier) )))) ;) (expression_statement "uVar11 = 0;" (assignment_expression "uVar11 = 0" identifier = number_literal) ;) })) (expression_statement "uVar1 = (this->output_addresses_)._M_h._M_bucket_count;" (assignment_expression "uVar1 = (this->output_addresses_)._M_h._M_bucket_count" identifier = (field_expression "(this->output_addresses_)._M_h._M_bucket_count" (field_expression "(this->output_addresses_)._M_h" (parenthesized_expression "(this->output_addresses_)" ( (field_expression "this->output_addresses_" identifier -> field_identifier) )) . field_identifier) . field_identifier)) ;) (expression_statement "uVar7 = (uint)local_3c % uVar1;" (assignment_expression "uVar7 = (uint)local_3c % uVar1" identifier = (binary_expression "(uint)local_3c % uVar1" (cast_expression "(uint)local_3c" ( (type_descriptor "uint" type_identifier) ) identifier) % identifier)) ;) (expression_statement "local_38 = (this->output_addresses_)._M_h._M_buckets[uVar7];" (assignment_expression "local_38 = (this->output_addresses_)._M_h._M_buckets[uVar7]" identifier = (subscript_expression "(this->output_addresses_)._M_h._M_buckets[uVar7]" (field_expression "(this->output_addresses_)._M_h._M_buckets" (field_expression "(this->output_addresses_)._M_h" (parenthesized_expression "(this->output_addresses_)" ( (field_expression "this->output_addresses_" identifier -> field_identifier) )) . field_identifier) . field_identifier) [ identifier ])) ;) (if_statement "if (local_38 != (__bucket_type)0x0) {\n      p_Var12 = local_38->_M_nxt[1]._M_nxt;\n      p_Var2 = local_38->_M_nxt;\n      while (p_Var9 = p_Var2, p_Var12 != local_3c) {\n        p_Var2 = p_Var9->_M_nxt;\n        if ((p_Var2 == (_Hash_node_base *)0x0) ||\n           (p_Var12 = p_Var2[1]._M_nxt, local_38 = p_Var9, uVar7 != (uint)p_Var12 % uVar1))\n        goto LAB_00112e0c;\n      }\n      if (local_38->_M_nxt != (_Hash_node_base *)0x0) {\n        iVar13 = (int)&(local_38->_M_nxt[2]._M_nxt)->_M_nxt + uVar11;\n        goto LAB_00112d6f;\n      }\n    }" if (parenthesized_expression "(local_38 != (__bucket_type)0x0)" ( (binary_expression "local_38 != (__bucket_type)0x0" identifier != (cast_expression "(__bucket_type)0x0" ( (type_descriptor "__bucket_type" type_identifier) ) number_literal)) )) (compound_statement "{\n      p_Var12 = local_38->_M_nxt[1]._M_nxt;\n      p_Var2 = local_38->_M_nxt;\n      while (p_Var9 = p_Var2, p_Var12 != local_3c) {\n        p_Var2 = p_Var9->_M_nxt;\n        if ((p_Var2 == (_Hash_node_base *)0x0) ||\n           (p_Var12 = p_Var2[1]._M_nxt, local_38 = p_Var9, uVar7 != (uint)p_Var12 % uVar1))\n        goto LAB_00112e0c;\n      }\n      if (local_38->_M_nxt != (_Hash_node_base *)0x0) {\n        iVar13 = (int)&(local_38->_M_nxt[2]._M_nxt)->_M_nxt + uVar11;\n        goto LAB_00112d6f;\n      }\n    }" { (expression_statement "p_Var12 = local_38->_M_nxt[1]._M_nxt;" (assignment_expression "p_Var12 = local_38->_M_nxt[1]._M_nxt" identifier = (field_expression "local_38->_M_nxt[1]._M_nxt" (subscript_expression "local_38->_M_nxt[1]" (field_expression "local_38->_M_nxt" identifier -> field_identifier) [ number_literal ]) . field_identifier)) ;) (expression_statement "p_Var2 = local_38->_M_nxt;" (assignment_expression "p_Var2 = local_38->_M_nxt" identifier = (field_expression "local_38->_M_nxt" identifier -> field_identifier)) ;) (while_statement "while (p_Var9 = p_Var2, p_Var12 != local_3c) {\n        p_Var2 = p_Var9->_M_nxt;\n        if ((p_Var2 == (_Hash_node_base *)0x0) ||\n           (p_Var12 = p_Var2[1]._M_nxt, local_38 = p_Var9, uVar7 != (uint)p_Var12 % uVar1))\n        goto LAB_00112e0c;\n      }" while (parenthesized_expression "(p_Var9 = p_Var2, p_Var12 != local_3c)" ( (comma_expression "p_Var9 = p_Var2, p_Var12 != local_3c" (assignment_expression "p_Var9 = p_Var2" identifier = identifier) , (binary_expression "p_Var12 != local_3c" identifier != identifier)) )) (compound_statement "{\n        p_Var2 = p_Var9->_M_nxt;\n        if ((p_Var2 == (_Hash_node_base *)0x0) ||\n           (p_Var12 = p_Var2[1]._M_nxt, local_38 = p_Var9, uVar7 != (uint)p_Var12 % uVar1))\n        goto LAB_00112e0c;\n      }" { (expression_statement "p_Var2 = p_Var9->_M_nxt;" (assignment_expression "p_Var2 = p_Var9->_M_nxt" identifier = (field_expression "p_Var9->_M_nxt" identifier -> field_identifier)) ;) (if_statement "if ((p_Var2 == (_Hash_node_base *)0x0) ||\n           (p_Var12 = p_Var2[1]._M_nxt, local_38 = p_Var9, uVar7 != (uint)p_Var12 % uVar1))\n        goto LAB_00112e0c;" if (parenthesized_expression "((p_Var2 == (_Hash_node_base *)0x0) ||\n           (p_Var12 = p_Var2[1]._M_nxt, local_38 = p_Var9, uVar7 != (uint)p_Var12 % uVar1))" ( (binary_expression "(p_Var2 == (_Hash_node_base *)0x0) ||\n           (p_Var12 = p_Var2[1]._M_nxt, local_38 = p_Var9, uVar7 != (uint)p_Var12 % uVar1)" (parenthesized_expression "(p_Var2 == (_Hash_node_base *)0x0)" ( (binary_expression "p_Var2 == (_Hash_node_base *)0x0" identifier == (cast_expression "(_Hash_node_base *)0x0" ( (type_descriptor "_Hash_node_base *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) || (parenthesized_expression "(p_Var12 = p_Var2[1]._M_nxt, local_38 = p_Var9, uVar7 != (uint)p_Var12 % uVar1)" ( (comma_expression "p_Var12 = p_Var2[1]._M_nxt, local_38 = p_Var9, uVar7 != (uint)p_Var12 % uVar1" (assignment_expression "p_Var12 = p_Var2[1]._M_nxt" identifier = (field_expression "p_Var2[1]._M_nxt" (subscript_expression "p_Var2[1]" identifier [ number_literal ]) . field_identifier)) , (comma_expression "local_38 = p_Var9, uVar7 != (uint)p_Var12 % uVar1" (assignment_expression "local_38 = p_Var9" identifier = identifier) , (binary_expression "uVar7 != (uint)p_Var12 % uVar1" identifier != (binary_expression "(uint)p_Var12 % uVar1" (cast_expression "(uint)p_Var12" ( (type_descriptor "uint" type_identifier) ) identifier) % identifier)))) ))) )) (goto_statement "goto LAB_00112e0c;" goto statement_identifier ;)) })) (if_statement "if (local_38->_M_nxt != (_Hash_node_base *)0x0) {\n        iVar13 = (int)&(local_38->_M_nxt[2]._M_nxt)->_M_nxt + uVar11;\n        goto LAB_00112d6f;\n      }" if (parenthesized_expression "(local_38->_M_nxt != (_Hash_node_base *)0x0)" ( (binary_expression "local_38->_M_nxt != (_Hash_node_base *)0x0" (field_expression "local_38->_M_nxt" identifier -> field_identifier) != (cast_expression "(_Hash_node_base *)0x0" ( (type_descriptor "_Hash_node_base *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        iVar13 = (int)&(local_38->_M_nxt[2]._M_nxt)->_M_nxt + uVar11;\n        goto LAB_00112d6f;\n      }" { (expression_statement "iVar13 = (int)&(local_38->_M_nxt[2]._M_nxt)->_M_nxt + uVar11;" (assignment_expression "iVar13 = (int)&(local_38->_M_nxt[2]._M_nxt)->_M_nxt + uVar11" identifier = (binary_expression "(int)&(local_38->_M_nxt[2]._M_nxt)->_M_nxt + uVar11" (cast_expression "(int)&(local_38->_M_nxt[2]._M_nxt)->_M_nxt" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&(local_38->_M_nxt[2]._M_nxt)->_M_nxt" & (field_expression "(local_38->_M_nxt[2]._M_nxt)->_M_nxt" (parenthesized_expression "(local_38->_M_nxt[2]._M_nxt)" ( (field_expression "local_38->_M_nxt[2]._M_nxt" (subscript_expression "local_38->_M_nxt[2]" (field_expression "local_38->_M_nxt" identifier -> field_identifier) [ number_literal ]) . field_identifier) )) -> field_identifier))) + identifier)) ;) (goto_statement "goto LAB_00112d6f;" goto statement_identifier ;) })) })) (labeled_statement "LAB_00112e0c:\n    EVar6 = gold::Merged_symbol_value<32>::value_from_output_section\n                      (this,(Relobj *)((ulonglong)uVar14 >> 0x20),\n                       *(uint *)(extraout_ECX + 8) & 0x7ffffff,(Elf_Addr)local_3c);" statement_identifier : (ERROR "EVar6 = gold::" (assignment_expression "EVar6 = gold" identifier = identifier) : :) (expression_statement "Merged_symbol_value<32>::value_from_output_section\n                      (this,(Relobj *)((ulonglong)uVar14 >> 0x20),\n                       *(uint *)(extraout_ECX + 8) & 0x7ffffff,(Elf_Addr)local_3c);" (binary_expression "Merged_symbol_value<32>::value_from_output_section\n                      (this,(Relobj *)((ulonglong)uVar14 >> 0x20),\n                       *(uint *)(extraout_ECX + 8) & 0x7ffffff,(Elf_Addr)local_3c)" (binary_expression "Merged_symbol_value<32" identifier < number_literal) > (ERROR "::" : :) (call_expression "value_from_output_section\n                      (this,(Relobj *)((ulonglong)uVar14 >> 0x20),\n                       *(uint *)(extraout_ECX + 8) & 0x7ffffff,(Elf_Addr)local_3c)" identifier (argument_list "(this,(Relobj *)((ulonglong)uVar14 >> 0x20),\n                       *(uint *)(extraout_ECX + 8) & 0x7ffffff,(Elf_Addr)local_3c)" ( identifier , (cast_expression "(Relobj *)((ulonglong)uVar14 >> 0x20)" ( (type_descriptor "Relobj *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((ulonglong)uVar14 >> 0x20)" ( (binary_expression "(ulonglong)uVar14 >> 0x20" (cast_expression "(ulonglong)uVar14" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) ))) , (binary_expression "*(uint *)(extraout_ECX + 8) & 0x7ffffff" (pointer_expression "*(uint *)(extraout_ECX + 8)" * (cast_expression "(uint *)(extraout_ECX + 8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(extraout_ECX + 8)" ( (binary_expression "extraout_ECX + 8" identifier + number_literal) )))) & number_literal) , (cast_expression "(Elf_Addr)local_3c" ( (type_descriptor "Elf_Addr" type_identifier) ) identifier) )))) ;)) (expression_statement "uVar11 = (uVar11 + EVar6) - (int)view;" (assignment_expression "uVar11 = (uVar11 + EVar6) - (int)view" identifier = (binary_expression "(uVar11 + EVar6) - (int)view" (parenthesized_expression "(uVar11 + EVar6)" ( (binary_expression "uVar11 + EVar6" identifier + identifier) )) - (cast_expression "(int)view" ( (type_descriptor "int" primitive_type) ) identifier))) ;) }))) (if_statement "if (object == (Arm_relobj<true> *)0x0) {\n    format = (char *)gettext(&UNK_00358c61 + unaff_EDI);\n    gold::gold_error(format);\n    return STATUS_BAD_RELOC;\n  }" if (parenthesized_expression "(object == (Arm_relobj<true> *)0x0)" ( (binary_expression "object == (Arm_relobj<true> *)0x0)" identifier == (parenthesized_expression "(Arm_relobj<true> *)0x0)" ( (binary_expression "Arm_relobj<true> *)0x0" (binary_expression "Arm_relobj<true" identifier < true) > (pointer_expression "*)0x0" * (ERROR ")" )) number_literal)) ))) )) (compound_statement "{\n    format = (char *)gettext(&UNK_00358c61 + unaff_EDI);\n    gold::gold_error(format);\n    return STATUS_BAD_RELOC;\n  }" { (expression_statement "format = (char *)gettext(&UNK_00358c61 + unaff_EDI);" (assignment_expression "format = (char *)gettext(&UNK_00358c61 + unaff_EDI)" identifier = (cast_expression "(char *)gettext(&UNK_00358c61 + unaff_EDI)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "gettext(&UNK_00358c61 + unaff_EDI)" identifier (argument_list "(&UNK_00358c61 + unaff_EDI)" ( (binary_expression "&UNK_00358c61 + unaff_EDI" (pointer_expression "&UNK_00358c61" & identifier) + identifier) ))))) ;) (labeled_statement "gold::gold_error(format);" statement_identifier : (ERROR ":" :) (expression_statement "gold_error(format);" (call_expression "gold_error(format)" identifier (argument_list "(format)" ( identifier ))) ;)) (return_statement "return STATUS_BAD_RELOC;" return identifier ;) })) (expression_statement "uVar4 = (ushort)((uVar11 >> 0x1f) << 10) | (ushort)(uVar11 >> 0xc) & 0x3f | uVar8 & 0xfbc0;" (assignment_expression "uVar4 = (ushort)((uVar11 >> 0x1f) << 10) | (ushort)(uVar11 >> 0xc) & 0x3f | uVar8 & 0xfbc0" identifier = (binary_expression "(ushort)((uVar11 >> 0x1f) << 10) | (ushort)(uVar11 >> 0xc) & 0x3f | uVar8 & 0xfbc0" (binary_expression "(ushort)((uVar11 >> 0x1f) << 10) | (ushort)(uVar11 >> 0xc) & 0x3f" (call_expression "(ushort)((uVar11 >> 0x1f) << 10)" (parenthesized_expression "(ushort)" ( identifier )) (argument_list "((uVar11 >> 0x1f) << 10)" ( (binary_expression "(uVar11 >> 0x1f) << 10" (parenthesized_expression "(uVar11 >> 0x1f)" ( (binary_expression "uVar11 >> 0x1f" identifier >> number_literal) )) << number_literal) ))) | (binary_expression "(ushort)(uVar11 >> 0xc) & 0x3f" (call_expression "(ushort)(uVar11 >> 0xc)" (parenthesized_expression "(ushort)" ( identifier )) (argument_list "(uVar11 >> 0xc)" ( (binary_expression "uVar11 >> 0xc" identifier >> number_literal) ))) & number_literal)) | (binary_expression "uVar8 & 0xfbc0" identifier & number_literal))) ;) (expression_statement "*puVar5 = uVar4 << 8 | uVar4 >> 8;" (assignment_expression "*puVar5 = uVar4 << 8 | uVar4 >> 8" (pointer_expression "*puVar5" * identifier) = (binary_expression "uVar4 << 8 | uVar4 >> 8" (binary_expression "uVar4 << 8" identifier << number_literal) | (binary_expression "uVar4 >> 8" identifier >> number_literal))) ;) (expression_statement "uVar4 = (ushort)(uVar11 >> 1) & 0x7ff;" (assignment_expression "uVar4 = (ushort)(uVar11 >> 1) & 0x7ff" identifier = (binary_expression "(ushort)(uVar11 >> 1) & 0x7ff" (call_expression "(ushort)(uVar11 >> 1)" (parenthesized_expression "(ushort)" ( identifier )) (argument_list "(uVar11 >> 1)" ( (binary_expression "uVar11 >> 1" identifier >> number_literal) ))) & number_literal)) ;) (expression_statement "puVar5[1] = uVar4 << 8 |\n              (ushort)(uVar3 & 0xd000 | uVar4 | (ushort)((uVar11 >> 0x12 & 1) << 0xd) |\n                      (ushort)((uVar11 >> 0x13 & 1) << 0xb)) >> 8;" (assignment_expression "puVar5[1] = uVar4 << 8 |\n              (ushort)(uVar3 & 0xd000 | uVar4 | (ushort)((uVar11 >> 0x12 & 1) << 0xd) |\n                      (ushort)((uVar11 >> 0x13 & 1) << 0xb)) >> 8" (subscript_expression "puVar5[1]" identifier [ number_literal ]) = (binary_expression "uVar4 << 8 |\n              (ushort)(uVar3 & 0xd000 | uVar4 | (ushort)((uVar11 >> 0x12 & 1) << 0xd) |\n                      (ushort)((uVar11 >> 0x13 & 1) << 0xb)) >> 8" (binary_expression "uVar4 << 8" identifier << number_literal) | (binary_expression "(ushort)(uVar3 & 0xd000 | uVar4 | (ushort)((uVar11 >> 0x12 & 1) << 0xd) |\n                      (ushort)((uVar11 >> 0x13 & 1) << 0xb)) >> 8" (call_expression "(ushort)(uVar3 & 0xd000 | uVar4 | (ushort)((uVar11 >> 0x12 & 1) << 0xd) |\n                      (ushort)((uVar11 >> 0x13 & 1) << 0xb))" (parenthesized_expression "(ushort)" ( identifier )) (argument_list "(uVar3 & 0xd000 | uVar4 | (ushort)((uVar11 >> 0x12 & 1) << 0xd) |\n                      (ushort)((uVar11 >> 0x13 & 1) << 0xb))" ( (binary_expression "uVar3 & 0xd000 | uVar4 | (ushort)((uVar11 >> 0x12 & 1) << 0xd) |\n                      (ushort)((uVar11 >> 0x13 & 1) << 0xb)" (binary_expression "uVar3 & 0xd000 | uVar4 | (ushort)((uVar11 >> 0x12 & 1) << 0xd)" (binary_expression "uVar3 & 0xd000 | uVar4" (binary_expression "uVar3 & 0xd000" identifier & number_literal) | identifier) | (call_expression "(ushort)((uVar11 >> 0x12 & 1) << 0xd)" (parenthesized_expression "(ushort)" ( identifier )) (argument_list "((uVar11 >> 0x12 & 1) << 0xd)" ( (binary_expression "(uVar11 >> 0x12 & 1) << 0xd" (parenthesized_expression "(uVar11 >> 0x12 & 1)" ( (binary_expression "uVar11 >> 0x12 & 1" (binary_expression "uVar11 >> 0x12" identifier >> number_literal) & number_literal) )) << number_literal) )))) | (call_expression "(ushort)((uVar11 >> 0x13 & 1) << 0xb)" (parenthesized_expression "(ushort)" ( identifier )) (argument_list "((uVar11 >> 0x13 & 1) << 0xb)" ( (binary_expression "(uVar11 >> 0x13 & 1) << 0xb" (parenthesized_expression "(uVar11 >> 0x13 & 1)" ( (binary_expression "uVar11 >> 0x13 & 1" (binary_expression "uVar11 >> 0x13" identifier >> number_literal) & number_literal) )) << number_literal) )))) ))) >> number_literal))) ;) (return_statement "return (uint)(0x1fffff < uVar11 + 0x100000);" return (call_expression "(uint)(0x1fffff < uVar11 + 0x100000)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(0x1fffff < uVar11 + 0x100000)" ( (binary_expression "0x1fffff < uVar11 + 0x100000" number_literal < (binary_expression "uVar11 + 0x100000" identifier + number_literal)) ))) ;) })))
(translation_unit "bool FUN_00112c50(int param_1,int param_2)\n\n{\n  uint *puVar1;\n  int *piVar2;\n  ushort uVar3;\n  ushort uVar4;\n  ushort *puVar5;\n  undefined4 uVar6;\n  int extraout_ECX;\n  uint uVar7;\n  ushort uVar8;\n  int *piVar9;\n  ushort uVar10;\n  uint uVar11;\n  uint uVar12;\n  int iVar13;\n  int unaff_EDI;\n  undefined8 uVar14;\n  uint local_3c;\n  int *local_38;\n  \n  uVar14 = FUN_00074f0a();\n  puVar5 = (ushort *)uVar14;\n  uVar4 = *puVar5 << 8;\n  uVar8 = uVar4 | *puVar5 >> 8;\n  uVar3 = puVar5[1] << 8;\n  uVar10 = uVar3 | puVar5[1] >> 8;\n  uVar11 = (uVar8 & 0x3f | uVar10 >> 4 & 0x80 | uVar8 >> 2 & 0x100 | uVar10 >> 7 & 0x40) << 0xc |\n           (uVar10 & 0x7ff) * 2;\n  if ((uVar4 & 0x400) != 0) {\n    uVar11 = uVar11 - 0x200000;\n  }\n  if ((char)*(byte *)(extraout_ECX + 0xb) < '\0') {\n    iVar13 = uVar11 + *(int *)(extraout_ECX + 0xc);\nLAB_00112d6f:\n    uVar11 = iVar13 - param_1;\n  }\n  else {\n    if ((*(byte *)(extraout_ECX + 0xb) & 8) == 0) {\n                    \n      FUN_002446e0(unaff_EDI + 0x33a72e,0x6ab,unaff_EDI + 0x357a35,(uint)(uVar10 >> 7));\n    }\n    puVar1 = *(uint **)(extraout_ECX + 0xc);\n    local_3c = *puVar1;\n    if (uVar11 < 0xffffff00) {\n      local_3c = local_3c + uVar11;\n      uVar11 = 0;\n    }\n    uVar7 = local_3c % puVar1[3];\n    local_38 = *(int **)(puVar1[2] + uVar7 * 4);\n    if (local_38 != (int *)0x0) {\n      uVar12 = ((int *)*local_38)[1];\n      piVar2 = (int *)*local_38;\n      while (piVar9 = piVar2, uVar12 != local_3c) {\n        piVar2 = (int *)*piVar9;\n        if ((piVar2 == (int *)0x0) ||\n           (uVar12 = piVar2[1], local_38 = piVar9, uVar7 != uVar12 % puVar1[3])) goto LAB_00112e0c;\n      }\n      if (*local_38 != 0) {\n        iVar13 = uVar11 + *(int *)(*local_38 + 8);\n        goto LAB_00112d6f;\n      }\n    }\nLAB_00112e0c:\n    iVar13 = FUN_00318cf0(puVar1,(int)((ulonglong)uVar14 >> 0x20),\n                          *(uint *)(extraout_ECX + 8) & 0x7ffffff,local_3c);\n    uVar11 = (uVar11 + iVar13) - param_1;\n  }\n  if (param_2 == 0) {\n    uVar6 = gettext(unaff_EDI + 0x358c61);\n    FUN_0023b810(uVar6);\n    return (bool)2;\n  }\n  uVar4 = (ushort)((uVar11 >> 0x1f) << 10) | (ushort)(uVar11 >> 0xc) & 0x3f | uVar8 & 0xfbc0;\n  *puVar5 = uVar4 << 8 | uVar4 >> 8;\n  uVar4 = (ushort)(uVar11 >> 1) & 0x7ff;\n  puVar5[1] = uVar4 << 8 |\n              (ushort)(uVar3 & 0xd000 | uVar4 | (ushort)((uVar11 >> 0x12 & 1) << 0xd) |\n                      (ushort)((uVar11 >> 0x13 & 1) << 0xb)) >> 8;\n  return 0x1fffff < uVar11 + 0x100000;\n}\n\n" (function_definition "bool FUN_00112c50(int param_1,int param_2)\n\n{\n  uint *puVar1;\n  int *piVar2;\n  ushort uVar3;\n  ushort uVar4;\n  ushort *puVar5;\n  undefined4 uVar6;\n  int extraout_ECX;\n  uint uVar7;\n  ushort uVar8;\n  int *piVar9;\n  ushort uVar10;\n  uint uVar11;\n  uint uVar12;\n  int iVar13;\n  int unaff_EDI;\n  undefined8 uVar14;\n  uint local_3c;\n  int *local_38;\n  \n  uVar14 = FUN_00074f0a();\n  puVar5 = (ushort *)uVar14;\n  uVar4 = *puVar5 << 8;\n  uVar8 = uVar4 | *puVar5 >> 8;\n  uVar3 = puVar5[1] << 8;\n  uVar10 = uVar3 | puVar5[1] >> 8;\n  uVar11 = (uVar8 & 0x3f | uVar10 >> 4 & 0x80 | uVar8 >> 2 & 0x100 | uVar10 >> 7 & 0x40) << 0xc |\n           (uVar10 & 0x7ff) * 2;\n  if ((uVar4 & 0x400) != 0) {\n    uVar11 = uVar11 - 0x200000;\n  }\n  if ((char)*(byte *)(extraout_ECX + 0xb) < '\0') {\n    iVar13 = uVar11 + *(int *)(extraout_ECX + 0xc);\nLAB_00112d6f:\n    uVar11 = iVar13 - param_1;\n  }\n  else {\n    if ((*(byte *)(extraout_ECX + 0xb) & 8) == 0) {\n                    \n      FUN_002446e0(unaff_EDI + 0x33a72e,0x6ab,unaff_EDI + 0x357a35,(uint)(uVar10 >> 7));\n    }\n    puVar1 = *(uint **)(extraout_ECX + 0xc);\n    local_3c = *puVar1;\n    if (uVar11 < 0xffffff00) {\n      local_3c = local_3c + uVar11;\n      uVar11 = 0;\n    }\n    uVar7 = local_3c % puVar1[3];\n    local_38 = *(int **)(puVar1[2] + uVar7 * 4);\n    if (local_38 != (int *)0x0) {\n      uVar12 = ((int *)*local_38)[1];\n      piVar2 = (int *)*local_38;\n      while (piVar9 = piVar2, uVar12 != local_3c) {\n        piVar2 = (int *)*piVar9;\n        if ((piVar2 == (int *)0x0) ||\n           (uVar12 = piVar2[1], local_38 = piVar9, uVar7 != uVar12 % puVar1[3])) goto LAB_00112e0c;\n      }\n      if (*local_38 != 0) {\n        iVar13 = uVar11 + *(int *)(*local_38 + 8);\n        goto LAB_00112d6f;\n      }\n    }\nLAB_00112e0c:\n    iVar13 = FUN_00318cf0(puVar1,(int)((ulonglong)uVar14 >> 0x20),\n                          *(uint *)(extraout_ECX + 8) & 0x7ffffff,local_3c);\n    uVar11 = (uVar11 + iVar13) - param_1;\n  }\n  if (param_2 == 0) {\n    uVar6 = gettext(unaff_EDI + 0x358c61);\n    FUN_0023b810(uVar6);\n    return (bool)2;\n  }\n  uVar4 = (ushort)((uVar11 >> 0x1f) << 10) | (ushort)(uVar11 >> 0xc) & 0x3f | uVar8 & 0xfbc0;\n  *puVar5 = uVar4 << 8 | uVar4 >> 8;\n  uVar4 = (ushort)(uVar11 >> 1) & 0x7ff;\n  puVar5[1] = uVar4 << 8 |\n              (ushort)(uVar3 & 0xd000 | uVar4 | (ushort)((uVar11 >> 0x12 & 1) << 0xd) |\n                      (ushort)((uVar11 >> 0x13 & 1) << 0xb)) >> 8;\n  return 0x1fffff < uVar11 + 0x100000;\n}" primitive_type (function_declarator "FUN_00112c50(int param_1,int param_2)" identifier (parameter_list "(int param_1,int param_2)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "int param_2" primitive_type identifier) ))) (compound_statement "{\n  uint *puVar1;\n  int *piVar2;\n  ushort uVar3;\n  ushort uVar4;\n  ushort *puVar5;\n  undefined4 uVar6;\n  int extraout_ECX;\n  uint uVar7;\n  ushort uVar8;\n  int *piVar9;\n  ushort uVar10;\n  uint uVar11;\n  uint uVar12;\n  int iVar13;\n  int unaff_EDI;\n  undefined8 uVar14;\n  uint local_3c;\n  int *local_38;\n  \n  uVar14 = FUN_00074f0a();\n  puVar5 = (ushort *)uVar14;\n  uVar4 = *puVar5 << 8;\n  uVar8 = uVar4 | *puVar5 >> 8;\n  uVar3 = puVar5[1] << 8;\n  uVar10 = uVar3 | puVar5[1] >> 8;\n  uVar11 = (uVar8 & 0x3f | uVar10 >> 4 & 0x80 | uVar8 >> 2 & 0x100 | uVar10 >> 7 & 0x40) << 0xc |\n           (uVar10 & 0x7ff) * 2;\n  if ((uVar4 & 0x400) != 0) {\n    uVar11 = uVar11 - 0x200000;\n  }\n  if ((char)*(byte *)(extraout_ECX + 0xb) < '\0') {\n    iVar13 = uVar11 + *(int *)(extraout_ECX + 0xc);\nLAB_00112d6f:\n    uVar11 = iVar13 - param_1;\n  }\n  else {\n    if ((*(byte *)(extraout_ECX + 0xb) & 8) == 0) {\n                    \n      FUN_002446e0(unaff_EDI + 0x33a72e,0x6ab,unaff_EDI + 0x357a35,(uint)(uVar10 >> 7));\n    }\n    puVar1 = *(uint **)(extraout_ECX + 0xc);\n    local_3c = *puVar1;\n    if (uVar11 < 0xffffff00) {\n      local_3c = local_3c + uVar11;\n      uVar11 = 0;\n    }\n    uVar7 = local_3c % puVar1[3];\n    local_38 = *(int **)(puVar1[2] + uVar7 * 4);\n    if (local_38 != (int *)0x0) {\n      uVar12 = ((int *)*local_38)[1];\n      piVar2 = (int *)*local_38;\n      while (piVar9 = piVar2, uVar12 != local_3c) {\n        piVar2 = (int *)*piVar9;\n        if ((piVar2 == (int *)0x0) ||\n           (uVar12 = piVar2[1], local_38 = piVar9, uVar7 != uVar12 % puVar1[3])) goto LAB_00112e0c;\n      }\n      if (*local_38 != 0) {\n        iVar13 = uVar11 + *(int *)(*local_38 + 8);\n        goto LAB_00112d6f;\n      }\n    }\nLAB_00112e0c:\n    iVar13 = FUN_00318cf0(puVar1,(int)((ulonglong)uVar14 >> 0x20),\n                          *(uint *)(extraout_ECX + 8) & 0x7ffffff,local_3c);\n    uVar11 = (uVar11 + iVar13) - param_1;\n  }\n  if (param_2 == 0) {\n    uVar6 = gettext(unaff_EDI + 0x358c61);\n    FUN_0023b810(uVar6);\n    return (bool)2;\n  }\n  uVar4 = (ushort)((uVar11 >> 0x1f) << 10) | (ushort)(uVar11 >> 0xc) & 0x3f | uVar8 & 0xfbc0;\n  *puVar5 = uVar4 << 8 | uVar4 >> 8;\n  uVar4 = (ushort)(uVar11 >> 1) & 0x7ff;\n  puVar5[1] = uVar4 << 8 |\n              (ushort)(uVar3 & 0xd000 | uVar4 | (ushort)((uVar11 >> 0x12 & 1) << 0xd) |\n                      (ushort)((uVar11 >> 0x13 & 1) << 0xb)) >> 8;\n  return 0x1fffff < uVar11 + 0x100000;\n}" { (declaration "uint *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "int *piVar2;" primitive_type (pointer_declarator "*piVar2" * identifier) ;) (declaration "ushort uVar3;" type_identifier identifier ;) (declaration "ushort uVar4;" type_identifier identifier ;) (declaration "ushort *puVar5;" type_identifier (pointer_declarator "*puVar5" * identifier) ;) (declaration "undefined4 uVar6;" type_identifier identifier ;) (declaration "int extraout_ECX;" primitive_type identifier ;) (declaration "uint uVar7;" type_identifier identifier ;) (declaration "ushort uVar8;" type_identifier identifier ;) (declaration "int *piVar9;" primitive_type (pointer_declarator "*piVar9" * identifier) ;) (declaration "ushort uVar10;" type_identifier identifier ;) (declaration "uint uVar11;" type_identifier identifier ;) (declaration "uint uVar12;" type_identifier identifier ;) (declaration "int iVar13;" primitive_type identifier ;) (declaration "int unaff_EDI;" primitive_type identifier ;) (declaration "undefined8 uVar14;" type_identifier identifier ;) (declaration "uint local_3c;" type_identifier identifier ;) (declaration "int *local_38;" primitive_type (pointer_declarator "*local_38" * identifier) ;) (expression_statement "uVar14 = FUN_00074f0a();" (assignment_expression "uVar14 = FUN_00074f0a()" identifier = (call_expression "FUN_00074f0a()" identifier (argument_list "()" ( )))) ;) (expression_statement "puVar5 = (ushort *)uVar14;" (assignment_expression "puVar5 = (ushort *)uVar14" identifier = (cast_expression "(ushort *)uVar14" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "uVar4 = *puVar5 << 8;" (assignment_expression "uVar4 = *puVar5 << 8" identifier = (binary_expression "*puVar5 << 8" (pointer_expression "*puVar5" * identifier) << number_literal)) ;) (expression_statement "uVar8 = uVar4 | *puVar5 >> 8;" (assignment_expression "uVar8 = uVar4 | *puVar5 >> 8" identifier = (binary_expression "uVar4 | *puVar5 >> 8" identifier | (binary_expression "*puVar5 >> 8" (pointer_expression "*puVar5" * identifier) >> number_literal))) ;) (expression_statement "uVar3 = puVar5[1] << 8;" (assignment_expression "uVar3 = puVar5[1] << 8" identifier = (binary_expression "puVar5[1] << 8" (subscript_expression "puVar5[1]" identifier [ number_literal ]) << number_literal)) ;) (expression_statement "uVar10 = uVar3 | puVar5[1] >> 8;" (assignment_expression "uVar10 = uVar3 | puVar5[1] >> 8" identifier = (binary_expression "uVar3 | puVar5[1] >> 8" identifier | (binary_expression "puVar5[1] >> 8" (subscript_expression "puVar5[1]" identifier [ number_literal ]) >> number_literal))) ;) (expression_statement "uVar11 = (uVar8 & 0x3f | uVar10 >> 4 & 0x80 | uVar8 >> 2 & 0x100 | uVar10 >> 7 & 0x40) << 0xc |\n           (uVar10 & 0x7ff) * 2;" (assignment_expression "uVar11 = (uVar8 & 0x3f | uVar10 >> 4 & 0x80 | uVar8 >> 2 & 0x100 | uVar10 >> 7 & 0x40) << 0xc |\n           (uVar10 & 0x7ff) * 2" identifier = (binary_expression "(uVar8 & 0x3f | uVar10 >> 4 & 0x80 | uVar8 >> 2 & 0x100 | uVar10 >> 7 & 0x40) << 0xc |\n           (uVar10 & 0x7ff) * 2" (binary_expression "(uVar8 & 0x3f | uVar10 >> 4 & 0x80 | uVar8 >> 2 & 0x100 | uVar10 >> 7 & 0x40) << 0xc" (parenthesized_expression "(uVar8 & 0x3f | uVar10 >> 4 & 0x80 | uVar8 >> 2 & 0x100 | uVar10 >> 7 & 0x40)" ( (binary_expression "uVar8 & 0x3f | uVar10 >> 4 & 0x80 | uVar8 >> 2 & 0x100 | uVar10 >> 7 & 0x40" (binary_expression "uVar8 & 0x3f | uVar10 >> 4 & 0x80 | uVar8 >> 2 & 0x100" (binary_expression "uVar8 & 0x3f | uVar10 >> 4 & 0x80" (binary_expression "uVar8 & 0x3f" identifier & number_literal) | (binary_expression "uVar10 >> 4 & 0x80" (binary_expression "uVar10 >> 4" identifier >> number_literal) & number_literal)) | (binary_expression "uVar8 >> 2 & 0x100" (binary_expression "uVar8 >> 2" identifier >> number_literal) & number_literal)) | (binary_expression "uVar10 >> 7 & 0x40" (binary_expression "uVar10 >> 7" identifier >> number_literal) & number_literal)) )) << number_literal) | (binary_expression "(uVar10 & 0x7ff) * 2" (parenthesized_expression "(uVar10 & 0x7ff)" ( (binary_expression "uVar10 & 0x7ff" identifier & number_literal) )) * number_literal))) ;) (if_statement "if ((uVar4 & 0x400) != 0) {\n    uVar11 = uVar11 - 0x200000;\n  }" if (parenthesized_expression "((uVar4 & 0x400) != 0)" ( (binary_expression "(uVar4 & 0x400) != 0" (parenthesized_expression "(uVar4 & 0x400)" ( (binary_expression "uVar4 & 0x400" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n    uVar11 = uVar11 - 0x200000;\n  }" { (expression_statement "uVar11 = uVar11 - 0x200000;" (assignment_expression "uVar11 = uVar11 - 0x200000" identifier = (binary_expression "uVar11 - 0x200000" identifier - number_literal)) ;) })) (if_statement "if ((char)*(byte *)(extraout_ECX + 0xb) < '\0') {\n    iVar13 = uVar11 + *(int *)(extraout_ECX + 0xc);\nLAB_00112d6f:\n    uVar11 = iVar13 - param_1;\n  }\n  else {\n    if ((*(byte *)(extraout_ECX + 0xb) & 8) == 0) {\n                    \n      FUN_002446e0(unaff_EDI + 0x33a72e,0x6ab,unaff_EDI + 0x357a35,(uint)(uVar10 >> 7));\n    }\n    puVar1 = *(uint **)(extraout_ECX + 0xc);\n    local_3c = *puVar1;\n    if (uVar11 < 0xffffff00) {\n      local_3c = local_3c + uVar11;\n      uVar11 = 0;\n    }\n    uVar7 = local_3c % puVar1[3];\n    local_38 = *(int **)(puVar1[2] + uVar7 * 4);\n    if (local_38 != (int *)0x0) {\n      uVar12 = ((int *)*local_38)[1];\n      piVar2 = (int *)*local_38;\n      while (piVar9 = piVar2, uVar12 != local_3c) {\n        piVar2 = (int *)*piVar9;\n        if ((piVar2 == (int *)0x0) ||\n           (uVar12 = piVar2[1], local_38 = piVar9, uVar7 != uVar12 % puVar1[3])) goto LAB_00112e0c;\n      }\n      if (*local_38 != 0) {\n        iVar13 = uVar11 + *(int *)(*local_38 + 8);\n        goto LAB_00112d6f;\n      }\n    }\nLAB_00112e0c:\n    iVar13 = FUN_00318cf0(puVar1,(int)((ulonglong)uVar14 >> 0x20),\n                          *(uint *)(extraout_ECX + 8) & 0x7ffffff,local_3c);\n    uVar11 = (uVar11 + iVar13) - param_1;\n  }" if (parenthesized_expression "((char)*(byte *)(extraout_ECX + 0xb) < '\0')" ( (binary_expression "(char)*(byte *)(extraout_ECX + 0xb) < '\0'" (cast_expression "(char)*(byte *)(extraout_ECX + 0xb)" ( (type_descriptor "char" primitive_type) ) (pointer_expression "*(byte *)(extraout_ECX + 0xb)" * (cast_expression "(byte *)(extraout_ECX + 0xb)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(extraout_ECX + 0xb)" ( (binary_expression "extraout_ECX + 0xb" identifier + number_literal) ))))) < (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    iVar13 = uVar11 + *(int *)(extraout_ECX + 0xc);\nLAB_00112d6f:\n    uVar11 = iVar13 - param_1;\n  }" { (expression_statement "iVar13 = uVar11 + *(int *)(extraout_ECX + 0xc);" (assignment_expression "iVar13 = uVar11 + *(int *)(extraout_ECX + 0xc)" identifier = (binary_expression "uVar11 + *(int *)(extraout_ECX + 0xc)" identifier + (pointer_expression "*(int *)(extraout_ECX + 0xc)" * (cast_expression "(int *)(extraout_ECX + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(extraout_ECX + 0xc)" ( (binary_expression "extraout_ECX + 0xc" identifier + number_literal) )))))) ;) (labeled_statement "LAB_00112d6f:\n    uVar11 = iVar13 - param_1;" statement_identifier : (expression_statement "uVar11 = iVar13 - param_1;" (assignment_expression "uVar11 = iVar13 - param_1" identifier = (binary_expression "iVar13 - param_1" identifier - identifier)) ;)) }) (else_clause "else {\n    if ((*(byte *)(extraout_ECX + 0xb) & 8) == 0) {\n                    \n      FUN_002446e0(unaff_EDI + 0x33a72e,0x6ab,unaff_EDI + 0x357a35,(uint)(uVar10 >> 7));\n    }\n    puVar1 = *(uint **)(extraout_ECX + 0xc);\n    local_3c = *puVar1;\n    if (uVar11 < 0xffffff00) {\n      local_3c = local_3c + uVar11;\n      uVar11 = 0;\n    }\n    uVar7 = local_3c % puVar1[3];\n    local_38 = *(int **)(puVar1[2] + uVar7 * 4);\n    if (local_38 != (int *)0x0) {\n      uVar12 = ((int *)*local_38)[1];\n      piVar2 = (int *)*local_38;\n      while (piVar9 = piVar2, uVar12 != local_3c) {\n        piVar2 = (int *)*piVar9;\n        if ((piVar2 == (int *)0x0) ||\n           (uVar12 = piVar2[1], local_38 = piVar9, uVar7 != uVar12 % puVar1[3])) goto LAB_00112e0c;\n      }\n      if (*local_38 != 0) {\n        iVar13 = uVar11 + *(int *)(*local_38 + 8);\n        goto LAB_00112d6f;\n      }\n    }\nLAB_00112e0c:\n    iVar13 = FUN_00318cf0(puVar1,(int)((ulonglong)uVar14 >> 0x20),\n                          *(uint *)(extraout_ECX + 8) & 0x7ffffff,local_3c);\n    uVar11 = (uVar11 + iVar13) - param_1;\n  }" else (compound_statement "{\n    if ((*(byte *)(extraout_ECX + 0xb) & 8) == 0) {\n                    \n      FUN_002446e0(unaff_EDI + 0x33a72e,0x6ab,unaff_EDI + 0x357a35,(uint)(uVar10 >> 7));\n    }\n    puVar1 = *(uint **)(extraout_ECX + 0xc);\n    local_3c = *puVar1;\n    if (uVar11 < 0xffffff00) {\n      local_3c = local_3c + uVar11;\n      uVar11 = 0;\n    }\n    uVar7 = local_3c % puVar1[3];\n    local_38 = *(int **)(puVar1[2] + uVar7 * 4);\n    if (local_38 != (int *)0x0) {\n      uVar12 = ((int *)*local_38)[1];\n      piVar2 = (int *)*local_38;\n      while (piVar9 = piVar2, uVar12 != local_3c) {\n        piVar2 = (int *)*piVar9;\n        if ((piVar2 == (int *)0x0) ||\n           (uVar12 = piVar2[1], local_38 = piVar9, uVar7 != uVar12 % puVar1[3])) goto LAB_00112e0c;\n      }\n      if (*local_38 != 0) {\n        iVar13 = uVar11 + *(int *)(*local_38 + 8);\n        goto LAB_00112d6f;\n      }\n    }\nLAB_00112e0c:\n    iVar13 = FUN_00318cf0(puVar1,(int)((ulonglong)uVar14 >> 0x20),\n                          *(uint *)(extraout_ECX + 8) & 0x7ffffff,local_3c);\n    uVar11 = (uVar11 + iVar13) - param_1;\n  }" { (if_statement "if ((*(byte *)(extraout_ECX + 0xb) & 8) == 0) {\n                    \n      FUN_002446e0(unaff_EDI + 0x33a72e,0x6ab,unaff_EDI + 0x357a35,(uint)(uVar10 >> 7));\n    }" if (parenthesized_expression "((*(byte *)(extraout_ECX + 0xb) & 8) == 0)" ( (binary_expression "(*(byte *)(extraout_ECX + 0xb) & 8) == 0" (parenthesized_expression "(*(byte *)(extraout_ECX + 0xb) & 8)" ( (binary_expression "*(byte *)(extraout_ECX + 0xb) & 8" (pointer_expression "*(byte *)(extraout_ECX + 0xb)" * (cast_expression "(byte *)(extraout_ECX + 0xb)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(extraout_ECX + 0xb)" ( (binary_expression "extraout_ECX + 0xb" identifier + number_literal) )))) & number_literal) )) == number_literal) )) (compound_statement "{\n                    \n      FUN_002446e0(unaff_EDI + 0x33a72e,0x6ab,unaff_EDI + 0x357a35,(uint)(uVar10 >> 7));\n    }" { (expression_statement "FUN_002446e0(unaff_EDI + 0x33a72e,0x6ab,unaff_EDI + 0x357a35,(uint)(uVar10 >> 7));" (call_expression "FUN_002446e0(unaff_EDI + 0x33a72e,0x6ab,unaff_EDI + 0x357a35,(uint)(uVar10 >> 7))" identifier (argument_list "(unaff_EDI + 0x33a72e,0x6ab,unaff_EDI + 0x357a35,(uint)(uVar10 >> 7))" ( (binary_expression "unaff_EDI + 0x33a72e" identifier + number_literal) , number_literal , (binary_expression "unaff_EDI + 0x357a35" identifier + number_literal) , (call_expression "(uint)(uVar10 >> 7)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar10 >> 7)" ( (binary_expression "uVar10 >> 7" identifier >> number_literal) ))) ))) ;) })) (expression_statement "puVar1 = *(uint **)(extraout_ECX + 0xc);" (assignment_expression "puVar1 = *(uint **)(extraout_ECX + 0xc)" identifier = (pointer_expression "*(uint **)(extraout_ECX + 0xc)" * (cast_expression "(uint **)(extraout_ECX + 0xc)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(extraout_ECX + 0xc)" ( (binary_expression "extraout_ECX + 0xc" identifier + number_literal) ))))) ;) (expression_statement "local_3c = *puVar1;" (assignment_expression "local_3c = *puVar1" identifier = (pointer_expression "*puVar1" * identifier)) ;) (if_statement "if (uVar11 < 0xffffff00) {\n      local_3c = local_3c + uVar11;\n      uVar11 = 0;\n    }" if (parenthesized_expression "(uVar11 < 0xffffff00)" ( (binary_expression "uVar11 < 0xffffff00" identifier < number_literal) )) (compound_statement "{\n      local_3c = local_3c + uVar11;\n      uVar11 = 0;\n    }" { (expression_statement "local_3c = local_3c + uVar11;" (assignment_expression "local_3c = local_3c + uVar11" identifier = (binary_expression "local_3c + uVar11" identifier + identifier)) ;) (expression_statement "uVar11 = 0;" (assignment_expression "uVar11 = 0" identifier = number_literal) ;) })) (expression_statement "uVar7 = local_3c % puVar1[3];" (assignment_expression "uVar7 = local_3c % puVar1[3]" identifier = (binary_expression "local_3c % puVar1[3]" identifier % (subscript_expression "puVar1[3]" identifier [ number_literal ]))) ;) (expression_statement "local_38 = *(int **)(puVar1[2] + uVar7 * 4);" (assignment_expression "local_38 = *(int **)(puVar1[2] + uVar7 * 4)" identifier = (pointer_expression "*(int **)(puVar1[2] + uVar7 * 4)" * (cast_expression "(int **)(puVar1[2] + uVar7 * 4)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar1[2] + uVar7 * 4)" ( (binary_expression "puVar1[2] + uVar7 * 4" (subscript_expression "puVar1[2]" identifier [ number_literal ]) + (binary_expression "uVar7 * 4" identifier * number_literal)) ))))) ;) (if_statement "if (local_38 != (int *)0x0) {\n      uVar12 = ((int *)*local_38)[1];\n      piVar2 = (int *)*local_38;\n      while (piVar9 = piVar2, uVar12 != local_3c) {\n        piVar2 = (int *)*piVar9;\n        if ((piVar2 == (int *)0x0) ||\n           (uVar12 = piVar2[1], local_38 = piVar9, uVar7 != uVar12 % puVar1[3])) goto LAB_00112e0c;\n      }\n      if (*local_38 != 0) {\n        iVar13 = uVar11 + *(int *)(*local_38 + 8);\n        goto LAB_00112d6f;\n      }\n    }" if (parenthesized_expression "(local_38 != (int *)0x0)" ( (binary_expression "local_38 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      uVar12 = ((int *)*local_38)[1];\n      piVar2 = (int *)*local_38;\n      while (piVar9 = piVar2, uVar12 != local_3c) {\n        piVar2 = (int *)*piVar9;\n        if ((piVar2 == (int *)0x0) ||\n           (uVar12 = piVar2[1], local_38 = piVar9, uVar7 != uVar12 % puVar1[3])) goto LAB_00112e0c;\n      }\n      if (*local_38 != 0) {\n        iVar13 = uVar11 + *(int *)(*local_38 + 8);\n        goto LAB_00112d6f;\n      }\n    }" { (expression_statement "uVar12 = ((int *)*local_38)[1];" (assignment_expression "uVar12 = ((int *)*local_38)[1]" identifier = (subscript_expression "((int *)*local_38)[1]" (parenthesized_expression "((int *)*local_38)" ( (cast_expression "(int *)*local_38" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*local_38" * identifier)) )) [ number_literal ])) ;) (expression_statement "piVar2 = (int *)*local_38;" (assignment_expression "piVar2 = (int *)*local_38" identifier = (cast_expression "(int *)*local_38" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*local_38" * identifier))) ;) (while_statement "while (piVar9 = piVar2, uVar12 != local_3c) {\n        piVar2 = (int *)*piVar9;\n        if ((piVar2 == (int *)0x0) ||\n           (uVar12 = piVar2[1], local_38 = piVar9, uVar7 != uVar12 % puVar1[3])) goto LAB_00112e0c;\n      }" while (parenthesized_expression "(piVar9 = piVar2, uVar12 != local_3c)" ( (comma_expression "piVar9 = piVar2, uVar12 != local_3c" (assignment_expression "piVar9 = piVar2" identifier = identifier) , (binary_expression "uVar12 != local_3c" identifier != identifier)) )) (compound_statement "{\n        piVar2 = (int *)*piVar9;\n        if ((piVar2 == (int *)0x0) ||\n           (uVar12 = piVar2[1], local_38 = piVar9, uVar7 != uVar12 % puVar1[3])) goto LAB_00112e0c;\n      }" { (expression_statement "piVar2 = (int *)*piVar9;" (assignment_expression "piVar2 = (int *)*piVar9" identifier = (cast_expression "(int *)*piVar9" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar9" * identifier))) ;) (if_statement "if ((piVar2 == (int *)0x0) ||\n           (uVar12 = piVar2[1], local_38 = piVar9, uVar7 != uVar12 % puVar1[3])) goto LAB_00112e0c;" if (parenthesized_expression "((piVar2 == (int *)0x0) ||\n           (uVar12 = piVar2[1], local_38 = piVar9, uVar7 != uVar12 % puVar1[3]))" ( (binary_expression "(piVar2 == (int *)0x0) ||\n           (uVar12 = piVar2[1], local_38 = piVar9, uVar7 != uVar12 % puVar1[3])" (parenthesized_expression "(piVar2 == (int *)0x0)" ( (binary_expression "piVar2 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) || (parenthesized_expression "(uVar12 = piVar2[1], local_38 = piVar9, uVar7 != uVar12 % puVar1[3])" ( (comma_expression "uVar12 = piVar2[1], local_38 = piVar9, uVar7 != uVar12 % puVar1[3]" (assignment_expression "uVar12 = piVar2[1]" identifier = (subscript_expression "piVar2[1]" identifier [ number_literal ])) , (comma_expression "local_38 = piVar9, uVar7 != uVar12 % puVar1[3]" (assignment_expression "local_38 = piVar9" identifier = identifier) , (binary_expression "uVar7 != uVar12 % puVar1[3]" identifier != (binary_expression "uVar12 % puVar1[3]" identifier % (subscript_expression "puVar1[3]" identifier [ number_literal ]))))) ))) )) (goto_statement "goto LAB_00112e0c;" goto statement_identifier ;)) })) (if_statement "if (*local_38 != 0) {\n        iVar13 = uVar11 + *(int *)(*local_38 + 8);\n        goto LAB_00112d6f;\n      }" if (parenthesized_expression "(*local_38 != 0)" ( (binary_expression "*local_38 != 0" (pointer_expression "*local_38" * identifier) != number_literal) )) (compound_statement "{\n        iVar13 = uVar11 + *(int *)(*local_38 + 8);\n        goto LAB_00112d6f;\n      }" { (expression_statement "iVar13 = uVar11 + *(int *)(*local_38 + 8);" (assignment_expression "iVar13 = uVar11 + *(int *)(*local_38 + 8)" identifier = (binary_expression "uVar11 + *(int *)(*local_38 + 8)" identifier + (pointer_expression "*(int *)(*local_38 + 8)" * (cast_expression "(int *)(*local_38 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*local_38 + 8)" ( (binary_expression "*local_38 + 8" (pointer_expression "*local_38" * identifier) + number_literal) )))))) ;) (goto_statement "goto LAB_00112d6f;" goto statement_identifier ;) })) })) (labeled_statement "LAB_00112e0c:\n    iVar13 = FUN_00318cf0(puVar1,(int)((ulonglong)uVar14 >> 0x20),\n                          *(uint *)(extraout_ECX + 8) & 0x7ffffff,local_3c);" statement_identifier : (expression_statement "iVar13 = FUN_00318cf0(puVar1,(int)((ulonglong)uVar14 >> 0x20),\n                          *(uint *)(extraout_ECX + 8) & 0x7ffffff,local_3c);" (assignment_expression "iVar13 = FUN_00318cf0(puVar1,(int)((ulonglong)uVar14 >> 0x20),\n                          *(uint *)(extraout_ECX + 8) & 0x7ffffff,local_3c)" identifier = (call_expression "FUN_00318cf0(puVar1,(int)((ulonglong)uVar14 >> 0x20),\n                          *(uint *)(extraout_ECX + 8) & 0x7ffffff,local_3c)" identifier (argument_list "(puVar1,(int)((ulonglong)uVar14 >> 0x20),\n                          *(uint *)(extraout_ECX + 8) & 0x7ffffff,local_3c)" ( identifier , (cast_expression "(int)((ulonglong)uVar14 >> 0x20)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((ulonglong)uVar14 >> 0x20)" ( (binary_expression "(ulonglong)uVar14 >> 0x20" (cast_expression "(ulonglong)uVar14" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) ))) , (binary_expression "*(uint *)(extraout_ECX + 8) & 0x7ffffff" (pointer_expression "*(uint *)(extraout_ECX + 8)" * (cast_expression "(uint *)(extraout_ECX + 8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(extraout_ECX + 8)" ( (binary_expression "extraout_ECX + 8" identifier + number_literal) )))) & number_literal) , identifier )))) ;)) (expression_statement "uVar11 = (uVar11 + iVar13) - param_1;" (assignment_expression "uVar11 = (uVar11 + iVar13) - param_1" identifier = (binary_expression "(uVar11 + iVar13) - param_1" (parenthesized_expression "(uVar11 + iVar13)" ( (binary_expression "uVar11 + iVar13" identifier + identifier) )) - identifier)) ;) }))) (if_statement "if (param_2 == 0) {\n    uVar6 = gettext(unaff_EDI + 0x358c61);\n    FUN_0023b810(uVar6);\n    return (bool)2;\n  }" if (parenthesized_expression "(param_2 == 0)" ( (binary_expression "param_2 == 0" identifier == number_literal) )) (compound_statement "{\n    uVar6 = gettext(unaff_EDI + 0x358c61);\n    FUN_0023b810(uVar6);\n    return (bool)2;\n  }" { (expression_statement "uVar6 = gettext(unaff_EDI + 0x358c61);" (assignment_expression "uVar6 = gettext(unaff_EDI + 0x358c61)" identifier = (call_expression "gettext(unaff_EDI + 0x358c61)" identifier (argument_list "(unaff_EDI + 0x358c61)" ( (binary_expression "unaff_EDI + 0x358c61" identifier + number_literal) )))) ;) (expression_statement "FUN_0023b810(uVar6);" (call_expression "FUN_0023b810(uVar6)" identifier (argument_list "(uVar6)" ( identifier ))) ;) (return_statement "return (bool)2;" return (cast_expression "(bool)2" ( (type_descriptor "bool" primitive_type) ) number_literal) ;) })) (expression_statement "uVar4 = (ushort)((uVar11 >> 0x1f) << 10) | (ushort)(uVar11 >> 0xc) & 0x3f | uVar8 & 0xfbc0;" (assignment_expression "uVar4 = (ushort)((uVar11 >> 0x1f) << 10) | (ushort)(uVar11 >> 0xc) & 0x3f | uVar8 & 0xfbc0" identifier = (binary_expression "(ushort)((uVar11 >> 0x1f) << 10) | (ushort)(uVar11 >> 0xc) & 0x3f | uVar8 & 0xfbc0" (binary_expression "(ushort)((uVar11 >> 0x1f) << 10) | (ushort)(uVar11 >> 0xc) & 0x3f" (call_expression "(ushort)((uVar11 >> 0x1f) << 10)" (parenthesized_expression "(ushort)" ( identifier )) (argument_list "((uVar11 >> 0x1f) << 10)" ( (binary_expression "(uVar11 >> 0x1f) << 10" (parenthesized_expression "(uVar11 >> 0x1f)" ( (binary_expression "uVar11 >> 0x1f" identifier >> number_literal) )) << number_literal) ))) | (binary_expression "(ushort)(uVar11 >> 0xc) & 0x3f" (call_expression "(ushort)(uVar11 >> 0xc)" (parenthesized_expression "(ushort)" ( identifier )) (argument_list "(uVar11 >> 0xc)" ( (binary_expression "uVar11 >> 0xc" identifier >> number_literal) ))) & number_literal)) | (binary_expression "uVar8 & 0xfbc0" identifier & number_literal))) ;) (expression_statement "*puVar5 = uVar4 << 8 | uVar4 >> 8;" (assignment_expression "*puVar5 = uVar4 << 8 | uVar4 >> 8" (pointer_expression "*puVar5" * identifier) = (binary_expression "uVar4 << 8 | uVar4 >> 8" (binary_expression "uVar4 << 8" identifier << number_literal) | (binary_expression "uVar4 >> 8" identifier >> number_literal))) ;) (expression_statement "uVar4 = (ushort)(uVar11 >> 1) & 0x7ff;" (assignment_expression "uVar4 = (ushort)(uVar11 >> 1) & 0x7ff" identifier = (binary_expression "(ushort)(uVar11 >> 1) & 0x7ff" (call_expression "(ushort)(uVar11 >> 1)" (parenthesized_expression "(ushort)" ( identifier )) (argument_list "(uVar11 >> 1)" ( (binary_expression "uVar11 >> 1" identifier >> number_literal) ))) & number_literal)) ;) (expression_statement "puVar5[1] = uVar4 << 8 |\n              (ushort)(uVar3 & 0xd000 | uVar4 | (ushort)((uVar11 >> 0x12 & 1) << 0xd) |\n                      (ushort)((uVar11 >> 0x13 & 1) << 0xb)) >> 8;" (assignment_expression "puVar5[1] = uVar4 << 8 |\n              (ushort)(uVar3 & 0xd000 | uVar4 | (ushort)((uVar11 >> 0x12 & 1) << 0xd) |\n                      (ushort)((uVar11 >> 0x13 & 1) << 0xb)) >> 8" (subscript_expression "puVar5[1]" identifier [ number_literal ]) = (binary_expression "uVar4 << 8 |\n              (ushort)(uVar3 & 0xd000 | uVar4 | (ushort)((uVar11 >> 0x12 & 1) << 0xd) |\n                      (ushort)((uVar11 >> 0x13 & 1) << 0xb)) >> 8" (binary_expression "uVar4 << 8" identifier << number_literal) | (binary_expression "(ushort)(uVar3 & 0xd000 | uVar4 | (ushort)((uVar11 >> 0x12 & 1) << 0xd) |\n                      (ushort)((uVar11 >> 0x13 & 1) << 0xb)) >> 8" (call_expression "(ushort)(uVar3 & 0xd000 | uVar4 | (ushort)((uVar11 >> 0x12 & 1) << 0xd) |\n                      (ushort)((uVar11 >> 0x13 & 1) << 0xb))" (parenthesized_expression "(ushort)" ( identifier )) (argument_list "(uVar3 & 0xd000 | uVar4 | (ushort)((uVar11 >> 0x12 & 1) << 0xd) |\n                      (ushort)((uVar11 >> 0x13 & 1) << 0xb))" ( (binary_expression "uVar3 & 0xd000 | uVar4 | (ushort)((uVar11 >> 0x12 & 1) << 0xd) |\n                      (ushort)((uVar11 >> 0x13 & 1) << 0xb)" (binary_expression "uVar3 & 0xd000 | uVar4 | (ushort)((uVar11 >> 0x12 & 1) << 0xd)" (binary_expression "uVar3 & 0xd000 | uVar4" (binary_expression "uVar3 & 0xd000" identifier & number_literal) | identifier) | (call_expression "(ushort)((uVar11 >> 0x12 & 1) << 0xd)" (parenthesized_expression "(ushort)" ( identifier )) (argument_list "((uVar11 >> 0x12 & 1) << 0xd)" ( (binary_expression "(uVar11 >> 0x12 & 1) << 0xd" (parenthesized_expression "(uVar11 >> 0x12 & 1)" ( (binary_expression "uVar11 >> 0x12 & 1" (binary_expression "uVar11 >> 0x12" identifier >> number_literal) & number_literal) )) << number_literal) )))) | (call_expression "(ushort)((uVar11 >> 0x13 & 1) << 0xb)" (parenthesized_expression "(ushort)" ( identifier )) (argument_list "((uVar11 >> 0x13 & 1) << 0xb)" ( (binary_expression "(uVar11 >> 0x13 & 1) << 0xb" (parenthesized_expression "(uVar11 >> 0x13 & 1)" ( (binary_expression "uVar11 >> 0x13 & 1" (binary_expression "uVar11 >> 0x13" identifier >> number_literal) & number_literal) )) << number_literal) )))) ))) >> number_literal))) ;) (return_statement "return 0x1fffff < uVar11 + 0x100000;" return (binary_expression "0x1fffff < uVar11 + 0x100000" number_literal < (binary_expression "uVar11 + 0x100000" identifier + number_literal)) ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * IDENT) << LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT | (binary_expression (pointer_expression * IDENT) >> LIT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (subscript_expression IDENT [ LIT ]) << LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT | (binary_expression (subscript_expression IDENT [ LIT ]) >> LIT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (parenthesized_expression ( (binary_expression (binary_expression (binary_expression (binary_expression IDENT & LIT) | (binary_expression (binary_expression IDENT >> LIT) & LIT)) | (binary_expression (binary_expression IDENT >> LIT) & LIT)) | (binary_expression (binary_expression IDENT >> LIT) & LIT)) )) << LIT) | (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) * LIT))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT - LIT)) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) < (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))))) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (binary_expression IDENT - IDENT)) ;)) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT) )) == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) , LIT , (binary_expression IDENT + LIT) , (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT >> LIT) ))) ))) ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression IDENT = LIT) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT % (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) + (binary_expression IDENT * LIT)) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression (parenthesized_expression ( (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT)) )) [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) (while_statement while (parenthesized_expression ( (comma_expression (assignment_expression IDENT = IDENT) , (binary_expression IDENT != 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 IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) || (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) , (comma_expression (assignment_expression IDENT = IDENT) , (binary_expression IDENT != (binary_expression IDENT % (subscript_expression IDENT [ LIT ]))))) ))) )) (goto_statement goto statement_identifier ;)) })) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) )))))) ;) (goto_statement goto statement_identifier ;) })) })) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) ))) , (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT) , IDENT )))) ;)) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression IDENT + IDENT) )) - IDENT)) ;) }))) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) )))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (return_statement return (cast_expression ( (type_descriptor TYPE) ) LIT) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (parenthesized_expression ( (binary_expression IDENT >> LIT) )) << LIT) ))) | (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT >> LIT) ))) & LIT)) | (binary_expression IDENT & LIT))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression (binary_expression IDENT << LIT) | (binary_expression IDENT >> LIT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT >> LIT) ))) & LIT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression (binary_expression IDENT << LIT) | (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (binary_expression (binary_expression (binary_expression IDENT & LIT) | IDENT) | (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (parenthesized_expression ( (binary_expression (binary_expression IDENT >> LIT) & LIT) )) << LIT) )))) | (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (parenthesized_expression ( (binary_expression (binary_expression IDENT >> LIT) & LIT) )) << LIT) )))) ))) >> LIT))) ;) (return_statement return (binary_expression LIT < (binary_expression IDENT + LIT)) ;) })))
(function_definition "bool FUN_00112c50(int param_1,int param_2)\n\n{\n  uint *puVar1;\n  int *piVar2;\n  ushort uVar3;\n  ushort uVar4;\n  ushort *puVar5;\n  undefined4 uVar6;\n  int extraout_ECX;\n  uint uVar7;\n  ushort uVar8;\n  int *piVar9;\n  ushort uVar10;\n  uint uVar11;\n  uint uVar12;\n  int iVar13;\n  int unaff_EDI;\n  undefined8 uVar14;\n  uint local_3c;\n  int *local_38;\n  \n  uVar14 = FUN_00074f0a();\n  puVar5 = (ushort *)uVar14;\n  uVar4 = *puVar5 << 8;\n  uVar8 = uVar4 | *puVar5 >> 8;\n  uVar3 = puVar5[1] << 8;\n  uVar10 = uVar3 | puVar5[1] >> 8;\n  uVar11 = (uVar8 & 0x3f | uVar10 >> 4 & 0x80 | uVar8 >> 2 & 0x100 | uVar10 >> 7 & 0x40) << 0xc |\n           (uVar10 & 0x7ff) * 2;\n  if ((uVar4 & 0x400) != 0) {\n    uVar11 = uVar11 - 0x200000;\n  }\n  if ((char)*(byte *)(extraout_ECX + 0xb) < '\0') {\n    iVar13 = uVar11 + *(int *)(extraout_ECX + 0xc);\nLAB_00112d6f:\n    uVar11 = iVar13 - param_1;\n  }\n  else {\n    if ((*(byte *)(extraout_ECX + 0xb) & 8) == 0) {\n                    \n      FUN_002446e0(unaff_EDI + 0x33a72e,0x6ab,unaff_EDI + 0x357a35,(uint)(uVar10 >> 7));\n    }\n    puVar1 = *(uint **)(extraout_ECX + 0xc);\n    local_3c = *puVar1;\n    if (uVar11 < 0xffffff00) {\n      local_3c = local_3c + uVar11;\n      uVar11 = 0;\n    }\n    uVar7 = local_3c % puVar1[3];\n    local_38 = *(int **)(puVar1[2] + uVar7 * 4);\n    if (local_38 != (int *)0x0) {\n      uVar12 = ((int *)*local_38)[1];\n      piVar2 = (int *)*local_38;\n      while (piVar9 = piVar2, uVar12 != local_3c) {\n        piVar2 = (int *)*piVar9;\n        if ((piVar2 == (int *)0x0) ||\n           (uVar12 = piVar2[1], local_38 = piVar9, uVar7 != uVar12 % puVar1[3])) goto LAB_00112e0c;\n      }\n      if (*local_38 != 0) {\n        iVar13 = uVar11 + *(int *)(*local_38 + 8);\n        goto LAB_00112d6f;\n      }\n    }\nLAB_00112e0c:\n    iVar13 = FUN_00318cf0(puVar1,(int)((ulonglong)uVar14 >> 0x20),\n                          *(uint *)(extraout_ECX + 8) & 0x7ffffff,local_3c);\n    uVar11 = (uVar11 + iVar13) - param_1;\n  }\n  if (param_2 == 0) {\n    uVar6 = gettext(unaff_EDI + 0x358c61);\n    FUN_0023b810(uVar6);\n    return (bool)2;\n  }\n  uVar4 = (ushort)((uVar11 >> 0x1f) << 10) | (ushort)(uVar11 >> 0xc) & 0x3f | uVar8 & 0xfbc0;\n  *puVar5 = uVar4 << 8 | uVar4 >> 8;\n  uVar4 = (ushort)(uVar11 >> 1) & 0x7ff;\n  puVar5[1] = uVar4 << 8 |\n              (ushort)(uVar3 & 0xd000 | uVar4 | (ushort)((uVar11 >> 0x12 & 1) << 0xd) |\n                      (ushort)((uVar11 >> 0x13 & 1) << 0xb)) >> 8;\n  return 0x1fffff < uVar11 + 0x100000;\n}" (primitive_type "bool") (function_declarator "FUN_00112c50(int param_1,int param_2)" (identifier "FUN_00112c50") (parameter_list "(int param_1,int param_2)" (( "(") (parameter_declaration "int param_1" (primitive_type "int") (identifier "param_1")) (, ",") (parameter_declaration "int param_2" (primitive_type "int") (identifier "param_2")) () ")"))) (compound_statement "{\n  uint *puVar1;\n  int *piVar2;\n  ushort uVar3;\n  ushort uVar4;\n  ushort *puVar5;\n  undefined4 uVar6;\n  int extraout_ECX;\n  uint uVar7;\n  ushort uVar8;\n  int *piVar9;\n  ushort uVar10;\n  uint uVar11;\n  uint uVar12;\n  int iVar13;\n  int unaff_EDI;\n  undefined8 uVar14;\n  uint local_3c;\n  int *local_38;\n  \n  uVar14 = FUN_00074f0a();\n  puVar5 = (ushort *)uVar14;\n  uVar4 = *puVar5 << 8;\n  uVar8 = uVar4 | *puVar5 >> 8;\n  uVar3 = puVar5[1] << 8;\n  uVar10 = uVar3 | puVar5[1] >> 8;\n  uVar11 = (uVar8 & 0x3f | uVar10 >> 4 & 0x80 | uVar8 >> 2 & 0x100 | uVar10 >> 7 & 0x40) << 0xc |\n           (uVar10 & 0x7ff) * 2;\n  if ((uVar4 & 0x400) != 0) {\n    uVar11 = uVar11 - 0x200000;\n  }\n  if ((char)*(byte *)(extraout_ECX + 0xb) < '\0') {\n    iVar13 = uVar11 + *(int *)(extraout_ECX + 0xc);\nLAB_00112d6f:\n    uVar11 = iVar13 - param_1;\n  }\n  else {\n    if ((*(byte *)(extraout_ECX + 0xb) & 8) == 0) {\n                    \n      FUN_002446e0(unaff_EDI + 0x33a72e,0x6ab,unaff_EDI + 0x357a35,(uint)(uVar10 >> 7));\n    }\n    puVar1 = *(uint **)(extraout_ECX + 0xc);\n    local_3c = *puVar1;\n    if (uVar11 < 0xffffff00) {\n      local_3c = local_3c + uVar11;\n      uVar11 = 0;\n    }\n    uVar7 = local_3c % puVar1[3];\n    local_38 = *(int **)(puVar1[2] + uVar7 * 4);\n    if (local_38 != (int *)0x0) {\n      uVar12 = ((int *)*local_38)[1];\n      piVar2 = (int *)*local_38;\n      while (piVar9 = piVar2, uVar12 != local_3c) {\n        piVar2 = (int *)*piVar9;\n        if ((piVar2 == (int *)0x0) ||\n           (uVar12 = piVar2[1], local_38 = piVar9, uVar7 != uVar12 % puVar1[3])) goto LAB_00112e0c;\n      }\n      if (*local_38 != 0) {\n        iVar13 = uVar11 + *(int *)(*local_38 + 8);\n        goto LAB_00112d6f;\n      }\n    }\nLAB_00112e0c:\n    iVar13 = FUN_00318cf0(puVar1,(int)((ulonglong)uVar14 >> 0x20),\n                          *(uint *)(extraout_ECX + 8) & 0x7ffffff,local_3c);\n    uVar11 = (uVar11 + iVar13) - param_1;\n  }\n  if (param_2 == 0) {\n    uVar6 = gettext(unaff_EDI + 0x358c61);\n    FUN_0023b810(uVar6);\n    return (bool)2;\n  }\n  uVar4 = (ushort)((uVar11 >> 0x1f) << 10) | (ushort)(uVar11 >> 0xc) & 0x3f | uVar8 & 0xfbc0;\n  *puVar5 = uVar4 << 8 | uVar4 >> 8;\n  uVar4 = (ushort)(uVar11 >> 1) & 0x7ff;\n  puVar5[1] = uVar4 << 8 |\n              (ushort)(uVar3 & 0xd000 | uVar4 | (ushort)((uVar11 >> 0x12 & 1) << 0xd) |\n                      (ushort)((uVar11 >> 0x13 & 1) << 0xb)) >> 8;\n  return 0x1fffff < uVar11 + 0x100000;\n}" ({ "{") (declaration "uint *puVar1;" (type_identifier "uint") (pointer_declarator "*puVar1" (* "*") (identifier "puVar1")) (; ";")) (declaration "int *piVar2;" (primitive_type "int") (pointer_declarator "*piVar2" (* "*") (identifier "piVar2")) (; ";")) (declaration "ushort uVar3;" (type_identifier "ushort") (identifier "uVar3") (; ";")) (declaration "ushort uVar4;" (type_identifier "ushort") (identifier "uVar4") (; ";")) (declaration "ushort *puVar5;" (type_identifier "ushort") (pointer_declarator "*puVar5" (* "*") (identifier "puVar5")) (; ";")) (declaration "undefined4 uVar6;" (type_identifier "undefined4") (identifier "uVar6") (; ";")) (declaration "int extraout_ECX;" (primitive_type "int") (identifier "extraout_ECX") (; ";")) (declaration "uint uVar7;" (type_identifier "uint") (identifier "uVar7") (; ";")) (declaration "ushort uVar8;" (type_identifier "ushort") (identifier "uVar8") (; ";")) (declaration "int *piVar9;" (primitive_type "int") (pointer_declarator "*piVar9" (* "*") (identifier "piVar9")) (; ";")) (declaration "ushort uVar10;" (type_identifier "ushort") (identifier "uVar10") (; ";")) (declaration "uint uVar11;" (type_identifier "uint") (identifier "uVar11") (; ";")) (declaration "uint uVar12;" (type_identifier "uint") (identifier "uVar12") (; ";")) (declaration "int iVar13;" (primitive_type "int") (identifier "iVar13") (; ";")) (declaration "int unaff_EDI;" (primitive_type "int") (identifier "unaff_EDI") (; ";")) (declaration "undefined8 uVar14;" (type_identifier "undefined8") (identifier "uVar14") (; ";")) (declaration "uint local_3c;" (type_identifier "uint") (identifier "local_3c") (; ";")) (declaration "int *local_38;" (primitive_type "int") (pointer_declarator "*local_38" (* "*") (identifier "local_38")) (; ";")) (expression_statement "uVar14 = FUN_00074f0a();" (assignment_expression "uVar14 = FUN_00074f0a()" (identifier "uVar14") (= "=") (call_expression "FUN_00074f0a()" (identifier "FUN_00074f0a") (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "puVar5 = (ushort *)uVar14;" (assignment_expression "puVar5 = (ushort *)uVar14" (identifier "puVar5") (= "=") (cast_expression "(ushort *)uVar14" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "uVar14"))) (; ";")) (expression_statement "uVar4 = *puVar5 << 8;" (assignment_expression "uVar4 = *puVar5 << 8" (identifier "uVar4") (= "=") (binary_expression "*puVar5 << 8" (pointer_expression "*puVar5" (* "*") (identifier "puVar5")) (<< "<<") (number_literal "8"))) (; ";")) (expression_statement "uVar8 = uVar4 | *puVar5 >> 8;" (assignment_expression "uVar8 = uVar4 | *puVar5 >> 8" (identifier "uVar8") (= "=") (binary_expression "uVar4 | *puVar5 >> 8" (identifier "uVar4") (| "|") (binary_expression "*puVar5 >> 8" (pointer_expression "*puVar5" (* "*") (identifier "puVar5")) (>> ">>") (number_literal "8")))) (; ";")) (expression_statement "uVar3 = puVar5[1] << 8;" (assignment_expression "uVar3 = puVar5[1] << 8" (identifier "uVar3") (= "=") (binary_expression "puVar5[1] << 8" (subscript_expression "puVar5[1]" (identifier "puVar5") ([ "[") (number_literal "1") (] "]")) (<< "<<") (number_literal "8"))) (; ";")) (expression_statement "uVar10 = uVar3 | puVar5[1] >> 8;" (assignment_expression "uVar10 = uVar3 | puVar5[1] >> 8" (identifier "uVar10") (= "=") (binary_expression "uVar3 | puVar5[1] >> 8" (identifier "uVar3") (| "|") (binary_expression "puVar5[1] >> 8" (subscript_expression "puVar5[1]" (identifier "puVar5") ([ "[") (number_literal "1") (] "]")) (>> ">>") (number_literal "8")))) (; ";")) (expression_statement "uVar11 = (uVar8 & 0x3f | uVar10 >> 4 & 0x80 | uVar8 >> 2 & 0x100 | uVar10 >> 7 & 0x40) << 0xc |\n           (uVar10 & 0x7ff) * 2;" (assignment_expression "uVar11 = (uVar8 & 0x3f | uVar10 >> 4 & 0x80 | uVar8 >> 2 & 0x100 | uVar10 >> 7 & 0x40) << 0xc |\n           (uVar10 & 0x7ff) * 2" (identifier "uVar11") (= "=") (binary_expression "(uVar8 & 0x3f | uVar10 >> 4 & 0x80 | uVar8 >> 2 & 0x100 | uVar10 >> 7 & 0x40) << 0xc |\n           (uVar10 & 0x7ff) * 2" (binary_expression "(uVar8 & 0x3f | uVar10 >> 4 & 0x80 | uVar8 >> 2 & 0x100 | uVar10 >> 7 & 0x40) << 0xc" (parenthesized_expression "(uVar8 & 0x3f | uVar10 >> 4 & 0x80 | uVar8 >> 2 & 0x100 | uVar10 >> 7 & 0x40)" (( "(") (binary_expression "uVar8 & 0x3f | uVar10 >> 4 & 0x80 | uVar8 >> 2 & 0x100 | uVar10 >> 7 & 0x40" (binary_expression "uVar8 & 0x3f | uVar10 >> 4 & 0x80 | uVar8 >> 2 & 0x100" (binary_expression "uVar8 & 0x3f | uVar10 >> 4 & 0x80" (binary_expression "uVar8 & 0x3f" (identifier "uVar8") (& "&") (number_literal "0x3f")) (| "|") (binary_expression "uVar10 >> 4 & 0x80" (binary_expression "uVar10 >> 4" (identifier "uVar10") (>> ">>") (number_literal "4")) (& "&") (number_literal "0x80"))) (| "|") (binary_expression "uVar8 >> 2 & 0x100" (binary_expression "uVar8 >> 2" (identifier "uVar8") (>> ">>") (number_literal "2")) (& "&") (number_literal "0x100"))) (| "|") (binary_expression "uVar10 >> 7 & 0x40" (binary_expression "uVar10 >> 7" (identifier "uVar10") (>> ">>") (number_literal "7")) (& "&") (number_literal "0x40"))) () ")")) (<< "<<") (number_literal "0xc")) (| "|") (binary_expression "(uVar10 & 0x7ff) * 2" (parenthesized_expression "(uVar10 & 0x7ff)" (( "(") (binary_expression "uVar10 & 0x7ff" (identifier "uVar10") (& "&") (number_literal "0x7ff")) () ")")) (* "*") (number_literal "2")))) (; ";")) (if_statement "if ((uVar4 & 0x400) != 0) {\n    uVar11 = uVar11 - 0x200000;\n  }" (if "if") (parenthesized_expression "((uVar4 & 0x400) != 0)" (( "(") (binary_expression "(uVar4 & 0x400) != 0" (parenthesized_expression "(uVar4 & 0x400)" (( "(") (binary_expression "uVar4 & 0x400" (identifier "uVar4") (& "&") (number_literal "0x400")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    uVar11 = uVar11 - 0x200000;\n  }" ({ "{") (expression_statement "uVar11 = uVar11 - 0x200000;" (assignment_expression "uVar11 = uVar11 - 0x200000" (identifier "uVar11") (= "=") (binary_expression "uVar11 - 0x200000" (identifier "uVar11") (- "-") (number_literal "0x200000"))) (; ";")) (} "}"))) (if_statement "if ((char)*(byte *)(extraout_ECX + 0xb) < '\0') {\n    iVar13 = uVar11 + *(int *)(extraout_ECX + 0xc);\nLAB_00112d6f:\n    uVar11 = iVar13 - param_1;\n  }\n  else {\n    if ((*(byte *)(extraout_ECX + 0xb) & 8) == 0) {\n                    \n      FUN_002446e0(unaff_EDI + 0x33a72e,0x6ab,unaff_EDI + 0x357a35,(uint)(uVar10 >> 7));\n    }\n    puVar1 = *(uint **)(extraout_ECX + 0xc);\n    local_3c = *puVar1;\n    if (uVar11 < 0xffffff00) {\n      local_3c = local_3c + uVar11;\n      uVar11 = 0;\n    }\n    uVar7 = local_3c % puVar1[3];\n    local_38 = *(int **)(puVar1[2] + uVar7 * 4);\n    if (local_38 != (int *)0x0) {\n      uVar12 = ((int *)*local_38)[1];\n      piVar2 = (int *)*local_38;\n      while (piVar9 = piVar2, uVar12 != local_3c) {\n        piVar2 = (int *)*piVar9;\n        if ((piVar2 == (int *)0x0) ||\n           (uVar12 = piVar2[1], local_38 = piVar9, uVar7 != uVar12 % puVar1[3])) goto LAB_00112e0c;\n      }\n      if (*local_38 != 0) {\n        iVar13 = uVar11 + *(int *)(*local_38 + 8);\n        goto LAB_00112d6f;\n      }\n    }\nLAB_00112e0c:\n    iVar13 = FUN_00318cf0(puVar1,(int)((ulonglong)uVar14 >> 0x20),\n                          *(uint *)(extraout_ECX + 8) & 0x7ffffff,local_3c);\n    uVar11 = (uVar11 + iVar13) - param_1;\n  }" (if "if") (parenthesized_expression "((char)*(byte *)(extraout_ECX + 0xb) < '\0')" (( "(") (binary_expression "(char)*(byte *)(extraout_ECX + 0xb) < '\0'" (cast_expression "(char)*(byte *)(extraout_ECX + 0xb)" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (pointer_expression "*(byte *)(extraout_ECX + 0xb)" (* "*") (cast_expression "(byte *)(extraout_ECX + 0xb)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(extraout_ECX + 0xb)" (( "(") (binary_expression "extraout_ECX + 0xb" (identifier "extraout_ECX") (+ "+") (number_literal "0xb")) () ")"))))) (< "<") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n    iVar13 = uVar11 + *(int *)(extraout_ECX + 0xc);\nLAB_00112d6f:\n    uVar11 = iVar13 - param_1;\n  }" ({ "{") (expression_statement "iVar13 = uVar11 + *(int *)(extraout_ECX + 0xc);" (assignment_expression "iVar13 = uVar11 + *(int *)(extraout_ECX + 0xc)" (identifier "iVar13") (= "=") (binary_expression "uVar11 + *(int *)(extraout_ECX + 0xc)" (identifier "uVar11") (+ "+") (pointer_expression "*(int *)(extraout_ECX + 0xc)" (* "*") (cast_expression "(int *)(extraout_ECX + 0xc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(extraout_ECX + 0xc)" (( "(") (binary_expression "extraout_ECX + 0xc" (identifier "extraout_ECX") (+ "+") (number_literal "0xc")) () ")")))))) (; ";")) (labeled_statement "LAB_00112d6f:\n    uVar11 = iVar13 - param_1;" (statement_identifier "LAB_00112d6f") (: ":") (expression_statement "uVar11 = iVar13 - param_1;" (assignment_expression "uVar11 = iVar13 - param_1" (identifier "uVar11") (= "=") (binary_expression "iVar13 - param_1" (identifier "iVar13") (- "-") (identifier "param_1"))) (; ";"))) (} "}")) (else_clause "else {\n    if ((*(byte *)(extraout_ECX + 0xb) & 8) == 0) {\n                    \n      FUN_002446e0(unaff_EDI + 0x33a72e,0x6ab,unaff_EDI + 0x357a35,(uint)(uVar10 >> 7));\n    }\n    puVar1 = *(uint **)(extraout_ECX + 0xc);\n    local_3c = *puVar1;\n    if (uVar11 < 0xffffff00) {\n      local_3c = local_3c + uVar11;\n      uVar11 = 0;\n    }\n    uVar7 = local_3c % puVar1[3];\n    local_38 = *(int **)(puVar1[2] + uVar7 * 4);\n    if (local_38 != (int *)0x0) {\n      uVar12 = ((int *)*local_38)[1];\n      piVar2 = (int *)*local_38;\n      while (piVar9 = piVar2, uVar12 != local_3c) {\n        piVar2 = (int *)*piVar9;\n        if ((piVar2 == (int *)0x0) ||\n           (uVar12 = piVar2[1], local_38 = piVar9, uVar7 != uVar12 % puVar1[3])) goto LAB_00112e0c;\n      }\n      if (*local_38 != 0) {\n        iVar13 = uVar11 + *(int *)(*local_38 + 8);\n        goto LAB_00112d6f;\n      }\n    }\nLAB_00112e0c:\n    iVar13 = FUN_00318cf0(puVar1,(int)((ulonglong)uVar14 >> 0x20),\n                          *(uint *)(extraout_ECX + 8) & 0x7ffffff,local_3c);\n    uVar11 = (uVar11 + iVar13) - param_1;\n  }" (else "else") (compound_statement "{\n    if ((*(byte *)(extraout_ECX + 0xb) & 8) == 0) {\n                    \n      FUN_002446e0(unaff_EDI + 0x33a72e,0x6ab,unaff_EDI + 0x357a35,(uint)(uVar10 >> 7));\n    }\n    puVar1 = *(uint **)(extraout_ECX + 0xc);\n    local_3c = *puVar1;\n    if (uVar11 < 0xffffff00) {\n      local_3c = local_3c + uVar11;\n      uVar11 = 0;\n    }\n    uVar7 = local_3c % puVar1[3];\n    local_38 = *(int **)(puVar1[2] + uVar7 * 4);\n    if (local_38 != (int *)0x0) {\n      uVar12 = ((int *)*local_38)[1];\n      piVar2 = (int *)*local_38;\n      while (piVar9 = piVar2, uVar12 != local_3c) {\n        piVar2 = (int *)*piVar9;\n        if ((piVar2 == (int *)0x0) ||\n           (uVar12 = piVar2[1], local_38 = piVar9, uVar7 != uVar12 % puVar1[3])) goto LAB_00112e0c;\n      }\n      if (*local_38 != 0) {\n        iVar13 = uVar11 + *(int *)(*local_38 + 8);\n        goto LAB_00112d6f;\n      }\n    }\nLAB_00112e0c:\n    iVar13 = FUN_00318cf0(puVar1,(int)((ulonglong)uVar14 >> 0x20),\n                          *(uint *)(extraout_ECX + 8) & 0x7ffffff,local_3c);\n    uVar11 = (uVar11 + iVar13) - param_1;\n  }" ({ "{") (if_statement "if ((*(byte *)(extraout_ECX + 0xb) & 8) == 0) {\n                    \n      FUN_002446e0(unaff_EDI + 0x33a72e,0x6ab,unaff_EDI + 0x357a35,(uint)(uVar10 >> 7));\n    }" (if "if") (parenthesized_expression "((*(byte *)(extraout_ECX + 0xb) & 8) == 0)" (( "(") (binary_expression "(*(byte *)(extraout_ECX + 0xb) & 8) == 0" (parenthesized_expression "(*(byte *)(extraout_ECX + 0xb) & 8)" (( "(") (binary_expression "*(byte *)(extraout_ECX + 0xb) & 8" (pointer_expression "*(byte *)(extraout_ECX + 0xb)" (* "*") (cast_expression "(byte *)(extraout_ECX + 0xb)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(extraout_ECX + 0xb)" (( "(") (binary_expression "extraout_ECX + 0xb" (identifier "extraout_ECX") (+ "+") (number_literal "0xb")) () ")")))) (& "&") (number_literal "8")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                    \n      FUN_002446e0(unaff_EDI + 0x33a72e,0x6ab,unaff_EDI + 0x357a35,(uint)(uVar10 >> 7));\n    }" ({ "{") (expression_statement "FUN_002446e0(unaff_EDI + 0x33a72e,0x6ab,unaff_EDI + 0x357a35,(uint)(uVar10 >> 7));" (call_expression "FUN_002446e0(unaff_EDI + 0x33a72e,0x6ab,unaff_EDI + 0x357a35,(uint)(uVar10 >> 7))" (identifier "FUN_002446e0") (argument_list "(unaff_EDI + 0x33a72e,0x6ab,unaff_EDI + 0x357a35,(uint)(uVar10 >> 7))" (( "(") (binary_expression "unaff_EDI + 0x33a72e" (identifier "unaff_EDI") (+ "+") (number_literal "0x33a72e")) (, ",") (number_literal "0x6ab") (, ",") (binary_expression "unaff_EDI + 0x357a35" (identifier "unaff_EDI") (+ "+") (number_literal "0x357a35")) (, ",") (call_expression "(uint)(uVar10 >> 7)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(uVar10 >> 7)" (( "(") (binary_expression "uVar10 >> 7" (identifier "uVar10") (>> ">>") (number_literal "7")) () ")"))) () ")"))) (; ";")) (} "}"))) (expression_statement "puVar1 = *(uint **)(extraout_ECX + 0xc);" (assignment_expression "puVar1 = *(uint **)(extraout_ECX + 0xc)" (identifier "puVar1") (= "=") (pointer_expression "*(uint **)(extraout_ECX + 0xc)" (* "*") (cast_expression "(uint **)(extraout_ECX + 0xc)" (( "(") (type_descriptor "uint **" (type_identifier "uint") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(extraout_ECX + 0xc)" (( "(") (binary_expression "extraout_ECX + 0xc" (identifier "extraout_ECX") (+ "+") (number_literal "0xc")) () ")"))))) (; ";")) (expression_statement "local_3c = *puVar1;" (assignment_expression "local_3c = *puVar1" (identifier "local_3c") (= "=") (pointer_expression "*puVar1" (* "*") (identifier "puVar1"))) (; ";")) (if_statement "if (uVar11 < 0xffffff00) {\n      local_3c = local_3c + uVar11;\n      uVar11 = 0;\n    }" (if "if") (parenthesized_expression "(uVar11 < 0xffffff00)" (( "(") (binary_expression "uVar11 < 0xffffff00" (identifier "uVar11") (< "<") (number_literal "0xffffff00")) () ")")) (compound_statement "{\n      local_3c = local_3c + uVar11;\n      uVar11 = 0;\n    }" ({ "{") (expression_statement "local_3c = local_3c + uVar11;" (assignment_expression "local_3c = local_3c + uVar11" (identifier "local_3c") (= "=") (binary_expression "local_3c + uVar11" (identifier "local_3c") (+ "+") (identifier "uVar11"))) (; ";")) (expression_statement "uVar11 = 0;" (assignment_expression "uVar11 = 0" (identifier "uVar11") (= "=") (number_literal "0")) (; ";")) (} "}"))) (expression_statement "uVar7 = local_3c % puVar1[3];" (assignment_expression "uVar7 = local_3c % puVar1[3]" (identifier "uVar7") (= "=") (binary_expression "local_3c % puVar1[3]" (identifier "local_3c") (% "%") (subscript_expression "puVar1[3]" (identifier "puVar1") ([ "[") (number_literal "3") (] "]")))) (; ";")) (expression_statement "local_38 = *(int **)(puVar1[2] + uVar7 * 4);" (assignment_expression "local_38 = *(int **)(puVar1[2] + uVar7 * 4)" (identifier "local_38") (= "=") (pointer_expression "*(int **)(puVar1[2] + uVar7 * 4)" (* "*") (cast_expression "(int **)(puVar1[2] + uVar7 * 4)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar1[2] + uVar7 * 4)" (( "(") (binary_expression "puVar1[2] + uVar7 * 4" (subscript_expression "puVar1[2]" (identifier "puVar1") ([ "[") (number_literal "2") (] "]")) (+ "+") (binary_expression "uVar7 * 4" (identifier "uVar7") (* "*") (number_literal "4"))) () ")"))))) (; ";")) (if_statement "if (local_38 != (int *)0x0) {\n      uVar12 = ((int *)*local_38)[1];\n      piVar2 = (int *)*local_38;\n      while (piVar9 = piVar2, uVar12 != local_3c) {\n        piVar2 = (int *)*piVar9;\n        if ((piVar2 == (int *)0x0) ||\n           (uVar12 = piVar2[1], local_38 = piVar9, uVar7 != uVar12 % puVar1[3])) goto LAB_00112e0c;\n      }\n      if (*local_38 != 0) {\n        iVar13 = uVar11 + *(int *)(*local_38 + 8);\n        goto LAB_00112d6f;\n      }\n    }" (if "if") (parenthesized_expression "(local_38 != (int *)0x0)" (( "(") (binary_expression "local_38 != (int *)0x0" (identifier "local_38") (!= "!=") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n      uVar12 = ((int *)*local_38)[1];\n      piVar2 = (int *)*local_38;\n      while (piVar9 = piVar2, uVar12 != local_3c) {\n        piVar2 = (int *)*piVar9;\n        if ((piVar2 == (int *)0x0) ||\n           (uVar12 = piVar2[1], local_38 = piVar9, uVar7 != uVar12 % puVar1[3])) goto LAB_00112e0c;\n      }\n      if (*local_38 != 0) {\n        iVar13 = uVar11 + *(int *)(*local_38 + 8);\n        goto LAB_00112d6f;\n      }\n    }" ({ "{") (expression_statement "uVar12 = ((int *)*local_38)[1];" (assignment_expression "uVar12 = ((int *)*local_38)[1]" (identifier "uVar12") (= "=") (subscript_expression "((int *)*local_38)[1]" (parenthesized_expression "((int *)*local_38)" (( "(") (cast_expression "(int *)*local_38" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*local_38" (* "*") (identifier "local_38"))) () ")")) ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "piVar2 = (int *)*local_38;" (assignment_expression "piVar2 = (int *)*local_38" (identifier "piVar2") (= "=") (cast_expression "(int *)*local_38" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*local_38" (* "*") (identifier "local_38")))) (; ";")) (while_statement "while (piVar9 = piVar2, uVar12 != local_3c) {\n        piVar2 = (int *)*piVar9;\n        if ((piVar2 == (int *)0x0) ||\n           (uVar12 = piVar2[1], local_38 = piVar9, uVar7 != uVar12 % puVar1[3])) goto LAB_00112e0c;\n      }" (while "while") (parenthesized_expression "(piVar9 = piVar2, uVar12 != local_3c)" (( "(") (comma_expression "piVar9 = piVar2, uVar12 != local_3c" (assignment_expression "piVar9 = piVar2" (identifier "piVar9") (= "=") (identifier "piVar2")) (, ",") (binary_expression "uVar12 != local_3c" (identifier "uVar12") (!= "!=") (identifier "local_3c"))) () ")")) (compound_statement "{\n        piVar2 = (int *)*piVar9;\n        if ((piVar2 == (int *)0x0) ||\n           (uVar12 = piVar2[1], local_38 = piVar9, uVar7 != uVar12 % puVar1[3])) goto LAB_00112e0c;\n      }" ({ "{") (expression_statement "piVar2 = (int *)*piVar9;" (assignment_expression "piVar2 = (int *)*piVar9" (identifier "piVar2") (= "=") (cast_expression "(int *)*piVar9" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*piVar9" (* "*") (identifier "piVar9")))) (; ";")) (if_statement "if ((piVar2 == (int *)0x0) ||\n           (uVar12 = piVar2[1], local_38 = piVar9, uVar7 != uVar12 % puVar1[3])) goto LAB_00112e0c;" (if "if") (parenthesized_expression "((piVar2 == (int *)0x0) ||\n           (uVar12 = piVar2[1], local_38 = piVar9, uVar7 != uVar12 % puVar1[3]))" (( "(") (binary_expression "(piVar2 == (int *)0x0) ||\n           (uVar12 = piVar2[1], local_38 = piVar9, uVar7 != uVar12 % puVar1[3])" (parenthesized_expression "(piVar2 == (int *)0x0)" (( "(") (binary_expression "piVar2 == (int *)0x0" (identifier "piVar2") (== "==") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (|| "||") (parenthesized_expression "(uVar12 = piVar2[1], local_38 = piVar9, uVar7 != uVar12 % puVar1[3])" (( "(") (comma_expression "uVar12 = piVar2[1], local_38 = piVar9, uVar7 != uVar12 % puVar1[3]" (assignment_expression "uVar12 = piVar2[1]" (identifier "uVar12") (= "=") (subscript_expression "piVar2[1]" (identifier "piVar2") ([ "[") (number_literal "1") (] "]"))) (, ",") (comma_expression "local_38 = piVar9, uVar7 != uVar12 % puVar1[3]" (assignment_expression "local_38 = piVar9" (identifier "local_38") (= "=") (identifier "piVar9")) (, ",") (binary_expression "uVar7 != uVar12 % puVar1[3]" (identifier "uVar7") (!= "!=") (binary_expression "uVar12 % puVar1[3]" (identifier "uVar12") (% "%") (subscript_expression "puVar1[3]" (identifier "puVar1") ([ "[") (number_literal "3") (] "]")))))) () ")"))) () ")")) (goto_statement "goto LAB_00112e0c;" (goto "goto") (statement_identifier "LAB_00112e0c") (; ";"))) (} "}"))) (if_statement "if (*local_38 != 0) {\n        iVar13 = uVar11 + *(int *)(*local_38 + 8);\n        goto LAB_00112d6f;\n      }" (if "if") (parenthesized_expression "(*local_38 != 0)" (( "(") (binary_expression "*local_38 != 0" (pointer_expression "*local_38" (* "*") (identifier "local_38")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n        iVar13 = uVar11 + *(int *)(*local_38 + 8);\n        goto LAB_00112d6f;\n      }" ({ "{") (expression_statement "iVar13 = uVar11 + *(int *)(*local_38 + 8);" (assignment_expression "iVar13 = uVar11 + *(int *)(*local_38 + 8)" (identifier "iVar13") (= "=") (binary_expression "uVar11 + *(int *)(*local_38 + 8)" (identifier "uVar11") (+ "+") (pointer_expression "*(int *)(*local_38 + 8)" (* "*") (cast_expression "(int *)(*local_38 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*local_38 + 8)" (( "(") (binary_expression "*local_38 + 8" (pointer_expression "*local_38" (* "*") (identifier "local_38")) (+ "+") (number_literal "8")) () ")")))))) (; ";")) (goto_statement "goto LAB_00112d6f;" (goto "goto") (statement_identifier "LAB_00112d6f") (; ";")) (} "}"))) (} "}"))) (labeled_statement "LAB_00112e0c:\n    iVar13 = FUN_00318cf0(puVar1,(int)((ulonglong)uVar14 >> 0x20),\n                          *(uint *)(extraout_ECX + 8) & 0x7ffffff,local_3c);" (statement_identifier "LAB_00112e0c") (: ":") (expression_statement "iVar13 = FUN_00318cf0(puVar1,(int)((ulonglong)uVar14 >> 0x20),\n                          *(uint *)(extraout_ECX + 8) & 0x7ffffff,local_3c);" (assignment_expression "iVar13 = FUN_00318cf0(puVar1,(int)((ulonglong)uVar14 >> 0x20),\n                          *(uint *)(extraout_ECX + 8) & 0x7ffffff,local_3c)" (identifier "iVar13") (= "=") (call_expression "FUN_00318cf0(puVar1,(int)((ulonglong)uVar14 >> 0x20),\n                          *(uint *)(extraout_ECX + 8) & 0x7ffffff,local_3c)" (identifier "FUN_00318cf0") (argument_list "(puVar1,(int)((ulonglong)uVar14 >> 0x20),\n                          *(uint *)(extraout_ECX + 8) & 0x7ffffff,local_3c)" (( "(") (identifier "puVar1") (, ",") (cast_expression "(int)((ulonglong)uVar14 >> 0x20)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "((ulonglong)uVar14 >> 0x20)" (( "(") (binary_expression "(ulonglong)uVar14 >> 0x20" (cast_expression "(ulonglong)uVar14" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (identifier "uVar14")) (>> ">>") (number_literal "0x20")) () ")"))) (, ",") (binary_expression "*(uint *)(extraout_ECX + 8) & 0x7ffffff" (pointer_expression "*(uint *)(extraout_ECX + 8)" (* "*") (cast_expression "(uint *)(extraout_ECX + 8)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(extraout_ECX + 8)" (( "(") (binary_expression "extraout_ECX + 8" (identifier "extraout_ECX") (+ "+") (number_literal "8")) () ")")))) (& "&") (number_literal "0x7ffffff")) (, ",") (identifier "local_3c") () ")")))) (; ";"))) (expression_statement "uVar11 = (uVar11 + iVar13) - param_1;" (assignment_expression "uVar11 = (uVar11 + iVar13) - param_1" (identifier "uVar11") (= "=") (binary_expression "(uVar11 + iVar13) - param_1" (parenthesized_expression "(uVar11 + iVar13)" (( "(") (binary_expression "uVar11 + iVar13" (identifier "uVar11") (+ "+") (identifier "iVar13")) () ")")) (- "-") (identifier "param_1"))) (; ";")) (} "}")))) (if_statement "if (param_2 == 0) {\n    uVar6 = gettext(unaff_EDI + 0x358c61);\n    FUN_0023b810(uVar6);\n    return (bool)2;\n  }" (if "if") (parenthesized_expression "(param_2 == 0)" (( "(") (binary_expression "param_2 == 0" (identifier "param_2") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    uVar6 = gettext(unaff_EDI + 0x358c61);\n    FUN_0023b810(uVar6);\n    return (bool)2;\n  }" ({ "{") (expression_statement "uVar6 = gettext(unaff_EDI + 0x358c61);" (assignment_expression "uVar6 = gettext(unaff_EDI + 0x358c61)" (identifier "uVar6") (= "=") (call_expression "gettext(unaff_EDI + 0x358c61)" (identifier "gettext") (argument_list "(unaff_EDI + 0x358c61)" (( "(") (binary_expression "unaff_EDI + 0x358c61" (identifier "unaff_EDI") (+ "+") (number_literal "0x358c61")) () ")")))) (; ";")) (expression_statement "FUN_0023b810(uVar6);" (call_expression "FUN_0023b810(uVar6)" (identifier "FUN_0023b810") (argument_list "(uVar6)" (( "(") (identifier "uVar6") () ")"))) (; ";")) (return_statement "return (bool)2;" (return "return") (cast_expression "(bool)2" (( "(") (type_descriptor "bool" (primitive_type "bool")) () ")") (number_literal "2")) (; ";")) (} "}"))) (expression_statement "uVar4 = (ushort)((uVar11 >> 0x1f) << 10) | (ushort)(uVar11 >> 0xc) & 0x3f | uVar8 & 0xfbc0;" (assignment_expression "uVar4 = (ushort)((uVar11 >> 0x1f) << 10) | (ushort)(uVar11 >> 0xc) & 0x3f | uVar8 & 0xfbc0" (identifier "uVar4") (= "=") (binary_expression "(ushort)((uVar11 >> 0x1f) << 10) | (ushort)(uVar11 >> 0xc) & 0x3f | uVar8 & 0xfbc0" (binary_expression "(ushort)((uVar11 >> 0x1f) << 10) | (ushort)(uVar11 >> 0xc) & 0x3f" (call_expression "(ushort)((uVar11 >> 0x1f) << 10)" (parenthesized_expression "(ushort)" (( "(") (identifier "ushort") () ")")) (argument_list "((uVar11 >> 0x1f) << 10)" (( "(") (binary_expression "(uVar11 >> 0x1f) << 10" (parenthesized_expression "(uVar11 >> 0x1f)" (( "(") (binary_expression "uVar11 >> 0x1f" (identifier "uVar11") (>> ">>") (number_literal "0x1f")) () ")")) (<< "<<") (number_literal "10")) () ")"))) (| "|") (binary_expression "(ushort)(uVar11 >> 0xc) & 0x3f" (call_expression "(ushort)(uVar11 >> 0xc)" (parenthesized_expression "(ushort)" (( "(") (identifier "ushort") () ")")) (argument_list "(uVar11 >> 0xc)" (( "(") (binary_expression "uVar11 >> 0xc" (identifier "uVar11") (>> ">>") (number_literal "0xc")) () ")"))) (& "&") (number_literal "0x3f"))) (| "|") (binary_expression "uVar8 & 0xfbc0" (identifier "uVar8") (& "&") (number_literal "0xfbc0")))) (; ";")) (expression_statement "*puVar5 = uVar4 << 8 | uVar4 >> 8;" (assignment_expression "*puVar5 = uVar4 << 8 | uVar4 >> 8" (pointer_expression "*puVar5" (* "*") (identifier "puVar5")) (= "=") (binary_expression "uVar4 << 8 | uVar4 >> 8" (binary_expression "uVar4 << 8" (identifier "uVar4") (<< "<<") (number_literal "8")) (| "|") (binary_expression "uVar4 >> 8" (identifier "uVar4") (>> ">>") (number_literal "8")))) (; ";")) (expression_statement "uVar4 = (ushort)(uVar11 >> 1) & 0x7ff;" (assignment_expression "uVar4 = (ushort)(uVar11 >> 1) & 0x7ff" (identifier "uVar4") (= "=") (binary_expression "(ushort)(uVar11 >> 1) & 0x7ff" (call_expression "(ushort)(uVar11 >> 1)" (parenthesized_expression "(ushort)" (( "(") (identifier "ushort") () ")")) (argument_list "(uVar11 >> 1)" (( "(") (binary_expression "uVar11 >> 1" (identifier "uVar11") (>> ">>") (number_literal "1")) () ")"))) (& "&") (number_literal "0x7ff"))) (; ";")) (expression_statement "puVar5[1] = uVar4 << 8 |\n              (ushort)(uVar3 & 0xd000 | uVar4 | (ushort)((uVar11 >> 0x12 & 1) << 0xd) |\n                      (ushort)((uVar11 >> 0x13 & 1) << 0xb)) >> 8;" (assignment_expression "puVar5[1] = uVar4 << 8 |\n              (ushort)(uVar3 & 0xd000 | uVar4 | (ushort)((uVar11 >> 0x12 & 1) << 0xd) |\n                      (ushort)((uVar11 >> 0x13 & 1) << 0xb)) >> 8" (subscript_expression "puVar5[1]" (identifier "puVar5") ([ "[") (number_literal "1") (] "]")) (= "=") (binary_expression "uVar4 << 8 |\n              (ushort)(uVar3 & 0xd000 | uVar4 | (ushort)((uVar11 >> 0x12 & 1) << 0xd) |\n                      (ushort)((uVar11 >> 0x13 & 1) << 0xb)) >> 8" (binary_expression "uVar4 << 8" (identifier "uVar4") (<< "<<") (number_literal "8")) (| "|") (binary_expression "(ushort)(uVar3 & 0xd000 | uVar4 | (ushort)((uVar11 >> 0x12 & 1) << 0xd) |\n                      (ushort)((uVar11 >> 0x13 & 1) << 0xb)) >> 8" (call_expression "(ushort)(uVar3 & 0xd000 | uVar4 | (ushort)((uVar11 >> 0x12 & 1) << 0xd) |\n                      (ushort)((uVar11 >> 0x13 & 1) << 0xb))" (parenthesized_expression "(ushort)" (( "(") (identifier "ushort") () ")")) (argument_list "(uVar3 & 0xd000 | uVar4 | (ushort)((uVar11 >> 0x12 & 1) << 0xd) |\n                      (ushort)((uVar11 >> 0x13 & 1) << 0xb))" (( "(") (binary_expression "uVar3 & 0xd000 | uVar4 | (ushort)((uVar11 >> 0x12 & 1) << 0xd) |\n                      (ushort)((uVar11 >> 0x13 & 1) << 0xb)" (binary_expression "uVar3 & 0xd000 | uVar4 | (ushort)((uVar11 >> 0x12 & 1) << 0xd)" (binary_expression "uVar3 & 0xd000 | uVar4" (binary_expression "uVar3 & 0xd000" (identifier "uVar3") (& "&") (number_literal "0xd000")) (| "|") (identifier "uVar4")) (| "|") (call_expression "(ushort)((uVar11 >> 0x12 & 1) << 0xd)" (parenthesized_expression "(ushort)" (( "(") (identifier "ushort") () ")")) (argument_list "((uVar11 >> 0x12 & 1) << 0xd)" (( "(") (binary_expression "(uVar11 >> 0x12 & 1) << 0xd" (parenthesized_expression "(uVar11 >> 0x12 & 1)" (( "(") (binary_expression "uVar11 >> 0x12 & 1" (binary_expression "uVar11 >> 0x12" (identifier "uVar11") (>> ">>") (number_literal "0x12")) (& "&") (number_literal "1")) () ")")) (<< "<<") (number_literal "0xd")) () ")")))) (| "|") (call_expression "(ushort)((uVar11 >> 0x13 & 1) << 0xb)" (parenthesized_expression "(ushort)" (( "(") (identifier "ushort") () ")")) (argument_list "((uVar11 >> 0x13 & 1) << 0xb)" (( "(") (binary_expression "(uVar11 >> 0x13 & 1) << 0xb" (parenthesized_expression "(uVar11 >> 0x13 & 1)" (( "(") (binary_expression "uVar11 >> 0x13 & 1" (binary_expression "uVar11 >> 0x13" (identifier "uVar11") (>> ">>") (number_literal "0x13")) (& "&") (number_literal "1")) () ")")) (<< "<<") (number_literal "0xb")) () ")")))) () ")"))) (>> ">>") (number_literal "8")))) (; ";")) (return_statement "return 0x1fffff < uVar11 + 0x100000;" (return "return") (binary_expression "0x1fffff < uVar11 + 0x100000" (number_literal "0x1fffff") (< "<") (binary_expression "uVar11 + 0x100000" (identifier "uVar11") (+ "+") (number_literal "0x100000"))) (; ";")) (} "}")))

/* WARNING: Enum "<anon>": Some values do not have unique names */

type_1 anon_unknown.dwarf_91258a::Arm_relocate_functions<true>::function_1
                 (type_2 *view,type_3<true> *var_20,type_4<32> *psymval,type_5 address
                 ,type_5 thumb_bit)

{
  var_1<32> *this;
  type_6 var_12;
  type_7 *var_16;
  type_8 var_4;
  type_8 var_3;
  type_9 *wv;
  type_8 *puVar5;
  type_10 var_19;
  char *format;
  int var_8;
  type_6 var_17;
  type_8 var_5;
  type_11 p_Var9;
  type_8 var_6;
  type_6 var_7;
  type_7 *var_14;
  int var_9;
  int var_11;
  type_12 uVar14;
  type_7 *var_15;
  type_11 var_13;
  
  uVar14 = var_2();
  puVar5 = (type_8 *)uVar14;
  var_3 = *puVar5 << 8;
  var_5 = var_3 | *puVar5 >> 8;
  var_4 = puVar5[1] << 8;
  var_6 = var_4 | puVar5[1] >> 8;
  var_7 = (var_5 & 0x3f | var_6 >> 4 & 0x80 | var_5 >> 2 & 0x100 | var_6 >> 7 & 0x40) << 0xc |
           (var_6 & 0x7ff) * 2;
  if ((var_3 & 0x400) != 0) {
    var_7 = var_7 - 0x200000;
  }
  if ((char)*(type_13 *)(var_8 + 0xb) < '\0') {
    var_9 = var_7 + *(int *)(var_8 + 0xc);
LAB_00112d6f:
    var_7 = var_9 - (int)view;
  }
  else {
    if ((*(type_13 *)(var_8 + 0xb) & 8) == 0) {
                    /* WARNING: Subroutine does not return */
      gold::var_10((char *)(var_11 + 0x33a72e),0x6ab,(char *)(var_11 + 0x357a35))
      ;
    }
    this = *(var_1<32> **)(var_8 + 0xc);
    var_15 = (type_7 *)this->input_value_;
    if (var_7 < 0xffffff00) {
      var_15 = (type_7 *)((int)&var_15->_M_nxt + var_7);
      var_7 = 0;
    }
    var_12 = (this->output_addresses_)._M_h._M_bucket_count;
    var_17 = (type_6)var_15 % var_12;
    var_13 = (this->output_addresses_)._M_h._M_buckets[var_17];
    if (var_13 != (type_11)0x0) {
      var_14 = var_13->_M_nxt[1]._M_nxt;
      var_16 = var_13->_M_nxt;
      while (p_Var9 = var_16, var_14 != var_15) {
        var_16 = p_Var9->_M_nxt;
        if ((var_16 == (type_7 *)0x0) ||
           (var_14 = var_16[1]._M_nxt, var_13 = p_Var9, var_17 != (type_6)var_14 % var_12))
        goto LAB_00112e0c;
      }
      if (var_13->_M_nxt != (type_7 *)0x0) {
        var_9 = (int)&(var_13->_M_nxt[2]._M_nxt)->_M_nxt + var_7;
        goto LAB_00112d6f;
      }
    }
LAB_00112e0c:
    var_19 = gold::var_1<32>::var_18
                      (this,(type_14 *)((type_15)uVar14 >> 0x20),
                       *(type_6 *)(var_8 + 8) & 0x7ffffff,(type_10)var_15);
    var_7 = (var_7 + var_19) - (int)view;
  }
  if (var_20 == (type_3<true> *)0x0) {
    format = (char *)var_21(&UNK_00358c61 + var_11);
    gold::var_22(format);
    return STATUS_BAD_RELOC;
  }
  var_3 = (type_8)((var_7 >> 0x1f) << 10) | (type_8)(var_7 >> 0xc) & 0x3f | var_5 & 0xfbc0;
  *puVar5 = var_3 << 8 | var_3 >> 8;
  var_3 = (type_8)(var_7 >> 1) & 0x7ff;
  puVar5[1] = var_3 << 8 |
              (type_8)(var_4 & 0xd000 | var_3 | (type_8)((var_7 >> 0x12 & 1) << 0xd) |
                      (type_8)((var_7 >> 0x13 & 1) << 0xb)) >> 8;
  return (type_6)(0x1fffff < var_7 + 0x100000);
}


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

bool MASKED(int param_1,int param_2)

{
  uint *puVar1;
  int *piVar2;
  ushort uVar3;
  ushort uVar4;
  ushort *puVar5;
  undefined4 uVar6;
  int extraout_ECX;
  uint uVar7;
  ushort uVar8;
  int *piVar9;
  ushort uVar10;
  uint uVar11;
  uint uVar12;
  int iVar13;
  int unaff_EDI;
  undefined8 uVar14;
  uint local_3c;
  int *local_38;
  
  uVar14 = FUN_00074f0a();
  puVar5 = (ushort *)uVar14;
  uVar4 = *puVar5 << 8;
  uVar8 = uVar4 | *puVar5 >> 8;
  uVar3 = puVar5[1] << 8;
  uVar10 = uVar3 | puVar5[1] >> 8;
  uVar11 = (uVar8 & 0x3f | uVar10 >> 4 & 0x80 | uVar8 >> 2 & 0x100 | uVar10 >> 7 & 0x40) << 0xc |
           (uVar10 & 0x7ff) * 2;
  if ((uVar4 & 0x400) != 0) {
    uVar11 = uVar11 - 0x200000;
  }
  if ((char)*(byte *)(extraout_ECX + 0xb) < '\0') {
    iVar13 = uVar11 + *(int *)(extraout_ECX + 0xc);
LAB_00112d6f:
    uVar11 = iVar13 - param_1;
  }
  else {
    if ((*(byte *)(extraout_ECX + 0xb) & 8) == 0) {
                    /* WARNING: Subroutine does not return */
      FUN_002446e0(unaff_EDI + 0x33a72e,0x6ab,unaff_EDI + 0x357a35,(uint)(uVar10 >> 7));
    }
    puVar1 = *(uint **)(extraout_ECX + 0xc);
    local_3c = *puVar1;
    if (uVar11 < 0xffffff00) {
      local_3c = local_3c + uVar11;
      uVar11 = 0;
    }
    uVar7 = local_3c % puVar1[3];
    local_38 = *(int **)(puVar1[2] + uVar7 * 4);
    if (local_38 != (int *)0x0) {
      uVar12 = ((int *)*local_38)[1];
      piVar2 = (int *)*local_38;
      while (piVar9 = piVar2, uVar12 != local_3c) {
        piVar2 = (int *)*piVar9;
        if ((piVar2 == (int *)0x0) ||
           (uVar12 = piVar2[1], local_38 = piVar9, uVar7 != uVar12 % puVar1[3])) goto LAB_00112e0c;
      }
      if (*local_38 != 0) {
        iVar13 = uVar11 + *(int *)(*local_38 + 8);
        goto LAB_00112d6f;
      }
    }
LAB_00112e0c:
    iVar13 = FUN_00318cf0(puVar1,(int)((ulonglong)uVar14 >> 0x20),
                          *(uint *)(extraout_ECX + 8) & 0x7ffffff,local_3c);
    uVar11 = (uVar11 + iVar13) - param_1;
  }
  if (param_2 == 0) {
    uVar6 = gettext(unaff_EDI + 0x358c61);
    FUN_0023b810(uVar6);
    return (bool)2;
  }
  uVar4 = (ushort)((uVar11 >> 0x1f) << 10) | (ushort)(uVar11 >> 0xc) & 0x3f | uVar8 & 0xfbc0;
  *puVar5 = uVar4 << 8 | uVar4 >> 8;
  uVar4 = (ushort)(uVar11 >> 1) & 0x7ff;
  puVar5[1] = uVar4 << 8 |
              (ushort)(uVar3 & 0xd000 | uVar4 | (ushort)((uVar11 >> 0x12 & 1) << 0xd) |
                      (ushort)((uVar11 >> 0x13 & 1) << 0xb)) >> 8;
  return 0x1fffff < uVar11 + 0x100000;
}

