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

CURLcode Curl_ntlm_core_mk_lmv2_resp
                   (uchar *ntlmv2hash,uchar *challenge_client,uchar *challenge_server,uchar *lmresp)

{
  int iVar1;
  undefined4 uVar2;
  CURLcode CVar3;
  int in_GS_OFFSET;
  uchar data [16];
  uchar hmac_output [16];
  
  iVar1 = *(int *)(in_GS_OFFSET + 0x14);
  data._4_4_ = *(undefined4 *)(challenge_server + 4);
  data._0_4_ = *(undefined4 *)challenge_server;
  data._8_4_ = *(undefined4 *)challenge_client;
  data._12_4_ = *(undefined4 *)(challenge_client + 4);
  CVar3 = Curl_hmac_md5(ntlmv2hash,0x10,data,0x10,hmac_output);
  if (CVar3 == CURLE_OK) {
    *(undefined4 *)lmresp = hmac_output._0_4_;
    *(undefined4 *)(lmresp + 4) = hmac_output._4_4_;
    *(undefined4 *)(lmresp + 8) = hmac_output._8_4_;
    *(undefined4 *)(lmresp + 0xc) = hmac_output._12_4_;
    uVar2 = *(undefined4 *)(challenge_client + 4);
    *(undefined4 *)(lmresp + 0x10) = *(undefined4 *)challenge_client;
    *(undefined4 *)(lmresp + 0x14) = uVar2;
  }
  if (iVar1 == *(int *)(in_GS_OFFSET + 0x14)) {
    return CVar3;
  }
                    /* WARNING: Subroutine does not return */
  __stack_chk_fail_local();
}



void FUN_0005ef10(undefined4 *param_1,undefined4 *param_2,undefined4 *param_3)

{
  undefined4 uVar1;
  int iVar2;
  int in_GS_OFFSET;
  undefined4 unaff_retaddr;
  undefined4 local_34;
  undefined4 local_30;
  undefined4 local_2c;
  undefined4 local_28;
  undefined4 local_24;
  undefined4 local_20;
  undefined4 local_1c;
  undefined4 local_18;
  int local_14;
  undefined4 uStack_10;
  
  uStack_10 = 0x5ef18;
  entry();
  local_14 = *(int *)(in_GS_OFFSET + 0x14);
  local_30 = param_2[1];
  local_34 = *param_2;
  local_2c = *param_1;
  local_28 = param_1[1];
  iVar2 = FUN_0005ebf0(unaff_retaddr,0x10,&local_34,0x10,&local_24);
  if (iVar2 == 0) {
    *param_3 = local_24;
    param_3[1] = local_20;
    param_3[2] = local_1c;
    param_3[3] = local_18;
    uVar1 = param_1[1];
    param_3[4] = *param_1;
    param_3[5] = uVar1;
  }
  if (local_14 == *(int *)(in_GS_OFFSET + 0x14)) {
    return;
  }
                    /* WARNING: Subroutine does not return */
  FUN_0007c1a0();
}


