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

void __regparm3 gss_init(ssh_gss_library *lib,void *dlhandle,int id,char *msg)

{
  t_gss_delete_sec_context p_Var1;
  t_gss_display_status p_Var2;
  t_gss_get_mic p_Var3;
  t_gss_import_name p_Var4;
  t_gss_init_sec_context p_Var5;
  t_gss_release_buffer p_Var6;
  t_gss_release_cred p_Var7;
  t_gss_release_name p_Var8;
  
  lib->id = id;
  lib->handle = dlhandle;
  lib->gsslogmsg = msg;
  p_Var1 = (t_gss_delete_sec_context)dlsym(dlhandle,"gss_delete_sec_context");
  (lib->u).gssapi.delete_sec_context = p_Var1;
  p_Var2 = (t_gss_display_status)dlsym(dlhandle,"gss_display_status");
  (lib->u).gssapi.display_status = p_Var2;
  p_Var3 = (t_gss_get_mic)dlsym(dlhandle,"gss_get_mic");
  (lib->u).gssapi.get_mic = p_Var3;
  p_Var4 = (t_gss_import_name)dlsym(dlhandle,"gss_import_name");
  (lib->u).gssapi.import_name = p_Var4;
  p_Var5 = (t_gss_init_sec_context)dlsym(dlhandle,"gss_init_sec_context");
  (lib->u).gssapi.init_sec_context = p_Var5;
  p_Var6 = (t_gss_release_buffer)dlsym(dlhandle,"gss_release_buffer");
  (lib->u).gssapi.release_buffer = p_Var6;
  p_Var7 = (t_gss_release_cred)dlsym(dlhandle,"gss_release_cred");
  (lib->u).gssapi.release_cred = p_Var7;
  p_Var8 = (t_gss_release_name)dlsym(dlhandle,"gss_release_name");
  (lib->u).gssapi.release_name = p_Var8;
  ssh_gssapi_bind_fns(lib);
  return;
}



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

void __regparm3
FUN_00062dd0(undefined4 *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4)

{
  undefined4 uVar1;
  
  *param_1 = param_3;
  param_1[0x14] = param_2;
  param_1[1] = param_4;
  uVar1 = dlsym(param_2,"gss_delete_sec_context");
  param_1[0xc] = uVar1;
  uVar1 = dlsym(param_2,"gss_display_status");
  param_1[0xd] = uVar1;
  uVar1 = dlsym(param_2,"gss_get_mic");
  param_1[0xe] = uVar1;
  uVar1 = dlsym(param_2,"gss_import_name");
  param_1[0xf] = uVar1;
  uVar1 = dlsym(param_2,"gss_init_sec_context");
  param_1[0x10] = uVar1;
  uVar1 = dlsym(param_2,"gss_release_buffer");
  param_1[0x11] = uVar1;
  uVar1 = dlsym(param_2,"gss_release_cred");
  param_1[0x12] = uVar1;
  uVar1 = dlsym(param_2,"gss_release_name");
  param_1[0x13] = uVar1;
  FUN_0004e2f0(param_1);
  return;
}


