
/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */
/* WARNING: Enum "DT": Some values do not have unique names */

void anon_unknown.dwarf_130c1fc::Target_s390<32>::Relocate::tls_ie_to_le
               (Relocate_info<32,_true> *relinfo,size_t relnum,Rela<32,_true> *rela,uchar *view,
               section_size_type view_size)

{
}



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

void __regparm3
FUN_00210ac0(undefined4 param_1,undefined4 param_2,undefined4 *param_3,char *param_4,uint param_5)

{
  byte bVar1;
  byte bVar2;
  byte bVar3;
  uint uVar4;
  undefined4 uVar5;
  byte bVar6;
  
  uVar4 = *(uint *)*param_3;
  uVar4 = uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 | uVar4 << 0x18;
  if (param_5 < uVar4 + 4) {
    uVar5 = gettext("TLS relocation out of range");
    FUN_0023be30(param_1,param_2,uVar4,0,uVar5);
  }
  if (*param_4 == 'X') {
    if (((param_4[2] & 0xfU) == 0) && (param_4[3] == '\0')) {
      bVar1 = param_4[1];
      bVar6 = param_4[1] & 0xf;
      bVar3 = (byte)param_4[2] >> 4;
      bVar2 = bVar6;
      if ((bVar3 == 0) ||
         (((bVar2 = bVar3, bVar6 == 0 || (bVar2 = bVar6, bVar3 == 0xc)) ||
          (bVar2 = bVar3, bVar6 == 0xc)))) {
        *param_4 = '\x18';
        param_4[2] = '\a';
        param_4[3] = '\0';
        param_4[1] = bVar1 & 0xf0 | bVar2;
        return;
      }
    }
  }
  else if (*param_4 == -0x1d) {
    uVar4 = *(uint *)*param_3;
    uVar4 = uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 | uVar4 << 0x18;
    if (param_5 < uVar4 + 6) {
      uVar5 = gettext("TLS relocation out of range");
      FUN_0023be30(param_1,param_2,uVar4,0,uVar5);
    }
    if ((((param_4[2] & 0xfU) == 0) && (param_4[3] == '\0')) &&
       ((param_4[4] == '\0' && (param_4[5] == '\x04')))) {
      bVar1 = param_4[1];
      bVar6 = param_4[1] & 0xf;
      bVar3 = (byte)param_4[2] >> 4;
      bVar2 = bVar6;
      if (((bVar3 == 0) || (bVar2 = bVar3, bVar6 == 0)) ||
         ((bVar2 = bVar6, bVar3 == 0xc || (bVar2 = bVar3, bVar6 == 0xc)))) {
        *param_4 = -0x15;
        param_4[2] = '\0';
        param_4[3] = '\0';
        param_4[4] = '\0';
        param_4[5] = '\r';
        param_4[1] = bVar1 & 0xf0 | bVar2;
        return;
      }
    }
  }
  uVar5 = gettext("unsupported op for IE to LE");
  uVar4 = *(uint *)*param_3;
  FUN_0023be30(param_1,param_2,
               uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 | uVar4 << 0x18,0,
               uVar5);
  return;
}