PUSH EDI
PUSH ESI
PUSH EBX
CALL 0x00019ed0
ADD EBX,0x518c8
SUB ESP,0x3c
MOV EAX,GS:[0x14]
MOV dword ptr [ESP + 0x38],EAX
XOR EAX,EAX
MOV EAX,dword ptr [ESP + 0x54]
MOV EDI,dword ptr [ESP + 0x50]
MOV ESI,dword ptr [ESP + 0x58]
MOV EDX,dword ptr [EAX + 0x4]
MOV EAX,dword ptr [EAX]
MOV dword ptr [ESP + 0x18],EAX
MOV EAX,dword ptr [EDI]
MOV dword ptr [ESP + 0x1c],EDX
MOV EDX,dword ptr [EDI + 0x4]
MOV dword ptr [ESP + 0x20],EAX
LEA EAX,[ESP + 0x28]
MOV dword ptr [ESP + 0x24],EDX
PUSH EAX
PUSH 0x10
LEA EAX,[ESP + 0x20]
PUSH EAX
PUSH 0x10
PUSH dword ptr [ESP + 0x5c]
CALL 0x0005ebf0
ADD ESP,0x20
TEST EAX,EAX
JNZ 0x0005ef97
MOV EDX,dword ptr [ESP + 0x1c]
MOV dword ptr [ESI],EDX
MOV EDX,dword ptr [ESP + 0x20]
MOV dword ptr [ESI + 0x4],EDX
MOV EDX,dword ptr [ESP + 0x24]
MOV dword ptr [ESI + 0x8],EDX
MOV EDX,dword ptr [ESP + 0x28]
MOV dword ptr [ESI + 0xc],EDX
MOV ECX,dword ptr [EDI]
MOV EBX,dword ptr [EDI + 0x4]
MOV dword ptr [ESI + 0x10],ECX
MOV dword ptr [ESI + 0x14],EBX
MOV ECX,dword ptr [ESP + 0x2c]
XOR ECX,dword ptr GS:[0x14]
JNZ 0x0005efab
ADD ESP,0x30
POP EBX
POP ESI
POP EDI
RET
CALL 0x0007c1a0
(translation_unit "void FUN_0005ef10(undefined4 *param_1,undefined4 *param_2,undefined4 *param_3)\n\n{\n  undefined4 uVar1;\n  int iVar2;\n  int in_GS_OFFSET;\n  undefined4 unaff_retaddr;\n  undefined4 local_34;\n  undefined4 local_30;\n  undefined4 local_2c;\n  undefined4 local_28;\n  undefined4 local_24;\n  undefined4 local_20;\n  undefined4 local_1c;\n  undefined4 local_18;\n  int local_14;\n  undefined4 uStack_10;\n  \n  uStack_10 = 0x5ef18;\n  entry();\n  local_14 = *(int *)(in_GS_OFFSET + 0x14);\n  local_30 = param_2[1];\n  local_34 = *param_2;\n  local_2c = *param_1;\n  local_28 = param_1[1];\n  iVar2 = FUN_0005ebf0(unaff_retaddr,0x10,&local_34,0x10,&local_24);\n  if (iVar2 == 0) {\n    *param_3 = local_24;\n    param_3[1] = local_20;\n    param_3[2] = local_1c;\n    param_3[3] = local_18;\n    uVar1 = param_1[1];\n    param_3[4] = *param_1;\n    param_3[5] = uVar1;\n  }\n  if (local_14 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return;\n  }\n                    /* WARNING: Subroutine does not return */\n  FUN_0007c1a0();\n}\n\n" (function_definition "void FUN_0005ef10(undefined4 *param_1,undefined4 *param_2,undefined4 *param_3)\n\n{\n  undefined4 uVar1;\n  int iVar2;\n  int in_GS_OFFSET;\n  undefined4 unaff_retaddr;\n  undefined4 local_34;\n  undefined4 local_30;\n  undefined4 local_2c;\n  undefined4 local_28;\n  undefined4 local_24;\n  undefined4 local_20;\n  undefined4 local_1c;\n  undefined4 local_18;\n  int local_14;\n  undefined4 uStack_10;\n  \n  uStack_10 = 0x5ef18;\n  entry();\n  local_14 = *(int *)(in_GS_OFFSET + 0x14);\n  local_30 = param_2[1];\n  local_34 = *param_2;\n  local_2c = *param_1;\n  local_28 = param_1[1];\n  iVar2 = FUN_0005ebf0(unaff_retaddr,0x10,&local_34,0x10,&local_24);\n  if (iVar2 == 0) {\n    *param_3 = local_24;\n    param_3[1] = local_20;\n    param_3[2] = local_1c;\n    param_3[3] = local_18;\n    uVar1 = param_1[1];\n    param_3[4] = *param_1;\n    param_3[5] = uVar1;\n  }\n  if (local_14 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return;\n  }\n                    /* WARNING: Subroutine does not return */\n  FUN_0007c1a0();\n}" primitive_type (function_declarator "FUN_0005ef10(undefined4 *param_1,undefined4 *param_2,undefined4 *param_3)" identifier (parameter_list "(undefined4 *param_1,undefined4 *param_2,undefined4 *param_3)" ( (parameter_declaration "undefined4 *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "undefined4 *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "undefined4 *param_3" type_identifier (pointer_declarator "*param_3" * identifier)) ))) (compound_statement "{\n  undefined4 uVar1;\n  int iVar2;\n  int in_GS_OFFSET;\n  undefined4 unaff_retaddr;\n  undefined4 local_34;\n  undefined4 local_30;\n  undefined4 local_2c;\n  undefined4 local_28;\n  undefined4 local_24;\n  undefined4 local_20;\n  undefined4 local_1c;\n  undefined4 local_18;\n  int local_14;\n  undefined4 uStack_10;\n  \n  uStack_10 = 0x5ef18;\n  entry();\n  local_14 = *(int *)(in_GS_OFFSET + 0x14);\n  local_30 = param_2[1];\n  local_34 = *param_2;\n  local_2c = *param_1;\n  local_28 = param_1[1];\n  iVar2 = FUN_0005ebf0(unaff_retaddr,0x10,&local_34,0x10,&local_24);\n  if (iVar2 == 0) {\n    *param_3 = local_24;\n    param_3[1] = local_20;\n    param_3[2] = local_1c;\n    param_3[3] = local_18;\n    uVar1 = param_1[1];\n    param_3[4] = *param_1;\n    param_3[5] = uVar1;\n  }\n  if (local_14 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return;\n  }\n                    /* WARNING: Subroutine does not return */\n  FUN_0007c1a0();\n}" { (declaration "undefined4 uVar1;" type_identifier identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "int in_GS_OFFSET;" primitive_type identifier ;) (declaration "undefined4 unaff_retaddr;" type_identifier identifier ;) (declaration "undefined4 local_34;" type_identifier identifier ;) (declaration "undefined4 local_30;" type_identifier identifier ;) (declaration "undefined4 local_2c;" type_identifier identifier ;) (declaration "undefined4 local_28;" type_identifier identifier ;) (declaration "undefined4 local_24;" type_identifier identifier ;) (declaration "undefined4 local_20;" type_identifier identifier ;) (declaration "undefined4 local_1c;" type_identifier identifier ;) (declaration "undefined4 local_18;" type_identifier identifier ;) (declaration "int local_14;" primitive_type identifier ;) (declaration "undefined4 uStack_10;" type_identifier identifier ;) (expression_statement "uStack_10 = 0x5ef18;" (assignment_expression "uStack_10 = 0x5ef18" identifier = number_literal) ;) (expression_statement "entry();" (call_expression "entry()" identifier (argument_list "()" ( ))) ;) (expression_statement "local_14 = *(int *)(in_GS_OFFSET + 0x14);" (assignment_expression "local_14 = *(int *)(in_GS_OFFSET + 0x14)" identifier = (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) ;) (expression_statement "local_30 = param_2[1];" (assignment_expression "local_30 = param_2[1]" identifier = (subscript_expression "param_2[1]" identifier [ number_literal ])) ;) (expression_statement "local_34 = *param_2;" (assignment_expression "local_34 = *param_2" identifier = (pointer_expression "*param_2" * identifier)) ;) (expression_statement "local_2c = *param_1;" (assignment_expression "local_2c = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (expression_statement "local_28 = param_1[1];" (assignment_expression "local_28 = param_1[1]" identifier = (subscript_expression "param_1[1]" identifier [ number_literal ])) ;) (expression_statement "iVar2 = FUN_0005ebf0(unaff_retaddr,0x10,&local_34,0x10,&local_24);" (assignment_expression "iVar2 = FUN_0005ebf0(unaff_retaddr,0x10,&local_34,0x10,&local_24)" identifier = (call_expression "FUN_0005ebf0(unaff_retaddr,0x10,&local_34,0x10,&local_24)" identifier (argument_list "(unaff_retaddr,0x10,&local_34,0x10,&local_24)" ( identifier , number_literal , (pointer_expression "&local_34" & identifier) , number_literal , (pointer_expression "&local_24" & identifier) )))) ;) (if_statement "if (iVar2 == 0) {\n    *param_3 = local_24;\n    param_3[1] = local_20;\n    param_3[2] = local_1c;\n    param_3[3] = local_18;\n    uVar1 = param_1[1];\n    param_3[4] = *param_1;\n    param_3[5] = uVar1;\n  }" if (parenthesized_expression "(iVar2 == 0)" ( (binary_expression "iVar2 == 0" identifier == number_literal) )) (compound_statement "{\n    *param_3 = local_24;\n    param_3[1] = local_20;\n    param_3[2] = local_1c;\n    param_3[3] = local_18;\n    uVar1 = param_1[1];\n    param_3[4] = *param_1;\n    param_3[5] = uVar1;\n  }" { (expression_statement "*param_3 = local_24;" (assignment_expression "*param_3 = local_24" (pointer_expression "*param_3" * identifier) = identifier) ;) (expression_statement "param_3[1] = local_20;" (assignment_expression "param_3[1] = local_20" (subscript_expression "param_3[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_3[2] = local_1c;" (assignment_expression "param_3[2] = local_1c" (subscript_expression "param_3[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_3[3] = local_18;" (assignment_expression "param_3[3] = local_18" (subscript_expression "param_3[3]" identifier [ number_literal ]) = identifier) ;) (expression_statement "uVar1 = param_1[1];" (assignment_expression "uVar1 = param_1[1]" identifier = (subscript_expression "param_1[1]" identifier [ number_literal ])) ;) (expression_statement "param_3[4] = *param_1;" (assignment_expression "param_3[4] = *param_1" (subscript_expression "param_3[4]" identifier [ number_literal ]) = (pointer_expression "*param_1" * identifier)) ;) (expression_statement "param_3[5] = uVar1;" (assignment_expression "param_3[5] = uVar1" (subscript_expression "param_3[5]" identifier [ number_literal ]) = identifier) ;) })) (if_statement "if (local_14 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return;\n  }" if (parenthesized_expression "(local_14 == *(int *)(in_GS_OFFSET + 0x14))" ( (binary_expression "local_14 == *(int *)(in_GS_OFFSET + 0x14)" identifier == (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) )) (compound_statement "{\n    return;\n  }" { (return_statement "return;" return ;) })) comment (expression_statement "FUN_0007c1a0();" (call_expression "FUN_0007c1a0()" identifier (argument_list "()" ( ))) ;) })))
(translation_unit "/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n/* WARNING: Unknown calling convention */\n\nCURLcode Curl_ntlm_core_mk_lmv2_resp\n                   (uchar *ntlmv2hash,uchar *challenge_client,uchar *challenge_server,uchar *lmresp)\n\n{\n  int iVar1;\n  undefined4 uVar2;\n  CURLcode CVar3;\n  int in_GS_OFFSET;\n  uchar data [16];\n  uchar hmac_output [16];\n  \n  iVar1 = *(int *)(in_GS_OFFSET + 0x14);\n  data._4_4_ = *(undefined4 *)(challenge_server + 4);\n  data._0_4_ = *(undefined4 *)challenge_server;\n  data._8_4_ = *(undefined4 *)challenge_client;\n  data._12_4_ = *(undefined4 *)(challenge_client + 4);\n  CVar3 = Curl_hmac_md5(ntlmv2hash,0x10,data,0x10,hmac_output);\n  if (CVar3 == CURLE_OK) {\n    *(undefined4 *)lmresp = hmac_output._0_4_;\n    *(undefined4 *)(lmresp + 4) = hmac_output._4_4_;\n    *(undefined4 *)(lmresp + 8) = hmac_output._8_4_;\n    *(undefined4 *)(lmresp + 0xc) = hmac_output._12_4_;\n    uVar2 = *(undefined4 *)(challenge_client + 4);\n    *(undefined4 *)(lmresp + 0x10) = *(undefined4 *)challenge_client;\n    *(undefined4 *)(lmresp + 0x14) = uVar2;\n  }\n  if (iVar1 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return CVar3;\n  }\n                    /* WARNING: Subroutine does not return */\n  __stack_chk_fail_local();\n}\n\n" comment comment (function_definition "CURLcode Curl_ntlm_core_mk_lmv2_resp\n                   (uchar *ntlmv2hash,uchar *challenge_client,uchar *challenge_server,uchar *lmresp)\n\n{\n  int iVar1;\n  undefined4 uVar2;\n  CURLcode CVar3;\n  int in_GS_OFFSET;\n  uchar data [16];\n  uchar hmac_output [16];\n  \n  iVar1 = *(int *)(in_GS_OFFSET + 0x14);\n  data._4_4_ = *(undefined4 *)(challenge_server + 4);\n  data._0_4_ = *(undefined4 *)challenge_server;\n  data._8_4_ = *(undefined4 *)challenge_client;\n  data._12_4_ = *(undefined4 *)(challenge_client + 4);\n  CVar3 = Curl_hmac_md5(ntlmv2hash,0x10,data,0x10,hmac_output);\n  if (CVar3 == CURLE_OK) {\n    *(undefined4 *)lmresp = hmac_output._0_4_;\n    *(undefined4 *)(lmresp + 4) = hmac_output._4_4_;\n    *(undefined4 *)(lmresp + 8) = hmac_output._8_4_;\n    *(undefined4 *)(lmresp + 0xc) = hmac_output._12_4_;\n    uVar2 = *(undefined4 *)(challenge_client + 4);\n    *(undefined4 *)(lmresp + 0x10) = *(undefined4 *)challenge_client;\n    *(undefined4 *)(lmresp + 0x14) = uVar2;\n  }\n  if (iVar1 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return CVar3;\n  }\n                    /* WARNING: Subroutine does not return */\n  __stack_chk_fail_local();\n}" type_identifier (function_declarator "Curl_ntlm_core_mk_lmv2_resp\n                   (uchar *ntlmv2hash,uchar *challenge_client,uchar *challenge_server,uchar *lmresp)" identifier (parameter_list "(uchar *ntlmv2hash,uchar *challenge_client,uchar *challenge_server,uchar *lmresp)" ( (parameter_declaration "uchar *ntlmv2hash" type_identifier (pointer_declarator "*ntlmv2hash" * identifier)) , (parameter_declaration "uchar *challenge_client" type_identifier (pointer_declarator "*challenge_client" * identifier)) , (parameter_declaration "uchar *challenge_server" type_identifier (pointer_declarator "*challenge_server" * identifier)) , (parameter_declaration "uchar *lmresp" type_identifier (pointer_declarator "*lmresp" * identifier)) ))) (compound_statement "{\n  int iVar1;\n  undefined4 uVar2;\n  CURLcode CVar3;\n  int in_GS_OFFSET;\n  uchar data [16];\n  uchar hmac_output [16];\n  \n  iVar1 = *(int *)(in_GS_OFFSET + 0x14);\n  data._4_4_ = *(undefined4 *)(challenge_server + 4);\n  data._0_4_ = *(undefined4 *)challenge_server;\n  data._8_4_ = *(undefined4 *)challenge_client;\n  data._12_4_ = *(undefined4 *)(challenge_client + 4);\n  CVar3 = Curl_hmac_md5(ntlmv2hash,0x10,data,0x10,hmac_output);\n  if (CVar3 == CURLE_OK) {\n    *(undefined4 *)lmresp = hmac_output._0_4_;\n    *(undefined4 *)(lmresp + 4) = hmac_output._4_4_;\n    *(undefined4 *)(lmresp + 8) = hmac_output._8_4_;\n    *(undefined4 *)(lmresp + 0xc) = hmac_output._12_4_;\n    uVar2 = *(undefined4 *)(challenge_client + 4);\n    *(undefined4 *)(lmresp + 0x10) = *(undefined4 *)challenge_client;\n    *(undefined4 *)(lmresp + 0x14) = uVar2;\n  }\n  if (iVar1 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return CVar3;\n  }\n                    /* WARNING: Subroutine does not return */\n  __stack_chk_fail_local();\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "undefined4 uVar2;" type_identifier identifier ;) (declaration "CURLcode CVar3;" type_identifier identifier ;) (declaration "int in_GS_OFFSET;" primitive_type identifier ;) (declaration "uchar data [16];" type_identifier (array_declarator "data [16]" identifier [ number_literal ]) ;) (declaration "uchar hmac_output [16];" type_identifier (array_declarator "hmac_output [16]" identifier [ number_literal ]) ;) (expression_statement "iVar1 = *(int *)(in_GS_OFFSET + 0x14);" (assignment_expression "iVar1 = *(int *)(in_GS_OFFSET + 0x14)" identifier = (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) ;) (expression_statement "data._4_4_ = *(undefined4 *)(challenge_server + 4);" (assignment_expression "data._4_4_ = *(undefined4 *)(challenge_server + 4)" (field_expression "data._4_4_" identifier . field_identifier) = (pointer_expression "*(undefined4 *)(challenge_server + 4)" * (cast_expression "(undefined4 *)(challenge_server + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(challenge_server + 4)" ( (binary_expression "challenge_server + 4" identifier + number_literal) ))))) ;) (expression_statement "data._0_4_ = *(undefined4 *)challenge_server;" (assignment_expression "data._0_4_ = *(undefined4 *)challenge_server" (field_expression "data._0_4_" identifier . field_identifier) = (pointer_expression "*(undefined4 *)challenge_server" * (cast_expression "(undefined4 *)challenge_server" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "data._8_4_ = *(undefined4 *)challenge_client;" (assignment_expression "data._8_4_ = *(undefined4 *)challenge_client" (field_expression "data._8_4_" identifier . field_identifier) = (pointer_expression "*(undefined4 *)challenge_client" * (cast_expression "(undefined4 *)challenge_client" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "data._12_4_ = *(undefined4 *)(challenge_client + 4);" (assignment_expression "data._12_4_ = *(undefined4 *)(challenge_client + 4)" (field_expression "data._12_4_" identifier . field_identifier) = (pointer_expression "*(undefined4 *)(challenge_client + 4)" * (cast_expression "(undefined4 *)(challenge_client + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(challenge_client + 4)" ( (binary_expression "challenge_client + 4" identifier + number_literal) ))))) ;) (expression_statement "CVar3 = Curl_hmac_md5(ntlmv2hash,0x10,data,0x10,hmac_output);" (assignment_expression "CVar3 = Curl_hmac_md5(ntlmv2hash,0x10,data,0x10,hmac_output)" identifier = (call_expression "Curl_hmac_md5(ntlmv2hash,0x10,data,0x10,hmac_output)" identifier (argument_list "(ntlmv2hash,0x10,data,0x10,hmac_output)" ( identifier , number_literal , identifier , number_literal , identifier )))) ;) (if_statement "if (CVar3 == CURLE_OK) {\n    *(undefined4 *)lmresp = hmac_output._0_4_;\n    *(undefined4 *)(lmresp + 4) = hmac_output._4_4_;\n    *(undefined4 *)(lmresp + 8) = hmac_output._8_4_;\n    *(undefined4 *)(lmresp + 0xc) = hmac_output._12_4_;\n    uVar2 = *(undefined4 *)(challenge_client + 4);\n    *(undefined4 *)(lmresp + 0x10) = *(undefined4 *)challenge_client;\n    *(undefined4 *)(lmresp + 0x14) = uVar2;\n  }" if (parenthesized_expression "(CVar3 == CURLE_OK)" ( (binary_expression "CVar3 == CURLE_OK" identifier == identifier) )) (compound_statement "{\n    *(undefined4 *)lmresp = hmac_output._0_4_;\n    *(undefined4 *)(lmresp + 4) = hmac_output._4_4_;\n    *(undefined4 *)(lmresp + 8) = hmac_output._8_4_;\n    *(undefined4 *)(lmresp + 0xc) = hmac_output._12_4_;\n    uVar2 = *(undefined4 *)(challenge_client + 4);\n    *(undefined4 *)(lmresp + 0x10) = *(undefined4 *)challenge_client;\n    *(undefined4 *)(lmresp + 0x14) = uVar2;\n  }" { (expression_statement "*(undefined4 *)lmresp = hmac_output._0_4_;" (assignment_expression "*(undefined4 *)lmresp = hmac_output._0_4_" (pointer_expression "*(undefined4 *)lmresp" * (cast_expression "(undefined4 *)lmresp" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) = (field_expression "hmac_output._0_4_" identifier . field_identifier)) ;) (expression_statement "*(undefined4 *)(lmresp + 4) = hmac_output._4_4_;" (assignment_expression "*(undefined4 *)(lmresp + 4) = hmac_output._4_4_" (pointer_expression "*(undefined4 *)(lmresp + 4)" * (cast_expression "(undefined4 *)(lmresp + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lmresp + 4)" ( (binary_expression "lmresp + 4" identifier + number_literal) )))) = (field_expression "hmac_output._4_4_" identifier . field_identifier)) ;) (expression_statement "*(undefined4 *)(lmresp + 8) = hmac_output._8_4_;" (assignment_expression "*(undefined4 *)(lmresp + 8) = hmac_output._8_4_" (pointer_expression "*(undefined4 *)(lmresp + 8)" * (cast_expression "(undefined4 *)(lmresp + 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lmresp + 8)" ( (binary_expression "lmresp + 8" identifier + number_literal) )))) = (field_expression "hmac_output._8_4_" identifier . field_identifier)) ;) (expression_statement "*(undefined4 *)(lmresp + 0xc) = hmac_output._12_4_;" (assignment_expression "*(undefined4 *)(lmresp + 0xc) = hmac_output._12_4_" (pointer_expression "*(undefined4 *)(lmresp + 0xc)" * (cast_expression "(undefined4 *)(lmresp + 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lmresp + 0xc)" ( (binary_expression "lmresp + 0xc" identifier + number_literal) )))) = (field_expression "hmac_output._12_4_" identifier . field_identifier)) ;) (expression_statement "uVar2 = *(undefined4 *)(challenge_client + 4);" (assignment_expression "uVar2 = *(undefined4 *)(challenge_client + 4)" identifier = (pointer_expression "*(undefined4 *)(challenge_client + 4)" * (cast_expression "(undefined4 *)(challenge_client + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(challenge_client + 4)" ( (binary_expression "challenge_client + 4" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(lmresp + 0x10) = *(undefined4 *)challenge_client;" (assignment_expression "*(undefined4 *)(lmresp + 0x10) = *(undefined4 *)challenge_client" (pointer_expression "*(undefined4 *)(lmresp + 0x10)" * (cast_expression "(undefined4 *)(lmresp + 0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lmresp + 0x10)" ( (binary_expression "lmresp + 0x10" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)challenge_client" * (cast_expression "(undefined4 *)challenge_client" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "*(undefined4 *)(lmresp + 0x14) = uVar2;" (assignment_expression "*(undefined4 *)(lmresp + 0x14) = uVar2" (pointer_expression "*(undefined4 *)(lmresp + 0x14)" * (cast_expression "(undefined4 *)(lmresp + 0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lmresp + 0x14)" ( (binary_expression "lmresp + 0x14" identifier + number_literal) )))) = identifier) ;) })) (if_statement "if (iVar1 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return CVar3;\n  }" if (parenthesized_expression "(iVar1 == *(int *)(in_GS_OFFSET + 0x14))" ( (binary_expression "iVar1 == *(int *)(in_GS_OFFSET + 0x14)" identifier == (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) )) (compound_statement "{\n    return CVar3;\n  }" { (return_statement "return CVar3;" return identifier ;) })) comment (expression_statement "__stack_chk_fail_local();" (call_expression "__stack_chk_fail_local()" identifier (argument_list "()" ( ))) ;) })))
(translation_unit "void FUN_0005ef10(undefined4 *param_1,undefined4 *param_2,undefined4 *param_3)\n\n{\n  undefined4 uVar1;\n  int iVar2;\n  int in_GS_OFFSET;\n  undefined4 unaff_retaddr;\n  undefined4 local_34;\n  undefined4 local_30;\n  undefined4 local_2c;\n  undefined4 local_28;\n  undefined4 local_24;\n  undefined4 local_20;\n  undefined4 local_1c;\n  undefined4 local_18;\n  int local_14;\n  undefined4 uStack_10;\n  \n  uStack_10 = 0x5ef18;\n  entry();\n  local_14 = *(int *)(in_GS_OFFSET + 0x14);\n  local_30 = param_2[1];\n  local_34 = *param_2;\n  local_2c = *param_1;\n  local_28 = param_1[1];\n  iVar2 = FUN_0005ebf0(unaff_retaddr,0x10,&local_34,0x10,&local_24);\n  if (iVar2 == 0) {\n    *param_3 = local_24;\n    param_3[1] = local_20;\n    param_3[2] = local_1c;\n    param_3[3] = local_18;\n    uVar1 = param_1[1];\n    param_3[4] = *param_1;\n    param_3[5] = uVar1;\n  }\n  if (local_14 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return;\n  }\n                    \n  FUN_0007c1a0();\n}\n\n" (function_definition "void FUN_0005ef10(undefined4 *param_1,undefined4 *param_2,undefined4 *param_3)\n\n{\n  undefined4 uVar1;\n  int iVar2;\n  int in_GS_OFFSET;\n  undefined4 unaff_retaddr;\n  undefined4 local_34;\n  undefined4 local_30;\n  undefined4 local_2c;\n  undefined4 local_28;\n  undefined4 local_24;\n  undefined4 local_20;\n  undefined4 local_1c;\n  undefined4 local_18;\n  int local_14;\n  undefined4 uStack_10;\n  \n  uStack_10 = 0x5ef18;\n  entry();\n  local_14 = *(int *)(in_GS_OFFSET + 0x14);\n  local_30 = param_2[1];\n  local_34 = *param_2;\n  local_2c = *param_1;\n  local_28 = param_1[1];\n  iVar2 = FUN_0005ebf0(unaff_retaddr,0x10,&local_34,0x10,&local_24);\n  if (iVar2 == 0) {\n    *param_3 = local_24;\n    param_3[1] = local_20;\n    param_3[2] = local_1c;\n    param_3[3] = local_18;\n    uVar1 = param_1[1];\n    param_3[4] = *param_1;\n    param_3[5] = uVar1;\n  }\n  if (local_14 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return;\n  }\n                    \n  FUN_0007c1a0();\n}" primitive_type (function_declarator "FUN_0005ef10(undefined4 *param_1,undefined4 *param_2,undefined4 *param_3)" identifier (parameter_list "(undefined4 *param_1,undefined4 *param_2,undefined4 *param_3)" ( (parameter_declaration "undefined4 *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "undefined4 *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "undefined4 *param_3" type_identifier (pointer_declarator "*param_3" * identifier)) ))) (compound_statement "{\n  undefined4 uVar1;\n  int iVar2;\n  int in_GS_OFFSET;\n  undefined4 unaff_retaddr;\n  undefined4 local_34;\n  undefined4 local_30;\n  undefined4 local_2c;\n  undefined4 local_28;\n  undefined4 local_24;\n  undefined4 local_20;\n  undefined4 local_1c;\n  undefined4 local_18;\n  int local_14;\n  undefined4 uStack_10;\n  \n  uStack_10 = 0x5ef18;\n  entry();\n  local_14 = *(int *)(in_GS_OFFSET + 0x14);\n  local_30 = param_2[1];\n  local_34 = *param_2;\n  local_2c = *param_1;\n  local_28 = param_1[1];\n  iVar2 = FUN_0005ebf0(unaff_retaddr,0x10,&local_34,0x10,&local_24);\n  if (iVar2 == 0) {\n    *param_3 = local_24;\n    param_3[1] = local_20;\n    param_3[2] = local_1c;\n    param_3[3] = local_18;\n    uVar1 = param_1[1];\n    param_3[4] = *param_1;\n    param_3[5] = uVar1;\n  }\n  if (local_14 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return;\n  }\n                    \n  FUN_0007c1a0();\n}" { (declaration "undefined4 uVar1;" type_identifier identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "int in_GS_OFFSET;" primitive_type identifier ;) (declaration "undefined4 unaff_retaddr;" type_identifier identifier ;) (declaration "undefined4 local_34;" type_identifier identifier ;) (declaration "undefined4 local_30;" type_identifier identifier ;) (declaration "undefined4 local_2c;" type_identifier identifier ;) (declaration "undefined4 local_28;" type_identifier identifier ;) (declaration "undefined4 local_24;" type_identifier identifier ;) (declaration "undefined4 local_20;" type_identifier identifier ;) (declaration "undefined4 local_1c;" type_identifier identifier ;) (declaration "undefined4 local_18;" type_identifier identifier ;) (declaration "int local_14;" primitive_type identifier ;) (declaration "undefined4 uStack_10;" type_identifier identifier ;) (expression_statement "uStack_10 = 0x5ef18;" (assignment_expression "uStack_10 = 0x5ef18" identifier = number_literal) ;) (expression_statement "entry();" (call_expression "entry()" identifier (argument_list "()" ( ))) ;) (expression_statement "local_14 = *(int *)(in_GS_OFFSET + 0x14);" (assignment_expression "local_14 = *(int *)(in_GS_OFFSET + 0x14)" identifier = (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) ;) (expression_statement "local_30 = param_2[1];" (assignment_expression "local_30 = param_2[1]" identifier = (subscript_expression "param_2[1]" identifier [ number_literal ])) ;) (expression_statement "local_34 = *param_2;" (assignment_expression "local_34 = *param_2" identifier = (pointer_expression "*param_2" * identifier)) ;) (expression_statement "local_2c = *param_1;" (assignment_expression "local_2c = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (expression_statement "local_28 = param_1[1];" (assignment_expression "local_28 = param_1[1]" identifier = (subscript_expression "param_1[1]" identifier [ number_literal ])) ;) (expression_statement "iVar2 = FUN_0005ebf0(unaff_retaddr,0x10,&local_34,0x10,&local_24);" (assignment_expression "iVar2 = FUN_0005ebf0(unaff_retaddr,0x10,&local_34,0x10,&local_24)" identifier = (call_expression "FUN_0005ebf0(unaff_retaddr,0x10,&local_34,0x10,&local_24)" identifier (argument_list "(unaff_retaddr,0x10,&local_34,0x10,&local_24)" ( identifier , number_literal , (pointer_expression "&local_34" & identifier) , number_literal , (pointer_expression "&local_24" & identifier) )))) ;) (if_statement "if (iVar2 == 0) {\n    *param_3 = local_24;\n    param_3[1] = local_20;\n    param_3[2] = local_1c;\n    param_3[3] = local_18;\n    uVar1 = param_1[1];\n    param_3[4] = *param_1;\n    param_3[5] = uVar1;\n  }" if (parenthesized_expression "(iVar2 == 0)" ( (binary_expression "iVar2 == 0" identifier == number_literal) )) (compound_statement "{\n    *param_3 = local_24;\n    param_3[1] = local_20;\n    param_3[2] = local_1c;\n    param_3[3] = local_18;\n    uVar1 = param_1[1];\n    param_3[4] = *param_1;\n    param_3[5] = uVar1;\n  }" { (expression_statement "*param_3 = local_24;" (assignment_expression "*param_3 = local_24" (pointer_expression "*param_3" * identifier) = identifier) ;) (expression_statement "param_3[1] = local_20;" (assignment_expression "param_3[1] = local_20" (subscript_expression "param_3[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_3[2] = local_1c;" (assignment_expression "param_3[2] = local_1c" (subscript_expression "param_3[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_3[3] = local_18;" (assignment_expression "param_3[3] = local_18" (subscript_expression "param_3[3]" identifier [ number_literal ]) = identifier) ;) (expression_statement "uVar1 = param_1[1];" (assignment_expression "uVar1 = param_1[1]" identifier = (subscript_expression "param_1[1]" identifier [ number_literal ])) ;) (expression_statement "param_3[4] = *param_1;" (assignment_expression "param_3[4] = *param_1" (subscript_expression "param_3[4]" identifier [ number_literal ]) = (pointer_expression "*param_1" * identifier)) ;) (expression_statement "param_3[5] = uVar1;" (assignment_expression "param_3[5] = uVar1" (subscript_expression "param_3[5]" identifier [ number_literal ]) = identifier) ;) })) (if_statement "if (local_14 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return;\n  }" if (parenthesized_expression "(local_14 == *(int *)(in_GS_OFFSET + 0x14))" ( (binary_expression "local_14 == *(int *)(in_GS_OFFSET + 0x14)" identifier == (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) )) (compound_statement "{\n    return;\n  }" { (return_statement "return;" return ;) })) (expression_statement "FUN_0007c1a0();" (call_expression "FUN_0007c1a0()" identifier (argument_list "()" ( ))) ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE (pointer_declarator * IDENT)) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , LIT , (pointer_expression & IDENT) , LIT , (pointer_expression & IDENT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (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 (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (compound_statement { (return_statement return ;) })) (expression_statement (call_expression IDENT (argument_list ( ))) ;) })))
(function_definition "void FUN_0005ef10(undefined4 *param_1,undefined4 *param_2,undefined4 *param_3)\n\n{\n  undefined4 uVar1;\n  int iVar2;\n  int in_GS_OFFSET;\n  undefined4 unaff_retaddr;\n  undefined4 local_34;\n  undefined4 local_30;\n  undefined4 local_2c;\n  undefined4 local_28;\n  undefined4 local_24;\n  undefined4 local_20;\n  undefined4 local_1c;\n  undefined4 local_18;\n  int local_14;\n  undefined4 uStack_10;\n  \n  uStack_10 = 0x5ef18;\n  entry();\n  local_14 = *(int *)(in_GS_OFFSET + 0x14);\n  local_30 = param_2[1];\n  local_34 = *param_2;\n  local_2c = *param_1;\n  local_28 = param_1[1];\n  iVar2 = FUN_0005ebf0(unaff_retaddr,0x10,&local_34,0x10,&local_24);\n  if (iVar2 == 0) {\n    *param_3 = local_24;\n    param_3[1] = local_20;\n    param_3[2] = local_1c;\n    param_3[3] = local_18;\n    uVar1 = param_1[1];\n    param_3[4] = *param_1;\n    param_3[5] = uVar1;\n  }\n  if (local_14 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return;\n  }\n                    \n  FUN_0007c1a0();\n}" (primitive_type "void") (function_declarator "FUN_0005ef10(undefined4 *param_1,undefined4 *param_2,undefined4 *param_3)" (identifier "FUN_0005ef10") (parameter_list "(undefined4 *param_1,undefined4 *param_2,undefined4 *param_3)" (( "(") (parameter_declaration "undefined4 *param_1" (type_identifier "undefined4") (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) (, ",") (parameter_declaration "undefined4 *param_2" (type_identifier "undefined4") (pointer_declarator "*param_2" (* "*") (identifier "param_2"))) (, ",") (parameter_declaration "undefined4 *param_3" (type_identifier "undefined4") (pointer_declarator "*param_3" (* "*") (identifier "param_3"))) () ")"))) (compound_statement "{\n  undefined4 uVar1;\n  int iVar2;\n  int in_GS_OFFSET;\n  undefined4 unaff_retaddr;\n  undefined4 local_34;\n  undefined4 local_30;\n  undefined4 local_2c;\n  undefined4 local_28;\n  undefined4 local_24;\n  undefined4 local_20;\n  undefined4 local_1c;\n  undefined4 local_18;\n  int local_14;\n  undefined4 uStack_10;\n  \n  uStack_10 = 0x5ef18;\n  entry();\n  local_14 = *(int *)(in_GS_OFFSET + 0x14);\n  local_30 = param_2[1];\n  local_34 = *param_2;\n  local_2c = *param_1;\n  local_28 = param_1[1];\n  iVar2 = FUN_0005ebf0(unaff_retaddr,0x10,&local_34,0x10,&local_24);\n  if (iVar2 == 0) {\n    *param_3 = local_24;\n    param_3[1] = local_20;\n    param_3[2] = local_1c;\n    param_3[3] = local_18;\n    uVar1 = param_1[1];\n    param_3[4] = *param_1;\n    param_3[5] = uVar1;\n  }\n  if (local_14 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return;\n  }\n                    \n  FUN_0007c1a0();\n}" ({ "{") (declaration "undefined4 uVar1;" (type_identifier "undefined4") (identifier "uVar1") (; ";")) (declaration "int iVar2;" (primitive_type "int") (identifier "iVar2") (; ";")) (declaration "int in_GS_OFFSET;" (primitive_type "int") (identifier "in_GS_OFFSET") (; ";")) (declaration "undefined4 unaff_retaddr;" (type_identifier "undefined4") (identifier "unaff_retaddr") (; ";")) (declaration "undefined4 local_34;" (type_identifier "undefined4") (identifier "local_34") (; ";")) (declaration "undefined4 local_30;" (type_identifier "undefined4") (identifier "local_30") (; ";")) (declaration "undefined4 local_2c;" (type_identifier "undefined4") (identifier "local_2c") (; ";")) (declaration "undefined4 local_28;" (type_identifier "undefined4") (identifier "local_28") (; ";")) (declaration "undefined4 local_24;" (type_identifier "undefined4") (identifier "local_24") (; ";")) (declaration "undefined4 local_20;" (type_identifier "undefined4") (identifier "local_20") (; ";")) (declaration "undefined4 local_1c;" (type_identifier "undefined4") (identifier "local_1c") (; ";")) (declaration "undefined4 local_18;" (type_identifier "undefined4") (identifier "local_18") (; ";")) (declaration "int local_14;" (primitive_type "int") (identifier "local_14") (; ";")) (declaration "undefined4 uStack_10;" (type_identifier "undefined4") (identifier "uStack_10") (; ";")) (expression_statement "uStack_10 = 0x5ef18;" (assignment_expression "uStack_10 = 0x5ef18" (identifier "uStack_10") (= "=") (number_literal "0x5ef18")) (; ";")) (expression_statement "entry();" (call_expression "entry()" (identifier "entry") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "local_14 = *(int *)(in_GS_OFFSET + 0x14);" (assignment_expression "local_14 = *(int *)(in_GS_OFFSET + 0x14)" (identifier "local_14") (= "=") (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" (* "*") (cast_expression "(int *)(in_GS_OFFSET + 0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(in_GS_OFFSET + 0x14)" (( "(") (binary_expression "in_GS_OFFSET + 0x14" (identifier "in_GS_OFFSET") (+ "+") (number_literal "0x14")) () ")"))))) (; ";")) (expression_statement "local_30 = param_2[1];" (assignment_expression "local_30 = param_2[1]" (identifier "local_30") (= "=") (subscript_expression "param_2[1]" (identifier "param_2") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "local_34 = *param_2;" (assignment_expression "local_34 = *param_2" (identifier "local_34") (= "=") (pointer_expression "*param_2" (* "*") (identifier "param_2"))) (; ";")) (expression_statement "local_2c = *param_1;" (assignment_expression "local_2c = *param_1" (identifier "local_2c") (= "=") (pointer_expression "*param_1" (* "*") (identifier "param_1"))) (; ";")) (expression_statement "local_28 = param_1[1];" (assignment_expression "local_28 = param_1[1]" (identifier "local_28") (= "=") (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "iVar2 = FUN_0005ebf0(unaff_retaddr,0x10,&local_34,0x10,&local_24);" (assignment_expression "iVar2 = FUN_0005ebf0(unaff_retaddr,0x10,&local_34,0x10,&local_24)" (identifier "iVar2") (= "=") (call_expression "FUN_0005ebf0(unaff_retaddr,0x10,&local_34,0x10,&local_24)" (identifier "FUN_0005ebf0") (argument_list "(unaff_retaddr,0x10,&local_34,0x10,&local_24)" (( "(") (identifier "unaff_retaddr") (, ",") (number_literal "0x10") (, ",") (pointer_expression "&local_34" (& "&") (identifier "local_34")) (, ",") (number_literal "0x10") (, ",") (pointer_expression "&local_24" (& "&") (identifier "local_24")) () ")")))) (; ";")) (if_statement "if (iVar2 == 0) {\n    *param_3 = local_24;\n    param_3[1] = local_20;\n    param_3[2] = local_1c;\n    param_3[3] = local_18;\n    uVar1 = param_1[1];\n    param_3[4] = *param_1;\n    param_3[5] = uVar1;\n  }" (if "if") (parenthesized_expression "(iVar2 == 0)" (( "(") (binary_expression "iVar2 == 0" (identifier "iVar2") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    *param_3 = local_24;\n    param_3[1] = local_20;\n    param_3[2] = local_1c;\n    param_3[3] = local_18;\n    uVar1 = param_1[1];\n    param_3[4] = *param_1;\n    param_3[5] = uVar1;\n  }" ({ "{") (expression_statement "*param_3 = local_24;" (assignment_expression "*param_3 = local_24" (pointer_expression "*param_3" (* "*") (identifier "param_3")) (= "=") (identifier "local_24")) (; ";")) (expression_statement "param_3[1] = local_20;" (assignment_expression "param_3[1] = local_20" (subscript_expression "param_3[1]" (identifier "param_3") ([ "[") (number_literal "1") (] "]")) (= "=") (identifier "local_20")) (; ";")) (expression_statement "param_3[2] = local_1c;" (assignment_expression "param_3[2] = local_1c" (subscript_expression "param_3[2]" (identifier "param_3") ([ "[") (number_literal "2") (] "]")) (= "=") (identifier "local_1c")) (; ";")) (expression_statement "param_3[3] = local_18;" (assignment_expression "param_3[3] = local_18" (subscript_expression "param_3[3]" (identifier "param_3") ([ "[") (number_literal "3") (] "]")) (= "=") (identifier "local_18")) (; ";")) (expression_statement "uVar1 = param_1[1];" (assignment_expression "uVar1 = param_1[1]" (identifier "uVar1") (= "=") (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "param_3[4] = *param_1;" (assignment_expression "param_3[4] = *param_1" (subscript_expression "param_3[4]" (identifier "param_3") ([ "[") (number_literal "4") (] "]")) (= "=") (pointer_expression "*param_1" (* "*") (identifier "param_1"))) (; ";")) (expression_statement "param_3[5] = uVar1;" (assignment_expression "param_3[5] = uVar1" (subscript_expression "param_3[5]" (identifier "param_3") ([ "[") (number_literal "5") (] "]")) (= "=") (identifier "uVar1")) (; ";")) (} "}"))) (if_statement "if (local_14 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return;\n  }" (if "if") (parenthesized_expression "(local_14 == *(int *)(in_GS_OFFSET + 0x14))" (( "(") (binary_expression "local_14 == *(int *)(in_GS_OFFSET + 0x14)" (identifier "local_14") (== "==") (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" (* "*") (cast_expression "(int *)(in_GS_OFFSET + 0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(in_GS_OFFSET + 0x14)" (( "(") (binary_expression "in_GS_OFFSET + 0x14" (identifier "in_GS_OFFSET") (+ "+") (number_literal "0x14")) () ")"))))) () ")")) (compound_statement "{\n    return;\n  }" ({ "{") (return_statement "return;" (return "return") (; ";")) (} "}"))) (expression_statement "FUN_0007c1a0();" (call_expression "FUN_0007c1a0()" (identifier "FUN_0007c1a0") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}")))

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

type_1 function_1
                   (type_2 *ntlmv2hash,type_2 *var_3,type_2 *var_2,type_2 *var_7)

{
  int var_8;
  type_3 uVar2;
  type_1 var_5;
  int var_1;
  type_2 data [16];
  type_2 hmac_output [16];
  
  var_8 = *(int *)(var_1 + 0x14);
  data._4_4_ = *(type_3 *)(var_2 + 4);
  data._0_4_ = *(type_3 *)var_2;
  data._8_4_ = *(type_3 *)var_3;
  data._12_4_ = *(type_3 *)(var_3 + 4);
  var_5 = var_4(ntlmv2hash,0x10,data,0x10,hmac_output);
  if (var_5 == var_6) {
    *(type_3 *)var_7 = hmac_output._0_4_;
    *(type_3 *)(var_7 + 4) = hmac_output._4_4_;
    *(type_3 *)(var_7 + 8) = hmac_output._8_4_;
    *(type_3 *)(var_7 + 0xc) = hmac_output._12_4_;
    uVar2 = *(type_3 *)(var_3 + 4);
    *(type_3 *)(var_7 + 0x10) = *(type_3 *)var_3;
    *(type_3 *)(var_7 + 0x14) = uVar2;
  }
  if (var_8 == *(int *)(var_1 + 0x14)) {
    return var_5;
  }
                    /* WARNING: Subroutine does not return */
  var_9();
}


(translation_unit (function_definition type: (primitive_type) declarator: (function_declarator declarator: (identifier) parameters: (parameter_list (parameter_declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (parameter_declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (parameter_declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))))) body: (compound_statement (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (call_expression function: (identifier) arguments: (argument_list))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (number_literal) (pointer_expression argument: (identifier)) (number_literal) (pointer_expression argument: (identifier)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (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: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) consequence: (compound_statement (return_statement))) (expression_statement (call_expression function: (identifier) arguments: (argument_list))))))

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

{
  undefined4 uVar1;
  int iVar2;
  int in_GS_OFFSET;
  undefined4 unaff_retaddr;
  undefined4 local_34;
  undefined4 local_30;
  undefined4 local_2c;
  undefined4 local_28;
  undefined4 local_24;
  undefined4 local_20;
  undefined4 local_1c;
  undefined4 local_18;
  int local_14;
  undefined4 uStack_10;
  
  uStack_10 = 0x5ef18;
  entry();
  local_14 = *(int *)(in_GS_OFFSET + 0x14);
  local_30 = param_2[1];
  local_34 = *param_2;
  local_2c = *param_1;
  local_28 = param_1[1];
  iVar2 = FUN_0005ebf0(unaff_retaddr,0x10,&local_34,0x10,&local_24);
  if (iVar2 == 0) {
    *param_3 = local_24;
    param_3[1] = local_20;
    param_3[2] = local_1c;
    param_3[3] = local_18;
    uVar1 = param_1[1];
    param_3[4] = *param_1;
    param_3[5] = uVar1;
  }
  if (local_14 == *(int *)(in_GS_OFFSET + 0x14)) {
    return;
  }
                    /* WARNING: Subroutine does not return */
  FUN_0007c1a0();
}