PUSH EDI
MOV EDI,EDX
PUSH ESI
MOV ESI,EAX
PUSH EBX
CALL 0x00015fa0
ADD EBX,0x41f94
MOV dword ptr [EAX],ECX
MOV EAX,dword ptr [ESP + 0x10]
MOV dword ptr [ESI + 0x50],EDX
SUB ESP,0x8
MOV dword ptr [ESI + 0x4],EAX
LEA EAX,[EBX + 0xfffd82e7]
PUSH EAX
PUSH EDX
CALL 0x000144d0
MOV dword ptr [ESI + 0x30],EAX
POP EAX
LEA EAX,[EBX + 0xfffd82fe]
POP EDX
PUSH EAX
PUSH EDI
CALL 0x000144d0
POP ECX
MOV dword ptr [ESI + 0x34],EAX
POP EAX
LEA EAX,[EBX + 0xfffd8311]
PUSH EAX
PUSH EDI
CALL 0x000144d0
MOV dword ptr [ESI + 0x38],EAX
POP EAX
LEA EAX,[EBX + 0xfffd831d]
POP EDX
PUSH EAX
PUSH EDI
CALL 0x000144d0
POP ECX
MOV dword ptr [ESI + 0x3c],EAX
POP EAX
LEA EAX,[EBX + 0xfffd832d]
PUSH EAX
PUSH EDI
CALL 0x000144d0
MOV dword ptr [ESI + 0x40],EAX
POP EAX
LEA EAX,[EBX + 0xfffd8342]
POP EDX
PUSH EAX
PUSH EDI
CALL 0x000144d0
POP ECX
MOV dword ptr [ESI + 0x44],EAX
POP EAX
LEA EAX,[EBX + 0xfffd8355]
PUSH EAX
PUSH EDI
CALL 0x000144d0
MOV dword ptr [ESI + 0x48],EAX
POP EAX
LEA EAX,[EBX + 0xfffd8366]
POP EDX
PUSH EAX
PUSH EDI
CALL 0x000144d0
MOV dword ptr [ESP],ESI
MOV dword ptr [ESI + 0x4c],EAX
CALL 0x0004e2f0
ADD ESP,0x10
POP EBX
POP ESI
POP EDI
RET
(translation_unit "/* WARNING: Function: __i686.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n\nvoid __regparm3\nFUN_00062dd0(undefined4 *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4)\n\n{\n  undefined4 uVar1;\n  \n  *param_1 = param_3;\n  param_1[0x14] = param_2;\n  param_1[1] = param_4;\n  uVar1 = dlsym(param_2,"gss_delete_sec_context");\n  param_1[0xc] = uVar1;\n  uVar1 = dlsym(param_2,"gss_display_status");\n  param_1[0xd] = uVar1;\n  uVar1 = dlsym(param_2,"gss_get_mic");\n  param_1[0xe] = uVar1;\n  uVar1 = dlsym(param_2,"gss_import_name");\n  param_1[0xf] = uVar1;\n  uVar1 = dlsym(param_2,"gss_init_sec_context");\n  param_1[0x10] = uVar1;\n  uVar1 = dlsym(param_2,"gss_release_buffer");\n  param_1[0x11] = uVar1;\n  uVar1 = dlsym(param_2,"gss_release_cred");\n  param_1[0x12] = uVar1;\n  uVar1 = dlsym(param_2,"gss_release_name");\n  param_1[0x13] = uVar1;\n  FUN_0004e2f0(param_1);\n  return;\n}\n\n" comment (function_definition "void __regparm3\nFUN_00062dd0(undefined4 *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4)\n\n{\n  undefined4 uVar1;\n  \n  *param_1 = param_3;\n  param_1[0x14] = param_2;\n  param_1[1] = param_4;\n  uVar1 = dlsym(param_2,"gss_delete_sec_context");\n  param_1[0xc] = uVar1;\n  uVar1 = dlsym(param_2,"gss_display_status");\n  param_1[0xd] = uVar1;\n  uVar1 = dlsym(param_2,"gss_get_mic");\n  param_1[0xe] = uVar1;\n  uVar1 = dlsym(param_2,"gss_import_name");\n  param_1[0xf] = uVar1;\n  uVar1 = dlsym(param_2,"gss_init_sec_context");\n  param_1[0x10] = uVar1;\n  uVar1 = dlsym(param_2,"gss_release_buffer");\n  param_1[0x11] = uVar1;\n  uVar1 = dlsym(param_2,"gss_release_cred");\n  param_1[0x12] = uVar1;\n  uVar1 = dlsym(param_2,"gss_release_name");\n  param_1[0x13] = uVar1;\n  FUN_0004e2f0(param_1);\n  return;\n}" primitive_type (ERROR "__regparm3" identifier) (function_declarator "FUN_00062dd0(undefined4 *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4)" identifier (parameter_list "(undefined4 *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4)" ( (parameter_declaration "undefined4 *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "undefined4 param_2" type_identifier identifier) , (parameter_declaration "undefined4 param_3" type_identifier identifier) , (parameter_declaration "undefined4 param_4" type_identifier identifier) ))) (compound_statement "{\n  undefined4 uVar1;\n  \n  *param_1 = param_3;\n  param_1[0x14] = param_2;\n  param_1[1] = param_4;\n  uVar1 = dlsym(param_2,"gss_delete_sec_context");\n  param_1[0xc] = uVar1;\n  uVar1 = dlsym(param_2,"gss_display_status");\n  param_1[0xd] = uVar1;\n  uVar1 = dlsym(param_2,"gss_get_mic");\n  param_1[0xe] = uVar1;\n  uVar1 = dlsym(param_2,"gss_import_name");\n  param_1[0xf] = uVar1;\n  uVar1 = dlsym(param_2,"gss_init_sec_context");\n  param_1[0x10] = uVar1;\n  uVar1 = dlsym(param_2,"gss_release_buffer");\n  param_1[0x11] = uVar1;\n  uVar1 = dlsym(param_2,"gss_release_cred");\n  param_1[0x12] = uVar1;\n  uVar1 = dlsym(param_2,"gss_release_name");\n  param_1[0x13] = uVar1;\n  FUN_0004e2f0(param_1);\n  return;\n}" { (declaration "undefined4 uVar1;" type_identifier identifier ;) (expression_statement "*param_1 = param_3;" (assignment_expression "*param_1 = param_3" (pointer_expression "*param_1" * identifier) = identifier) ;) (expression_statement "param_1[0x14] = param_2;" (assignment_expression "param_1[0x14] = param_2" (subscript_expression "param_1[0x14]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_1[1] = param_4;" (assignment_expression "param_1[1] = param_4" (subscript_expression "param_1[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "uVar1 = dlsym(param_2,"gss_delete_sec_context");" (assignment_expression "uVar1 = dlsym(param_2,"gss_delete_sec_context")" identifier = (call_expression "dlsym(param_2,"gss_delete_sec_context")" identifier (argument_list "(param_2,"gss_delete_sec_context")" ( identifier , (string_literal ""gss_delete_sec_context"" " string_content ") )))) ;) (expression_statement "param_1[0xc] = uVar1;" (assignment_expression "param_1[0xc] = uVar1" (subscript_expression "param_1[0xc]" identifier [ number_literal ]) = identifier) ;) (expression_statement "uVar1 = dlsym(param_2,"gss_display_status");" (assignment_expression "uVar1 = dlsym(param_2,"gss_display_status")" identifier = (call_expression "dlsym(param_2,"gss_display_status")" identifier (argument_list "(param_2,"gss_display_status")" ( identifier , (string_literal ""gss_display_status"" " string_content ") )))) ;) (expression_statement "param_1[0xd] = uVar1;" (assignment_expression "param_1[0xd] = uVar1" (subscript_expression "param_1[0xd]" identifier [ number_literal ]) = identifier) ;) (expression_statement "uVar1 = dlsym(param_2,"gss_get_mic");" (assignment_expression "uVar1 = dlsym(param_2,"gss_get_mic")" identifier = (call_expression "dlsym(param_2,"gss_get_mic")" identifier (argument_list "(param_2,"gss_get_mic")" ( identifier , (string_literal ""gss_get_mic"" " string_content ") )))) ;) (expression_statement "param_1[0xe] = uVar1;" (assignment_expression "param_1[0xe] = uVar1" (subscript_expression "param_1[0xe]" identifier [ number_literal ]) = identifier) ;) (expression_statement "uVar1 = dlsym(param_2,"gss_import_name");" (assignment_expression "uVar1 = dlsym(param_2,"gss_import_name")" identifier = (call_expression "dlsym(param_2,"gss_import_name")" identifier (argument_list "(param_2,"gss_import_name")" ( identifier , (string_literal ""gss_import_name"" " string_content ") )))) ;) (expression_statement "param_1[0xf] = uVar1;" (assignment_expression "param_1[0xf] = uVar1" (subscript_expression "param_1[0xf]" identifier [ number_literal ]) = identifier) ;) (expression_statement "uVar1 = dlsym(param_2,"gss_init_sec_context");" (assignment_expression "uVar1 = dlsym(param_2,"gss_init_sec_context")" identifier = (call_expression "dlsym(param_2,"gss_init_sec_context")" identifier (argument_list "(param_2,"gss_init_sec_context")" ( identifier , (string_literal ""gss_init_sec_context"" " string_content ") )))) ;) (expression_statement "param_1[0x10] = uVar1;" (assignment_expression "param_1[0x10] = uVar1" (subscript_expression "param_1[0x10]" identifier [ number_literal ]) = identifier) ;) (expression_statement "uVar1 = dlsym(param_2,"gss_release_buffer");" (assignment_expression "uVar1 = dlsym(param_2,"gss_release_buffer")" identifier = (call_expression "dlsym(param_2,"gss_release_buffer")" identifier (argument_list "(param_2,"gss_release_buffer")" ( identifier , (string_literal ""gss_release_buffer"" " string_content ") )))) ;) (expression_statement "param_1[0x11] = uVar1;" (assignment_expression "param_1[0x11] = uVar1" (subscript_expression "param_1[0x11]" identifier [ number_literal ]) = identifier) ;) (expression_statement "uVar1 = dlsym(param_2,"gss_release_cred");" (assignment_expression "uVar1 = dlsym(param_2,"gss_release_cred")" identifier = (call_expression "dlsym(param_2,"gss_release_cred")" identifier (argument_list "(param_2,"gss_release_cred")" ( identifier , (string_literal ""gss_release_cred"" " string_content ") )))) ;) (expression_statement "param_1[0x12] = uVar1;" (assignment_expression "param_1[0x12] = uVar1" (subscript_expression "param_1[0x12]" identifier [ number_literal ]) = identifier) ;) (expression_statement "uVar1 = dlsym(param_2,"gss_release_name");" (assignment_expression "uVar1 = dlsym(param_2,"gss_release_name")" identifier = (call_expression "dlsym(param_2,"gss_release_name")" identifier (argument_list "(param_2,"gss_release_name")" ( identifier , (string_literal ""gss_release_name"" " string_content ") )))) ;) (expression_statement "param_1[0x13] = uVar1;" (assignment_expression "param_1[0x13] = uVar1" (subscript_expression "param_1[0x13]" identifier [ number_literal ]) = identifier) ;) (expression_statement "FUN_0004e2f0(param_1);" (call_expression "FUN_0004e2f0(param_1)" identifier (argument_list "(param_1)" ( identifier ))) ;) (return_statement "return;" return ;) })))
(translation_unit "/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n\nvoid __regparm3 gss_init(ssh_gss_library *lib,void *dlhandle,int id,char *msg)\n\n{\n  t_gss_delete_sec_context p_Var1;\n  t_gss_display_status p_Var2;\n  t_gss_get_mic p_Var3;\n  t_gss_import_name p_Var4;\n  t_gss_init_sec_context p_Var5;\n  t_gss_release_buffer p_Var6;\n  t_gss_release_cred p_Var7;\n  t_gss_release_name p_Var8;\n  \n  lib->id = id;\n  lib->handle = dlhandle;\n  lib->gsslogmsg = msg;\n  p_Var1 = (t_gss_delete_sec_context)dlsym(dlhandle,"gss_delete_sec_context");\n  (lib->u).gssapi.delete_sec_context = p_Var1;\n  p_Var2 = (t_gss_display_status)dlsym(dlhandle,"gss_display_status");\n  (lib->u).gssapi.display_status = p_Var2;\n  p_Var3 = (t_gss_get_mic)dlsym(dlhandle,"gss_get_mic");\n  (lib->u).gssapi.get_mic = p_Var3;\n  p_Var4 = (t_gss_import_name)dlsym(dlhandle,"gss_import_name");\n  (lib->u).gssapi.import_name = p_Var4;\n  p_Var5 = (t_gss_init_sec_context)dlsym(dlhandle,"gss_init_sec_context");\n  (lib->u).gssapi.init_sec_context = p_Var5;\n  p_Var6 = (t_gss_release_buffer)dlsym(dlhandle,"gss_release_buffer");\n  (lib->u).gssapi.release_buffer = p_Var6;\n  p_Var7 = (t_gss_release_cred)dlsym(dlhandle,"gss_release_cred");\n  (lib->u).gssapi.release_cred = p_Var7;\n  p_Var8 = (t_gss_release_name)dlsym(dlhandle,"gss_release_name");\n  (lib->u).gssapi.release_name = p_Var8;\n  ssh_gssapi_bind_fns(lib);\n  return;\n}\n\n" comment (function_definition "void __regparm3 gss_init(ssh_gss_library *lib,void *dlhandle,int id,char *msg)\n\n{\n  t_gss_delete_sec_context p_Var1;\n  t_gss_display_status p_Var2;\n  t_gss_get_mic p_Var3;\n  t_gss_import_name p_Var4;\n  t_gss_init_sec_context p_Var5;\n  t_gss_release_buffer p_Var6;\n  t_gss_release_cred p_Var7;\n  t_gss_release_name p_Var8;\n  \n  lib->id = id;\n  lib->handle = dlhandle;\n  lib->gsslogmsg = msg;\n  p_Var1 = (t_gss_delete_sec_context)dlsym(dlhandle,"gss_delete_sec_context");\n  (lib->u).gssapi.delete_sec_context = p_Var1;\n  p_Var2 = (t_gss_display_status)dlsym(dlhandle,"gss_display_status");\n  (lib->u).gssapi.display_status = p_Var2;\n  p_Var3 = (t_gss_get_mic)dlsym(dlhandle,"gss_get_mic");\n  (lib->u).gssapi.get_mic = p_Var3;\n  p_Var4 = (t_gss_import_name)dlsym(dlhandle,"gss_import_name");\n  (lib->u).gssapi.import_name = p_Var4;\n  p_Var5 = (t_gss_init_sec_context)dlsym(dlhandle,"gss_init_sec_context");\n  (lib->u).gssapi.init_sec_context = p_Var5;\n  p_Var6 = (t_gss_release_buffer)dlsym(dlhandle,"gss_release_buffer");\n  (lib->u).gssapi.release_buffer = p_Var6;\n  p_Var7 = (t_gss_release_cred)dlsym(dlhandle,"gss_release_cred");\n  (lib->u).gssapi.release_cred = p_Var7;\n  p_Var8 = (t_gss_release_name)dlsym(dlhandle,"gss_release_name");\n  (lib->u).gssapi.release_name = p_Var8;\n  ssh_gssapi_bind_fns(lib);\n  return;\n}" primitive_type (ERROR "__regparm3" identifier) (function_declarator "gss_init(ssh_gss_library *lib,void *dlhandle,int id,char *msg)" identifier (parameter_list "(ssh_gss_library *lib,void *dlhandle,int id,char *msg)" ( (parameter_declaration "ssh_gss_library *lib" type_identifier (pointer_declarator "*lib" * identifier)) , (parameter_declaration "void *dlhandle" primitive_type (pointer_declarator "*dlhandle" * identifier)) , (parameter_declaration "int id" primitive_type identifier) , (parameter_declaration "char *msg" primitive_type (pointer_declarator "*msg" * identifier)) ))) (compound_statement "{\n  t_gss_delete_sec_context p_Var1;\n  t_gss_display_status p_Var2;\n  t_gss_get_mic p_Var3;\n  t_gss_import_name p_Var4;\n  t_gss_init_sec_context p_Var5;\n  t_gss_release_buffer p_Var6;\n  t_gss_release_cred p_Var7;\n  t_gss_release_name p_Var8;\n  \n  lib->id = id;\n  lib->handle = dlhandle;\n  lib->gsslogmsg = msg;\n  p_Var1 = (t_gss_delete_sec_context)dlsym(dlhandle,"gss_delete_sec_context");\n  (lib->u).gssapi.delete_sec_context = p_Var1;\n  p_Var2 = (t_gss_display_status)dlsym(dlhandle,"gss_display_status");\n  (lib->u).gssapi.display_status = p_Var2;\n  p_Var3 = (t_gss_get_mic)dlsym(dlhandle,"gss_get_mic");\n  (lib->u).gssapi.get_mic = p_Var3;\n  p_Var4 = (t_gss_import_name)dlsym(dlhandle,"gss_import_name");\n  (lib->u).gssapi.import_name = p_Var4;\n  p_Var5 = (t_gss_init_sec_context)dlsym(dlhandle,"gss_init_sec_context");\n  (lib->u).gssapi.init_sec_context = p_Var5;\n  p_Var6 = (t_gss_release_buffer)dlsym(dlhandle,"gss_release_buffer");\n  (lib->u).gssapi.release_buffer = p_Var6;\n  p_Var7 = (t_gss_release_cred)dlsym(dlhandle,"gss_release_cred");\n  (lib->u).gssapi.release_cred = p_Var7;\n  p_Var8 = (t_gss_release_name)dlsym(dlhandle,"gss_release_name");\n  (lib->u).gssapi.release_name = p_Var8;\n  ssh_gssapi_bind_fns(lib);\n  return;\n}" { (declaration "t_gss_delete_sec_context p_Var1;" type_identifier identifier ;) (declaration "t_gss_display_status p_Var2;" type_identifier identifier ;) (declaration "t_gss_get_mic p_Var3;" type_identifier identifier ;) (declaration "t_gss_import_name p_Var4;" type_identifier identifier ;) (declaration "t_gss_init_sec_context p_Var5;" type_identifier identifier ;) (declaration "t_gss_release_buffer p_Var6;" type_identifier identifier ;) (declaration "t_gss_release_cred p_Var7;" type_identifier identifier ;) (declaration "t_gss_release_name p_Var8;" type_identifier identifier ;) (expression_statement "lib->id = id;" (assignment_expression "lib->id = id" (field_expression "lib->id" identifier -> field_identifier) = identifier) ;) (expression_statement "lib->handle = dlhandle;" (assignment_expression "lib->handle = dlhandle" (field_expression "lib->handle" identifier -> field_identifier) = identifier) ;) (expression_statement "lib->gsslogmsg = msg;" (assignment_expression "lib->gsslogmsg = msg" (field_expression "lib->gsslogmsg" identifier -> field_identifier) = identifier) ;) (expression_statement "p_Var1 = (t_gss_delete_sec_context)dlsym(dlhandle,"gss_delete_sec_context");" (assignment_expression "p_Var1 = (t_gss_delete_sec_context)dlsym(dlhandle,"gss_delete_sec_context")" identifier = (cast_expression "(t_gss_delete_sec_context)dlsym(dlhandle,"gss_delete_sec_context")" ( (type_descriptor "t_gss_delete_sec_context" type_identifier) ) (call_expression "dlsym(dlhandle,"gss_delete_sec_context")" identifier (argument_list "(dlhandle,"gss_delete_sec_context")" ( identifier , (string_literal ""gss_delete_sec_context"" " string_content ") ))))) ;) (expression_statement "(lib->u).gssapi.delete_sec_context = p_Var1;" (assignment_expression "(lib->u).gssapi.delete_sec_context = p_Var1" (field_expression "(lib->u).gssapi.delete_sec_context" (field_expression "(lib->u).gssapi" (parenthesized_expression "(lib->u)" ( (field_expression "lib->u" identifier -> field_identifier) )) . field_identifier) . field_identifier) = identifier) ;) (expression_statement "p_Var2 = (t_gss_display_status)dlsym(dlhandle,"gss_display_status");" (assignment_expression "p_Var2 = (t_gss_display_status)dlsym(dlhandle,"gss_display_status")" identifier = (cast_expression "(t_gss_display_status)dlsym(dlhandle,"gss_display_status")" ( (type_descriptor "t_gss_display_status" type_identifier) ) (call_expression "dlsym(dlhandle,"gss_display_status")" identifier (argument_list "(dlhandle,"gss_display_status")" ( identifier , (string_literal ""gss_display_status"" " string_content ") ))))) ;) (expression_statement "(lib->u).gssapi.display_status = p_Var2;" (assignment_expression "(lib->u).gssapi.display_status = p_Var2" (field_expression "(lib->u).gssapi.display_status" (field_expression "(lib->u).gssapi" (parenthesized_expression "(lib->u)" ( (field_expression "lib->u" identifier -> field_identifier) )) . field_identifier) . field_identifier) = identifier) ;) (expression_statement "p_Var3 = (t_gss_get_mic)dlsym(dlhandle,"gss_get_mic");" (assignment_expression "p_Var3 = (t_gss_get_mic)dlsym(dlhandle,"gss_get_mic")" identifier = (cast_expression "(t_gss_get_mic)dlsym(dlhandle,"gss_get_mic")" ( (type_descriptor "t_gss_get_mic" type_identifier) ) (call_expression "dlsym(dlhandle,"gss_get_mic")" identifier (argument_list "(dlhandle,"gss_get_mic")" ( identifier , (string_literal ""gss_get_mic"" " string_content ") ))))) ;) (expression_statement "(lib->u).gssapi.get_mic = p_Var3;" (assignment_expression "(lib->u).gssapi.get_mic = p_Var3" (field_expression "(lib->u).gssapi.get_mic" (field_expression "(lib->u).gssapi" (parenthesized_expression "(lib->u)" ( (field_expression "lib->u" identifier -> field_identifier) )) . field_identifier) . field_identifier) = identifier) ;) (expression_statement "p_Var4 = (t_gss_import_name)dlsym(dlhandle,"gss_import_name");" (assignment_expression "p_Var4 = (t_gss_import_name)dlsym(dlhandle,"gss_import_name")" identifier = (cast_expression "(t_gss_import_name)dlsym(dlhandle,"gss_import_name")" ( (type_descriptor "t_gss_import_name" type_identifier) ) (call_expression "dlsym(dlhandle,"gss_import_name")" identifier (argument_list "(dlhandle,"gss_import_name")" ( identifier , (string_literal ""gss_import_name"" " string_content ") ))))) ;) (expression_statement "(lib->u).gssapi.import_name = p_Var4;" (assignment_expression "(lib->u).gssapi.import_name = p_Var4" (field_expression "(lib->u).gssapi.import_name" (field_expression "(lib->u).gssapi" (parenthesized_expression "(lib->u)" ( (field_expression "lib->u" identifier -> field_identifier) )) . field_identifier) . field_identifier) = identifier) ;) (expression_statement "p_Var5 = (t_gss_init_sec_context)dlsym(dlhandle,"gss_init_sec_context");" (assignment_expression "p_Var5 = (t_gss_init_sec_context)dlsym(dlhandle,"gss_init_sec_context")" identifier = (cast_expression "(t_gss_init_sec_context)dlsym(dlhandle,"gss_init_sec_context")" ( (type_descriptor "t_gss_init_sec_context" type_identifier) ) (call_expression "dlsym(dlhandle,"gss_init_sec_context")" identifier (argument_list "(dlhandle,"gss_init_sec_context")" ( identifier , (string_literal ""gss_init_sec_context"" " string_content ") ))))) ;) (expression_statement "(lib->u).gssapi.init_sec_context = p_Var5;" (assignment_expression "(lib->u).gssapi.init_sec_context = p_Var5" (field_expression "(lib->u).gssapi.init_sec_context" (field_expression "(lib->u).gssapi" (parenthesized_expression "(lib->u)" ( (field_expression "lib->u" identifier -> field_identifier) )) . field_identifier) . field_identifier) = identifier) ;) (expression_statement "p_Var6 = (t_gss_release_buffer)dlsym(dlhandle,"gss_release_buffer");" (assignment_expression "p_Var6 = (t_gss_release_buffer)dlsym(dlhandle,"gss_release_buffer")" identifier = (cast_expression "(t_gss_release_buffer)dlsym(dlhandle,"gss_release_buffer")" ( (type_descriptor "t_gss_release_buffer" type_identifier) ) (call_expression "dlsym(dlhandle,"gss_release_buffer")" identifier (argument_list "(dlhandle,"gss_release_buffer")" ( identifier , (string_literal ""gss_release_buffer"" " string_content ") ))))) ;) (expression_statement "(lib->u).gssapi.release_buffer = p_Var6;" (assignment_expression "(lib->u).gssapi.release_buffer = p_Var6" (field_expression "(lib->u).gssapi.release_buffer" (field_expression "(lib->u).gssapi" (parenthesized_expression "(lib->u)" ( (field_expression "lib->u" identifier -> field_identifier) )) . field_identifier) . field_identifier) = identifier) ;) (expression_statement "p_Var7 = (t_gss_release_cred)dlsym(dlhandle,"gss_release_cred");" (assignment_expression "p_Var7 = (t_gss_release_cred)dlsym(dlhandle,"gss_release_cred")" identifier = (cast_expression "(t_gss_release_cred)dlsym(dlhandle,"gss_release_cred")" ( (type_descriptor "t_gss_release_cred" type_identifier) ) (call_expression "dlsym(dlhandle,"gss_release_cred")" identifier (argument_list "(dlhandle,"gss_release_cred")" ( identifier , (string_literal ""gss_release_cred"" " string_content ") ))))) ;) (expression_statement "(lib->u).gssapi.release_cred = p_Var7;" (assignment_expression "(lib->u).gssapi.release_cred = p_Var7" (field_expression "(lib->u).gssapi.release_cred" (field_expression "(lib->u).gssapi" (parenthesized_expression "(lib->u)" ( (field_expression "lib->u" identifier -> field_identifier) )) . field_identifier) . field_identifier) = identifier) ;) (expression_statement "p_Var8 = (t_gss_release_name)dlsym(dlhandle,"gss_release_name");" (assignment_expression "p_Var8 = (t_gss_release_name)dlsym(dlhandle,"gss_release_name")" identifier = (cast_expression "(t_gss_release_name)dlsym(dlhandle,"gss_release_name")" ( (type_descriptor "t_gss_release_name" type_identifier) ) (call_expression "dlsym(dlhandle,"gss_release_name")" identifier (argument_list "(dlhandle,"gss_release_name")" ( identifier , (string_literal ""gss_release_name"" " string_content ") ))))) ;) (expression_statement "(lib->u).gssapi.release_name = p_Var8;" (assignment_expression "(lib->u).gssapi.release_name = p_Var8" (field_expression "(lib->u).gssapi.release_name" (field_expression "(lib->u).gssapi" (parenthesized_expression "(lib->u)" ( (field_expression "lib->u" identifier -> field_identifier) )) . field_identifier) . field_identifier) = identifier) ;) (expression_statement "ssh_gssapi_bind_fns(lib);" (call_expression "ssh_gssapi_bind_fns(lib)" identifier (argument_list "(lib)" ( identifier ))) ;) (return_statement "return;" return ;) })))
(translation_unit "void __regparm3\nFUN_00062dd0(undefined4 *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4)\n\n{\n  undefined4 uVar1;\n  \n  *param_1 = param_3;\n  param_1[0x14] = param_2;\n  param_1[1] = param_4;\n  uVar1 = dlsym(param_2,"gss_delete_sec_context");\n  param_1[0xc] = uVar1;\n  uVar1 = dlsym(param_2,"gss_display_status");\n  param_1[0xd] = uVar1;\n  uVar1 = dlsym(param_2,"gss_get_mic");\n  param_1[0xe] = uVar1;\n  uVar1 = dlsym(param_2,"gss_import_name");\n  param_1[0xf] = uVar1;\n  uVar1 = dlsym(param_2,"gss_init_sec_context");\n  param_1[0x10] = uVar1;\n  uVar1 = dlsym(param_2,"gss_release_buffer");\n  param_1[0x11] = uVar1;\n  uVar1 = dlsym(param_2,"gss_release_cred");\n  param_1[0x12] = uVar1;\n  uVar1 = dlsym(param_2,"gss_release_name");\n  param_1[0x13] = uVar1;\n  FUN_0004e2f0(param_1);\n  return;\n}\n\n" (function_definition "void __regparm3\nFUN_00062dd0(undefined4 *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4)\n\n{\n  undefined4 uVar1;\n  \n  *param_1 = param_3;\n  param_1[0x14] = param_2;\n  param_1[1] = param_4;\n  uVar1 = dlsym(param_2,"gss_delete_sec_context");\n  param_1[0xc] = uVar1;\n  uVar1 = dlsym(param_2,"gss_display_status");\n  param_1[0xd] = uVar1;\n  uVar1 = dlsym(param_2,"gss_get_mic");\n  param_1[0xe] = uVar1;\n  uVar1 = dlsym(param_2,"gss_import_name");\n  param_1[0xf] = uVar1;\n  uVar1 = dlsym(param_2,"gss_init_sec_context");\n  param_1[0x10] = uVar1;\n  uVar1 = dlsym(param_2,"gss_release_buffer");\n  param_1[0x11] = uVar1;\n  uVar1 = dlsym(param_2,"gss_release_cred");\n  param_1[0x12] = uVar1;\n  uVar1 = dlsym(param_2,"gss_release_name");\n  param_1[0x13] = uVar1;\n  FUN_0004e2f0(param_1);\n  return;\n}" primitive_type (ERROR "__regparm3" identifier) (function_declarator "FUN_00062dd0(undefined4 *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4)" identifier (parameter_list "(undefined4 *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4)" ( (parameter_declaration "undefined4 *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "undefined4 param_2" type_identifier identifier) , (parameter_declaration "undefined4 param_3" type_identifier identifier) , (parameter_declaration "undefined4 param_4" type_identifier identifier) ))) (compound_statement "{\n  undefined4 uVar1;\n  \n  *param_1 = param_3;\n  param_1[0x14] = param_2;\n  param_1[1] = param_4;\n  uVar1 = dlsym(param_2,"gss_delete_sec_context");\n  param_1[0xc] = uVar1;\n  uVar1 = dlsym(param_2,"gss_display_status");\n  param_1[0xd] = uVar1;\n  uVar1 = dlsym(param_2,"gss_get_mic");\n  param_1[0xe] = uVar1;\n  uVar1 = dlsym(param_2,"gss_import_name");\n  param_1[0xf] = uVar1;\n  uVar1 = dlsym(param_2,"gss_init_sec_context");\n  param_1[0x10] = uVar1;\n  uVar1 = dlsym(param_2,"gss_release_buffer");\n  param_1[0x11] = uVar1;\n  uVar1 = dlsym(param_2,"gss_release_cred");\n  param_1[0x12] = uVar1;\n  uVar1 = dlsym(param_2,"gss_release_name");\n  param_1[0x13] = uVar1;\n  FUN_0004e2f0(param_1);\n  return;\n}" { (declaration "undefined4 uVar1;" type_identifier identifier ;) (expression_statement "*param_1 = param_3;" (assignment_expression "*param_1 = param_3" (pointer_expression "*param_1" * identifier) = identifier) ;) (expression_statement "param_1[0x14] = param_2;" (assignment_expression "param_1[0x14] = param_2" (subscript_expression "param_1[0x14]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_1[1] = param_4;" (assignment_expression "param_1[1] = param_4" (subscript_expression "param_1[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "uVar1 = dlsym(param_2,"gss_delete_sec_context");" (assignment_expression "uVar1 = dlsym(param_2,"gss_delete_sec_context")" identifier = (call_expression "dlsym(param_2,"gss_delete_sec_context")" identifier (argument_list "(param_2,"gss_delete_sec_context")" ( identifier , (string_literal ""gss_delete_sec_context"" " string_content ") )))) ;) (expression_statement "param_1[0xc] = uVar1;" (assignment_expression "param_1[0xc] = uVar1" (subscript_expression "param_1[0xc]" identifier [ number_literal ]) = identifier) ;) (expression_statement "uVar1 = dlsym(param_2,"gss_display_status");" (assignment_expression "uVar1 = dlsym(param_2,"gss_display_status")" identifier = (call_expression "dlsym(param_2,"gss_display_status")" identifier (argument_list "(param_2,"gss_display_status")" ( identifier , (string_literal ""gss_display_status"" " string_content ") )))) ;) (expression_statement "param_1[0xd] = uVar1;" (assignment_expression "param_1[0xd] = uVar1" (subscript_expression "param_1[0xd]" identifier [ number_literal ]) = identifier) ;) (expression_statement "uVar1 = dlsym(param_2,"gss_get_mic");" (assignment_expression "uVar1 = dlsym(param_2,"gss_get_mic")" identifier = (call_expression "dlsym(param_2,"gss_get_mic")" identifier (argument_list "(param_2,"gss_get_mic")" ( identifier , (string_literal ""gss_get_mic"" " string_content ") )))) ;) (expression_statement "param_1[0xe] = uVar1;" (assignment_expression "param_1[0xe] = uVar1" (subscript_expression "param_1[0xe]" identifier [ number_literal ]) = identifier) ;) (expression_statement "uVar1 = dlsym(param_2,"gss_import_name");" (assignment_expression "uVar1 = dlsym(param_2,"gss_import_name")" identifier = (call_expression "dlsym(param_2,"gss_import_name")" identifier (argument_list "(param_2,"gss_import_name")" ( identifier , (string_literal ""gss_import_name"" " string_content ") )))) ;) (expression_statement "param_1[0xf] = uVar1;" (assignment_expression "param_1[0xf] = uVar1" (subscript_expression "param_1[0xf]" identifier [ number_literal ]) = identifier) ;) (expression_statement "uVar1 = dlsym(param_2,"gss_init_sec_context");" (assignment_expression "uVar1 = dlsym(param_2,"gss_init_sec_context")" identifier = (call_expression "dlsym(param_2,"gss_init_sec_context")" identifier (argument_list "(param_2,"gss_init_sec_context")" ( identifier , (string_literal ""gss_init_sec_context"" " string_content ") )))) ;) (expression_statement "param_1[0x10] = uVar1;" (assignment_expression "param_1[0x10] = uVar1" (subscript_expression "param_1[0x10]" identifier [ number_literal ]) = identifier) ;) (expression_statement "uVar1 = dlsym(param_2,"gss_release_buffer");" (assignment_expression "uVar1 = dlsym(param_2,"gss_release_buffer")" identifier = (call_expression "dlsym(param_2,"gss_release_buffer")" identifier (argument_list "(param_2,"gss_release_buffer")" ( identifier , (string_literal ""gss_release_buffer"" " string_content ") )))) ;) (expression_statement "param_1[0x11] = uVar1;" (assignment_expression "param_1[0x11] = uVar1" (subscript_expression "param_1[0x11]" identifier [ number_literal ]) = identifier) ;) (expression_statement "uVar1 = dlsym(param_2,"gss_release_cred");" (assignment_expression "uVar1 = dlsym(param_2,"gss_release_cred")" identifier = (call_expression "dlsym(param_2,"gss_release_cred")" identifier (argument_list "(param_2,"gss_release_cred")" ( identifier , (string_literal ""gss_release_cred"" " string_content ") )))) ;) (expression_statement "param_1[0x12] = uVar1;" (assignment_expression "param_1[0x12] = uVar1" (subscript_expression "param_1[0x12]" identifier [ number_literal ]) = identifier) ;) (expression_statement "uVar1 = dlsym(param_2,"gss_release_name");" (assignment_expression "uVar1 = dlsym(param_2,"gss_release_name")" identifier = (call_expression "dlsym(param_2,"gss_release_name")" identifier (argument_list "(param_2,"gss_release_name")" ( identifier , (string_literal ""gss_release_name"" " string_content ") )))) ;) (expression_statement "param_1[0x13] = uVar1;" (assignment_expression "param_1[0x13] = uVar1" (subscript_expression "param_1[0x13]" identifier [ number_literal ]) = identifier) ;) (expression_statement "FUN_0004e2f0(param_1);" (call_expression "FUN_0004e2f0(param_1)" identifier (argument_list "(param_1)" ( identifier ))) ;) (return_statement "return;" return ;) })))
(translation_unit (function_definition TYPE (ERROR IDENT) (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration TYPE IDENT ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , (string_literal " string_content ") )))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , (string_literal " string_content ") )))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , (string_literal " string_content ") )))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , (string_literal " string_content ") )))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , (string_literal " string_content ") )))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , (string_literal " string_content ") )))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , (string_literal " string_content ") )))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , (string_literal " string_content ") )))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (return_statement return ;) })))
(function_definition "void __regparm3\nFUN_00062dd0(undefined4 *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4)\n\n{\n  undefined4 uVar1;\n  \n  *param_1 = param_3;\n  param_1[0x14] = param_2;\n  param_1[1] = param_4;\n  uVar1 = dlsym(param_2,"gss_delete_sec_context");\n  param_1[0xc] = uVar1;\n  uVar1 = dlsym(param_2,"gss_display_status");\n  param_1[0xd] = uVar1;\n  uVar1 = dlsym(param_2,"gss_get_mic");\n  param_1[0xe] = uVar1;\n  uVar1 = dlsym(param_2,"gss_import_name");\n  param_1[0xf] = uVar1;\n  uVar1 = dlsym(param_2,"gss_init_sec_context");\n  param_1[0x10] = uVar1;\n  uVar1 = dlsym(param_2,"gss_release_buffer");\n  param_1[0x11] = uVar1;\n  uVar1 = dlsym(param_2,"gss_release_cred");\n  param_1[0x12] = uVar1;\n  uVar1 = dlsym(param_2,"gss_release_name");\n  param_1[0x13] = uVar1;\n  FUN_0004e2f0(param_1);\n  return;\n}" (primitive_type "void") (ERROR "__regparm3" (identifier "__regparm3")) (function_declarator "FUN_00062dd0(undefined4 *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4)" (identifier "FUN_00062dd0") (parameter_list "(undefined4 *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4)" (( "(") (parameter_declaration "undefined4 *param_1" (type_identifier "undefined4") (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) (, ",") (parameter_declaration "undefined4 param_2" (type_identifier "undefined4") (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")) () ")"))) (compound_statement "{\n  undefined4 uVar1;\n  \n  *param_1 = param_3;\n  param_1[0x14] = param_2;\n  param_1[1] = param_4;\n  uVar1 = dlsym(param_2,"gss_delete_sec_context");\n  param_1[0xc] = uVar1;\n  uVar1 = dlsym(param_2,"gss_display_status");\n  param_1[0xd] = uVar1;\n  uVar1 = dlsym(param_2,"gss_get_mic");\n  param_1[0xe] = uVar1;\n  uVar1 = dlsym(param_2,"gss_import_name");\n  param_1[0xf] = uVar1;\n  uVar1 = dlsym(param_2,"gss_init_sec_context");\n  param_1[0x10] = uVar1;\n  uVar1 = dlsym(param_2,"gss_release_buffer");\n  param_1[0x11] = uVar1;\n  uVar1 = dlsym(param_2,"gss_release_cred");\n  param_1[0x12] = uVar1;\n  uVar1 = dlsym(param_2,"gss_release_name");\n  param_1[0x13] = uVar1;\n  FUN_0004e2f0(param_1);\n  return;\n}" ({ "{") (declaration "undefined4 uVar1;" (type_identifier "undefined4") (identifier "uVar1") (; ";")) (expression_statement "*param_1 = param_3;" (assignment_expression "*param_1 = param_3" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (= "=") (identifier "param_3")) (; ";")) (expression_statement "param_1[0x14] = param_2;" (assignment_expression "param_1[0x14] = param_2" (subscript_expression "param_1[0x14]" (identifier "param_1") ([ "[") (number_literal "0x14") (] "]")) (= "=") (identifier "param_2")) (; ";")) (expression_statement "param_1[1] = param_4;" (assignment_expression "param_1[1] = param_4" (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]")) (= "=") (identifier "param_4")) (; ";")) (expression_statement "uVar1 = dlsym(param_2,"gss_delete_sec_context");" (assignment_expression "uVar1 = dlsym(param_2,"gss_delete_sec_context")" (identifier "uVar1") (= "=") (call_expression "dlsym(param_2,"gss_delete_sec_context")" (identifier "dlsym") (argument_list "(param_2,"gss_delete_sec_context")" (( "(") (identifier "param_2") (, ",") (string_literal ""gss_delete_sec_context"" (" """) (string_content "gss_delete_sec_context") (" """)) () ")")))) (; ";")) (expression_statement "param_1[0xc] = uVar1;" (assignment_expression "param_1[0xc] = uVar1" (subscript_expression "param_1[0xc]" (identifier "param_1") ([ "[") (number_literal "0xc") (] "]")) (= "=") (identifier "uVar1")) (; ";")) (expression_statement "uVar1 = dlsym(param_2,"gss_display_status");" (assignment_expression "uVar1 = dlsym(param_2,"gss_display_status")" (identifier "uVar1") (= "=") (call_expression "dlsym(param_2,"gss_display_status")" (identifier "dlsym") (argument_list "(param_2,"gss_display_status")" (( "(") (identifier "param_2") (, ",") (string_literal ""gss_display_status"" (" """) (string_content "gss_display_status") (" """)) () ")")))) (; ";")) (expression_statement "param_1[0xd] = uVar1;" (assignment_expression "param_1[0xd] = uVar1" (subscript_expression "param_1[0xd]" (identifier "param_1") ([ "[") (number_literal "0xd") (] "]")) (= "=") (identifier "uVar1")) (; ";")) (expression_statement "uVar1 = dlsym(param_2,"gss_get_mic");" (assignment_expression "uVar1 = dlsym(param_2,"gss_get_mic")" (identifier "uVar1") (= "=") (call_expression "dlsym(param_2,"gss_get_mic")" (identifier "dlsym") (argument_list "(param_2,"gss_get_mic")" (( "(") (identifier "param_2") (, ",") (string_literal ""gss_get_mic"" (" """) (string_content "gss_get_mic") (" """)) () ")")))) (; ";")) (expression_statement "param_1[0xe] = uVar1;" (assignment_expression "param_1[0xe] = uVar1" (subscript_expression "param_1[0xe]" (identifier "param_1") ([ "[") (number_literal "0xe") (] "]")) (= "=") (identifier "uVar1")) (; ";")) (expression_statement "uVar1 = dlsym(param_2,"gss_import_name");" (assignment_expression "uVar1 = dlsym(param_2,"gss_import_name")" (identifier "uVar1") (= "=") (call_expression "dlsym(param_2,"gss_import_name")" (identifier "dlsym") (argument_list "(param_2,"gss_import_name")" (( "(") (identifier "param_2") (, ",") (string_literal ""gss_import_name"" (" """) (string_content "gss_import_name") (" """)) () ")")))) (; ";")) (expression_statement "param_1[0xf] = uVar1;" (assignment_expression "param_1[0xf] = uVar1" (subscript_expression "param_1[0xf]" (identifier "param_1") ([ "[") (number_literal "0xf") (] "]")) (= "=") (identifier "uVar1")) (; ";")) (expression_statement "uVar1 = dlsym(param_2,"gss_init_sec_context");" (assignment_expression "uVar1 = dlsym(param_2,"gss_init_sec_context")" (identifier "uVar1") (= "=") (call_expression "dlsym(param_2,"gss_init_sec_context")" (identifier "dlsym") (argument_list "(param_2,"gss_init_sec_context")" (( "(") (identifier "param_2") (, ",") (string_literal ""gss_init_sec_context"" (" """) (string_content "gss_init_sec_context") (" """)) () ")")))) (; ";")) (expression_statement "param_1[0x10] = uVar1;" (assignment_expression "param_1[0x10] = uVar1" (subscript_expression "param_1[0x10]" (identifier "param_1") ([ "[") (number_literal "0x10") (] "]")) (= "=") (identifier "uVar1")) (; ";")) (expression_statement "uVar1 = dlsym(param_2,"gss_release_buffer");" (assignment_expression "uVar1 = dlsym(param_2,"gss_release_buffer")" (identifier "uVar1") (= "=") (call_expression "dlsym(param_2,"gss_release_buffer")" (identifier "dlsym") (argument_list "(param_2,"gss_release_buffer")" (( "(") (identifier "param_2") (, ",") (string_literal ""gss_release_buffer"" (" """) (string_content "gss_release_buffer") (" """)) () ")")))) (; ";")) (expression_statement "param_1[0x11] = uVar1;" (assignment_expression "param_1[0x11] = uVar1" (subscript_expression "param_1[0x11]" (identifier "param_1") ([ "[") (number_literal "0x11") (] "]")) (= "=") (identifier "uVar1")) (; ";")) (expression_statement "uVar1 = dlsym(param_2,"gss_release_cred");" (assignment_expression "uVar1 = dlsym(param_2,"gss_release_cred")" (identifier "uVar1") (= "=") (call_expression "dlsym(param_2,"gss_release_cred")" (identifier "dlsym") (argument_list "(param_2,"gss_release_cred")" (( "(") (identifier "param_2") (, ",") (string_literal ""gss_release_cred"" (" """) (string_content "gss_release_cred") (" """)) () ")")))) (; ";")) (expression_statement "param_1[0x12] = uVar1;" (assignment_expression "param_1[0x12] = uVar1" (subscript_expression "param_1[0x12]" (identifier "param_1") ([ "[") (number_literal "0x12") (] "]")) (= "=") (identifier "uVar1")) (; ";")) (expression_statement "uVar1 = dlsym(param_2,"gss_release_name");" (assignment_expression "uVar1 = dlsym(param_2,"gss_release_name")" (identifier "uVar1") (= "=") (call_expression "dlsym(param_2,"gss_release_name")" (identifier "dlsym") (argument_list "(param_2,"gss_release_name")" (( "(") (identifier "param_2") (, ",") (string_literal ""gss_release_name"" (" """) (string_content "gss_release_name") (" """)) () ")")))) (; ";")) (expression_statement "param_1[0x13] = uVar1;" (assignment_expression "param_1[0x13] = uVar1" (subscript_expression "param_1[0x13]" (identifier "param_1") ([ "[") (number_literal "0x13") (] "]")) (= "=") (identifier "uVar1")) (; ";")) (expression_statement "FUN_0004e2f0(param_1);" (call_expression "FUN_0004e2f0(param_1)" (identifier "FUN_0004e2f0") (argument_list "(param_1)" (( "(") (identifier "param_1") () ")"))) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}")))

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

void __regparm3 function_1(type_1 *lib,void *dlhandle,int id,char *msg)

{
  type_2 p_Var1;
  type_3 p_Var2;
  type_4 p_Var3;
  type_5 p_Var4;
  type_6 p_Var5;
  type_7 p_Var6;
  type_8 p_Var7;
  type_9 p_Var8;
  
  lib->id = id;
  lib->handle = dlhandle;
  lib->gsslogmsg = msg;
  p_Var1 = (type_2)var_1(dlhandle,"gss_delete_sec_context");
  (lib->u).gssapi.delete_sec_context = p_Var1;
  p_Var2 = (type_3)var_1(dlhandle,"gss_display_status");
  (lib->u).gssapi.display_status = p_Var2;
  p_Var3 = (type_4)var_1(dlhandle,"gss_get_mic");
  (lib->u).gssapi.get_mic = p_Var3;
  p_Var4 = (type_5)var_1(dlhandle,"gss_import_name");
  (lib->u).gssapi.import_name = p_Var4;
  p_Var5 = (type_6)var_1(dlhandle,"gss_init_sec_context");
  (lib->u).gssapi.init_sec_context = p_Var5;
  p_Var6 = (type_7)var_1(dlhandle,"gss_release_buffer");
  (lib->u).gssapi.release_buffer = p_Var6;
  p_Var7 = (type_8)var_1(dlhandle,"gss_release_cred");
  (lib->u).gssapi.release_cred = p_Var7;
  p_Var8 = (type_9)var_1(dlhandle,"gss_release_name");
  (lib->u).gssapi.release_name = p_Var8;
  var_2(lib);
  return;
}


(translation_unit (function_definition type: (primitive_type) (ERROR (identifier)) declarator: (function_declarator declarator: (identifier) parameters: (parameter_list (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: (type_identifier) declarator: (identifier)) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (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: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (string_literal (string_content)))))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (string_literal (string_content)))))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (string_literal (string_content)))))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (string_literal (string_content)))))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (string_literal (string_content)))))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (string_literal (string_content)))))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (string_literal (string_content)))))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (string_literal (string_content)))))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier)))) (return_statement))))

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

void __regparm3
MASKED(undefined4 *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4)

{
  undefined4 uVar1;
  
  *param_1 = param_3;
  param_1[0x14] = param_2;
  param_1[1] = param_4;
  uVar1 = dlsym(param_2,"gss_delete_sec_context");
  param_1[0xc] = uVar1;
  uVar1 = dlsym(param_2,"gss_display_status");
  param_1[0xd] = uVar1;
  uVar1 = dlsym(param_2,"gss_get_mic");
  param_1[0xe] = uVar1;
  uVar1 = dlsym(param_2,"gss_import_name");
  param_1[0xf] = uVar1;
  uVar1 = dlsym(param_2,"gss_init_sec_context");
  param_1[0x10] = uVar1;
  uVar1 = dlsym(param_2,"gss_release_buffer");
  param_1[0x11] = uVar1;
  uVar1 = dlsym(param_2,"gss_release_cred");
  param_1[0x12] = uVar1;
  uVar1 = dlsym(param_2,"gss_release_name");
  param_1[0x13] = uVar1;
  FUN_0004e2f0(param_1);
  return;
}

