
/* WARNING: Function: __x86.get_pc_thunk.dx replaced with injection: get_pc_thunk_dx */

LogEst __regparm3 estLog(LogEst N)

{
  byte bVar1;
  uint uVar2;
  uint uVar3;
  uint uVar4;
  
  uVar2 = (uint)N;
  uVar4 = (int)uVar2 >> 0x1f;
  if ((int)uVar2 < 0) {
    uVar3 = 0x1f;
    if ((int)uVar2 < 0) {
      for (; uVar4 >> uVar3 == 0; uVar3 = uVar3 - 1) {
      }
    }
    uVar3 = uVar3 ^ 0x1f;
  }
  else {
    uVar3 = 0x1f;
    if (uVar2 != 0) {
      for (; uVar2 >> uVar3 == 0; uVar3 = uVar3 - 1) {
      }
    }
    uVar3 = (uVar3 ^ 0x1f) + 0x20;
  }
  uVar3 = 0x3c - uVar3;
  bVar1 = (byte)uVar3 & 0x1f;
  uVar2 = uVar2 >> bVar1 | uVar4 << 0x20 - bVar1;
  if ((uVar3 & 0x20) != 0) {
    uVar2 = uVar4 >> ((byte)uVar3 & 0x1f);
  }
  return *(short *)(a_15215 + (uVar2 & 7) * 2) + -3 + (short)uVar3 * 10;
}



/* WARNING: Function: __i686.get_pc_thunk.dx replaced with injection: get_pc_thunk_dx */

int __regparm3 FUN_00038680(short param_1)

{
  byte bVar1;
  uint uVar2;
  uint uVar3;
  uint uVar4;
  
  uVar2 = (uint)param_1;
  uVar4 = (int)uVar2 >> 0x1f;
  if ((int)uVar2 < 0) {
    uVar3 = 0x1f;
    if ((int)uVar2 < 0) {
      for (; uVar4 >> uVar3 == 0; uVar3 = uVar3 - 1) {
      }
    }
    uVar3 = uVar3 ^ 0x1f;
  }
  else {
    uVar3 = 0x1f;
    if (uVar2 != 0) {
      for (; uVar2 >> uVar3 == 0; uVar3 = uVar3 - 1) {
      }
    }
    uVar3 = (uVar3 ^ 0x1f) + 0x20;
  }
  uVar3 = 0x3c - uVar3;
  bVar1 = (byte)uVar3 & 0x1f;
  uVar2 = uVar2 >> bVar1 | uVar4 << 0x20 - bVar1;
  if ((uVar3 & 0x20) != 0) {
    uVar2 = uVar4 >> ((byte)uVar3 & 0x1f);
  }
  return (*(ushort *)(&DAT_000fed80 + (uVar2 & 7) * 2) - 3) + uVar3 * 10;
}


