
/* WARNING: Function: __x86.get_pc_thunk.bp replaced with injection: get_pc_thunk.bp */

int64_t gold::read_signed_LEB_128_x(uchar *buffer,size_t *len,uchar byte)

{
  byte bVar1;
  byte bVar2;
  size_t sVar3;
  char *format;
  uint uVar4;
  uint uVar5;
  uint uVar6;
  uint uVar7;
  uint local_2c;
  uint local_28;
  
  uVar4 = 7;
  local_28 = 0;
  local_2c = byte & 0x7f;
  sVar3 = 1;
  while( true ) {
    bVar1 = buffer[sVar3 - 1];
    sVar3 = sVar3 + 1;
    bVar2 = (byte)uVar4 & 0x1f;
    uVar5 = (bVar1 & 0x7f) << ((byte)uVar4 & 0x1f);
    uVar6 = uVar5;
    uVar7 = 0 << bVar2 | (bVar1 & 0x7f) >> 0x20 - bVar2;
    if ((uVar4 & 0x20) != 0) {
      uVar6 = 0;
      uVar7 = uVar5;
    }
    uVar4 = uVar4 + 7;
    local_2c = local_2c | uVar6;
    local_28 = uVar7 | local_28;
    if (-1 < (char)bVar1) break;
    if (uVar4 == 0x4d) {
      format = (char *)gettext("Unusually large LEB128 decoded, debug information may be corrupted")
      ;
      gold_warning(format);
      sVar3 = 0xb;
LAB_00095ad0:
      *len = sVar3;
      return CONCAT44(local_28,local_2c);
    }
  }
  if (((int)uVar4 < 0x40) && ((bVar1 & 0x40) != 0)) {
    uVar5 = -1 << ((byte)uVar4 & 0x1f);
    uVar7 = uVar5;
    uVar6 = 0xffffffff;
    if ((uVar4 & 0x20) != 0) {
      uVar7 = 0;
      uVar6 = uVar5;
    }
    local_2c = local_2c | uVar7;
    local_28 = local_28 | uVar6;
  }
  goto LAB_00095ad0;
}



undefined8 FUN_00095a30(int param_1,int *param_2,uint param_3)

{
  byte bVar1;
  byte bVar2;
  int iVar3;
  undefined4 uVar4;
  uint extraout_ECX;
  uint uVar5;
  int unaff_EBP;
  uint uVar6;
  uint uVar7;
  uint uVar8;
  undefined4 local_2c;
  undefined4 local_28;
  
  FUN_000559f2();
  local_28 = 0;
  local_2c = param_3 & 0x7f;
  iVar3 = 1;
  uVar5 = extraout_ECX;
  while( true ) {
    bVar1 = *(byte *)(param_1 + -1 + iVar3);
    iVar3 = iVar3 + 1;
    bVar2 = (byte)uVar5 & 0x1f;
    uVar6 = (bVar1 & 0x7f) << ((byte)uVar5 & 0x1f);
    uVar7 = uVar6;
    uVar8 = 0 << bVar2 | (bVar1 & 0x7f) >> 0x20 - bVar2;
    if ((uVar5 & 0x20) != 0) {
      uVar7 = 0;
      uVar8 = uVar6;
    }
    uVar5 = uVar5 + 7;
    local_2c = local_2c | uVar7;
    local_28 = uVar8 | local_28;
    if (-1 < (char)bVar1) break;
    if (uVar5 == 0x4d) {
      uVar4 = gettext(unaff_EBP + 0x1f49e9);
      FUN_000654e0(uVar4);
      iVar3 = 0xb;
LAB_00095ad0:
      *param_2 = iVar3;
      return CONCAT44(local_28,local_2c);
    }
  }
  if (((int)uVar5 < 0x40) && ((bVar1 & 0x40) != 0)) {
    uVar6 = -1 << ((byte)uVar5 & 0x1f);
    uVar8 = uVar6;
    uVar7 = 0xffffffff;
    if ((uVar5 & 0x20) != 0) {
      uVar8 = 0;
      uVar7 = uVar6;
    }
    local_2c = local_2c | uVar8;
    local_28 = local_28 | uVar7;
  }
  goto LAB_00095ad0;
}


