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

void * x2nrealloc(void *p,size_t *pn,size_t s)

{
  void *pvVar1;
  uint uVar2;
  
  uVar2 = *pn;
  if (p == (void *)0x0) {
    if (uVar2 == 0) {
      uVar2 = (uint)(0x40 < s) + (int)(0x40 / (ulonglong)s);
    }
    if (((int)((ulonglong)uVar2 * (ulonglong)s) < 0) ||
       ((int)((ulonglong)uVar2 * (ulonglong)s >> 0x20) != 0)) goto LAB_00023dee;
  }
  else {
    if ((uint)(0x55555554 / (ulonglong)s) <= uVar2) {
LAB_00023dee:
                    /* WARNING: Subroutine does not return */
      xalloc_die();
    }
    uVar2 = (uVar2 >> 1) + 1 + uVar2;
  }
  *pn = uVar2;
  pvVar1 = xrealloc(p,uVar2 * s);
  return pvVar1;
}



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

void FUN_00023d80(int param_1,uint *param_2,uint param_3)

{
  uint uVar1;
  
  uVar1 = *param_2;
  if (param_1 == 0) {
    if (uVar1 == 0) {
      uVar1 = (uint)(0x40 < param_3) + (int)(0x40 / (ulonglong)param_3);
    }
    if (((int)((ulonglong)uVar1 * (ulonglong)param_3) < 0) ||
       ((int)((ulonglong)uVar1 * (ulonglong)param_3 >> 0x20) != 0)) goto LAB_00023dee;
  }
  else {
    if ((uint)(0x55555554 / (ulonglong)param_3) <= uVar1) {
LAB_00023dee:
                    /* WARNING: Subroutine does not return */
      FUN_00023f50();
    }
    uVar1 = (uVar1 >> 1) + 1 + uVar1;
  }
  *param_2 = uVar1;
  FUN_00023ce0();
  return;
}