CALL 0x00014e55
ADD EDX,0x11284f
CWDE
PUSH EDI
MOV EDI,EAX
PUSH ESI
MOV ESI,EAX
SAR EDI,0x1f
JZ 0x000386c8
BSR EAX,EDI
XOR EAX,0x1f
MOV ECX,0x3c
SUB ECX,EAX
SHRD ESI,EDI,CL
SHR EDI,CL
TEST CL,0x20
LEA ECX,[ECX + ECX*0x4]
CMOVNZ ESI,EDI
AND ESI,0x7
MOVZX EAX,word ptr [EDX + ESI*0x2 + 0xfffb3eac]
POP ESI
POP EDI
LEA EAX,[EAX + ECX*0x2 + -0x3]
RET
BSR EAX,EAX
XOR EAX,0x1f
ADD EAX,0x20
JMP 0x0003869d
(translation_unit "/* WARNING: Function: __i686.get_pc_thunk.dx replaced with injection: get_pc_thunk_dx */\n\nint __regparm3 FUN_00038680(short param_1)\n\n{\n  byte bVar1;\n  uint uVar2;\n  uint uVar3;\n  uint uVar4;\n  \n  uVar2 = (uint)param_1;\n  uVar4 = (int)uVar2 >> 0x1f;\n  if ((int)uVar2 < 0) {\n    uVar3 = 0x1f;\n    if ((int)uVar2 < 0) {\n      for (; uVar4 >> uVar3 == 0; uVar3 = uVar3 - 1) {\n      }\n    }\n    uVar3 = uVar3 ^ 0x1f;\n  }\n  else {\n    uVar3 = 0x1f;\n    if (uVar2 != 0) {\n      for (; uVar2 >> uVar3 == 0; uVar3 = uVar3 - 1) {\n      }\n    }\n    uVar3 = (uVar3 ^ 0x1f) + 0x20;\n  }\n  uVar3 = 0x3c - uVar3;\n  bVar1 = (byte)uVar3 & 0x1f;\n  uVar2 = uVar2 >> bVar1 | uVar4 << 0x20 - bVar1;\n  if ((uVar3 & 0x20) != 0) {\n    uVar2 = uVar4 >> ((byte)uVar3 & 0x1f);\n  }\n  return (*(ushort *)(&DAT_000fed80 + (uVar2 & 7) * 2) - 3) + uVar3 * 10;\n}\n\n" comment (function_definition "int __regparm3 FUN_00038680(short param_1)\n\n{\n  byte bVar1;\n  uint uVar2;\n  uint uVar3;\n  uint uVar4;\n  \n  uVar2 = (uint)param_1;\n  uVar4 = (int)uVar2 >> 0x1f;\n  if ((int)uVar2 < 0) {\n    uVar3 = 0x1f;\n    if ((int)uVar2 < 0) {\n      for (; uVar4 >> uVar3 == 0; uVar3 = uVar3 - 1) {\n      }\n    }\n    uVar3 = uVar3 ^ 0x1f;\n  }\n  else {\n    uVar3 = 0x1f;\n    if (uVar2 != 0) {\n      for (; uVar2 >> uVar3 == 0; uVar3 = uVar3 - 1) {\n      }\n    }\n    uVar3 = (uVar3 ^ 0x1f) + 0x20;\n  }\n  uVar3 = 0x3c - uVar3;\n  bVar1 = (byte)uVar3 & 0x1f;\n  uVar2 = uVar2 >> bVar1 | uVar4 << 0x20 - bVar1;\n  if ((uVar3 & 0x20) != 0) {\n    uVar2 = uVar4 >> ((byte)uVar3 & 0x1f);\n  }\n  return (*(ushort *)(&DAT_000fed80 + (uVar2 & 7) * 2) - 3) + uVar3 * 10;\n}" primitive_type (ERROR "__regparm3" identifier) (function_declarator "FUN_00038680(short param_1)" identifier (parameter_list "(short param_1)" ( (parameter_declaration "short param_1" (sized_type_specifier "short" short) identifier) ))) (compound_statement "{\n  byte bVar1;\n  uint uVar2;\n  uint uVar3;\n  uint uVar4;\n  \n  uVar2 = (uint)param_1;\n  uVar4 = (int)uVar2 >> 0x1f;\n  if ((int)uVar2 < 0) {\n    uVar3 = 0x1f;\n    if ((int)uVar2 < 0) {\n      for (; uVar4 >> uVar3 == 0; uVar3 = uVar3 - 1) {\n      }\n    }\n    uVar3 = uVar3 ^ 0x1f;\n  }\n  else {\n    uVar3 = 0x1f;\n    if (uVar2 != 0) {\n      for (; uVar2 >> uVar3 == 0; uVar3 = uVar3 - 1) {\n      }\n    }\n    uVar3 = (uVar3 ^ 0x1f) + 0x20;\n  }\n  uVar3 = 0x3c - uVar3;\n  bVar1 = (byte)uVar3 & 0x1f;\n  uVar2 = uVar2 >> bVar1 | uVar4 << 0x20 - bVar1;\n  if ((uVar3 & 0x20) != 0) {\n    uVar2 = uVar4 >> ((byte)uVar3 & 0x1f);\n  }\n  return (*(ushort *)(&DAT_000fed80 + (uVar2 & 7) * 2) - 3) + uVar3 * 10;\n}" { (declaration "byte bVar1;" type_identifier identifier ;) (declaration "uint uVar2;" type_identifier identifier ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "uint uVar4;" type_identifier identifier ;) (expression_statement "uVar2 = (uint)param_1;" (assignment_expression "uVar2 = (uint)param_1" identifier = (cast_expression "(uint)param_1" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "uVar4 = (int)uVar2 >> 0x1f;" (assignment_expression "uVar4 = (int)uVar2 >> 0x1f" identifier = (binary_expression "(int)uVar2 >> 0x1f" (cast_expression "(int)uVar2" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal)) ;) (if_statement "if ((int)uVar2 < 0) {\n    uVar3 = 0x1f;\n    if ((int)uVar2 < 0) {\n      for (; uVar4 >> uVar3 == 0; uVar3 = uVar3 - 1) {\n      }\n    }\n    uVar3 = uVar3 ^ 0x1f;\n  }\n  else {\n    uVar3 = 0x1f;\n    if (uVar2 != 0) {\n      for (; uVar2 >> uVar3 == 0; uVar3 = uVar3 - 1) {\n      }\n    }\n    uVar3 = (uVar3 ^ 0x1f) + 0x20;\n  }" if (parenthesized_expression "((int)uVar2 < 0)" ( (binary_expression "(int)uVar2 < 0" (cast_expression "(int)uVar2" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n    uVar3 = 0x1f;\n    if ((int)uVar2 < 0) {\n      for (; uVar4 >> uVar3 == 0; uVar3 = uVar3 - 1) {\n      }\n    }\n    uVar3 = uVar3 ^ 0x1f;\n  }" { (expression_statement "uVar3 = 0x1f;" (assignment_expression "uVar3 = 0x1f" identifier = number_literal) ;) (if_statement "if ((int)uVar2 < 0) {\n      for (; uVar4 >> uVar3 == 0; uVar3 = uVar3 - 1) {\n      }\n    }" if (parenthesized_expression "((int)uVar2 < 0)" ( (binary_expression "(int)uVar2 < 0" (cast_expression "(int)uVar2" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n      for (; uVar4 >> uVar3 == 0; uVar3 = uVar3 - 1) {\n      }\n    }" { (for_statement "for (; uVar4 >> uVar3 == 0; uVar3 = uVar3 - 1) {\n      }" for ( ; (binary_expression "uVar4 >> uVar3 == 0" (binary_expression "uVar4 >> uVar3" identifier >> identifier) == number_literal) ; (assignment_expression "uVar3 = uVar3 - 1" identifier = (binary_expression "uVar3 - 1" identifier - number_literal)) ) (compound_statement "{\n      }" { })) })) (expression_statement "uVar3 = uVar3 ^ 0x1f;" (assignment_expression "uVar3 = uVar3 ^ 0x1f" identifier = (binary_expression "uVar3 ^ 0x1f" identifier ^ number_literal)) ;) }) (else_clause "else {\n    uVar3 = 0x1f;\n    if (uVar2 != 0) {\n      for (; uVar2 >> uVar3 == 0; uVar3 = uVar3 - 1) {\n      }\n    }\n    uVar3 = (uVar3 ^ 0x1f) + 0x20;\n  }" else (compound_statement "{\n    uVar3 = 0x1f;\n    if (uVar2 != 0) {\n      for (; uVar2 >> uVar3 == 0; uVar3 = uVar3 - 1) {\n      }\n    }\n    uVar3 = (uVar3 ^ 0x1f) + 0x20;\n  }" { (expression_statement "uVar3 = 0x1f;" (assignment_expression "uVar3 = 0x1f" identifier = number_literal) ;) (if_statement "if (uVar2 != 0) {\n      for (; uVar2 >> uVar3 == 0; uVar3 = uVar3 - 1) {\n      }\n    }" if (parenthesized_expression "(uVar2 != 0)" ( (binary_expression "uVar2 != 0" identifier != number_literal) )) (compound_statement "{\n      for (; uVar2 >> uVar3 == 0; uVar3 = uVar3 - 1) {\n      }\n    }" { (for_statement "for (; uVar2 >> uVar3 == 0; uVar3 = uVar3 - 1) {\n      }" for ( ; (binary_expression "uVar2 >> uVar3 == 0" (binary_expression "uVar2 >> uVar3" identifier >> identifier) == number_literal) ; (assignment_expression "uVar3 = uVar3 - 1" identifier = (binary_expression "uVar3 - 1" identifier - number_literal)) ) (compound_statement "{\n      }" { })) })) (expression_statement "uVar3 = (uVar3 ^ 0x1f) + 0x20;" (assignment_expression "uVar3 = (uVar3 ^ 0x1f) + 0x20" identifier = (binary_expression "(uVar3 ^ 0x1f) + 0x20" (parenthesized_expression "(uVar3 ^ 0x1f)" ( (binary_expression "uVar3 ^ 0x1f" identifier ^ number_literal) )) + number_literal)) ;) }))) (expression_statement "uVar3 = 0x3c - uVar3;" (assignment_expression "uVar3 = 0x3c - uVar3" identifier = (binary_expression "0x3c - uVar3" number_literal - identifier)) ;) (expression_statement "bVar1 = (byte)uVar3 & 0x1f;" (assignment_expression "bVar1 = (byte)uVar3 & 0x1f" identifier = (binary_expression "(byte)uVar3 & 0x1f" (cast_expression "(byte)uVar3" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal)) ;) (expression_statement "uVar2 = uVar2 >> bVar1 | uVar4 << 0x20 - bVar1;" (assignment_expression "uVar2 = uVar2 >> bVar1 | uVar4 << 0x20 - bVar1" identifier = (binary_expression "uVar2 >> bVar1 | uVar4 << 0x20 - bVar1" (binary_expression "uVar2 >> bVar1" identifier >> identifier) | (binary_expression "uVar4 << 0x20 - bVar1" identifier << (binary_expression "0x20 - bVar1" number_literal - identifier)))) ;) (if_statement "if ((uVar3 & 0x20) != 0) {\n    uVar2 = uVar4 >> ((byte)uVar3 & 0x1f);\n  }" if (parenthesized_expression "((uVar3 & 0x20) != 0)" ( (binary_expression "(uVar3 & 0x20) != 0" (parenthesized_expression "(uVar3 & 0x20)" ( (binary_expression "uVar3 & 0x20" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n    uVar2 = uVar4 >> ((byte)uVar3 & 0x1f);\n  }" { (expression_statement "uVar2 = uVar4 >> ((byte)uVar3 & 0x1f);" (assignment_expression "uVar2 = uVar4 >> ((byte)uVar3 & 0x1f)" identifier = (binary_expression "uVar4 >> ((byte)uVar3 & 0x1f)" identifier >> (parenthesized_expression "((byte)uVar3 & 0x1f)" ( (binary_expression "(byte)uVar3 & 0x1f" (cast_expression "(byte)uVar3" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) )))) ;) })) (return_statement "return (*(ushort *)(&DAT_000fed80 + (uVar2 & 7) * 2) - 3) + uVar3 * 10;" return (binary_expression "(*(ushort *)(&DAT_000fed80 + (uVar2 & 7) * 2) - 3) + uVar3 * 10" (parenthesized_expression "(*(ushort *)(&DAT_000fed80 + (uVar2 & 7) * 2) - 3)" ( (binary_expression "*(ushort *)(&DAT_000fed80 + (uVar2 & 7) * 2) - 3" (pointer_expression "*(ushort *)(&DAT_000fed80 + (uVar2 & 7) * 2)" * (cast_expression "(ushort *)(&DAT_000fed80 + (uVar2 & 7) * 2)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&DAT_000fed80 + (uVar2 & 7) * 2)" ( (binary_expression "&DAT_000fed80 + (uVar2 & 7) * 2" (pointer_expression "&DAT_000fed80" & identifier) + (binary_expression "(uVar2 & 7) * 2" (parenthesized_expression "(uVar2 & 7)" ( (binary_expression "uVar2 & 7" identifier & number_literal) )) * number_literal)) )))) - number_literal) )) + (binary_expression "uVar3 * 10" identifier * number_literal)) ;) })))
(translation_unit "/* WARNING: Function: __x86.get_pc_thunk.dx replaced with injection: get_pc_thunk_dx */\n\nLogEst __regparm3 estLog(LogEst N)\n\n{\n  byte bVar1;\n  uint uVar2;\n  uint uVar3;\n  uint uVar4;\n  \n  uVar2 = (uint)N;\n  uVar4 = (int)uVar2 >> 0x1f;\n  if ((int)uVar2 < 0) {\n    uVar3 = 0x1f;\n    if ((int)uVar2 < 0) {\n      for (; uVar4 >> uVar3 == 0; uVar3 = uVar3 - 1) {\n      }\n    }\n    uVar3 = uVar3 ^ 0x1f;\n  }\n  else {\n    uVar3 = 0x1f;\n    if (uVar2 != 0) {\n      for (; uVar2 >> uVar3 == 0; uVar3 = uVar3 - 1) {\n      }\n    }\n    uVar3 = (uVar3 ^ 0x1f) + 0x20;\n  }\n  uVar3 = 0x3c - uVar3;\n  bVar1 = (byte)uVar3 & 0x1f;\n  uVar2 = uVar2 >> bVar1 | uVar4 << 0x20 - bVar1;\n  if ((uVar3 & 0x20) != 0) {\n    uVar2 = uVar4 >> ((byte)uVar3 & 0x1f);\n  }\n  return *(short *)(a_15215 + (uVar2 & 7) * 2) + -3 + (short)uVar3 * 10;\n}\n\n" comment (function_definition "LogEst __regparm3 estLog(LogEst N)\n\n{\n  byte bVar1;\n  uint uVar2;\n  uint uVar3;\n  uint uVar4;\n  \n  uVar2 = (uint)N;\n  uVar4 = (int)uVar2 >> 0x1f;\n  if ((int)uVar2 < 0) {\n    uVar3 = 0x1f;\n    if ((int)uVar2 < 0) {\n      for (; uVar4 >> uVar3 == 0; uVar3 = uVar3 - 1) {\n      }\n    }\n    uVar3 = uVar3 ^ 0x1f;\n  }\n  else {\n    uVar3 = 0x1f;\n    if (uVar2 != 0) {\n      for (; uVar2 >> uVar3 == 0; uVar3 = uVar3 - 1) {\n      }\n    }\n    uVar3 = (uVar3 ^ 0x1f) + 0x20;\n  }\n  uVar3 = 0x3c - uVar3;\n  bVar1 = (byte)uVar3 & 0x1f;\n  uVar2 = uVar2 >> bVar1 | uVar4 << 0x20 - bVar1;\n  if ((uVar3 & 0x20) != 0) {\n    uVar2 = uVar4 >> ((byte)uVar3 & 0x1f);\n  }\n  return *(short *)(a_15215 + (uVar2 & 7) * 2) + -3 + (short)uVar3 * 10;\n}" type_identifier (ERROR "__regparm3" identifier) (function_declarator "estLog(LogEst N)" identifier (parameter_list "(LogEst N)" ( (parameter_declaration "LogEst N" type_identifier identifier) ))) (compound_statement "{\n  byte bVar1;\n  uint uVar2;\n  uint uVar3;\n  uint uVar4;\n  \n  uVar2 = (uint)N;\n  uVar4 = (int)uVar2 >> 0x1f;\n  if ((int)uVar2 < 0) {\n    uVar3 = 0x1f;\n    if ((int)uVar2 < 0) {\n      for (; uVar4 >> uVar3 == 0; uVar3 = uVar3 - 1) {\n      }\n    }\n    uVar3 = uVar3 ^ 0x1f;\n  }\n  else {\n    uVar3 = 0x1f;\n    if (uVar2 != 0) {\n      for (; uVar2 >> uVar3 == 0; uVar3 = uVar3 - 1) {\n      }\n    }\n    uVar3 = (uVar3 ^ 0x1f) + 0x20;\n  }\n  uVar3 = 0x3c - uVar3;\n  bVar1 = (byte)uVar3 & 0x1f;\n  uVar2 = uVar2 >> bVar1 | uVar4 << 0x20 - bVar1;\n  if ((uVar3 & 0x20) != 0) {\n    uVar2 = uVar4 >> ((byte)uVar3 & 0x1f);\n  }\n  return *(short *)(a_15215 + (uVar2 & 7) * 2) + -3 + (short)uVar3 * 10;\n}" { (declaration "byte bVar1;" type_identifier identifier ;) (declaration "uint uVar2;" type_identifier identifier ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "uint uVar4;" type_identifier identifier ;) (expression_statement "uVar2 = (uint)N;" (assignment_expression "uVar2 = (uint)N" identifier = (cast_expression "(uint)N" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "uVar4 = (int)uVar2 >> 0x1f;" (assignment_expression "uVar4 = (int)uVar2 >> 0x1f" identifier = (binary_expression "(int)uVar2 >> 0x1f" (cast_expression "(int)uVar2" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal)) ;) (if_statement "if ((int)uVar2 < 0) {\n    uVar3 = 0x1f;\n    if ((int)uVar2 < 0) {\n      for (; uVar4 >> uVar3 == 0; uVar3 = uVar3 - 1) {\n      }\n    }\n    uVar3 = uVar3 ^ 0x1f;\n  }\n  else {\n    uVar3 = 0x1f;\n    if (uVar2 != 0) {\n      for (; uVar2 >> uVar3 == 0; uVar3 = uVar3 - 1) {\n      }\n    }\n    uVar3 = (uVar3 ^ 0x1f) + 0x20;\n  }" if (parenthesized_expression "((int)uVar2 < 0)" ( (binary_expression "(int)uVar2 < 0" (cast_expression "(int)uVar2" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n    uVar3 = 0x1f;\n    if ((int)uVar2 < 0) {\n      for (; uVar4 >> uVar3 == 0; uVar3 = uVar3 - 1) {\n      }\n    }\n    uVar3 = uVar3 ^ 0x1f;\n  }" { (expression_statement "uVar3 = 0x1f;" (assignment_expression "uVar3 = 0x1f" identifier = number_literal) ;) (if_statement "if ((int)uVar2 < 0) {\n      for (; uVar4 >> uVar3 == 0; uVar3 = uVar3 - 1) {\n      }\n    }" if (parenthesized_expression "((int)uVar2 < 0)" ( (binary_expression "(int)uVar2 < 0" (cast_expression "(int)uVar2" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n      for (; uVar4 >> uVar3 == 0; uVar3 = uVar3 - 1) {\n      }\n    }" { (for_statement "for (; uVar4 >> uVar3 == 0; uVar3 = uVar3 - 1) {\n      }" for ( ; (binary_expression "uVar4 >> uVar3 == 0" (binary_expression "uVar4 >> uVar3" identifier >> identifier) == number_literal) ; (assignment_expression "uVar3 = uVar3 - 1" identifier = (binary_expression "uVar3 - 1" identifier - number_literal)) ) (compound_statement "{\n      }" { })) })) (expression_statement "uVar3 = uVar3 ^ 0x1f;" (assignment_expression "uVar3 = uVar3 ^ 0x1f" identifier = (binary_expression "uVar3 ^ 0x1f" identifier ^ number_literal)) ;) }) (else_clause "else {\n    uVar3 = 0x1f;\n    if (uVar2 != 0) {\n      for (; uVar2 >> uVar3 == 0; uVar3 = uVar3 - 1) {\n      }\n    }\n    uVar3 = (uVar3 ^ 0x1f) + 0x20;\n  }" else (compound_statement "{\n    uVar3 = 0x1f;\n    if (uVar2 != 0) {\n      for (; uVar2 >> uVar3 == 0; uVar3 = uVar3 - 1) {\n      }\n    }\n    uVar3 = (uVar3 ^ 0x1f) + 0x20;\n  }" { (expression_statement "uVar3 = 0x1f;" (assignment_expression "uVar3 = 0x1f" identifier = number_literal) ;) (if_statement "if (uVar2 != 0) {\n      for (; uVar2 >> uVar3 == 0; uVar3 = uVar3 - 1) {\n      }\n    }" if (parenthesized_expression "(uVar2 != 0)" ( (binary_expression "uVar2 != 0" identifier != number_literal) )) (compound_statement "{\n      for (; uVar2 >> uVar3 == 0; uVar3 = uVar3 - 1) {\n      }\n    }" { (for_statement "for (; uVar2 >> uVar3 == 0; uVar3 = uVar3 - 1) {\n      }" for ( ; (binary_expression "uVar2 >> uVar3 == 0" (binary_expression "uVar2 >> uVar3" identifier >> identifier) == number_literal) ; (assignment_expression "uVar3 = uVar3 - 1" identifier = (binary_expression "uVar3 - 1" identifier - number_literal)) ) (compound_statement "{\n      }" { })) })) (expression_statement "uVar3 = (uVar3 ^ 0x1f) + 0x20;" (assignment_expression "uVar3 = (uVar3 ^ 0x1f) + 0x20" identifier = (binary_expression "(uVar3 ^ 0x1f) + 0x20" (parenthesized_expression "(uVar3 ^ 0x1f)" ( (binary_expression "uVar3 ^ 0x1f" identifier ^ number_literal) )) + number_literal)) ;) }))) (expression_statement "uVar3 = 0x3c - uVar3;" (assignment_expression "uVar3 = 0x3c - uVar3" identifier = (binary_expression "0x3c - uVar3" number_literal - identifier)) ;) (expression_statement "bVar1 = (byte)uVar3 & 0x1f;" (assignment_expression "bVar1 = (byte)uVar3 & 0x1f" identifier = (binary_expression "(byte)uVar3 & 0x1f" (cast_expression "(byte)uVar3" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal)) ;) (expression_statement "uVar2 = uVar2 >> bVar1 | uVar4 << 0x20 - bVar1;" (assignment_expression "uVar2 = uVar2 >> bVar1 | uVar4 << 0x20 - bVar1" identifier = (binary_expression "uVar2 >> bVar1 | uVar4 << 0x20 - bVar1" (binary_expression "uVar2 >> bVar1" identifier >> identifier) | (binary_expression "uVar4 << 0x20 - bVar1" identifier << (binary_expression "0x20 - bVar1" number_literal - identifier)))) ;) (if_statement "if ((uVar3 & 0x20) != 0) {\n    uVar2 = uVar4 >> ((byte)uVar3 & 0x1f);\n  }" if (parenthesized_expression "((uVar3 & 0x20) != 0)" ( (binary_expression "(uVar3 & 0x20) != 0" (parenthesized_expression "(uVar3 & 0x20)" ( (binary_expression "uVar3 & 0x20" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n    uVar2 = uVar4 >> ((byte)uVar3 & 0x1f);\n  }" { (expression_statement "uVar2 = uVar4 >> ((byte)uVar3 & 0x1f);" (assignment_expression "uVar2 = uVar4 >> ((byte)uVar3 & 0x1f)" identifier = (binary_expression "uVar4 >> ((byte)uVar3 & 0x1f)" identifier >> (parenthesized_expression "((byte)uVar3 & 0x1f)" ( (binary_expression "(byte)uVar3 & 0x1f" (cast_expression "(byte)uVar3" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) )))) ;) })) (return_statement "return *(short *)(a_15215 + (uVar2 & 7) * 2) + -3 + (short)uVar3 * 10;" return (binary_expression "*(short *)(a_15215 + (uVar2 & 7) * 2) + -3 + (short)uVar3 * 10" (binary_expression "*(short *)(a_15215 + (uVar2 & 7) * 2) + -3" (pointer_expression "*(short *)(a_15215 + (uVar2 & 7) * 2)" * (cast_expression "(short *)(a_15215 + (uVar2 & 7) * 2)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(a_15215 + (uVar2 & 7) * 2)" ( (binary_expression "a_15215 + (uVar2 & 7) * 2" identifier + (binary_expression "(uVar2 & 7) * 2" (parenthesized_expression "(uVar2 & 7)" ( (binary_expression "uVar2 & 7" identifier & number_literal) )) * number_literal)) )))) + number_literal) + (binary_expression "(short)uVar3 * 10" (cast_expression "(short)uVar3" ( (type_descriptor "short" (sized_type_specifier "short" short)) ) identifier) * number_literal)) ;) })))
(translation_unit "int __regparm3 FUN_00038680(short param_1)\n\n{\n  byte bVar1;\n  uint uVar2;\n  uint uVar3;\n  uint uVar4;\n  \n  uVar2 = (uint)param_1;\n  uVar4 = (int)uVar2 >> 0x1f;\n  if ((int)uVar2 < 0) {\n    uVar3 = 0x1f;\n    if ((int)uVar2 < 0) {\n      for (; uVar4 >> uVar3 == 0; uVar3 = uVar3 - 1) {\n      }\n    }\n    uVar3 = uVar3 ^ 0x1f;\n  }\n  else {\n    uVar3 = 0x1f;\n    if (uVar2 != 0) {\n      for (; uVar2 >> uVar3 == 0; uVar3 = uVar3 - 1) {\n      }\n    }\n    uVar3 = (uVar3 ^ 0x1f) + 0x20;\n  }\n  uVar3 = 0x3c - uVar3;\n  bVar1 = (byte)uVar3 & 0x1f;\n  uVar2 = uVar2 >> bVar1 | uVar4 << 0x20 - bVar1;\n  if ((uVar3 & 0x20) != 0) {\n    uVar2 = uVar4 >> ((byte)uVar3 & 0x1f);\n  }\n  return (*(ushort *)(&DAT_000fed80 + (uVar2 & 7) * 2) - 3) + uVar3 * 10;\n}\n\n" (function_definition "int __regparm3 FUN_00038680(short param_1)\n\n{\n  byte bVar1;\n  uint uVar2;\n  uint uVar3;\n  uint uVar4;\n  \n  uVar2 = (uint)param_1;\n  uVar4 = (int)uVar2 >> 0x1f;\n  if ((int)uVar2 < 0) {\n    uVar3 = 0x1f;\n    if ((int)uVar2 < 0) {\n      for (; uVar4 >> uVar3 == 0; uVar3 = uVar3 - 1) {\n      }\n    }\n    uVar3 = uVar3 ^ 0x1f;\n  }\n  else {\n    uVar3 = 0x1f;\n    if (uVar2 != 0) {\n      for (; uVar2 >> uVar3 == 0; uVar3 = uVar3 - 1) {\n      }\n    }\n    uVar3 = (uVar3 ^ 0x1f) + 0x20;\n  }\n  uVar3 = 0x3c - uVar3;\n  bVar1 = (byte)uVar3 & 0x1f;\n  uVar2 = uVar2 >> bVar1 | uVar4 << 0x20 - bVar1;\n  if ((uVar3 & 0x20) != 0) {\n    uVar2 = uVar4 >> ((byte)uVar3 & 0x1f);\n  }\n  return (*(ushort *)(&DAT_000fed80 + (uVar2 & 7) * 2) - 3) + uVar3 * 10;\n}" primitive_type (ERROR "__regparm3" identifier) (function_declarator "FUN_00038680(short param_1)" identifier (parameter_list "(short param_1)" ( (parameter_declaration "short param_1" (sized_type_specifier "short" short) identifier) ))) (compound_statement "{\n  byte bVar1;\n  uint uVar2;\n  uint uVar3;\n  uint uVar4;\n  \n  uVar2 = (uint)param_1;\n  uVar4 = (int)uVar2 >> 0x1f;\n  if ((int)uVar2 < 0) {\n    uVar3 = 0x1f;\n    if ((int)uVar2 < 0) {\n      for (; uVar4 >> uVar3 == 0; uVar3 = uVar3 - 1) {\n      }\n    }\n    uVar3 = uVar3 ^ 0x1f;\n  }\n  else {\n    uVar3 = 0x1f;\n    if (uVar2 != 0) {\n      for (; uVar2 >> uVar3 == 0; uVar3 = uVar3 - 1) {\n      }\n    }\n    uVar3 = (uVar3 ^ 0x1f) + 0x20;\n  }\n  uVar3 = 0x3c - uVar3;\n  bVar1 = (byte)uVar3 & 0x1f;\n  uVar2 = uVar2 >> bVar1 | uVar4 << 0x20 - bVar1;\n  if ((uVar3 & 0x20) != 0) {\n    uVar2 = uVar4 >> ((byte)uVar3 & 0x1f);\n  }\n  return (*(ushort *)(&DAT_000fed80 + (uVar2 & 7) * 2) - 3) + uVar3 * 10;\n}" { (declaration "byte bVar1;" type_identifier identifier ;) (declaration "uint uVar2;" type_identifier identifier ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "uint uVar4;" type_identifier identifier ;) (expression_statement "uVar2 = (uint)param_1;" (assignment_expression "uVar2 = (uint)param_1" identifier = (cast_expression "(uint)param_1" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "uVar4 = (int)uVar2 >> 0x1f;" (assignment_expression "uVar4 = (int)uVar2 >> 0x1f" identifier = (binary_expression "(int)uVar2 >> 0x1f" (cast_expression "(int)uVar2" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal)) ;) (if_statement "if ((int)uVar2 < 0) {\n    uVar3 = 0x1f;\n    if ((int)uVar2 < 0) {\n      for (; uVar4 >> uVar3 == 0; uVar3 = uVar3 - 1) {\n      }\n    }\n    uVar3 = uVar3 ^ 0x1f;\n  }\n  else {\n    uVar3 = 0x1f;\n    if (uVar2 != 0) {\n      for (; uVar2 >> uVar3 == 0; uVar3 = uVar3 - 1) {\n      }\n    }\n    uVar3 = (uVar3 ^ 0x1f) + 0x20;\n  }" if (parenthesized_expression "((int)uVar2 < 0)" ( (binary_expression "(int)uVar2 < 0" (cast_expression "(int)uVar2" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n    uVar3 = 0x1f;\n    if ((int)uVar2 < 0) {\n      for (; uVar4 >> uVar3 == 0; uVar3 = uVar3 - 1) {\n      }\n    }\n    uVar3 = uVar3 ^ 0x1f;\n  }" { (expression_statement "uVar3 = 0x1f;" (assignment_expression "uVar3 = 0x1f" identifier = number_literal) ;) (if_statement "if ((int)uVar2 < 0) {\n      for (; uVar4 >> uVar3 == 0; uVar3 = uVar3 - 1) {\n      }\n    }" if (parenthesized_expression "((int)uVar2 < 0)" ( (binary_expression "(int)uVar2 < 0" (cast_expression "(int)uVar2" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n      for (; uVar4 >> uVar3 == 0; uVar3 = uVar3 - 1) {\n      }\n    }" { (for_statement "for (; uVar4 >> uVar3 == 0; uVar3 = uVar3 - 1) {\n      }" for ( ; (binary_expression "uVar4 >> uVar3 == 0" (binary_expression "uVar4 >> uVar3" identifier >> identifier) == number_literal) ; (assignment_expression "uVar3 = uVar3 - 1" identifier = (binary_expression "uVar3 - 1" identifier - number_literal)) ) (compound_statement "{\n      }" { })) })) (expression_statement "uVar3 = uVar3 ^ 0x1f;" (assignment_expression "uVar3 = uVar3 ^ 0x1f" identifier = (binary_expression "uVar3 ^ 0x1f" identifier ^ number_literal)) ;) }) (else_clause "else {\n    uVar3 = 0x1f;\n    if (uVar2 != 0) {\n      for (; uVar2 >> uVar3 == 0; uVar3 = uVar3 - 1) {\n      }\n    }\n    uVar3 = (uVar3 ^ 0x1f) + 0x20;\n  }" else (compound_statement "{\n    uVar3 = 0x1f;\n    if (uVar2 != 0) {\n      for (; uVar2 >> uVar3 == 0; uVar3 = uVar3 - 1) {\n      }\n    }\n    uVar3 = (uVar3 ^ 0x1f) + 0x20;\n  }" { (expression_statement "uVar3 = 0x1f;" (assignment_expression "uVar3 = 0x1f" identifier = number_literal) ;) (if_statement "if (uVar2 != 0) {\n      for (; uVar2 >> uVar3 == 0; uVar3 = uVar3 - 1) {\n      }\n    }" if (parenthesized_expression "(uVar2 != 0)" ( (binary_expression "uVar2 != 0" identifier != number_literal) )) (compound_statement "{\n      for (; uVar2 >> uVar3 == 0; uVar3 = uVar3 - 1) {\n      }\n    }" { (for_statement "for (; uVar2 >> uVar3 == 0; uVar3 = uVar3 - 1) {\n      }" for ( ; (binary_expression "uVar2 >> uVar3 == 0" (binary_expression "uVar2 >> uVar3" identifier >> identifier) == number_literal) ; (assignment_expression "uVar3 = uVar3 - 1" identifier = (binary_expression "uVar3 - 1" identifier - number_literal)) ) (compound_statement "{\n      }" { })) })) (expression_statement "uVar3 = (uVar3 ^ 0x1f) + 0x20;" (assignment_expression "uVar3 = (uVar3 ^ 0x1f) + 0x20" identifier = (binary_expression "(uVar3 ^ 0x1f) + 0x20" (parenthesized_expression "(uVar3 ^ 0x1f)" ( (binary_expression "uVar3 ^ 0x1f" identifier ^ number_literal) )) + number_literal)) ;) }))) (expression_statement "uVar3 = 0x3c - uVar3;" (assignment_expression "uVar3 = 0x3c - uVar3" identifier = (binary_expression "0x3c - uVar3" number_literal - identifier)) ;) (expression_statement "bVar1 = (byte)uVar3 & 0x1f;" (assignment_expression "bVar1 = (byte)uVar3 & 0x1f" identifier = (binary_expression "(byte)uVar3 & 0x1f" (cast_expression "(byte)uVar3" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal)) ;) (expression_statement "uVar2 = uVar2 >> bVar1 | uVar4 << 0x20 - bVar1;" (assignment_expression "uVar2 = uVar2 >> bVar1 | uVar4 << 0x20 - bVar1" identifier = (binary_expression "uVar2 >> bVar1 | uVar4 << 0x20 - bVar1" (binary_expression "uVar2 >> bVar1" identifier >> identifier) | (binary_expression "uVar4 << 0x20 - bVar1" identifier << (binary_expression "0x20 - bVar1" number_literal - identifier)))) ;) (if_statement "if ((uVar3 & 0x20) != 0) {\n    uVar2 = uVar4 >> ((byte)uVar3 & 0x1f);\n  }" if (parenthesized_expression "((uVar3 & 0x20) != 0)" ( (binary_expression "(uVar3 & 0x20) != 0" (parenthesized_expression "(uVar3 & 0x20)" ( (binary_expression "uVar3 & 0x20" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n    uVar2 = uVar4 >> ((byte)uVar3 & 0x1f);\n  }" { (expression_statement "uVar2 = uVar4 >> ((byte)uVar3 & 0x1f);" (assignment_expression "uVar2 = uVar4 >> ((byte)uVar3 & 0x1f)" identifier = (binary_expression "uVar4 >> ((byte)uVar3 & 0x1f)" identifier >> (parenthesized_expression "((byte)uVar3 & 0x1f)" ( (binary_expression "(byte)uVar3 & 0x1f" (cast_expression "(byte)uVar3" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) )))) ;) })) (return_statement "return (*(ushort *)(&DAT_000fed80 + (uVar2 & 7) * 2) - 3) + uVar3 * 10;" return (binary_expression "(*(ushort *)(&DAT_000fed80 + (uVar2 & 7) * 2) - 3) + uVar3 * 10" (parenthesized_expression "(*(ushort *)(&DAT_000fed80 + (uVar2 & 7) * 2) - 3)" ( (binary_expression "*(ushort *)(&DAT_000fed80 + (uVar2 & 7) * 2) - 3" (pointer_expression "*(ushort *)(&DAT_000fed80 + (uVar2 & 7) * 2)" * (cast_expression "(ushort *)(&DAT_000fed80 + (uVar2 & 7) * 2)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&DAT_000fed80 + (uVar2 & 7) * 2)" ( (binary_expression "&DAT_000fed80 + (uVar2 & 7) * 2" (pointer_expression "&DAT_000fed80" & identifier) + (binary_expression "(uVar2 & 7) * 2" (parenthesized_expression "(uVar2 & 7)" ( (binary_expression "uVar2 & 7" identifier & number_literal) )) * number_literal)) )))) - number_literal) )) + (binary_expression "uVar3 * 10" identifier * number_literal)) ;) })))
(translation_unit (function_definition TYPE (ERROR IDENT) (function_declarator IDENT (parameter_list ( (parameter_declaration (sized_type_specifier short) IDENT) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < LIT) )) (compound_statement { (for_statement for ( ; (binary_expression (binary_expression IDENT >> IDENT) == LIT) ; (assignment_expression IDENT = (binary_expression IDENT - LIT)) ) (compound_statement { })) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT ^ LIT)) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (for_statement for ( ; (binary_expression (binary_expression IDENT >> IDENT) == LIT) ; (assignment_expression IDENT = (binary_expression IDENT - LIT)) ) (compound_statement { })) })) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression IDENT ^ LIT) )) + LIT)) ;) }))) (expression_statement (assignment_expression IDENT = (binary_expression LIT - IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) & LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT >> IDENT) | (binary_expression IDENT << (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 = (binary_expression IDENT >> (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) & LIT) )))) ;) })) (return_statement return (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression & IDENT) + (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) * LIT)) )))) - LIT) )) + (binary_expression IDENT * LIT)) ;) })))
(function_definition "int __regparm3 FUN_00038680(short param_1)\n\n{\n  byte bVar1;\n  uint uVar2;\n  uint uVar3;\n  uint uVar4;\n  \n  uVar2 = (uint)param_1;\n  uVar4 = (int)uVar2 >> 0x1f;\n  if ((int)uVar2 < 0) {\n    uVar3 = 0x1f;\n    if ((int)uVar2 < 0) {\n      for (; uVar4 >> uVar3 == 0; uVar3 = uVar3 - 1) {\n      }\n    }\n    uVar3 = uVar3 ^ 0x1f;\n  }\n  else {\n    uVar3 = 0x1f;\n    if (uVar2 != 0) {\n      for (; uVar2 >> uVar3 == 0; uVar3 = uVar3 - 1) {\n      }\n    }\n    uVar3 = (uVar3 ^ 0x1f) + 0x20;\n  }\n  uVar3 = 0x3c - uVar3;\n  bVar1 = (byte)uVar3 & 0x1f;\n  uVar2 = uVar2 >> bVar1 | uVar4 << 0x20 - bVar1;\n  if ((uVar3 & 0x20) != 0) {\n    uVar2 = uVar4 >> ((byte)uVar3 & 0x1f);\n  }\n  return (*(ushort *)(&DAT_000fed80 + (uVar2 & 7) * 2) - 3) + uVar3 * 10;\n}" (primitive_type "int") (ERROR "__regparm3" (identifier "__regparm3")) (function_declarator "FUN_00038680(short param_1)" (identifier "FUN_00038680") (parameter_list "(short param_1)" (( "(") (parameter_declaration "short param_1" (sized_type_specifier "short" (short "short")) (identifier "param_1")) () ")"))) (compound_statement "{\n  byte bVar1;\n  uint uVar2;\n  uint uVar3;\n  uint uVar4;\n  \n  uVar2 = (uint)param_1;\n  uVar4 = (int)uVar2 >> 0x1f;\n  if ((int)uVar2 < 0) {\n    uVar3 = 0x1f;\n    if ((int)uVar2 < 0) {\n      for (; uVar4 >> uVar3 == 0; uVar3 = uVar3 - 1) {\n      }\n    }\n    uVar3 = uVar3 ^ 0x1f;\n  }\n  else {\n    uVar3 = 0x1f;\n    if (uVar2 != 0) {\n      for (; uVar2 >> uVar3 == 0; uVar3 = uVar3 - 1) {\n      }\n    }\n    uVar3 = (uVar3 ^ 0x1f) + 0x20;\n  }\n  uVar3 = 0x3c - uVar3;\n  bVar1 = (byte)uVar3 & 0x1f;\n  uVar2 = uVar2 >> bVar1 | uVar4 << 0x20 - bVar1;\n  if ((uVar3 & 0x20) != 0) {\n    uVar2 = uVar4 >> ((byte)uVar3 & 0x1f);\n  }\n  return (*(ushort *)(&DAT_000fed80 + (uVar2 & 7) * 2) - 3) + uVar3 * 10;\n}" ({ "{") (declaration "byte bVar1;" (type_identifier "byte") (identifier "bVar1") (; ";")) (declaration "uint uVar2;" (type_identifier "uint") (identifier "uVar2") (; ";")) (declaration "uint uVar3;" (type_identifier "uint") (identifier "uVar3") (; ";")) (declaration "uint uVar4;" (type_identifier "uint") (identifier "uVar4") (; ";")) (expression_statement "uVar2 = (uint)param_1;" (assignment_expression "uVar2 = (uint)param_1" (identifier "uVar2") (= "=") (cast_expression "(uint)param_1" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "param_1"))) (; ";")) (expression_statement "uVar4 = (int)uVar2 >> 0x1f;" (assignment_expression "uVar4 = (int)uVar2 >> 0x1f" (identifier "uVar4") (= "=") (binary_expression "(int)uVar2 >> 0x1f" (cast_expression "(int)uVar2" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar2")) (>> ">>") (number_literal "0x1f"))) (; ";")) (if_statement "if ((int)uVar2 < 0) {\n    uVar3 = 0x1f;\n    if ((int)uVar2 < 0) {\n      for (; uVar4 >> uVar3 == 0; uVar3 = uVar3 - 1) {\n      }\n    }\n    uVar3 = uVar3 ^ 0x1f;\n  }\n  else {\n    uVar3 = 0x1f;\n    if (uVar2 != 0) {\n      for (; uVar2 >> uVar3 == 0; uVar3 = uVar3 - 1) {\n      }\n    }\n    uVar3 = (uVar3 ^ 0x1f) + 0x20;\n  }" (if "if") (parenthesized_expression "((int)uVar2 < 0)" (( "(") (binary_expression "(int)uVar2 < 0" (cast_expression "(int)uVar2" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar2")) (< "<") (number_literal "0")) () ")")) (compound_statement "{\n    uVar3 = 0x1f;\n    if ((int)uVar2 < 0) {\n      for (; uVar4 >> uVar3 == 0; uVar3 = uVar3 - 1) {\n      }\n    }\n    uVar3 = uVar3 ^ 0x1f;\n  }" ({ "{") (expression_statement "uVar3 = 0x1f;" (assignment_expression "uVar3 = 0x1f" (identifier "uVar3") (= "=") (number_literal "0x1f")) (; ";")) (if_statement "if ((int)uVar2 < 0) {\n      for (; uVar4 >> uVar3 == 0; uVar3 = uVar3 - 1) {\n      }\n    }" (if "if") (parenthesized_expression "((int)uVar2 < 0)" (( "(") (binary_expression "(int)uVar2 < 0" (cast_expression "(int)uVar2" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar2")) (< "<") (number_literal "0")) () ")")) (compound_statement "{\n      for (; uVar4 >> uVar3 == 0; uVar3 = uVar3 - 1) {\n      }\n    }" ({ "{") (for_statement "for (; uVar4 >> uVar3 == 0; uVar3 = uVar3 - 1) {\n      }" (for "for") (( "(") (; ";") (binary_expression "uVar4 >> uVar3 == 0" (binary_expression "uVar4 >> uVar3" (identifier "uVar4") (>> ">>") (identifier "uVar3")) (== "==") (number_literal "0")) (; ";") (assignment_expression "uVar3 = uVar3 - 1" (identifier "uVar3") (= "=") (binary_expression "uVar3 - 1" (identifier "uVar3") (- "-") (number_literal "1"))) () ")") (compound_statement "{\n      }" ({ "{") (} "}"))) (} "}"))) (expression_statement "uVar3 = uVar3 ^ 0x1f;" (assignment_expression "uVar3 = uVar3 ^ 0x1f" (identifier "uVar3") (= "=") (binary_expression "uVar3 ^ 0x1f" (identifier "uVar3") (^ "^") (number_literal "0x1f"))) (; ";")) (} "}")) (else_clause "else {\n    uVar3 = 0x1f;\n    if (uVar2 != 0) {\n      for (; uVar2 >> uVar3 == 0; uVar3 = uVar3 - 1) {\n      }\n    }\n    uVar3 = (uVar3 ^ 0x1f) + 0x20;\n  }" (else "else") (compound_statement "{\n    uVar3 = 0x1f;\n    if (uVar2 != 0) {\n      for (; uVar2 >> uVar3 == 0; uVar3 = uVar3 - 1) {\n      }\n    }\n    uVar3 = (uVar3 ^ 0x1f) + 0x20;\n  }" ({ "{") (expression_statement "uVar3 = 0x1f;" (assignment_expression "uVar3 = 0x1f" (identifier "uVar3") (= "=") (number_literal "0x1f")) (; ";")) (if_statement "if (uVar2 != 0) {\n      for (; uVar2 >> uVar3 == 0; uVar3 = uVar3 - 1) {\n      }\n    }" (if "if") (parenthesized_expression "(uVar2 != 0)" (( "(") (binary_expression "uVar2 != 0" (identifier "uVar2") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      for (; uVar2 >> uVar3 == 0; uVar3 = uVar3 - 1) {\n      }\n    }" ({ "{") (for_statement "for (; uVar2 >> uVar3 == 0; uVar3 = uVar3 - 1) {\n      }" (for "for") (( "(") (; ";") (binary_expression "uVar2 >> uVar3 == 0" (binary_expression "uVar2 >> uVar3" (identifier "uVar2") (>> ">>") (identifier "uVar3")) (== "==") (number_literal "0")) (; ";") (assignment_expression "uVar3 = uVar3 - 1" (identifier "uVar3") (= "=") (binary_expression "uVar3 - 1" (identifier "uVar3") (- "-") (number_literal "1"))) () ")") (compound_statement "{\n      }" ({ "{") (} "}"))) (} "}"))) (expression_statement "uVar3 = (uVar3 ^ 0x1f) + 0x20;" (assignment_expression "uVar3 = (uVar3 ^ 0x1f) + 0x20" (identifier "uVar3") (= "=") (binary_expression "(uVar3 ^ 0x1f) + 0x20" (parenthesized_expression "(uVar3 ^ 0x1f)" (( "(") (binary_expression "uVar3 ^ 0x1f" (identifier "uVar3") (^ "^") (number_literal "0x1f")) () ")")) (+ "+") (number_literal "0x20"))) (; ";")) (} "}")))) (expression_statement "uVar3 = 0x3c - uVar3;" (assignment_expression "uVar3 = 0x3c - uVar3" (identifier "uVar3") (= "=") (binary_expression "0x3c - uVar3" (number_literal "0x3c") (- "-") (identifier "uVar3"))) (; ";")) (expression_statement "bVar1 = (byte)uVar3 & 0x1f;" (assignment_expression "bVar1 = (byte)uVar3 & 0x1f" (identifier "bVar1") (= "=") (binary_expression "(byte)uVar3 & 0x1f" (cast_expression "(byte)uVar3" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "uVar3")) (& "&") (number_literal "0x1f"))) (; ";")) (expression_statement "uVar2 = uVar2 >> bVar1 | uVar4 << 0x20 - bVar1;" (assignment_expression "uVar2 = uVar2 >> bVar1 | uVar4 << 0x20 - bVar1" (identifier "uVar2") (= "=") (binary_expression "uVar2 >> bVar1 | uVar4 << 0x20 - bVar1" (binary_expression "uVar2 >> bVar1" (identifier "uVar2") (>> ">>") (identifier "bVar1")) (| "|") (binary_expression "uVar4 << 0x20 - bVar1" (identifier "uVar4") (<< "<<") (binary_expression "0x20 - bVar1" (number_literal "0x20") (- "-") (identifier "bVar1"))))) (; ";")) (if_statement "if ((uVar3 & 0x20) != 0) {\n    uVar2 = uVar4 >> ((byte)uVar3 & 0x1f);\n  }" (if "if") (parenthesized_expression "((uVar3 & 0x20) != 0)" (( "(") (binary_expression "(uVar3 & 0x20) != 0" (parenthesized_expression "(uVar3 & 0x20)" (( "(") (binary_expression "uVar3 & 0x20" (identifier "uVar3") (& "&") (number_literal "0x20")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    uVar2 = uVar4 >> ((byte)uVar3 & 0x1f);\n  }" ({ "{") (expression_statement "uVar2 = uVar4 >> ((byte)uVar3 & 0x1f);" (assignment_expression "uVar2 = uVar4 >> ((byte)uVar3 & 0x1f)" (identifier "uVar2") (= "=") (binary_expression "uVar4 >> ((byte)uVar3 & 0x1f)" (identifier "uVar4") (>> ">>") (parenthesized_expression "((byte)uVar3 & 0x1f)" (( "(") (binary_expression "(byte)uVar3 & 0x1f" (cast_expression "(byte)uVar3" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "uVar3")) (& "&") (number_literal "0x1f")) () ")")))) (; ";")) (} "}"))) (return_statement "return (*(ushort *)(&DAT_000fed80 + (uVar2 & 7) * 2) - 3) + uVar3 * 10;" (return "return") (binary_expression "(*(ushort *)(&DAT_000fed80 + (uVar2 & 7) * 2) - 3) + uVar3 * 10" (parenthesized_expression "(*(ushort *)(&DAT_000fed80 + (uVar2 & 7) * 2) - 3)" (( "(") (binary_expression "*(ushort *)(&DAT_000fed80 + (uVar2 & 7) * 2) - 3" (pointer_expression "*(ushort *)(&DAT_000fed80 + (uVar2 & 7) * 2)" (* "*") (cast_expression "(ushort *)(&DAT_000fed80 + (uVar2 & 7) * 2)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(&DAT_000fed80 + (uVar2 & 7) * 2)" (( "(") (binary_expression "&DAT_000fed80 + (uVar2 & 7) * 2" (pointer_expression "&DAT_000fed80" (& "&") (identifier "DAT_000fed80")) (+ "+") (binary_expression "(uVar2 & 7) * 2" (parenthesized_expression "(uVar2 & 7)" (( "(") (binary_expression "uVar2 & 7" (identifier "uVar2") (& "&") (number_literal "7")) () ")")) (* "*") (number_literal "2"))) () ")")))) (- "-") (number_literal "3")) () ")")) (+ "+") (binary_expression "uVar3 * 10" (identifier "uVar3") (* "*") (number_literal "10"))) (; ";")) (} "}")))

/* WARNING: Function: __x86.get_pc_thunk.dx replaced with injection: get_pc_thunk_dx */

type_1 __regparm3 function_1(type_1 N)

{
  type_2 var_4;
  type_3 var_3;
  type_3 var_2;
  type_3 var_1;
  
  var_3 = (type_3)N;
  var_1 = (int)var_3 >> 0x1f;
  if ((int)var_3 < 0) {
    var_2 = 0x1f;
    if ((int)var_3 < 0) {
      for (; var_1 >> var_2 == 0; var_2 = var_2 - 1) {
      }
    }
    var_2 = var_2 ^ 0x1f;
  }
  else {
    var_2 = 0x1f;
    if (var_3 != 0) {
      for (; var_3 >> var_2 == 0; var_2 = var_2 - 1) {
      }
    }
    var_2 = (var_2 ^ 0x1f) + 0x20;
  }
  var_2 = 0x3c - var_2;
  var_4 = (type_2)var_2 & 0x1f;
  var_3 = var_3 >> var_4 | var_1 << 0x20 - var_4;
  if ((var_2 & 0x20) != 0) {
    var_3 = var_1 >> ((type_2)var_2 & 0x1f);
  }
  return *(short *)(var_5 + (var_3 & 7) * 2) + -3 + (short)var_2 * 10;
}


(translation_unit (function_definition type: (primitive_type) (ERROR (identifier)) declarator: (function_declarator declarator: (identifier) parameters: (parameter_list (parameter_declaration type: (sized_type_specifier) 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)) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (if_statement condition: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))) consequence: (compound_statement (for_statement condition: (binary_expression left: (binary_expression left: (identifier) right: (identifier)) right: (number_literal)) update: (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))) body: (compound_statement)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (for_statement condition: (binary_expression left: (binary_expression left: (identifier) right: (identifier)) right: (number_literal)) update: (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))) body: (compound_statement)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (number_literal) right: (identifier)))) (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: (binary_expression left: (identifier) right: (identifier)) right: (binary_expression left: (identifier) 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: (binary_expression left: (identifier) right: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (number_literal)))))))) (return_statement (binary_expression left: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal)))))) right: (number_literal))) right: (binary_expression left: (identifier) right: (number_literal)))))))

