
int walBusyLock(Wal *pWal,_func_int_void_ptr *xBusy,void *pBusyArg,int lockIdx,int n)

{
  int iVar1;
  
  while( true ) {
    iVar1 = walLockExclusive(pWal,lockIdx,n);
    if (xBusy == (_func_int_void_ptr *)0x0) {
      return iVar1;
    }
    if (iVar1 != 5) break;
    iVar1 = (*xBusy)(pBusyArg);
    if (iVar1 == 0) {
      return 5;
    }
  }
  return iVar1;
}



int FUN_00044d7c(undefined4 param_1,code *param_2,undefined4 param_3,undefined4 param_4,
                undefined4 param_5)

{
  int iVar1;
  
  while( true ) {
    iVar1 = FUN_00044cd8(param_1,param_4,param_5);
    if (param_2 == (code *)0x0) {
      return iVar1;
    }
    if (iVar1 != 5) break;
    iVar1 = (*param_2)(param_3);
    if (iVar1 == 0) {
      return 5;
    }
  }
  return iVar1;
}


lui gp,0x15
addiu gp,gp,0x2ba4
addu gp,gp,t9
addiu sp,sp,-0x40
sw ra,0x3c(sp)
sw s7,0x38(sp)
sw s6,0x34(sp)
sw s5,0x30(sp)
sw s4,0x2c(sp)
sw s3,0x28(sp)
sw s2,0x24(sp)
sw s1,0x20(sp)
sw s0,0x1c(sp)
sw gp,0x10(sp)
or s5,a0,zero
or s1,a1,zero
or s7,a2,zero
or s4,a3,zero
lw s3,0x50(sp)
lw s2,-0x7dc8(gp)
addiu s2,s2,0x4cd8
li s6,0x5
or a2,s3,zero
or a1,s4,zero
or a0,s5,zero
or t9,s2,zero
bal 0x00044cd8
_nop
lw gp,0x10(sp)
beq s1,zero,0x00044e18
_or s0,v0,zero
bne v0,s6,0x00044e18
_or a0,s7,zero
or t9,s1,zero
jalr t9
_nop
lw gp,0x10(sp)
bne v0,zero,0x00044dd8
_or a2,s3,zero
or v0,s0,zero
lw ra,0x3c(sp)
lw s7,0x38(sp)
lw s6,0x34(sp)
lw s5,0x30(sp)
lw s4,0x2c(sp)
lw s3,0x28(sp)
lw s2,0x24(sp)
lw s1,0x20(sp)
lw s0,0x1c(sp)
jr ra
_addiu sp,sp,0x40
(translation_unit "int FUN_00044d7c(undefined4 param_1,code *param_2,undefined4 param_3,undefined4 param_4,\n                undefined4 param_5)\n\n{\n  int iVar1;\n  \n  while( true ) {\n    iVar1 = FUN_00044cd8(param_1,param_4,param_5);\n    if (param_2 == (code *)0x0) {\n      return iVar1;\n    }\n    if (iVar1 != 5) break;\n    iVar1 = (*param_2)(param_3);\n    if (iVar1 == 0) {\n      return 5;\n    }\n  }\n  return iVar1;\n}\n\n" (function_definition "int FUN_00044d7c(undefined4 param_1,code *param_2,undefined4 param_3,undefined4 param_4,\n                undefined4 param_5)\n\n{\n  int iVar1;\n  \n  while( true ) {\n    iVar1 = FUN_00044cd8(param_1,param_4,param_5);\n    if (param_2 == (code *)0x0) {\n      return iVar1;\n    }\n    if (iVar1 != 5) break;\n    iVar1 = (*param_2)(param_3);\n    if (iVar1 == 0) {\n      return 5;\n    }\n  }\n  return iVar1;\n}" primitive_type (function_declarator "FUN_00044d7c(undefined4 param_1,code *param_2,undefined4 param_3,undefined4 param_4,\n                undefined4 param_5)" identifier (parameter_list "(undefined4 param_1,code *param_2,undefined4 param_3,undefined4 param_4,\n                undefined4 param_5)" ( (parameter_declaration "undefined4 param_1" type_identifier identifier) , (parameter_declaration "code *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "undefined4 param_3" type_identifier identifier) , (parameter_declaration "undefined4 param_4" type_identifier identifier) , (parameter_declaration "undefined4 param_5" type_identifier identifier) ))) (compound_statement "{\n  int iVar1;\n  \n  while( true ) {\n    iVar1 = FUN_00044cd8(param_1,param_4,param_5);\n    if (param_2 == (code *)0x0) {\n      return iVar1;\n    }\n    if (iVar1 != 5) break;\n    iVar1 = (*param_2)(param_3);\n    if (iVar1 == 0) {\n      return 5;\n    }\n  }\n  return iVar1;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (while_statement "while( true ) {\n    iVar1 = FUN_00044cd8(param_1,param_4,param_5);\n    if (param_2 == (code *)0x0) {\n      return iVar1;\n    }\n    if (iVar1 != 5) break;\n    iVar1 = (*param_2)(param_3);\n    if (iVar1 == 0) {\n      return 5;\n    }\n  }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n    iVar1 = FUN_00044cd8(param_1,param_4,param_5);\n    if (param_2 == (code *)0x0) {\n      return iVar1;\n    }\n    if (iVar1 != 5) break;\n    iVar1 = (*param_2)(param_3);\n    if (iVar1 == 0) {\n      return 5;\n    }\n  }" { (expression_statement "iVar1 = FUN_00044cd8(param_1,param_4,param_5);" (assignment_expression "iVar1 = FUN_00044cd8(param_1,param_4,param_5)" identifier = (call_expression "FUN_00044cd8(param_1,param_4,param_5)" identifier (argument_list "(param_1,param_4,param_5)" ( identifier , identifier , identifier )))) ;) (if_statement "if (param_2 == (code *)0x0) {\n      return iVar1;\n    }" if (parenthesized_expression "(param_2 == (code *)0x0)" ( (binary_expression "param_2 == (code *)0x0" identifier == (cast_expression "(code *)0x0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      return iVar1;\n    }" { (return_statement "return iVar1;" return identifier ;) })) (if_statement "if (iVar1 != 5) break;" if (parenthesized_expression "(iVar1 != 5)" ( (binary_expression "iVar1 != 5" identifier != number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar1 = (*param_2)(param_3);" (assignment_expression "iVar1 = (*param_2)(param_3)" identifier = (call_expression "(*param_2)(param_3)" (parenthesized_expression "(*param_2)" ( (pointer_expression "*param_2" * identifier) )) (argument_list "(param_3)" ( identifier )))) ;) (if_statement "if (iVar1 == 0) {\n      return 5;\n    }" if (parenthesized_expression "(iVar1 == 0)" ( (binary_expression "iVar1 == 0" identifier == number_literal) )) (compound_statement "{\n      return 5;\n    }" { (return_statement "return 5;" return number_literal ;) })) })) (return_statement "return iVar1;" return identifier ;) })))
(translation_unit "int walBusyLock(Wal *pWal,_func_int_void_ptr *xBusy,void *pBusyArg,int lockIdx,int n)\n\n{\n  int iVar1;\n  \n  while( true ) {\n    iVar1 = walLockExclusive(pWal,lockIdx,n);\n    if (xBusy == (_func_int_void_ptr *)0x0) {\n      return iVar1;\n    }\n    if (iVar1 != 5) break;\n    iVar1 = (*xBusy)(pBusyArg);\n    if (iVar1 == 0) {\n      return 5;\n    }\n  }\n  return iVar1;\n}\n\n" (function_definition "int walBusyLock(Wal *pWal,_func_int_void_ptr *xBusy,void *pBusyArg,int lockIdx,int n)\n\n{\n  int iVar1;\n  \n  while( true ) {\n    iVar1 = walLockExclusive(pWal,lockIdx,n);\n    if (xBusy == (_func_int_void_ptr *)0x0) {\n      return iVar1;\n    }\n    if (iVar1 != 5) break;\n    iVar1 = (*xBusy)(pBusyArg);\n    if (iVar1 == 0) {\n      return 5;\n    }\n  }\n  return iVar1;\n}" primitive_type (function_declarator "walBusyLock(Wal *pWal,_func_int_void_ptr *xBusy,void *pBusyArg,int lockIdx,int n)" identifier (parameter_list "(Wal *pWal,_func_int_void_ptr *xBusy,void *pBusyArg,int lockIdx,int n)" ( (parameter_declaration "Wal *pWal" type_identifier (pointer_declarator "*pWal" * identifier)) , (parameter_declaration "_func_int_void_ptr *xBusy" type_identifier (pointer_declarator "*xBusy" * identifier)) , (parameter_declaration "void *pBusyArg" primitive_type (pointer_declarator "*pBusyArg" * identifier)) , (parameter_declaration "int lockIdx" primitive_type identifier) , (parameter_declaration "int n" primitive_type identifier) ))) (compound_statement "{\n  int iVar1;\n  \n  while( true ) {\n    iVar1 = walLockExclusive(pWal,lockIdx,n);\n    if (xBusy == (_func_int_void_ptr *)0x0) {\n      return iVar1;\n    }\n    if (iVar1 != 5) break;\n    iVar1 = (*xBusy)(pBusyArg);\n    if (iVar1 == 0) {\n      return 5;\n    }\n  }\n  return iVar1;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (while_statement "while( true ) {\n    iVar1 = walLockExclusive(pWal,lockIdx,n);\n    if (xBusy == (_func_int_void_ptr *)0x0) {\n      return iVar1;\n    }\n    if (iVar1 != 5) break;\n    iVar1 = (*xBusy)(pBusyArg);\n    if (iVar1 == 0) {\n      return 5;\n    }\n  }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n    iVar1 = walLockExclusive(pWal,lockIdx,n);\n    if (xBusy == (_func_int_void_ptr *)0x0) {\n      return iVar1;\n    }\n    if (iVar1 != 5) break;\n    iVar1 = (*xBusy)(pBusyArg);\n    if (iVar1 == 0) {\n      return 5;\n    }\n  }" { (expression_statement "iVar1 = walLockExclusive(pWal,lockIdx,n);" (assignment_expression "iVar1 = walLockExclusive(pWal,lockIdx,n)" identifier = (call_expression "walLockExclusive(pWal,lockIdx,n)" identifier (argument_list "(pWal,lockIdx,n)" ( identifier , identifier , identifier )))) ;) (if_statement "if (xBusy == (_func_int_void_ptr *)0x0) {\n      return iVar1;\n    }" if (parenthesized_expression "(xBusy == (_func_int_void_ptr *)0x0)" ( (binary_expression "xBusy == (_func_int_void_ptr *)0x0" identifier == (cast_expression "(_func_int_void_ptr *)0x0" ( (type_descriptor "_func_int_void_ptr *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      return iVar1;\n    }" { (return_statement "return iVar1;" return identifier ;) })) (if_statement "if (iVar1 != 5) break;" if (parenthesized_expression "(iVar1 != 5)" ( (binary_expression "iVar1 != 5" identifier != number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar1 = (*xBusy)(pBusyArg);" (assignment_expression "iVar1 = (*xBusy)(pBusyArg)" identifier = (call_expression "(*xBusy)(pBusyArg)" (parenthesized_expression "(*xBusy)" ( (pointer_expression "*xBusy" * identifier) )) (argument_list "(pBusyArg)" ( identifier )))) ;) (if_statement "if (iVar1 == 0) {\n      return 5;\n    }" if (parenthesized_expression "(iVar1 == 0)" ( (binary_expression "iVar1 == 0" identifier == number_literal) )) (compound_statement "{\n      return 5;\n    }" { (return_statement "return 5;" return number_literal ;) })) })) (return_statement "return iVar1;" return identifier ;) })))
(translation_unit "int FUN_00044d7c(undefined4 param_1,code *param_2,undefined4 param_3,undefined4 param_4,\n                undefined4 param_5)\n\n{\n  int iVar1;\n  \n  while( true ) {\n    iVar1 = FUN_00044cd8(param_1,param_4,param_5);\n    if (param_2 == (code *)0x0) {\n      return iVar1;\n    }\n    if (iVar1 != 5) break;\n    iVar1 = (*param_2)(param_3);\n    if (iVar1 == 0) {\n      return 5;\n    }\n  }\n  return iVar1;\n}\n\n" (function_definition "int FUN_00044d7c(undefined4 param_1,code *param_2,undefined4 param_3,undefined4 param_4,\n                undefined4 param_5)\n\n{\n  int iVar1;\n  \n  while( true ) {\n    iVar1 = FUN_00044cd8(param_1,param_4,param_5);\n    if (param_2 == (code *)0x0) {\n      return iVar1;\n    }\n    if (iVar1 != 5) break;\n    iVar1 = (*param_2)(param_3);\n    if (iVar1 == 0) {\n      return 5;\n    }\n  }\n  return iVar1;\n}" primitive_type (function_declarator "FUN_00044d7c(undefined4 param_1,code *param_2,undefined4 param_3,undefined4 param_4,\n                undefined4 param_5)" identifier (parameter_list "(undefined4 param_1,code *param_2,undefined4 param_3,undefined4 param_4,\n                undefined4 param_5)" ( (parameter_declaration "undefined4 param_1" type_identifier identifier) , (parameter_declaration "code *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "undefined4 param_3" type_identifier identifier) , (parameter_declaration "undefined4 param_4" type_identifier identifier) , (parameter_declaration "undefined4 param_5" type_identifier identifier) ))) (compound_statement "{\n  int iVar1;\n  \n  while( true ) {\n    iVar1 = FUN_00044cd8(param_1,param_4,param_5);\n    if (param_2 == (code *)0x0) {\n      return iVar1;\n    }\n    if (iVar1 != 5) break;\n    iVar1 = (*param_2)(param_3);\n    if (iVar1 == 0) {\n      return 5;\n    }\n  }\n  return iVar1;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (while_statement "while( true ) {\n    iVar1 = FUN_00044cd8(param_1,param_4,param_5);\n    if (param_2 == (code *)0x0) {\n      return iVar1;\n    }\n    if (iVar1 != 5) break;\n    iVar1 = (*param_2)(param_3);\n    if (iVar1 == 0) {\n      return 5;\n    }\n  }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n    iVar1 = FUN_00044cd8(param_1,param_4,param_5);\n    if (param_2 == (code *)0x0) {\n      return iVar1;\n    }\n    if (iVar1 != 5) break;\n    iVar1 = (*param_2)(param_3);\n    if (iVar1 == 0) {\n      return 5;\n    }\n  }" { (expression_statement "iVar1 = FUN_00044cd8(param_1,param_4,param_5);" (assignment_expression "iVar1 = FUN_00044cd8(param_1,param_4,param_5)" identifier = (call_expression "FUN_00044cd8(param_1,param_4,param_5)" identifier (argument_list "(param_1,param_4,param_5)" ( identifier , identifier , identifier )))) ;) (if_statement "if (param_2 == (code *)0x0) {\n      return iVar1;\n    }" if (parenthesized_expression "(param_2 == (code *)0x0)" ( (binary_expression "param_2 == (code *)0x0" identifier == (cast_expression "(code *)0x0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      return iVar1;\n    }" { (return_statement "return iVar1;" return identifier ;) })) (if_statement "if (iVar1 != 5) break;" if (parenthesized_expression "(iVar1 != 5)" ( (binary_expression "iVar1 != 5" identifier != number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar1 = (*param_2)(param_3);" (assignment_expression "iVar1 = (*param_2)(param_3)" identifier = (call_expression "(*param_2)(param_3)" (parenthesized_expression "(*param_2)" ( (pointer_expression "*param_2" * identifier) )) (argument_list "(param_3)" ( identifier )))) ;) (if_statement "if (iVar1 == 0) {\n      return 5;\n    }" if (parenthesized_expression "(iVar1 == 0)" ( (binary_expression "iVar1 == 0" identifier == number_literal) )) (compound_statement "{\n      return 5;\n    }" { (return_statement "return 5;" return number_literal ;) })) })) (return_statement "return iVar1;" return identifier ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration TYPE IDENT ;) (while_statement while (parenthesized_expression ( BOOL )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (return_statement return IDENT ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (return_statement return LIT ;) })) })) (return_statement return IDENT ;) })))
(function_definition "int FUN_00044d7c(undefined4 param_1,code *param_2,undefined4 param_3,undefined4 param_4,\n                undefined4 param_5)\n\n{\n  int iVar1;\n  \n  while( true ) {\n    iVar1 = FUN_00044cd8(param_1,param_4,param_5);\n    if (param_2 == (code *)0x0) {\n      return iVar1;\n    }\n    if (iVar1 != 5) break;\n    iVar1 = (*param_2)(param_3);\n    if (iVar1 == 0) {\n      return 5;\n    }\n  }\n  return iVar1;\n}" (primitive_type "int") (function_declarator "FUN_00044d7c(undefined4 param_1,code *param_2,undefined4 param_3,undefined4 param_4,\n                undefined4 param_5)" (identifier "FUN_00044d7c") (parameter_list "(undefined4 param_1,code *param_2,undefined4 param_3,undefined4 param_4,\n                undefined4 param_5)" (( "(") (parameter_declaration "undefined4 param_1" (type_identifier "undefined4") (identifier "param_1")) (, ",") (parameter_declaration "code *param_2" (type_identifier "code") (pointer_declarator "*param_2" (* "*") (identifier "param_2"))) (, ",") (parameter_declaration "undefined4 param_3" (type_identifier "undefined4") (identifier "param_3")) (, ",") (parameter_declaration "undefined4 param_4" (type_identifier "undefined4") (identifier "param_4")) (, ",") (parameter_declaration "undefined4 param_5" (type_identifier "undefined4") (identifier "param_5")) () ")"))) (compound_statement "{\n  int iVar1;\n  \n  while( true ) {\n    iVar1 = FUN_00044cd8(param_1,param_4,param_5);\n    if (param_2 == (code *)0x0) {\n      return iVar1;\n    }\n    if (iVar1 != 5) break;\n    iVar1 = (*param_2)(param_3);\n    if (iVar1 == 0) {\n      return 5;\n    }\n  }\n  return iVar1;\n}" ({ "{") (declaration "int iVar1;" (primitive_type "int") (identifier "iVar1") (; ";")) (while_statement "while( true ) {\n    iVar1 = FUN_00044cd8(param_1,param_4,param_5);\n    if (param_2 == (code *)0x0) {\n      return iVar1;\n    }\n    if (iVar1 != 5) break;\n    iVar1 = (*param_2)(param_3);\n    if (iVar1 == 0) {\n      return 5;\n    }\n  }" (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (compound_statement "{\n    iVar1 = FUN_00044cd8(param_1,param_4,param_5);\n    if (param_2 == (code *)0x0) {\n      return iVar1;\n    }\n    if (iVar1 != 5) break;\n    iVar1 = (*param_2)(param_3);\n    if (iVar1 == 0) {\n      return 5;\n    }\n  }" ({ "{") (expression_statement "iVar1 = FUN_00044cd8(param_1,param_4,param_5);" (assignment_expression "iVar1 = FUN_00044cd8(param_1,param_4,param_5)" (identifier "iVar1") (= "=") (call_expression "FUN_00044cd8(param_1,param_4,param_5)" (identifier "FUN_00044cd8") (argument_list "(param_1,param_4,param_5)" (( "(") (identifier "param_1") (, ",") (identifier "param_4") (, ",") (identifier "param_5") () ")")))) (; ";")) (if_statement "if (param_2 == (code *)0x0) {\n      return iVar1;\n    }" (if "if") (parenthesized_expression "(param_2 == (code *)0x0)" (( "(") (binary_expression "param_2 == (code *)0x0" (identifier "param_2") (== "==") (cast_expression "(code *)0x0" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n      return iVar1;\n    }" ({ "{") (return_statement "return iVar1;" (return "return") (identifier "iVar1") (; ";")) (} "}"))) (if_statement "if (iVar1 != 5) break;" (if "if") (parenthesized_expression "(iVar1 != 5)" (( "(") (binary_expression "iVar1 != 5" (identifier "iVar1") (!= "!=") (number_literal "5")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "iVar1 = (*param_2)(param_3);" (assignment_expression "iVar1 = (*param_2)(param_3)" (identifier "iVar1") (= "=") (call_expression "(*param_2)(param_3)" (parenthesized_expression "(*param_2)" (( "(") (pointer_expression "*param_2" (* "*") (identifier "param_2")) () ")")) (argument_list "(param_3)" (( "(") (identifier "param_3") () ")")))) (; ";")) (if_statement "if (iVar1 == 0) {\n      return 5;\n    }" (if "if") (parenthesized_expression "(iVar1 == 0)" (( "(") (binary_expression "iVar1 == 0" (identifier "iVar1") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      return 5;\n    }" ({ "{") (return_statement "return 5;" (return "return") (number_literal "5") (; ";")) (} "}"))) (} "}"))) (return_statement "return iVar1;" (return "return") (identifier "iVar1") (; ";")) (} "}")))
(translation_unit (function_definition type: (primitive_type) declarator: (function_declarator declarator: (identifier) parameters: (parameter_list (parameter_declaration type: (type_identifier) declarator: (identifier)) (parameter_declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (parameter_declaration type: (type_identifier) declarator: (identifier)) (parameter_declaration type: (type_identifier) declarator: (identifier)) (parameter_declaration type: (type_identifier) declarator: (identifier)))) body: (compound_statement (declaration type: (primitive_type) declarator: (identifier)) (while_statement condition: (parenthesized_expression (true)) body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier) (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (compound_statement (return_statement (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (break_statement)) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (identifier))) arguments: (argument_list (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (return_statement (number_literal)))))) (return_statement (identifier)))))

int MASKED(undefined4 param_1,code *param_2,undefined4 param_3,undefined4 param_4,
                undefined4 param_5)

{
  int iVar1;
  
  while( true ) {
    iVar1 = FUN_00044cd8(param_1,param_4,param_5);
    if (param_2 == (code *)0x0) {
      return iVar1;
    }
    if (iVar1 != 5) break;
    iVar1 = (*param_2)(param_3);
    if (iVar1 == 0) {
      return 5;
    }
  }
  return iVar1;
}

