
/* WARNING: Enum "anon_enum_32": Some values do not have unique names */

uint ssh_alloc_sharing_channel(Ssh_conflict ssh,void *sharing_ctx)

{
  ssh_channel *c;
  uint uVar1;
  
  c = (ssh_channel *)safemalloc(1,0x5c);
  c->ssh = ssh;
  ssh_channel_init(c);
  uVar1 = c->localid;
  (c->u).a.inbuffer.head = (bufchain_granule *)sharing_ctx;
  c->type = 4;
  return uVar1;
}



undefined4 ssh_alloc_sharing_channel(undefined4 param_1,undefined4 param_2)

{
  undefined4 *puVar1;
  
  puVar1 = (undefined4 *)safemalloc(1,0x5c);
  *puVar1 = param_1;
  FUN_0003e1f8(puVar1);
  puVar1[0x13] = param_2;
  puVar1[3] = 4;
  return puVar1[2];
}


lui gp,0x8
addiu gp,gp,-0x4e3c
addu gp,gp,t9
addiu sp,sp,-0x28
lw t9,-0x7f68(gp)
sw s2,0x20(sp)
or s2,a0,zero
sw s1,0x1c(sp)
li a0,0x1
or s1,a1,zero
sw ra,0x24(sp)
sw s0,0x18(sp)
sw gp,0x10(sp)
bal 0x00020904
_li a1,0x5c
lw gp,0x10(sp)
or a0,v0,zero
sw s2,0x0(v0)
lw t9,-0x7adc(gp)
addiu t9,t9,-0x1e08
bal 0x0003e1f8
_or s0,v0,zero
li v1,0x4
lw ra,0x24(sp)
lw v0,0x8(s0)
lw s2,0x20(sp)
sw s1,0x4c(s0)
sw v1,0xc(s0)
lw s1,0x1c(sp)
lw s0,0x18(sp)
jr ra
_addiu sp,sp,0x28
(translation_unit "undefined4 ssh_alloc_sharing_channel(undefined4 param_1,undefined4 param_2)\n\n{\n  undefined4 *puVar1;\n  \n  puVar1 = (undefined4 *)safemalloc(1,0x5c);\n  *puVar1 = param_1;\n  FUN_0003e1f8(puVar1);\n  puVar1[0x13] = param_2;\n  puVar1[3] = 4;\n  return puVar1[2];\n}\n\n" (function_definition "undefined4 ssh_alloc_sharing_channel(undefined4 param_1,undefined4 param_2)\n\n{\n  undefined4 *puVar1;\n  \n  puVar1 = (undefined4 *)safemalloc(1,0x5c);\n  *puVar1 = param_1;\n  FUN_0003e1f8(puVar1);\n  puVar1[0x13] = param_2;\n  puVar1[3] = 4;\n  return puVar1[2];\n}" type_identifier (function_declarator "ssh_alloc_sharing_channel(undefined4 param_1,undefined4 param_2)" identifier (parameter_list "(undefined4 param_1,undefined4 param_2)" ( (parameter_declaration "undefined4 param_1" type_identifier identifier) , (parameter_declaration "undefined4 param_2" type_identifier identifier) ))) (compound_statement "{\n  undefined4 *puVar1;\n  \n  puVar1 = (undefined4 *)safemalloc(1,0x5c);\n  *puVar1 = param_1;\n  FUN_0003e1f8(puVar1);\n  puVar1[0x13] = param_2;\n  puVar1[3] = 4;\n  return puVar1[2];\n}" { (declaration "undefined4 *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (expression_statement "puVar1 = (undefined4 *)safemalloc(1,0x5c);" (assignment_expression "puVar1 = (undefined4 *)safemalloc(1,0x5c)" identifier = (cast_expression "(undefined4 *)safemalloc(1,0x5c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "safemalloc(1,0x5c)" identifier (argument_list "(1,0x5c)" ( number_literal , number_literal ))))) ;) (expression_statement "*puVar1 = param_1;" (assignment_expression "*puVar1 = param_1" (pointer_expression "*puVar1" * identifier) = identifier) ;) (expression_statement "FUN_0003e1f8(puVar1);" (call_expression "FUN_0003e1f8(puVar1)" identifier (argument_list "(puVar1)" ( identifier ))) ;) (expression_statement "puVar1[0x13] = param_2;" (assignment_expression "puVar1[0x13] = param_2" (subscript_expression "puVar1[0x13]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar1[3] = 4;" (assignment_expression "puVar1[3] = 4" (subscript_expression "puVar1[3]" identifier [ number_literal ]) = number_literal) ;) (return_statement "return puVar1[2];" return (subscript_expression "puVar1[2]" identifier [ number_literal ]) ;) })))
(translation_unit "/* WARNING: Enum "anon_enum_32": Some values do not have unique names */\n\nuint ssh_alloc_sharing_channel(Ssh_conflict ssh,void *sharing_ctx)\n\n{\n  ssh_channel *c;\n  uint uVar1;\n  \n  c = (ssh_channel *)safemalloc(1,0x5c);\n  c->ssh = ssh;\n  ssh_channel_init(c);\n  uVar1 = c->localid;\n  (c->u).a.inbuffer.head = (bufchain_granule *)sharing_ctx;\n  c->type = 4;\n  return uVar1;\n}\n\n" comment (function_definition "uint ssh_alloc_sharing_channel(Ssh_conflict ssh,void *sharing_ctx)\n\n{\n  ssh_channel *c;\n  uint uVar1;\n  \n  c = (ssh_channel *)safemalloc(1,0x5c);\n  c->ssh = ssh;\n  ssh_channel_init(c);\n  uVar1 = c->localid;\n  (c->u).a.inbuffer.head = (bufchain_granule *)sharing_ctx;\n  c->type = 4;\n  return uVar1;\n}" type_identifier (function_declarator "ssh_alloc_sharing_channel(Ssh_conflict ssh,void *sharing_ctx)" identifier (parameter_list "(Ssh_conflict ssh,void *sharing_ctx)" ( (parameter_declaration "Ssh_conflict ssh" type_identifier identifier) , (parameter_declaration "void *sharing_ctx" primitive_type (pointer_declarator "*sharing_ctx" * identifier)) ))) (compound_statement "{\n  ssh_channel *c;\n  uint uVar1;\n  \n  c = (ssh_channel *)safemalloc(1,0x5c);\n  c->ssh = ssh;\n  ssh_channel_init(c);\n  uVar1 = c->localid;\n  (c->u).a.inbuffer.head = (bufchain_granule *)sharing_ctx;\n  c->type = 4;\n  return uVar1;\n}" { (declaration "ssh_channel *c;" type_identifier (pointer_declarator "*c" * identifier) ;) (declaration "uint uVar1;" type_identifier identifier ;) (expression_statement "c = (ssh_channel *)safemalloc(1,0x5c);" (assignment_expression "c = (ssh_channel *)safemalloc(1,0x5c)" identifier = (cast_expression "(ssh_channel *)safemalloc(1,0x5c)" ( (type_descriptor "ssh_channel *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "safemalloc(1,0x5c)" identifier (argument_list "(1,0x5c)" ( number_literal , number_literal ))))) ;) (expression_statement "c->ssh = ssh;" (assignment_expression "c->ssh = ssh" (field_expression "c->ssh" identifier -> field_identifier) = identifier) ;) (expression_statement "ssh_channel_init(c);" (call_expression "ssh_channel_init(c)" identifier (argument_list "(c)" ( identifier ))) ;) (expression_statement "uVar1 = c->localid;" (assignment_expression "uVar1 = c->localid" identifier = (field_expression "c->localid" identifier -> field_identifier)) ;) (expression_statement "(c->u).a.inbuffer.head = (bufchain_granule *)sharing_ctx;" (assignment_expression "(c->u).a.inbuffer.head = (bufchain_granule *)sharing_ctx" (field_expression "(c->u).a.inbuffer.head" (field_expression "(c->u).a.inbuffer" (field_expression "(c->u).a" (parenthesized_expression "(c->u)" ( (field_expression "c->u" identifier -> field_identifier) )) . field_identifier) . field_identifier) . field_identifier) = (cast_expression "(bufchain_granule *)sharing_ctx" ( (type_descriptor "bufchain_granule *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "c->type = 4;" (assignment_expression "c->type = 4" (field_expression "c->type" identifier -> field_identifier) = number_literal) ;) (return_statement "return uVar1;" return identifier ;) })))
(translation_unit "undefined4 ssh_alloc_sharing_channel(undefined4 param_1,undefined4 param_2)\n\n{\n  undefined4 *puVar1;\n  \n  puVar1 = (undefined4 *)safemalloc(1,0x5c);\n  *puVar1 = param_1;\n  FUN_0003e1f8(puVar1);\n  puVar1[0x13] = param_2;\n  puVar1[3] = 4;\n  return puVar1[2];\n}\n\n" (function_definition "undefined4 ssh_alloc_sharing_channel(undefined4 param_1,undefined4 param_2)\n\n{\n  undefined4 *puVar1;\n  \n  puVar1 = (undefined4 *)safemalloc(1,0x5c);\n  *puVar1 = param_1;\n  FUN_0003e1f8(puVar1);\n  puVar1[0x13] = param_2;\n  puVar1[3] = 4;\n  return puVar1[2];\n}" type_identifier (function_declarator "ssh_alloc_sharing_channel(undefined4 param_1,undefined4 param_2)" identifier (parameter_list "(undefined4 param_1,undefined4 param_2)" ( (parameter_declaration "undefined4 param_1" type_identifier identifier) , (parameter_declaration "undefined4 param_2" type_identifier identifier) ))) (compound_statement "{\n  undefined4 *puVar1;\n  \n  puVar1 = (undefined4 *)safemalloc(1,0x5c);\n  *puVar1 = param_1;\n  FUN_0003e1f8(puVar1);\n  puVar1[0x13] = param_2;\n  puVar1[3] = 4;\n  return puVar1[2];\n}" { (declaration "undefined4 *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (expression_statement "puVar1 = (undefined4 *)safemalloc(1,0x5c);" (assignment_expression "puVar1 = (undefined4 *)safemalloc(1,0x5c)" identifier = (cast_expression "(undefined4 *)safemalloc(1,0x5c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "safemalloc(1,0x5c)" identifier (argument_list "(1,0x5c)" ( number_literal , number_literal ))))) ;) (expression_statement "*puVar1 = param_1;" (assignment_expression "*puVar1 = param_1" (pointer_expression "*puVar1" * identifier) = identifier) ;) (expression_statement "FUN_0003e1f8(puVar1);" (call_expression "FUN_0003e1f8(puVar1)" identifier (argument_list "(puVar1)" ( identifier ))) ;) (expression_statement "puVar1[0x13] = param_2;" (assignment_expression "puVar1[0x13] = param_2" (subscript_expression "puVar1[0x13]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar1[3] = 4;" (assignment_expression "puVar1[3] = 4" (subscript_expression "puVar1[3]" identifier [ number_literal ]) = number_literal) ;) (return_statement "return puVar1[2];" return (subscript_expression "puVar1[2]" identifier [ number_literal ]) ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration TYPE (pointer_declarator * IDENT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( LIT , LIT ))))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (return_statement return (subscript_expression IDENT [ LIT ]) ;) })))
(function_definition "undefined4 ssh_alloc_sharing_channel(undefined4 param_1,undefined4 param_2)\n\n{\n  undefined4 *puVar1;\n  \n  puVar1 = (undefined4 *)safemalloc(1,0x5c);\n  *puVar1 = param_1;\n  FUN_0003e1f8(puVar1);\n  puVar1[0x13] = param_2;\n  puVar1[3] = 4;\n  return puVar1[2];\n}" (type_identifier "undefined4") (function_declarator "ssh_alloc_sharing_channel(undefined4 param_1,undefined4 param_2)" (identifier "ssh_alloc_sharing_channel") (parameter_list "(undefined4 param_1,undefined4 param_2)" (( "(") (parameter_declaration "undefined4 param_1" (type_identifier "undefined4") (identifier "param_1")) (, ",") (parameter_declaration "undefined4 param_2" (type_identifier "undefined4") (identifier "param_2")) () ")"))) (compound_statement "{\n  undefined4 *puVar1;\n  \n  puVar1 = (undefined4 *)safemalloc(1,0x5c);\n  *puVar1 = param_1;\n  FUN_0003e1f8(puVar1);\n  puVar1[0x13] = param_2;\n  puVar1[3] = 4;\n  return puVar1[2];\n}" ({ "{") (declaration "undefined4 *puVar1;" (type_identifier "undefined4") (pointer_declarator "*puVar1" (* "*") (identifier "puVar1")) (; ";")) (expression_statement "puVar1 = (undefined4 *)safemalloc(1,0x5c);" (assignment_expression "puVar1 = (undefined4 *)safemalloc(1,0x5c)" (identifier "puVar1") (= "=") (cast_expression "(undefined4 *)safemalloc(1,0x5c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "safemalloc(1,0x5c)" (identifier "safemalloc") (argument_list "(1,0x5c)" (( "(") (number_literal "1") (, ",") (number_literal "0x5c") () ")"))))) (; ";")) (expression_statement "*puVar1 = param_1;" (assignment_expression "*puVar1 = param_1" (pointer_expression "*puVar1" (* "*") (identifier "puVar1")) (= "=") (identifier "param_1")) (; ";")) (expression_statement "FUN_0003e1f8(puVar1);" (call_expression "FUN_0003e1f8(puVar1)" (identifier "FUN_0003e1f8") (argument_list "(puVar1)" (( "(") (identifier "puVar1") () ")"))) (; ";")) (expression_statement "puVar1[0x13] = param_2;" (assignment_expression "puVar1[0x13] = param_2" (subscript_expression "puVar1[0x13]" (identifier "puVar1") ([ "[") (number_literal "0x13") (] "]")) (= "=") (identifier "param_2")) (; ";")) (expression_statement "puVar1[3] = 4;" (assignment_expression "puVar1[3] = 4" (subscript_expression "puVar1[3]" (identifier "puVar1") ([ "[") (number_literal "3") (] "]")) (= "=") (number_literal "4")) (; ";")) (return_statement "return puVar1[2];" (return "return") (subscript_expression "puVar1[2]" (identifier "puVar1") ([ "[") (number_literal "2") (] "]")) (; ";")) (} "}")))
(translation_unit (function_definition type: (type_identifier) declarator: (function_declarator declarator: (identifier) parameters: (parameter_list (parameter_declaration type: (type_identifier) declarator: (identifier)) (parameter_declaration type: (type_identifier) declarator: (identifier)))) body: (compound_statement (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (call_expression function: (identifier) arguments: (argument_list (number_literal) (number_literal)))))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (identifier))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (return_statement (subscript_expression argument: (identifier) index: (number_literal))))))

undefined4 MASKED(undefined4 param_1,undefined4 param_2)

{
  undefined4 *puVar1;
  
  puVar1 = (undefined4 *)safemalloc(1,0x5c);
  *puVar1 = param_1;
  FUN_0003e1f8(puVar1);
  puVar1[0x13] = param_2;
  puVar1[3] = 4;
  return puVar1[2];
}

