
/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */
/* WARNING: Unknown calling convention */
/* WARNING: Enum "anon_enum_32": Some values do not have unique names */

CURLcode smb_setup_connection(connectdata *conn)

{
  char cVar1;
  Curl_easy *data;
  void *pvVar2;
  CURLcode CVar3;
  char *pcVar4;
  char *pcVar5;
  int in_GS_OFFSET;
  char *path;
  int local_20;
  undefined4 uStack_14;
  
  uStack_14 = 0x65319;
  local_20 = *(int *)(in_GS_OFFSET + 0x14);
  pvVar2 = (*Curl_ccalloc)(1,0x10);
  data = conn->data;
  (data->req).protop = pvVar2;
  if (pvVar2 != (void *)0x0) {
    CVar3 = Curl_urldecode(data,(data->state).up.path,0,&path,(size_t *)0x0,true);
    if (CVar3 != CURLE_OK) goto LAB_00065401;
    if ((*path == '/') || (pcVar4 = path, *path == '\\')) {
      pcVar4 = path + 1;
    }
    pcVar4 = (*Curl_cstrdup)(pcVar4);
    (conn->proto).ftpc.pp.linestart_resp = pcVar4;
    (*Curl_cfree)(path);
    pcVar4 = (conn->proto).ftpc.pp.linestart_resp;
    if (pcVar4 != (char *)0x0) {
      pcVar5 = strchr(pcVar4,0x2f);
      if ((pcVar5 == (char *)0x0) && (pcVar5 = strchr(pcVar4,0x5c), pcVar5 == (char *)0x0)) {
        CVar3 = CURLE_URL_MALFORMAT;
        (*Curl_cfree)(pcVar4);
        (conn->proto).ftpc.pp.linestart_resp = (char *)0x0;
      }
      else {
        pcVar4 = pcVar5 + 1;
        *pcVar5 = '\0';
        *(char **)((int)pvVar2 + 4) = pcVar4;
        cVar1 = pcVar5[1];
        while (cVar1 != '\0') {
          if (cVar1 == '/') {
            *pcVar4 = '\\';
          }
          pcVar4 = pcVar4 + 1;
          cVar1 = *pcVar4;
        }
      }
      goto LAB_00065401;
    }
  }
  CVar3 = CURLE_OUT_OF_MEMORY;
LAB_00065401:
  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {
                    /* WARNING: Subroutine does not return */
    __stack_chk_fail_local();
  }
  return CVar3;
}



int FUN_00065310(void)

{
  char cVar1;
  int iVar2;
  int iVar3;
  int iVar4;
  char *pcVar5;
  char *pcVar6;
  int unaff_EBX;
  int in_GS_OFFSET;
  int *unaff_retaddr;
  char *local_28;
  int local_24;
  undefined4 uStack_14;
  
  uStack_14 = 0x65319;
  entry();
  local_24 = *(int *)(in_GS_OFFSET + 0x14);
  iVar2 = (**(code **)(unaff_EBX + 0x4bd47))(1,0x10);
  iVar3 = *unaff_retaddr;
  *(int *)(iVar3 + 0x148) = iVar2;
  if (iVar2 != 0) {
    iVar3 = FUN_000344f0(iVar3,*(undefined4 *)(iVar3 + 0xf0c),0,&local_28,0,1);
    if (iVar3 != 0) goto LAB_00065401;
    if ((*local_28 == '/') || (pcVar6 = local_28, *local_28 == '\\')) {
      pcVar6 = local_28 + 1;
    }
    iVar4 = (**(code **)(unaff_EBX + 0x4bd4b))(pcVar6);
    unaff_retaddr[300] = iVar4;
    (**(code **)(unaff_EBX + 0x4bd53))(local_28);
    pcVar6 = (char *)unaff_retaddr[300];
    if (pcVar6 != (char *)0x0) {
      pcVar5 = strchr(pcVar6,0x2f);
      if ((pcVar5 == (char *)0x0) && (pcVar5 = strchr(pcVar6,0x5c), pcVar5 == (char *)0x0)) {
        iVar3 = 3;
        (**(code **)(unaff_EBX + 0x4bd53))(pcVar6);
        unaff_retaddr[300] = 0;
      }
      else {
        pcVar6 = pcVar5 + 1;
        *pcVar5 = '\0';
        *(char **)(iVar2 + 4) = pcVar6;
        cVar1 = pcVar5[1];
        while (cVar1 != '\0') {
          if (cVar1 == '/') {
            *pcVar6 = '\\';
          }
          pcVar6 = pcVar6 + 1;
          cVar1 = *pcVar6;
        }
      }
      goto LAB_00065401;
    }
  }
  iVar3 = 0x1b;
LAB_00065401:
  if (local_24 != *(int *)(in_GS_OFFSET + 0x14)) {
                    /* WARNING: Subroutine does not return */
    FUN_0007c1a0();
  }
  return iVar3;
}