PUSH EBP
MOV ECX,0x7
CALL 0x000559f2
ADD EBP,0x2f95c5
PUSH EDI
PUSH ESI
PUSH EBX
SUB ESP,0x1c
MOV EAX,dword ptr [ESP + 0x38]
MOV EBX,dword ptr [ESP + 0x30]
MOV dword ptr [ESP + 0x4],0x0
AND EAX,0x7f
MOV dword ptr [ESP],EAX
MOV EAX,0x1
LEA ESI,[ESI]
MOVZX EDX,byte ptr [EBX + EAX*0x1 + -0x1]
XOR EDI,EDI
ADD EAX,0x1
MOV ESI,EDX
AND ESI,0x7f
SHLD EDI,ESI,CL
SHL ESI,CL
TEST CL,0x20
JZ 0x00095a85
MOV EDI,ESI
XOR ESI,ESI
MOV dword ptr [ESP + 0xc],EDI
MOV EDI,dword ptr [ESP]
ADD ECX,0x7
MOV dword ptr [ESP + 0x8],ESI
OR EDI,ESI
MOV ESI,EDI
MOV EDI,dword ptr [ESP + 0xc]
OR EDI,dword ptr [ESP + 0x4]
MOV dword ptr [ESP],ESI
MOV dword ptr [ESP + 0x4],EDI
TEST DL,DL
JNS 0x00095ae8
CMP ECX,0x4d
JNZ 0x00095a68
SUB ESP,0xc
LEA EAX,[EBP + 0xffefb424]
MOV EBX,EBP
PUSH EAX
CALL 0x000293b0
MOV dword ptr [ESP],EAX
CALL 0x000654e0
ADD ESP,0x10
MOV EAX,0xb
MOV EDX,dword ptr [ESP + 0x34]
MOV dword ptr [EDX],EAX
MOV EAX,dword ptr [ESP]
MOV EDX,dword ptr [ESP + 0x4]
ADD ESP,0x1c
POP EBX
POP ESI
POP EDI
POP EBP
RET
CMP ECX,0x3f
JG 0x00095ad0
AND EDX,0x40
JZ 0x00095ad0
MOV ESI,0xffffffff
XOR EDX,EDX
MOV EDI,0xffffffff
SHL ESI,CL
TEST CL,0x20
MOV ECX,dword ptr [ESP]
CMOVNZ EDI,ESI
CMOVNZ ESI,EDX
MOV EDX,dword ptr [ESP + 0x4]
OR ECX,ESI
OR EDX,EDI
MOV dword ptr [ESP],ECX
MOV dword ptr [ESP + 0x4],EDX
JMP 0x00095ad0
(translation_unit "undefined8 FUN_00095a30(int param_1,int *param_2,uint param_3)\n\n{\n  byte bVar1;\n  byte bVar2;\n  int iVar3;\n  undefined4 uVar4;\n  uint extraout_ECX;\n  uint uVar5;\n  int unaff_EBP;\n  uint uVar6;\n  uint uVar7;\n  uint uVar8;\n  undefined4 local_2c;\n  undefined4 local_28;\n  \n  FUN_000559f2();\n  local_28 = 0;\n  local_2c = param_3 & 0x7f;\n  iVar3 = 1;\n  uVar5 = extraout_ECX;\n  while( true ) {\n    bVar1 = *(byte *)(param_1 + -1 + iVar3);\n    iVar3 = iVar3 + 1;\n    bVar2 = (byte)uVar5 & 0x1f;\n    uVar6 = (bVar1 & 0x7f) << ((byte)uVar5 & 0x1f);\n    uVar7 = uVar6;\n    uVar8 = 0 << bVar2 | (bVar1 & 0x7f) >> 0x20 - bVar2;\n    if ((uVar5 & 0x20) != 0) {\n      uVar7 = 0;\n      uVar8 = uVar6;\n    }\n    uVar5 = uVar5 + 7;\n    local_2c = local_2c | uVar7;\n    local_28 = uVar8 | local_28;\n    if (-1 < (char)bVar1) break;\n    if (uVar5 == 0x4d) {\n      uVar4 = gettext(unaff_EBP + 0x1f49e9);\n      FUN_000654e0(uVar4);\n      iVar3 = 0xb;\nLAB_00095ad0:\n      *param_2 = iVar3;\n      return CONCAT44(local_28,local_2c);\n    }\n  }\n  if (((int)uVar5 < 0x40) && ((bVar1 & 0x40) != 0)) {\n    uVar6 = -1 << ((byte)uVar5 & 0x1f);\n    uVar8 = uVar6;\n    uVar7 = 0xffffffff;\n    if ((uVar5 & 0x20) != 0) {\n      uVar8 = 0;\n      uVar7 = uVar6;\n    }\n    local_2c = local_2c | uVar8;\n    local_28 = local_28 | uVar7;\n  }\n  goto LAB_00095ad0;\n}\n\n" (function_definition "undefined8 FUN_00095a30(int param_1,int *param_2,uint param_3)\n\n{\n  byte bVar1;\n  byte bVar2;\n  int iVar3;\n  undefined4 uVar4;\n  uint extraout_ECX;\n  uint uVar5;\n  int unaff_EBP;\n  uint uVar6;\n  uint uVar7;\n  uint uVar8;\n  undefined4 local_2c;\n  undefined4 local_28;\n  \n  FUN_000559f2();\n  local_28 = 0;\n  local_2c = param_3 & 0x7f;\n  iVar3 = 1;\n  uVar5 = extraout_ECX;\n  while( true ) {\n    bVar1 = *(byte *)(param_1 + -1 + iVar3);\n    iVar3 = iVar3 + 1;\n    bVar2 = (byte)uVar5 & 0x1f;\n    uVar6 = (bVar1 & 0x7f) << ((byte)uVar5 & 0x1f);\n    uVar7 = uVar6;\n    uVar8 = 0 << bVar2 | (bVar1 & 0x7f) >> 0x20 - bVar2;\n    if ((uVar5 & 0x20) != 0) {\n      uVar7 = 0;\n      uVar8 = uVar6;\n    }\n    uVar5 = uVar5 + 7;\n    local_2c = local_2c | uVar7;\n    local_28 = uVar8 | local_28;\n    if (-1 < (char)bVar1) break;\n    if (uVar5 == 0x4d) {\n      uVar4 = gettext(unaff_EBP + 0x1f49e9);\n      FUN_000654e0(uVar4);\n      iVar3 = 0xb;\nLAB_00095ad0:\n      *param_2 = iVar3;\n      return CONCAT44(local_28,local_2c);\n    }\n  }\n  if (((int)uVar5 < 0x40) && ((bVar1 & 0x40) != 0)) {\n    uVar6 = -1 << ((byte)uVar5 & 0x1f);\n    uVar8 = uVar6;\n    uVar7 = 0xffffffff;\n    if ((uVar5 & 0x20) != 0) {\n      uVar8 = 0;\n      uVar7 = uVar6;\n    }\n    local_2c = local_2c | uVar8;\n    local_28 = local_28 | uVar7;\n  }\n  goto LAB_00095ad0;\n}" type_identifier (function_declarator "FUN_00095a30(int param_1,int *param_2,uint param_3)" identifier (parameter_list "(int param_1,int *param_2,uint param_3)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "int *param_2" primitive_type (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "uint param_3" type_identifier identifier) ))) (compound_statement "{\n  byte bVar1;\n  byte bVar2;\n  int iVar3;\n  undefined4 uVar4;\n  uint extraout_ECX;\n  uint uVar5;\n  int unaff_EBP;\n  uint uVar6;\n  uint uVar7;\n  uint uVar8;\n  undefined4 local_2c;\n  undefined4 local_28;\n  \n  FUN_000559f2();\n  local_28 = 0;\n  local_2c = param_3 & 0x7f;\n  iVar3 = 1;\n  uVar5 = extraout_ECX;\n  while( true ) {\n    bVar1 = *(byte *)(param_1 + -1 + iVar3);\n    iVar3 = iVar3 + 1;\n    bVar2 = (byte)uVar5 & 0x1f;\n    uVar6 = (bVar1 & 0x7f) << ((byte)uVar5 & 0x1f);\n    uVar7 = uVar6;\n    uVar8 = 0 << bVar2 | (bVar1 & 0x7f) >> 0x20 - bVar2;\n    if ((uVar5 & 0x20) != 0) {\n      uVar7 = 0;\n      uVar8 = uVar6;\n    }\n    uVar5 = uVar5 + 7;\n    local_2c = local_2c | uVar7;\n    local_28 = uVar8 | local_28;\n    if (-1 < (char)bVar1) break;\n    if (uVar5 == 0x4d) {\n      uVar4 = gettext(unaff_EBP + 0x1f49e9);\n      FUN_000654e0(uVar4);\n      iVar3 = 0xb;\nLAB_00095ad0:\n      *param_2 = iVar3;\n      return CONCAT44(local_28,local_2c);\n    }\n  }\n  if (((int)uVar5 < 0x40) && ((bVar1 & 0x40) != 0)) {\n    uVar6 = -1 << ((byte)uVar5 & 0x1f);\n    uVar8 = uVar6;\n    uVar7 = 0xffffffff;\n    if ((uVar5 & 0x20) != 0) {\n      uVar8 = 0;\n      uVar7 = uVar6;\n    }\n    local_2c = local_2c | uVar8;\n    local_28 = local_28 | uVar7;\n  }\n  goto LAB_00095ad0;\n}" { (declaration "byte bVar1;" type_identifier identifier ;) (declaration "byte bVar2;" type_identifier identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "undefined4 uVar4;" type_identifier identifier ;) (declaration "uint extraout_ECX;" type_identifier identifier ;) (declaration "uint uVar5;" type_identifier identifier ;) (declaration "int unaff_EBP;" primitive_type identifier ;) (declaration "uint uVar6;" type_identifier identifier ;) (declaration "uint uVar7;" type_identifier identifier ;) (declaration "uint uVar8;" type_identifier identifier ;) (declaration "undefined4 local_2c;" type_identifier identifier ;) (declaration "undefined4 local_28;" type_identifier identifier ;) (expression_statement "FUN_000559f2();" (call_expression "FUN_000559f2()" identifier (argument_list "()" ( ))) ;) (expression_statement "local_28 = 0;" (assignment_expression "local_28 = 0" identifier = number_literal) ;) (expression_statement "local_2c = param_3 & 0x7f;" (assignment_expression "local_2c = param_3 & 0x7f" identifier = (binary_expression "param_3 & 0x7f" identifier & number_literal)) ;) (expression_statement "iVar3 = 1;" (assignment_expression "iVar3 = 1" identifier = number_literal) ;) (expression_statement "uVar5 = extraout_ECX;" (assignment_expression "uVar5 = extraout_ECX" identifier = identifier) ;) (while_statement "while( true ) {\n    bVar1 = *(byte *)(param_1 + -1 + iVar3);\n    iVar3 = iVar3 + 1;\n    bVar2 = (byte)uVar5 & 0x1f;\n    uVar6 = (bVar1 & 0x7f) << ((byte)uVar5 & 0x1f);\n    uVar7 = uVar6;\n    uVar8 = 0 << bVar2 | (bVar1 & 0x7f) >> 0x20 - bVar2;\n    if ((uVar5 & 0x20) != 0) {\n      uVar7 = 0;\n      uVar8 = uVar6;\n    }\n    uVar5 = uVar5 + 7;\n    local_2c = local_2c | uVar7;\n    local_28 = uVar8 | local_28;\n    if (-1 < (char)bVar1) break;\n    if (uVar5 == 0x4d) {\n      uVar4 = gettext(unaff_EBP + 0x1f49e9);\n      FUN_000654e0(uVar4);\n      iVar3 = 0xb;\nLAB_00095ad0:\n      *param_2 = iVar3;\n      return CONCAT44(local_28,local_2c);\n    }\n  }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n    bVar1 = *(byte *)(param_1 + -1 + iVar3);\n    iVar3 = iVar3 + 1;\n    bVar2 = (byte)uVar5 & 0x1f;\n    uVar6 = (bVar1 & 0x7f) << ((byte)uVar5 & 0x1f);\n    uVar7 = uVar6;\n    uVar8 = 0 << bVar2 | (bVar1 & 0x7f) >> 0x20 - bVar2;\n    if ((uVar5 & 0x20) != 0) {\n      uVar7 = 0;\n      uVar8 = uVar6;\n    }\n    uVar5 = uVar5 + 7;\n    local_2c = local_2c | uVar7;\n    local_28 = uVar8 | local_28;\n    if (-1 < (char)bVar1) break;\n    if (uVar5 == 0x4d) {\n      uVar4 = gettext(unaff_EBP + 0x1f49e9);\n      FUN_000654e0(uVar4);\n      iVar3 = 0xb;\nLAB_00095ad0:\n      *param_2 = iVar3;\n      return CONCAT44(local_28,local_2c);\n    }\n  }" { (expression_statement "bVar1 = *(byte *)(param_1 + -1 + iVar3);" (assignment_expression "bVar1 = *(byte *)(param_1 + -1 + iVar3)" identifier = (pointer_expression "*(byte *)(param_1 + -1 + iVar3)" * (cast_expression "(byte *)(param_1 + -1 + iVar3)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + -1 + iVar3)" ( (binary_expression "param_1 + -1 + iVar3" (binary_expression "param_1 + -1" identifier + number_literal) + identifier) ))))) ;) (expression_statement "iVar3 = iVar3 + 1;" (assignment_expression "iVar3 = iVar3 + 1" identifier = (binary_expression "iVar3 + 1" identifier + number_literal)) ;) (expression_statement "bVar2 = (byte)uVar5 & 0x1f;" (assignment_expression "bVar2 = (byte)uVar5 & 0x1f" identifier = (binary_expression "(byte)uVar5 & 0x1f" (cast_expression "(byte)uVar5" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal)) ;) (expression_statement "uVar6 = (bVar1 & 0x7f) << ((byte)uVar5 & 0x1f);" (assignment_expression "uVar6 = (bVar1 & 0x7f) << ((byte)uVar5 & 0x1f)" identifier = (binary_expression "(bVar1 & 0x7f) << ((byte)uVar5 & 0x1f)" (parenthesized_expression "(bVar1 & 0x7f)" ( (binary_expression "bVar1 & 0x7f" identifier & number_literal) )) << (parenthesized_expression "((byte)uVar5 & 0x1f)" ( (binary_expression "(byte)uVar5 & 0x1f" (cast_expression "(byte)uVar5" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) )))) ;) (expression_statement "uVar7 = uVar6;" (assignment_expression "uVar7 = uVar6" identifier = identifier) ;) (expression_statement "uVar8 = 0 << bVar2 | (bVar1 & 0x7f) >> 0x20 - bVar2;" (assignment_expression "uVar8 = 0 << bVar2 | (bVar1 & 0x7f) >> 0x20 - bVar2" identifier = (binary_expression "0 << bVar2 | (bVar1 & 0x7f) >> 0x20 - bVar2" (binary_expression "0 << bVar2" number_literal << identifier) | (binary_expression "(bVar1 & 0x7f) >> 0x20 - bVar2" (parenthesized_expression "(bVar1 & 0x7f)" ( (binary_expression "bVar1 & 0x7f" identifier & number_literal) )) >> (binary_expression "0x20 - bVar2" number_literal - identifier)))) ;) (if_statement "if ((uVar5 & 0x20) != 0) {\n      uVar7 = 0;\n      uVar8 = uVar6;\n    }" if (parenthesized_expression "((uVar5 & 0x20) != 0)" ( (binary_expression "(uVar5 & 0x20) != 0" (parenthesized_expression "(uVar5 & 0x20)" ( (binary_expression "uVar5 & 0x20" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n      uVar7 = 0;\n      uVar8 = uVar6;\n    }" { (expression_statement "uVar7 = 0;" (assignment_expression "uVar7 = 0" identifier = number_literal) ;) (expression_statement "uVar8 = uVar6;" (assignment_expression "uVar8 = uVar6" identifier = identifier) ;) })) (expression_statement "uVar5 = uVar5 + 7;" (assignment_expression "uVar5 = uVar5 + 7" identifier = (binary_expression "uVar5 + 7" identifier + number_literal)) ;) (expression_statement "local_2c = local_2c | uVar7;" (assignment_expression "local_2c = local_2c | uVar7" identifier = (binary_expression "local_2c | uVar7" identifier | identifier)) ;) (expression_statement "local_28 = uVar8 | local_28;" (assignment_expression "local_28 = uVar8 | local_28" identifier = (binary_expression "uVar8 | local_28" identifier | identifier)) ;) (if_statement "if (-1 < (char)bVar1) break;" if (parenthesized_expression "(-1 < (char)bVar1)" ( (binary_expression "-1 < (char)bVar1" number_literal < (cast_expression "(char)bVar1" ( (type_descriptor "char" primitive_type) ) identifier)) )) (break_statement "break;" break ;)) (if_statement "if (uVar5 == 0x4d) {\n      uVar4 = gettext(unaff_EBP + 0x1f49e9);\n      FUN_000654e0(uVar4);\n      iVar3 = 0xb;\nLAB_00095ad0:\n      *param_2 = iVar3;\n      return CONCAT44(local_28,local_2c);\n    }" if (parenthesized_expression "(uVar5 == 0x4d)" ( (binary_expression "uVar5 == 0x4d" identifier == number_literal) )) (compound_statement "{\n      uVar4 = gettext(unaff_EBP + 0x1f49e9);\n      FUN_000654e0(uVar4);\n      iVar3 = 0xb;\nLAB_00095ad0:\n      *param_2 = iVar3;\n      return CONCAT44(local_28,local_2c);\n    }" { (expression_statement "uVar4 = gettext(unaff_EBP + 0x1f49e9);" (assignment_expression "uVar4 = gettext(unaff_EBP + 0x1f49e9)" identifier = (call_expression "gettext(unaff_EBP + 0x1f49e9)" identifier (argument_list "(unaff_EBP + 0x1f49e9)" ( (binary_expression "unaff_EBP + 0x1f49e9" identifier + number_literal) )))) ;) (expression_statement "FUN_000654e0(uVar4);" (call_expression "FUN_000654e0(uVar4)" identifier (argument_list "(uVar4)" ( identifier ))) ;) (expression_statement "iVar3 = 0xb;" (assignment_expression "iVar3 = 0xb" identifier = number_literal) ;) (labeled_statement "LAB_00095ad0:\n      *param_2 = iVar3;" statement_identifier : (expression_statement "*param_2 = iVar3;" (assignment_expression "*param_2 = iVar3" (pointer_expression "*param_2" * identifier) = identifier) ;)) (return_statement "return CONCAT44(local_28,local_2c);" return (call_expression "CONCAT44(local_28,local_2c)" identifier (argument_list "(local_28,local_2c)" ( identifier , identifier ))) ;) })) })) (if_statement "if (((int)uVar5 < 0x40) && ((bVar1 & 0x40) != 0)) {\n    uVar6 = -1 << ((byte)uVar5 & 0x1f);\n    uVar8 = uVar6;\n    uVar7 = 0xffffffff;\n    if ((uVar5 & 0x20) != 0) {\n      uVar8 = 0;\n      uVar7 = uVar6;\n    }\n    local_2c = local_2c | uVar8;\n    local_28 = local_28 | uVar7;\n  }" if (parenthesized_expression "(((int)uVar5 < 0x40) && ((bVar1 & 0x40) != 0))" ( (binary_expression "((int)uVar5 < 0x40) && ((bVar1 & 0x40) != 0)" (parenthesized_expression "((int)uVar5 < 0x40)" ( (binary_expression "(int)uVar5 < 0x40" (cast_expression "(int)uVar5" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) && (parenthesized_expression "((bVar1 & 0x40) != 0)" ( (binary_expression "(bVar1 & 0x40) != 0" (parenthesized_expression "(bVar1 & 0x40)" ( (binary_expression "bVar1 & 0x40" identifier & number_literal) )) != number_literal) ))) )) (compound_statement "{\n    uVar6 = -1 << ((byte)uVar5 & 0x1f);\n    uVar8 = uVar6;\n    uVar7 = 0xffffffff;\n    if ((uVar5 & 0x20) != 0) {\n      uVar8 = 0;\n      uVar7 = uVar6;\n    }\n    local_2c = local_2c | uVar8;\n    local_28 = local_28 | uVar7;\n  }" { (expression_statement "uVar6 = -1 << ((byte)uVar5 & 0x1f);" (assignment_expression "uVar6 = -1 << ((byte)uVar5 & 0x1f)" identifier = (binary_expression "-1 << ((byte)uVar5 & 0x1f)" number_literal << (parenthesized_expression "((byte)uVar5 & 0x1f)" ( (binary_expression "(byte)uVar5 & 0x1f" (cast_expression "(byte)uVar5" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) )))) ;) (expression_statement "uVar8 = uVar6;" (assignment_expression "uVar8 = uVar6" identifier = identifier) ;) (expression_statement "uVar7 = 0xffffffff;" (assignment_expression "uVar7 = 0xffffffff" identifier = number_literal) ;) (if_statement "if ((uVar5 & 0x20) != 0) {\n      uVar8 = 0;\n      uVar7 = uVar6;\n    }" if (parenthesized_expression "((uVar5 & 0x20) != 0)" ( (binary_expression "(uVar5 & 0x20) != 0" (parenthesized_expression "(uVar5 & 0x20)" ( (binary_expression "uVar5 & 0x20" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n      uVar8 = 0;\n      uVar7 = uVar6;\n    }" { (expression_statement "uVar8 = 0;" (assignment_expression "uVar8 = 0" identifier = number_literal) ;) (expression_statement "uVar7 = uVar6;" (assignment_expression "uVar7 = uVar6" identifier = identifier) ;) })) (expression_statement "local_2c = local_2c | uVar8;" (assignment_expression "local_2c = local_2c | uVar8" identifier = (binary_expression "local_2c | uVar8" identifier | identifier)) ;) (expression_statement "local_28 = local_28 | uVar7;" (assignment_expression "local_28 = local_28 | uVar7" identifier = (binary_expression "local_28 | uVar7" identifier | identifier)) ;) })) (goto_statement "goto LAB_00095ad0;" goto statement_identifier ;) })))
(translation_unit "/* WARNING: Function: __x86.get_pc_thunk.bp replaced with injection: get_pc_thunk.bp */\n\nint64_t gold::read_signed_LEB_128_x(uchar *buffer,size_t *len,uchar byte)\n\n{\n  byte bVar1;\n  byte bVar2;\n  size_t sVar3;\n  char *format;\n  uint uVar4;\n  uint uVar5;\n  uint uVar6;\n  uint uVar7;\n  uint local_2c;\n  uint local_28;\n  \n  uVar4 = 7;\n  local_28 = 0;\n  local_2c = byte & 0x7f;\n  sVar3 = 1;\n  while( true ) {\n    bVar1 = buffer[sVar3 - 1];\n    sVar3 = sVar3 + 1;\n    bVar2 = (byte)uVar4 & 0x1f;\n    uVar5 = (bVar1 & 0x7f) << ((byte)uVar4 & 0x1f);\n    uVar6 = uVar5;\n    uVar7 = 0 << bVar2 | (bVar1 & 0x7f) >> 0x20 - bVar2;\n    if ((uVar4 & 0x20) != 0) {\n      uVar6 = 0;\n      uVar7 = uVar5;\n    }\n    uVar4 = uVar4 + 7;\n    local_2c = local_2c | uVar6;\n    local_28 = uVar7 | local_28;\n    if (-1 < (char)bVar1) break;\n    if (uVar4 == 0x4d) {\n      format = (char *)gettext("Unusually large LEB128 decoded, debug information may be corrupted")\n      ;\n      gold_warning(format);\n      sVar3 = 0xb;\nLAB_00095ad0:\n      *len = sVar3;\n      return CONCAT44(local_28,local_2c);\n    }\n  }\n  if (((int)uVar4 < 0x40) && ((bVar1 & 0x40) != 0)) {\n    uVar5 = -1 << ((byte)uVar4 & 0x1f);\n    uVar7 = uVar5;\n    uVar6 = 0xffffffff;\n    if ((uVar4 & 0x20) != 0) {\n      uVar7 = 0;\n      uVar6 = uVar5;\n    }\n    local_2c = local_2c | uVar7;\n    local_28 = local_28 | uVar6;\n  }\n  goto LAB_00095ad0;\n}\n\n" comment (function_definition "int64_t gold::read_signed_LEB_128_x(uchar *buffer,size_t *len,uchar byte)\n\n{\n  byte bVar1;\n  byte bVar2;\n  size_t sVar3;\n  char *format;\n  uint uVar4;\n  uint uVar5;\n  uint uVar6;\n  uint uVar7;\n  uint local_2c;\n  uint local_28;\n  \n  uVar4 = 7;\n  local_28 = 0;\n  local_2c = byte & 0x7f;\n  sVar3 = 1;\n  while( true ) {\n    bVar1 = buffer[sVar3 - 1];\n    sVar3 = sVar3 + 1;\n    bVar2 = (byte)uVar4 & 0x1f;\n    uVar5 = (bVar1 & 0x7f) << ((byte)uVar4 & 0x1f);\n    uVar6 = uVar5;\n    uVar7 = 0 << bVar2 | (bVar1 & 0x7f) >> 0x20 - bVar2;\n    if ((uVar4 & 0x20) != 0) {\n      uVar6 = 0;\n      uVar7 = uVar5;\n    }\n    uVar4 = uVar4 + 7;\n    local_2c = local_2c | uVar6;\n    local_28 = uVar7 | local_28;\n    if (-1 < (char)bVar1) break;\n    if (uVar4 == 0x4d) {\n      format = (char *)gettext("Unusually large LEB128 decoded, debug information may be corrupted")\n      ;\n      gold_warning(format);\n      sVar3 = 0xb;\nLAB_00095ad0:\n      *len = sVar3;\n      return CONCAT44(local_28,local_2c);\n    }\n  }\n  if (((int)uVar4 < 0x40) && ((bVar1 & 0x40) != 0)) {\n    uVar5 = -1 << ((byte)uVar4 & 0x1f);\n    uVar7 = uVar5;\n    uVar6 = 0xffffffff;\n    if ((uVar4 & 0x20) != 0) {\n      uVar7 = 0;\n      uVar6 = uVar5;\n    }\n    local_2c = local_2c | uVar7;\n    local_28 = local_28 | uVar6;\n  }\n  goto LAB_00095ad0;\n}" primitive_type (ERROR "gold::" identifier : :) (function_declarator "read_signed_LEB_128_x(uchar *buffer,size_t *len,uchar byte)" identifier (parameter_list "(uchar *buffer,size_t *len,uchar byte)" ( (parameter_declaration "uchar *buffer" type_identifier (pointer_declarator "*buffer" * identifier)) , (parameter_declaration "size_t *len" primitive_type (pointer_declarator "*len" * identifier)) , (parameter_declaration "uchar byte" type_identifier identifier) ))) (compound_statement "{\n  byte bVar1;\n  byte bVar2;\n  size_t sVar3;\n  char *format;\n  uint uVar4;\n  uint uVar5;\n  uint uVar6;\n  uint uVar7;\n  uint local_2c;\n  uint local_28;\n  \n  uVar4 = 7;\n  local_28 = 0;\n  local_2c = byte & 0x7f;\n  sVar3 = 1;\n  while( true ) {\n    bVar1 = buffer[sVar3 - 1];\n    sVar3 = sVar3 + 1;\n    bVar2 = (byte)uVar4 & 0x1f;\n    uVar5 = (bVar1 & 0x7f) << ((byte)uVar4 & 0x1f);\n    uVar6 = uVar5;\n    uVar7 = 0 << bVar2 | (bVar1 & 0x7f) >> 0x20 - bVar2;\n    if ((uVar4 & 0x20) != 0) {\n      uVar6 = 0;\n      uVar7 = uVar5;\n    }\n    uVar4 = uVar4 + 7;\n    local_2c = local_2c | uVar6;\n    local_28 = uVar7 | local_28;\n    if (-1 < (char)bVar1) break;\n    if (uVar4 == 0x4d) {\n      format = (char *)gettext("Unusually large LEB128 decoded, debug information may be corrupted")\n      ;\n      gold_warning(format);\n      sVar3 = 0xb;\nLAB_00095ad0:\n      *len = sVar3;\n      return CONCAT44(local_28,local_2c);\n    }\n  }\n  if (((int)uVar4 < 0x40) && ((bVar1 & 0x40) != 0)) {\n    uVar5 = -1 << ((byte)uVar4 & 0x1f);\n    uVar7 = uVar5;\n    uVar6 = 0xffffffff;\n    if ((uVar4 & 0x20) != 0) {\n      uVar7 = 0;\n      uVar6 = uVar5;\n    }\n    local_2c = local_2c | uVar7;\n    local_28 = local_28 | uVar6;\n  }\n  goto LAB_00095ad0;\n}" { (declaration "byte bVar1;" type_identifier identifier ;) (declaration "byte bVar2;" type_identifier identifier ;) (declaration "size_t sVar3;" primitive_type identifier ;) (declaration "char *format;" primitive_type (pointer_declarator "*format" * identifier) ;) (declaration "uint uVar4;" type_identifier identifier ;) (declaration "uint uVar5;" type_identifier identifier ;) (declaration "uint uVar6;" type_identifier identifier ;) (declaration "uint uVar7;" type_identifier identifier ;) (declaration "uint local_2c;" type_identifier identifier ;) (declaration "uint local_28;" type_identifier identifier ;) (expression_statement "uVar4 = 7;" (assignment_expression "uVar4 = 7" identifier = number_literal) ;) (expression_statement "local_28 = 0;" (assignment_expression "local_28 = 0" identifier = number_literal) ;) (expression_statement "local_2c = byte & 0x7f;" (assignment_expression "local_2c = byte & 0x7f" identifier = (binary_expression "byte & 0x7f" identifier & number_literal)) ;) (expression_statement "sVar3 = 1;" (assignment_expression "sVar3 = 1" identifier = number_literal) ;) (while_statement "while( true ) {\n    bVar1 = buffer[sVar3 - 1];\n    sVar3 = sVar3 + 1;\n    bVar2 = (byte)uVar4 & 0x1f;\n    uVar5 = (bVar1 & 0x7f) << ((byte)uVar4 & 0x1f);\n    uVar6 = uVar5;\n    uVar7 = 0 << bVar2 | (bVar1 & 0x7f) >> 0x20 - bVar2;\n    if ((uVar4 & 0x20) != 0) {\n      uVar6 = 0;\n      uVar7 = uVar5;\n    }\n    uVar4 = uVar4 + 7;\n    local_2c = local_2c | uVar6;\n    local_28 = uVar7 | local_28;\n    if (-1 < (char)bVar1) break;\n    if (uVar4 == 0x4d) {\n      format = (char *)gettext("Unusually large LEB128 decoded, debug information may be corrupted")\n      ;\n      gold_warning(format);\n      sVar3 = 0xb;\nLAB_00095ad0:\n      *len = sVar3;\n      return CONCAT44(local_28,local_2c);\n    }\n  }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n    bVar1 = buffer[sVar3 - 1];\n    sVar3 = sVar3 + 1;\n    bVar2 = (byte)uVar4 & 0x1f;\n    uVar5 = (bVar1 & 0x7f) << ((byte)uVar4 & 0x1f);\n    uVar6 = uVar5;\n    uVar7 = 0 << bVar2 | (bVar1 & 0x7f) >> 0x20 - bVar2;\n    if ((uVar4 & 0x20) != 0) {\n      uVar6 = 0;\n      uVar7 = uVar5;\n    }\n    uVar4 = uVar4 + 7;\n    local_2c = local_2c | uVar6;\n    local_28 = uVar7 | local_28;\n    if (-1 < (char)bVar1) break;\n    if (uVar4 == 0x4d) {\n      format = (char *)gettext("Unusually large LEB128 decoded, debug information may be corrupted")\n      ;\n      gold_warning(format);\n      sVar3 = 0xb;\nLAB_00095ad0:\n      *len = sVar3;\n      return CONCAT44(local_28,local_2c);\n    }\n  }" { (expression_statement "bVar1 = buffer[sVar3 - 1];" (assignment_expression "bVar1 = buffer[sVar3 - 1]" identifier = (subscript_expression "buffer[sVar3 - 1]" identifier [ (binary_expression "sVar3 - 1" identifier - number_literal) ])) ;) (expression_statement "sVar3 = sVar3 + 1;" (assignment_expression "sVar3 = sVar3 + 1" identifier = (binary_expression "sVar3 + 1" identifier + number_literal)) ;) (expression_statement "bVar2 = (byte)uVar4 & 0x1f;" (assignment_expression "bVar2 = (byte)uVar4 & 0x1f" identifier = (binary_expression "(byte)uVar4 & 0x1f" (cast_expression "(byte)uVar4" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal)) ;) (expression_statement "uVar5 = (bVar1 & 0x7f) << ((byte)uVar4 & 0x1f);" (assignment_expression "uVar5 = (bVar1 & 0x7f) << ((byte)uVar4 & 0x1f)" identifier = (binary_expression "(bVar1 & 0x7f) << ((byte)uVar4 & 0x1f)" (parenthesized_expression "(bVar1 & 0x7f)" ( (binary_expression "bVar1 & 0x7f" identifier & number_literal) )) << (parenthesized_expression "((byte)uVar4 & 0x1f)" ( (binary_expression "(byte)uVar4 & 0x1f" (cast_expression "(byte)uVar4" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) )))) ;) (expression_statement "uVar6 = uVar5;" (assignment_expression "uVar6 = uVar5" identifier = identifier) ;) (expression_statement "uVar7 = 0 << bVar2 | (bVar1 & 0x7f) >> 0x20 - bVar2;" (assignment_expression "uVar7 = 0 << bVar2 | (bVar1 & 0x7f) >> 0x20 - bVar2" identifier = (binary_expression "0 << bVar2 | (bVar1 & 0x7f) >> 0x20 - bVar2" (binary_expression "0 << bVar2" number_literal << identifier) | (binary_expression "(bVar1 & 0x7f) >> 0x20 - bVar2" (parenthesized_expression "(bVar1 & 0x7f)" ( (binary_expression "bVar1 & 0x7f" identifier & number_literal) )) >> (binary_expression "0x20 - bVar2" number_literal - identifier)))) ;) (if_statement "if ((uVar4 & 0x20) != 0) {\n      uVar6 = 0;\n      uVar7 = uVar5;\n    }" if (parenthesized_expression "((uVar4 & 0x20) != 0)" ( (binary_expression "(uVar4 & 0x20) != 0" (parenthesized_expression "(uVar4 & 0x20)" ( (binary_expression "uVar4 & 0x20" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n      uVar6 = 0;\n      uVar7 = uVar5;\n    }" { (expression_statement "uVar6 = 0;" (assignment_expression "uVar6 = 0" identifier = number_literal) ;) (expression_statement "uVar7 = uVar5;" (assignment_expression "uVar7 = uVar5" identifier = identifier) ;) })) (expression_statement "uVar4 = uVar4 + 7;" (assignment_expression "uVar4 = uVar4 + 7" identifier = (binary_expression "uVar4 + 7" identifier + number_literal)) ;) (expression_statement "local_2c = local_2c | uVar6;" (assignment_expression "local_2c = local_2c | uVar6" identifier = (binary_expression "local_2c | uVar6" identifier | identifier)) ;) (expression_statement "local_28 = uVar7 | local_28;" (assignment_expression "local_28 = uVar7 | local_28" identifier = (binary_expression "uVar7 | local_28" identifier | identifier)) ;) (if_statement "if (-1 < (char)bVar1) break;" if (parenthesized_expression "(-1 < (char)bVar1)" ( (binary_expression "-1 < (char)bVar1" number_literal < (cast_expression "(char)bVar1" ( (type_descriptor "char" primitive_type) ) identifier)) )) (break_statement "break;" break ;)) (if_statement "if (uVar4 == 0x4d) {\n      format = (char *)gettext("Unusually large LEB128 decoded, debug information may be corrupted")\n      ;\n      gold_warning(format);\n      sVar3 = 0xb;\nLAB_00095ad0:\n      *len = sVar3;\n      return CONCAT44(local_28,local_2c);\n    }" if (parenthesized_expression "(uVar4 == 0x4d)" ( (binary_expression "uVar4 == 0x4d" identifier == number_literal) )) (compound_statement "{\n      format = (char *)gettext("Unusually large LEB128 decoded, debug information may be corrupted")\n      ;\n      gold_warning(format);\n      sVar3 = 0xb;\nLAB_00095ad0:\n      *len = sVar3;\n      return CONCAT44(local_28,local_2c);\n    }" { (expression_statement "format = (char *)gettext("Unusually large LEB128 decoded, debug information may be corrupted")\n      ;" (assignment_expression "format = (char *)gettext("Unusually large LEB128 decoded, debug information may be corrupted")" identifier = (cast_expression "(char *)gettext("Unusually large LEB128 decoded, debug information may be corrupted")" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "gettext("Unusually large LEB128 decoded, debug information may be corrupted")" identifier (argument_list "("Unusually large LEB128 decoded, debug information may be corrupted")" ( (string_literal ""Unusually large LEB128 decoded, debug information may be corrupted"" " string_content ") ))))) ;) (expression_statement "gold_warning(format);" (call_expression "gold_warning(format)" identifier (argument_list "(format)" ( identifier ))) ;) (expression_statement "sVar3 = 0xb;" (assignment_expression "sVar3 = 0xb" identifier = number_literal) ;) (labeled_statement "LAB_00095ad0:\n      *len = sVar3;" statement_identifier : (expression_statement "*len = sVar3;" (assignment_expression "*len = sVar3" (pointer_expression "*len" * identifier) = identifier) ;)) (return_statement "return CONCAT44(local_28,local_2c);" return (call_expression "CONCAT44(local_28,local_2c)" identifier (argument_list "(local_28,local_2c)" ( identifier , identifier ))) ;) })) })) (if_statement "if (((int)uVar4 < 0x40) && ((bVar1 & 0x40) != 0)) {\n    uVar5 = -1 << ((byte)uVar4 & 0x1f);\n    uVar7 = uVar5;\n    uVar6 = 0xffffffff;\n    if ((uVar4 & 0x20) != 0) {\n      uVar7 = 0;\n      uVar6 = uVar5;\n    }\n    local_2c = local_2c | uVar7;\n    local_28 = local_28 | uVar6;\n  }" if (parenthesized_expression "(((int)uVar4 < 0x40) && ((bVar1 & 0x40) != 0))" ( (binary_expression "((int)uVar4 < 0x40) && ((bVar1 & 0x40) != 0)" (parenthesized_expression "((int)uVar4 < 0x40)" ( (binary_expression "(int)uVar4 < 0x40" (cast_expression "(int)uVar4" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) && (parenthesized_expression "((bVar1 & 0x40) != 0)" ( (binary_expression "(bVar1 & 0x40) != 0" (parenthesized_expression "(bVar1 & 0x40)" ( (binary_expression "bVar1 & 0x40" identifier & number_literal) )) != number_literal) ))) )) (compound_statement "{\n    uVar5 = -1 << ((byte)uVar4 & 0x1f);\n    uVar7 = uVar5;\n    uVar6 = 0xffffffff;\n    if ((uVar4 & 0x20) != 0) {\n      uVar7 = 0;\n      uVar6 = uVar5;\n    }\n    local_2c = local_2c | uVar7;\n    local_28 = local_28 | uVar6;\n  }" { (expression_statement "uVar5 = -1 << ((byte)uVar4 & 0x1f);" (assignment_expression "uVar5 = -1 << ((byte)uVar4 & 0x1f)" identifier = (binary_expression "-1 << ((byte)uVar4 & 0x1f)" number_literal << (parenthesized_expression "((byte)uVar4 & 0x1f)" ( (binary_expression "(byte)uVar4 & 0x1f" (cast_expression "(byte)uVar4" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) )))) ;) (expression_statement "uVar7 = uVar5;" (assignment_expression "uVar7 = uVar5" identifier = identifier) ;) (expression_statement "uVar6 = 0xffffffff;" (assignment_expression "uVar6 = 0xffffffff" identifier = number_literal) ;) (if_statement "if ((uVar4 & 0x20) != 0) {\n      uVar7 = 0;\n      uVar6 = uVar5;\n    }" if (parenthesized_expression "((uVar4 & 0x20) != 0)" ( (binary_expression "(uVar4 & 0x20) != 0" (parenthesized_expression "(uVar4 & 0x20)" ( (binary_expression "uVar4 & 0x20" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n      uVar7 = 0;\n      uVar6 = uVar5;\n    }" { (expression_statement "uVar7 = 0;" (assignment_expression "uVar7 = 0" identifier = number_literal) ;) (expression_statement "uVar6 = uVar5;" (assignment_expression "uVar6 = uVar5" identifier = identifier) ;) })) (expression_statement "local_2c = local_2c | uVar7;" (assignment_expression "local_2c = local_2c | uVar7" identifier = (binary_expression "local_2c | uVar7" identifier | identifier)) ;) (expression_statement "local_28 = local_28 | uVar6;" (assignment_expression "local_28 = local_28 | uVar6" identifier = (binary_expression "local_28 | uVar6" identifier | identifier)) ;) })) (goto_statement "goto LAB_00095ad0;" goto statement_identifier ;) })))
(translation_unit "undefined8 FUN_00095a30(int param_1,int *param_2,uint param_3)\n\n{\n  byte bVar1;\n  byte bVar2;\n  int iVar3;\n  undefined4 uVar4;\n  uint extraout_ECX;\n  uint uVar5;\n  int unaff_EBP;\n  uint uVar6;\n  uint uVar7;\n  uint uVar8;\n  undefined4 local_2c;\n  undefined4 local_28;\n  \n  FUN_000559f2();\n  local_28 = 0;\n  local_2c = param_3 & 0x7f;\n  iVar3 = 1;\n  uVar5 = extraout_ECX;\n  while( true ) {\n    bVar1 = *(byte *)(param_1 + -1 + iVar3);\n    iVar3 = iVar3 + 1;\n    bVar2 = (byte)uVar5 & 0x1f;\n    uVar6 = (bVar1 & 0x7f) << ((byte)uVar5 & 0x1f);\n    uVar7 = uVar6;\n    uVar8 = 0 << bVar2 | (bVar1 & 0x7f) >> 0x20 - bVar2;\n    if ((uVar5 & 0x20) != 0) {\n      uVar7 = 0;\n      uVar8 = uVar6;\n    }\n    uVar5 = uVar5 + 7;\n    local_2c = local_2c | uVar7;\n    local_28 = uVar8 | local_28;\n    if (-1 < (char)bVar1) break;\n    if (uVar5 == 0x4d) {\n      uVar4 = gettext(unaff_EBP + 0x1f49e9);\n      FUN_000654e0(uVar4);\n      iVar3 = 0xb;\nLAB_00095ad0:\n      *param_2 = iVar3;\n      return CONCAT44(local_28,local_2c);\n    }\n  }\n  if (((int)uVar5 < 0x40) && ((bVar1 & 0x40) != 0)) {\n    uVar6 = -1 << ((byte)uVar5 & 0x1f);\n    uVar8 = uVar6;\n    uVar7 = 0xffffffff;\n    if ((uVar5 & 0x20) != 0) {\n      uVar8 = 0;\n      uVar7 = uVar6;\n    }\n    local_2c = local_2c | uVar8;\n    local_28 = local_28 | uVar7;\n  }\n  goto LAB_00095ad0;\n}\n\n" (function_definition "undefined8 FUN_00095a30(int param_1,int *param_2,uint param_3)\n\n{\n  byte bVar1;\n  byte bVar2;\n  int iVar3;\n  undefined4 uVar4;\n  uint extraout_ECX;\n  uint uVar5;\n  int unaff_EBP;\n  uint uVar6;\n  uint uVar7;\n  uint uVar8;\n  undefined4 local_2c;\n  undefined4 local_28;\n  \n  FUN_000559f2();\n  local_28 = 0;\n  local_2c = param_3 & 0x7f;\n  iVar3 = 1;\n  uVar5 = extraout_ECX;\n  while( true ) {\n    bVar1 = *(byte *)(param_1 + -1 + iVar3);\n    iVar3 = iVar3 + 1;\n    bVar2 = (byte)uVar5 & 0x1f;\n    uVar6 = (bVar1 & 0x7f) << ((byte)uVar5 & 0x1f);\n    uVar7 = uVar6;\n    uVar8 = 0 << bVar2 | (bVar1 & 0x7f) >> 0x20 - bVar2;\n    if ((uVar5 & 0x20) != 0) {\n      uVar7 = 0;\n      uVar8 = uVar6;\n    }\n    uVar5 = uVar5 + 7;\n    local_2c = local_2c | uVar7;\n    local_28 = uVar8 | local_28;\n    if (-1 < (char)bVar1) break;\n    if (uVar5 == 0x4d) {\n      uVar4 = gettext(unaff_EBP + 0x1f49e9);\n      FUN_000654e0(uVar4);\n      iVar3 = 0xb;\nLAB_00095ad0:\n      *param_2 = iVar3;\n      return CONCAT44(local_28,local_2c);\n    }\n  }\n  if (((int)uVar5 < 0x40) && ((bVar1 & 0x40) != 0)) {\n    uVar6 = -1 << ((byte)uVar5 & 0x1f);\n    uVar8 = uVar6;\n    uVar7 = 0xffffffff;\n    if ((uVar5 & 0x20) != 0) {\n      uVar8 = 0;\n      uVar7 = uVar6;\n    }\n    local_2c = local_2c | uVar8;\n    local_28 = local_28 | uVar7;\n  }\n  goto LAB_00095ad0;\n}" type_identifier (function_declarator "FUN_00095a30(int param_1,int *param_2,uint param_3)" identifier (parameter_list "(int param_1,int *param_2,uint param_3)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "int *param_2" primitive_type (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "uint param_3" type_identifier identifier) ))) (compound_statement "{\n  byte bVar1;\n  byte bVar2;\n  int iVar3;\n  undefined4 uVar4;\n  uint extraout_ECX;\n  uint uVar5;\n  int unaff_EBP;\n  uint uVar6;\n  uint uVar7;\n  uint uVar8;\n  undefined4 local_2c;\n  undefined4 local_28;\n  \n  FUN_000559f2();\n  local_28 = 0;\n  local_2c = param_3 & 0x7f;\n  iVar3 = 1;\n  uVar5 = extraout_ECX;\n  while( true ) {\n    bVar1 = *(byte *)(param_1 + -1 + iVar3);\n    iVar3 = iVar3 + 1;\n    bVar2 = (byte)uVar5 & 0x1f;\n    uVar6 = (bVar1 & 0x7f) << ((byte)uVar5 & 0x1f);\n    uVar7 = uVar6;\n    uVar8 = 0 << bVar2 | (bVar1 & 0x7f) >> 0x20 - bVar2;\n    if ((uVar5 & 0x20) != 0) {\n      uVar7 = 0;\n      uVar8 = uVar6;\n    }\n    uVar5 = uVar5 + 7;\n    local_2c = local_2c | uVar7;\n    local_28 = uVar8 | local_28;\n    if (-1 < (char)bVar1) break;\n    if (uVar5 == 0x4d) {\n      uVar4 = gettext(unaff_EBP + 0x1f49e9);\n      FUN_000654e0(uVar4);\n      iVar3 = 0xb;\nLAB_00095ad0:\n      *param_2 = iVar3;\n      return CONCAT44(local_28,local_2c);\n    }\n  }\n  if (((int)uVar5 < 0x40) && ((bVar1 & 0x40) != 0)) {\n    uVar6 = -1 << ((byte)uVar5 & 0x1f);\n    uVar8 = uVar6;\n    uVar7 = 0xffffffff;\n    if ((uVar5 & 0x20) != 0) {\n      uVar8 = 0;\n      uVar7 = uVar6;\n    }\n    local_2c = local_2c | uVar8;\n    local_28 = local_28 | uVar7;\n  }\n  goto LAB_00095ad0;\n}" { (declaration "byte bVar1;" type_identifier identifier ;) (declaration "byte bVar2;" type_identifier identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "undefined4 uVar4;" type_identifier identifier ;) (declaration "uint extraout_ECX;" type_identifier identifier ;) (declaration "uint uVar5;" type_identifier identifier ;) (declaration "int unaff_EBP;" primitive_type identifier ;) (declaration "uint uVar6;" type_identifier identifier ;) (declaration "uint uVar7;" type_identifier identifier ;) (declaration "uint uVar8;" type_identifier identifier ;) (declaration "undefined4 local_2c;" type_identifier identifier ;) (declaration "undefined4 local_28;" type_identifier identifier ;) (expression_statement "FUN_000559f2();" (call_expression "FUN_000559f2()" identifier (argument_list "()" ( ))) ;) (expression_statement "local_28 = 0;" (assignment_expression "local_28 = 0" identifier = number_literal) ;) (expression_statement "local_2c = param_3 & 0x7f;" (assignment_expression "local_2c = param_3 & 0x7f" identifier = (binary_expression "param_3 & 0x7f" identifier & number_literal)) ;) (expression_statement "iVar3 = 1;" (assignment_expression "iVar3 = 1" identifier = number_literal) ;) (expression_statement "uVar5 = extraout_ECX;" (assignment_expression "uVar5 = extraout_ECX" identifier = identifier) ;) (while_statement "while( true ) {\n    bVar1 = *(byte *)(param_1 + -1 + iVar3);\n    iVar3 = iVar3 + 1;\n    bVar2 = (byte)uVar5 & 0x1f;\n    uVar6 = (bVar1 & 0x7f) << ((byte)uVar5 & 0x1f);\n    uVar7 = uVar6;\n    uVar8 = 0 << bVar2 | (bVar1 & 0x7f) >> 0x20 - bVar2;\n    if ((uVar5 & 0x20) != 0) {\n      uVar7 = 0;\n      uVar8 = uVar6;\n    }\n    uVar5 = uVar5 + 7;\n    local_2c = local_2c | uVar7;\n    local_28 = uVar8 | local_28;\n    if (-1 < (char)bVar1) break;\n    if (uVar5 == 0x4d) {\n      uVar4 = gettext(unaff_EBP + 0x1f49e9);\n      FUN_000654e0(uVar4);\n      iVar3 = 0xb;\nLAB_00095ad0:\n      *param_2 = iVar3;\n      return CONCAT44(local_28,local_2c);\n    }\n  }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n    bVar1 = *(byte *)(param_1 + -1 + iVar3);\n    iVar3 = iVar3 + 1;\n    bVar2 = (byte)uVar5 & 0x1f;\n    uVar6 = (bVar1 & 0x7f) << ((byte)uVar5 & 0x1f);\n    uVar7 = uVar6;\n    uVar8 = 0 << bVar2 | (bVar1 & 0x7f) >> 0x20 - bVar2;\n    if ((uVar5 & 0x20) != 0) {\n      uVar7 = 0;\n      uVar8 = uVar6;\n    }\n    uVar5 = uVar5 + 7;\n    local_2c = local_2c | uVar7;\n    local_28 = uVar8 | local_28;\n    if (-1 < (char)bVar1) break;\n    if (uVar5 == 0x4d) {\n      uVar4 = gettext(unaff_EBP + 0x1f49e9);\n      FUN_000654e0(uVar4);\n      iVar3 = 0xb;\nLAB_00095ad0:\n      *param_2 = iVar3;\n      return CONCAT44(local_28,local_2c);\n    }\n  }" { (expression_statement "bVar1 = *(byte *)(param_1 + -1 + iVar3);" (assignment_expression "bVar1 = *(byte *)(param_1 + -1 + iVar3)" identifier = (pointer_expression "*(byte *)(param_1 + -1 + iVar3)" * (cast_expression "(byte *)(param_1 + -1 + iVar3)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + -1 + iVar3)" ( (binary_expression "param_1 + -1 + iVar3" (binary_expression "param_1 + -1" identifier + number_literal) + identifier) ))))) ;) (expression_statement "iVar3 = iVar3 + 1;" (assignment_expression "iVar3 = iVar3 + 1" identifier = (binary_expression "iVar3 + 1" identifier + number_literal)) ;) (expression_statement "bVar2 = (byte)uVar5 & 0x1f;" (assignment_expression "bVar2 = (byte)uVar5 & 0x1f" identifier = (binary_expression "(byte)uVar5 & 0x1f" (cast_expression "(byte)uVar5" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal)) ;) (expression_statement "uVar6 = (bVar1 & 0x7f) << ((byte)uVar5 & 0x1f);" (assignment_expression "uVar6 = (bVar1 & 0x7f) << ((byte)uVar5 & 0x1f)" identifier = (binary_expression "(bVar1 & 0x7f) << ((byte)uVar5 & 0x1f)" (parenthesized_expression "(bVar1 & 0x7f)" ( (binary_expression "bVar1 & 0x7f" identifier & number_literal) )) << (parenthesized_expression "((byte)uVar5 & 0x1f)" ( (binary_expression "(byte)uVar5 & 0x1f" (cast_expression "(byte)uVar5" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) )))) ;) (expression_statement "uVar7 = uVar6;" (assignment_expression "uVar7 = uVar6" identifier = identifier) ;) (expression_statement "uVar8 = 0 << bVar2 | (bVar1 & 0x7f) >> 0x20 - bVar2;" (assignment_expression "uVar8 = 0 << bVar2 | (bVar1 & 0x7f) >> 0x20 - bVar2" identifier = (binary_expression "0 << bVar2 | (bVar1 & 0x7f) >> 0x20 - bVar2" (binary_expression "0 << bVar2" number_literal << identifier) | (binary_expression "(bVar1 & 0x7f) >> 0x20 - bVar2" (parenthesized_expression "(bVar1 & 0x7f)" ( (binary_expression "bVar1 & 0x7f" identifier & number_literal) )) >> (binary_expression "0x20 - bVar2" number_literal - identifier)))) ;) (if_statement "if ((uVar5 & 0x20) != 0) {\n      uVar7 = 0;\n      uVar8 = uVar6;\n    }" if (parenthesized_expression "((uVar5 & 0x20) != 0)" ( (binary_expression "(uVar5 & 0x20) != 0" (parenthesized_expression "(uVar5 & 0x20)" ( (binary_expression "uVar5 & 0x20" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n      uVar7 = 0;\n      uVar8 = uVar6;\n    }" { (expression_statement "uVar7 = 0;" (assignment_expression "uVar7 = 0" identifier = number_literal) ;) (expression_statement "uVar8 = uVar6;" (assignment_expression "uVar8 = uVar6" identifier = identifier) ;) })) (expression_statement "uVar5 = uVar5 + 7;" (assignment_expression "uVar5 = uVar5 + 7" identifier = (binary_expression "uVar5 + 7" identifier + number_literal)) ;) (expression_statement "local_2c = local_2c | uVar7;" (assignment_expression "local_2c = local_2c | uVar7" identifier = (binary_expression "local_2c | uVar7" identifier | identifier)) ;) (expression_statement "local_28 = uVar8 | local_28;" (assignment_expression "local_28 = uVar8 | local_28" identifier = (binary_expression "uVar8 | local_28" identifier | identifier)) ;) (if_statement "if (-1 < (char)bVar1) break;" if (parenthesized_expression "(-1 < (char)bVar1)" ( (binary_expression "-1 < (char)bVar1" number_literal < (cast_expression "(char)bVar1" ( (type_descriptor "char" primitive_type) ) identifier)) )) (break_statement "break;" break ;)) (if_statement "if (uVar5 == 0x4d) {\n      uVar4 = gettext(unaff_EBP + 0x1f49e9);\n      FUN_000654e0(uVar4);\n      iVar3 = 0xb;\nLAB_00095ad0:\n      *param_2 = iVar3;\n      return CONCAT44(local_28,local_2c);\n    }" if (parenthesized_expression "(uVar5 == 0x4d)" ( (binary_expression "uVar5 == 0x4d" identifier == number_literal) )) (compound_statement "{\n      uVar4 = gettext(unaff_EBP + 0x1f49e9);\n      FUN_000654e0(uVar4);\n      iVar3 = 0xb;\nLAB_00095ad0:\n      *param_2 = iVar3;\n      return CONCAT44(local_28,local_2c);\n    }" { (expression_statement "uVar4 = gettext(unaff_EBP + 0x1f49e9);" (assignment_expression "uVar4 = gettext(unaff_EBP + 0x1f49e9)" identifier = (call_expression "gettext(unaff_EBP + 0x1f49e9)" identifier (argument_list "(unaff_EBP + 0x1f49e9)" ( (binary_expression "unaff_EBP + 0x1f49e9" identifier + number_literal) )))) ;) (expression_statement "FUN_000654e0(uVar4);" (call_expression "FUN_000654e0(uVar4)" identifier (argument_list "(uVar4)" ( identifier ))) ;) (expression_statement "iVar3 = 0xb;" (assignment_expression "iVar3 = 0xb" identifier = number_literal) ;) (labeled_statement "LAB_00095ad0:\n      *param_2 = iVar3;" statement_identifier : (expression_statement "*param_2 = iVar3;" (assignment_expression "*param_2 = iVar3" (pointer_expression "*param_2" * identifier) = identifier) ;)) (return_statement "return CONCAT44(local_28,local_2c);" return (call_expression "CONCAT44(local_28,local_2c)" identifier (argument_list "(local_28,local_2c)" ( identifier , identifier ))) ;) })) })) (if_statement "if (((int)uVar5 < 0x40) && ((bVar1 & 0x40) != 0)) {\n    uVar6 = -1 << ((byte)uVar5 & 0x1f);\n    uVar8 = uVar6;\n    uVar7 = 0xffffffff;\n    if ((uVar5 & 0x20) != 0) {\n      uVar8 = 0;\n      uVar7 = uVar6;\n    }\n    local_2c = local_2c | uVar8;\n    local_28 = local_28 | uVar7;\n  }" if (parenthesized_expression "(((int)uVar5 < 0x40) && ((bVar1 & 0x40) != 0))" ( (binary_expression "((int)uVar5 < 0x40) && ((bVar1 & 0x40) != 0)" (parenthesized_expression "((int)uVar5 < 0x40)" ( (binary_expression "(int)uVar5 < 0x40" (cast_expression "(int)uVar5" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) && (parenthesized_expression "((bVar1 & 0x40) != 0)" ( (binary_expression "(bVar1 & 0x40) != 0" (parenthesized_expression "(bVar1 & 0x40)" ( (binary_expression "bVar1 & 0x40" identifier & number_literal) )) != number_literal) ))) )) (compound_statement "{\n    uVar6 = -1 << ((byte)uVar5 & 0x1f);\n    uVar8 = uVar6;\n    uVar7 = 0xffffffff;\n    if ((uVar5 & 0x20) != 0) {\n      uVar8 = 0;\n      uVar7 = uVar6;\n    }\n    local_2c = local_2c | uVar8;\n    local_28 = local_28 | uVar7;\n  }" { (expression_statement "uVar6 = -1 << ((byte)uVar5 & 0x1f);" (assignment_expression "uVar6 = -1 << ((byte)uVar5 & 0x1f)" identifier = (binary_expression "-1 << ((byte)uVar5 & 0x1f)" number_literal << (parenthesized_expression "((byte)uVar5 & 0x1f)" ( (binary_expression "(byte)uVar5 & 0x1f" (cast_expression "(byte)uVar5" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) )))) ;) (expression_statement "uVar8 = uVar6;" (assignment_expression "uVar8 = uVar6" identifier = identifier) ;) (expression_statement "uVar7 = 0xffffffff;" (assignment_expression "uVar7 = 0xffffffff" identifier = number_literal) ;) (if_statement "if ((uVar5 & 0x20) != 0) {\n      uVar8 = 0;\n      uVar7 = uVar6;\n    }" if (parenthesized_expression "((uVar5 & 0x20) != 0)" ( (binary_expression "(uVar5 & 0x20) != 0" (parenthesized_expression "(uVar5 & 0x20)" ( (binary_expression "uVar5 & 0x20" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n      uVar8 = 0;\n      uVar7 = uVar6;\n    }" { (expression_statement "uVar8 = 0;" (assignment_expression "uVar8 = 0" identifier = number_literal) ;) (expression_statement "uVar7 = uVar6;" (assignment_expression "uVar7 = uVar6" identifier = identifier) ;) })) (expression_statement "local_2c = local_2c | uVar8;" (assignment_expression "local_2c = local_2c | uVar8" identifier = (binary_expression "local_2c | uVar8" identifier | identifier)) ;) (expression_statement "local_28 = local_28 | uVar7;" (assignment_expression "local_28 = local_28 | uVar7" identifier = (binary_expression "local_28 | uVar7" identifier | identifier)) ;) })) (goto_statement "goto LAB_00095ad0;" goto statement_identifier ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE 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 ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT & LIT)) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (while_statement while (parenthesized_expression ( BOOL )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) + IDENT) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) & LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) << (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) & LIT) )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression LIT << IDENT) | (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) >> (binary_expression LIT - IDENT)))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT | IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT | IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) (break_statement break ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) )))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;)) (return_statement return (call_expression IDENT (argument_list ( IDENT , IDENT ))) ;) })) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < LIT) )) && (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) != LIT) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression LIT << (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) & LIT) )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT | IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT | IDENT)) ;) })) (goto_statement goto statement_identifier ;) })))
(function_definition "undefined8 FUN_00095a30(int param_1,int *param_2,uint param_3)\n\n{\n  byte bVar1;\n  byte bVar2;\n  int iVar3;\n  undefined4 uVar4;\n  uint extraout_ECX;\n  uint uVar5;\n  int unaff_EBP;\n  uint uVar6;\n  uint uVar7;\n  uint uVar8;\n  undefined4 local_2c;\n  undefined4 local_28;\n  \n  FUN_000559f2();\n  local_28 = 0;\n  local_2c = param_3 & 0x7f;\n  iVar3 = 1;\n  uVar5 = extraout_ECX;\n  while( true ) {\n    bVar1 = *(byte *)(param_1 + -1 + iVar3);\n    iVar3 = iVar3 + 1;\n    bVar2 = (byte)uVar5 & 0x1f;\n    uVar6 = (bVar1 & 0x7f) << ((byte)uVar5 & 0x1f);\n    uVar7 = uVar6;\n    uVar8 = 0 << bVar2 | (bVar1 & 0x7f) >> 0x20 - bVar2;\n    if ((uVar5 & 0x20) != 0) {\n      uVar7 = 0;\n      uVar8 = uVar6;\n    }\n    uVar5 = uVar5 + 7;\n    local_2c = local_2c | uVar7;\n    local_28 = uVar8 | local_28;\n    if (-1 < (char)bVar1) break;\n    if (uVar5 == 0x4d) {\n      uVar4 = gettext(unaff_EBP + 0x1f49e9);\n      FUN_000654e0(uVar4);\n      iVar3 = 0xb;\nLAB_00095ad0:\n      *param_2 = iVar3;\n      return CONCAT44(local_28,local_2c);\n    }\n  }\n  if (((int)uVar5 < 0x40) && ((bVar1 & 0x40) != 0)) {\n    uVar6 = -1 << ((byte)uVar5 & 0x1f);\n    uVar8 = uVar6;\n    uVar7 = 0xffffffff;\n    if ((uVar5 & 0x20) != 0) {\n      uVar8 = 0;\n      uVar7 = uVar6;\n    }\n    local_2c = local_2c | uVar8;\n    local_28 = local_28 | uVar7;\n  }\n  goto LAB_00095ad0;\n}" (type_identifier "undefined8") (function_declarator "FUN_00095a30(int param_1,int *param_2,uint param_3)" (identifier "FUN_00095a30") (parameter_list "(int param_1,int *param_2,uint param_3)" (( "(") (parameter_declaration "int param_1" (primitive_type "int") (identifier "param_1")) (, ",") (parameter_declaration "int *param_2" (primitive_type "int") (pointer_declarator "*param_2" (* "*") (identifier "param_2"))) (, ",") (parameter_declaration "uint param_3" (type_identifier "uint") (identifier "param_3")) () ")"))) (compound_statement "{\n  byte bVar1;\n  byte bVar2;\n  int iVar3;\n  undefined4 uVar4;\n  uint extraout_ECX;\n  uint uVar5;\n  int unaff_EBP;\n  uint uVar6;\n  uint uVar7;\n  uint uVar8;\n  undefined4 local_2c;\n  undefined4 local_28;\n  \n  FUN_000559f2();\n  local_28 = 0;\n  local_2c = param_3 & 0x7f;\n  iVar3 = 1;\n  uVar5 = extraout_ECX;\n  while( true ) {\n    bVar1 = *(byte *)(param_1 + -1 + iVar3);\n    iVar3 = iVar3 + 1;\n    bVar2 = (byte)uVar5 & 0x1f;\n    uVar6 = (bVar1 & 0x7f) << ((byte)uVar5 & 0x1f);\n    uVar7 = uVar6;\n    uVar8 = 0 << bVar2 | (bVar1 & 0x7f) >> 0x20 - bVar2;\n    if ((uVar5 & 0x20) != 0) {\n      uVar7 = 0;\n      uVar8 = uVar6;\n    }\n    uVar5 = uVar5 + 7;\n    local_2c = local_2c | uVar7;\n    local_28 = uVar8 | local_28;\n    if (-1 < (char)bVar1) break;\n    if (uVar5 == 0x4d) {\n      uVar4 = gettext(unaff_EBP + 0x1f49e9);\n      FUN_000654e0(uVar4);\n      iVar3 = 0xb;\nLAB_00095ad0:\n      *param_2 = iVar3;\n      return CONCAT44(local_28,local_2c);\n    }\n  }\n  if (((int)uVar5 < 0x40) && ((bVar1 & 0x40) != 0)) {\n    uVar6 = -1 << ((byte)uVar5 & 0x1f);\n    uVar8 = uVar6;\n    uVar7 = 0xffffffff;\n    if ((uVar5 & 0x20) != 0) {\n      uVar8 = 0;\n      uVar7 = uVar6;\n    }\n    local_2c = local_2c | uVar8;\n    local_28 = local_28 | uVar7;\n  }\n  goto LAB_00095ad0;\n}" ({ "{") (declaration "byte bVar1;" (type_identifier "byte") (identifier "bVar1") (; ";")) (declaration "byte bVar2;" (type_identifier "byte") (identifier "bVar2") (; ";")) (declaration "int iVar3;" (primitive_type "int") (identifier "iVar3") (; ";")) (declaration "undefined4 uVar4;" (type_identifier "undefined4") (identifier "uVar4") (; ";")) (declaration "uint extraout_ECX;" (type_identifier "uint") (identifier "extraout_ECX") (; ";")) (declaration "uint uVar5;" (type_identifier "uint") (identifier "uVar5") (; ";")) (declaration "int unaff_EBP;" (primitive_type "int") (identifier "unaff_EBP") (; ";")) (declaration "uint uVar6;" (type_identifier "uint") (identifier "uVar6") (; ";")) (declaration "uint uVar7;" (type_identifier "uint") (identifier "uVar7") (; ";")) (declaration "uint uVar8;" (type_identifier "uint") (identifier "uVar8") (; ";")) (declaration "undefined4 local_2c;" (type_identifier "undefined4") (identifier "local_2c") (; ";")) (declaration "undefined4 local_28;" (type_identifier "undefined4") (identifier "local_28") (; ";")) (expression_statement "FUN_000559f2();" (call_expression "FUN_000559f2()" (identifier "FUN_000559f2") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "local_28 = 0;" (assignment_expression "local_28 = 0" (identifier "local_28") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_2c = param_3 & 0x7f;" (assignment_expression "local_2c = param_3 & 0x7f" (identifier "local_2c") (= "=") (binary_expression "param_3 & 0x7f" (identifier "param_3") (& "&") (number_literal "0x7f"))) (; ";")) (expression_statement "iVar3 = 1;" (assignment_expression "iVar3 = 1" (identifier "iVar3") (= "=") (number_literal "1")) (; ";")) (expression_statement "uVar5 = extraout_ECX;" (assignment_expression "uVar5 = extraout_ECX" (identifier "uVar5") (= "=") (identifier "extraout_ECX")) (; ";")) (while_statement "while( true ) {\n    bVar1 = *(byte *)(param_1 + -1 + iVar3);\n    iVar3 = iVar3 + 1;\n    bVar2 = (byte)uVar5 & 0x1f;\n    uVar6 = (bVar1 & 0x7f) << ((byte)uVar5 & 0x1f);\n    uVar7 = uVar6;\n    uVar8 = 0 << bVar2 | (bVar1 & 0x7f) >> 0x20 - bVar2;\n    if ((uVar5 & 0x20) != 0) {\n      uVar7 = 0;\n      uVar8 = uVar6;\n    }\n    uVar5 = uVar5 + 7;\n    local_2c = local_2c | uVar7;\n    local_28 = uVar8 | local_28;\n    if (-1 < (char)bVar1) break;\n    if (uVar5 == 0x4d) {\n      uVar4 = gettext(unaff_EBP + 0x1f49e9);\n      FUN_000654e0(uVar4);\n      iVar3 = 0xb;\nLAB_00095ad0:\n      *param_2 = iVar3;\n      return CONCAT44(local_28,local_2c);\n    }\n  }" (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (compound_statement "{\n    bVar1 = *(byte *)(param_1 + -1 + iVar3);\n    iVar3 = iVar3 + 1;\n    bVar2 = (byte)uVar5 & 0x1f;\n    uVar6 = (bVar1 & 0x7f) << ((byte)uVar5 & 0x1f);\n    uVar7 = uVar6;\n    uVar8 = 0 << bVar2 | (bVar1 & 0x7f) >> 0x20 - bVar2;\n    if ((uVar5 & 0x20) != 0) {\n      uVar7 = 0;\n      uVar8 = uVar6;\n    }\n    uVar5 = uVar5 + 7;\n    local_2c = local_2c | uVar7;\n    local_28 = uVar8 | local_28;\n    if (-1 < (char)bVar1) break;\n    if (uVar5 == 0x4d) {\n      uVar4 = gettext(unaff_EBP + 0x1f49e9);\n      FUN_000654e0(uVar4);\n      iVar3 = 0xb;\nLAB_00095ad0:\n      *param_2 = iVar3;\n      return CONCAT44(local_28,local_2c);\n    }\n  }" ({ "{") (expression_statement "bVar1 = *(byte *)(param_1 + -1 + iVar3);" (assignment_expression "bVar1 = *(byte *)(param_1 + -1 + iVar3)" (identifier "bVar1") (= "=") (pointer_expression "*(byte *)(param_1 + -1 + iVar3)" (* "*") (cast_expression "(byte *)(param_1 + -1 + iVar3)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + -1 + iVar3)" (( "(") (binary_expression "param_1 + -1 + iVar3" (binary_expression "param_1 + -1" (identifier "param_1") (+ "+") (number_literal "-1")) (+ "+") (identifier "iVar3")) () ")"))))) (; ";")) (expression_statement "iVar3 = iVar3 + 1;" (assignment_expression "iVar3 = iVar3 + 1" (identifier "iVar3") (= "=") (binary_expression "iVar3 + 1" (identifier "iVar3") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "bVar2 = (byte)uVar5 & 0x1f;" (assignment_expression "bVar2 = (byte)uVar5 & 0x1f" (identifier "bVar2") (= "=") (binary_expression "(byte)uVar5 & 0x1f" (cast_expression "(byte)uVar5" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "uVar5")) (& "&") (number_literal "0x1f"))) (; ";")) (expression_statement "uVar6 = (bVar1 & 0x7f) << ((byte)uVar5 & 0x1f);" (assignment_expression "uVar6 = (bVar1 & 0x7f) << ((byte)uVar5 & 0x1f)" (identifier "uVar6") (= "=") (binary_expression "(bVar1 & 0x7f) << ((byte)uVar5 & 0x1f)" (parenthesized_expression "(bVar1 & 0x7f)" (( "(") (binary_expression "bVar1 & 0x7f" (identifier "bVar1") (& "&") (number_literal "0x7f")) () ")")) (<< "<<") (parenthesized_expression "((byte)uVar5 & 0x1f)" (( "(") (binary_expression "(byte)uVar5 & 0x1f" (cast_expression "(byte)uVar5" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "uVar5")) (& "&") (number_literal "0x1f")) () ")")))) (; ";")) (expression_statement "uVar7 = uVar6;" (assignment_expression "uVar7 = uVar6" (identifier "uVar7") (= "=") (identifier "uVar6")) (; ";")) (expression_statement "uVar8 = 0 << bVar2 | (bVar1 & 0x7f) >> 0x20 - bVar2;" (assignment_expression "uVar8 = 0 << bVar2 | (bVar1 & 0x7f) >> 0x20 - bVar2" (identifier "uVar8") (= "=") (binary_expression "0 << bVar2 | (bVar1 & 0x7f) >> 0x20 - bVar2" (binary_expression "0 << bVar2" (number_literal "0") (<< "<<") (identifier "bVar2")) (| "|") (binary_expression "(bVar1 & 0x7f) >> 0x20 - bVar2" (parenthesized_expression "(bVar1 & 0x7f)" (( "(") (binary_expression "bVar1 & 0x7f" (identifier "bVar1") (& "&") (number_literal "0x7f")) () ")")) (>> ">>") (binary_expression "0x20 - bVar2" (number_literal "0x20") (- "-") (identifier "bVar2"))))) (; ";")) (if_statement "if ((uVar5 & 0x20) != 0) {\n      uVar7 = 0;\n      uVar8 = uVar6;\n    }" (if "if") (parenthesized_expression "((uVar5 & 0x20) != 0)" (( "(") (binary_expression "(uVar5 & 0x20) != 0" (parenthesized_expression "(uVar5 & 0x20)" (( "(") (binary_expression "uVar5 & 0x20" (identifier "uVar5") (& "&") (number_literal "0x20")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      uVar7 = 0;\n      uVar8 = uVar6;\n    }" ({ "{") (expression_statement "uVar7 = 0;" (assignment_expression "uVar7 = 0" (identifier "uVar7") (= "=") (number_literal "0")) (; ";")) (expression_statement "uVar8 = uVar6;" (assignment_expression "uVar8 = uVar6" (identifier "uVar8") (= "=") (identifier "uVar6")) (; ";")) (} "}"))) (expression_statement "uVar5 = uVar5 + 7;" (assignment_expression "uVar5 = uVar5 + 7" (identifier "uVar5") (= "=") (binary_expression "uVar5 + 7" (identifier "uVar5") (+ "+") (number_literal "7"))) (; ";")) (expression_statement "local_2c = local_2c | uVar7;" (assignment_expression "local_2c = local_2c | uVar7" (identifier "local_2c") (= "=") (binary_expression "local_2c | uVar7" (identifier "local_2c") (| "|") (identifier "uVar7"))) (; ";")) (expression_statement "local_28 = uVar8 | local_28;" (assignment_expression "local_28 = uVar8 | local_28" (identifier "local_28") (= "=") (binary_expression "uVar8 | local_28" (identifier "uVar8") (| "|") (identifier "local_28"))) (; ";")) (if_statement "if (-1 < (char)bVar1) break;" (if "if") (parenthesized_expression "(-1 < (char)bVar1)" (( "(") (binary_expression "-1 < (char)bVar1" (number_literal "-1") (< "<") (cast_expression "(char)bVar1" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (identifier "bVar1"))) () ")")) (break_statement "break;" (break "break") (; ";"))) (if_statement "if (uVar5 == 0x4d) {\n      uVar4 = gettext(unaff_EBP + 0x1f49e9);\n      FUN_000654e0(uVar4);\n      iVar3 = 0xb;\nLAB_00095ad0:\n      *param_2 = iVar3;\n      return CONCAT44(local_28,local_2c);\n    }" (if "if") (parenthesized_expression "(uVar5 == 0x4d)" (( "(") (binary_expression "uVar5 == 0x4d" (identifier "uVar5") (== "==") (number_literal "0x4d")) () ")")) (compound_statement "{\n      uVar4 = gettext(unaff_EBP + 0x1f49e9);\n      FUN_000654e0(uVar4);\n      iVar3 = 0xb;\nLAB_00095ad0:\n      *param_2 = iVar3;\n      return CONCAT44(local_28,local_2c);\n    }" ({ "{") (expression_statement "uVar4 = gettext(unaff_EBP + 0x1f49e9);" (assignment_expression "uVar4 = gettext(unaff_EBP + 0x1f49e9)" (identifier "uVar4") (= "=") (call_expression "gettext(unaff_EBP + 0x1f49e9)" (identifier "gettext") (argument_list "(unaff_EBP + 0x1f49e9)" (( "(") (binary_expression "unaff_EBP + 0x1f49e9" (identifier "unaff_EBP") (+ "+") (number_literal "0x1f49e9")) () ")")))) (; ";")) (expression_statement "FUN_000654e0(uVar4);" (call_expression "FUN_000654e0(uVar4)" (identifier "FUN_000654e0") (argument_list "(uVar4)" (( "(") (identifier "uVar4") () ")"))) (; ";")) (expression_statement "iVar3 = 0xb;" (assignment_expression "iVar3 = 0xb" (identifier "iVar3") (= "=") (number_literal "0xb")) (; ";")) (labeled_statement "LAB_00095ad0:\n      *param_2 = iVar3;" (statement_identifier "LAB_00095ad0") (: ":") (expression_statement "*param_2 = iVar3;" (assignment_expression "*param_2 = iVar3" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (= "=") (identifier "iVar3")) (; ";"))) (return_statement "return CONCAT44(local_28,local_2c);" (return "return") (call_expression "CONCAT44(local_28,local_2c)" (identifier "CONCAT44") (argument_list "(local_28,local_2c)" (( "(") (identifier "local_28") (, ",") (identifier "local_2c") () ")"))) (; ";")) (} "}"))) (} "}"))) (if_statement "if (((int)uVar5 < 0x40) && ((bVar1 & 0x40) != 0)) {\n    uVar6 = -1 << ((byte)uVar5 & 0x1f);\n    uVar8 = uVar6;\n    uVar7 = 0xffffffff;\n    if ((uVar5 & 0x20) != 0) {\n      uVar8 = 0;\n      uVar7 = uVar6;\n    }\n    local_2c = local_2c | uVar8;\n    local_28 = local_28 | uVar7;\n  }" (if "if") (parenthesized_expression "(((int)uVar5 < 0x40) && ((bVar1 & 0x40) != 0))" (( "(") (binary_expression "((int)uVar5 < 0x40) && ((bVar1 & 0x40) != 0)" (parenthesized_expression "((int)uVar5 < 0x40)" (( "(") (binary_expression "(int)uVar5 < 0x40" (cast_expression "(int)uVar5" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar5")) (< "<") (number_literal "0x40")) () ")")) (&& "&&") (parenthesized_expression "((bVar1 & 0x40) != 0)" (( "(") (binary_expression "(bVar1 & 0x40) != 0" (parenthesized_expression "(bVar1 & 0x40)" (( "(") (binary_expression "bVar1 & 0x40" (identifier "bVar1") (& "&") (number_literal "0x40")) () ")")) (!= "!=") (number_literal "0")) () ")"))) () ")")) (compound_statement "{\n    uVar6 = -1 << ((byte)uVar5 & 0x1f);\n    uVar8 = uVar6;\n    uVar7 = 0xffffffff;\n    if ((uVar5 & 0x20) != 0) {\n      uVar8 = 0;\n      uVar7 = uVar6;\n    }\n    local_2c = local_2c | uVar8;\n    local_28 = local_28 | uVar7;\n  }" ({ "{") (expression_statement "uVar6 = -1 << ((byte)uVar5 & 0x1f);" (assignment_expression "uVar6 = -1 << ((byte)uVar5 & 0x1f)" (identifier "uVar6") (= "=") (binary_expression "-1 << ((byte)uVar5 & 0x1f)" (number_literal "-1") (<< "<<") (parenthesized_expression "((byte)uVar5 & 0x1f)" (( "(") (binary_expression "(byte)uVar5 & 0x1f" (cast_expression "(byte)uVar5" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "uVar5")) (& "&") (number_literal "0x1f")) () ")")))) (; ";")) (expression_statement "uVar8 = uVar6;" (assignment_expression "uVar8 = uVar6" (identifier "uVar8") (= "=") (identifier "uVar6")) (; ";")) (expression_statement "uVar7 = 0xffffffff;" (assignment_expression "uVar7 = 0xffffffff" (identifier "uVar7") (= "=") (number_literal "0xffffffff")) (; ";")) (if_statement "if ((uVar5 & 0x20) != 0) {\n      uVar8 = 0;\n      uVar7 = uVar6;\n    }" (if "if") (parenthesized_expression "((uVar5 & 0x20) != 0)" (( "(") (binary_expression "(uVar5 & 0x20) != 0" (parenthesized_expression "(uVar5 & 0x20)" (( "(") (binary_expression "uVar5 & 0x20" (identifier "uVar5") (& "&") (number_literal "0x20")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      uVar8 = 0;\n      uVar7 = uVar6;\n    }" ({ "{") (expression_statement "uVar8 = 0;" (assignment_expression "uVar8 = 0" (identifier "uVar8") (= "=") (number_literal "0")) (; ";")) (expression_statement "uVar7 = uVar6;" (assignment_expression "uVar7 = uVar6" (identifier "uVar7") (= "=") (identifier "uVar6")) (; ";")) (} "}"))) (expression_statement "local_2c = local_2c | uVar8;" (assignment_expression "local_2c = local_2c | uVar8" (identifier "local_2c") (= "=") (binary_expression "local_2c | uVar8" (identifier "local_2c") (| "|") (identifier "uVar8"))) (; ";")) (expression_statement "local_28 = local_28 | uVar7;" (assignment_expression "local_28 = local_28 | uVar7" (identifier "local_28") (= "=") (binary_expression "local_28 | uVar7" (identifier "local_28") (| "|") (identifier "uVar7"))) (; ";")) (} "}"))) (goto_statement "goto LAB_00095ad0;" (goto "goto") (statement_identifier "LAB_00095ad0") (; ";")) (} "}")))

/* WARNING: Function: __x86.get_pc_thunk.bp replaced with injection: get_pc_thunk.bp */

int64_t gold::function_1(type_1 *buffer,size_t *len,type_1 type_2)

{
  type_2 var_2;
  type_2 var_3;
  size_t var_1;
  char *format;
  type_3 var_4;
  type_3 uVar5;
  type_3 var_6;
  type_3 var_7;
  type_3 var_5;
  type_3 var_8;
  
  var_4 = 7;
  var_8 = 0;
  var_5 = type_2 & 0x7f;
  var_1 = 1;
  while( true ) {
    var_2 = buffer[var_1 - 1];
    var_1 = var_1 + 1;
    var_3 = (type_2)var_4 & 0x1f;
    uVar5 = (var_2 & 0x7f) << ((type_2)var_4 & 0x1f);
    var_6 = uVar5;
    var_7 = 0 << var_3 | (var_2 & 0x7f) >> 0x20 - var_3;
    if ((var_4 & 0x20) != 0) {
      var_6 = 0;
      var_7 = uVar5;
    }
    var_4 = var_4 + 7;
    var_5 = var_5 | var_6;
    var_8 = var_7 | var_8;
    if (-1 < (char)var_2) break;
    if (var_4 == 0x4d) {
      format = (char *)var_9("Unusually large LEB128 decoded, debug information may be corrupted")
      ;
      var_10(format);
      var_1 = 0xb;
LAB_00095ad0:
      *len = var_1;
      return var_11(var_8,var_5);
    }
  }
  if (((int)var_4 < 0x40) && ((var_2 & 0x40) != 0)) {
    uVar5 = -1 << ((type_2)var_4 & 0x1f);
    var_7 = uVar5;
    var_6 = 0xffffffff;
    if ((var_4 & 0x20) != 0) {
      var_7 = 0;
      var_6 = uVar5;
    }
    var_5 = var_5 | var_7;
    var_8 = var_8 | var_6;
  }
  goto LAB_00095ad0;
}


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

undefined8 MASKED(int param_1,int *param_2,uint param_3)

{
  byte bVar1;
  byte bVar2;
  int iVar3;
  undefined4 uVar4;
  uint extraout_ECX;
  uint uVar5;
  int unaff_EBP;
  uint uVar6;
  uint uVar7;
  uint uVar8;
  undefined4 local_2c;
  undefined4 local_28;
  
  FUN_000559f2();
  local_28 = 0;
  local_2c = param_3 & 0x7f;
  iVar3 = 1;
  uVar5 = extraout_ECX;
  while( true ) {
    bVar1 = *(byte *)(param_1 + -1 + iVar3);
    iVar3 = iVar3 + 1;
    bVar2 = (byte)uVar5 & 0x1f;
    uVar6 = (bVar1 & 0x7f) << ((byte)uVar5 & 0x1f);
    uVar7 = uVar6;
    uVar8 = 0 << bVar2 | (bVar1 & 0x7f) >> 0x20 - bVar2;
    if ((uVar5 & 0x20) != 0) {
      uVar7 = 0;
      uVar8 = uVar6;
    }
    uVar5 = uVar5 + 7;
    local_2c = local_2c | uVar7;
    local_28 = uVar8 | local_28;
    if (-1 < (char)bVar1) break;
    if (uVar5 == 0x4d) {
      uVar4 = gettext(unaff_EBP + 0x1f49e9);
      FUN_000654e0(uVar4);
      iVar3 = 0xb;
LAB_00095ad0:
      *param_2 = iVar3;
      return CONCAT44(local_28,local_2c);
    }
  }
  if (((int)uVar5 < 0x40) && ((bVar1 & 0x40) != 0)) {
    uVar6 = -1 << ((byte)uVar5 & 0x1f);
    uVar8 = uVar6;
    uVar7 = 0xffffffff;
    if ((uVar5 & 0x20) != 0) {
      uVar8 = 0;
      uVar7 = uVar6;
    }
    local_2c = local_2c | uVar8;
    local_28 = local_28 | uVar7;
  }
  goto LAB_00095ad0;
}