/* WARNING: Function: __i686.get_pc_thunk.dx replaced with injection: get_pc_thunk_dx */

int __regparm3 MASKED(short param_1)

{
  byte bVar1;
  uint uVar2;
  uint uVar3;
  uint uVar4;
  
  uVar2 = (uint)param_1;
  uVar4 = (int)uVar2 >> 0x1f;
  if ((int)uVar2 < 0) {
    uVar3 = 0x1f;
    if ((int)uVar2 < 0) {
      for (; uVar4 >> uVar3 == 0; uVar3 = uVar3 - 1) {
      }
    }
    uVar3 = uVar3 ^ 0x1f;
  }
  else {
    uVar3 = 0x1f;
    if (uVar2 != 0) {
      for (; uVar2 >> uVar3 == 0; uVar3 = uVar3 - 1) {
      }
    }
    uVar3 = (uVar3 ^ 0x1f) + 0x20;
  }
  uVar3 = 0x3c - uVar3;
  bVar1 = (byte)uVar3 & 0x1f;
  uVar2 = uVar2 >> bVar1 | uVar4 << 0x20 - bVar1;
  if ((uVar3 & 0x20) != 0) {
    uVar2 = uVar4 >> ((byte)uVar3 & 0x1f);
  }
  return (*(ushort *)(&DAT_000fed80 + (uVar2 & 7) * 2) - 3) + uVar3 * 10;
}