PUSH EBP
PUSH EDI
PUSH ESI
PUSH EBX
CALL 0x00019ed0
ADD EBX,0x4b4c7
SUB ESP,0x34
MOV EAX,GS:[0x14]
MOV dword ptr [ESP + 0x24],EAX
XOR EAX,EAX
MOV EDI,dword ptr [ESP + 0x48]
PUSH 0x10
PUSH 0x1
LEA EAX,[EBX + 0x880]
CALL dword ptr [EAX]
ADD ESP,0x10
MOV ESI,EAX
MOV EAX,dword ptr [EDI]
MOV dword ptr [EAX + 0x148],ESI
TEST ESI,ESI
JZ 0x00065430
SUB ESP,0x8
PUSH 0x1
PUSH 0x0
LEA EDX,[ESP + 0x28]
PUSH EDX
PUSH 0x0
PUSH dword ptr [EAX + 0xf0c]
PUSH EAX
CALL 0x000344f0
ADD ESP,0x20
MOV EBP,EAX
TEST EAX,EAX
JNZ 0x00065401
LEA EAX,[EBX + 0x884]
MOV EDX,dword ptr [EAX]
MOV EAX,dword ptr [ESP + 0x18]
MOVZX ECX,byte ptr [EAX]
CMP CL,0x2f
JZ 0x00065420
CMP CL,0x5c
JZ 0x00065420
SUB ESP,0xc
PUSH EAX
CALL EDX
MOV dword ptr [EDI + 0x4b0],EAX
POP EAX
LEA EAX,[EBX + 0x88c]
MOV dword ptr [ESP + 0x18],EAX
PUSH dword ptr [ESP + 0x24]
CALL dword ptr [EAX]
MOV ECX,dword ptr [EDI + 0x4b0]
ADD ESP,0x10
TEST ECX,ECX
JZ 0x00065430
SUB ESP,0x8
PUSH 0x2f
PUSH ECX
MOV dword ptr [ESP + 0x18],ECX
CALL 0x00018ea0
ADD ESP,0x10
MOV ECX,dword ptr [ESP + 0x8]
TEST EAX,EAX
JZ 0x00065440
LEA ECX,[EAX + 0x1]
MOV byte ptr [EAX],0x0
MOV dword ptr [ESI + 0x4],ECX
MOVZX EAX,byte ptr [EAX + 0x1]
TEST AL,AL
JZ 0x00065401
CMP AL,0x2f
JNZ 0x000653f7
MOV byte ptr [ECX],0x5c
ADD ECX,0x1
MOVZX EAX,byte ptr [ECX]
TEST AL,AL
JNZ 0x000653f0
MOV EDX,dword ptr [ESP + 0x1c]
XOR EDX,dword ptr GS:[0x14]
MOV EAX,EBP
JNZ 0x00065478
ADD ESP,0x2c
POP EBX
POP ESI
POP EDI
POP EBP
RET
ADD EAX,0x1
JMP 0x0006539b
MOV EBP,0x1b
JMP 0x00065401
SUB ESP,0x8
PUSH 0x5c
PUSH ECX
MOV dword ptr [ESP + 0x18],ECX
CALL 0x00018ea0
ADD ESP,0x10
MOV ECX,dword ptr [ESP + 0x8]
TEST EAX,EAX
JNZ 0x000653df
SUB ESP,0xc
MOV EBP,0x3
PUSH ECX
MOV EAX,dword ptr [ESP + 0x1c]
CALL dword ptr [EAX]
MOV dword ptr [EDI + 0x4b0],0x0
ADD ESP,0x10
JMP 0x00065401
CALL 0x0007c1a0
(translation_unit "int FUN_00065310(void)\n\n{\n  char cVar1;\n  int iVar2;\n  int iVar3;\n  int iVar4;\n  char *pcVar5;\n  char *pcVar6;\n  int unaff_EBX;\n  int in_GS_OFFSET;\n  int *unaff_retaddr;\n  char *local_28;\n  int local_24;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x65319;\n  entry();\n  local_24 = *(int *)(in_GS_OFFSET + 0x14);\n  iVar2 = (**(code **)(unaff_EBX + 0x4bd47))(1,0x10);\n  iVar3 = *unaff_retaddr;\n  *(int *)(iVar3 + 0x148) = iVar2;\n  if (iVar2 != 0) {\n    iVar3 = FUN_000344f0(iVar3,*(undefined4 *)(iVar3 + 0xf0c),0,&local_28,0,1);\n    if (iVar3 != 0) goto LAB_00065401;\n    if ((*local_28 == '/') || (pcVar6 = local_28, *local_28 == '\\')) {\n      pcVar6 = local_28 + 1;\n    }\n    iVar4 = (**(code **)(unaff_EBX + 0x4bd4b))(pcVar6);\n    unaff_retaddr[300] = iVar4;\n    (**(code **)(unaff_EBX + 0x4bd53))(local_28);\n    pcVar6 = (char *)unaff_retaddr[300];\n    if (pcVar6 != (char *)0x0) {\n      pcVar5 = strchr(pcVar6,0x2f);\n      if ((pcVar5 == (char *)0x0) && (pcVar5 = strchr(pcVar6,0x5c), pcVar5 == (char *)0x0)) {\n        iVar3 = 3;\n        (**(code **)(unaff_EBX + 0x4bd53))(pcVar6);\n        unaff_retaddr[300] = 0;\n      }\n      else {\n        pcVar6 = pcVar5 + 1;\n        *pcVar5 = '\0';\n        *(char **)(iVar2 + 4) = pcVar6;\n        cVar1 = pcVar5[1];\n        while (cVar1 != '\0') {\n          if (cVar1 == '/') {\n            *pcVar6 = '\\';\n          }\n          pcVar6 = pcVar6 + 1;\n          cVar1 = *pcVar6;\n        }\n      }\n      goto LAB_00065401;\n    }\n  }\n  iVar3 = 0x1b;\nLAB_00065401:\n  if (local_24 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    FUN_0007c1a0();\n  }\n  return iVar3;\n}\n\n" (function_definition "int FUN_00065310(void)\n\n{\n  char cVar1;\n  int iVar2;\n  int iVar3;\n  int iVar4;\n  char *pcVar5;\n  char *pcVar6;\n  int unaff_EBX;\n  int in_GS_OFFSET;\n  int *unaff_retaddr;\n  char *local_28;\n  int local_24;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x65319;\n  entry();\n  local_24 = *(int *)(in_GS_OFFSET + 0x14);\n  iVar2 = (**(code **)(unaff_EBX + 0x4bd47))(1,0x10);\n  iVar3 = *unaff_retaddr;\n  *(int *)(iVar3 + 0x148) = iVar2;\n  if (iVar2 != 0) {\n    iVar3 = FUN_000344f0(iVar3,*(undefined4 *)(iVar3 + 0xf0c),0,&local_28,0,1);\n    if (iVar3 != 0) goto LAB_00065401;\n    if ((*local_28 == '/') || (pcVar6 = local_28, *local_28 == '\\')) {\n      pcVar6 = local_28 + 1;\n    }\n    iVar4 = (**(code **)(unaff_EBX + 0x4bd4b))(pcVar6);\n    unaff_retaddr[300] = iVar4;\n    (**(code **)(unaff_EBX + 0x4bd53))(local_28);\n    pcVar6 = (char *)unaff_retaddr[300];\n    if (pcVar6 != (char *)0x0) {\n      pcVar5 = strchr(pcVar6,0x2f);\n      if ((pcVar5 == (char *)0x0) && (pcVar5 = strchr(pcVar6,0x5c), pcVar5 == (char *)0x0)) {\n        iVar3 = 3;\n        (**(code **)(unaff_EBX + 0x4bd53))(pcVar6);\n        unaff_retaddr[300] = 0;\n      }\n      else {\n        pcVar6 = pcVar5 + 1;\n        *pcVar5 = '\0';\n        *(char **)(iVar2 + 4) = pcVar6;\n        cVar1 = pcVar5[1];\n        while (cVar1 != '\0') {\n          if (cVar1 == '/') {\n            *pcVar6 = '\\';\n          }\n          pcVar6 = pcVar6 + 1;\n          cVar1 = *pcVar6;\n        }\n      }\n      goto LAB_00065401;\n    }\n  }\n  iVar3 = 0x1b;\nLAB_00065401:\n  if (local_24 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    FUN_0007c1a0();\n  }\n  return iVar3;\n}" primitive_type (function_declarator "FUN_00065310(void)" identifier (parameter_list "(void)" ( (parameter_declaration "void" primitive_type) ))) (compound_statement "{\n  char cVar1;\n  int iVar2;\n  int iVar3;\n  int iVar4;\n  char *pcVar5;\n  char *pcVar6;\n  int unaff_EBX;\n  int in_GS_OFFSET;\n  int *unaff_retaddr;\n  char *local_28;\n  int local_24;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x65319;\n  entry();\n  local_24 = *(int *)(in_GS_OFFSET + 0x14);\n  iVar2 = (**(code **)(unaff_EBX + 0x4bd47))(1,0x10);\n  iVar3 = *unaff_retaddr;\n  *(int *)(iVar3 + 0x148) = iVar2;\n  if (iVar2 != 0) {\n    iVar3 = FUN_000344f0(iVar3,*(undefined4 *)(iVar3 + 0xf0c),0,&local_28,0,1);\n    if (iVar3 != 0) goto LAB_00065401;\n    if ((*local_28 == '/') || (pcVar6 = local_28, *local_28 == '\\')) {\n      pcVar6 = local_28 + 1;\n    }\n    iVar4 = (**(code **)(unaff_EBX + 0x4bd4b))(pcVar6);\n    unaff_retaddr[300] = iVar4;\n    (**(code **)(unaff_EBX + 0x4bd53))(local_28);\n    pcVar6 = (char *)unaff_retaddr[300];\n    if (pcVar6 != (char *)0x0) {\n      pcVar5 = strchr(pcVar6,0x2f);\n      if ((pcVar5 == (char *)0x0) && (pcVar5 = strchr(pcVar6,0x5c), pcVar5 == (char *)0x0)) {\n        iVar3 = 3;\n        (**(code **)(unaff_EBX + 0x4bd53))(pcVar6);\n        unaff_retaddr[300] = 0;\n      }\n      else {\n        pcVar6 = pcVar5 + 1;\n        *pcVar5 = '\0';\n        *(char **)(iVar2 + 4) = pcVar6;\n        cVar1 = pcVar5[1];\n        while (cVar1 != '\0') {\n          if (cVar1 == '/') {\n            *pcVar6 = '\\';\n          }\n          pcVar6 = pcVar6 + 1;\n          cVar1 = *pcVar6;\n        }\n      }\n      goto LAB_00065401;\n    }\n  }\n  iVar3 = 0x1b;\nLAB_00065401:\n  if (local_24 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    FUN_0007c1a0();\n  }\n  return iVar3;\n}" { (declaration "char cVar1;" primitive_type identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "char *pcVar5;" primitive_type (pointer_declarator "*pcVar5" * identifier) ;) (declaration "char *pcVar6;" primitive_type (pointer_declarator "*pcVar6" * identifier) ;) (declaration "int unaff_EBX;" primitive_type identifier ;) (declaration "int in_GS_OFFSET;" primitive_type identifier ;) (declaration "int *unaff_retaddr;" primitive_type (pointer_declarator "*unaff_retaddr" * identifier) ;) (declaration "char *local_28;" primitive_type (pointer_declarator "*local_28" * identifier) ;) (declaration "int local_24;" primitive_type identifier ;) (declaration "undefined4 uStack_14;" type_identifier identifier ;) (expression_statement "uStack_14 = 0x65319;" (assignment_expression "uStack_14 = 0x65319" identifier = number_literal) ;) (expression_statement "entry();" (call_expression "entry()" identifier (argument_list "()" ( ))) ;) (expression_statement "local_24 = *(int *)(in_GS_OFFSET + 0x14);" (assignment_expression "local_24 = *(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 "iVar2 = (**(code **)(unaff_EBX + 0x4bd47))(1,0x10);" (assignment_expression "iVar2 = (**(code **)(unaff_EBX + 0x4bd47))(1,0x10)" identifier = (call_expression "(**(code **)(unaff_EBX + 0x4bd47))(1,0x10)" (parenthesized_expression "(**(code **)(unaff_EBX + 0x4bd47))" ( (pointer_expression "**(code **)(unaff_EBX + 0x4bd47)" * (pointer_expression "*(code **)(unaff_EBX + 0x4bd47)" * (cast_expression "(code **)(unaff_EBX + 0x4bd47)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(unaff_EBX + 0x4bd47)" ( (binary_expression "unaff_EBX + 0x4bd47" identifier + number_literal) ))))) )) (argument_list "(1,0x10)" ( number_literal , number_literal )))) ;) (expression_statement "iVar3 = *unaff_retaddr;" (assignment_expression "iVar3 = *unaff_retaddr" identifier = (pointer_expression "*unaff_retaddr" * identifier)) ;) (expression_statement "*(int *)(iVar3 + 0x148) = iVar2;" (assignment_expression "*(int *)(iVar3 + 0x148) = iVar2" (pointer_expression "*(int *)(iVar3 + 0x148)" * (cast_expression "(int *)(iVar3 + 0x148)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0x148)" ( (binary_expression "iVar3 + 0x148" identifier + number_literal) )))) = identifier) ;) (if_statement "if (iVar2 != 0) {\n    iVar3 = FUN_000344f0(iVar3,*(undefined4 *)(iVar3 + 0xf0c),0,&local_28,0,1);\n    if (iVar3 != 0) goto LAB_00065401;\n    if ((*local_28 == '/') || (pcVar6 = local_28, *local_28 == '\\')) {\n      pcVar6 = local_28 + 1;\n    }\n    iVar4 = (**(code **)(unaff_EBX + 0x4bd4b))(pcVar6);\n    unaff_retaddr[300] = iVar4;\n    (**(code **)(unaff_EBX + 0x4bd53))(local_28);\n    pcVar6 = (char *)unaff_retaddr[300];\n    if (pcVar6 != (char *)0x0) {\n      pcVar5 = strchr(pcVar6,0x2f);\n      if ((pcVar5 == (char *)0x0) && (pcVar5 = strchr(pcVar6,0x5c), pcVar5 == (char *)0x0)) {\n        iVar3 = 3;\n        (**(code **)(unaff_EBX + 0x4bd53))(pcVar6);\n        unaff_retaddr[300] = 0;\n      }\n      else {\n        pcVar6 = pcVar5 + 1;\n        *pcVar5 = '\0';\n        *(char **)(iVar2 + 4) = pcVar6;\n        cVar1 = pcVar5[1];\n        while (cVar1 != '\0') {\n          if (cVar1 == '/') {\n            *pcVar6 = '\\';\n          }\n          pcVar6 = pcVar6 + 1;\n          cVar1 = *pcVar6;\n        }\n      }\n      goto LAB_00065401;\n    }\n  }" if (parenthesized_expression "(iVar2 != 0)" ( (binary_expression "iVar2 != 0" identifier != number_literal) )) (compound_statement "{\n    iVar3 = FUN_000344f0(iVar3,*(undefined4 *)(iVar3 + 0xf0c),0,&local_28,0,1);\n    if (iVar3 != 0) goto LAB_00065401;\n    if ((*local_28 == '/') || (pcVar6 = local_28, *local_28 == '\\')) {\n      pcVar6 = local_28 + 1;\n    }\n    iVar4 = (**(code **)(unaff_EBX + 0x4bd4b))(pcVar6);\n    unaff_retaddr[300] = iVar4;\n    (**(code **)(unaff_EBX + 0x4bd53))(local_28);\n    pcVar6 = (char *)unaff_retaddr[300];\n    if (pcVar6 != (char *)0x0) {\n      pcVar5 = strchr(pcVar6,0x2f);\n      if ((pcVar5 == (char *)0x0) && (pcVar5 = strchr(pcVar6,0x5c), pcVar5 == (char *)0x0)) {\n        iVar3 = 3;\n        (**(code **)(unaff_EBX + 0x4bd53))(pcVar6);\n        unaff_retaddr[300] = 0;\n      }\n      else {\n        pcVar6 = pcVar5 + 1;\n        *pcVar5 = '\0';\n        *(char **)(iVar2 + 4) = pcVar6;\n        cVar1 = pcVar5[1];\n        while (cVar1 != '\0') {\n          if (cVar1 == '/') {\n            *pcVar6 = '\\';\n          }\n          pcVar6 = pcVar6 + 1;\n          cVar1 = *pcVar6;\n        }\n      }\n      goto LAB_00065401;\n    }\n  }" { (expression_statement "iVar3 = FUN_000344f0(iVar3,*(undefined4 *)(iVar3 + 0xf0c),0,&local_28,0,1);" (assignment_expression "iVar3 = FUN_000344f0(iVar3,*(undefined4 *)(iVar3 + 0xf0c),0,&local_28,0,1)" identifier = (call_expression "FUN_000344f0(iVar3,*(undefined4 *)(iVar3 + 0xf0c),0,&local_28,0,1)" identifier (argument_list "(iVar3,*(undefined4 *)(iVar3 + 0xf0c),0,&local_28,0,1)" ( identifier , (pointer_expression "*(undefined4 *)(iVar3 + 0xf0c)" * (cast_expression "(undefined4 *)(iVar3 + 0xf0c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0xf0c)" ( (binary_expression "iVar3 + 0xf0c" identifier + number_literal) )))) , number_literal , (pointer_expression "&local_28" & identifier) , number_literal , number_literal )))) ;) (if_statement "if (iVar3 != 0) goto LAB_00065401;" if (parenthesized_expression "(iVar3 != 0)" ( (binary_expression "iVar3 != 0" identifier != number_literal) )) (goto_statement "goto LAB_00065401;" goto statement_identifier ;)) (if_statement "if ((*local_28 == '/') || (pcVar6 = local_28, *local_28 == '\\')) {\n      pcVar6 = local_28 + 1;\n    }" if (parenthesized_expression "((*local_28 == '/') || (pcVar6 = local_28, *local_28 == '\\'))" ( (binary_expression "(*local_28 == '/') || (pcVar6 = local_28, *local_28 == '\\')" (parenthesized_expression "(*local_28 == '/')" ( (binary_expression "*local_28 == '/'" (pointer_expression "*local_28" * identifier) == (char_literal "'/'" ' character ')) )) || (parenthesized_expression "(pcVar6 = local_28, *local_28 == '\\')" ( (comma_expression "pcVar6 = local_28, *local_28 == '\\'" (assignment_expression "pcVar6 = local_28" identifier = identifier) , (binary_expression "*local_28 == '\\'" (pointer_expression "*local_28" * identifier) == (char_literal "'\\'" ' escape_sequence '))) ))) )) (compound_statement "{\n      pcVar6 = local_28 + 1;\n    }" { (expression_statement "pcVar6 = local_28 + 1;" (assignment_expression "pcVar6 = local_28 + 1" identifier = (binary_expression "local_28 + 1" identifier + number_literal)) ;) })) (expression_statement "iVar4 = (**(code **)(unaff_EBX + 0x4bd4b))(pcVar6);" (assignment_expression "iVar4 = (**(code **)(unaff_EBX + 0x4bd4b))(pcVar6)" identifier = (call_expression "(**(code **)(unaff_EBX + 0x4bd4b))(pcVar6)" (parenthesized_expression "(**(code **)(unaff_EBX + 0x4bd4b))" ( (pointer_expression "**(code **)(unaff_EBX + 0x4bd4b)" * (pointer_expression "*(code **)(unaff_EBX + 0x4bd4b)" * (cast_expression "(code **)(unaff_EBX + 0x4bd4b)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(unaff_EBX + 0x4bd4b)" ( (binary_expression "unaff_EBX + 0x4bd4b" identifier + number_literal) ))))) )) (argument_list "(pcVar6)" ( identifier )))) ;) (expression_statement "unaff_retaddr[300] = iVar4;" (assignment_expression "unaff_retaddr[300] = iVar4" (subscript_expression "unaff_retaddr[300]" identifier [ number_literal ]) = identifier) ;) (expression_statement "(**(code **)(unaff_EBX + 0x4bd53))(local_28);" (call_expression "(**(code **)(unaff_EBX + 0x4bd53))(local_28)" (parenthesized_expression "(**(code **)(unaff_EBX + 0x4bd53))" ( (pointer_expression "**(code **)(unaff_EBX + 0x4bd53)" * (pointer_expression "*(code **)(unaff_EBX + 0x4bd53)" * (cast_expression "(code **)(unaff_EBX + 0x4bd53)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(unaff_EBX + 0x4bd53)" ( (binary_expression "unaff_EBX + 0x4bd53" identifier + number_literal) ))))) )) (argument_list "(local_28)" ( identifier ))) ;) (expression_statement "pcVar6 = (char *)unaff_retaddr[300];" (assignment_expression "pcVar6 = (char *)unaff_retaddr[300]" identifier = (cast_expression "(char *)unaff_retaddr[300]" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "unaff_retaddr[300]" identifier [ number_literal ]))) ;) (if_statement "if (pcVar6 != (char *)0x0) {\n      pcVar5 = strchr(pcVar6,0x2f);\n      if ((pcVar5 == (char *)0x0) && (pcVar5 = strchr(pcVar6,0x5c), pcVar5 == (char *)0x0)) {\n        iVar3 = 3;\n        (**(code **)(unaff_EBX + 0x4bd53))(pcVar6);\n        unaff_retaddr[300] = 0;\n      }\n      else {\n        pcVar6 = pcVar5 + 1;\n        *pcVar5 = '\0';\n        *(char **)(iVar2 + 4) = pcVar6;\n        cVar1 = pcVar5[1];\n        while (cVar1 != '\0') {\n          if (cVar1 == '/') {\n            *pcVar6 = '\\';\n          }\n          pcVar6 = pcVar6 + 1;\n          cVar1 = *pcVar6;\n        }\n      }\n      goto LAB_00065401;\n    }" if (parenthesized_expression "(pcVar6 != (char *)0x0)" ( (binary_expression "pcVar6 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      pcVar5 = strchr(pcVar6,0x2f);\n      if ((pcVar5 == (char *)0x0) && (pcVar5 = strchr(pcVar6,0x5c), pcVar5 == (char *)0x0)) {\n        iVar3 = 3;\n        (**(code **)(unaff_EBX + 0x4bd53))(pcVar6);\n        unaff_retaddr[300] = 0;\n      }\n      else {\n        pcVar6 = pcVar5 + 1;\n        *pcVar5 = '\0';\n        *(char **)(iVar2 + 4) = pcVar6;\n        cVar1 = pcVar5[1];\n        while (cVar1 != '\0') {\n          if (cVar1 == '/') {\n            *pcVar6 = '\\';\n          }\n          pcVar6 = pcVar6 + 1;\n          cVar1 = *pcVar6;\n        }\n      }\n      goto LAB_00065401;\n    }" { (expression_statement "pcVar5 = strchr(pcVar6,0x2f);" (assignment_expression "pcVar5 = strchr(pcVar6,0x2f)" identifier = (call_expression "strchr(pcVar6,0x2f)" identifier (argument_list "(pcVar6,0x2f)" ( identifier , number_literal )))) ;) (if_statement "if ((pcVar5 == (char *)0x0) && (pcVar5 = strchr(pcVar6,0x5c), pcVar5 == (char *)0x0)) {\n        iVar3 = 3;\n        (**(code **)(unaff_EBX + 0x4bd53))(pcVar6);\n        unaff_retaddr[300] = 0;\n      }\n      else {\n        pcVar6 = pcVar5 + 1;\n        *pcVar5 = '\0';\n        *(char **)(iVar2 + 4) = pcVar6;\n        cVar1 = pcVar5[1];\n        while (cVar1 != '\0') {\n          if (cVar1 == '/') {\n            *pcVar6 = '\\';\n          }\n          pcVar6 = pcVar6 + 1;\n          cVar1 = *pcVar6;\n        }\n      }" if (parenthesized_expression "((pcVar5 == (char *)0x0) && (pcVar5 = strchr(pcVar6,0x5c), pcVar5 == (char *)0x0))" ( (binary_expression "(pcVar5 == (char *)0x0) && (pcVar5 = strchr(pcVar6,0x5c), pcVar5 == (char *)0x0)" (parenthesized_expression "(pcVar5 == (char *)0x0)" ( (binary_expression "pcVar5 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "(pcVar5 = strchr(pcVar6,0x5c), pcVar5 == (char *)0x0)" ( (comma_expression "pcVar5 = strchr(pcVar6,0x5c), pcVar5 == (char *)0x0" (assignment_expression "pcVar5 = strchr(pcVar6,0x5c)" identifier = (call_expression "strchr(pcVar6,0x5c)" identifier (argument_list "(pcVar6,0x5c)" ( identifier , number_literal )))) , (binary_expression "pcVar5 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal))) ))) )) (compound_statement "{\n        iVar3 = 3;\n        (**(code **)(unaff_EBX + 0x4bd53))(pcVar6);\n        unaff_retaddr[300] = 0;\n      }" { (expression_statement "iVar3 = 3;" (assignment_expression "iVar3 = 3" identifier = number_literal) ;) (expression_statement "(**(code **)(unaff_EBX + 0x4bd53))(pcVar6);" (call_expression "(**(code **)(unaff_EBX + 0x4bd53))(pcVar6)" (parenthesized_expression "(**(code **)(unaff_EBX + 0x4bd53))" ( (pointer_expression "**(code **)(unaff_EBX + 0x4bd53)" * (pointer_expression "*(code **)(unaff_EBX + 0x4bd53)" * (cast_expression "(code **)(unaff_EBX + 0x4bd53)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(unaff_EBX + 0x4bd53)" ( (binary_expression "unaff_EBX + 0x4bd53" identifier + number_literal) ))))) )) (argument_list "(pcVar6)" ( identifier ))) ;) (expression_statement "unaff_retaddr[300] = 0;" (assignment_expression "unaff_retaddr[300] = 0" (subscript_expression "unaff_retaddr[300]" identifier [ number_literal ]) = number_literal) ;) }) (else_clause "else {\n        pcVar6 = pcVar5 + 1;\n        *pcVar5 = '\0';\n        *(char **)(iVar2 + 4) = pcVar6;\n        cVar1 = pcVar5[1];\n        while (cVar1 != '\0') {\n          if (cVar1 == '/') {\n            *pcVar6 = '\\';\n          }\n          pcVar6 = pcVar6 + 1;\n          cVar1 = *pcVar6;\n        }\n      }" else (compound_statement "{\n        pcVar6 = pcVar5 + 1;\n        *pcVar5 = '\0';\n        *(char **)(iVar2 + 4) = pcVar6;\n        cVar1 = pcVar5[1];\n        while (cVar1 != '\0') {\n          if (cVar1 == '/') {\n            *pcVar6 = '\\';\n          }\n          pcVar6 = pcVar6 + 1;\n          cVar1 = *pcVar6;\n        }\n      }" { (expression_statement "pcVar6 = pcVar5 + 1;" (assignment_expression "pcVar6 = pcVar5 + 1" identifier = (binary_expression "pcVar5 + 1" identifier + number_literal)) ;) (expression_statement "*pcVar5 = '\0';" (assignment_expression "*pcVar5 = '\0'" (pointer_expression "*pcVar5" * identifier) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "*(char **)(iVar2 + 4) = pcVar6;" (assignment_expression "*(char **)(iVar2 + 4) = pcVar6" (pointer_expression "*(char **)(iVar2 + 4)" * (cast_expression "(char **)(iVar2 + 4)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar2 + 4)" ( (binary_expression "iVar2 + 4" identifier + number_literal) )))) = identifier) ;) (expression_statement "cVar1 = pcVar5[1];" (assignment_expression "cVar1 = pcVar5[1]" identifier = (subscript_expression "pcVar5[1]" identifier [ number_literal ])) ;) (while_statement "while (cVar1 != '\0') {\n          if (cVar1 == '/') {\n            *pcVar6 = '\\';\n          }\n          pcVar6 = pcVar6 + 1;\n          cVar1 = *pcVar6;\n        }" while (parenthesized_expression "(cVar1 != '\0')" ( (binary_expression "cVar1 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n          if (cVar1 == '/') {\n            *pcVar6 = '\\';\n          }\n          pcVar6 = pcVar6 + 1;\n          cVar1 = *pcVar6;\n        }" { (if_statement "if (cVar1 == '/') {\n            *pcVar6 = '\\';\n          }" if (parenthesized_expression "(cVar1 == '/')" ( (binary_expression "cVar1 == '/'" identifier == (char_literal "'/'" ' character ')) )) (compound_statement "{\n            *pcVar6 = '\\';\n          }" { (expression_statement "*pcVar6 = '\\';" (assignment_expression "*pcVar6 = '\\'" (pointer_expression "*pcVar6" * identifier) = (char_literal "'\\'" ' escape_sequence ')) ;) })) (expression_statement "pcVar6 = pcVar6 + 1;" (assignment_expression "pcVar6 = pcVar6 + 1" identifier = (binary_expression "pcVar6 + 1" identifier + number_literal)) ;) (expression_statement "cVar1 = *pcVar6;" (assignment_expression "cVar1 = *pcVar6" identifier = (pointer_expression "*pcVar6" * identifier)) ;) })) }))) (goto_statement "goto LAB_00065401;" goto statement_identifier ;) })) })) (expression_statement "iVar3 = 0x1b;" (assignment_expression "iVar3 = 0x1b" identifier = number_literal) ;) (labeled_statement "LAB_00065401:\n  if (local_24 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    FUN_0007c1a0();\n  }" statement_identifier : (if_statement "if (local_24 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    FUN_0007c1a0();\n  }" if (parenthesized_expression "(local_24 != *(int *)(in_GS_OFFSET + 0x14))" ( (binary_expression "local_24 != *(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                    /* WARNING: Subroutine does not return */\n    FUN_0007c1a0();\n  }" { comment (expression_statement "FUN_0007c1a0();" (call_expression "FUN_0007c1a0()" identifier (argument_list "()" ( ))) ;) }))) (return_statement "return iVar3;" return identifier ;) })))
(translation_unit "/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n/* WARNING: Unknown calling convention */\n/* WARNING: Enum "anon_enum_32": Some values do not have unique names */\n\nCURLcode smb_setup_connection(connectdata *conn)\n\n{\n  char cVar1;\n  Curl_easy *data;\n  void *pvVar2;\n  CURLcode CVar3;\n  char *pcVar4;\n  char *pcVar5;\n  int in_GS_OFFSET;\n  char *path;\n  int local_20;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x65319;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  pvVar2 = (*Curl_ccalloc)(1,0x10);\n  data = conn->data;\n  (data->req).protop = pvVar2;\n  if (pvVar2 != (void *)0x0) {\n    CVar3 = Curl_urldecode(data,(data->state).up.path,0,&path,(size_t *)0x0,true);\n    if (CVar3 != CURLE_OK) goto LAB_00065401;\n    if ((*path == '/') || (pcVar4 = path, *path == '\\')) {\n      pcVar4 = path + 1;\n    }\n    pcVar4 = (*Curl_cstrdup)(pcVar4);\n    (conn->proto).ftpc.pp.linestart_resp = pcVar4;\n    (*Curl_cfree)(path);\n    pcVar4 = (conn->proto).ftpc.pp.linestart_resp;\n    if (pcVar4 != (char *)0x0) {\n      pcVar5 = strchr(pcVar4,0x2f);\n      if ((pcVar5 == (char *)0x0) && (pcVar5 = strchr(pcVar4,0x5c), pcVar5 == (char *)0x0)) {\n        CVar3 = CURLE_URL_MALFORMAT;\n        (*Curl_cfree)(pcVar4);\n        (conn->proto).ftpc.pp.linestart_resp = (char *)0x0;\n      }\n      else {\n        pcVar4 = pcVar5 + 1;\n        *pcVar5 = '\0';\n        *(char **)((int)pvVar2 + 4) = pcVar4;\n        cVar1 = pcVar5[1];\n        while (cVar1 != '\0') {\n          if (cVar1 == '/') {\n            *pcVar4 = '\\';\n          }\n          pcVar4 = pcVar4 + 1;\n          cVar1 = *pcVar4;\n        }\n      }\n      goto LAB_00065401;\n    }\n  }\n  CVar3 = CURLE_OUT_OF_MEMORY;\nLAB_00065401:\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail_local();\n  }\n  return CVar3;\n}\n\n" comment comment comment (function_definition "CURLcode smb_setup_connection(connectdata *conn)\n\n{\n  char cVar1;\n  Curl_easy *data;\n  void *pvVar2;\n  CURLcode CVar3;\n  char *pcVar4;\n  char *pcVar5;\n  int in_GS_OFFSET;\n  char *path;\n  int local_20;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x65319;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  pvVar2 = (*Curl_ccalloc)(1,0x10);\n  data = conn->data;\n  (data->req).protop = pvVar2;\n  if (pvVar2 != (void *)0x0) {\n    CVar3 = Curl_urldecode(data,(data->state).up.path,0,&path,(size_t *)0x0,true);\n    if (CVar3 != CURLE_OK) goto LAB_00065401;\n    if ((*path == '/') || (pcVar4 = path, *path == '\\')) {\n      pcVar4 = path + 1;\n    }\n    pcVar4 = (*Curl_cstrdup)(pcVar4);\n    (conn->proto).ftpc.pp.linestart_resp = pcVar4;\n    (*Curl_cfree)(path);\n    pcVar4 = (conn->proto).ftpc.pp.linestart_resp;\n    if (pcVar4 != (char *)0x0) {\n      pcVar5 = strchr(pcVar4,0x2f);\n      if ((pcVar5 == (char *)0x0) && (pcVar5 = strchr(pcVar4,0x5c), pcVar5 == (char *)0x0)) {\n        CVar3 = CURLE_URL_MALFORMAT;\n        (*Curl_cfree)(pcVar4);\n        (conn->proto).ftpc.pp.linestart_resp = (char *)0x0;\n      }\n      else {\n        pcVar4 = pcVar5 + 1;\n        *pcVar5 = '\0';\n        *(char **)((int)pvVar2 + 4) = pcVar4;\n        cVar1 = pcVar5[1];\n        while (cVar1 != '\0') {\n          if (cVar1 == '/') {\n            *pcVar4 = '\\';\n          }\n          pcVar4 = pcVar4 + 1;\n          cVar1 = *pcVar4;\n        }\n      }\n      goto LAB_00065401;\n    }\n  }\n  CVar3 = CURLE_OUT_OF_MEMORY;\nLAB_00065401:\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail_local();\n  }\n  return CVar3;\n}" type_identifier (function_declarator "smb_setup_connection(connectdata *conn)" identifier (parameter_list "(connectdata *conn)" ( (parameter_declaration "connectdata *conn" type_identifier (pointer_declarator "*conn" * identifier)) ))) (compound_statement "{\n  char cVar1;\n  Curl_easy *data;\n  void *pvVar2;\n  CURLcode CVar3;\n  char *pcVar4;\n  char *pcVar5;\n  int in_GS_OFFSET;\n  char *path;\n  int local_20;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x65319;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  pvVar2 = (*Curl_ccalloc)(1,0x10);\n  data = conn->data;\n  (data->req).protop = pvVar2;\n  if (pvVar2 != (void *)0x0) {\n    CVar3 = Curl_urldecode(data,(data->state).up.path,0,&path,(size_t *)0x0,true);\n    if (CVar3 != CURLE_OK) goto LAB_00065401;\n    if ((*path == '/') || (pcVar4 = path, *path == '\\')) {\n      pcVar4 = path + 1;\n    }\n    pcVar4 = (*Curl_cstrdup)(pcVar4);\n    (conn->proto).ftpc.pp.linestart_resp = pcVar4;\n    (*Curl_cfree)(path);\n    pcVar4 = (conn->proto).ftpc.pp.linestart_resp;\n    if (pcVar4 != (char *)0x0) {\n      pcVar5 = strchr(pcVar4,0x2f);\n      if ((pcVar5 == (char *)0x0) && (pcVar5 = strchr(pcVar4,0x5c), pcVar5 == (char *)0x0)) {\n        CVar3 = CURLE_URL_MALFORMAT;\n        (*Curl_cfree)(pcVar4);\n        (conn->proto).ftpc.pp.linestart_resp = (char *)0x0;\n      }\n      else {\n        pcVar4 = pcVar5 + 1;\n        *pcVar5 = '\0';\n        *(char **)((int)pvVar2 + 4) = pcVar4;\n        cVar1 = pcVar5[1];\n        while (cVar1 != '\0') {\n          if (cVar1 == '/') {\n            *pcVar4 = '\\';\n          }\n          pcVar4 = pcVar4 + 1;\n          cVar1 = *pcVar4;\n        }\n      }\n      goto LAB_00065401;\n    }\n  }\n  CVar3 = CURLE_OUT_OF_MEMORY;\nLAB_00065401:\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail_local();\n  }\n  return CVar3;\n}" { (declaration "char cVar1;" primitive_type identifier ;) (declaration "Curl_easy *data;" type_identifier (pointer_declarator "*data" * identifier) ;) (declaration "void *pvVar2;" primitive_type (pointer_declarator "*pvVar2" * identifier) ;) (declaration "CURLcode CVar3;" type_identifier identifier ;) (declaration "char *pcVar4;" primitive_type (pointer_declarator "*pcVar4" * identifier) ;) (declaration "char *pcVar5;" primitive_type (pointer_declarator "*pcVar5" * identifier) ;) (declaration "int in_GS_OFFSET;" primitive_type identifier ;) (declaration "char *path;" primitive_type (pointer_declarator "*path" * identifier) ;) (declaration "int local_20;" primitive_type identifier ;) (declaration "undefined4 uStack_14;" type_identifier identifier ;) (expression_statement "uStack_14 = 0x65319;" (assignment_expression "uStack_14 = 0x65319" identifier = number_literal) ;) (expression_statement "local_20 = *(int *)(in_GS_OFFSET + 0x14);" (assignment_expression "local_20 = *(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 "pvVar2 = (*Curl_ccalloc)(1,0x10);" (assignment_expression "pvVar2 = (*Curl_ccalloc)(1,0x10)" identifier = (call_expression "(*Curl_ccalloc)(1,0x10)" (parenthesized_expression "(*Curl_ccalloc)" ( (pointer_expression "*Curl_ccalloc" * identifier) )) (argument_list "(1,0x10)" ( number_literal , number_literal )))) ;) (expression_statement "data = conn->data;" (assignment_expression "data = conn->data" identifier = (field_expression "conn->data" identifier -> field_identifier)) ;) (expression_statement "(data->req).protop = pvVar2;" (assignment_expression "(data->req).protop = pvVar2" (field_expression "(data->req).protop" (parenthesized_expression "(data->req)" ( (field_expression "data->req" identifier -> field_identifier) )) . field_identifier) = identifier) ;) (if_statement "if (pvVar2 != (void *)0x0) {\n    CVar3 = Curl_urldecode(data,(data->state).up.path,0,&path,(size_t *)0x0,true);\n    if (CVar3 != CURLE_OK) goto LAB_00065401;\n    if ((*path == '/') || (pcVar4 = path, *path == '\\')) {\n      pcVar4 = path + 1;\n    }\n    pcVar4 = (*Curl_cstrdup)(pcVar4);\n    (conn->proto).ftpc.pp.linestart_resp = pcVar4;\n    (*Curl_cfree)(path);\n    pcVar4 = (conn->proto).ftpc.pp.linestart_resp;\n    if (pcVar4 != (char *)0x0) {\n      pcVar5 = strchr(pcVar4,0x2f);\n      if ((pcVar5 == (char *)0x0) && (pcVar5 = strchr(pcVar4,0x5c), pcVar5 == (char *)0x0)) {\n        CVar3 = CURLE_URL_MALFORMAT;\n        (*Curl_cfree)(pcVar4);\n        (conn->proto).ftpc.pp.linestart_resp = (char *)0x0;\n      }\n      else {\n        pcVar4 = pcVar5 + 1;\n        *pcVar5 = '\0';\n        *(char **)((int)pvVar2 + 4) = pcVar4;\n        cVar1 = pcVar5[1];\n        while (cVar1 != '\0') {\n          if (cVar1 == '/') {\n            *pcVar4 = '\\';\n          }\n          pcVar4 = pcVar4 + 1;\n          cVar1 = *pcVar4;\n        }\n      }\n      goto LAB_00065401;\n    }\n  }" if (parenthesized_expression "(pvVar2 != (void *)0x0)" ( (binary_expression "pvVar2 != (void *)0x0" identifier != (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    CVar3 = Curl_urldecode(data,(data->state).up.path,0,&path,(size_t *)0x0,true);\n    if (CVar3 != CURLE_OK) goto LAB_00065401;\n    if ((*path == '/') || (pcVar4 = path, *path == '\\')) {\n      pcVar4 = path + 1;\n    }\n    pcVar4 = (*Curl_cstrdup)(pcVar4);\n    (conn->proto).ftpc.pp.linestart_resp = pcVar4;\n    (*Curl_cfree)(path);\n    pcVar4 = (conn->proto).ftpc.pp.linestart_resp;\n    if (pcVar4 != (char *)0x0) {\n      pcVar5 = strchr(pcVar4,0x2f);\n      if ((pcVar5 == (char *)0x0) && (pcVar5 = strchr(pcVar4,0x5c), pcVar5 == (char *)0x0)) {\n        CVar3 = CURLE_URL_MALFORMAT;\n        (*Curl_cfree)(pcVar4);\n        (conn->proto).ftpc.pp.linestart_resp = (char *)0x0;\n      }\n      else {\n        pcVar4 = pcVar5 + 1;\n        *pcVar5 = '\0';\n        *(char **)((int)pvVar2 + 4) = pcVar4;\n        cVar1 = pcVar5[1];\n        while (cVar1 != '\0') {\n          if (cVar1 == '/') {\n            *pcVar4 = '\\';\n          }\n          pcVar4 = pcVar4 + 1;\n          cVar1 = *pcVar4;\n        }\n      }\n      goto LAB_00065401;\n    }\n  }" { (expression_statement "CVar3 = Curl_urldecode(data,(data->state).up.path,0,&path,(size_t *)0x0,true);" (assignment_expression "CVar3 = Curl_urldecode(data,(data->state).up.path,0,&path,(size_t *)0x0,true)" identifier = (call_expression "Curl_urldecode(data,(data->state).up.path,0,&path,(size_t *)0x0,true)" identifier (argument_list "(data,(data->state).up.path,0,&path,(size_t *)0x0,true)" ( identifier , (field_expression "(data->state).up.path" (field_expression "(data->state).up" (parenthesized_expression "(data->state)" ( (field_expression "data->state" identifier -> field_identifier) )) . field_identifier) . field_identifier) , number_literal , (pointer_expression "&path" & identifier) , (cast_expression "(size_t *)0x0" ( (type_descriptor "size_t *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal) , true )))) ;) (if_statement "if (CVar3 != CURLE_OK) goto LAB_00065401;" if (parenthesized_expression "(CVar3 != CURLE_OK)" ( (binary_expression "CVar3 != CURLE_OK" identifier != identifier) )) (goto_statement "goto LAB_00065401;" goto statement_identifier ;)) (if_statement "if ((*path == '/') || (pcVar4 = path, *path == '\\')) {\n      pcVar4 = path + 1;\n    }" if (parenthesized_expression "((*path == '/') || (pcVar4 = path, *path == '\\'))" ( (binary_expression "(*path == '/') || (pcVar4 = path, *path == '\\')" (parenthesized_expression "(*path == '/')" ( (binary_expression "*path == '/'" (pointer_expression "*path" * identifier) == (char_literal "'/'" ' character ')) )) || (parenthesized_expression "(pcVar4 = path, *path == '\\')" ( (comma_expression "pcVar4 = path, *path == '\\'" (assignment_expression "pcVar4 = path" identifier = identifier) , (binary_expression "*path == '\\'" (pointer_expression "*path" * identifier) == (char_literal "'\\'" ' escape_sequence '))) ))) )) (compound_statement "{\n      pcVar4 = path + 1;\n    }" { (expression_statement "pcVar4 = path + 1;" (assignment_expression "pcVar4 = path + 1" identifier = (binary_expression "path + 1" identifier + number_literal)) ;) })) (expression_statement "pcVar4 = (*Curl_cstrdup)(pcVar4);" (assignment_expression "pcVar4 = (*Curl_cstrdup)(pcVar4)" identifier = (call_expression "(*Curl_cstrdup)(pcVar4)" (parenthesized_expression "(*Curl_cstrdup)" ( (pointer_expression "*Curl_cstrdup" * identifier) )) (argument_list "(pcVar4)" ( identifier )))) ;) (expression_statement "(conn->proto).ftpc.pp.linestart_resp = pcVar4;" (assignment_expression "(conn->proto).ftpc.pp.linestart_resp = pcVar4" (field_expression "(conn->proto).ftpc.pp.linestart_resp" (field_expression "(conn->proto).ftpc.pp" (field_expression "(conn->proto).ftpc" (parenthesized_expression "(conn->proto)" ( (field_expression "conn->proto" identifier -> field_identifier) )) . field_identifier) . field_identifier) . field_identifier) = identifier) ;) (expression_statement "(*Curl_cfree)(path);" (call_expression "(*Curl_cfree)(path)" (parenthesized_expression "(*Curl_cfree)" ( (pointer_expression "*Curl_cfree" * identifier) )) (argument_list "(path)" ( identifier ))) ;) (expression_statement "pcVar4 = (conn->proto).ftpc.pp.linestart_resp;" (assignment_expression "pcVar4 = (conn->proto).ftpc.pp.linestart_resp" identifier = (field_expression "(conn->proto).ftpc.pp.linestart_resp" (field_expression "(conn->proto).ftpc.pp" (field_expression "(conn->proto).ftpc" (parenthesized_expression "(conn->proto)" ( (field_expression "conn->proto" identifier -> field_identifier) )) . field_identifier) . field_identifier) . field_identifier)) ;) (if_statement "if (pcVar4 != (char *)0x0) {\n      pcVar5 = strchr(pcVar4,0x2f);\n      if ((pcVar5 == (char *)0x0) && (pcVar5 = strchr(pcVar4,0x5c), pcVar5 == (char *)0x0)) {\n        CVar3 = CURLE_URL_MALFORMAT;\n        (*Curl_cfree)(pcVar4);\n        (conn->proto).ftpc.pp.linestart_resp = (char *)0x0;\n      }\n      else {\n        pcVar4 = pcVar5 + 1;\n        *pcVar5 = '\0';\n        *(char **)((int)pvVar2 + 4) = pcVar4;\n        cVar1 = pcVar5[1];\n        while (cVar1 != '\0') {\n          if (cVar1 == '/') {\n            *pcVar4 = '\\';\n          }\n          pcVar4 = pcVar4 + 1;\n          cVar1 = *pcVar4;\n        }\n      }\n      goto LAB_00065401;\n    }" if (parenthesized_expression "(pcVar4 != (char *)0x0)" ( (binary_expression "pcVar4 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      pcVar5 = strchr(pcVar4,0x2f);\n      if ((pcVar5 == (char *)0x0) && (pcVar5 = strchr(pcVar4,0x5c), pcVar5 == (char *)0x0)) {\n        CVar3 = CURLE_URL_MALFORMAT;\n        (*Curl_cfree)(pcVar4);\n        (conn->proto).ftpc.pp.linestart_resp = (char *)0x0;\n      }\n      else {\n        pcVar4 = pcVar5 + 1;\n        *pcVar5 = '\0';\n        *(char **)((int)pvVar2 + 4) = pcVar4;\n        cVar1 = pcVar5[1];\n        while (cVar1 != '\0') {\n          if (cVar1 == '/') {\n            *pcVar4 = '\\';\n          }\n          pcVar4 = pcVar4 + 1;\n          cVar1 = *pcVar4;\n        }\n      }\n      goto LAB_00065401;\n    }" { (expression_statement "pcVar5 = strchr(pcVar4,0x2f);" (assignment_expression "pcVar5 = strchr(pcVar4,0x2f)" identifier = (call_expression "strchr(pcVar4,0x2f)" identifier (argument_list "(pcVar4,0x2f)" ( identifier , number_literal )))) ;) (if_statement "if ((pcVar5 == (char *)0x0) && (pcVar5 = strchr(pcVar4,0x5c), pcVar5 == (char *)0x0)) {\n        CVar3 = CURLE_URL_MALFORMAT;\n        (*Curl_cfree)(pcVar4);\n        (conn->proto).ftpc.pp.linestart_resp = (char *)0x0;\n      }\n      else {\n        pcVar4 = pcVar5 + 1;\n        *pcVar5 = '\0';\n        *(char **)((int)pvVar2 + 4) = pcVar4;\n        cVar1 = pcVar5[1];\n        while (cVar1 != '\0') {\n          if (cVar1 == '/') {\n            *pcVar4 = '\\';\n          }\n          pcVar4 = pcVar4 + 1;\n          cVar1 = *pcVar4;\n        }\n      }" if (parenthesized_expression "((pcVar5 == (char *)0x0) && (pcVar5 = strchr(pcVar4,0x5c), pcVar5 == (char *)0x0))" ( (binary_expression "(pcVar5 == (char *)0x0) && (pcVar5 = strchr(pcVar4,0x5c), pcVar5 == (char *)0x0)" (parenthesized_expression "(pcVar5 == (char *)0x0)" ( (binary_expression "pcVar5 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "(pcVar5 = strchr(pcVar4,0x5c), pcVar5 == (char *)0x0)" ( (comma_expression "pcVar5 = strchr(pcVar4,0x5c), pcVar5 == (char *)0x0" (assignment_expression "pcVar5 = strchr(pcVar4,0x5c)" identifier = (call_expression "strchr(pcVar4,0x5c)" identifier (argument_list "(pcVar4,0x5c)" ( identifier , number_literal )))) , (binary_expression "pcVar5 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal))) ))) )) (compound_statement "{\n        CVar3 = CURLE_URL_MALFORMAT;\n        (*Curl_cfree)(pcVar4);\n        (conn->proto).ftpc.pp.linestart_resp = (char *)0x0;\n      }" { (expression_statement "CVar3 = CURLE_URL_MALFORMAT;" (assignment_expression "CVar3 = CURLE_URL_MALFORMAT" identifier = identifier) ;) (expression_statement "(*Curl_cfree)(pcVar4);" (call_expression "(*Curl_cfree)(pcVar4)" (parenthesized_expression "(*Curl_cfree)" ( (pointer_expression "*Curl_cfree" * identifier) )) (argument_list "(pcVar4)" ( identifier ))) ;) (expression_statement "(conn->proto).ftpc.pp.linestart_resp = (char *)0x0;" (assignment_expression "(conn->proto).ftpc.pp.linestart_resp = (char *)0x0" (field_expression "(conn->proto).ftpc.pp.linestart_resp" (field_expression "(conn->proto).ftpc.pp" (field_expression "(conn->proto).ftpc" (parenthesized_expression "(conn->proto)" ( (field_expression "conn->proto" identifier -> field_identifier) )) . field_identifier) . field_identifier) . field_identifier) = (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) }) (else_clause "else {\n        pcVar4 = pcVar5 + 1;\n        *pcVar5 = '\0';\n        *(char **)((int)pvVar2 + 4) = pcVar4;\n        cVar1 = pcVar5[1];\n        while (cVar1 != '\0') {\n          if (cVar1 == '/') {\n            *pcVar4 = '\\';\n          }\n          pcVar4 = pcVar4 + 1;\n          cVar1 = *pcVar4;\n        }\n      }" else (compound_statement "{\n        pcVar4 = pcVar5 + 1;\n        *pcVar5 = '\0';\n        *(char **)((int)pvVar2 + 4) = pcVar4;\n        cVar1 = pcVar5[1];\n        while (cVar1 != '\0') {\n          if (cVar1 == '/') {\n            *pcVar4 = '\\';\n          }\n          pcVar4 = pcVar4 + 1;\n          cVar1 = *pcVar4;\n        }\n      }" { (expression_statement "pcVar4 = pcVar5 + 1;" (assignment_expression "pcVar4 = pcVar5 + 1" identifier = (binary_expression "pcVar5 + 1" identifier + number_literal)) ;) (expression_statement "*pcVar5 = '\0';" (assignment_expression "*pcVar5 = '\0'" (pointer_expression "*pcVar5" * identifier) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "*(char **)((int)pvVar2 + 4) = pcVar4;" (assignment_expression "*(char **)((int)pvVar2 + 4) = pcVar4" (pointer_expression "*(char **)((int)pvVar2 + 4)" * (cast_expression "(char **)((int)pvVar2 + 4)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)pvVar2 + 4)" ( (binary_expression "(int)pvVar2 + 4" (cast_expression "(int)pvVar2" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "cVar1 = pcVar5[1];" (assignment_expression "cVar1 = pcVar5[1]" identifier = (subscript_expression "pcVar5[1]" identifier [ number_literal ])) ;) (while_statement "while (cVar1 != '\0') {\n          if (cVar1 == '/') {\n            *pcVar4 = '\\';\n          }\n          pcVar4 = pcVar4 + 1;\n          cVar1 = *pcVar4;\n        }" while (parenthesized_expression "(cVar1 != '\0')" ( (binary_expression "cVar1 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n          if (cVar1 == '/') {\n            *pcVar4 = '\\';\n          }\n          pcVar4 = pcVar4 + 1;\n          cVar1 = *pcVar4;\n        }" { (if_statement "if (cVar1 == '/') {\n            *pcVar4 = '\\';\n          }" if (parenthesized_expression "(cVar1 == '/')" ( (binary_expression "cVar1 == '/'" identifier == (char_literal "'/'" ' character ')) )) (compound_statement "{\n            *pcVar4 = '\\';\n          }" { (expression_statement "*pcVar4 = '\\';" (assignment_expression "*pcVar4 = '\\'" (pointer_expression "*pcVar4" * identifier) = (char_literal "'\\'" ' escape_sequence ')) ;) })) (expression_statement "pcVar4 = pcVar4 + 1;" (assignment_expression "pcVar4 = pcVar4 + 1" identifier = (binary_expression "pcVar4 + 1" identifier + number_literal)) ;) (expression_statement "cVar1 = *pcVar4;" (assignment_expression "cVar1 = *pcVar4" identifier = (pointer_expression "*pcVar4" * identifier)) ;) })) }))) (goto_statement "goto LAB_00065401;" goto statement_identifier ;) })) })) (expression_statement "CVar3 = CURLE_OUT_OF_MEMORY;" (assignment_expression "CVar3 = CURLE_OUT_OF_MEMORY" identifier = identifier) ;) (labeled_statement "LAB_00065401:\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail_local();\n  }" statement_identifier : (if_statement "if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail_local();\n  }" if (parenthesized_expression "(local_20 != *(int *)(in_GS_OFFSET + 0x14))" ( (binary_expression "local_20 != *(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                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail_local();\n  }" { comment (expression_statement "__stack_chk_fail_local();" (call_expression "__stack_chk_fail_local()" identifier (argument_list "()" ( ))) ;) }))) (return_statement "return CVar3;" return identifier ;) })))
(translation_unit "int FUN_00065310(void)\n\n{\n  char cVar1;\n  int iVar2;\n  int iVar3;\n  int iVar4;\n  char *pcVar5;\n  char *pcVar6;\n  int unaff_EBX;\n  int in_GS_OFFSET;\n  int *unaff_retaddr;\n  char *local_28;\n  int local_24;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x65319;\n  entry();\n  local_24 = *(int *)(in_GS_OFFSET + 0x14);\n  iVar2 = (**(code **)(unaff_EBX + 0x4bd47))(1,0x10);\n  iVar3 = *unaff_retaddr;\n  *(int *)(iVar3 + 0x148) = iVar2;\n  if (iVar2 != 0) {\n    iVar3 = FUN_000344f0(iVar3,*(undefined4 *)(iVar3 + 0xf0c),0,&local_28,0,1);\n    if (iVar3 != 0) goto LAB_00065401;\n    if ((*local_28 == '/') || (pcVar6 = local_28, *local_28 == '\\')) {\n      pcVar6 = local_28 + 1;\n    }\n    iVar4 = (**(code **)(unaff_EBX + 0x4bd4b))(pcVar6);\n    unaff_retaddr[300] = iVar4;\n    (**(code **)(unaff_EBX + 0x4bd53))(local_28);\n    pcVar6 = (char *)unaff_retaddr[300];\n    if (pcVar6 != (char *)0x0) {\n      pcVar5 = strchr(pcVar6,0x2f);\n      if ((pcVar5 == (char *)0x0) && (pcVar5 = strchr(pcVar6,0x5c), pcVar5 == (char *)0x0)) {\n        iVar3 = 3;\n        (**(code **)(unaff_EBX + 0x4bd53))(pcVar6);\n        unaff_retaddr[300] = 0;\n      }\n      else {\n        pcVar6 = pcVar5 + 1;\n        *pcVar5 = '\0';\n        *(char **)(iVar2 + 4) = pcVar6;\n        cVar1 = pcVar5[1];\n        while (cVar1 != '\0') {\n          if (cVar1 == '/') {\n            *pcVar6 = '\\';\n          }\n          pcVar6 = pcVar6 + 1;\n          cVar1 = *pcVar6;\n        }\n      }\n      goto LAB_00065401;\n    }\n  }\n  iVar3 = 0x1b;\nLAB_00065401:\n  if (local_24 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n    FUN_0007c1a0();\n  }\n  return iVar3;\n}\n\n" (function_definition "int FUN_00065310(void)\n\n{\n  char cVar1;\n  int iVar2;\n  int iVar3;\n  int iVar4;\n  char *pcVar5;\n  char *pcVar6;\n  int unaff_EBX;\n  int in_GS_OFFSET;\n  int *unaff_retaddr;\n  char *local_28;\n  int local_24;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x65319;\n  entry();\n  local_24 = *(int *)(in_GS_OFFSET + 0x14);\n  iVar2 = (**(code **)(unaff_EBX + 0x4bd47))(1,0x10);\n  iVar3 = *unaff_retaddr;\n  *(int *)(iVar3 + 0x148) = iVar2;\n  if (iVar2 != 0) {\n    iVar3 = FUN_000344f0(iVar3,*(undefined4 *)(iVar3 + 0xf0c),0,&local_28,0,1);\n    if (iVar3 != 0) goto LAB_00065401;\n    if ((*local_28 == '/') || (pcVar6 = local_28, *local_28 == '\\')) {\n      pcVar6 = local_28 + 1;\n    }\n    iVar4 = (**(code **)(unaff_EBX + 0x4bd4b))(pcVar6);\n    unaff_retaddr[300] = iVar4;\n    (**(code **)(unaff_EBX + 0x4bd53))(local_28);\n    pcVar6 = (char *)unaff_retaddr[300];\n    if (pcVar6 != (char *)0x0) {\n      pcVar5 = strchr(pcVar6,0x2f);\n      if ((pcVar5 == (char *)0x0) && (pcVar5 = strchr(pcVar6,0x5c), pcVar5 == (char *)0x0)) {\n        iVar3 = 3;\n        (**(code **)(unaff_EBX + 0x4bd53))(pcVar6);\n        unaff_retaddr[300] = 0;\n      }\n      else {\n        pcVar6 = pcVar5 + 1;\n        *pcVar5 = '\0';\n        *(char **)(iVar2 + 4) = pcVar6;\n        cVar1 = pcVar5[1];\n        while (cVar1 != '\0') {\n          if (cVar1 == '/') {\n            *pcVar6 = '\\';\n          }\n          pcVar6 = pcVar6 + 1;\n          cVar1 = *pcVar6;\n        }\n      }\n      goto LAB_00065401;\n    }\n  }\n  iVar3 = 0x1b;\nLAB_00065401:\n  if (local_24 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n    FUN_0007c1a0();\n  }\n  return iVar3;\n}" primitive_type (function_declarator "FUN_00065310(void)" identifier (parameter_list "(void)" ( (parameter_declaration "void" primitive_type) ))) (compound_statement "{\n  char cVar1;\n  int iVar2;\n  int iVar3;\n  int iVar4;\n  char *pcVar5;\n  char *pcVar6;\n  int unaff_EBX;\n  int in_GS_OFFSET;\n  int *unaff_retaddr;\n  char *local_28;\n  int local_24;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x65319;\n  entry();\n  local_24 = *(int *)(in_GS_OFFSET + 0x14);\n  iVar2 = (**(code **)(unaff_EBX + 0x4bd47))(1,0x10);\n  iVar3 = *unaff_retaddr;\n  *(int *)(iVar3 + 0x148) = iVar2;\n  if (iVar2 != 0) {\n    iVar3 = FUN_000344f0(iVar3,*(undefined4 *)(iVar3 + 0xf0c),0,&local_28,0,1);\n    if (iVar3 != 0) goto LAB_00065401;\n    if ((*local_28 == '/') || (pcVar6 = local_28, *local_28 == '\\')) {\n      pcVar6 = local_28 + 1;\n    }\n    iVar4 = (**(code **)(unaff_EBX + 0x4bd4b))(pcVar6);\n    unaff_retaddr[300] = iVar4;\n    (**(code **)(unaff_EBX + 0x4bd53))(local_28);\n    pcVar6 = (char *)unaff_retaddr[300];\n    if (pcVar6 != (char *)0x0) {\n      pcVar5 = strchr(pcVar6,0x2f);\n      if ((pcVar5 == (char *)0x0) && (pcVar5 = strchr(pcVar6,0x5c), pcVar5 == (char *)0x0)) {\n        iVar3 = 3;\n        (**(code **)(unaff_EBX + 0x4bd53))(pcVar6);\n        unaff_retaddr[300] = 0;\n      }\n      else {\n        pcVar6 = pcVar5 + 1;\n        *pcVar5 = '\0';\n        *(char **)(iVar2 + 4) = pcVar6;\n        cVar1 = pcVar5[1];\n        while (cVar1 != '\0') {\n          if (cVar1 == '/') {\n            *pcVar6 = '\\';\n          }\n          pcVar6 = pcVar6 + 1;\n          cVar1 = *pcVar6;\n        }\n      }\n      goto LAB_00065401;\n    }\n  }\n  iVar3 = 0x1b;\nLAB_00065401:\n  if (local_24 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n    FUN_0007c1a0();\n  }\n  return iVar3;\n}" { (declaration "char cVar1;" primitive_type identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "char *pcVar5;" primitive_type (pointer_declarator "*pcVar5" * identifier) ;) (declaration "char *pcVar6;" primitive_type (pointer_declarator "*pcVar6" * identifier) ;) (declaration "int unaff_EBX;" primitive_type identifier ;) (declaration "int in_GS_OFFSET;" primitive_type identifier ;) (declaration "int *unaff_retaddr;" primitive_type (pointer_declarator "*unaff_retaddr" * identifier) ;) (declaration "char *local_28;" primitive_type (pointer_declarator "*local_28" * identifier) ;) (declaration "int local_24;" primitive_type identifier ;) (declaration "undefined4 uStack_14;" type_identifier identifier ;) (expression_statement "uStack_14 = 0x65319;" (assignment_expression "uStack_14 = 0x65319" identifier = number_literal) ;) (expression_statement "entry();" (call_expression "entry()" identifier (argument_list "()" ( ))) ;) (expression_statement "local_24 = *(int *)(in_GS_OFFSET + 0x14);" (assignment_expression "local_24 = *(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 "iVar2 = (**(code **)(unaff_EBX + 0x4bd47))(1,0x10);" (assignment_expression "iVar2 = (**(code **)(unaff_EBX + 0x4bd47))(1,0x10)" identifier = (call_expression "(**(code **)(unaff_EBX + 0x4bd47))(1,0x10)" (parenthesized_expression "(**(code **)(unaff_EBX + 0x4bd47))" ( (pointer_expression "**(code **)(unaff_EBX + 0x4bd47)" * (pointer_expression "*(code **)(unaff_EBX + 0x4bd47)" * (cast_expression "(code **)(unaff_EBX + 0x4bd47)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(unaff_EBX + 0x4bd47)" ( (binary_expression "unaff_EBX + 0x4bd47" identifier + number_literal) ))))) )) (argument_list "(1,0x10)" ( number_literal , number_literal )))) ;) (expression_statement "iVar3 = *unaff_retaddr;" (assignment_expression "iVar3 = *unaff_retaddr" identifier = (pointer_expression "*unaff_retaddr" * identifier)) ;) (expression_statement "*(int *)(iVar3 + 0x148) = iVar2;" (assignment_expression "*(int *)(iVar3 + 0x148) = iVar2" (pointer_expression "*(int *)(iVar3 + 0x148)" * (cast_expression "(int *)(iVar3 + 0x148)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0x148)" ( (binary_expression "iVar3 + 0x148" identifier + number_literal) )))) = identifier) ;) (if_statement "if (iVar2 != 0) {\n    iVar3 = FUN_000344f0(iVar3,*(undefined4 *)(iVar3 + 0xf0c),0,&local_28,0,1);\n    if (iVar3 != 0) goto LAB_00065401;\n    if ((*local_28 == '/') || (pcVar6 = local_28, *local_28 == '\\')) {\n      pcVar6 = local_28 + 1;\n    }\n    iVar4 = (**(code **)(unaff_EBX + 0x4bd4b))(pcVar6);\n    unaff_retaddr[300] = iVar4;\n    (**(code **)(unaff_EBX + 0x4bd53))(local_28);\n    pcVar6 = (char *)unaff_retaddr[300];\n    if (pcVar6 != (char *)0x0) {\n      pcVar5 = strchr(pcVar6,0x2f);\n      if ((pcVar5 == (char *)0x0) && (pcVar5 = strchr(pcVar6,0x5c), pcVar5 == (char *)0x0)) {\n        iVar3 = 3;\n        (**(code **)(unaff_EBX + 0x4bd53))(pcVar6);\n        unaff_retaddr[300] = 0;\n      }\n      else {\n        pcVar6 = pcVar5 + 1;\n        *pcVar5 = '\0';\n        *(char **)(iVar2 + 4) = pcVar6;\n        cVar1 = pcVar5[1];\n        while (cVar1 != '\0') {\n          if (cVar1 == '/') {\n            *pcVar6 = '\\';\n          }\n          pcVar6 = pcVar6 + 1;\n          cVar1 = *pcVar6;\n        }\n      }\n      goto LAB_00065401;\n    }\n  }" if (parenthesized_expression "(iVar2 != 0)" ( (binary_expression "iVar2 != 0" identifier != number_literal) )) (compound_statement "{\n    iVar3 = FUN_000344f0(iVar3,*(undefined4 *)(iVar3 + 0xf0c),0,&local_28,0,1);\n    if (iVar3 != 0) goto LAB_00065401;\n    if ((*local_28 == '/') || (pcVar6 = local_28, *local_28 == '\\')) {\n      pcVar6 = local_28 + 1;\n    }\n    iVar4 = (**(code **)(unaff_EBX + 0x4bd4b))(pcVar6);\n    unaff_retaddr[300] = iVar4;\n    (**(code **)(unaff_EBX + 0x4bd53))(local_28);\n    pcVar6 = (char *)unaff_retaddr[300];\n    if (pcVar6 != (char *)0x0) {\n      pcVar5 = strchr(pcVar6,0x2f);\n      if ((pcVar5 == (char *)0x0) && (pcVar5 = strchr(pcVar6,0x5c), pcVar5 == (char *)0x0)) {\n        iVar3 = 3;\n        (**(code **)(unaff_EBX + 0x4bd53))(pcVar6);\n        unaff_retaddr[300] = 0;\n      }\n      else {\n        pcVar6 = pcVar5 + 1;\n        *pcVar5 = '\0';\n        *(char **)(iVar2 + 4) = pcVar6;\n        cVar1 = pcVar5[1];\n        while (cVar1 != '\0') {\n          if (cVar1 == '/') {\n            *pcVar6 = '\\';\n          }\n          pcVar6 = pcVar6 + 1;\n          cVar1 = *pcVar6;\n        }\n      }\n      goto LAB_00065401;\n    }\n  }" { (expression_statement "iVar3 = FUN_000344f0(iVar3,*(undefined4 *)(iVar3 + 0xf0c),0,&local_28,0,1);" (assignment_expression "iVar3 = FUN_000344f0(iVar3,*(undefined4 *)(iVar3 + 0xf0c),0,&local_28,0,1)" identifier = (call_expression "FUN_000344f0(iVar3,*(undefined4 *)(iVar3 + 0xf0c),0,&local_28,0,1)" identifier (argument_list "(iVar3,*(undefined4 *)(iVar3 + 0xf0c),0,&local_28,0,1)" ( identifier , (pointer_expression "*(undefined4 *)(iVar3 + 0xf0c)" * (cast_expression "(undefined4 *)(iVar3 + 0xf0c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0xf0c)" ( (binary_expression "iVar3 + 0xf0c" identifier + number_literal) )))) , number_literal , (pointer_expression "&local_28" & identifier) , number_literal , number_literal )))) ;) (if_statement "if (iVar3 != 0) goto LAB_00065401;" if (parenthesized_expression "(iVar3 != 0)" ( (binary_expression "iVar3 != 0" identifier != number_literal) )) (goto_statement "goto LAB_00065401;" goto statement_identifier ;)) (if_statement "if ((*local_28 == '/') || (pcVar6 = local_28, *local_28 == '\\')) {\n      pcVar6 = local_28 + 1;\n    }" if (parenthesized_expression "((*local_28 == '/') || (pcVar6 = local_28, *local_28 == '\\'))" ( (binary_expression "(*local_28 == '/') || (pcVar6 = local_28, *local_28 == '\\')" (parenthesized_expression "(*local_28 == '/')" ( (binary_expression "*local_28 == '/'" (pointer_expression "*local_28" * identifier) == (char_literal "'/'" ' character ')) )) || (parenthesized_expression "(pcVar6 = local_28, *local_28 == '\\')" ( (comma_expression "pcVar6 = local_28, *local_28 == '\\'" (assignment_expression "pcVar6 = local_28" identifier = identifier) , (binary_expression "*local_28 == '\\'" (pointer_expression "*local_28" * identifier) == (char_literal "'\\'" ' escape_sequence '))) ))) )) (compound_statement "{\n      pcVar6 = local_28 + 1;\n    }" { (expression_statement "pcVar6 = local_28 + 1;" (assignment_expression "pcVar6 = local_28 + 1" identifier = (binary_expression "local_28 + 1" identifier + number_literal)) ;) })) (expression_statement "iVar4 = (**(code **)(unaff_EBX + 0x4bd4b))(pcVar6);" (assignment_expression "iVar4 = (**(code **)(unaff_EBX + 0x4bd4b))(pcVar6)" identifier = (call_expression "(**(code **)(unaff_EBX + 0x4bd4b))(pcVar6)" (parenthesized_expression "(**(code **)(unaff_EBX + 0x4bd4b))" ( (pointer_expression "**(code **)(unaff_EBX + 0x4bd4b)" * (pointer_expression "*(code **)(unaff_EBX + 0x4bd4b)" * (cast_expression "(code **)(unaff_EBX + 0x4bd4b)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(unaff_EBX + 0x4bd4b)" ( (binary_expression "unaff_EBX + 0x4bd4b" identifier + number_literal) ))))) )) (argument_list "(pcVar6)" ( identifier )))) ;) (expression_statement "unaff_retaddr[300] = iVar4;" (assignment_expression "unaff_retaddr[300] = iVar4" (subscript_expression "unaff_retaddr[300]" identifier [ number_literal ]) = identifier) ;) (expression_statement "(**(code **)(unaff_EBX + 0x4bd53))(local_28);" (call_expression "(**(code **)(unaff_EBX + 0x4bd53))(local_28)" (parenthesized_expression "(**(code **)(unaff_EBX + 0x4bd53))" ( (pointer_expression "**(code **)(unaff_EBX + 0x4bd53)" * (pointer_expression "*(code **)(unaff_EBX + 0x4bd53)" * (cast_expression "(code **)(unaff_EBX + 0x4bd53)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(unaff_EBX + 0x4bd53)" ( (binary_expression "unaff_EBX + 0x4bd53" identifier + number_literal) ))))) )) (argument_list "(local_28)" ( identifier ))) ;) (expression_statement "pcVar6 = (char *)unaff_retaddr[300];" (assignment_expression "pcVar6 = (char *)unaff_retaddr[300]" identifier = (cast_expression "(char *)unaff_retaddr[300]" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "unaff_retaddr[300]" identifier [ number_literal ]))) ;) (if_statement "if (pcVar6 != (char *)0x0) {\n      pcVar5 = strchr(pcVar6,0x2f);\n      if ((pcVar5 == (char *)0x0) && (pcVar5 = strchr(pcVar6,0x5c), pcVar5 == (char *)0x0)) {\n        iVar3 = 3;\n        (**(code **)(unaff_EBX + 0x4bd53))(pcVar6);\n        unaff_retaddr[300] = 0;\n      }\n      else {\n        pcVar6 = pcVar5 + 1;\n        *pcVar5 = '\0';\n        *(char **)(iVar2 + 4) = pcVar6;\n        cVar1 = pcVar5[1];\n        while (cVar1 != '\0') {\n          if (cVar1 == '/') {\n            *pcVar6 = '\\';\n          }\n          pcVar6 = pcVar6 + 1;\n          cVar1 = *pcVar6;\n        }\n      }\n      goto LAB_00065401;\n    }" if (parenthesized_expression "(pcVar6 != (char *)0x0)" ( (binary_expression "pcVar6 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      pcVar5 = strchr(pcVar6,0x2f);\n      if ((pcVar5 == (char *)0x0) && (pcVar5 = strchr(pcVar6,0x5c), pcVar5 == (char *)0x0)) {\n        iVar3 = 3;\n        (**(code **)(unaff_EBX + 0x4bd53))(pcVar6);\n        unaff_retaddr[300] = 0;\n      }\n      else {\n        pcVar6 = pcVar5 + 1;\n        *pcVar5 = '\0';\n        *(char **)(iVar2 + 4) = pcVar6;\n        cVar1 = pcVar5[1];\n        while (cVar1 != '\0') {\n          if (cVar1 == '/') {\n            *pcVar6 = '\\';\n          }\n          pcVar6 = pcVar6 + 1;\n          cVar1 = *pcVar6;\n        }\n      }\n      goto LAB_00065401;\n    }" { (expression_statement "pcVar5 = strchr(pcVar6,0x2f);" (assignment_expression "pcVar5 = strchr(pcVar6,0x2f)" identifier = (call_expression "strchr(pcVar6,0x2f)" identifier (argument_list "(pcVar6,0x2f)" ( identifier , number_literal )))) ;) (if_statement "if ((pcVar5 == (char *)0x0) && (pcVar5 = strchr(pcVar6,0x5c), pcVar5 == (char *)0x0)) {\n        iVar3 = 3;\n        (**(code **)(unaff_EBX + 0x4bd53))(pcVar6);\n        unaff_retaddr[300] = 0;\n      }\n      else {\n        pcVar6 = pcVar5 + 1;\n        *pcVar5 = '\0';\n        *(char **)(iVar2 + 4) = pcVar6;\n        cVar1 = pcVar5[1];\n        while (cVar1 != '\0') {\n          if (cVar1 == '/') {\n            *pcVar6 = '\\';\n          }\n          pcVar6 = pcVar6 + 1;\n          cVar1 = *pcVar6;\n        }\n      }" if (parenthesized_expression "((pcVar5 == (char *)0x0) && (pcVar5 = strchr(pcVar6,0x5c), pcVar5 == (char *)0x0))" ( (binary_expression "(pcVar5 == (char *)0x0) && (pcVar5 = strchr(pcVar6,0x5c), pcVar5 == (char *)0x0)" (parenthesized_expression "(pcVar5 == (char *)0x0)" ( (binary_expression "pcVar5 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "(pcVar5 = strchr(pcVar6,0x5c), pcVar5 == (char *)0x0)" ( (comma_expression "pcVar5 = strchr(pcVar6,0x5c), pcVar5 == (char *)0x0" (assignment_expression "pcVar5 = strchr(pcVar6,0x5c)" identifier = (call_expression "strchr(pcVar6,0x5c)" identifier (argument_list "(pcVar6,0x5c)" ( identifier , number_literal )))) , (binary_expression "pcVar5 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal))) ))) )) (compound_statement "{\n        iVar3 = 3;\n        (**(code **)(unaff_EBX + 0x4bd53))(pcVar6);\n        unaff_retaddr[300] = 0;\n      }" { (expression_statement "iVar3 = 3;" (assignment_expression "iVar3 = 3" identifier = number_literal) ;) (expression_statement "(**(code **)(unaff_EBX + 0x4bd53))(pcVar6);" (call_expression "(**(code **)(unaff_EBX + 0x4bd53))(pcVar6)" (parenthesized_expression "(**(code **)(unaff_EBX + 0x4bd53))" ( (pointer_expression "**(code **)(unaff_EBX + 0x4bd53)" * (pointer_expression "*(code **)(unaff_EBX + 0x4bd53)" * (cast_expression "(code **)(unaff_EBX + 0x4bd53)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(unaff_EBX + 0x4bd53)" ( (binary_expression "unaff_EBX + 0x4bd53" identifier + number_literal) ))))) )) (argument_list "(pcVar6)" ( identifier ))) ;) (expression_statement "unaff_retaddr[300] = 0;" (assignment_expression "unaff_retaddr[300] = 0" (subscript_expression "unaff_retaddr[300]" identifier [ number_literal ]) = number_literal) ;) }) (else_clause "else {\n        pcVar6 = pcVar5 + 1;\n        *pcVar5 = '\0';\n        *(char **)(iVar2 + 4) = pcVar6;\n        cVar1 = pcVar5[1];\n        while (cVar1 != '\0') {\n          if (cVar1 == '/') {\n            *pcVar6 = '\\';\n          }\n          pcVar6 = pcVar6 + 1;\n          cVar1 = *pcVar6;\n        }\n      }" else (compound_statement "{\n        pcVar6 = pcVar5 + 1;\n        *pcVar5 = '\0';\n        *(char **)(iVar2 + 4) = pcVar6;\n        cVar1 = pcVar5[1];\n        while (cVar1 != '\0') {\n          if (cVar1 == '/') {\n            *pcVar6 = '\\';\n          }\n          pcVar6 = pcVar6 + 1;\n          cVar1 = *pcVar6;\n        }\n      }" { (expression_statement "pcVar6 = pcVar5 + 1;" (assignment_expression "pcVar6 = pcVar5 + 1" identifier = (binary_expression "pcVar5 + 1" identifier + number_literal)) ;) (expression_statement "*pcVar5 = '\0';" (assignment_expression "*pcVar5 = '\0'" (pointer_expression "*pcVar5" * identifier) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "*(char **)(iVar2 + 4) = pcVar6;" (assignment_expression "*(char **)(iVar2 + 4) = pcVar6" (pointer_expression "*(char **)(iVar2 + 4)" * (cast_expression "(char **)(iVar2 + 4)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar2 + 4)" ( (binary_expression "iVar2 + 4" identifier + number_literal) )))) = identifier) ;) (expression_statement "cVar1 = pcVar5[1];" (assignment_expression "cVar1 = pcVar5[1]" identifier = (subscript_expression "pcVar5[1]" identifier [ number_literal ])) ;) (while_statement "while (cVar1 != '\0') {\n          if (cVar1 == '/') {\n            *pcVar6 = '\\';\n          }\n          pcVar6 = pcVar6 + 1;\n          cVar1 = *pcVar6;\n        }" while (parenthesized_expression "(cVar1 != '\0')" ( (binary_expression "cVar1 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n          if (cVar1 == '/') {\n            *pcVar6 = '\\';\n          }\n          pcVar6 = pcVar6 + 1;\n          cVar1 = *pcVar6;\n        }" { (if_statement "if (cVar1 == '/') {\n            *pcVar6 = '\\';\n          }" if (parenthesized_expression "(cVar1 == '/')" ( (binary_expression "cVar1 == '/'" identifier == (char_literal "'/'" ' character ')) )) (compound_statement "{\n            *pcVar6 = '\\';\n          }" { (expression_statement "*pcVar6 = '\\';" (assignment_expression "*pcVar6 = '\\'" (pointer_expression "*pcVar6" * identifier) = (char_literal "'\\'" ' escape_sequence ')) ;) })) (expression_statement "pcVar6 = pcVar6 + 1;" (assignment_expression "pcVar6 = pcVar6 + 1" identifier = (binary_expression "pcVar6 + 1" identifier + number_literal)) ;) (expression_statement "cVar1 = *pcVar6;" (assignment_expression "cVar1 = *pcVar6" identifier = (pointer_expression "*pcVar6" * identifier)) ;) })) }))) (goto_statement "goto LAB_00065401;" goto statement_identifier ;) })) })) (expression_statement "iVar3 = 0x1b;" (assignment_expression "iVar3 = 0x1b" identifier = number_literal) ;) (labeled_statement "LAB_00065401:\n  if (local_24 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n    FUN_0007c1a0();\n  }" statement_identifier : (if_statement "if (local_24 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n    FUN_0007c1a0();\n  }" if (parenthesized_expression "(local_24 != *(int *)(in_GS_OFFSET + 0x14))" ( (binary_expression "local_24 != *(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                    \n    FUN_0007c1a0();\n  }" { (expression_statement "FUN_0007c1a0();" (call_expression "FUN_0007c1a0()" identifier (argument_list "()" ( ))) ;) }))) (return_statement "return iVar3;" return identifier ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * 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 = (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( LIT , LIT )))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , LIT , (pointer_expression & IDENT) , LIT , LIT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (goto_statement goto statement_identifier ;)) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) == (char_literal ' character ')) )) || (parenthesized_expression ( (comma_expression (assignment_expression IDENT = IDENT) , (binary_expression (pointer_expression * IDENT) == (char_literal ' escape_sequence '))) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) })) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( IDENT ))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , LIT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , LIT )))) , (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT))) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( IDENT ))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (char_literal ' escape_sequence ')) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (while_statement while (parenthesized_expression ( (binary_expression IDENT != (char_literal ' escape_sequence ')) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == (char_literal ' character ')) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = (char_literal ' escape_sequence ')) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) })) }))) (goto_statement goto statement_identifier ;) })) })) (expression_statement (assignment_expression IDENT = LIT) ;) (labeled_statement statement_identifier : (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 { (expression_statement (call_expression IDENT (argument_list ( ))) ;) }))) (return_statement return IDENT ;) })))
(function_definition "int FUN_00065310(void)\n\n{\n  char cVar1;\n  int iVar2;\n  int iVar3;\n  int iVar4;\n  char *pcVar5;\n  char *pcVar6;\n  int unaff_EBX;\n  int in_GS_OFFSET;\n  int *unaff_retaddr;\n  char *local_28;\n  int local_24;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x65319;\n  entry();\n  local_24 = *(int *)(in_GS_OFFSET + 0x14);\n  iVar2 = (**(code **)(unaff_EBX + 0x4bd47))(1,0x10);\n  iVar3 = *unaff_retaddr;\n  *(int *)(iVar3 + 0x148) = iVar2;\n  if (iVar2 != 0) {\n    iVar3 = FUN_000344f0(iVar3,*(undefined4 *)(iVar3 + 0xf0c),0,&local_28,0,1);\n    if (iVar3 != 0) goto LAB_00065401;\n    if ((*local_28 == '/') || (pcVar6 = local_28, *local_28 == '\\')) {\n      pcVar6 = local_28 + 1;\n    }\n    iVar4 = (**(code **)(unaff_EBX + 0x4bd4b))(pcVar6);\n    unaff_retaddr[300] = iVar4;\n    (**(code **)(unaff_EBX + 0x4bd53))(local_28);\n    pcVar6 = (char *)unaff_retaddr[300];\n    if (pcVar6 != (char *)0x0) {\n      pcVar5 = strchr(pcVar6,0x2f);\n      if ((pcVar5 == (char *)0x0) && (pcVar5 = strchr(pcVar6,0x5c), pcVar5 == (char *)0x0)) {\n        iVar3 = 3;\n        (**(code **)(unaff_EBX + 0x4bd53))(pcVar6);\n        unaff_retaddr[300] = 0;\n      }\n      else {\n        pcVar6 = pcVar5 + 1;\n        *pcVar5 = '\0';\n        *(char **)(iVar2 + 4) = pcVar6;\n        cVar1 = pcVar5[1];\n        while (cVar1 != '\0') {\n          if (cVar1 == '/') {\n            *pcVar6 = '\\';\n          }\n          pcVar6 = pcVar6 + 1;\n          cVar1 = *pcVar6;\n        }\n      }\n      goto LAB_00065401;\n    }\n  }\n  iVar3 = 0x1b;\nLAB_00065401:\n  if (local_24 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n    FUN_0007c1a0();\n  }\n  return iVar3;\n}" (primitive_type "int") (function_declarator "FUN_00065310(void)" (identifier "FUN_00065310") (parameter_list "(void)" (( "(") (parameter_declaration "void" (primitive_type "void")) () ")"))) (compound_statement "{\n  char cVar1;\n  int iVar2;\n  int iVar3;\n  int iVar4;\n  char *pcVar5;\n  char *pcVar6;\n  int unaff_EBX;\n  int in_GS_OFFSET;\n  int *unaff_retaddr;\n  char *local_28;\n  int local_24;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x65319;\n  entry();\n  local_24 = *(int *)(in_GS_OFFSET + 0x14);\n  iVar2 = (**(code **)(unaff_EBX + 0x4bd47))(1,0x10);\n  iVar3 = *unaff_retaddr;\n  *(int *)(iVar3 + 0x148) = iVar2;\n  if (iVar2 != 0) {\n    iVar3 = FUN_000344f0(iVar3,*(undefined4 *)(iVar3 + 0xf0c),0,&local_28,0,1);\n    if (iVar3 != 0) goto LAB_00065401;\n    if ((*local_28 == '/') || (pcVar6 = local_28, *local_28 == '\\')) {\n      pcVar6 = local_28 + 1;\n    }\n    iVar4 = (**(code **)(unaff_EBX + 0x4bd4b))(pcVar6);\n    unaff_retaddr[300] = iVar4;\n    (**(code **)(unaff_EBX + 0x4bd53))(local_28);\n    pcVar6 = (char *)unaff_retaddr[300];\n    if (pcVar6 != (char *)0x0) {\n      pcVar5 = strchr(pcVar6,0x2f);\n      if ((pcVar5 == (char *)0x0) && (pcVar5 = strchr(pcVar6,0x5c), pcVar5 == (char *)0x0)) {\n        iVar3 = 3;\n        (**(code **)(unaff_EBX + 0x4bd53))(pcVar6);\n        unaff_retaddr[300] = 0;\n      }\n      else {\n        pcVar6 = pcVar5 + 1;\n        *pcVar5 = '\0';\n        *(char **)(iVar2 + 4) = pcVar6;\n        cVar1 = pcVar5[1];\n        while (cVar1 != '\0') {\n          if (cVar1 == '/') {\n            *pcVar6 = '\\';\n          }\n          pcVar6 = pcVar6 + 1;\n          cVar1 = *pcVar6;\n        }\n      }\n      goto LAB_00065401;\n    }\n  }\n  iVar3 = 0x1b;\nLAB_00065401:\n  if (local_24 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n    FUN_0007c1a0();\n  }\n  return iVar3;\n}" ({ "{") (declaration "char cVar1;" (primitive_type "char") (identifier "cVar1") (; ";")) (declaration "int iVar2;" (primitive_type "int") (identifier "iVar2") (; ";")) (declaration "int iVar3;" (primitive_type "int") (identifier "iVar3") (; ";")) (declaration "int iVar4;" (primitive_type "int") (identifier "iVar4") (; ";")) (declaration "char *pcVar5;" (primitive_type "char") (pointer_declarator "*pcVar5" (* "*") (identifier "pcVar5")) (; ";")) (declaration "char *pcVar6;" (primitive_type "char") (pointer_declarator "*pcVar6" (* "*") (identifier "pcVar6")) (; ";")) (declaration "int unaff_EBX;" (primitive_type "int") (identifier "unaff_EBX") (; ";")) (declaration "int in_GS_OFFSET;" (primitive_type "int") (identifier "in_GS_OFFSET") (; ";")) (declaration "int *unaff_retaddr;" (primitive_type "int") (pointer_declarator "*unaff_retaddr" (* "*") (identifier "unaff_retaddr")) (; ";")) (declaration "char *local_28;" (primitive_type "char") (pointer_declarator "*local_28" (* "*") (identifier "local_28")) (; ";")) (declaration "int local_24;" (primitive_type "int") (identifier "local_24") (; ";")) (declaration "undefined4 uStack_14;" (type_identifier "undefined4") (identifier "uStack_14") (; ";")) (expression_statement "uStack_14 = 0x65319;" (assignment_expression "uStack_14 = 0x65319" (identifier "uStack_14") (= "=") (number_literal "0x65319")) (; ";")) (expression_statement "entry();" (call_expression "entry()" (identifier "entry") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "local_24 = *(int *)(in_GS_OFFSET + 0x14);" (assignment_expression "local_24 = *(int *)(in_GS_OFFSET + 0x14)" (identifier "local_24") (= "=") (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 "iVar2 = (**(code **)(unaff_EBX + 0x4bd47))(1,0x10);" (assignment_expression "iVar2 = (**(code **)(unaff_EBX + 0x4bd47))(1,0x10)" (identifier "iVar2") (= "=") (call_expression "(**(code **)(unaff_EBX + 0x4bd47))(1,0x10)" (parenthesized_expression "(**(code **)(unaff_EBX + 0x4bd47))" (( "(") (pointer_expression "**(code **)(unaff_EBX + 0x4bd47)" (* "*") (pointer_expression "*(code **)(unaff_EBX + 0x4bd47)" (* "*") (cast_expression "(code **)(unaff_EBX + 0x4bd47)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(unaff_EBX + 0x4bd47)" (( "(") (binary_expression "unaff_EBX + 0x4bd47" (identifier "unaff_EBX") (+ "+") (number_literal "0x4bd47")) () ")"))))) () ")")) (argument_list "(1,0x10)" (( "(") (number_literal "1") (, ",") (number_literal "0x10") () ")")))) (; ";")) (expression_statement "iVar3 = *unaff_retaddr;" (assignment_expression "iVar3 = *unaff_retaddr" (identifier "iVar3") (= "=") (pointer_expression "*unaff_retaddr" (* "*") (identifier "unaff_retaddr"))) (; ";")) (expression_statement "*(int *)(iVar3 + 0x148) = iVar2;" (assignment_expression "*(int *)(iVar3 + 0x148) = iVar2" (pointer_expression "*(int *)(iVar3 + 0x148)" (* "*") (cast_expression "(int *)(iVar3 + 0x148)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar3 + 0x148)" (( "(") (binary_expression "iVar3 + 0x148" (identifier "iVar3") (+ "+") (number_literal "0x148")) () ")")))) (= "=") (identifier "iVar2")) (; ";")) (if_statement "if (iVar2 != 0) {\n    iVar3 = FUN_000344f0(iVar3,*(undefined4 *)(iVar3 + 0xf0c),0,&local_28,0,1);\n    if (iVar3 != 0) goto LAB_00065401;\n    if ((*local_28 == '/') || (pcVar6 = local_28, *local_28 == '\\')) {\n      pcVar6 = local_28 + 1;\n    }\n    iVar4 = (**(code **)(unaff_EBX + 0x4bd4b))(pcVar6);\n    unaff_retaddr[300] = iVar4;\n    (**(code **)(unaff_EBX + 0x4bd53))(local_28);\n    pcVar6 = (char *)unaff_retaddr[300];\n    if (pcVar6 != (char *)0x0) {\n      pcVar5 = strchr(pcVar6,0x2f);\n      if ((pcVar5 == (char *)0x0) && (pcVar5 = strchr(pcVar6,0x5c), pcVar5 == (char *)0x0)) {\n        iVar3 = 3;\n        (**(code **)(unaff_EBX + 0x4bd53))(pcVar6);\n        unaff_retaddr[300] = 0;\n      }\n      else {\n        pcVar6 = pcVar5 + 1;\n        *pcVar5 = '\0';\n        *(char **)(iVar2 + 4) = pcVar6;\n        cVar1 = pcVar5[1];\n        while (cVar1 != '\0') {\n          if (cVar1 == '/') {\n            *pcVar6 = '\\';\n          }\n          pcVar6 = pcVar6 + 1;\n          cVar1 = *pcVar6;\n        }\n      }\n      goto LAB_00065401;\n    }\n  }" (if "if") (parenthesized_expression "(iVar2 != 0)" (( "(") (binary_expression "iVar2 != 0" (identifier "iVar2") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    iVar3 = FUN_000344f0(iVar3,*(undefined4 *)(iVar3 + 0xf0c),0,&local_28,0,1);\n    if (iVar3 != 0) goto LAB_00065401;\n    if ((*local_28 == '/') || (pcVar6 = local_28, *local_28 == '\\')) {\n      pcVar6 = local_28 + 1;\n    }\n    iVar4 = (**(code **)(unaff_EBX + 0x4bd4b))(pcVar6);\n    unaff_retaddr[300] = iVar4;\n    (**(code **)(unaff_EBX + 0x4bd53))(local_28);\n    pcVar6 = (char *)unaff_retaddr[300];\n    if (pcVar6 != (char *)0x0) {\n      pcVar5 = strchr(pcVar6,0x2f);\n      if ((pcVar5 == (char *)0x0) && (pcVar5 = strchr(pcVar6,0x5c), pcVar5 == (char *)0x0)) {\n        iVar3 = 3;\n        (**(code **)(unaff_EBX + 0x4bd53))(pcVar6);\n        unaff_retaddr[300] = 0;\n      }\n      else {\n        pcVar6 = pcVar5 + 1;\n        *pcVar5 = '\0';\n        *(char **)(iVar2 + 4) = pcVar6;\n        cVar1 = pcVar5[1];\n        while (cVar1 != '\0') {\n          if (cVar1 == '/') {\n            *pcVar6 = '\\';\n          }\n          pcVar6 = pcVar6 + 1;\n          cVar1 = *pcVar6;\n        }\n      }\n      goto LAB_00065401;\n    }\n  }" ({ "{") (expression_statement "iVar3 = FUN_000344f0(iVar3,*(undefined4 *)(iVar3 + 0xf0c),0,&local_28,0,1);" (assignment_expression "iVar3 = FUN_000344f0(iVar3,*(undefined4 *)(iVar3 + 0xf0c),0,&local_28,0,1)" (identifier "iVar3") (= "=") (call_expression "FUN_000344f0(iVar3,*(undefined4 *)(iVar3 + 0xf0c),0,&local_28,0,1)" (identifier "FUN_000344f0") (argument_list "(iVar3,*(undefined4 *)(iVar3 + 0xf0c),0,&local_28,0,1)" (( "(") (identifier "iVar3") (, ",") (pointer_expression "*(undefined4 *)(iVar3 + 0xf0c)" (* "*") (cast_expression "(undefined4 *)(iVar3 + 0xf0c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar3 + 0xf0c)" (( "(") (binary_expression "iVar3 + 0xf0c" (identifier "iVar3") (+ "+") (number_literal "0xf0c")) () ")")))) (, ",") (number_literal "0") (, ",") (pointer_expression "&local_28" (& "&") (identifier "local_28")) (, ",") (number_literal "0") (, ",") (number_literal "1") () ")")))) (; ";")) (if_statement "if (iVar3 != 0) goto LAB_00065401;" (if "if") (parenthesized_expression "(iVar3 != 0)" (( "(") (binary_expression "iVar3 != 0" (identifier "iVar3") (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_00065401;" (goto "goto") (statement_identifier "LAB_00065401") (; ";"))) (if_statement "if ((*local_28 == '/') || (pcVar6 = local_28, *local_28 == '\\')) {\n      pcVar6 = local_28 + 1;\n    }" (if "if") (parenthesized_expression "((*local_28 == '/') || (pcVar6 = local_28, *local_28 == '\\'))" (( "(") (binary_expression "(*local_28 == '/') || (pcVar6 = local_28, *local_28 == '\\')" (parenthesized_expression "(*local_28 == '/')" (( "(") (binary_expression "*local_28 == '/'" (pointer_expression "*local_28" (* "*") (identifier "local_28")) (== "==") (char_literal "'/'" (' "'") (character "/") (' "'"))) () ")")) (|| "||") (parenthesized_expression "(pcVar6 = local_28, *local_28 == '\\')" (( "(") (comma_expression "pcVar6 = local_28, *local_28 == '\\'" (assignment_expression "pcVar6 = local_28" (identifier "pcVar6") (= "=") (identifier "local_28")) (, ",") (binary_expression "*local_28 == '\\'" (pointer_expression "*local_28" (* "*") (identifier "local_28")) (== "==") (char_literal "'\\'" (' "'") (escape_sequence "\\") (' "'")))) () ")"))) () ")")) (compound_statement "{\n      pcVar6 = local_28 + 1;\n    }" ({ "{") (expression_statement "pcVar6 = local_28 + 1;" (assignment_expression "pcVar6 = local_28 + 1" (identifier "pcVar6") (= "=") (binary_expression "local_28 + 1" (identifier "local_28") (+ "+") (number_literal "1"))) (; ";")) (} "}"))) (expression_statement "iVar4 = (**(code **)(unaff_EBX + 0x4bd4b))(pcVar6);" (assignment_expression "iVar4 = (**(code **)(unaff_EBX + 0x4bd4b))(pcVar6)" (identifier "iVar4") (= "=") (call_expression "(**(code **)(unaff_EBX + 0x4bd4b))(pcVar6)" (parenthesized_expression "(**(code **)(unaff_EBX + 0x4bd4b))" (( "(") (pointer_expression "**(code **)(unaff_EBX + 0x4bd4b)" (* "*") (pointer_expression "*(code **)(unaff_EBX + 0x4bd4b)" (* "*") (cast_expression "(code **)(unaff_EBX + 0x4bd4b)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(unaff_EBX + 0x4bd4b)" (( "(") (binary_expression "unaff_EBX + 0x4bd4b" (identifier "unaff_EBX") (+ "+") (number_literal "0x4bd4b")) () ")"))))) () ")")) (argument_list "(pcVar6)" (( "(") (identifier "pcVar6") () ")")))) (; ";")) (expression_statement "unaff_retaddr[300] = iVar4;" (assignment_expression "unaff_retaddr[300] = iVar4" (subscript_expression "unaff_retaddr[300]" (identifier "unaff_retaddr") ([ "[") (number_literal "300") (] "]")) (= "=") (identifier "iVar4")) (; ";")) (expression_statement "(**(code **)(unaff_EBX + 0x4bd53))(local_28);" (call_expression "(**(code **)(unaff_EBX + 0x4bd53))(local_28)" (parenthesized_expression "(**(code **)(unaff_EBX + 0x4bd53))" (( "(") (pointer_expression "**(code **)(unaff_EBX + 0x4bd53)" (* "*") (pointer_expression "*(code **)(unaff_EBX + 0x4bd53)" (* "*") (cast_expression "(code **)(unaff_EBX + 0x4bd53)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(unaff_EBX + 0x4bd53)" (( "(") (binary_expression "unaff_EBX + 0x4bd53" (identifier "unaff_EBX") (+ "+") (number_literal "0x4bd53")) () ")"))))) () ")")) (argument_list "(local_28)" (( "(") (identifier "local_28") () ")"))) (; ";")) (expression_statement "pcVar6 = (char *)unaff_retaddr[300];" (assignment_expression "pcVar6 = (char *)unaff_retaddr[300]" (identifier "pcVar6") (= "=") (cast_expression "(char *)unaff_retaddr[300]" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "unaff_retaddr[300]" (identifier "unaff_retaddr") ([ "[") (number_literal "300") (] "]")))) (; ";")) (if_statement "if (pcVar6 != (char *)0x0) {\n      pcVar5 = strchr(pcVar6,0x2f);\n      if ((pcVar5 == (char *)0x0) && (pcVar5 = strchr(pcVar6,0x5c), pcVar5 == (char *)0x0)) {\n        iVar3 = 3;\n        (**(code **)(unaff_EBX + 0x4bd53))(pcVar6);\n        unaff_retaddr[300] = 0;\n      }\n      else {\n        pcVar6 = pcVar5 + 1;\n        *pcVar5 = '\0';\n        *(char **)(iVar2 + 4) = pcVar6;\n        cVar1 = pcVar5[1];\n        while (cVar1 != '\0') {\n          if (cVar1 == '/') {\n            *pcVar6 = '\\';\n          }\n          pcVar6 = pcVar6 + 1;\n          cVar1 = *pcVar6;\n        }\n      }\n      goto LAB_00065401;\n    }" (if "if") (parenthesized_expression "(pcVar6 != (char *)0x0)" (( "(") (binary_expression "pcVar6 != (char *)0x0" (identifier "pcVar6") (!= "!=") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n      pcVar5 = strchr(pcVar6,0x2f);\n      if ((pcVar5 == (char *)0x0) && (pcVar5 = strchr(pcVar6,0x5c), pcVar5 == (char *)0x0)) {\n        iVar3 = 3;\n        (**(code **)(unaff_EBX + 0x4bd53))(pcVar6);\n        unaff_retaddr[300] = 0;\n      }\n      else {\n        pcVar6 = pcVar5 + 1;\n        *pcVar5 = '\0';\n        *(char **)(iVar2 + 4) = pcVar6;\n        cVar1 = pcVar5[1];\n        while (cVar1 != '\0') {\n          if (cVar1 == '/') {\n            *pcVar6 = '\\';\n          }\n          pcVar6 = pcVar6 + 1;\n          cVar1 = *pcVar6;\n        }\n      }\n      goto LAB_00065401;\n    }" ({ "{") (expression_statement "pcVar5 = strchr(pcVar6,0x2f);" (assignment_expression "pcVar5 = strchr(pcVar6,0x2f)" (identifier "pcVar5") (= "=") (call_expression "strchr(pcVar6,0x2f)" (identifier "strchr") (argument_list "(pcVar6,0x2f)" (( "(") (identifier "pcVar6") (, ",") (number_literal "0x2f") () ")")))) (; ";")) (if_statement "if ((pcVar5 == (char *)0x0) && (pcVar5 = strchr(pcVar6,0x5c), pcVar5 == (char *)0x0)) {\n        iVar3 = 3;\n        (**(code **)(unaff_EBX + 0x4bd53))(pcVar6);\n        unaff_retaddr[300] = 0;\n      }\n      else {\n        pcVar6 = pcVar5 + 1;\n        *pcVar5 = '\0';\n        *(char **)(iVar2 + 4) = pcVar6;\n        cVar1 = pcVar5[1];\n        while (cVar1 != '\0') {\n          if (cVar1 == '/') {\n            *pcVar6 = '\\';\n          }\n          pcVar6 = pcVar6 + 1;\n          cVar1 = *pcVar6;\n        }\n      }" (if "if") (parenthesized_expression "((pcVar5 == (char *)0x0) && (pcVar5 = strchr(pcVar6,0x5c), pcVar5 == (char *)0x0))" (( "(") (binary_expression "(pcVar5 == (char *)0x0) && (pcVar5 = strchr(pcVar6,0x5c), pcVar5 == (char *)0x0)" (parenthesized_expression "(pcVar5 == (char *)0x0)" (( "(") (binary_expression "pcVar5 == (char *)0x0" (identifier "pcVar5") (== "==") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (&& "&&") (parenthesized_expression "(pcVar5 = strchr(pcVar6,0x5c), pcVar5 == (char *)0x0)" (( "(") (comma_expression "pcVar5 = strchr(pcVar6,0x5c), pcVar5 == (char *)0x0" (assignment_expression "pcVar5 = strchr(pcVar6,0x5c)" (identifier "pcVar5") (= "=") (call_expression "strchr(pcVar6,0x5c)" (identifier "strchr") (argument_list "(pcVar6,0x5c)" (( "(") (identifier "pcVar6") (, ",") (number_literal "0x5c") () ")")))) (, ",") (binary_expression "pcVar5 == (char *)0x0" (identifier "pcVar5") (== "==") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0")))) () ")"))) () ")")) (compound_statement "{\n        iVar3 = 3;\n        (**(code **)(unaff_EBX + 0x4bd53))(pcVar6);\n        unaff_retaddr[300] = 0;\n      }" ({ "{") (expression_statement "iVar3 = 3;" (assignment_expression "iVar3 = 3" (identifier "iVar3") (= "=") (number_literal "3")) (; ";")) (expression_statement "(**(code **)(unaff_EBX + 0x4bd53))(pcVar6);" (call_expression "(**(code **)(unaff_EBX + 0x4bd53))(pcVar6)" (parenthesized_expression "(**(code **)(unaff_EBX + 0x4bd53))" (( "(") (pointer_expression "**(code **)(unaff_EBX + 0x4bd53)" (* "*") (pointer_expression "*(code **)(unaff_EBX + 0x4bd53)" (* "*") (cast_expression "(code **)(unaff_EBX + 0x4bd53)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(unaff_EBX + 0x4bd53)" (( "(") (binary_expression "unaff_EBX + 0x4bd53" (identifier "unaff_EBX") (+ "+") (number_literal "0x4bd53")) () ")"))))) () ")")) (argument_list "(pcVar6)" (( "(") (identifier "pcVar6") () ")"))) (; ";")) (expression_statement "unaff_retaddr[300] = 0;" (assignment_expression "unaff_retaddr[300] = 0" (subscript_expression "unaff_retaddr[300]" (identifier "unaff_retaddr") ([ "[") (number_literal "300") (] "]")) (= "=") (number_literal "0")) (; ";")) (} "}")) (else_clause "else {\n        pcVar6 = pcVar5 + 1;\n        *pcVar5 = '\0';\n        *(char **)(iVar2 + 4) = pcVar6;\n        cVar1 = pcVar5[1];\n        while (cVar1 != '\0') {\n          if (cVar1 == '/') {\n            *pcVar6 = '\\';\n          }\n          pcVar6 = pcVar6 + 1;\n          cVar1 = *pcVar6;\n        }\n      }" (else "else") (compound_statement "{\n        pcVar6 = pcVar5 + 1;\n        *pcVar5 = '\0';\n        *(char **)(iVar2 + 4) = pcVar6;\n        cVar1 = pcVar5[1];\n        while (cVar1 != '\0') {\n          if (cVar1 == '/') {\n            *pcVar6 = '\\';\n          }\n          pcVar6 = pcVar6 + 1;\n          cVar1 = *pcVar6;\n        }\n      }" ({ "{") (expression_statement "pcVar6 = pcVar5 + 1;" (assignment_expression "pcVar6 = pcVar5 + 1" (identifier "pcVar6") (= "=") (binary_expression "pcVar5 + 1" (identifier "pcVar5") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "*pcVar5 = '\0';" (assignment_expression "*pcVar5 = '\0'" (pointer_expression "*pcVar5" (* "*") (identifier "pcVar5")) (= "=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) (; ";")) (expression_statement "*(char **)(iVar2 + 4) = pcVar6;" (assignment_expression "*(char **)(iVar2 + 4) = pcVar6" (pointer_expression "*(char **)(iVar2 + 4)" (* "*") (cast_expression "(char **)(iVar2 + 4)" (( "(") (type_descriptor "char **" (primitive_type "char") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar2 + 4)" (( "(") (binary_expression "iVar2 + 4" (identifier "iVar2") (+ "+") (number_literal "4")) () ")")))) (= "=") (identifier "pcVar6")) (; ";")) (expression_statement "cVar1 = pcVar5[1];" (assignment_expression "cVar1 = pcVar5[1]" (identifier "cVar1") (= "=") (subscript_expression "pcVar5[1]" (identifier "pcVar5") ([ "[") (number_literal "1") (] "]"))) (; ";")) (while_statement "while (cVar1 != '\0') {\n          if (cVar1 == '/') {\n            *pcVar6 = '\\';\n          }\n          pcVar6 = pcVar6 + 1;\n          cVar1 = *pcVar6;\n        }" (while "while") (parenthesized_expression "(cVar1 != '\0')" (( "(") (binary_expression "cVar1 != '\0'" (identifier "cVar1") (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n          if (cVar1 == '/') {\n            *pcVar6 = '\\';\n          }\n          pcVar6 = pcVar6 + 1;\n          cVar1 = *pcVar6;\n        }" ({ "{") (if_statement "if (cVar1 == '/') {\n            *pcVar6 = '\\';\n          }" (if "if") (parenthesized_expression "(cVar1 == '/')" (( "(") (binary_expression "cVar1 == '/'" (identifier "cVar1") (== "==") (char_literal "'/'" (' "'") (character "/") (' "'"))) () ")")) (compound_statement "{\n            *pcVar6 = '\\';\n          }" ({ "{") (expression_statement "*pcVar6 = '\\';" (assignment_expression "*pcVar6 = '\\'" (pointer_expression "*pcVar6" (* "*") (identifier "pcVar6")) (= "=") (char_literal "'\\'" (' "'") (escape_sequence "\\") (' "'"))) (; ";")) (} "}"))) (expression_statement "pcVar6 = pcVar6 + 1;" (assignment_expression "pcVar6 = pcVar6 + 1" (identifier "pcVar6") (= "=") (binary_expression "pcVar6 + 1" (identifier "pcVar6") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "cVar1 = *pcVar6;" (assignment_expression "cVar1 = *pcVar6" (identifier "cVar1") (= "=") (pointer_expression "*pcVar6" (* "*") (identifier "pcVar6"))) (; ";")) (} "}"))) (} "}")))) (goto_statement "goto LAB_00065401;" (goto "goto") (statement_identifier "LAB_00065401") (; ";")) (} "}"))) (} "}"))) (expression_statement "iVar3 = 0x1b;" (assignment_expression "iVar3 = 0x1b" (identifier "iVar3") (= "=") (number_literal "0x1b")) (; ";")) (labeled_statement "LAB_00065401:\n  if (local_24 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n    FUN_0007c1a0();\n  }" (statement_identifier "LAB_00065401") (: ":") (if_statement "if (local_24 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n    FUN_0007c1a0();\n  }" (if "if") (parenthesized_expression "(local_24 != *(int *)(in_GS_OFFSET + 0x14))" (( "(") (binary_expression "local_24 != *(int *)(in_GS_OFFSET + 0x14)" (identifier "local_24") (!= "!=") (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                    \n    FUN_0007c1a0();\n  }" ({ "{") (expression_statement "FUN_0007c1a0();" (call_expression "FUN_0007c1a0()" (identifier "FUN_0007c1a0") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}")))) (return_statement "return iVar3;" (return "return") (identifier "iVar3") (; ";")) (} "}")))

/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */
/* WARNING: Unknown calling convention */
/* WARNING: Enum "anon_enum_32": Some values do not have unique names */

type_1 function_1(type_2 *conn)

{
  char var_10;
  type_3 *data;
  void *var_2;
  type_1 var_4;
  char *var_7;
  char *var_9;
  int var_1;
  char *var_6;
  int var_11;
  type_4 uStack_14;
  
  uStack_14 = 0x65319;
  var_11 = *(int *)(var_1 + 0x14);
  var_2 = (*Curl_ccalloc)(1,0x10);
  data = conn->data;
  (data->req).protop = var_2;
  if (var_2 != (void *)0x0) {
    var_4 = var_3(data,(data->state).up.var_6,0,&var_6,(size_t *)0x0,true);
    if (var_4 != var_5) goto LAB_00065401;
    if ((*var_6 == '/') || (var_7 = var_6, *var_6 == '\\')) {
      var_7 = var_6 + 1;
    }
    var_7 = (*Curl_cstrdup)(var_7);
    (conn->proto).ftpc.pp.linestart_resp = var_7;
    (*Curl_cfree)(var_6);
    var_7 = (conn->proto).ftpc.pp.linestart_resp;
    if (var_7 != (char *)0x0) {
      var_9 = var_8(var_7,0x2f);
      if ((var_9 == (char *)0x0) && (var_9 = var_8(var_7,0x5c), var_9 == (char *)0x0)) {
        var_4 = CURLE_URL_MALFORMAT;
        (*Curl_cfree)(var_7);
        (conn->proto).ftpc.pp.linestart_resp = (char *)0x0;
      }
      else {
        var_7 = var_9 + 1;
        *var_9 = '\0';
        *(char **)((int)var_2 + 4) = var_7;
        var_10 = var_9[1];
        while (var_10 != '\0') {
          if (var_10 == '/') {
            *var_7 = '\\';
          }
          var_7 = var_7 + 1;
          var_10 = *var_7;
        }
      }
      goto LAB_00065401;
    }
  }
  var_4 = CURLE_OUT_OF_MEMORY;
LAB_00065401:
  if (var_11 != *(int *)(var_1 + 0x14)) {
                    /* WARNING: Subroutine does not return */
    var_12();
  }
  return var_4;
}


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

int MASKED(void)

{
  char cVar1;
  int iVar2;
  int iVar3;
  int iVar4;
  char *pcVar5;
  char *pcVar6;
  int unaff_EBX;
  int in_GS_OFFSET;
  int *unaff_retaddr;
  char *local_28;
  int local_24;
  undefined4 uStack_14;
  
  uStack_14 = 0x65319;
  entry();
  local_24 = *(int *)(in_GS_OFFSET + 0x14);
  iVar2 = (**(code **)(unaff_EBX + 0x4bd47))(1,0x10);
  iVar3 = *unaff_retaddr;
  *(int *)(iVar3 + 0x148) = iVar2;
  if (iVar2 != 0) {
    iVar3 = FUN_000344f0(iVar3,*(undefined4 *)(iVar3 + 0xf0c),0,&local_28,0,1);
    if (iVar3 != 0) goto LAB_00065401;
    if ((*local_28 == '/') || (pcVar6 = local_28, *local_28 == '\\')) {
      pcVar6 = local_28 + 1;
    }
    iVar4 = (**(code **)(unaff_EBX + 0x4bd4b))(pcVar6);
    unaff_retaddr[300] = iVar4;
    (**(code **)(unaff_EBX + 0x4bd53))(local_28);
    pcVar6 = (char *)unaff_retaddr[300];
    if (pcVar6 != (char *)0x0) {
      pcVar5 = strchr(pcVar6,0x2f);
      if ((pcVar5 == (char *)0x0) && (pcVar5 = strchr(pcVar6,0x5c), pcVar5 == (char *)0x0)) {
        iVar3 = 3;
        (**(code **)(unaff_EBX + 0x4bd53))(pcVar6);
        unaff_retaddr[300] = 0;
      }
      else {
        pcVar6 = pcVar5 + 1;
        *pcVar5 = '\0';
        *(char **)(iVar2 + 4) = pcVar6;
        cVar1 = pcVar5[1];
        while (cVar1 != '\0') {
          if (cVar1 == '/') {
            *pcVar6 = '\\';
          }
          pcVar6 = pcVar6 + 1;
          cVar1 = *pcVar6;
        }
      }
      goto LAB_00065401;
    }
  }
  iVar3 = 0x1b;
LAB_00065401:
  if (local_24 != *(int *)(in_GS_OFFSET + 0x14)) {
                    /* WARNING: Subroutine does not return */
    FUN_0007c1a0();
  }
  return iVar3;
}