PUSH EBP
MOV EBP,EAX
PUSH EDI
MOV EDI,EDX
PUSH ESI
MOV ESI,ECX
PUSH EBX
CALL 0x00050b50
ADD EBX,0x3d9531
SUB ESP,0x1c
MOV EAX,dword ptr [ESI]
MOV ECX,dword ptr [ESP + 0x30]
MOV EAX,dword ptr [EAX]
BSWAP EAX
MOV EDX,EAX
ADD EAX,0x4
CMP dword ptr [ESP + 0x34],EAX
JC 0x00210c58
MOVZX EAX,byte ptr [ECX]
CMP AL,0x58
JZ 0x00210bd0
CMP AL,0xe3
JZ 0x00210b30
SUB ESP,0xc
LEA EAX,[EBX + 0xffe971d0]
PUSH EAX
CALL 0x00039440
MOV EDX,dword ptr [ESI]
MOV EDX,dword ptr [EDX]
MOV dword ptr [ESP],EAX
BSWAP EDX
MOV EAX,EDX
XOR EDX,EDX
PUSH EDX
PUSH EAX
PUSH EDI
PUSH EBP
CALL 0x0023be30
ADD ESP,0x20
ADD ESP,0x1c
POP EBX
POP ESI
POP EDI
POP EBP
RET
MOV EAX,dword ptr [ESI]
MOV EAX,dword ptr [EAX]
BSWAP EAX
MOV EDX,EAX
LEA EAX,[EAX + 0x6]
CMP dword ptr [ESP + 0x34],EAX
JC 0x00210c90
MOVZX EAX,byte ptr [ECX + 0x2]
MOV byte ptr [ESP],AL
TEST AL,0xf
JNZ 0x00210b00
CMP byte ptr [ECX + 0x3],0x0
JNZ 0x00210b00
CMP byte ptr [ECX + 0x4],0x0
JNZ 0x00210b00
CMP byte ptr [ECX + 0x5],0x4
JNZ 0x00210b00
MOVZX EDX,byte ptr [ECX + 0x1]
SHR DL,0x4
MOVZX EAX,DL
MOVZX EDX,byte ptr [ECX + 0x1]
MOV dword ptr [ESP + 0x8],EAX
AND EDX,0xf
MOVZX EAX,DL
MOV byte ptr [ESP + 0xf],DL
MOV dword ptr [ESP + 0x4],EAX
MOVZX EAX,byte ptr [ESP]
SHR AL,0x4
JZ 0x00210bb0
CMP byte ptr [ESP + 0xf],0x0
MOVZX EDX,AL
JZ 0x00210cd9
CMP AL,0xc
JZ 0x00210bb0
CMP dword ptr [ESP + 0x4],0xc
JNZ 0x00210b00
MOV dword ptr [ESP + 0x4],EDX
LEA ESI,[ESI]
MOV EDX,dword ptr [ESP + 0x8]
MOV byte ptr [ECX],0xeb
MOV dword ptr [ECX + 0x2],0xd000000
SHL EDX,0x4
OR DL,byte ptr [ESP + 0x4]
MOV byte ptr [ECX + 0x1],DL
JMP 0x00210b28
MOVZX EAX,byte ptr [ECX + 0x2]
MOV byte ptr [ESP],AL
TEST AL,0xf
JNZ 0x00210b00
CMP byte ptr [ECX + 0x3],0x0
JNZ 0x00210b00
MOVZX EDX,byte ptr [ECX + 0x1]
SHR DL,0x4
MOVZX EAX,DL
MOVZX EDX,byte ptr [ECX + 0x1]
MOV dword ptr [ESP + 0x8],EAX
AND EDX,0xf
MOVZX EAX,DL
MOV byte ptr [ESP + 0xf],DL
MOV dword ptr [ESP + 0x4],EAX
MOVZX EAX,byte ptr [ESP]
SHR AL,0x4
JZ 0x00210c33
CMP byte ptr [ESP + 0xf],0x0
MOVZX EDX,AL
JZ 0x00210cd0
CMP AL,0xc
JZ 0x00210c33
CMP dword ptr [ESP + 0x4],0xc
JNZ 0x00210b00
MOV dword ptr [ESP + 0x4],EDX
MOV EDX,dword ptr [ESP + 0x8]
MOV EAX,0x7
MOV byte ptr [ECX],0x18
MOV word ptr [ECX + 0x2],AX
SHL EDX,0x4
OR DL,byte ptr [ESP + 0x4]
MOV byte ptr [ECX + 0x1],DL
ADD ESP,0x1c
POP EBX
POP ESI
POP EDI
POP EBP
RET
MOV dword ptr [ESP],EDX
LEA EAX,[EBX + 0xffe6350c]
SUB ESP,0xc
PUSH EAX
CALL 0x00039440
MOV EDX,dword ptr [ESP + 0x10]
MOV dword ptr [ESP],EAX
MOV EAX,EDX
XOR EDX,EDX
PUSH EDX
PUSH EAX
PUSH EDI
PUSH EBP
CALL 0x0023be30
ADD ESP,0x20
MOV ECX,dword ptr [ESP + 0x30]
JMP 0x00210af1
MOV dword ptr [ESP + 0x30],ECX
LEA EAX,[EBX + 0xffe6350c]
SUB ESP,0xc
MOV dword ptr [ESP + 0xc],EDX
PUSH EAX
CALL 0x00039440
MOV EDX,dword ptr [ESP + 0x10]
MOV dword ptr [ESP],EAX
MOV EAX,EDX
XOR EDX,EDX
PUSH EDX
PUSH EAX
PUSH EDI
PUSH EBP
CALL 0x0023be30
ADD ESP,0x20
MOV ECX,dword ptr [ESP + 0x30]
JMP 0x00210b45
MOV dword ptr [ESP + 0x4],EDX
JMP 0x00210c33
MOV dword ptr [ESP + 0x4],EDX
JMP 0x00210bb0
(translation_unit "/* WARNING: Function: __i686.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n\nvoid __regparm3\nFUN_00210ac0(undefined4 param_1,undefined4 param_2,undefined4 *param_3,char *param_4,uint param_5)\n\n{\n  byte bVar1;\n  byte bVar2;\n  byte bVar3;\n  uint uVar4;\n  undefined4 uVar5;\n  byte bVar6;\n  \n  uVar4 = *(uint *)*param_3;\n  uVar4 = uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 | uVar4 << 0x18;\n  if (param_5 < uVar4 + 4) {\n    uVar5 = gettext("TLS relocation out of range");\n    FUN_0023be30(param_1,param_2,uVar4,0,uVar5);\n  }\n  if (*param_4 == 'X') {\n    if (((param_4[2] & 0xfU) == 0) && (param_4[3] == '\0')) {\n      bVar1 = param_4[1];\n      bVar6 = param_4[1] & 0xf;\n      bVar3 = (byte)param_4[2] >> 4;\n      bVar2 = bVar6;\n      if ((bVar3 == 0) ||\n         (((bVar2 = bVar3, bVar6 == 0 || (bVar2 = bVar6, bVar3 == 0xc)) ||\n          (bVar2 = bVar3, bVar6 == 0xc)))) {\n        *param_4 = '\x18';\n        param_4[2] = '\a';\n        param_4[3] = '\0';\n        param_4[1] = bVar1 & 0xf0 | bVar2;\n        return;\n      }\n    }\n  }\n  else if (*param_4 == -0x1d) {\n    uVar4 = *(uint *)*param_3;\n    uVar4 = uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 | uVar4 << 0x18;\n    if (param_5 < uVar4 + 6) {\n      uVar5 = gettext("TLS relocation out of range");\n      FUN_0023be30(param_1,param_2,uVar4,0,uVar5);\n    }\n    if ((((param_4[2] & 0xfU) == 0) && (param_4[3] == '\0')) &&\n       ((param_4[4] == '\0' && (param_4[5] == '\x04')))) {\n      bVar1 = param_4[1];\n      bVar6 = param_4[1] & 0xf;\n      bVar3 = (byte)param_4[2] >> 4;\n      bVar2 = bVar6;\n      if (((bVar3 == 0) || (bVar2 = bVar3, bVar6 == 0)) ||\n         ((bVar2 = bVar6, bVar3 == 0xc || (bVar2 = bVar3, bVar6 == 0xc)))) {\n        *param_4 = -0x15;\n        param_4[2] = '\0';\n        param_4[3] = '\0';\n        param_4[4] = '\0';\n        param_4[5] = '\r';\n        param_4[1] = bVar1 & 0xf0 | bVar2;\n        return;\n      }\n    }\n  }\n  uVar5 = gettext("unsupported op for IE to LE");\n  uVar4 = *(uint *)*param_3;\n  FUN_0023be30(param_1,param_2,\n               uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 | uVar4 << 0x18,0,\n               uVar5);\n  return;\n}\n\n" comment (function_definition "void __regparm3\nFUN_00210ac0(undefined4 param_1,undefined4 param_2,undefined4 *param_3,char *param_4,uint param_5)\n\n{\n  byte bVar1;\n  byte bVar2;\n  byte bVar3;\n  uint uVar4;\n  undefined4 uVar5;\n  byte bVar6;\n  \n  uVar4 = *(uint *)*param_3;\n  uVar4 = uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 | uVar4 << 0x18;\n  if (param_5 < uVar4 + 4) {\n    uVar5 = gettext("TLS relocation out of range");\n    FUN_0023be30(param_1,param_2,uVar4,0,uVar5);\n  }\n  if (*param_4 == 'X') {\n    if (((param_4[2] & 0xfU) == 0) && (param_4[3] == '\0')) {\n      bVar1 = param_4[1];\n      bVar6 = param_4[1] & 0xf;\n      bVar3 = (byte)param_4[2] >> 4;\n      bVar2 = bVar6;\n      if ((bVar3 == 0) ||\n         (((bVar2 = bVar3, bVar6 == 0 || (bVar2 = bVar6, bVar3 == 0xc)) ||\n          (bVar2 = bVar3, bVar6 == 0xc)))) {\n        *param_4 = '\x18';\n        param_4[2] = '\a';\n        param_4[3] = '\0';\n        param_4[1] = bVar1 & 0xf0 | bVar2;\n        return;\n      }\n    }\n  }\n  else if (*param_4 == -0x1d) {\n    uVar4 = *(uint *)*param_3;\n    uVar4 = uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 | uVar4 << 0x18;\n    if (param_5 < uVar4 + 6) {\n      uVar5 = gettext("TLS relocation out of range");\n      FUN_0023be30(param_1,param_2,uVar4,0,uVar5);\n    }\n    if ((((param_4[2] & 0xfU) == 0) && (param_4[3] == '\0')) &&\n       ((param_4[4] == '\0' && (param_4[5] == '\x04')))) {\n      bVar1 = param_4[1];\n      bVar6 = param_4[1] & 0xf;\n      bVar3 = (byte)param_4[2] >> 4;\n      bVar2 = bVar6;\n      if (((bVar3 == 0) || (bVar2 = bVar3, bVar6 == 0)) ||\n         ((bVar2 = bVar6, bVar3 == 0xc || (bVar2 = bVar3, bVar6 == 0xc)))) {\n        *param_4 = -0x15;\n        param_4[2] = '\0';\n        param_4[3] = '\0';\n        param_4[4] = '\0';\n        param_4[5] = '\r';\n        param_4[1] = bVar1 & 0xf0 | bVar2;\n        return;\n      }\n    }\n  }\n  uVar5 = gettext("unsupported op for IE to LE");\n  uVar4 = *(uint *)*param_3;\n  FUN_0023be30(param_1,param_2,\n               uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 | uVar4 << 0x18,0,\n               uVar5);\n  return;\n}" primitive_type (ERROR "__regparm3" identifier) (function_declarator "FUN_00210ac0(undefined4 param_1,undefined4 param_2,undefined4 *param_3,char *param_4,uint param_5)" identifier (parameter_list "(undefined4 param_1,undefined4 param_2,undefined4 *param_3,char *param_4,uint param_5)" ( (parameter_declaration "undefined4 param_1" type_identifier identifier) , (parameter_declaration "undefined4 param_2" type_identifier identifier) , (parameter_declaration "undefined4 *param_3" type_identifier (pointer_declarator "*param_3" * identifier)) , (parameter_declaration "char *param_4" primitive_type (pointer_declarator "*param_4" * identifier)) , (parameter_declaration "uint param_5" type_identifier identifier) ))) (compound_statement "{\n  byte bVar1;\n  byte bVar2;\n  byte bVar3;\n  uint uVar4;\n  undefined4 uVar5;\n  byte bVar6;\n  \n  uVar4 = *(uint *)*param_3;\n  uVar4 = uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 | uVar4 << 0x18;\n  if (param_5 < uVar4 + 4) {\n    uVar5 = gettext("TLS relocation out of range");\n    FUN_0023be30(param_1,param_2,uVar4,0,uVar5);\n  }\n  if (*param_4 == 'X') {\n    if (((param_4[2] & 0xfU) == 0) && (param_4[3] == '\0')) {\n      bVar1 = param_4[1];\n      bVar6 = param_4[1] & 0xf;\n      bVar3 = (byte)param_4[2] >> 4;\n      bVar2 = bVar6;\n      if ((bVar3 == 0) ||\n         (((bVar2 = bVar3, bVar6 == 0 || (bVar2 = bVar6, bVar3 == 0xc)) ||\n          (bVar2 = bVar3, bVar6 == 0xc)))) {\n        *param_4 = '\x18';\n        param_4[2] = '\a';\n        param_4[3] = '\0';\n        param_4[1] = bVar1 & 0xf0 | bVar2;\n        return;\n      }\n    }\n  }\n  else if (*param_4 == -0x1d) {\n    uVar4 = *(uint *)*param_3;\n    uVar4 = uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 | uVar4 << 0x18;\n    if (param_5 < uVar4 + 6) {\n      uVar5 = gettext("TLS relocation out of range");\n      FUN_0023be30(param_1,param_2,uVar4,0,uVar5);\n    }\n    if ((((param_4[2] & 0xfU) == 0) && (param_4[3] == '\0')) &&\n       ((param_4[4] == '\0' && (param_4[5] == '\x04')))) {\n      bVar1 = param_4[1];\n      bVar6 = param_4[1] & 0xf;\n      bVar3 = (byte)param_4[2] >> 4;\n      bVar2 = bVar6;\n      if (((bVar3 == 0) || (bVar2 = bVar3, bVar6 == 0)) ||\n         ((bVar2 = bVar6, bVar3 == 0xc || (bVar2 = bVar3, bVar6 == 0xc)))) {\n        *param_4 = -0x15;\n        param_4[2] = '\0';\n        param_4[3] = '\0';\n        param_4[4] = '\0';\n        param_4[5] = '\r';\n        param_4[1] = bVar1 & 0xf0 | bVar2;\n        return;\n      }\n    }\n  }\n  uVar5 = gettext("unsupported op for IE to LE");\n  uVar4 = *(uint *)*param_3;\n  FUN_0023be30(param_1,param_2,\n               uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 | uVar4 << 0x18,0,\n               uVar5);\n  return;\n}" { (declaration "byte bVar1;" type_identifier identifier ;) (declaration "byte bVar2;" type_identifier identifier ;) (declaration "byte bVar3;" type_identifier identifier ;) (declaration "uint uVar4;" type_identifier identifier ;) (declaration "undefined4 uVar5;" type_identifier identifier ;) (declaration "byte bVar6;" type_identifier identifier ;) (expression_statement "uVar4 = *(uint *)*param_3;" (assignment_expression "uVar4 = *(uint *)*param_3" identifier = (pointer_expression "*(uint *)*param_3" * (cast_expression "(uint *)*param_3" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_3" * identifier)))) ;) (expression_statement "uVar4 = uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 | uVar4 << 0x18;" (assignment_expression "uVar4 = uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 | uVar4 << 0x18" identifier = (binary_expression "uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 | uVar4 << 0x18" (binary_expression "uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8" (binary_expression "uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8" (binary_expression "uVar4 >> 0x18" identifier >> number_literal) | (binary_expression "(uVar4 & 0xff0000) >> 8" (parenthesized_expression "(uVar4 & 0xff0000)" ( (binary_expression "uVar4 & 0xff0000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar4 & 0xff00) << 8" (parenthesized_expression "(uVar4 & 0xff00)" ( (binary_expression "uVar4 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "uVar4 << 0x18" identifier << number_literal))) ;) (if_statement "if (param_5 < uVar4 + 4) {\n    uVar5 = gettext("TLS relocation out of range");\n    FUN_0023be30(param_1,param_2,uVar4,0,uVar5);\n  }" if (parenthesized_expression "(param_5 < uVar4 + 4)" ( (binary_expression "param_5 < uVar4 + 4" identifier < (binary_expression "uVar4 + 4" identifier + number_literal)) )) (compound_statement "{\n    uVar5 = gettext("TLS relocation out of range");\n    FUN_0023be30(param_1,param_2,uVar4,0,uVar5);\n  }" { (expression_statement "uVar5 = gettext("TLS relocation out of range");" (assignment_expression "uVar5 = gettext("TLS relocation out of range")" identifier = (call_expression "gettext("TLS relocation out of range")" identifier (argument_list "("TLS relocation out of range")" ( (string_literal ""TLS relocation out of range"" " string_content ") )))) ;) (expression_statement "FUN_0023be30(param_1,param_2,uVar4,0,uVar5);" (call_expression "FUN_0023be30(param_1,param_2,uVar4,0,uVar5)" identifier (argument_list "(param_1,param_2,uVar4,0,uVar5)" ( identifier , identifier , identifier , number_literal , identifier ))) ;) })) (if_statement "if (*param_4 == 'X') {\n    if (((param_4[2] & 0xfU) == 0) && (param_4[3] == '\0')) {\n      bVar1 = param_4[1];\n      bVar6 = param_4[1] & 0xf;\n      bVar3 = (byte)param_4[2] >> 4;\n      bVar2 = bVar6;\n      if ((bVar3 == 0) ||\n         (((bVar2 = bVar3, bVar6 == 0 || (bVar2 = bVar6, bVar3 == 0xc)) ||\n          (bVar2 = bVar3, bVar6 == 0xc)))) {\n        *param_4 = '\x18';\n        param_4[2] = '\a';\n        param_4[3] = '\0';\n        param_4[1] = bVar1 & 0xf0 | bVar2;\n        return;\n      }\n    }\n  }\n  else if (*param_4 == -0x1d) {\n    uVar4 = *(uint *)*param_3;\n    uVar4 = uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 | uVar4 << 0x18;\n    if (param_5 < uVar4 + 6) {\n      uVar5 = gettext("TLS relocation out of range");\n      FUN_0023be30(param_1,param_2,uVar4,0,uVar5);\n    }\n    if ((((param_4[2] & 0xfU) == 0) && (param_4[3] == '\0')) &&\n       ((param_4[4] == '\0' && (param_4[5] == '\x04')))) {\n      bVar1 = param_4[1];\n      bVar6 = param_4[1] & 0xf;\n      bVar3 = (byte)param_4[2] >> 4;\n      bVar2 = bVar6;\n      if (((bVar3 == 0) || (bVar2 = bVar3, bVar6 == 0)) ||\n         ((bVar2 = bVar6, bVar3 == 0xc || (bVar2 = bVar3, bVar6 == 0xc)))) {\n        *param_4 = -0x15;\n        param_4[2] = '\0';\n        param_4[3] = '\0';\n        param_4[4] = '\0';\n        param_4[5] = '\r';\n        param_4[1] = bVar1 & 0xf0 | bVar2;\n        return;\n      }\n    }\n  }" if (parenthesized_expression "(*param_4 == 'X')" ( (binary_expression "*param_4 == 'X'" (pointer_expression "*param_4" * identifier) == (char_literal "'X'" ' character ')) )) (compound_statement "{\n    if (((param_4[2] & 0xfU) == 0) && (param_4[3] == '\0')) {\n      bVar1 = param_4[1];\n      bVar6 = param_4[1] & 0xf;\n      bVar3 = (byte)param_4[2] >> 4;\n      bVar2 = bVar6;\n      if ((bVar3 == 0) ||\n         (((bVar2 = bVar3, bVar6 == 0 || (bVar2 = bVar6, bVar3 == 0xc)) ||\n          (bVar2 = bVar3, bVar6 == 0xc)))) {\n        *param_4 = '\x18';\n        param_4[2] = '\a';\n        param_4[3] = '\0';\n        param_4[1] = bVar1 & 0xf0 | bVar2;\n        return;\n      }\n    }\n  }" { (if_statement "if (((param_4[2] & 0xfU) == 0) && (param_4[3] == '\0')) {\n      bVar1 = param_4[1];\n      bVar6 = param_4[1] & 0xf;\n      bVar3 = (byte)param_4[2] >> 4;\n      bVar2 = bVar6;\n      if ((bVar3 == 0) ||\n         (((bVar2 = bVar3, bVar6 == 0 || (bVar2 = bVar6, bVar3 == 0xc)) ||\n          (bVar2 = bVar3, bVar6 == 0xc)))) {\n        *param_4 = '\x18';\n        param_4[2] = '\a';\n        param_4[3] = '\0';\n        param_4[1] = bVar1 & 0xf0 | bVar2;\n        return;\n      }\n    }" if (parenthesized_expression "(((param_4[2] & 0xfU) == 0) && (param_4[3] == '\0'))" ( (binary_expression "((param_4[2] & 0xfU) == 0) && (param_4[3] == '\0')" (parenthesized_expression "((param_4[2] & 0xfU) == 0)" ( (binary_expression "(param_4[2] & 0xfU) == 0" (parenthesized_expression "(param_4[2] & 0xfU)" ( (binary_expression "param_4[2] & 0xfU" (subscript_expression "param_4[2]" identifier [ number_literal ]) & number_literal) )) == number_literal) )) && (parenthesized_expression "(param_4[3] == '\0')" ( (binary_expression "param_4[3] == '\0'" (subscript_expression "param_4[3]" identifier [ number_literal ]) == (char_literal "'\0'" ' escape_sequence ')) ))) )) (compound_statement "{\n      bVar1 = param_4[1];\n      bVar6 = param_4[1] & 0xf;\n      bVar3 = (byte)param_4[2] >> 4;\n      bVar2 = bVar6;\n      if ((bVar3 == 0) ||\n         (((bVar2 = bVar3, bVar6 == 0 || (bVar2 = bVar6, bVar3 == 0xc)) ||\n          (bVar2 = bVar3, bVar6 == 0xc)))) {\n        *param_4 = '\x18';\n        param_4[2] = '\a';\n        param_4[3] = '\0';\n        param_4[1] = bVar1 & 0xf0 | bVar2;\n        return;\n      }\n    }" { (expression_statement "bVar1 = param_4[1];" (assignment_expression "bVar1 = param_4[1]" identifier = (subscript_expression "param_4[1]" identifier [ number_literal ])) ;) (expression_statement "bVar6 = param_4[1] & 0xf;" (assignment_expression "bVar6 = param_4[1] & 0xf" identifier = (binary_expression "param_4[1] & 0xf" (subscript_expression "param_4[1]" identifier [ number_literal ]) & number_literal)) ;) (expression_statement "bVar3 = (byte)param_4[2] >> 4;" (assignment_expression "bVar3 = (byte)param_4[2] >> 4" identifier = (binary_expression "(byte)param_4[2] >> 4" (cast_expression "(byte)param_4[2]" ( (type_descriptor "byte" type_identifier) ) (subscript_expression "param_4[2]" identifier [ number_literal ])) >> number_literal)) ;) (expression_statement "bVar2 = bVar6;" (assignment_expression "bVar2 = bVar6" identifier = identifier) ;) (if_statement "if ((bVar3 == 0) ||\n         (((bVar2 = bVar3, bVar6 == 0 || (bVar2 = bVar6, bVar3 == 0xc)) ||\n          (bVar2 = bVar3, bVar6 == 0xc)))) {\n        *param_4 = '\x18';\n        param_4[2] = '\a';\n        param_4[3] = '\0';\n        param_4[1] = bVar1 & 0xf0 | bVar2;\n        return;\n      }" if (parenthesized_expression "((bVar3 == 0) ||\n         (((bVar2 = bVar3, bVar6 == 0 || (bVar2 = bVar6, bVar3 == 0xc)) ||\n          (bVar2 = bVar3, bVar6 == 0xc))))" ( (binary_expression "(bVar3 == 0) ||\n         (((bVar2 = bVar3, bVar6 == 0 || (bVar2 = bVar6, bVar3 == 0xc)) ||\n          (bVar2 = bVar3, bVar6 == 0xc)))" (parenthesized_expression "(bVar3 == 0)" ( (binary_expression "bVar3 == 0" identifier == number_literal) )) || (parenthesized_expression "(((bVar2 = bVar3, bVar6 == 0 || (bVar2 = bVar6, bVar3 == 0xc)) ||\n          (bVar2 = bVar3, bVar6 == 0xc)))" ( (parenthesized_expression "((bVar2 = bVar3, bVar6 == 0 || (bVar2 = bVar6, bVar3 == 0xc)) ||\n          (bVar2 = bVar3, bVar6 == 0xc))" ( (binary_expression "(bVar2 = bVar3, bVar6 == 0 || (bVar2 = bVar6, bVar3 == 0xc)) ||\n          (bVar2 = bVar3, bVar6 == 0xc)" (parenthesized_expression "(bVar2 = bVar3, bVar6 == 0 || (bVar2 = bVar6, bVar3 == 0xc))" ( (comma_expression "bVar2 = bVar3, bVar6 == 0 || (bVar2 = bVar6, bVar3 == 0xc)" (assignment_expression "bVar2 = bVar3" identifier = identifier) , (binary_expression "bVar6 == 0 || (bVar2 = bVar6, bVar3 == 0xc)" (binary_expression "bVar6 == 0" identifier == number_literal) || (parenthesized_expression "(bVar2 = bVar6, bVar3 == 0xc)" ( (comma_expression "bVar2 = bVar6, bVar3 == 0xc" (assignment_expression "bVar2 = bVar6" identifier = identifier) , (binary_expression "bVar3 == 0xc" identifier == number_literal)) )))) )) || (parenthesized_expression "(bVar2 = bVar3, bVar6 == 0xc)" ( (comma_expression "bVar2 = bVar3, bVar6 == 0xc" (assignment_expression "bVar2 = bVar3" identifier = identifier) , (binary_expression "bVar6 == 0xc" identifier == number_literal)) ))) )) ))) )) (compound_statement "{\n        *param_4 = '\x18';\n        param_4[2] = '\a';\n        param_4[3] = '\0';\n        param_4[1] = bVar1 & 0xf0 | bVar2;\n        return;\n      }" { (expression_statement "*param_4 = '\x18';" (assignment_expression "*param_4 = '\x18'" (pointer_expression "*param_4" * identifier) = (char_literal "'\x18'" ' escape_sequence ')) ;) (expression_statement "param_4[2] = '\a';" (assignment_expression "param_4[2] = '\a'" (subscript_expression "param_4[2]" identifier [ number_literal ]) = (char_literal "'\a'" ' escape_sequence ')) ;) (expression_statement "param_4[3] = '\0';" (assignment_expression "param_4[3] = '\0'" (subscript_expression "param_4[3]" identifier [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "param_4[1] = bVar1 & 0xf0 | bVar2;" (assignment_expression "param_4[1] = bVar1 & 0xf0 | bVar2" (subscript_expression "param_4[1]" identifier [ number_literal ]) = (binary_expression "bVar1 & 0xf0 | bVar2" (binary_expression "bVar1 & 0xf0" identifier & number_literal) | identifier)) ;) (return_statement "return;" return ;) })) })) }) (else_clause "else if (*param_4 == -0x1d) {\n    uVar4 = *(uint *)*param_3;\n    uVar4 = uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 | uVar4 << 0x18;\n    if (param_5 < uVar4 + 6) {\n      uVar5 = gettext("TLS relocation out of range");\n      FUN_0023be30(param_1,param_2,uVar4,0,uVar5);\n    }\n    if ((((param_4[2] & 0xfU) == 0) && (param_4[3] == '\0')) &&\n       ((param_4[4] == '\0' && (param_4[5] == '\x04')))) {\n      bVar1 = param_4[1];\n      bVar6 = param_4[1] & 0xf;\n      bVar3 = (byte)param_4[2] >> 4;\n      bVar2 = bVar6;\n      if (((bVar3 == 0) || (bVar2 = bVar3, bVar6 == 0)) ||\n         ((bVar2 = bVar6, bVar3 == 0xc || (bVar2 = bVar3, bVar6 == 0xc)))) {\n        *param_4 = -0x15;\n        param_4[2] = '\0';\n        param_4[3] = '\0';\n        param_4[4] = '\0';\n        param_4[5] = '\r';\n        param_4[1] = bVar1 & 0xf0 | bVar2;\n        return;\n      }\n    }\n  }" else (if_statement "if (*param_4 == -0x1d) {\n    uVar4 = *(uint *)*param_3;\n    uVar4 = uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 | uVar4 << 0x18;\n    if (param_5 < uVar4 + 6) {\n      uVar5 = gettext("TLS relocation out of range");\n      FUN_0023be30(param_1,param_2,uVar4,0,uVar5);\n    }\n    if ((((param_4[2] & 0xfU) == 0) && (param_4[3] == '\0')) &&\n       ((param_4[4] == '\0' && (param_4[5] == '\x04')))) {\n      bVar1 = param_4[1];\n      bVar6 = param_4[1] & 0xf;\n      bVar3 = (byte)param_4[2] >> 4;\n      bVar2 = bVar6;\n      if (((bVar3 == 0) || (bVar2 = bVar3, bVar6 == 0)) ||\n         ((bVar2 = bVar6, bVar3 == 0xc || (bVar2 = bVar3, bVar6 == 0xc)))) {\n        *param_4 = -0x15;\n        param_4[2] = '\0';\n        param_4[3] = '\0';\n        param_4[4] = '\0';\n        param_4[5] = '\r';\n        param_4[1] = bVar1 & 0xf0 | bVar2;\n        return;\n      }\n    }\n  }" if (parenthesized_expression "(*param_4 == -0x1d)" ( (binary_expression "*param_4 == -0x1d" (pointer_expression "*param_4" * identifier) == number_literal) )) (compound_statement "{\n    uVar4 = *(uint *)*param_3;\n    uVar4 = uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 | uVar4 << 0x18;\n    if (param_5 < uVar4 + 6) {\n      uVar5 = gettext("TLS relocation out of range");\n      FUN_0023be30(param_1,param_2,uVar4,0,uVar5);\n    }\n    if ((((param_4[2] & 0xfU) == 0) && (param_4[3] == '\0')) &&\n       ((param_4[4] == '\0' && (param_4[5] == '\x04')))) {\n      bVar1 = param_4[1];\n      bVar6 = param_4[1] & 0xf;\n      bVar3 = (byte)param_4[2] >> 4;\n      bVar2 = bVar6;\n      if (((bVar3 == 0) || (bVar2 = bVar3, bVar6 == 0)) ||\n         ((bVar2 = bVar6, bVar3 == 0xc || (bVar2 = bVar3, bVar6 == 0xc)))) {\n        *param_4 = -0x15;\n        param_4[2] = '\0';\n        param_4[3] = '\0';\n        param_4[4] = '\0';\n        param_4[5] = '\r';\n        param_4[1] = bVar1 & 0xf0 | bVar2;\n        return;\n      }\n    }\n  }" { (expression_statement "uVar4 = *(uint *)*param_3;" (assignment_expression "uVar4 = *(uint *)*param_3" identifier = (pointer_expression "*(uint *)*param_3" * (cast_expression "(uint *)*param_3" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_3" * identifier)))) ;) (expression_statement "uVar4 = uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 | uVar4 << 0x18;" (assignment_expression "uVar4 = uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 | uVar4 << 0x18" identifier = (binary_expression "uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 | uVar4 << 0x18" (binary_expression "uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8" (binary_expression "uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8" (binary_expression "uVar4 >> 0x18" identifier >> number_literal) | (binary_expression "(uVar4 & 0xff0000) >> 8" (parenthesized_expression "(uVar4 & 0xff0000)" ( (binary_expression "uVar4 & 0xff0000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar4 & 0xff00) << 8" (parenthesized_expression "(uVar4 & 0xff00)" ( (binary_expression "uVar4 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "uVar4 << 0x18" identifier << number_literal))) ;) (if_statement "if (param_5 < uVar4 + 6) {\n      uVar5 = gettext("TLS relocation out of range");\n      FUN_0023be30(param_1,param_2,uVar4,0,uVar5);\n    }" if (parenthesized_expression "(param_5 < uVar4 + 6)" ( (binary_expression "param_5 < uVar4 + 6" identifier < (binary_expression "uVar4 + 6" identifier + number_literal)) )) (compound_statement "{\n      uVar5 = gettext("TLS relocation out of range");\n      FUN_0023be30(param_1,param_2,uVar4,0,uVar5);\n    }" { (expression_statement "uVar5 = gettext("TLS relocation out of range");" (assignment_expression "uVar5 = gettext("TLS relocation out of range")" identifier = (call_expression "gettext("TLS relocation out of range")" identifier (argument_list "("TLS relocation out of range")" ( (string_literal ""TLS relocation out of range"" " string_content ") )))) ;) (expression_statement "FUN_0023be30(param_1,param_2,uVar4,0,uVar5);" (call_expression "FUN_0023be30(param_1,param_2,uVar4,0,uVar5)" identifier (argument_list "(param_1,param_2,uVar4,0,uVar5)" ( identifier , identifier , identifier , number_literal , identifier ))) ;) })) (if_statement "if ((((param_4[2] & 0xfU) == 0) && (param_4[3] == '\0')) &&\n       ((param_4[4] == '\0' && (param_4[5] == '\x04')))) {\n      bVar1 = param_4[1];\n      bVar6 = param_4[1] & 0xf;\n      bVar3 = (byte)param_4[2] >> 4;\n      bVar2 = bVar6;\n      if (((bVar3 == 0) || (bVar2 = bVar3, bVar6 == 0)) ||\n         ((bVar2 = bVar6, bVar3 == 0xc || (bVar2 = bVar3, bVar6 == 0xc)))) {\n        *param_4 = -0x15;\n        param_4[2] = '\0';\n        param_4[3] = '\0';\n        param_4[4] = '\0';\n        param_4[5] = '\r';\n        param_4[1] = bVar1 & 0xf0 | bVar2;\n        return;\n      }\n    }" if (parenthesized_expression "((((param_4[2] & 0xfU) == 0) && (param_4[3] == '\0')) &&\n       ((param_4[4] == '\0' && (param_4[5] == '\x04'))))" ( (binary_expression "(((param_4[2] & 0xfU) == 0) && (param_4[3] == '\0')) &&\n       ((param_4[4] == '\0' && (param_4[5] == '\x04')))" (parenthesized_expression "(((param_4[2] & 0xfU) == 0) && (param_4[3] == '\0'))" ( (binary_expression "((param_4[2] & 0xfU) == 0) && (param_4[3] == '\0')" (parenthesized_expression "((param_4[2] & 0xfU) == 0)" ( (binary_expression "(param_4[2] & 0xfU) == 0" (parenthesized_expression "(param_4[2] & 0xfU)" ( (binary_expression "param_4[2] & 0xfU" (subscript_expression "param_4[2]" identifier [ number_literal ]) & number_literal) )) == number_literal) )) && (parenthesized_expression "(param_4[3] == '\0')" ( (binary_expression "param_4[3] == '\0'" (subscript_expression "param_4[3]" identifier [ number_literal ]) == (char_literal "'\0'" ' escape_sequence ')) ))) )) && (parenthesized_expression "((param_4[4] == '\0' && (param_4[5] == '\x04')))" ( (parenthesized_expression "(param_4[4] == '\0' && (param_4[5] == '\x04'))" ( (binary_expression "param_4[4] == '\0' && (param_4[5] == '\x04')" (binary_expression "param_4[4] == '\0'" (subscript_expression "param_4[4]" identifier [ number_literal ]) == (char_literal "'\0'" ' escape_sequence ')) && (parenthesized_expression "(param_4[5] == '\x04')" ( (binary_expression "param_4[5] == '\x04'" (subscript_expression "param_4[5]" identifier [ number_literal ]) == (char_literal "'\x04'" ' escape_sequence ')) ))) )) ))) )) (compound_statement "{\n      bVar1 = param_4[1];\n      bVar6 = param_4[1] & 0xf;\n      bVar3 = (byte)param_4[2] >> 4;\n      bVar2 = bVar6;\n      if (((bVar3 == 0) || (bVar2 = bVar3, bVar6 == 0)) ||\n         ((bVar2 = bVar6, bVar3 == 0xc || (bVar2 = bVar3, bVar6 == 0xc)))) {\n        *param_4 = -0x15;\n        param_4[2] = '\0';\n        param_4[3] = '\0';\n        param_4[4] = '\0';\n        param_4[5] = '\r';\n        param_4[1] = bVar1 & 0xf0 | bVar2;\n        return;\n      }\n    }" { (expression_statement "bVar1 = param_4[1];" (assignment_expression "bVar1 = param_4[1]" identifier = (subscript_expression "param_4[1]" identifier [ number_literal ])) ;) (expression_statement "bVar6 = param_4[1] & 0xf;" (assignment_expression "bVar6 = param_4[1] & 0xf" identifier = (binary_expression "param_4[1] & 0xf" (subscript_expression "param_4[1]" identifier [ number_literal ]) & number_literal)) ;) (expression_statement "bVar3 = (byte)param_4[2] >> 4;" (assignment_expression "bVar3 = (byte)param_4[2] >> 4" identifier = (binary_expression "(byte)param_4[2] >> 4" (cast_expression "(byte)param_4[2]" ( (type_descriptor "byte" type_identifier) ) (subscript_expression "param_4[2]" identifier [ number_literal ])) >> number_literal)) ;) (expression_statement "bVar2 = bVar6;" (assignment_expression "bVar2 = bVar6" identifier = identifier) ;) (if_statement "if (((bVar3 == 0) || (bVar2 = bVar3, bVar6 == 0)) ||\n         ((bVar2 = bVar6, bVar3 == 0xc || (bVar2 = bVar3, bVar6 == 0xc)))) {\n        *param_4 = -0x15;\n        param_4[2] = '\0';\n        param_4[3] = '\0';\n        param_4[4] = '\0';\n        param_4[5] = '\r';\n        param_4[1] = bVar1 & 0xf0 | bVar2;\n        return;\n      }" if (parenthesized_expression "(((bVar3 == 0) || (bVar2 = bVar3, bVar6 == 0)) ||\n         ((bVar2 = bVar6, bVar3 == 0xc || (bVar2 = bVar3, bVar6 == 0xc))))" ( (binary_expression "((bVar3 == 0) || (bVar2 = bVar3, bVar6 == 0)) ||\n         ((bVar2 = bVar6, bVar3 == 0xc || (bVar2 = bVar3, bVar6 == 0xc)))" (parenthesized_expression "((bVar3 == 0) || (bVar2 = bVar3, bVar6 == 0))" ( (binary_expression "(bVar3 == 0) || (bVar2 = bVar3, bVar6 == 0)" (parenthesized_expression "(bVar3 == 0)" ( (binary_expression "bVar3 == 0" identifier == number_literal) )) || (parenthesized_expression "(bVar2 = bVar3, bVar6 == 0)" ( (comma_expression "bVar2 = bVar3, bVar6 == 0" (assignment_expression "bVar2 = bVar3" identifier = identifier) , (binary_expression "bVar6 == 0" identifier == number_literal)) ))) )) || (parenthesized_expression "((bVar2 = bVar6, bVar3 == 0xc || (bVar2 = bVar3, bVar6 == 0xc)))" ( (parenthesized_expression "(bVar2 = bVar6, bVar3 == 0xc || (bVar2 = bVar3, bVar6 == 0xc))" ( (comma_expression "bVar2 = bVar6, bVar3 == 0xc || (bVar2 = bVar3, bVar6 == 0xc)" (assignment_expression "bVar2 = bVar6" identifier = identifier) , (binary_expression "bVar3 == 0xc || (bVar2 = bVar3, bVar6 == 0xc)" (binary_expression "bVar3 == 0xc" identifier == number_literal) || (parenthesized_expression "(bVar2 = bVar3, bVar6 == 0xc)" ( (comma_expression "bVar2 = bVar3, bVar6 == 0xc" (assignment_expression "bVar2 = bVar3" identifier = identifier) , (binary_expression "bVar6 == 0xc" identifier == number_literal)) )))) )) ))) )) (compound_statement "{\n        *param_4 = -0x15;\n        param_4[2] = '\0';\n        param_4[3] = '\0';\n        param_4[4] = '\0';\n        param_4[5] = '\r';\n        param_4[1] = bVar1 & 0xf0 | bVar2;\n        return;\n      }" { (expression_statement "*param_4 = -0x15;" (assignment_expression "*param_4 = -0x15" (pointer_expression "*param_4" * identifier) = number_literal) ;) (expression_statement "param_4[2] = '\0';" (assignment_expression "param_4[2] = '\0'" (subscript_expression "param_4[2]" identifier [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "param_4[3] = '\0';" (assignment_expression "param_4[3] = '\0'" (subscript_expression "param_4[3]" identifier [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "param_4[4] = '\0';" (assignment_expression "param_4[4] = '\0'" (subscript_expression "param_4[4]" identifier [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "param_4[5] = '\r';" (assignment_expression "param_4[5] = '\r'" (subscript_expression "param_4[5]" identifier [ number_literal ]) = (char_literal "'\r'" ' escape_sequence ')) ;) (expression_statement "param_4[1] = bVar1 & 0xf0 | bVar2;" (assignment_expression "param_4[1] = bVar1 & 0xf0 | bVar2" (subscript_expression "param_4[1]" identifier [ number_literal ]) = (binary_expression "bVar1 & 0xf0 | bVar2" (binary_expression "bVar1 & 0xf0" identifier & number_literal) | identifier)) ;) (return_statement "return;" return ;) })) })) })))) (expression_statement "uVar5 = gettext("unsupported op for IE to LE");" (assignment_expression "uVar5 = gettext("unsupported op for IE to LE")" identifier = (call_expression "gettext("unsupported op for IE to LE")" identifier (argument_list "("unsupported op for IE to LE")" ( (string_literal ""unsupported op for IE to LE"" " string_content ") )))) ;) (expression_statement "uVar4 = *(uint *)*param_3;" (assignment_expression "uVar4 = *(uint *)*param_3" identifier = (pointer_expression "*(uint *)*param_3" * (cast_expression "(uint *)*param_3" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_3" * identifier)))) ;) (expression_statement "FUN_0023be30(param_1,param_2,\n               uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 | uVar4 << 0x18,0,\n               uVar5);" (call_expression "FUN_0023be30(param_1,param_2,\n               uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 | uVar4 << 0x18,0,\n               uVar5)" identifier (argument_list "(param_1,param_2,\n               uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 | uVar4 << 0x18,0,\n               uVar5)" ( identifier , identifier , (binary_expression "uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 | uVar4 << 0x18" (binary_expression "uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8" (binary_expression "uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8" (binary_expression "uVar4 >> 0x18" identifier >> number_literal) | (binary_expression "(uVar4 & 0xff0000) >> 8" (parenthesized_expression "(uVar4 & 0xff0000)" ( (binary_expression "uVar4 & 0xff0000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar4 & 0xff00) << 8" (parenthesized_expression "(uVar4 & 0xff00)" ( (binary_expression "uVar4 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "uVar4 << 0x18" identifier << number_literal)) , number_literal , identifier ))) ;) (return_statement "return;" return ;) })))
(translation_unit "/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n/* WARNING: Enum "DT": Some values do not have unique names */\n\nvoid anon_unknown.dwarf_130c1fc::Target_s390<32>::Relocate::tls_ie_to_le\n               (Relocate_info<32,_true> *relinfo,size_t relnum,Rela<32,_true> *rela,uchar *view,\n               section_size_type view_size)\n\n{\n}\n\n" comment comment (function_definition "void anon_unknown.dwarf_130c1fc::Target_s390<32>::Relocate::tls_ie_to_le\n               (Relocate_info<32,_true> *relinfo,size_t relnum,Rela<32,_true> *rela,uchar *view,\n               section_size_type view_size)\n\n{\n}" primitive_type (ERROR "anon_unknown.dwarf_130c1fc::Target_s390<32>::Relocate::" identifier . identifier : : identifier < number_literal > : : identifier : :) (function_declarator "tls_ie_to_le\n               (Relocate_info<32,_true> *relinfo,size_t relnum,Rela<32,_true> *rela,uchar *view,\n               section_size_type view_size)" identifier (parameter_list "(Relocate_info<32,_true> *relinfo,size_t relnum,Rela<32,_true> *rela,uchar *view,\n               section_size_type view_size)" ( (parameter_declaration "Relocate_info<32,_true> *relinfo" type_identifier (ERROR "<32,_true>" < number_literal , identifier >) (pointer_declarator "*relinfo" * identifier)) , (parameter_declaration "size_t relnum" primitive_type identifier) , (parameter_declaration "Rela" type_identifier) (ERROR "<32" < number_literal) , (parameter_declaration "_true> *rela" type_identifier (ERROR ">" >) (pointer_declarator "*rela" * identifier)) , (parameter_declaration "uchar *view" type_identifier (pointer_declarator "*view" * identifier)) , (parameter_declaration "section_size_type view_size" type_identifier identifier) ))) (compound_statement "{\n}" { })))
(translation_unit "void __regparm3\nFUN_00210ac0(undefined4 param_1,undefined4 param_2,undefined4 *param_3,char *param_4,uint param_5)\n\n{\n  byte bVar1;\n  byte bVar2;\n  byte bVar3;\n  uint uVar4;\n  undefined4 uVar5;\n  byte bVar6;\n  \n  uVar4 = *(uint *)*param_3;\n  uVar4 = uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 | uVar4 << 0x18;\n  if (param_5 < uVar4 + 4) {\n    uVar5 = gettext("TLS relocation out of range");\n    FUN_0023be30(param_1,param_2,uVar4,0,uVar5);\n  }\n  if (*param_4 == 'X') {\n    if (((param_4[2] & 0xfU) == 0) && (param_4[3] == '\0')) {\n      bVar1 = param_4[1];\n      bVar6 = param_4[1] & 0xf;\n      bVar3 = (byte)param_4[2] >> 4;\n      bVar2 = bVar6;\n      if ((bVar3 == 0) ||\n         (((bVar2 = bVar3, bVar6 == 0 || (bVar2 = bVar6, bVar3 == 0xc)) ||\n          (bVar2 = bVar3, bVar6 == 0xc)))) {\n        *param_4 = '\x18';\n        param_4[2] = '\a';\n        param_4[3] = '\0';\n        param_4[1] = bVar1 & 0xf0 | bVar2;\n        return;\n      }\n    }\n  }\n  else if (*param_4 == -0x1d) {\n    uVar4 = *(uint *)*param_3;\n    uVar4 = uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 | uVar4 << 0x18;\n    if (param_5 < uVar4 + 6) {\n      uVar5 = gettext("TLS relocation out of range");\n      FUN_0023be30(param_1,param_2,uVar4,0,uVar5);\n    }\n    if ((((param_4[2] & 0xfU) == 0) && (param_4[3] == '\0')) &&\n       ((param_4[4] == '\0' && (param_4[5] == '\x04')))) {\n      bVar1 = param_4[1];\n      bVar6 = param_4[1] & 0xf;\n      bVar3 = (byte)param_4[2] >> 4;\n      bVar2 = bVar6;\n      if (((bVar3 == 0) || (bVar2 = bVar3, bVar6 == 0)) ||\n         ((bVar2 = bVar6, bVar3 == 0xc || (bVar2 = bVar3, bVar6 == 0xc)))) {\n        *param_4 = -0x15;\n        param_4[2] = '\0';\n        param_4[3] = '\0';\n        param_4[4] = '\0';\n        param_4[5] = '\r';\n        param_4[1] = bVar1 & 0xf0 | bVar2;\n        return;\n      }\n    }\n  }\n  uVar5 = gettext("unsupported op for IE to LE");\n  uVar4 = *(uint *)*param_3;\n  FUN_0023be30(param_1,param_2,\n               uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 | uVar4 << 0x18,0,\n               uVar5);\n  return;\n}\n\n" (function_definition "void __regparm3\nFUN_00210ac0(undefined4 param_1,undefined4 param_2,undefined4 *param_3,char *param_4,uint param_5)\n\n{\n  byte bVar1;\n  byte bVar2;\n  byte bVar3;\n  uint uVar4;\n  undefined4 uVar5;\n  byte bVar6;\n  \n  uVar4 = *(uint *)*param_3;\n  uVar4 = uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 | uVar4 << 0x18;\n  if (param_5 < uVar4 + 4) {\n    uVar5 = gettext("TLS relocation out of range");\n    FUN_0023be30(param_1,param_2,uVar4,0,uVar5);\n  }\n  if (*param_4 == 'X') {\n    if (((param_4[2] & 0xfU) == 0) && (param_4[3] == '\0')) {\n      bVar1 = param_4[1];\n      bVar6 = param_4[1] & 0xf;\n      bVar3 = (byte)param_4[2] >> 4;\n      bVar2 = bVar6;\n      if ((bVar3 == 0) ||\n         (((bVar2 = bVar3, bVar6 == 0 || (bVar2 = bVar6, bVar3 == 0xc)) ||\n          (bVar2 = bVar3, bVar6 == 0xc)))) {\n        *param_4 = '\x18';\n        param_4[2] = '\a';\n        param_4[3] = '\0';\n        param_4[1] = bVar1 & 0xf0 | bVar2;\n        return;\n      }\n    }\n  }\n  else if (*param_4 == -0x1d) {\n    uVar4 = *(uint *)*param_3;\n    uVar4 = uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 | uVar4 << 0x18;\n    if (param_5 < uVar4 + 6) {\n      uVar5 = gettext("TLS relocation out of range");\n      FUN_0023be30(param_1,param_2,uVar4,0,uVar5);\n    }\n    if ((((param_4[2] & 0xfU) == 0) && (param_4[3] == '\0')) &&\n       ((param_4[4] == '\0' && (param_4[5] == '\x04')))) {\n      bVar1 = param_4[1];\n      bVar6 = param_4[1] & 0xf;\n      bVar3 = (byte)param_4[2] >> 4;\n      bVar2 = bVar6;\n      if (((bVar3 == 0) || (bVar2 = bVar3, bVar6 == 0)) ||\n         ((bVar2 = bVar6, bVar3 == 0xc || (bVar2 = bVar3, bVar6 == 0xc)))) {\n        *param_4 = -0x15;\n        param_4[2] = '\0';\n        param_4[3] = '\0';\n        param_4[4] = '\0';\n        param_4[5] = '\r';\n        param_4[1] = bVar1 & 0xf0 | bVar2;\n        return;\n      }\n    }\n  }\n  uVar5 = gettext("unsupported op for IE to LE");\n  uVar4 = *(uint *)*param_3;\n  FUN_0023be30(param_1,param_2,\n               uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 | uVar4 << 0x18,0,\n               uVar5);\n  return;\n}" primitive_type (ERROR "__regparm3" identifier) (function_declarator "FUN_00210ac0(undefined4 param_1,undefined4 param_2,undefined4 *param_3,char *param_4,uint param_5)" identifier (parameter_list "(undefined4 param_1,undefined4 param_2,undefined4 *param_3,char *param_4,uint param_5)" ( (parameter_declaration "undefined4 param_1" type_identifier identifier) , (parameter_declaration "undefined4 param_2" type_identifier identifier) , (parameter_declaration "undefined4 *param_3" type_identifier (pointer_declarator "*param_3" * identifier)) , (parameter_declaration "char *param_4" primitive_type (pointer_declarator "*param_4" * identifier)) , (parameter_declaration "uint param_5" type_identifier identifier) ))) (compound_statement "{\n  byte bVar1;\n  byte bVar2;\n  byte bVar3;\n  uint uVar4;\n  undefined4 uVar5;\n  byte bVar6;\n  \n  uVar4 = *(uint *)*param_3;\n  uVar4 = uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 | uVar4 << 0x18;\n  if (param_5 < uVar4 + 4) {\n    uVar5 = gettext("TLS relocation out of range");\n    FUN_0023be30(param_1,param_2,uVar4,0,uVar5);\n  }\n  if (*param_4 == 'X') {\n    if (((param_4[2] & 0xfU) == 0) && (param_4[3] == '\0')) {\n      bVar1 = param_4[1];\n      bVar6 = param_4[1] & 0xf;\n      bVar3 = (byte)param_4[2] >> 4;\n      bVar2 = bVar6;\n      if ((bVar3 == 0) ||\n         (((bVar2 = bVar3, bVar6 == 0 || (bVar2 = bVar6, bVar3 == 0xc)) ||\n          (bVar2 = bVar3, bVar6 == 0xc)))) {\n        *param_4 = '\x18';\n        param_4[2] = '\a';\n        param_4[3] = '\0';\n        param_4[1] = bVar1 & 0xf0 | bVar2;\n        return;\n      }\n    }\n  }\n  else if (*param_4 == -0x1d) {\n    uVar4 = *(uint *)*param_3;\n    uVar4 = uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 | uVar4 << 0x18;\n    if (param_5 < uVar4 + 6) {\n      uVar5 = gettext("TLS relocation out of range");\n      FUN_0023be30(param_1,param_2,uVar4,0,uVar5);\n    }\n    if ((((param_4[2] & 0xfU) == 0) && (param_4[3] == '\0')) &&\n       ((param_4[4] == '\0' && (param_4[5] == '\x04')))) {\n      bVar1 = param_4[1];\n      bVar6 = param_4[1] & 0xf;\n      bVar3 = (byte)param_4[2] >> 4;\n      bVar2 = bVar6;\n      if (((bVar3 == 0) || (bVar2 = bVar3, bVar6 == 0)) ||\n         ((bVar2 = bVar6, bVar3 == 0xc || (bVar2 = bVar3, bVar6 == 0xc)))) {\n        *param_4 = -0x15;\n        param_4[2] = '\0';\n        param_4[3] = '\0';\n        param_4[4] = '\0';\n        param_4[5] = '\r';\n        param_4[1] = bVar1 & 0xf0 | bVar2;\n        return;\n      }\n    }\n  }\n  uVar5 = gettext("unsupported op for IE to LE");\n  uVar4 = *(uint *)*param_3;\n  FUN_0023be30(param_1,param_2,\n               uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 | uVar4 << 0x18,0,\n               uVar5);\n  return;\n}" { (declaration "byte bVar1;" type_identifier identifier ;) (declaration "byte bVar2;" type_identifier identifier ;) (declaration "byte bVar3;" type_identifier identifier ;) (declaration "uint uVar4;" type_identifier identifier ;) (declaration "undefined4 uVar5;" type_identifier identifier ;) (declaration "byte bVar6;" type_identifier identifier ;) (expression_statement "uVar4 = *(uint *)*param_3;" (assignment_expression "uVar4 = *(uint *)*param_3" identifier = (pointer_expression "*(uint *)*param_3" * (cast_expression "(uint *)*param_3" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_3" * identifier)))) ;) (expression_statement "uVar4 = uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 | uVar4 << 0x18;" (assignment_expression "uVar4 = uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 | uVar4 << 0x18" identifier = (binary_expression "uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 | uVar4 << 0x18" (binary_expression "uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8" (binary_expression "uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8" (binary_expression "uVar4 >> 0x18" identifier >> number_literal) | (binary_expression "(uVar4 & 0xff0000) >> 8" (parenthesized_expression "(uVar4 & 0xff0000)" ( (binary_expression "uVar4 & 0xff0000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar4 & 0xff00) << 8" (parenthesized_expression "(uVar4 & 0xff00)" ( (binary_expression "uVar4 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "uVar4 << 0x18" identifier << number_literal))) ;) (if_statement "if (param_5 < uVar4 + 4) {\n    uVar5 = gettext("TLS relocation out of range");\n    FUN_0023be30(param_1,param_2,uVar4,0,uVar5);\n  }" if (parenthesized_expression "(param_5 < uVar4 + 4)" ( (binary_expression "param_5 < uVar4 + 4" identifier < (binary_expression "uVar4 + 4" identifier + number_literal)) )) (compound_statement "{\n    uVar5 = gettext("TLS relocation out of range");\n    FUN_0023be30(param_1,param_2,uVar4,0,uVar5);\n  }" { (expression_statement "uVar5 = gettext("TLS relocation out of range");" (assignment_expression "uVar5 = gettext("TLS relocation out of range")" identifier = (call_expression "gettext("TLS relocation out of range")" identifier (argument_list "("TLS relocation out of range")" ( (string_literal ""TLS relocation out of range"" " string_content ") )))) ;) (expression_statement "FUN_0023be30(param_1,param_2,uVar4,0,uVar5);" (call_expression "FUN_0023be30(param_1,param_2,uVar4,0,uVar5)" identifier (argument_list "(param_1,param_2,uVar4,0,uVar5)" ( identifier , identifier , identifier , number_literal , identifier ))) ;) })) (if_statement "if (*param_4 == 'X') {\n    if (((param_4[2] & 0xfU) == 0) && (param_4[3] == '\0')) {\n      bVar1 = param_4[1];\n      bVar6 = param_4[1] & 0xf;\n      bVar3 = (byte)param_4[2] >> 4;\n      bVar2 = bVar6;\n      if ((bVar3 == 0) ||\n         (((bVar2 = bVar3, bVar6 == 0 || (bVar2 = bVar6, bVar3 == 0xc)) ||\n          (bVar2 = bVar3, bVar6 == 0xc)))) {\n        *param_4 = '\x18';\n        param_4[2] = '\a';\n        param_4[3] = '\0';\n        param_4[1] = bVar1 & 0xf0 | bVar2;\n        return;\n      }\n    }\n  }\n  else if (*param_4 == -0x1d) {\n    uVar4 = *(uint *)*param_3;\n    uVar4 = uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 | uVar4 << 0x18;\n    if (param_5 < uVar4 + 6) {\n      uVar5 = gettext("TLS relocation out of range");\n      FUN_0023be30(param_1,param_2,uVar4,0,uVar5);\n    }\n    if ((((param_4[2] & 0xfU) == 0) && (param_4[3] == '\0')) &&\n       ((param_4[4] == '\0' && (param_4[5] == '\x04')))) {\n      bVar1 = param_4[1];\n      bVar6 = param_4[1] & 0xf;\n      bVar3 = (byte)param_4[2] >> 4;\n      bVar2 = bVar6;\n      if (((bVar3 == 0) || (bVar2 = bVar3, bVar6 == 0)) ||\n         ((bVar2 = bVar6, bVar3 == 0xc || (bVar2 = bVar3, bVar6 == 0xc)))) {\n        *param_4 = -0x15;\n        param_4[2] = '\0';\n        param_4[3] = '\0';\n        param_4[4] = '\0';\n        param_4[5] = '\r';\n        param_4[1] = bVar1 & 0xf0 | bVar2;\n        return;\n      }\n    }\n  }" if (parenthesized_expression "(*param_4 == 'X')" ( (binary_expression "*param_4 == 'X'" (pointer_expression "*param_4" * identifier) == (char_literal "'X'" ' character ')) )) (compound_statement "{\n    if (((param_4[2] & 0xfU) == 0) && (param_4[3] == '\0')) {\n      bVar1 = param_4[1];\n      bVar6 = param_4[1] & 0xf;\n      bVar3 = (byte)param_4[2] >> 4;\n      bVar2 = bVar6;\n      if ((bVar3 == 0) ||\n         (((bVar2 = bVar3, bVar6 == 0 || (bVar2 = bVar6, bVar3 == 0xc)) ||\n          (bVar2 = bVar3, bVar6 == 0xc)))) {\n        *param_4 = '\x18';\n        param_4[2] = '\a';\n        param_4[3] = '\0';\n        param_4[1] = bVar1 & 0xf0 | bVar2;\n        return;\n      }\n    }\n  }" { (if_statement "if (((param_4[2] & 0xfU) == 0) && (param_4[3] == '\0')) {\n      bVar1 = param_4[1];\n      bVar6 = param_4[1] & 0xf;\n      bVar3 = (byte)param_4[2] >> 4;\n      bVar2 = bVar6;\n      if ((bVar3 == 0) ||\n         (((bVar2 = bVar3, bVar6 == 0 || (bVar2 = bVar6, bVar3 == 0xc)) ||\n          (bVar2 = bVar3, bVar6 == 0xc)))) {\n        *param_4 = '\x18';\n        param_4[2] = '\a';\n        param_4[3] = '\0';\n        param_4[1] = bVar1 & 0xf0 | bVar2;\n        return;\n      }\n    }" if (parenthesized_expression "(((param_4[2] & 0xfU) == 0) && (param_4[3] == '\0'))" ( (binary_expression "((param_4[2] & 0xfU) == 0) && (param_4[3] == '\0')" (parenthesized_expression "((param_4[2] & 0xfU) == 0)" ( (binary_expression "(param_4[2] & 0xfU) == 0" (parenthesized_expression "(param_4[2] & 0xfU)" ( (binary_expression "param_4[2] & 0xfU" (subscript_expression "param_4[2]" identifier [ number_literal ]) & number_literal) )) == number_literal) )) && (parenthesized_expression "(param_4[3] == '\0')" ( (binary_expression "param_4[3] == '\0'" (subscript_expression "param_4[3]" identifier [ number_literal ]) == (char_literal "'\0'" ' escape_sequence ')) ))) )) (compound_statement "{\n      bVar1 = param_4[1];\n      bVar6 = param_4[1] & 0xf;\n      bVar3 = (byte)param_4[2] >> 4;\n      bVar2 = bVar6;\n      if ((bVar3 == 0) ||\n         (((bVar2 = bVar3, bVar6 == 0 || (bVar2 = bVar6, bVar3 == 0xc)) ||\n          (bVar2 = bVar3, bVar6 == 0xc)))) {\n        *param_4 = '\x18';\n        param_4[2] = '\a';\n        param_4[3] = '\0';\n        param_4[1] = bVar1 & 0xf0 | bVar2;\n        return;\n      }\n    }" { (expression_statement "bVar1 = param_4[1];" (assignment_expression "bVar1 = param_4[1]" identifier = (subscript_expression "param_4[1]" identifier [ number_literal ])) ;) (expression_statement "bVar6 = param_4[1] & 0xf;" (assignment_expression "bVar6 = param_4[1] & 0xf" identifier = (binary_expression "param_4[1] & 0xf" (subscript_expression "param_4[1]" identifier [ number_literal ]) & number_literal)) ;) (expression_statement "bVar3 = (byte)param_4[2] >> 4;" (assignment_expression "bVar3 = (byte)param_4[2] >> 4" identifier = (binary_expression "(byte)param_4[2] >> 4" (cast_expression "(byte)param_4[2]" ( (type_descriptor "byte" type_identifier) ) (subscript_expression "param_4[2]" identifier [ number_literal ])) >> number_literal)) ;) (expression_statement "bVar2 = bVar6;" (assignment_expression "bVar2 = bVar6" identifier = identifier) ;) (if_statement "if ((bVar3 == 0) ||\n         (((bVar2 = bVar3, bVar6 == 0 || (bVar2 = bVar6, bVar3 == 0xc)) ||\n          (bVar2 = bVar3, bVar6 == 0xc)))) {\n        *param_4 = '\x18';\n        param_4[2] = '\a';\n        param_4[3] = '\0';\n        param_4[1] = bVar1 & 0xf0 | bVar2;\n        return;\n      }" if (parenthesized_expression "((bVar3 == 0) ||\n         (((bVar2 = bVar3, bVar6 == 0 || (bVar2 = bVar6, bVar3 == 0xc)) ||\n          (bVar2 = bVar3, bVar6 == 0xc))))" ( (binary_expression "(bVar3 == 0) ||\n         (((bVar2 = bVar3, bVar6 == 0 || (bVar2 = bVar6, bVar3 == 0xc)) ||\n          (bVar2 = bVar3, bVar6 == 0xc)))" (parenthesized_expression "(bVar3 == 0)" ( (binary_expression "bVar3 == 0" identifier == number_literal) )) || (parenthesized_expression "(((bVar2 = bVar3, bVar6 == 0 || (bVar2 = bVar6, bVar3 == 0xc)) ||\n          (bVar2 = bVar3, bVar6 == 0xc)))" ( (parenthesized_expression "((bVar2 = bVar3, bVar6 == 0 || (bVar2 = bVar6, bVar3 == 0xc)) ||\n          (bVar2 = bVar3, bVar6 == 0xc))" ( (binary_expression "(bVar2 = bVar3, bVar6 == 0 || (bVar2 = bVar6, bVar3 == 0xc)) ||\n          (bVar2 = bVar3, bVar6 == 0xc)" (parenthesized_expression "(bVar2 = bVar3, bVar6 == 0 || (bVar2 = bVar6, bVar3 == 0xc))" ( (comma_expression "bVar2 = bVar3, bVar6 == 0 || (bVar2 = bVar6, bVar3 == 0xc)" (assignment_expression "bVar2 = bVar3" identifier = identifier) , (binary_expression "bVar6 == 0 || (bVar2 = bVar6, bVar3 == 0xc)" (binary_expression "bVar6 == 0" identifier == number_literal) || (parenthesized_expression "(bVar2 = bVar6, bVar3 == 0xc)" ( (comma_expression "bVar2 = bVar6, bVar3 == 0xc" (assignment_expression "bVar2 = bVar6" identifier = identifier) , (binary_expression "bVar3 == 0xc" identifier == number_literal)) )))) )) || (parenthesized_expression "(bVar2 = bVar3, bVar6 == 0xc)" ( (comma_expression "bVar2 = bVar3, bVar6 == 0xc" (assignment_expression "bVar2 = bVar3" identifier = identifier) , (binary_expression "bVar6 == 0xc" identifier == number_literal)) ))) )) ))) )) (compound_statement "{\n        *param_4 = '\x18';\n        param_4[2] = '\a';\n        param_4[3] = '\0';\n        param_4[1] = bVar1 & 0xf0 | bVar2;\n        return;\n      }" { (expression_statement "*param_4 = '\x18';" (assignment_expression "*param_4 = '\x18'" (pointer_expression "*param_4" * identifier) = (char_literal "'\x18'" ' escape_sequence ')) ;) (expression_statement "param_4[2] = '\a';" (assignment_expression "param_4[2] = '\a'" (subscript_expression "param_4[2]" identifier [ number_literal ]) = (char_literal "'\a'" ' escape_sequence ')) ;) (expression_statement "param_4[3] = '\0';" (assignment_expression "param_4[3] = '\0'" (subscript_expression "param_4[3]" identifier [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "param_4[1] = bVar1 & 0xf0 | bVar2;" (assignment_expression "param_4[1] = bVar1 & 0xf0 | bVar2" (subscript_expression "param_4[1]" identifier [ number_literal ]) = (binary_expression "bVar1 & 0xf0 | bVar2" (binary_expression "bVar1 & 0xf0" identifier & number_literal) | identifier)) ;) (return_statement "return;" return ;) })) })) }) (else_clause "else if (*param_4 == -0x1d) {\n    uVar4 = *(uint *)*param_3;\n    uVar4 = uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 | uVar4 << 0x18;\n    if (param_5 < uVar4 + 6) {\n      uVar5 = gettext("TLS relocation out of range");\n      FUN_0023be30(param_1,param_2,uVar4,0,uVar5);\n    }\n    if ((((param_4[2] & 0xfU) == 0) && (param_4[3] == '\0')) &&\n       ((param_4[4] == '\0' && (param_4[5] == '\x04')))) {\n      bVar1 = param_4[1];\n      bVar6 = param_4[1] & 0xf;\n      bVar3 = (byte)param_4[2] >> 4;\n      bVar2 = bVar6;\n      if (((bVar3 == 0) || (bVar2 = bVar3, bVar6 == 0)) ||\n         ((bVar2 = bVar6, bVar3 == 0xc || (bVar2 = bVar3, bVar6 == 0xc)))) {\n        *param_4 = -0x15;\n        param_4[2] = '\0';\n        param_4[3] = '\0';\n        param_4[4] = '\0';\n        param_4[5] = '\r';\n        param_4[1] = bVar1 & 0xf0 | bVar2;\n        return;\n      }\n    }\n  }" else (if_statement "if (*param_4 == -0x1d) {\n    uVar4 = *(uint *)*param_3;\n    uVar4 = uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 | uVar4 << 0x18;\n    if (param_5 < uVar4 + 6) {\n      uVar5 = gettext("TLS relocation out of range");\n      FUN_0023be30(param_1,param_2,uVar4,0,uVar5);\n    }\n    if ((((param_4[2] & 0xfU) == 0) && (param_4[3] == '\0')) &&\n       ((param_4[4] == '\0' && (param_4[5] == '\x04')))) {\n      bVar1 = param_4[1];\n      bVar6 = param_4[1] & 0xf;\n      bVar3 = (byte)param_4[2] >> 4;\n      bVar2 = bVar6;\n      if (((bVar3 == 0) || (bVar2 = bVar3, bVar6 == 0)) ||\n         ((bVar2 = bVar6, bVar3 == 0xc || (bVar2 = bVar3, bVar6 == 0xc)))) {\n        *param_4 = -0x15;\n        param_4[2] = '\0';\n        param_4[3] = '\0';\n        param_4[4] = '\0';\n        param_4[5] = '\r';\n        param_4[1] = bVar1 & 0xf0 | bVar2;\n        return;\n      }\n    }\n  }" if (parenthesized_expression "(*param_4 == -0x1d)" ( (binary_expression "*param_4 == -0x1d" (pointer_expression "*param_4" * identifier) == number_literal) )) (compound_statement "{\n    uVar4 = *(uint *)*param_3;\n    uVar4 = uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 | uVar4 << 0x18;\n    if (param_5 < uVar4 + 6) {\n      uVar5 = gettext("TLS relocation out of range");\n      FUN_0023be30(param_1,param_2,uVar4,0,uVar5);\n    }\n    if ((((param_4[2] & 0xfU) == 0) && (param_4[3] == '\0')) &&\n       ((param_4[4] == '\0' && (param_4[5] == '\x04')))) {\n      bVar1 = param_4[1];\n      bVar6 = param_4[1] & 0xf;\n      bVar3 = (byte)param_4[2] >> 4;\n      bVar2 = bVar6;\n      if (((bVar3 == 0) || (bVar2 = bVar3, bVar6 == 0)) ||\n         ((bVar2 = bVar6, bVar3 == 0xc || (bVar2 = bVar3, bVar6 == 0xc)))) {\n        *param_4 = -0x15;\n        param_4[2] = '\0';\n        param_4[3] = '\0';\n        param_4[4] = '\0';\n        param_4[5] = '\r';\n        param_4[1] = bVar1 & 0xf0 | bVar2;\n        return;\n      }\n    }\n  }" { (expression_statement "uVar4 = *(uint *)*param_3;" (assignment_expression "uVar4 = *(uint *)*param_3" identifier = (pointer_expression "*(uint *)*param_3" * (cast_expression "(uint *)*param_3" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_3" * identifier)))) ;) (expression_statement "uVar4 = uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 | uVar4 << 0x18;" (assignment_expression "uVar4 = uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 | uVar4 << 0x18" identifier = (binary_expression "uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 | uVar4 << 0x18" (binary_expression "uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8" (binary_expression "uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8" (binary_expression "uVar4 >> 0x18" identifier >> number_literal) | (binary_expression "(uVar4 & 0xff0000) >> 8" (parenthesized_expression "(uVar4 & 0xff0000)" ( (binary_expression "uVar4 & 0xff0000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar4 & 0xff00) << 8" (parenthesized_expression "(uVar4 & 0xff00)" ( (binary_expression "uVar4 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "uVar4 << 0x18" identifier << number_literal))) ;) (if_statement "if (param_5 < uVar4 + 6) {\n      uVar5 = gettext("TLS relocation out of range");\n      FUN_0023be30(param_1,param_2,uVar4,0,uVar5);\n    }" if (parenthesized_expression "(param_5 < uVar4 + 6)" ( (binary_expression "param_5 < uVar4 + 6" identifier < (binary_expression "uVar4 + 6" identifier + number_literal)) )) (compound_statement "{\n      uVar5 = gettext("TLS relocation out of range");\n      FUN_0023be30(param_1,param_2,uVar4,0,uVar5);\n    }" { (expression_statement "uVar5 = gettext("TLS relocation out of range");" (assignment_expression "uVar5 = gettext("TLS relocation out of range")" identifier = (call_expression "gettext("TLS relocation out of range")" identifier (argument_list "("TLS relocation out of range")" ( (string_literal ""TLS relocation out of range"" " string_content ") )))) ;) (expression_statement "FUN_0023be30(param_1,param_2,uVar4,0,uVar5);" (call_expression "FUN_0023be30(param_1,param_2,uVar4,0,uVar5)" identifier (argument_list "(param_1,param_2,uVar4,0,uVar5)" ( identifier , identifier , identifier , number_literal , identifier ))) ;) })) (if_statement "if ((((param_4[2] & 0xfU) == 0) && (param_4[3] == '\0')) &&\n       ((param_4[4] == '\0' && (param_4[5] == '\x04')))) {\n      bVar1 = param_4[1];\n      bVar6 = param_4[1] & 0xf;\n      bVar3 = (byte)param_4[2] >> 4;\n      bVar2 = bVar6;\n      if (((bVar3 == 0) || (bVar2 = bVar3, bVar6 == 0)) ||\n         ((bVar2 = bVar6, bVar3 == 0xc || (bVar2 = bVar3, bVar6 == 0xc)))) {\n        *param_4 = -0x15;\n        param_4[2] = '\0';\n        param_4[3] = '\0';\n        param_4[4] = '\0';\n        param_4[5] = '\r';\n        param_4[1] = bVar1 & 0xf0 | bVar2;\n        return;\n      }\n    }" if (parenthesized_expression "((((param_4[2] & 0xfU) == 0) && (param_4[3] == '\0')) &&\n       ((param_4[4] == '\0' && (param_4[5] == '\x04'))))" ( (binary_expression "(((param_4[2] & 0xfU) == 0) && (param_4[3] == '\0')) &&\n       ((param_4[4] == '\0' && (param_4[5] == '\x04')))" (parenthesized_expression "(((param_4[2] & 0xfU) == 0) && (param_4[3] == '\0'))" ( (binary_expression "((param_4[2] & 0xfU) == 0) && (param_4[3] == '\0')" (parenthesized_expression "((param_4[2] & 0xfU) == 0)" ( (binary_expression "(param_4[2] & 0xfU) == 0" (parenthesized_expression "(param_4[2] & 0xfU)" ( (binary_expression "param_4[2] & 0xfU" (subscript_expression "param_4[2]" identifier [ number_literal ]) & number_literal) )) == number_literal) )) && (parenthesized_expression "(param_4[3] == '\0')" ( (binary_expression "param_4[3] == '\0'" (subscript_expression "param_4[3]" identifier [ number_literal ]) == (char_literal "'\0'" ' escape_sequence ')) ))) )) && (parenthesized_expression "((param_4[4] == '\0' && (param_4[5] == '\x04')))" ( (parenthesized_expression "(param_4[4] == '\0' && (param_4[5] == '\x04'))" ( (binary_expression "param_4[4] == '\0' && (param_4[5] == '\x04')" (binary_expression "param_4[4] == '\0'" (subscript_expression "param_4[4]" identifier [ number_literal ]) == (char_literal "'\0'" ' escape_sequence ')) && (parenthesized_expression "(param_4[5] == '\x04')" ( (binary_expression "param_4[5] == '\x04'" (subscript_expression "param_4[5]" identifier [ number_literal ]) == (char_literal "'\x04'" ' escape_sequence ')) ))) )) ))) )) (compound_statement "{\n      bVar1 = param_4[1];\n      bVar6 = param_4[1] & 0xf;\n      bVar3 = (byte)param_4[2] >> 4;\n      bVar2 = bVar6;\n      if (((bVar3 == 0) || (bVar2 = bVar3, bVar6 == 0)) ||\n         ((bVar2 = bVar6, bVar3 == 0xc || (bVar2 = bVar3, bVar6 == 0xc)))) {\n        *param_4 = -0x15;\n        param_4[2] = '\0';\n        param_4[3] = '\0';\n        param_4[4] = '\0';\n        param_4[5] = '\r';\n        param_4[1] = bVar1 & 0xf0 | bVar2;\n        return;\n      }\n    }" { (expression_statement "bVar1 = param_4[1];" (assignment_expression "bVar1 = param_4[1]" identifier = (subscript_expression "param_4[1]" identifier [ number_literal ])) ;) (expression_statement "bVar6 = param_4[1] & 0xf;" (assignment_expression "bVar6 = param_4[1] & 0xf" identifier = (binary_expression "param_4[1] & 0xf" (subscript_expression "param_4[1]" identifier [ number_literal ]) & number_literal)) ;) (expression_statement "bVar3 = (byte)param_4[2] >> 4;" (assignment_expression "bVar3 = (byte)param_4[2] >> 4" identifier = (binary_expression "(byte)param_4[2] >> 4" (cast_expression "(byte)param_4[2]" ( (type_descriptor "byte" type_identifier) ) (subscript_expression "param_4[2]" identifier [ number_literal ])) >> number_literal)) ;) (expression_statement "bVar2 = bVar6;" (assignment_expression "bVar2 = bVar6" identifier = identifier) ;) (if_statement "if (((bVar3 == 0) || (bVar2 = bVar3, bVar6 == 0)) ||\n         ((bVar2 = bVar6, bVar3 == 0xc || (bVar2 = bVar3, bVar6 == 0xc)))) {\n        *param_4 = -0x15;\n        param_4[2] = '\0';\n        param_4[3] = '\0';\n        param_4[4] = '\0';\n        param_4[5] = '\r';\n        param_4[1] = bVar1 & 0xf0 | bVar2;\n        return;\n      }" if (parenthesized_expression "(((bVar3 == 0) || (bVar2 = bVar3, bVar6 == 0)) ||\n         ((bVar2 = bVar6, bVar3 == 0xc || (bVar2 = bVar3, bVar6 == 0xc))))" ( (binary_expression "((bVar3 == 0) || (bVar2 = bVar3, bVar6 == 0)) ||\n         ((bVar2 = bVar6, bVar3 == 0xc || (bVar2 = bVar3, bVar6 == 0xc)))" (parenthesized_expression "((bVar3 == 0) || (bVar2 = bVar3, bVar6 == 0))" ( (binary_expression "(bVar3 == 0) || (bVar2 = bVar3, bVar6 == 0)" (parenthesized_expression "(bVar3 == 0)" ( (binary_expression "bVar3 == 0" identifier == number_literal) )) || (parenthesized_expression "(bVar2 = bVar3, bVar6 == 0)" ( (comma_expression "bVar2 = bVar3, bVar6 == 0" (assignment_expression "bVar2 = bVar3" identifier = identifier) , (binary_expression "bVar6 == 0" identifier == number_literal)) ))) )) || (parenthesized_expression "((bVar2 = bVar6, bVar3 == 0xc || (bVar2 = bVar3, bVar6 == 0xc)))" ( (parenthesized_expression "(bVar2 = bVar6, bVar3 == 0xc || (bVar2 = bVar3, bVar6 == 0xc))" ( (comma_expression "bVar2 = bVar6, bVar3 == 0xc || (bVar2 = bVar3, bVar6 == 0xc)" (assignment_expression "bVar2 = bVar6" identifier = identifier) , (binary_expression "bVar3 == 0xc || (bVar2 = bVar3, bVar6 == 0xc)" (binary_expression "bVar3 == 0xc" identifier == number_literal) || (parenthesized_expression "(bVar2 = bVar3, bVar6 == 0xc)" ( (comma_expression "bVar2 = bVar3, bVar6 == 0xc" (assignment_expression "bVar2 = bVar3" identifier = identifier) , (binary_expression "bVar6 == 0xc" identifier == number_literal)) )))) )) ))) )) (compound_statement "{\n        *param_4 = -0x15;\n        param_4[2] = '\0';\n        param_4[3] = '\0';\n        param_4[4] = '\0';\n        param_4[5] = '\r';\n        param_4[1] = bVar1 & 0xf0 | bVar2;\n        return;\n      }" { (expression_statement "*param_4 = -0x15;" (assignment_expression "*param_4 = -0x15" (pointer_expression "*param_4" * identifier) = number_literal) ;) (expression_statement "param_4[2] = '\0';" (assignment_expression "param_4[2] = '\0'" (subscript_expression "param_4[2]" identifier [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "param_4[3] = '\0';" (assignment_expression "param_4[3] = '\0'" (subscript_expression "param_4[3]" identifier [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "param_4[4] = '\0';" (assignment_expression "param_4[4] = '\0'" (subscript_expression "param_4[4]" identifier [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "param_4[5] = '\r';" (assignment_expression "param_4[5] = '\r'" (subscript_expression "param_4[5]" identifier [ number_literal ]) = (char_literal "'\r'" ' escape_sequence ')) ;) (expression_statement "param_4[1] = bVar1 & 0xf0 | bVar2;" (assignment_expression "param_4[1] = bVar1 & 0xf0 | bVar2" (subscript_expression "param_4[1]" identifier [ number_literal ]) = (binary_expression "bVar1 & 0xf0 | bVar2" (binary_expression "bVar1 & 0xf0" identifier & number_literal) | identifier)) ;) (return_statement "return;" return ;) })) })) })))) (expression_statement "uVar5 = gettext("unsupported op for IE to LE");" (assignment_expression "uVar5 = gettext("unsupported op for IE to LE")" identifier = (call_expression "gettext("unsupported op for IE to LE")" identifier (argument_list "("unsupported op for IE to LE")" ( (string_literal ""unsupported op for IE to LE"" " string_content ") )))) ;) (expression_statement "uVar4 = *(uint *)*param_3;" (assignment_expression "uVar4 = *(uint *)*param_3" identifier = (pointer_expression "*(uint *)*param_3" * (cast_expression "(uint *)*param_3" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_3" * identifier)))) ;) (expression_statement "FUN_0023be30(param_1,param_2,\n               uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 | uVar4 << 0x18,0,\n               uVar5);" (call_expression "FUN_0023be30(param_1,param_2,\n               uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 | uVar4 << 0x18,0,\n               uVar5)" identifier (argument_list "(param_1,param_2,\n               uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 | uVar4 << 0x18,0,\n               uVar5)" ( identifier , identifier , (binary_expression "uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 | uVar4 << 0x18" (binary_expression "uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8" (binary_expression "uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8" (binary_expression "uVar4 >> 0x18" identifier >> number_literal) | (binary_expression "(uVar4 & 0xff0000) >> 8" (parenthesized_expression "(uVar4 & 0xff0000)" ( (binary_expression "uVar4 & 0xff0000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar4 & 0xff00) << 8" (parenthesized_expression "(uVar4 & 0xff00)" ( (binary_expression "uVar4 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "uVar4 << 0x18" identifier << number_literal)) , number_literal , identifier ))) ;) (return_statement "return;" return ;) })))
(translation_unit (function_definition TYPE (ERROR IDENT) (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT)))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (binary_expression (binary_expression IDENT >> LIT) | (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) >> LIT)) | (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) << LIT)) | (binary_expression IDENT << LIT))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < (binary_expression IDENT + LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (string_literal " string_content ") )))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT , LIT , IDENT ))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) == (char_literal ' character ')) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) & LIT) )) == LIT) )) && (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == (char_literal ' escape_sequence ')) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (binary_expression (subscript_expression IDENT [ LIT ]) & LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ])) >> LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == LIT) )) || (parenthesized_expression ( (parenthesized_expression ( (binary_expression (parenthesized_expression ( (comma_expression (assignment_expression IDENT = IDENT) , (binary_expression (binary_expression IDENT == LIT) || (parenthesized_expression ( (comma_expression (assignment_expression IDENT = IDENT) , (binary_expression IDENT == LIT)) )))) )) || (parenthesized_expression ( (comma_expression (assignment_expression IDENT = IDENT) , (binary_expression IDENT == LIT)) ))) )) ))) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = (char_literal ' escape_sequence ')) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (char_literal ' escape_sequence ')) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (char_literal ' escape_sequence ')) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression (binary_expression IDENT & LIT) | IDENT)) ;) (return_statement return ;) })) })) }) (else_clause else (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT)))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (binary_expression (binary_expression IDENT >> LIT) | (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) >> LIT)) | (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) << LIT)) | (binary_expression IDENT << LIT))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < (binary_expression IDENT + LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (string_literal " string_content ") )))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT , LIT , IDENT ))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) & LIT) )) == LIT) )) && (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == (char_literal ' escape_sequence ')) ))) )) && (parenthesized_expression ( (parenthesized_expression ( (binary_expression (binary_expression (subscript_expression IDENT [ LIT ]) == (char_literal ' escape_sequence ')) && (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == (char_literal ' escape_sequence ')) ))) )) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (binary_expression (subscript_expression IDENT [ LIT ]) & LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ])) >> LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == LIT) )) || (parenthesized_expression ( (comma_expression (assignment_expression IDENT = IDENT) , (binary_expression IDENT == LIT)) ))) )) || (parenthesized_expression ( (parenthesized_expression ( (comma_expression (assignment_expression IDENT = IDENT) , (binary_expression (binary_expression IDENT == LIT) || (parenthesized_expression ( (comma_expression (assignment_expression IDENT = IDENT) , (binary_expression IDENT == LIT)) )))) )) ))) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (char_literal ' escape_sequence ')) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (char_literal ' escape_sequence ')) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (char_literal ' escape_sequence ')) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (char_literal ' escape_sequence ')) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression (binary_expression IDENT & LIT) | IDENT)) ;) (return_statement return ;) })) })) })))) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (string_literal " string_content ") )))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT)))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , (binary_expression (binary_expression (binary_expression (binary_expression IDENT >> LIT) | (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) >> LIT)) | (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) << LIT)) | (binary_expression IDENT << LIT)) , LIT , IDENT ))) ;) (return_statement return ;) })))
(function_definition "void __regparm3\nFUN_00210ac0(undefined4 param_1,undefined4 param_2,undefined4 *param_3,char *param_4,uint param_5)\n\n{\n  byte bVar1;\n  byte bVar2;\n  byte bVar3;\n  uint uVar4;\n  undefined4 uVar5;\n  byte bVar6;\n  \n  uVar4 = *(uint *)*param_3;\n  uVar4 = uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 | uVar4 << 0x18;\n  if (param_5 < uVar4 + 4) {\n    uVar5 = gettext("TLS relocation out of range");\n    FUN_0023be30(param_1,param_2,uVar4,0,uVar5);\n  }\n  if (*param_4 == 'X') {\n    if (((param_4[2] & 0xfU) == 0) && (param_4[3] == '\0')) {\n      bVar1 = param_4[1];\n      bVar6 = param_4[1] & 0xf;\n      bVar3 = (byte)param_4[2] >> 4;\n      bVar2 = bVar6;\n      if ((bVar3 == 0) ||\n         (((bVar2 = bVar3, bVar6 == 0 || (bVar2 = bVar6, bVar3 == 0xc)) ||\n          (bVar2 = bVar3, bVar6 == 0xc)))) {\n        *param_4 = '\x18';\n        param_4[2] = '\a';\n        param_4[3] = '\0';\n        param_4[1] = bVar1 & 0xf0 | bVar2;\n        return;\n      }\n    }\n  }\n  else if (*param_4 == -0x1d) {\n    uVar4 = *(uint *)*param_3;\n    uVar4 = uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 | uVar4 << 0x18;\n    if (param_5 < uVar4 + 6) {\n      uVar5 = gettext("TLS relocation out of range");\n      FUN_0023be30(param_1,param_2,uVar4,0,uVar5);\n    }\n    if ((((param_4[2] & 0xfU) == 0) && (param_4[3] == '\0')) &&\n       ((param_4[4] == '\0' && (param_4[5] == '\x04')))) {\n      bVar1 = param_4[1];\n      bVar6 = param_4[1] & 0xf;\n      bVar3 = (byte)param_4[2] >> 4;\n      bVar2 = bVar6;\n      if (((bVar3 == 0) || (bVar2 = bVar3, bVar6 == 0)) ||\n         ((bVar2 = bVar6, bVar3 == 0xc || (bVar2 = bVar3, bVar6 == 0xc)))) {\n        *param_4 = -0x15;\n        param_4[2] = '\0';\n        param_4[3] = '\0';\n        param_4[4] = '\0';\n        param_4[5] = '\r';\n        param_4[1] = bVar1 & 0xf0 | bVar2;\n        return;\n      }\n    }\n  }\n  uVar5 = gettext("unsupported op for IE to LE");\n  uVar4 = *(uint *)*param_3;\n  FUN_0023be30(param_1,param_2,\n               uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 | uVar4 << 0x18,0,\n               uVar5);\n  return;\n}" (primitive_type "void") (ERROR "__regparm3" (identifier "__regparm3")) (function_declarator "FUN_00210ac0(undefined4 param_1,undefined4 param_2,undefined4 *param_3,char *param_4,uint param_5)" (identifier "FUN_00210ac0") (parameter_list "(undefined4 param_1,undefined4 param_2,undefined4 *param_3,char *param_4,uint param_5)" (( "(") (parameter_declaration "undefined4 param_1" (type_identifier "undefined4") (identifier "param_1")) (, ",") (parameter_declaration "undefined4 param_2" (type_identifier "undefined4") (identifier "param_2")) (, ",") (parameter_declaration "undefined4 *param_3" (type_identifier "undefined4") (pointer_declarator "*param_3" (* "*") (identifier "param_3"))) (, ",") (parameter_declaration "char *param_4" (primitive_type "char") (pointer_declarator "*param_4" (* "*") (identifier "param_4"))) (, ",") (parameter_declaration "uint param_5" (type_identifier "uint") (identifier "param_5")) () ")"))) (compound_statement "{\n  byte bVar1;\n  byte bVar2;\n  byte bVar3;\n  uint uVar4;\n  undefined4 uVar5;\n  byte bVar6;\n  \n  uVar4 = *(uint *)*param_3;\n  uVar4 = uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 | uVar4 << 0x18;\n  if (param_5 < uVar4 + 4) {\n    uVar5 = gettext("TLS relocation out of range");\n    FUN_0023be30(param_1,param_2,uVar4,0,uVar5);\n  }\n  if (*param_4 == 'X') {\n    if (((param_4[2] & 0xfU) == 0) && (param_4[3] == '\0')) {\n      bVar1 = param_4[1];\n      bVar6 = param_4[1] & 0xf;\n      bVar3 = (byte)param_4[2] >> 4;\n      bVar2 = bVar6;\n      if ((bVar3 == 0) ||\n         (((bVar2 = bVar3, bVar6 == 0 || (bVar2 = bVar6, bVar3 == 0xc)) ||\n          (bVar2 = bVar3, bVar6 == 0xc)))) {\n        *param_4 = '\x18';\n        param_4[2] = '\a';\n        param_4[3] = '\0';\n        param_4[1] = bVar1 & 0xf0 | bVar2;\n        return;\n      }\n    }\n  }\n  else if (*param_4 == -0x1d) {\n    uVar4 = *(uint *)*param_3;\n    uVar4 = uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 | uVar4 << 0x18;\n    if (param_5 < uVar4 + 6) {\n      uVar5 = gettext("TLS relocation out of range");\n      FUN_0023be30(param_1,param_2,uVar4,0,uVar5);\n    }\n    if ((((param_4[2] & 0xfU) == 0) && (param_4[3] == '\0')) &&\n       ((param_4[4] == '\0' && (param_4[5] == '\x04')))) {\n      bVar1 = param_4[1];\n      bVar6 = param_4[1] & 0xf;\n      bVar3 = (byte)param_4[2] >> 4;\n      bVar2 = bVar6;\n      if (((bVar3 == 0) || (bVar2 = bVar3, bVar6 == 0)) ||\n         ((bVar2 = bVar6, bVar3 == 0xc || (bVar2 = bVar3, bVar6 == 0xc)))) {\n        *param_4 = -0x15;\n        param_4[2] = '\0';\n        param_4[3] = '\0';\n        param_4[4] = '\0';\n        param_4[5] = '\r';\n        param_4[1] = bVar1 & 0xf0 | bVar2;\n        return;\n      }\n    }\n  }\n  uVar5 = gettext("unsupported op for IE to LE");\n  uVar4 = *(uint *)*param_3;\n  FUN_0023be30(param_1,param_2,\n               uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 | uVar4 << 0x18,0,\n               uVar5);\n  return;\n}" ({ "{") (declaration "byte bVar1;" (type_identifier "byte") (identifier "bVar1") (; ";")) (declaration "byte bVar2;" (type_identifier "byte") (identifier "bVar2") (; ";")) (declaration "byte bVar3;" (type_identifier "byte") (identifier "bVar3") (; ";")) (declaration "uint uVar4;" (type_identifier "uint") (identifier "uVar4") (; ";")) (declaration "undefined4 uVar5;" (type_identifier "undefined4") (identifier "uVar5") (; ";")) (declaration "byte bVar6;" (type_identifier "byte") (identifier "bVar6") (; ";")) (expression_statement "uVar4 = *(uint *)*param_3;" (assignment_expression "uVar4 = *(uint *)*param_3" (identifier "uVar4") (= "=") (pointer_expression "*(uint *)*param_3" (* "*") (cast_expression "(uint *)*param_3" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*param_3" (* "*") (identifier "param_3"))))) (; ";")) (expression_statement "uVar4 = uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 | uVar4 << 0x18;" (assignment_expression "uVar4 = uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 | uVar4 << 0x18" (identifier "uVar4") (= "=") (binary_expression "uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 | uVar4 << 0x18" (binary_expression "uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8" (binary_expression "uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8" (binary_expression "uVar4 >> 0x18" (identifier "uVar4") (>> ">>") (number_literal "0x18")) (| "|") (binary_expression "(uVar4 & 0xff0000) >> 8" (parenthesized_expression "(uVar4 & 0xff0000)" (( "(") (binary_expression "uVar4 & 0xff0000" (identifier "uVar4") (& "&") (number_literal "0xff0000")) () ")")) (>> ">>") (number_literal "8"))) (| "|") (binary_expression "(uVar4 & 0xff00) << 8" (parenthesized_expression "(uVar4 & 0xff00)" (( "(") (binary_expression "uVar4 & 0xff00" (identifier "uVar4") (& "&") (number_literal "0xff00")) () ")")) (<< "<<") (number_literal "8"))) (| "|") (binary_expression "uVar4 << 0x18" (identifier "uVar4") (<< "<<") (number_literal "0x18")))) (; ";")) (if_statement "if (param_5 < uVar4 + 4) {\n    uVar5 = gettext("TLS relocation out of range");\n    FUN_0023be30(param_1,param_2,uVar4,0,uVar5);\n  }" (if "if") (parenthesized_expression "(param_5 < uVar4 + 4)" (( "(") (binary_expression "param_5 < uVar4 + 4" (identifier "param_5") (< "<") (binary_expression "uVar4 + 4" (identifier "uVar4") (+ "+") (number_literal "4"))) () ")")) (compound_statement "{\n    uVar5 = gettext("TLS relocation out of range");\n    FUN_0023be30(param_1,param_2,uVar4,0,uVar5);\n  }" ({ "{") (expression_statement "uVar5 = gettext("TLS relocation out of range");" (assignment_expression "uVar5 = gettext("TLS relocation out of range")" (identifier "uVar5") (= "=") (call_expression "gettext("TLS relocation out of range")" (identifier "gettext") (argument_list "("TLS relocation out of range")" (( "(") (string_literal ""TLS relocation out of range"" (" """) (string_content "TLS relocation out of range") (" """)) () ")")))) (; ";")) (expression_statement "FUN_0023be30(param_1,param_2,uVar4,0,uVar5);" (call_expression "FUN_0023be30(param_1,param_2,uVar4,0,uVar5)" (identifier "FUN_0023be30") (argument_list "(param_1,param_2,uVar4,0,uVar5)" (( "(") (identifier "param_1") (, ",") (identifier "param_2") (, ",") (identifier "uVar4") (, ",") (number_literal "0") (, ",") (identifier "uVar5") () ")"))) (; ";")) (} "}"))) (if_statement "if (*param_4 == 'X') {\n    if (((param_4[2] & 0xfU) == 0) && (param_4[3] == '\0')) {\n      bVar1 = param_4[1];\n      bVar6 = param_4[1] & 0xf;\n      bVar3 = (byte)param_4[2] >> 4;\n      bVar2 = bVar6;\n      if ((bVar3 == 0) ||\n         (((bVar2 = bVar3, bVar6 == 0 || (bVar2 = bVar6, bVar3 == 0xc)) ||\n          (bVar2 = bVar3, bVar6 == 0xc)))) {\n        *param_4 = '\x18';\n        param_4[2] = '\a';\n        param_4[3] = '\0';\n        param_4[1] = bVar1 & 0xf0 | bVar2;\n        return;\n      }\n    }\n  }\n  else if (*param_4 == -0x1d) {\n    uVar4 = *(uint *)*param_3;\n    uVar4 = uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 | uVar4 << 0x18;\n    if (param_5 < uVar4 + 6) {\n      uVar5 = gettext("TLS relocation out of range");\n      FUN_0023be30(param_1,param_2,uVar4,0,uVar5);\n    }\n    if ((((param_4[2] & 0xfU) == 0) && (param_4[3] == '\0')) &&\n       ((param_4[4] == '\0' && (param_4[5] == '\x04')))) {\n      bVar1 = param_4[1];\n      bVar6 = param_4[1] & 0xf;\n      bVar3 = (byte)param_4[2] >> 4;\n      bVar2 = bVar6;\n      if (((bVar3 == 0) || (bVar2 = bVar3, bVar6 == 0)) ||\n         ((bVar2 = bVar6, bVar3 == 0xc || (bVar2 = bVar3, bVar6 == 0xc)))) {\n        *param_4 = -0x15;\n        param_4[2] = '\0';\n        param_4[3] = '\0';\n        param_4[4] = '\0';\n        param_4[5] = '\r';\n        param_4[1] = bVar1 & 0xf0 | bVar2;\n        return;\n      }\n    }\n  }" (if "if") (parenthesized_expression "(*param_4 == 'X')" (( "(") (binary_expression "*param_4 == 'X'" (pointer_expression "*param_4" (* "*") (identifier "param_4")) (== "==") (char_literal "'X'" (' "'") (character "X") (' "'"))) () ")")) (compound_statement "{\n    if (((param_4[2] & 0xfU) == 0) && (param_4[3] == '\0')) {\n      bVar1 = param_4[1];\n      bVar6 = param_4[1] & 0xf;\n      bVar3 = (byte)param_4[2] >> 4;\n      bVar2 = bVar6;\n      if ((bVar3 == 0) ||\n         (((bVar2 = bVar3, bVar6 == 0 || (bVar2 = bVar6, bVar3 == 0xc)) ||\n          (bVar2 = bVar3, bVar6 == 0xc)))) {\n        *param_4 = '\x18';\n        param_4[2] = '\a';\n        param_4[3] = '\0';\n        param_4[1] = bVar1 & 0xf0 | bVar2;\n        return;\n      }\n    }\n  }" ({ "{") (if_statement "if (((param_4[2] & 0xfU) == 0) && (param_4[3] == '\0')) {\n      bVar1 = param_4[1];\n      bVar6 = param_4[1] & 0xf;\n      bVar3 = (byte)param_4[2] >> 4;\n      bVar2 = bVar6;\n      if ((bVar3 == 0) ||\n         (((bVar2 = bVar3, bVar6 == 0 || (bVar2 = bVar6, bVar3 == 0xc)) ||\n          (bVar2 = bVar3, bVar6 == 0xc)))) {\n        *param_4 = '\x18';\n        param_4[2] = '\a';\n        param_4[3] = '\0';\n        param_4[1] = bVar1 & 0xf0 | bVar2;\n        return;\n      }\n    }" (if "if") (parenthesized_expression "(((param_4[2] & 0xfU) == 0) && (param_4[3] == '\0'))" (( "(") (binary_expression "((param_4[2] & 0xfU) == 0) && (param_4[3] == '\0')" (parenthesized_expression "((param_4[2] & 0xfU) == 0)" (( "(") (binary_expression "(param_4[2] & 0xfU) == 0" (parenthesized_expression "(param_4[2] & 0xfU)" (( "(") (binary_expression "param_4[2] & 0xfU" (subscript_expression "param_4[2]" (identifier "param_4") ([ "[") (number_literal "2") (] "]")) (& "&") (number_literal "0xfU")) () ")")) (== "==") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(param_4[3] == '\0')" (( "(") (binary_expression "param_4[3] == '\0'" (subscript_expression "param_4[3]" (identifier "param_4") ([ "[") (number_literal "3") (] "]")) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")"))) () ")")) (compound_statement "{\n      bVar1 = param_4[1];\n      bVar6 = param_4[1] & 0xf;\n      bVar3 = (byte)param_4[2] >> 4;\n      bVar2 = bVar6;\n      if ((bVar3 == 0) ||\n         (((bVar2 = bVar3, bVar6 == 0 || (bVar2 = bVar6, bVar3 == 0xc)) ||\n          (bVar2 = bVar3, bVar6 == 0xc)))) {\n        *param_4 = '\x18';\n        param_4[2] = '\a';\n        param_4[3] = '\0';\n        param_4[1] = bVar1 & 0xf0 | bVar2;\n        return;\n      }\n    }" ({ "{") (expression_statement "bVar1 = param_4[1];" (assignment_expression "bVar1 = param_4[1]" (identifier "bVar1") (= "=") (subscript_expression "param_4[1]" (identifier "param_4") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "bVar6 = param_4[1] & 0xf;" (assignment_expression "bVar6 = param_4[1] & 0xf" (identifier "bVar6") (= "=") (binary_expression "param_4[1] & 0xf" (subscript_expression "param_4[1]" (identifier "param_4") ([ "[") (number_literal "1") (] "]")) (& "&") (number_literal "0xf"))) (; ";")) (expression_statement "bVar3 = (byte)param_4[2] >> 4;" (assignment_expression "bVar3 = (byte)param_4[2] >> 4" (identifier "bVar3") (= "=") (binary_expression "(byte)param_4[2] >> 4" (cast_expression "(byte)param_4[2]" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (subscript_expression "param_4[2]" (identifier "param_4") ([ "[") (number_literal "2") (] "]"))) (>> ">>") (number_literal "4"))) (; ";")) (expression_statement "bVar2 = bVar6;" (assignment_expression "bVar2 = bVar6" (identifier "bVar2") (= "=") (identifier "bVar6")) (; ";")) (if_statement "if ((bVar3 == 0) ||\n         (((bVar2 = bVar3, bVar6 == 0 || (bVar2 = bVar6, bVar3 == 0xc)) ||\n          (bVar2 = bVar3, bVar6 == 0xc)))) {\n        *param_4 = '\x18';\n        param_4[2] = '\a';\n        param_4[3] = '\0';\n        param_4[1] = bVar1 & 0xf0 | bVar2;\n        return;\n      }" (if "if") (parenthesized_expression "((bVar3 == 0) ||\n         (((bVar2 = bVar3, bVar6 == 0 || (bVar2 = bVar6, bVar3 == 0xc)) ||\n          (bVar2 = bVar3, bVar6 == 0xc))))" (( "(") (binary_expression "(bVar3 == 0) ||\n         (((bVar2 = bVar3, bVar6 == 0 || (bVar2 = bVar6, bVar3 == 0xc)) ||\n          (bVar2 = bVar3, bVar6 == 0xc)))" (parenthesized_expression "(bVar3 == 0)" (( "(") (binary_expression "bVar3 == 0" (identifier "bVar3") (== "==") (number_literal "0")) () ")")) (|| "||") (parenthesized_expression "(((bVar2 = bVar3, bVar6 == 0 || (bVar2 = bVar6, bVar3 == 0xc)) ||\n          (bVar2 = bVar3, bVar6 == 0xc)))" (( "(") (parenthesized_expression "((bVar2 = bVar3, bVar6 == 0 || (bVar2 = bVar6, bVar3 == 0xc)) ||\n          (bVar2 = bVar3, bVar6 == 0xc))" (( "(") (binary_expression "(bVar2 = bVar3, bVar6 == 0 || (bVar2 = bVar6, bVar3 == 0xc)) ||\n          (bVar2 = bVar3, bVar6 == 0xc)" (parenthesized_expression "(bVar2 = bVar3, bVar6 == 0 || (bVar2 = bVar6, bVar3 == 0xc))" (( "(") (comma_expression "bVar2 = bVar3, bVar6 == 0 || (bVar2 = bVar6, bVar3 == 0xc)" (assignment_expression "bVar2 = bVar3" (identifier "bVar2") (= "=") (identifier "bVar3")) (, ",") (binary_expression "bVar6 == 0 || (bVar2 = bVar6, bVar3 == 0xc)" (binary_expression "bVar6 == 0" (identifier "bVar6") (== "==") (number_literal "0")) (|| "||") (parenthesized_expression "(bVar2 = bVar6, bVar3 == 0xc)" (( "(") (comma_expression "bVar2 = bVar6, bVar3 == 0xc" (assignment_expression "bVar2 = bVar6" (identifier "bVar2") (= "=") (identifier "bVar6")) (, ",") (binary_expression "bVar3 == 0xc" (identifier "bVar3") (== "==") (number_literal "0xc"))) () ")")))) () ")")) (|| "||") (parenthesized_expression "(bVar2 = bVar3, bVar6 == 0xc)" (( "(") (comma_expression "bVar2 = bVar3, bVar6 == 0xc" (assignment_expression "bVar2 = bVar3" (identifier "bVar2") (= "=") (identifier "bVar3")) (, ",") (binary_expression "bVar6 == 0xc" (identifier "bVar6") (== "==") (number_literal "0xc"))) () ")"))) () ")")) () ")"))) () ")")) (compound_statement "{\n        *param_4 = '\x18';\n        param_4[2] = '\a';\n        param_4[3] = '\0';\n        param_4[1] = bVar1 & 0xf0 | bVar2;\n        return;\n      }" ({ "{") (expression_statement "*param_4 = '\x18';" (assignment_expression "*param_4 = '\x18'" (pointer_expression "*param_4" (* "*") (identifier "param_4")) (= "=") (char_literal "'\x18'" (' "'") (escape_sequence "\x18") (' "'"))) (; ";")) (expression_statement "param_4[2] = '\a';" (assignment_expression "param_4[2] = '\a'" (subscript_expression "param_4[2]" (identifier "param_4") ([ "[") (number_literal "2") (] "]")) (= "=") (char_literal "'\a'" (' "'") (escape_sequence "\a") (' "'"))) (; ";")) (expression_statement "param_4[3] = '\0';" (assignment_expression "param_4[3] = '\0'" (subscript_expression "param_4[3]" (identifier "param_4") ([ "[") (number_literal "3") (] "]")) (= "=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) (; ";")) (expression_statement "param_4[1] = bVar1 & 0xf0 | bVar2;" (assignment_expression "param_4[1] = bVar1 & 0xf0 | bVar2" (subscript_expression "param_4[1]" (identifier "param_4") ([ "[") (number_literal "1") (] "]")) (= "=") (binary_expression "bVar1 & 0xf0 | bVar2" (binary_expression "bVar1 & 0xf0" (identifier "bVar1") (& "&") (number_literal "0xf0")) (| "|") (identifier "bVar2"))) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}"))) (} "}"))) (} "}")) (else_clause "else if (*param_4 == -0x1d) {\n    uVar4 = *(uint *)*param_3;\n    uVar4 = uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 | uVar4 << 0x18;\n    if (param_5 < uVar4 + 6) {\n      uVar5 = gettext("TLS relocation out of range");\n      FUN_0023be30(param_1,param_2,uVar4,0,uVar5);\n    }\n    if ((((param_4[2] & 0xfU) == 0) && (param_4[3] == '\0')) &&\n       ((param_4[4] == '\0' && (param_4[5] == '\x04')))) {\n      bVar1 = param_4[1];\n      bVar6 = param_4[1] & 0xf;\n      bVar3 = (byte)param_4[2] >> 4;\n      bVar2 = bVar6;\n      if (((bVar3 == 0) || (bVar2 = bVar3, bVar6 == 0)) ||\n         ((bVar2 = bVar6, bVar3 == 0xc || (bVar2 = bVar3, bVar6 == 0xc)))) {\n        *param_4 = -0x15;\n        param_4[2] = '\0';\n        param_4[3] = '\0';\n        param_4[4] = '\0';\n        param_4[5] = '\r';\n        param_4[1] = bVar1 & 0xf0 | bVar2;\n        return;\n      }\n    }\n  }" (else "else") (if_statement "if (*param_4 == -0x1d) {\n    uVar4 = *(uint *)*param_3;\n    uVar4 = uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 | uVar4 << 0x18;\n    if (param_5 < uVar4 + 6) {\n      uVar5 = gettext("TLS relocation out of range");\n      FUN_0023be30(param_1,param_2,uVar4,0,uVar5);\n    }\n    if ((((param_4[2] & 0xfU) == 0) && (param_4[3] == '\0')) &&\n       ((param_4[4] == '\0' && (param_4[5] == '\x04')))) {\n      bVar1 = param_4[1];\n      bVar6 = param_4[1] & 0xf;\n      bVar3 = (byte)param_4[2] >> 4;\n      bVar2 = bVar6;\n      if (((bVar3 == 0) || (bVar2 = bVar3, bVar6 == 0)) ||\n         ((bVar2 = bVar6, bVar3 == 0xc || (bVar2 = bVar3, bVar6 == 0xc)))) {\n        *param_4 = -0x15;\n        param_4[2] = '\0';\n        param_4[3] = '\0';\n        param_4[4] = '\0';\n        param_4[5] = '\r';\n        param_4[1] = bVar1 & 0xf0 | bVar2;\n        return;\n      }\n    }\n  }" (if "if") (parenthesized_expression "(*param_4 == -0x1d)" (( "(") (binary_expression "*param_4 == -0x1d" (pointer_expression "*param_4" (* "*") (identifier "param_4")) (== "==") (number_literal "-0x1d")) () ")")) (compound_statement "{\n    uVar4 = *(uint *)*param_3;\n    uVar4 = uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 | uVar4 << 0x18;\n    if (param_5 < uVar4 + 6) {\n      uVar5 = gettext("TLS relocation out of range");\n      FUN_0023be30(param_1,param_2,uVar4,0,uVar5);\n    }\n    if ((((param_4[2] & 0xfU) == 0) && (param_4[3] == '\0')) &&\n       ((param_4[4] == '\0' && (param_4[5] == '\x04')))) {\n      bVar1 = param_4[1];\n      bVar6 = param_4[1] & 0xf;\n      bVar3 = (byte)param_4[2] >> 4;\n      bVar2 = bVar6;\n      if (((bVar3 == 0) || (bVar2 = bVar3, bVar6 == 0)) ||\n         ((bVar2 = bVar6, bVar3 == 0xc || (bVar2 = bVar3, bVar6 == 0xc)))) {\n        *param_4 = -0x15;\n        param_4[2] = '\0';\n        param_4[3] = '\0';\n        param_4[4] = '\0';\n        param_4[5] = '\r';\n        param_4[1] = bVar1 & 0xf0 | bVar2;\n        return;\n      }\n    }\n  }" ({ "{") (expression_statement "uVar4 = *(uint *)*param_3;" (assignment_expression "uVar4 = *(uint *)*param_3" (identifier "uVar4") (= "=") (pointer_expression "*(uint *)*param_3" (* "*") (cast_expression "(uint *)*param_3" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*param_3" (* "*") (identifier "param_3"))))) (; ";")) (expression_statement "uVar4 = uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 | uVar4 << 0x18;" (assignment_expression "uVar4 = uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 | uVar4 << 0x18" (identifier "uVar4") (= "=") (binary_expression "uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 | uVar4 << 0x18" (binary_expression "uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8" (binary_expression "uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8" (binary_expression "uVar4 >> 0x18" (identifier "uVar4") (>> ">>") (number_literal "0x18")) (| "|") (binary_expression "(uVar4 & 0xff0000) >> 8" (parenthesized_expression "(uVar4 & 0xff0000)" (( "(") (binary_expression "uVar4 & 0xff0000" (identifier "uVar4") (& "&") (number_literal "0xff0000")) () ")")) (>> ">>") (number_literal "8"))) (| "|") (binary_expression "(uVar4 & 0xff00) << 8" (parenthesized_expression "(uVar4 & 0xff00)" (( "(") (binary_expression "uVar4 & 0xff00" (identifier "uVar4") (& "&") (number_literal "0xff00")) () ")")) (<< "<<") (number_literal "8"))) (| "|") (binary_expression "uVar4 << 0x18" (identifier "uVar4") (<< "<<") (number_literal "0x18")))) (; ";")) (if_statement "if (param_5 < uVar4 + 6) {\n      uVar5 = gettext("TLS relocation out of range");\n      FUN_0023be30(param_1,param_2,uVar4,0,uVar5);\n    }" (if "if") (parenthesized_expression "(param_5 < uVar4 + 6)" (( "(") (binary_expression "param_5 < uVar4 + 6" (identifier "param_5") (< "<") (binary_expression "uVar4 + 6" (identifier "uVar4") (+ "+") (number_literal "6"))) () ")")) (compound_statement "{\n      uVar5 = gettext("TLS relocation out of range");\n      FUN_0023be30(param_1,param_2,uVar4,0,uVar5);\n    }" ({ "{") (expression_statement "uVar5 = gettext("TLS relocation out of range");" (assignment_expression "uVar5 = gettext("TLS relocation out of range")" (identifier "uVar5") (= "=") (call_expression "gettext("TLS relocation out of range")" (identifier "gettext") (argument_list "("TLS relocation out of range")" (( "(") (string_literal ""TLS relocation out of range"" (" """) (string_content "TLS relocation out of range") (" """)) () ")")))) (; ";")) (expression_statement "FUN_0023be30(param_1,param_2,uVar4,0,uVar5);" (call_expression "FUN_0023be30(param_1,param_2,uVar4,0,uVar5)" (identifier "FUN_0023be30") (argument_list "(param_1,param_2,uVar4,0,uVar5)" (( "(") (identifier "param_1") (, ",") (identifier "param_2") (, ",") (identifier "uVar4") (, ",") (number_literal "0") (, ",") (identifier "uVar5") () ")"))) (; ";")) (} "}"))) (if_statement "if ((((param_4[2] & 0xfU) == 0) && (param_4[3] == '\0')) &&\n       ((param_4[4] == '\0' && (param_4[5] == '\x04')))) {\n      bVar1 = param_4[1];\n      bVar6 = param_4[1] & 0xf;\n      bVar3 = (byte)param_4[2] >> 4;\n      bVar2 = bVar6;\n      if (((bVar3 == 0) || (bVar2 = bVar3, bVar6 == 0)) ||\n         ((bVar2 = bVar6, bVar3 == 0xc || (bVar2 = bVar3, bVar6 == 0xc)))) {\n        *param_4 = -0x15;\n        param_4[2] = '\0';\n        param_4[3] = '\0';\n        param_4[4] = '\0';\n        param_4[5] = '\r';\n        param_4[1] = bVar1 & 0xf0 | bVar2;\n        return;\n      }\n    }" (if "if") (parenthesized_expression "((((param_4[2] & 0xfU) == 0) && (param_4[3] == '\0')) &&\n       ((param_4[4] == '\0' && (param_4[5] == '\x04'))))" (( "(") (binary_expression "(((param_4[2] & 0xfU) == 0) && (param_4[3] == '\0')) &&\n       ((param_4[4] == '\0' && (param_4[5] == '\x04')))" (parenthesized_expression "(((param_4[2] & 0xfU) == 0) && (param_4[3] == '\0'))" (( "(") (binary_expression "((param_4[2] & 0xfU) == 0) && (param_4[3] == '\0')" (parenthesized_expression "((param_4[2] & 0xfU) == 0)" (( "(") (binary_expression "(param_4[2] & 0xfU) == 0" (parenthesized_expression "(param_4[2] & 0xfU)" (( "(") (binary_expression "param_4[2] & 0xfU" (subscript_expression "param_4[2]" (identifier "param_4") ([ "[") (number_literal "2") (] "]")) (& "&") (number_literal "0xfU")) () ")")) (== "==") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(param_4[3] == '\0')" (( "(") (binary_expression "param_4[3] == '\0'" (subscript_expression "param_4[3]" (identifier "param_4") ([ "[") (number_literal "3") (] "]")) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")"))) () ")")) (&& "&&") (parenthesized_expression "((param_4[4] == '\0' && (param_4[5] == '\x04')))" (( "(") (parenthesized_expression "(param_4[4] == '\0' && (param_4[5] == '\x04'))" (( "(") (binary_expression "param_4[4] == '\0' && (param_4[5] == '\x04')" (binary_expression "param_4[4] == '\0'" (subscript_expression "param_4[4]" (identifier "param_4") ([ "[") (number_literal "4") (] "]")) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) (&& "&&") (parenthesized_expression "(param_4[5] == '\x04')" (( "(") (binary_expression "param_4[5] == '\x04'" (subscript_expression "param_4[5]" (identifier "param_4") ([ "[") (number_literal "5") (] "]")) (== "==") (char_literal "'\x04'" (' "'") (escape_sequence "\x04") (' "'"))) () ")"))) () ")")) () ")"))) () ")")) (compound_statement "{\n      bVar1 = param_4[1];\n      bVar6 = param_4[1] & 0xf;\n      bVar3 = (byte)param_4[2] >> 4;\n      bVar2 = bVar6;\n      if (((bVar3 == 0) || (bVar2 = bVar3, bVar6 == 0)) ||\n         ((bVar2 = bVar6, bVar3 == 0xc || (bVar2 = bVar3, bVar6 == 0xc)))) {\n        *param_4 = -0x15;\n        param_4[2] = '\0';\n        param_4[3] = '\0';\n        param_4[4] = '\0';\n        param_4[5] = '\r';\n        param_4[1] = bVar1 & 0xf0 | bVar2;\n        return;\n      }\n    }" ({ "{") (expression_statement "bVar1 = param_4[1];" (assignment_expression "bVar1 = param_4[1]" (identifier "bVar1") (= "=") (subscript_expression "param_4[1]" (identifier "param_4") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "bVar6 = param_4[1] & 0xf;" (assignment_expression "bVar6 = param_4[1] & 0xf" (identifier "bVar6") (= "=") (binary_expression "param_4[1] & 0xf" (subscript_expression "param_4[1]" (identifier "param_4") ([ "[") (number_literal "1") (] "]")) (& "&") (number_literal "0xf"))) (; ";")) (expression_statement "bVar3 = (byte)param_4[2] >> 4;" (assignment_expression "bVar3 = (byte)param_4[2] >> 4" (identifier "bVar3") (= "=") (binary_expression "(byte)param_4[2] >> 4" (cast_expression "(byte)param_4[2]" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (subscript_expression "param_4[2]" (identifier "param_4") ([ "[") (number_literal "2") (] "]"))) (>> ">>") (number_literal "4"))) (; ";")) (expression_statement "bVar2 = bVar6;" (assignment_expression "bVar2 = bVar6" (identifier "bVar2") (= "=") (identifier "bVar6")) (; ";")) (if_statement "if (((bVar3 == 0) || (bVar2 = bVar3, bVar6 == 0)) ||\n         ((bVar2 = bVar6, bVar3 == 0xc || (bVar2 = bVar3, bVar6 == 0xc)))) {\n        *param_4 = -0x15;\n        param_4[2] = '\0';\n        param_4[3] = '\0';\n        param_4[4] = '\0';\n        param_4[5] = '\r';\n        param_4[1] = bVar1 & 0xf0 | bVar2;\n        return;\n      }" (if "if") (parenthesized_expression "(((bVar3 == 0) || (bVar2 = bVar3, bVar6 == 0)) ||\n         ((bVar2 = bVar6, bVar3 == 0xc || (bVar2 = bVar3, bVar6 == 0xc))))" (( "(") (binary_expression "((bVar3 == 0) || (bVar2 = bVar3, bVar6 == 0)) ||\n         ((bVar2 = bVar6, bVar3 == 0xc || (bVar2 = bVar3, bVar6 == 0xc)))" (parenthesized_expression "((bVar3 == 0) || (bVar2 = bVar3, bVar6 == 0))" (( "(") (binary_expression "(bVar3 == 0) || (bVar2 = bVar3, bVar6 == 0)" (parenthesized_expression "(bVar3 == 0)" (( "(") (binary_expression "bVar3 == 0" (identifier "bVar3") (== "==") (number_literal "0")) () ")")) (|| "||") (parenthesized_expression "(bVar2 = bVar3, bVar6 == 0)" (( "(") (comma_expression "bVar2 = bVar3, bVar6 == 0" (assignment_expression "bVar2 = bVar3" (identifier "bVar2") (= "=") (identifier "bVar3")) (, ",") (binary_expression "bVar6 == 0" (identifier "bVar6") (== "==") (number_literal "0"))) () ")"))) () ")")) (|| "||") (parenthesized_expression "((bVar2 = bVar6, bVar3 == 0xc || (bVar2 = bVar3, bVar6 == 0xc)))" (( "(") (parenthesized_expression "(bVar2 = bVar6, bVar3 == 0xc || (bVar2 = bVar3, bVar6 == 0xc))" (( "(") (comma_expression "bVar2 = bVar6, bVar3 == 0xc || (bVar2 = bVar3, bVar6 == 0xc)" (assignment_expression "bVar2 = bVar6" (identifier "bVar2") (= "=") (identifier "bVar6")) (, ",") (binary_expression "bVar3 == 0xc || (bVar2 = bVar3, bVar6 == 0xc)" (binary_expression "bVar3 == 0xc" (identifier "bVar3") (== "==") (number_literal "0xc")) (|| "||") (parenthesized_expression "(bVar2 = bVar3, bVar6 == 0xc)" (( "(") (comma_expression "bVar2 = bVar3, bVar6 == 0xc" (assignment_expression "bVar2 = bVar3" (identifier "bVar2") (= "=") (identifier "bVar3")) (, ",") (binary_expression "bVar6 == 0xc" (identifier "bVar6") (== "==") (number_literal "0xc"))) () ")")))) () ")")) () ")"))) () ")")) (compound_statement "{\n        *param_4 = -0x15;\n        param_4[2] = '\0';\n        param_4[3] = '\0';\n        param_4[4] = '\0';\n        param_4[5] = '\r';\n        param_4[1] = bVar1 & 0xf0 | bVar2;\n        return;\n      }" ({ "{") (expression_statement "*param_4 = -0x15;" (assignment_expression "*param_4 = -0x15" (pointer_expression "*param_4" (* "*") (identifier "param_4")) (= "=") (number_literal "-0x15")) (; ";")) (expression_statement "param_4[2] = '\0';" (assignment_expression "param_4[2] = '\0'" (subscript_expression "param_4[2]" (identifier "param_4") ([ "[") (number_literal "2") (] "]")) (= "=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) (; ";")) (expression_statement "param_4[3] = '\0';" (assignment_expression "param_4[3] = '\0'" (subscript_expression "param_4[3]" (identifier "param_4") ([ "[") (number_literal "3") (] "]")) (= "=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) (; ";")) (expression_statement "param_4[4] = '\0';" (assignment_expression "param_4[4] = '\0'" (subscript_expression "param_4[4]" (identifier "param_4") ([ "[") (number_literal "4") (] "]")) (= "=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) (; ";")) (expression_statement "param_4[5] = '\r';" (assignment_expression "param_4[5] = '\r'" (subscript_expression "param_4[5]" (identifier "param_4") ([ "[") (number_literal "5") (] "]")) (= "=") (char_literal "'\r'" (' "'") (escape_sequence "\r") (' "'"))) (; ";")) (expression_statement "param_4[1] = bVar1 & 0xf0 | bVar2;" (assignment_expression "param_4[1] = bVar1 & 0xf0 | bVar2" (subscript_expression "param_4[1]" (identifier "param_4") ([ "[") (number_literal "1") (] "]")) (= "=") (binary_expression "bVar1 & 0xf0 | bVar2" (binary_expression "bVar1 & 0xf0" (identifier "bVar1") (& "&") (number_literal "0xf0")) (| "|") (identifier "bVar2"))) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}"))) (} "}"))) (} "}"))))) (expression_statement "uVar5 = gettext("unsupported op for IE to LE");" (assignment_expression "uVar5 = gettext("unsupported op for IE to LE")" (identifier "uVar5") (= "=") (call_expression "gettext("unsupported op for IE to LE")" (identifier "gettext") (argument_list "("unsupported op for IE to LE")" (( "(") (string_literal ""unsupported op for IE to LE"" (" """) (string_content "unsupported op for IE to LE") (" """)) () ")")))) (; ";")) (expression_statement "uVar4 = *(uint *)*param_3;" (assignment_expression "uVar4 = *(uint *)*param_3" (identifier "uVar4") (= "=") (pointer_expression "*(uint *)*param_3" (* "*") (cast_expression "(uint *)*param_3" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*param_3" (* "*") (identifier "param_3"))))) (; ";")) (expression_statement "FUN_0023be30(param_1,param_2,\n               uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 | uVar4 << 0x18,0,\n               uVar5);" (call_expression "FUN_0023be30(param_1,param_2,\n               uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 | uVar4 << 0x18,0,\n               uVar5)" (identifier "FUN_0023be30") (argument_list "(param_1,param_2,\n               uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 | uVar4 << 0x18,0,\n               uVar5)" (( "(") (identifier "param_1") (, ",") (identifier "param_2") (, ",") (binary_expression "uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 | uVar4 << 0x18" (binary_expression "uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8" (binary_expression "uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8" (binary_expression "uVar4 >> 0x18" (identifier "uVar4") (>> ">>") (number_literal "0x18")) (| "|") (binary_expression "(uVar4 & 0xff0000) >> 8" (parenthesized_expression "(uVar4 & 0xff0000)" (( "(") (binary_expression "uVar4 & 0xff0000" (identifier "uVar4") (& "&") (number_literal "0xff0000")) () ")")) (>> ">>") (number_literal "8"))) (| "|") (binary_expression "(uVar4 & 0xff00) << 8" (parenthesized_expression "(uVar4 & 0xff00)" (( "(") (binary_expression "uVar4 & 0xff00" (identifier "uVar4") (& "&") (number_literal "0xff00")) () ")")) (<< "<<") (number_literal "8"))) (| "|") (binary_expression "uVar4 << 0x18" (identifier "uVar4") (<< "<<") (number_literal "0x18"))) (, ",") (number_literal "0") (, ",") (identifier "uVar5") () ")"))) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}")))

/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */
/* WARNING: Enum "DT": Some values do not have unique names */

void anon_unknown.dwarf_130c1fc::Target_s390<32>::Relocate::function_1
               (type_1<32,type_3> *relinfo,size_t relnum,type_2<32,type_3> *rela,type_4 *view,
               type_5 view_size)

{
}


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

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

void __regparm3
MASKED(undefined4 param_1,undefined4 param_2,undefined4 *param_3,char *param_4,uint param_5)

{
  byte bVar1;
  byte bVar2;
  byte bVar3;
  uint uVar4;
  undefined4 uVar5;
  byte bVar6;
  
  uVar4 = *(uint *)*param_3;
  uVar4 = uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 | uVar4 << 0x18;
  if (param_5 < uVar4 + 4) {
    uVar5 = gettext("TLS relocation out of range");
    FUN_0023be30(param_1,param_2,uVar4,0,uVar5);
  }
  if (*param_4 == 'X') {
    if (((param_4[2] & 0xfU) == 0) && (param_4[3] == '\0')) {
      bVar1 = param_4[1];
      bVar6 = param_4[1] & 0xf;
      bVar3 = (byte)param_4[2] >> 4;
      bVar2 = bVar6;
      if ((bVar3 == 0) ||
         (((bVar2 = bVar3, bVar6 == 0 || (bVar2 = bVar6, bVar3 == 0xc)) ||
          (bVar2 = bVar3, bVar6 == 0xc)))) {
        *param_4 = '\x18';
        param_4[2] = '\a';
        param_4[3] = '\0';
        param_4[1] = bVar1 & 0xf0 | bVar2;
        return;
      }
    }
  }
  else if (*param_4 == -0x1d) {
    uVar4 = *(uint *)*param_3;
    uVar4 = uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 | uVar4 << 0x18;
    if (param_5 < uVar4 + 6) {
      uVar5 = gettext("TLS relocation out of range");
      FUN_0023be30(param_1,param_2,uVar4,0,uVar5);
    }
    if ((((param_4[2] & 0xfU) == 0) && (param_4[3] == '\0')) &&
       ((param_4[4] == '\0' && (param_4[5] == '\x04')))) {
      bVar1 = param_4[1];
      bVar6 = param_4[1] & 0xf;
      bVar3 = (byte)param_4[2] >> 4;
      bVar2 = bVar6;
      if (((bVar3 == 0) || (bVar2 = bVar3, bVar6 == 0)) ||
         ((bVar2 = bVar6, bVar3 == 0xc || (bVar2 = bVar3, bVar6 == 0xc)))) {
        *param_4 = -0x15;
        param_4[2] = '\0';
        param_4[3] = '\0';
        param_4[4] = '\0';
        param_4[5] = '\r';
        param_4[1] = bVar1 & 0xf0 | bVar2;
        return;
      }
    }
  }
  uVar5 = gettext("unsupported op for IE to LE");
  uVar4 = *(uint *)*param_3;
  FUN_0023be30(param_1,param_2,
               uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 | uVar4 << 0x18,0,
               uVar5);
  return;
}