PUSH EBP
PUSH EDI
PUSH ESI
PUSH EBX
CALL 0x00013b20
ADD EBX,0x29277
SUB ESP,0xc
MOV EBP,dword ptr [ESP + 0x24]
MOV EDI,dword ptr [ESP + 0x20]
MOV ESI,dword ptr [ESP + 0x28]
MOV ECX,dword ptr [EBP]
TEST EDI,EDI
JZ 0x00023dd8
MOV EAX,0x55555554
XOR EDX,EDX
DIV ESI
CMP EAX,ECX
JBE 0x00023dee
MOV EAX,ECX
SHR EAX,0x1
LEA ECX,[EAX + ECX*0x1 + 0x1]
MOV dword ptr [EBP],ECX
IMUL ECX,ESI
MOV dword ptr [ESP + 0x20],EDI
MOV dword ptr [ESP + 0x24],ECX
ADD ESP,0xc
POP EBX
POP ESI
POP EDI
POP EBP
JMP 0x00023ce0
TEST ECX,ECX
JZ 0x00023df8
MOV EAX,ECX
MUL ESI
SETO DL
MOVZX EDX,DL
TEST EAX,EAX
JS 0x00023dee
TEST EDX,EDX
JZ 0x00023dba
CALL 0x00023f50
XOR EDX,EDX
MOV EAX,0x40
XOR ECX,ECX
DIV ESI
CMP ESI,0x40
SETA CL
ADD ECX,EAX
JMP 0x00023ddc
(translation_unit "/* WARNING: Function: __i686.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n\nvoid FUN_00023d80(int param_1,uint *param_2,uint param_3)\n\n{\n  uint uVar1;\n  \n  uVar1 = *param_2;\n  if (param_1 == 0) {\n    if (uVar1 == 0) {\n      uVar1 = (uint)(0x40 < param_3) + (int)(0x40 / (ulonglong)param_3);\n    }\n    if (((int)((ulonglong)uVar1 * (ulonglong)param_3) < 0) ||\n       ((int)((ulonglong)uVar1 * (ulonglong)param_3 >> 0x20) != 0)) goto LAB_00023dee;\n  }\n  else {\n    if ((uint)(0x55555554 / (ulonglong)param_3) <= uVar1) {\nLAB_00023dee:\n                    /* WARNING: Subroutine does not return */\n      FUN_00023f50();\n    }\n    uVar1 = (uVar1 >> 1) + 1 + uVar1;\n  }\n  *param_2 = uVar1;\n  FUN_00023ce0();\n  return;\n}\n\n" comment (function_definition "void FUN_00023d80(int param_1,uint *param_2,uint param_3)\n\n{\n  uint uVar1;\n  \n  uVar1 = *param_2;\n  if (param_1 == 0) {\n    if (uVar1 == 0) {\n      uVar1 = (uint)(0x40 < param_3) + (int)(0x40 / (ulonglong)param_3);\n    }\n    if (((int)((ulonglong)uVar1 * (ulonglong)param_3) < 0) ||\n       ((int)((ulonglong)uVar1 * (ulonglong)param_3 >> 0x20) != 0)) goto LAB_00023dee;\n  }\n  else {\n    if ((uint)(0x55555554 / (ulonglong)param_3) <= uVar1) {\nLAB_00023dee:\n                    /* WARNING: Subroutine does not return */\n      FUN_00023f50();\n    }\n    uVar1 = (uVar1 >> 1) + 1 + uVar1;\n  }\n  *param_2 = uVar1;\n  FUN_00023ce0();\n  return;\n}" primitive_type (function_declarator "FUN_00023d80(int param_1,uint *param_2,uint param_3)" identifier (parameter_list "(int param_1,uint *param_2,uint param_3)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "uint *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "uint param_3" type_identifier identifier) ))) (compound_statement "{\n  uint uVar1;\n  \n  uVar1 = *param_2;\n  if (param_1 == 0) {\n    if (uVar1 == 0) {\n      uVar1 = (uint)(0x40 < param_3) + (int)(0x40 / (ulonglong)param_3);\n    }\n    if (((int)((ulonglong)uVar1 * (ulonglong)param_3) < 0) ||\n       ((int)((ulonglong)uVar1 * (ulonglong)param_3 >> 0x20) != 0)) goto LAB_00023dee;\n  }\n  else {\n    if ((uint)(0x55555554 / (ulonglong)param_3) <= uVar1) {\nLAB_00023dee:\n                    /* WARNING: Subroutine does not return */\n      FUN_00023f50();\n    }\n    uVar1 = (uVar1 >> 1) + 1 + uVar1;\n  }\n  *param_2 = uVar1;\n  FUN_00023ce0();\n  return;\n}" { (declaration "uint uVar1;" type_identifier identifier ;) (expression_statement "uVar1 = *param_2;" (assignment_expression "uVar1 = *param_2" identifier = (pointer_expression "*param_2" * identifier)) ;) (if_statement "if (param_1 == 0) {\n    if (uVar1 == 0) {\n      uVar1 = (uint)(0x40 < param_3) + (int)(0x40 / (ulonglong)param_3);\n    }\n    if (((int)((ulonglong)uVar1 * (ulonglong)param_3) < 0) ||\n       ((int)((ulonglong)uVar1 * (ulonglong)param_3 >> 0x20) != 0)) goto LAB_00023dee;\n  }\n  else {\n    if ((uint)(0x55555554 / (ulonglong)param_3) <= uVar1) {\nLAB_00023dee:\n                    /* WARNING: Subroutine does not return */\n      FUN_00023f50();\n    }\n    uVar1 = (uVar1 >> 1) + 1 + uVar1;\n  }" if (parenthesized_expression "(param_1 == 0)" ( (binary_expression "param_1 == 0" identifier == number_literal) )) (compound_statement "{\n    if (uVar1 == 0) {\n      uVar1 = (uint)(0x40 < param_3) + (int)(0x40 / (ulonglong)param_3);\n    }\n    if (((int)((ulonglong)uVar1 * (ulonglong)param_3) < 0) ||\n       ((int)((ulonglong)uVar1 * (ulonglong)param_3 >> 0x20) != 0)) goto LAB_00023dee;\n  }" { (if_statement "if (uVar1 == 0) {\n      uVar1 = (uint)(0x40 < param_3) + (int)(0x40 / (ulonglong)param_3);\n    }" if (parenthesized_expression "(uVar1 == 0)" ( (binary_expression "uVar1 == 0" identifier == number_literal) )) (compound_statement "{\n      uVar1 = (uint)(0x40 < param_3) + (int)(0x40 / (ulonglong)param_3);\n    }" { (expression_statement "uVar1 = (uint)(0x40 < param_3) + (int)(0x40 / (ulonglong)param_3);" (assignment_expression "uVar1 = (uint)(0x40 < param_3) + (int)(0x40 / (ulonglong)param_3)" identifier = (binary_expression "(uint)(0x40 < param_3) + (int)(0x40 / (ulonglong)param_3)" (call_expression "(uint)(0x40 < param_3)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(0x40 < param_3)" ( (binary_expression "0x40 < param_3" number_literal < identifier) ))) + (cast_expression "(int)(0x40 / (ulonglong)param_3)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(0x40 / (ulonglong)param_3)" ( (binary_expression "0x40 / (ulonglong)param_3" number_literal / (cast_expression "(ulonglong)param_3" ( (type_descriptor "ulonglong" type_identifier) ) identifier)) ))))) ;) })) (if_statement "if (((int)((ulonglong)uVar1 * (ulonglong)param_3) < 0) ||\n       ((int)((ulonglong)uVar1 * (ulonglong)param_3 >> 0x20) != 0)) goto LAB_00023dee;" if (parenthesized_expression "(((int)((ulonglong)uVar1 * (ulonglong)param_3) < 0) ||\n       ((int)((ulonglong)uVar1 * (ulonglong)param_3 >> 0x20) != 0))" ( (binary_expression "((int)((ulonglong)uVar1 * (ulonglong)param_3) < 0) ||\n       ((int)((ulonglong)uVar1 * (ulonglong)param_3 >> 0x20) != 0)" (parenthesized_expression "((int)((ulonglong)uVar1 * (ulonglong)param_3) < 0)" ( (binary_expression "(int)((ulonglong)uVar1 * (ulonglong)param_3) < 0" (cast_expression "(int)((ulonglong)uVar1 * (ulonglong)param_3)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((ulonglong)uVar1 * (ulonglong)param_3)" ( (binary_expression "(ulonglong)uVar1 * (ulonglong)param_3" (cast_expression "(ulonglong)uVar1" ( (type_descriptor "ulonglong" type_identifier) ) identifier) * (cast_expression "(ulonglong)param_3" ( (type_descriptor "ulonglong" type_identifier) ) identifier)) ))) < number_literal) )) || (parenthesized_expression "((int)((ulonglong)uVar1 * (ulonglong)param_3 >> 0x20) != 0)" ( (binary_expression "(int)((ulonglong)uVar1 * (ulonglong)param_3 >> 0x20) != 0" (cast_expression "(int)((ulonglong)uVar1 * (ulonglong)param_3 >> 0x20)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((ulonglong)uVar1 * (ulonglong)param_3 >> 0x20)" ( (binary_expression "(ulonglong)uVar1 * (ulonglong)param_3 >> 0x20" (binary_expression "(ulonglong)uVar1 * (ulonglong)param_3" (cast_expression "(ulonglong)uVar1" ( (type_descriptor "ulonglong" type_identifier) ) identifier) * (cast_expression "(ulonglong)param_3" ( (type_descriptor "ulonglong" type_identifier) ) identifier)) >> number_literal) ))) != number_literal) ))) )) (goto_statement "goto LAB_00023dee;" goto statement_identifier ;)) }) (else_clause "else {\n    if ((uint)(0x55555554 / (ulonglong)param_3) <= uVar1) {\nLAB_00023dee:\n                    /* WARNING: Subroutine does not return */\n      FUN_00023f50();\n    }\n    uVar1 = (uVar1 >> 1) + 1 + uVar1;\n  }" else (compound_statement "{\n    if ((uint)(0x55555554 / (ulonglong)param_3) <= uVar1) {\nLAB_00023dee:\n                    /* WARNING: Subroutine does not return */\n      FUN_00023f50();\n    }\n    uVar1 = (uVar1 >> 1) + 1 + uVar1;\n  }" { (if_statement "if ((uint)(0x55555554 / (ulonglong)param_3) <= uVar1) {\nLAB_00023dee:\n                    /* WARNING: Subroutine does not return */\n      FUN_00023f50();\n    }" if (parenthesized_expression "((uint)(0x55555554 / (ulonglong)param_3) <= uVar1)" ( (binary_expression "(uint)(0x55555554 / (ulonglong)param_3) <= uVar1" (call_expression "(uint)(0x55555554 / (ulonglong)param_3)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(0x55555554 / (ulonglong)param_3)" ( (binary_expression "0x55555554 / (ulonglong)param_3" number_literal / (cast_expression "(ulonglong)param_3" ( (type_descriptor "ulonglong" type_identifier) ) identifier)) ))) <= identifier) )) (compound_statement "{\nLAB_00023dee:\n                    /* WARNING: Subroutine does not return */\n      FUN_00023f50();\n    }" { (labeled_statement "LAB_00023dee:\n                    /* WARNING: Subroutine does not return */\n      FUN_00023f50();" statement_identifier : comment (expression_statement "FUN_00023f50();" (call_expression "FUN_00023f50()" identifier (argument_list "()" ( ))) ;)) })) (expression_statement "uVar1 = (uVar1 >> 1) + 1 + uVar1;" (assignment_expression "uVar1 = (uVar1 >> 1) + 1 + uVar1" identifier = (binary_expression "(uVar1 >> 1) + 1 + uVar1" (binary_expression "(uVar1 >> 1) + 1" (parenthesized_expression "(uVar1 >> 1)" ( (binary_expression "uVar1 >> 1" identifier >> number_literal) )) + number_literal) + identifier)) ;) }))) (expression_statement "*param_2 = uVar1;" (assignment_expression "*param_2 = uVar1" (pointer_expression "*param_2" * identifier) = identifier) ;) (expression_statement "FUN_00023ce0();" (call_expression "FUN_00023ce0()" identifier (argument_list "()" ( ))) ;) (return_statement "return;" return ;) })))
(translation_unit "/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n\nvoid * x2nrealloc(void *p,size_t *pn,size_t s)\n\n{\n  void *pvVar1;\n  uint uVar2;\n  \n  uVar2 = *pn;\n  if (p == (void *)0x0) {\n    if (uVar2 == 0) {\n      uVar2 = (uint)(0x40 < s) + (int)(0x40 / (ulonglong)s);\n    }\n    if (((int)((ulonglong)uVar2 * (ulonglong)s) < 0) ||\n       ((int)((ulonglong)uVar2 * (ulonglong)s >> 0x20) != 0)) goto LAB_00023dee;\n  }\n  else {\n    if ((uint)(0x55555554 / (ulonglong)s) <= uVar2) {\nLAB_00023dee:\n                    /* WARNING: Subroutine does not return */\n      xalloc_die();\n    }\n    uVar2 = (uVar2 >> 1) + 1 + uVar2;\n  }\n  *pn = uVar2;\n  pvVar1 = xrealloc(p,uVar2 * s);\n  return pvVar1;\n}\n\n" comment (function_definition "void * x2nrealloc(void *p,size_t *pn,size_t s)\n\n{\n  void *pvVar1;\n  uint uVar2;\n  \n  uVar2 = *pn;\n  if (p == (void *)0x0) {\n    if (uVar2 == 0) {\n      uVar2 = (uint)(0x40 < s) + (int)(0x40 / (ulonglong)s);\n    }\n    if (((int)((ulonglong)uVar2 * (ulonglong)s) < 0) ||\n       ((int)((ulonglong)uVar2 * (ulonglong)s >> 0x20) != 0)) goto LAB_00023dee;\n  }\n  else {\n    if ((uint)(0x55555554 / (ulonglong)s) <= uVar2) {\nLAB_00023dee:\n                    /* WARNING: Subroutine does not return */\n      xalloc_die();\n    }\n    uVar2 = (uVar2 >> 1) + 1 + uVar2;\n  }\n  *pn = uVar2;\n  pvVar1 = xrealloc(p,uVar2 * s);\n  return pvVar1;\n}" primitive_type (pointer_declarator "* x2nrealloc(void *p,size_t *pn,size_t s)" * (function_declarator "x2nrealloc(void *p,size_t *pn,size_t s)" identifier (parameter_list "(void *p,size_t *pn,size_t s)" ( (parameter_declaration "void *p" primitive_type (pointer_declarator "*p" * identifier)) , (parameter_declaration "size_t *pn" primitive_type (pointer_declarator "*pn" * identifier)) , (parameter_declaration "size_t s" primitive_type identifier) )))) (compound_statement "{\n  void *pvVar1;\n  uint uVar2;\n  \n  uVar2 = *pn;\n  if (p == (void *)0x0) {\n    if (uVar2 == 0) {\n      uVar2 = (uint)(0x40 < s) + (int)(0x40 / (ulonglong)s);\n    }\n    if (((int)((ulonglong)uVar2 * (ulonglong)s) < 0) ||\n       ((int)((ulonglong)uVar2 * (ulonglong)s >> 0x20) != 0)) goto LAB_00023dee;\n  }\n  else {\n    if ((uint)(0x55555554 / (ulonglong)s) <= uVar2) {\nLAB_00023dee:\n                    /* WARNING: Subroutine does not return */\n      xalloc_die();\n    }\n    uVar2 = (uVar2 >> 1) + 1 + uVar2;\n  }\n  *pn = uVar2;\n  pvVar1 = xrealloc(p,uVar2 * s);\n  return pvVar1;\n}" { (declaration "void *pvVar1;" primitive_type (pointer_declarator "*pvVar1" * identifier) ;) (declaration "uint uVar2;" type_identifier identifier ;) (expression_statement "uVar2 = *pn;" (assignment_expression "uVar2 = *pn" identifier = (pointer_expression "*pn" * identifier)) ;) (if_statement "if (p == (void *)0x0) {\n    if (uVar2 == 0) {\n      uVar2 = (uint)(0x40 < s) + (int)(0x40 / (ulonglong)s);\n    }\n    if (((int)((ulonglong)uVar2 * (ulonglong)s) < 0) ||\n       ((int)((ulonglong)uVar2 * (ulonglong)s >> 0x20) != 0)) goto LAB_00023dee;\n  }\n  else {\n    if ((uint)(0x55555554 / (ulonglong)s) <= uVar2) {\nLAB_00023dee:\n                    /* WARNING: Subroutine does not return */\n      xalloc_die();\n    }\n    uVar2 = (uVar2 >> 1) + 1 + uVar2;\n  }" if (parenthesized_expression "(p == (void *)0x0)" ( (binary_expression "p == (void *)0x0" identifier == (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    if (uVar2 == 0) {\n      uVar2 = (uint)(0x40 < s) + (int)(0x40 / (ulonglong)s);\n    }\n    if (((int)((ulonglong)uVar2 * (ulonglong)s) < 0) ||\n       ((int)((ulonglong)uVar2 * (ulonglong)s >> 0x20) != 0)) goto LAB_00023dee;\n  }" { (if_statement "if (uVar2 == 0) {\n      uVar2 = (uint)(0x40 < s) + (int)(0x40 / (ulonglong)s);\n    }" if (parenthesized_expression "(uVar2 == 0)" ( (binary_expression "uVar2 == 0" identifier == number_literal) )) (compound_statement "{\n      uVar2 = (uint)(0x40 < s) + (int)(0x40 / (ulonglong)s);\n    }" { (expression_statement "uVar2 = (uint)(0x40 < s) + (int)(0x40 / (ulonglong)s);" (assignment_expression "uVar2 = (uint)(0x40 < s) + (int)(0x40 / (ulonglong)s)" identifier = (binary_expression "(uint)(0x40 < s) + (int)(0x40 / (ulonglong)s)" (call_expression "(uint)(0x40 < s)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(0x40 < s)" ( (binary_expression "0x40 < s" number_literal < identifier) ))) + (cast_expression "(int)(0x40 / (ulonglong)s)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(0x40 / (ulonglong)s)" ( (binary_expression "0x40 / (ulonglong)s" number_literal / (cast_expression "(ulonglong)s" ( (type_descriptor "ulonglong" type_identifier) ) identifier)) ))))) ;) })) (if_statement "if (((int)((ulonglong)uVar2 * (ulonglong)s) < 0) ||\n       ((int)((ulonglong)uVar2 * (ulonglong)s >> 0x20) != 0)) goto LAB_00023dee;" if (parenthesized_expression "(((int)((ulonglong)uVar2 * (ulonglong)s) < 0) ||\n       ((int)((ulonglong)uVar2 * (ulonglong)s >> 0x20) != 0))" ( (binary_expression "((int)((ulonglong)uVar2 * (ulonglong)s) < 0) ||\n       ((int)((ulonglong)uVar2 * (ulonglong)s >> 0x20) != 0)" (parenthesized_expression "((int)((ulonglong)uVar2 * (ulonglong)s) < 0)" ( (binary_expression "(int)((ulonglong)uVar2 * (ulonglong)s) < 0" (cast_expression "(int)((ulonglong)uVar2 * (ulonglong)s)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((ulonglong)uVar2 * (ulonglong)s)" ( (binary_expression "(ulonglong)uVar2 * (ulonglong)s" (cast_expression "(ulonglong)uVar2" ( (type_descriptor "ulonglong" type_identifier) ) identifier) * (cast_expression "(ulonglong)s" ( (type_descriptor "ulonglong" type_identifier) ) identifier)) ))) < number_literal) )) || (parenthesized_expression "((int)((ulonglong)uVar2 * (ulonglong)s >> 0x20) != 0)" ( (binary_expression "(int)((ulonglong)uVar2 * (ulonglong)s >> 0x20) != 0" (cast_expression "(int)((ulonglong)uVar2 * (ulonglong)s >> 0x20)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((ulonglong)uVar2 * (ulonglong)s >> 0x20)" ( (binary_expression "(ulonglong)uVar2 * (ulonglong)s >> 0x20" (binary_expression "(ulonglong)uVar2 * (ulonglong)s" (cast_expression "(ulonglong)uVar2" ( (type_descriptor "ulonglong" type_identifier) ) identifier) * (cast_expression "(ulonglong)s" ( (type_descriptor "ulonglong" type_identifier) ) identifier)) >> number_literal) ))) != number_literal) ))) )) (goto_statement "goto LAB_00023dee;" goto statement_identifier ;)) }) (else_clause "else {\n    if ((uint)(0x55555554 / (ulonglong)s) <= uVar2) {\nLAB_00023dee:\n                    /* WARNING: Subroutine does not return */\n      xalloc_die();\n    }\n    uVar2 = (uVar2 >> 1) + 1 + uVar2;\n  }" else (compound_statement "{\n    if ((uint)(0x55555554 / (ulonglong)s) <= uVar2) {\nLAB_00023dee:\n                    /* WARNING: Subroutine does not return */\n      xalloc_die();\n    }\n    uVar2 = (uVar2 >> 1) + 1 + uVar2;\n  }" { (if_statement "if ((uint)(0x55555554 / (ulonglong)s) <= uVar2) {\nLAB_00023dee:\n                    /* WARNING: Subroutine does not return */\n      xalloc_die();\n    }" if (parenthesized_expression "((uint)(0x55555554 / (ulonglong)s) <= uVar2)" ( (binary_expression "(uint)(0x55555554 / (ulonglong)s) <= uVar2" (call_expression "(uint)(0x55555554 / (ulonglong)s)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(0x55555554 / (ulonglong)s)" ( (binary_expression "0x55555554 / (ulonglong)s" number_literal / (cast_expression "(ulonglong)s" ( (type_descriptor "ulonglong" type_identifier) ) identifier)) ))) <= identifier) )) (compound_statement "{\nLAB_00023dee:\n                    /* WARNING: Subroutine does not return */\n      xalloc_die();\n    }" { (labeled_statement "LAB_00023dee:\n                    /* WARNING: Subroutine does not return */\n      xalloc_die();" statement_identifier : comment (expression_statement "xalloc_die();" (call_expression "xalloc_die()" identifier (argument_list "()" ( ))) ;)) })) (expression_statement "uVar2 = (uVar2 >> 1) + 1 + uVar2;" (assignment_expression "uVar2 = (uVar2 >> 1) + 1 + uVar2" identifier = (binary_expression "(uVar2 >> 1) + 1 + uVar2" (binary_expression "(uVar2 >> 1) + 1" (parenthesized_expression "(uVar2 >> 1)" ( (binary_expression "uVar2 >> 1" identifier >> number_literal) )) + number_literal) + identifier)) ;) }))) (expression_statement "*pn = uVar2;" (assignment_expression "*pn = uVar2" (pointer_expression "*pn" * identifier) = identifier) ;) (expression_statement "pvVar1 = xrealloc(p,uVar2 * s);" (assignment_expression "pvVar1 = xrealloc(p,uVar2 * s)" identifier = (call_expression "xrealloc(p,uVar2 * s)" identifier (argument_list "(p,uVar2 * s)" ( identifier , (binary_expression "uVar2 * s" identifier * identifier) )))) ;) (return_statement "return pvVar1;" return identifier ;) })))
(translation_unit "void FUN_00023d80(int param_1,uint *param_2,uint param_3)\n\n{\n  uint uVar1;\n  \n  uVar1 = *param_2;\n  if (param_1 == 0) {\n    if (uVar1 == 0) {\n      uVar1 = (uint)(0x40 < param_3) + (int)(0x40 / (ulonglong)param_3);\n    }\n    if (((int)((ulonglong)uVar1 * (ulonglong)param_3) < 0) ||\n       ((int)((ulonglong)uVar1 * (ulonglong)param_3 >> 0x20) != 0)) goto LAB_00023dee;\n  }\n  else {\n    if ((uint)(0x55555554 / (ulonglong)param_3) <= uVar1) {\nLAB_00023dee:\n                    \n      FUN_00023f50();\n    }\n    uVar1 = (uVar1 >> 1) + 1 + uVar1;\n  }\n  *param_2 = uVar1;\n  FUN_00023ce0();\n  return;\n}\n\n" (function_definition "void FUN_00023d80(int param_1,uint *param_2,uint param_3)\n\n{\n  uint uVar1;\n  \n  uVar1 = *param_2;\n  if (param_1 == 0) {\n    if (uVar1 == 0) {\n      uVar1 = (uint)(0x40 < param_3) + (int)(0x40 / (ulonglong)param_3);\n    }\n    if (((int)((ulonglong)uVar1 * (ulonglong)param_3) < 0) ||\n       ((int)((ulonglong)uVar1 * (ulonglong)param_3 >> 0x20) != 0)) goto LAB_00023dee;\n  }\n  else {\n    if ((uint)(0x55555554 / (ulonglong)param_3) <= uVar1) {\nLAB_00023dee:\n                    \n      FUN_00023f50();\n    }\n    uVar1 = (uVar1 >> 1) + 1 + uVar1;\n  }\n  *param_2 = uVar1;\n  FUN_00023ce0();\n  return;\n}" primitive_type (function_declarator "FUN_00023d80(int param_1,uint *param_2,uint param_3)" identifier (parameter_list "(int param_1,uint *param_2,uint param_3)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "uint *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "uint param_3" type_identifier identifier) ))) (compound_statement "{\n  uint uVar1;\n  \n  uVar1 = *param_2;\n  if (param_1 == 0) {\n    if (uVar1 == 0) {\n      uVar1 = (uint)(0x40 < param_3) + (int)(0x40 / (ulonglong)param_3);\n    }\n    if (((int)((ulonglong)uVar1 * (ulonglong)param_3) < 0) ||\n       ((int)((ulonglong)uVar1 * (ulonglong)param_3 >> 0x20) != 0)) goto LAB_00023dee;\n  }\n  else {\n    if ((uint)(0x55555554 / (ulonglong)param_3) <= uVar1) {\nLAB_00023dee:\n                    \n      FUN_00023f50();\n    }\n    uVar1 = (uVar1 >> 1) + 1 + uVar1;\n  }\n  *param_2 = uVar1;\n  FUN_00023ce0();\n  return;\n}" { (declaration "uint uVar1;" type_identifier identifier ;) (expression_statement "uVar1 = *param_2;" (assignment_expression "uVar1 = *param_2" identifier = (pointer_expression "*param_2" * identifier)) ;) (if_statement "if (param_1 == 0) {\n    if (uVar1 == 0) {\n      uVar1 = (uint)(0x40 < param_3) + (int)(0x40 / (ulonglong)param_3);\n    }\n    if (((int)((ulonglong)uVar1 * (ulonglong)param_3) < 0) ||\n       ((int)((ulonglong)uVar1 * (ulonglong)param_3 >> 0x20) != 0)) goto LAB_00023dee;\n  }\n  else {\n    if ((uint)(0x55555554 / (ulonglong)param_3) <= uVar1) {\nLAB_00023dee:\n                    \n      FUN_00023f50();\n    }\n    uVar1 = (uVar1 >> 1) + 1 + uVar1;\n  }" if (parenthesized_expression "(param_1 == 0)" ( (binary_expression "param_1 == 0" identifier == number_literal) )) (compound_statement "{\n    if (uVar1 == 0) {\n      uVar1 = (uint)(0x40 < param_3) + (int)(0x40 / (ulonglong)param_3);\n    }\n    if (((int)((ulonglong)uVar1 * (ulonglong)param_3) < 0) ||\n       ((int)((ulonglong)uVar1 * (ulonglong)param_3 >> 0x20) != 0)) goto LAB_00023dee;\n  }" { (if_statement "if (uVar1 == 0) {\n      uVar1 = (uint)(0x40 < param_3) + (int)(0x40 / (ulonglong)param_3);\n    }" if (parenthesized_expression "(uVar1 == 0)" ( (binary_expression "uVar1 == 0" identifier == number_literal) )) (compound_statement "{\n      uVar1 = (uint)(0x40 < param_3) + (int)(0x40 / (ulonglong)param_3);\n    }" { (expression_statement "uVar1 = (uint)(0x40 < param_3) + (int)(0x40 / (ulonglong)param_3);" (assignment_expression "uVar1 = (uint)(0x40 < param_3) + (int)(0x40 / (ulonglong)param_3)" identifier = (binary_expression "(uint)(0x40 < param_3) + (int)(0x40 / (ulonglong)param_3)" (call_expression "(uint)(0x40 < param_3)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(0x40 < param_3)" ( (binary_expression "0x40 < param_3" number_literal < identifier) ))) + (cast_expression "(int)(0x40 / (ulonglong)param_3)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(0x40 / (ulonglong)param_3)" ( (binary_expression "0x40 / (ulonglong)param_3" number_literal / (cast_expression "(ulonglong)param_3" ( (type_descriptor "ulonglong" type_identifier) ) identifier)) ))))) ;) })) (if_statement "if (((int)((ulonglong)uVar1 * (ulonglong)param_3) < 0) ||\n       ((int)((ulonglong)uVar1 * (ulonglong)param_3 >> 0x20) != 0)) goto LAB_00023dee;" if (parenthesized_expression "(((int)((ulonglong)uVar1 * (ulonglong)param_3) < 0) ||\n       ((int)((ulonglong)uVar1 * (ulonglong)param_3 >> 0x20) != 0))" ( (binary_expression "((int)((ulonglong)uVar1 * (ulonglong)param_3) < 0) ||\n       ((int)((ulonglong)uVar1 * (ulonglong)param_3 >> 0x20) != 0)" (parenthesized_expression "((int)((ulonglong)uVar1 * (ulonglong)param_3) < 0)" ( (binary_expression "(int)((ulonglong)uVar1 * (ulonglong)param_3) < 0" (cast_expression "(int)((ulonglong)uVar1 * (ulonglong)param_3)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((ulonglong)uVar1 * (ulonglong)param_3)" ( (binary_expression "(ulonglong)uVar1 * (ulonglong)param_3" (cast_expression "(ulonglong)uVar1" ( (type_descriptor "ulonglong" type_identifier) ) identifier) * (cast_expression "(ulonglong)param_3" ( (type_descriptor "ulonglong" type_identifier) ) identifier)) ))) < number_literal) )) || (parenthesized_expression "((int)((ulonglong)uVar1 * (ulonglong)param_3 >> 0x20) != 0)" ( (binary_expression "(int)((ulonglong)uVar1 * (ulonglong)param_3 >> 0x20) != 0" (cast_expression "(int)((ulonglong)uVar1 * (ulonglong)param_3 >> 0x20)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((ulonglong)uVar1 * (ulonglong)param_3 >> 0x20)" ( (binary_expression "(ulonglong)uVar1 * (ulonglong)param_3 >> 0x20" (binary_expression "(ulonglong)uVar1 * (ulonglong)param_3" (cast_expression "(ulonglong)uVar1" ( (type_descriptor "ulonglong" type_identifier) ) identifier) * (cast_expression "(ulonglong)param_3" ( (type_descriptor "ulonglong" type_identifier) ) identifier)) >> number_literal) ))) != number_literal) ))) )) (goto_statement "goto LAB_00023dee;" goto statement_identifier ;)) }) (else_clause "else {\n    if ((uint)(0x55555554 / (ulonglong)param_3) <= uVar1) {\nLAB_00023dee:\n                    \n      FUN_00023f50();\n    }\n    uVar1 = (uVar1 >> 1) + 1 + uVar1;\n  }" else (compound_statement "{\n    if ((uint)(0x55555554 / (ulonglong)param_3) <= uVar1) {\nLAB_00023dee:\n                    \n      FUN_00023f50();\n    }\n    uVar1 = (uVar1 >> 1) + 1 + uVar1;\n  }" { (if_statement "if ((uint)(0x55555554 / (ulonglong)param_3) <= uVar1) {\nLAB_00023dee:\n                    \n      FUN_00023f50();\n    }" if (parenthesized_expression "((uint)(0x55555554 / (ulonglong)param_3) <= uVar1)" ( (binary_expression "(uint)(0x55555554 / (ulonglong)param_3) <= uVar1" (call_expression "(uint)(0x55555554 / (ulonglong)param_3)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(0x55555554 / (ulonglong)param_3)" ( (binary_expression "0x55555554 / (ulonglong)param_3" number_literal / (cast_expression "(ulonglong)param_3" ( (type_descriptor "ulonglong" type_identifier) ) identifier)) ))) <= identifier) )) (compound_statement "{\nLAB_00023dee:\n                    \n      FUN_00023f50();\n    }" { (labeled_statement "LAB_00023dee:\n                    \n      FUN_00023f50();" statement_identifier : (expression_statement "FUN_00023f50();" (call_expression "FUN_00023f50()" identifier (argument_list "()" ( ))) ;)) })) (expression_statement "uVar1 = (uVar1 >> 1) + 1 + uVar1;" (assignment_expression "uVar1 = (uVar1 >> 1) + 1 + uVar1" identifier = (binary_expression "(uVar1 >> 1) + 1 + uVar1" (binary_expression "(uVar1 >> 1) + 1" (parenthesized_expression "(uVar1 >> 1)" ( (binary_expression "uVar1 >> 1" identifier >> number_literal) )) + number_literal) + identifier)) ;) }))) (expression_statement "*param_2 = uVar1;" (assignment_expression "*param_2 = uVar1" (pointer_expression "*param_2" * identifier) = identifier) ;) (expression_statement "FUN_00023ce0();" (call_expression "FUN_00023ce0()" identifier (argument_list "()" ( ))) ;) (return_statement "return;" return ;) })))
(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 ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression LIT < IDENT) ))) + (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression LIT / (cast_expression ( (type_descriptor TYPE) ) IDENT)) ))))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * (cast_expression ( (type_descriptor TYPE) ) IDENT)) ))) < LIT) )) || (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * (cast_expression ( (type_descriptor TYPE) ) IDENT)) >> LIT) ))) != LIT) ))) )) (goto_statement goto statement_identifier ;)) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression LIT / (cast_expression ( (type_descriptor TYPE) ) IDENT)) ))) <= IDENT) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (call_expression IDENT (argument_list ( ))) ;)) })) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (parenthesized_expression ( (binary_expression IDENT >> LIT) )) + LIT) + IDENT)) ;) }))) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (return_statement return ;) })))
(function_definition "void FUN_00023d80(int param_1,uint *param_2,uint param_3)\n\n{\n  uint uVar1;\n  \n  uVar1 = *param_2;\n  if (param_1 == 0) {\n    if (uVar1 == 0) {\n      uVar1 = (uint)(0x40 < param_3) + (int)(0x40 / (ulonglong)param_3);\n    }\n    if (((int)((ulonglong)uVar1 * (ulonglong)param_3) < 0) ||\n       ((int)((ulonglong)uVar1 * (ulonglong)param_3 >> 0x20) != 0)) goto LAB_00023dee;\n  }\n  else {\n    if ((uint)(0x55555554 / (ulonglong)param_3) <= uVar1) {\nLAB_00023dee:\n                    \n      FUN_00023f50();\n    }\n    uVar1 = (uVar1 >> 1) + 1 + uVar1;\n  }\n  *param_2 = uVar1;\n  FUN_00023ce0();\n  return;\n}" (primitive_type "void") (function_declarator "FUN_00023d80(int param_1,uint *param_2,uint param_3)" (identifier "FUN_00023d80") (parameter_list "(int param_1,uint *param_2,uint param_3)" (( "(") (parameter_declaration "int param_1" (primitive_type "int") (identifier "param_1")) (, ",") (parameter_declaration "uint *param_2" (type_identifier "uint") (pointer_declarator "*param_2" (* "*") (identifier "param_2"))) (, ",") (parameter_declaration "uint param_3" (type_identifier "uint") (identifier "param_3")) () ")"))) (compound_statement "{\n  uint uVar1;\n  \n  uVar1 = *param_2;\n  if (param_1 == 0) {\n    if (uVar1 == 0) {\n      uVar1 = (uint)(0x40 < param_3) + (int)(0x40 / (ulonglong)param_3);\n    }\n    if (((int)((ulonglong)uVar1 * (ulonglong)param_3) < 0) ||\n       ((int)((ulonglong)uVar1 * (ulonglong)param_3 >> 0x20) != 0)) goto LAB_00023dee;\n  }\n  else {\n    if ((uint)(0x55555554 / (ulonglong)param_3) <= uVar1) {\nLAB_00023dee:\n                    \n      FUN_00023f50();\n    }\n    uVar1 = (uVar1 >> 1) + 1 + uVar1;\n  }\n  *param_2 = uVar1;\n  FUN_00023ce0();\n  return;\n}" ({ "{") (declaration "uint uVar1;" (type_identifier "uint") (identifier "uVar1") (; ";")) (expression_statement "uVar1 = *param_2;" (assignment_expression "uVar1 = *param_2" (identifier "uVar1") (= "=") (pointer_expression "*param_2" (* "*") (identifier "param_2"))) (; ";")) (if_statement "if (param_1 == 0) {\n    if (uVar1 == 0) {\n      uVar1 = (uint)(0x40 < param_3) + (int)(0x40 / (ulonglong)param_3);\n    }\n    if (((int)((ulonglong)uVar1 * (ulonglong)param_3) < 0) ||\n       ((int)((ulonglong)uVar1 * (ulonglong)param_3 >> 0x20) != 0)) goto LAB_00023dee;\n  }\n  else {\n    if ((uint)(0x55555554 / (ulonglong)param_3) <= uVar1) {\nLAB_00023dee:\n                    \n      FUN_00023f50();\n    }\n    uVar1 = (uVar1 >> 1) + 1 + uVar1;\n  }" (if "if") (parenthesized_expression "(param_1 == 0)" (( "(") (binary_expression "param_1 == 0" (identifier "param_1") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    if (uVar1 == 0) {\n      uVar1 = (uint)(0x40 < param_3) + (int)(0x40 / (ulonglong)param_3);\n    }\n    if (((int)((ulonglong)uVar1 * (ulonglong)param_3) < 0) ||\n       ((int)((ulonglong)uVar1 * (ulonglong)param_3 >> 0x20) != 0)) goto LAB_00023dee;\n  }" ({ "{") (if_statement "if (uVar1 == 0) {\n      uVar1 = (uint)(0x40 < param_3) + (int)(0x40 / (ulonglong)param_3);\n    }" (if "if") (parenthesized_expression "(uVar1 == 0)" (( "(") (binary_expression "uVar1 == 0" (identifier "uVar1") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      uVar1 = (uint)(0x40 < param_3) + (int)(0x40 / (ulonglong)param_3);\n    }" ({ "{") (expression_statement "uVar1 = (uint)(0x40 < param_3) + (int)(0x40 / (ulonglong)param_3);" (assignment_expression "uVar1 = (uint)(0x40 < param_3) + (int)(0x40 / (ulonglong)param_3)" (identifier "uVar1") (= "=") (binary_expression "(uint)(0x40 < param_3) + (int)(0x40 / (ulonglong)param_3)" (call_expression "(uint)(0x40 < param_3)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(0x40 < param_3)" (( "(") (binary_expression "0x40 < param_3" (number_literal "0x40") (< "<") (identifier "param_3")) () ")"))) (+ "+") (cast_expression "(int)(0x40 / (ulonglong)param_3)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "(0x40 / (ulonglong)param_3)" (( "(") (binary_expression "0x40 / (ulonglong)param_3" (number_literal "0x40") (/ "/") (cast_expression "(ulonglong)param_3" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (identifier "param_3"))) () ")"))))) (; ";")) (} "}"))) (if_statement "if (((int)((ulonglong)uVar1 * (ulonglong)param_3) < 0) ||\n       ((int)((ulonglong)uVar1 * (ulonglong)param_3 >> 0x20) != 0)) goto LAB_00023dee;" (if "if") (parenthesized_expression "(((int)((ulonglong)uVar1 * (ulonglong)param_3) < 0) ||\n       ((int)((ulonglong)uVar1 * (ulonglong)param_3 >> 0x20) != 0))" (( "(") (binary_expression "((int)((ulonglong)uVar1 * (ulonglong)param_3) < 0) ||\n       ((int)((ulonglong)uVar1 * (ulonglong)param_3 >> 0x20) != 0)" (parenthesized_expression "((int)((ulonglong)uVar1 * (ulonglong)param_3) < 0)" (( "(") (binary_expression "(int)((ulonglong)uVar1 * (ulonglong)param_3) < 0" (cast_expression "(int)((ulonglong)uVar1 * (ulonglong)param_3)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "((ulonglong)uVar1 * (ulonglong)param_3)" (( "(") (binary_expression "(ulonglong)uVar1 * (ulonglong)param_3" (cast_expression "(ulonglong)uVar1" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (identifier "uVar1")) (* "*") (cast_expression "(ulonglong)param_3" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (identifier "param_3"))) () ")"))) (< "<") (number_literal "0")) () ")")) (|| "||") (parenthesized_expression "((int)((ulonglong)uVar1 * (ulonglong)param_3 >> 0x20) != 0)" (( "(") (binary_expression "(int)((ulonglong)uVar1 * (ulonglong)param_3 >> 0x20) != 0" (cast_expression "(int)((ulonglong)uVar1 * (ulonglong)param_3 >> 0x20)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "((ulonglong)uVar1 * (ulonglong)param_3 >> 0x20)" (( "(") (binary_expression "(ulonglong)uVar1 * (ulonglong)param_3 >> 0x20" (binary_expression "(ulonglong)uVar1 * (ulonglong)param_3" (cast_expression "(ulonglong)uVar1" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (identifier "uVar1")) (* "*") (cast_expression "(ulonglong)param_3" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (identifier "param_3"))) (>> ">>") (number_literal "0x20")) () ")"))) (!= "!=") (number_literal "0")) () ")"))) () ")")) (goto_statement "goto LAB_00023dee;" (goto "goto") (statement_identifier "LAB_00023dee") (; ";"))) (} "}")) (else_clause "else {\n    if ((uint)(0x55555554 / (ulonglong)param_3) <= uVar1) {\nLAB_00023dee:\n                    \n      FUN_00023f50();\n    }\n    uVar1 = (uVar1 >> 1) + 1 + uVar1;\n  }" (else "else") (compound_statement "{\n    if ((uint)(0x55555554 / (ulonglong)param_3) <= uVar1) {\nLAB_00023dee:\n                    \n      FUN_00023f50();\n    }\n    uVar1 = (uVar1 >> 1) + 1 + uVar1;\n  }" ({ "{") (if_statement "if ((uint)(0x55555554 / (ulonglong)param_3) <= uVar1) {\nLAB_00023dee:\n                    \n      FUN_00023f50();\n    }" (if "if") (parenthesized_expression "((uint)(0x55555554 / (ulonglong)param_3) <= uVar1)" (( "(") (binary_expression "(uint)(0x55555554 / (ulonglong)param_3) <= uVar1" (call_expression "(uint)(0x55555554 / (ulonglong)param_3)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(0x55555554 / (ulonglong)param_3)" (( "(") (binary_expression "0x55555554 / (ulonglong)param_3" (number_literal "0x55555554") (/ "/") (cast_expression "(ulonglong)param_3" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (identifier "param_3"))) () ")"))) (<= "<=") (identifier "uVar1")) () ")")) (compound_statement "{\nLAB_00023dee:\n                    \n      FUN_00023f50();\n    }" ({ "{") (labeled_statement "LAB_00023dee:\n                    \n      FUN_00023f50();" (statement_identifier "LAB_00023dee") (: ":") (expression_statement "FUN_00023f50();" (call_expression "FUN_00023f50()" (identifier "FUN_00023f50") (argument_list "()" (( "(") () ")"))) (; ";"))) (} "}"))) (expression_statement "uVar1 = (uVar1 >> 1) + 1 + uVar1;" (assignment_expression "uVar1 = (uVar1 >> 1) + 1 + uVar1" (identifier "uVar1") (= "=") (binary_expression "(uVar1 >> 1) + 1 + uVar1" (binary_expression "(uVar1 >> 1) + 1" (parenthesized_expression "(uVar1 >> 1)" (( "(") (binary_expression "uVar1 >> 1" (identifier "uVar1") (>> ">>") (number_literal "1")) () ")")) (+ "+") (number_literal "1")) (+ "+") (identifier "uVar1"))) (; ";")) (} "}")))) (expression_statement "*param_2 = uVar1;" (assignment_expression "*param_2 = uVar1" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (= "=") (identifier "uVar1")) (; ";")) (expression_statement "FUN_00023ce0();" (call_expression "FUN_00023ce0()" (identifier "FUN_00023ce0") (argument_list "()" (( "(") () ")"))) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}")))

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

void * function_1(void *var_1,size_t *pn,size_t var_3)

{
  void *pvVar1;
  type_1 var_2;
  
  var_2 = *pn;
  if (var_1 == (void *)0x0) {
    if (var_2 == 0) {
      var_2 = (type_1)(0x40 < var_3) + (int)(0x40 / (type_2)var_3);
    }
    if (((int)((type_2)var_2 * (type_2)var_3) < 0) ||
       ((int)((type_2)var_2 * (type_2)var_3 >> 0x20) != 0)) goto LAB_00023dee;
  }
  else {
    if ((type_1)(0x55555554 / (type_2)var_3) <= var_2) {
LAB_00023dee:
                    /* WARNING: Subroutine does not return */
      var_4();
    }
    var_2 = (var_2 >> 1) + 1 + var_2;
  }
  *pn = var_2;
  pvVar1 = var_5(var_1,var_2 * var_3);
  return pvVar1;
}


(translation_unit (function_definition type: (primitive_type) declarator: (function_declarator declarator: (identifier) parameters: (parameter_list (parameter_declaration type: (primitive_type) declarator: (identifier)) (parameter_declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (parameter_declaration type: (type_identifier) declarator: (identifier)))) body: (compound_statement (declaration type: (type_identifier) declarator: (identifier)) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (number_literal) right: (identifier)))) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (parenthesized_expression (binary_expression left: (number_literal) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)))))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier))))) right: (number_literal))) right: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (parenthesized_expression (binary_expression left: (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier))) right: (number_literal)))) right: (number_literal))))) consequence: (goto_statement label: (statement_identifier)))) alternative: (else_clause (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (number_literal) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier))))) right: (identifier))) consequence: (compound_statement (labeled_statement label: (statement_identifier) (expression_statement (call_expression function: (identifier) arguments: (argument_list)))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal)) right: (identifier))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (identifier))) (expression_statement (call_expression function: (identifier) arguments: (argument_list))) (return_statement))))

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

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

{
  uint uVar1;
  
  uVar1 = *param_2;
  if (param_1 == 0) {
    if (uVar1 == 0) {
      uVar1 = (uint)(0x40 < param_3) + (int)(0x40 / (ulonglong)param_3);
    }
    if (((int)((ulonglong)uVar1 * (ulonglong)param_3) < 0) ||
       ((int)((ulonglong)uVar1 * (ulonglong)param_3 >> 0x20) != 0)) goto LAB_00023dee;
  }
  else {
    if ((uint)(0x55555554 / (ulonglong)param_3) <= uVar1) {
LAB_00023dee:
                    /* WARNING: Subroutine does not return */
      FUN_00023f50();
    }
    uVar1 = (uVar1 >> 1) + 1 + uVar1;
  }
  *param_2 = uVar1;
  FUN_00023ce0();
  return;
}

