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

void __regparm3 activate_option(Telnet telnet,Opt *o)

{
  int iVar1;
  socket_function_table *psVar2;
  Socket ppsVar3;
  int iVar4;
  char *pcVar5;
  int iVar6;
  Opt *pOVar7;
  int in_GS_OFFSET;
  uchar b [3];
  
  iVar6 = o->send;
  iVar1 = *(int *)(in_GS_OFFSET + 0x14);
  iVar4 = o->option;
  if (iVar6 == 0xfb) {
    if (iVar4 == 0x1f) {
      telnet_size(telnet,telnet->term_width,telnet->term_height);
      iVar6 = o->send;
      iVar4 = o->option;
      if (iVar6 != 0xfb) goto joined_r0x0003d942;
    }
    if ((iVar4 == 0x27) || (iVar4 == 0x24)) {
      if (iVar4 == 0x27) {
        iVar6 = 0x24;
        iVar4 = 3;
        pOVar7 = &o_oenv;
      }
      else {
        iVar6 = 0x27;
        iVar4 = 4;
        pOVar7 = &o_nenv;
      }
      if ((uint)telnet->opt_states[iVar4] < 2) {
        send_opt(telnet,0xfc,iVar6);
        iVar4 = pOVar7->index;
      }
      telnet->opt_states[iVar4] = 3;
      iVar4 = o->option;
      iVar6 = o->send;
      goto joined_r0x0003d942;
    }
  }
  else {
joined_r0x0003d942:
    if (iVar4 == 1) {
      if (iVar6 == 0xfd) {
        telnet->echoing = 0;
      }
    }
    else if ((iVar6 == 0xfd) && (iVar4 == 3)) {
      telnet->editing = 0;
    }
  }
  if (telnet->ldisc != (void *)0x0) {
    ldisc_echoedit_update(telnet->ldisc);
  }
  if (telnet->activated != 0) goto LAB_0003d8d8;
  if (telnet->opt_states[5] == 2) {
    ppsVar3 = telnet->s;
    b[2] = '\x01';
    b[0] = 0xff;
    b[1] = 0xfd;
    psVar2 = *ppsVar3;
    telnet->opt_states[5] = 0;
    iVar4 = (*psVar2->write)(ppsVar3,(char *)b,3);
    telnet->bufsize = iVar4;
    pcVar5 = telopt(1);
    pcVar5 = dupprintf("%s:\t%s %s","client",&DAT_000920a3,pcVar5);
    logevent(telnet->frontend,pcVar5);
    safefree(pcVar5);
    if (telnet->opt_states[6] == 2) goto LAB_0003d9e4;
LAB_0003d8c7:
    iVar4 = telnet->opt_states[7];
  }
  else {
    if (telnet->opt_states[6] != 2) goto LAB_0003d8c7;
LAB_0003d9e4:
    ppsVar3 = telnet->s;
    b[2] = '\x03';
    b[0] = 0xff;
    b[1] = 0xfb;
    psVar2 = *ppsVar3;
    telnet->opt_states[6] = 0;
    iVar4 = (*psVar2->write)(ppsVar3,(char *)b,3);
    telnet->bufsize = iVar4;
    pcVar5 = telopt(3);
    pcVar5 = dupprintf("%s:\t%s %s","client",&DAT_000920ab,pcVar5);
    logevent(telnet->frontend,pcVar5);
    safefree(pcVar5);
    iVar4 = telnet->opt_states[7];
  }
  if (iVar4 == 2) {
    b[2] = '\x03';
    b[0] = 0xff;
    b[1] = 0xfd;
    ppsVar3 = telnet->s;
    telnet->opt_states[7] = 0;
    iVar4 = (*(*ppsVar3)->write)(ppsVar3,(char *)b,3);
    telnet->bufsize = iVar4;
    pcVar5 = telopt(3);
    pcVar5 = dupprintf("%s:\t%s %s","client",&DAT_000920a3,pcVar5);
    logevent(telnet->frontend,pcVar5);
    safefree(pcVar5);
  }
  telnet->activated = 1;
LAB_0003d8d8:
  if (iVar1 == *(int *)(in_GS_OFFSET + 0x14)) {
    return;
  }
                    /* WARNING: Subroutine does not return */
  __stack_chk_fail_local();
}



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

void __regparm3 FUN_0003d850(int param_1,int *param_2)

{
  int iVar1;
  int iVar2;
  undefined4 uVar3;
  undefined *puVar4;
  int in_GS_OFFSET;
  undefined2 local_23;
  undefined1 local_21;
  int local_20;
  undefined4 uStack_14;
  
  uStack_14 = 0x3d85d;
  iVar1 = *param_2;
  local_20 = *(int *)(in_GS_OFFSET + 0x14);
  iVar2 = param_2[4];
  if (iVar1 == 0xfb) {
    if (iVar2 == 0x1f) {
      FUN_0003d040(param_1,*(undefined4 *)(param_1 + 0x14),*(undefined4 *)(param_1 + 0x18));
      iVar1 = *param_2;
      iVar2 = param_2[4];
      if (iVar1 != 0xfb) goto joined_r0x0003d942;
    }
    if ((iVar2 == 0x27) || (iVar2 == 0x24)) {
      if (iVar2 == 0x27) {
        iVar2 = 3;
        puVar4 = &DAT_00092744;
      }
      else {
        iVar2 = 4;
        puVar4 = &DAT_00092728;
      }
      iVar2 = iVar2 + 4;
      if (*(uint *)(param_1 + 0xc + iVar2 * 4) < 2) {
        FUN_0003d2f0();
        iVar2 = *(int *)(puVar4 + 0x14) + 4;
      }
      *(undefined4 *)(param_1 + 0xc + iVar2 * 4) = 3;
      iVar2 = param_2[4];
      iVar1 = *param_2;
      goto joined_r0x0003d942;
    }
  }
  else {
joined_r0x0003d942:
    if (iVar2 == 1) {
      if (iVar1 == 0xfd) {
        *(undefined4 *)(param_1 + 0x44) = 0;
      }
    }
    else if ((iVar1 == 0xfd) && (iVar2 == 3)) {
      *(undefined4 *)(param_1 + 0x48) = 0;
    }
  }
  if (*(int *)(param_1 + 0x10) != 0) {
    FUN_0002ada0(*(int *)(param_1 + 0x10));
  }
  if (*(int *)(param_1 + 0x4c) != 0) goto LAB_0003d8d8;
  if (*(int *)(param_1 + 0x30) == 2) {
    local_21 = 1;
    local_23 = 0xfdff;
    iVar2 = **(int **)(param_1 + 4);
    *(undefined4 *)(param_1 + 0x30) = 0;
    uVar3 = (**(code **)(iVar2 + 8))(*(int **)(param_1 + 4),&local_23,3);
    *(undefined4 *)(param_1 + 0x50) = uVar3;
    uVar3 = FUN_0003ca70();
    uVar3 = FUN_000306f0("%s:\t%s %s","client",&DAT_000920a3,uVar3);
    FUN_00068500(*(undefined4 *)(param_1 + 0xc),uVar3);
    FUN_00031580(uVar3);
    if (*(int *)(param_1 + 0x34) == 2) goto LAB_0003d9e4;
LAB_0003d8c7:
    iVar2 = *(int *)(param_1 + 0x38);
  }
  else {
    if (*(int *)(param_1 + 0x34) != 2) goto LAB_0003d8c7;
LAB_0003d9e4:
    local_21 = 3;
    local_23 = 0xfbff;
    iVar2 = **(int **)(param_1 + 4);
    *(undefined4 *)(param_1 + 0x34) = 0;
    uVar3 = (**(code **)(iVar2 + 8))(*(int **)(param_1 + 4),&local_23,3);
    *(undefined4 *)(param_1 + 0x50) = uVar3;
    uVar3 = FUN_0003ca70();
    uVar3 = FUN_000306f0("%s:\t%s %s","client",&DAT_000920ab,uVar3);
    FUN_00068500(*(undefined4 *)(param_1 + 0xc),uVar3);
    FUN_00031580(uVar3);
    iVar2 = *(int *)(param_1 + 0x38);
  }
  if (iVar2 == 2) {
    local_21 = 3;
    local_23 = 0xfdff;
    *(undefined4 *)(param_1 + 0x38) = 0;
    uVar3 = (**(code **)(**(int **)(param_1 + 4) + 8))(*(int **)(param_1 + 4),&local_23,3);
    *(undefined4 *)(param_1 + 0x50) = uVar3;
    uVar3 = FUN_0003ca70();
    uVar3 = FUN_000306f0("%s:\t%s %s","client",&DAT_000920a3,uVar3);
    FUN_00068500(*(undefined4 *)(param_1 + 0xc),uVar3);
    FUN_00031580(uVar3);
  }
  *(undefined4 *)(param_1 + 0x4c) = 1;
LAB_0003d8d8:
  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {
    return;
  }
                    /* WARNING: Subroutine does not return */
  FUN_00077880();
}


PUSH EBP
PUSH EDI
MOV EDI,EDX
PUSH ESI
MOV ESI,EAX
PUSH EBX
CALL 0x0001b410
ADD EBX,0x87f47
SUB ESP,0x1c
MOV EDX,dword ptr [EDX]
MOV EAX,GS:[0x14]
MOV dword ptr [ESP + 0xc],EAX
XOR EAX,EAX
MOV EAX,dword ptr [EDI + 0x10]
CMP EDX,0xfb
JZ 0x0003d8f8
CMP EAX,0x1
JZ 0x0003d948
CMP EDX,0xfd
JNZ 0x0003d899
CMP EAX,0x3
JZ 0x0003d960
MOV EAX,dword ptr [ESI + 0x10]
TEST EAX,EAX
JZ 0x0003d8ac
SUB ESP,0xc
PUSH EAX
CALL 0x0002ada0
ADD ESP,0x10
MOV EDI,dword ptr [ESI + 0x4c]
TEST EDI,EDI
JNZ 0x0003d8d8
CMP dword ptr [ESI + 0x30],0x2
JZ 0x0003d970
CMP dword ptr [ESI + 0x34],0x2
JZ 0x0003d9e4
CMP dword ptr [ESI + 0x38],0x2
JZ 0x0003da58
MOV dword ptr [ESI + 0x4c],0x1
MOV EAX,dword ptr [ESP + 0xc]
XOR EAX,dword ptr GS:[0x14]
JNZ 0x0003db2f
ADD ESP,0x1c
POP EBX
POP ESI
POP EDI
POP EBP
RET
CMP EAX,0x1f
JZ 0x0003dad0
CMP EAX,0x27
JZ 0x0003d90b
CMP EAX,0x24
JNZ 0x0003d899
CMP EAX,0x27
JZ 0x0003db00
MOV ECX,0x27
MOV EAX,0x4
LEA EBP,[EBX + 0xfffccf84]
ADD EAX,0x4
CMP dword ptr [ESI + EAX*0x4 + 0xc],0x1
JBE 0x0003db18
MOV dword ptr [ESI + EAX*0x4 + 0xc],0x3
MOV EAX,dword ptr [EDI + 0x10]
MOV EDX,dword ptr [EDI]
CMP EAX,0x1
JNZ 0x0003d888
CMP EDX,0xfd
JNZ 0x0003d899
MOV dword ptr [ESI + 0x44],0x0
JMP 0x0003d899
MOV dword ptr [ESI + 0x48],0x0
JMP 0x0003d899
MOV EAX,dword ptr [ESI + 0x4]
MOV ECX,0xfffffdff
MOV byte ptr [ESP + 0xb],0x1
SUB ESP,0x4
MOV word ptr [ESP + 0xd],CX
MOV EDX,dword ptr [EAX]
PUSH 0x3
MOV dword ptr [ESI + 0x30],0x0
LEA ECX,[ESP + 0x11]
PUSH ECX
PUSH EAX
CALL dword ptr [EDX + 0x8]
MOV dword ptr [ESI + 0x50],EAX
MOV EAX,0x1
CALL 0x0003ca70
PUSH EAX
LEA EAX,[EBX + 0xfffcc8ff]
PUSH EAX
LEA EAX,[EBX + 0xfffcc916]
PUSH EAX
LEA EAX,[EBX + 0xfffcc91d]
PUSH EAX
CALL 0x000306f0
ADD ESP,0x18
PUSH EAX
MOV EDI,EAX
PUSH dword ptr [ESI + 0xc]
CALL 0x00068500
MOV dword ptr [ESP],EDI
CALL 0x00031580
ADD ESP,0x10
CMP dword ptr [ESI + 0x34],0x2
JNZ 0x0003d8c7
MOV EAX,dword ptr [ESI + 0x4]
MOV EDX,0xfffffbff
MOV byte ptr [ESP + 0xb],0x3
SUB ESP,0x4
MOV word ptr [ESP + 0xd],DX
MOV EDX,dword ptr [EAX]
PUSH 0x3
MOV dword ptr [ESI + 0x34],0x0
LEA ECX,[ESP + 0x11]
PUSH ECX
PUSH EAX
CALL dword ptr [EDX + 0x8]
MOV dword ptr [ESI + 0x50],EAX
MOV EAX,0x3
CALL 0x0003ca70
PUSH EAX
LEA EAX,[EBX + 0xfffcc907]
PUSH EAX
LEA EAX,[EBX + 0xfffcc916]
PUSH EAX
LEA EAX,[EBX + 0xfffcc91d]
PUSH EAX
CALL 0x000306f0
ADD ESP,0x18
PUSH EAX
MOV EDI,EAX
PUSH dword ptr [ESI + 0xc]
CALL 0x00068500
MOV dword ptr [ESP],EDI
CALL 0x00031580
ADD ESP,0x10
CMP dword ptr [ESI + 0x38],0x2
JNZ 0x0003d8d1
MOV EAX,0xfffffdff
MOV byte ptr [ESP + 0xb],0x3
SUB ESP,0x4
MOV word ptr [ESP + 0xd],AX
MOV EAX,dword ptr [ESI + 0x4]
MOV dword ptr [ESI + 0x38],0x0
MOV EDX,dword ptr [EAX]
PUSH 0x3
LEA ECX,[ESP + 0x11]
PUSH ECX
PUSH EAX
CALL dword ptr [EDX + 0x8]
MOV dword ptr [ESI + 0x50],EAX
MOV EAX,0x3
CALL 0x0003ca70
PUSH EAX
LEA EAX,[EBX + 0xfffcc8ff]
PUSH EAX
LEA EAX,[EBX + 0xfffcc916]
PUSH EAX
LEA EAX,[EBX + 0xfffcc91d]
PUSH EAX
CALL 0x000306f0
ADD ESP,0x18
PUSH EAX
MOV EDI,EAX
PUSH dword ptr [ESI + 0xc]
CALL 0x00068500
MOV dword ptr [ESP],EDI
CALL 0x00031580
ADD ESP,0x10
JMP 0x0003d8d1
SUB ESP,0x4
PUSH dword ptr [ESI + 0x18]
PUSH dword ptr [ESI + 0x14]
PUSH ESI
CALL 0x0003d040
MOV EDX,dword ptr [EDI]
ADD ESP,0x10
MOV EAX,dword ptr [EDI + 0x10]
CMP EDX,0xfb
JZ 0x0003d901
JMP 0x0003d87f
MOV ECX,0x24
MOV EAX,0x3
LEA EBP,[EBX + 0xfffccfa0]
JMP 0x0003d924
MOV EAX,ESI
MOV EDX,0xfc
CALL 0x0003d2f0
MOV EAX,dword ptr [EBP + 0x14]
ADD EAX,0x4
JMP 0x0003d932
CALL 0x00077880
(translation_unit "/* WARNING: Function: __i686.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n\nvoid __regparm3 FUN_0003d850(int param_1,int *param_2)\n\n{\n  int iVar1;\n  int iVar2;\n  undefined4 uVar3;\n  undefined *puVar4;\n  int in_GS_OFFSET;\n  undefined2 local_23;\n  undefined1 local_21;\n  int local_20;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x3d85d;\n  iVar1 = *param_2;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  iVar2 = param_2[4];\n  if (iVar1 == 0xfb) {\n    if (iVar2 == 0x1f) {\n      FUN_0003d040(param_1,*(undefined4 *)(param_1 + 0x14),*(undefined4 *)(param_1 + 0x18));\n      iVar1 = *param_2;\n      iVar2 = param_2[4];\n      if (iVar1 != 0xfb) goto joined_r0x0003d942;\n    }\n    if ((iVar2 == 0x27) || (iVar2 == 0x24)) {\n      if (iVar2 == 0x27) {\n        iVar2 = 3;\n        puVar4 = &DAT_00092744;\n      }\n      else {\n        iVar2 = 4;\n        puVar4 = &DAT_00092728;\n      }\n      iVar2 = iVar2 + 4;\n      if (*(uint *)(param_1 + 0xc + iVar2 * 4) < 2) {\n        FUN_0003d2f0();\n        iVar2 = *(int *)(puVar4 + 0x14) + 4;\n      }\n      *(undefined4 *)(param_1 + 0xc + iVar2 * 4) = 3;\n      iVar2 = param_2[4];\n      iVar1 = *param_2;\n      goto joined_r0x0003d942;\n    }\n  }\n  else {\njoined_r0x0003d942:\n    if (iVar2 == 1) {\n      if (iVar1 == 0xfd) {\n        *(undefined4 *)(param_1 + 0x44) = 0;\n      }\n    }\n    else if ((iVar1 == 0xfd) && (iVar2 == 3)) {\n      *(undefined4 *)(param_1 + 0x48) = 0;\n    }\n  }\n  if (*(int *)(param_1 + 0x10) != 0) {\n    FUN_0002ada0(*(int *)(param_1 + 0x10));\n  }\n  if (*(int *)(param_1 + 0x4c) != 0) goto LAB_0003d8d8;\n  if (*(int *)(param_1 + 0x30) == 2) {\n    local_21 = 1;\n    local_23 = 0xfdff;\n    iVar2 = **(int **)(param_1 + 4);\n    *(undefined4 *)(param_1 + 0x30) = 0;\n    uVar3 = (**(code **)(iVar2 + 8))(*(int **)(param_1 + 4),&local_23,3);\n    *(undefined4 *)(param_1 + 0x50) = uVar3;\n    uVar3 = FUN_0003ca70();\n    uVar3 = FUN_000306f0("%s:\t%s %s","client",&DAT_000920a3,uVar3);\n    FUN_00068500(*(undefined4 *)(param_1 + 0xc),uVar3);\n    FUN_00031580(uVar3);\n    if (*(int *)(param_1 + 0x34) == 2) goto LAB_0003d9e4;\nLAB_0003d8c7:\n    iVar2 = *(int *)(param_1 + 0x38);\n  }\n  else {\n    if (*(int *)(param_1 + 0x34) != 2) goto LAB_0003d8c7;\nLAB_0003d9e4:\n    local_21 = 3;\n    local_23 = 0xfbff;\n    iVar2 = **(int **)(param_1 + 4);\n    *(undefined4 *)(param_1 + 0x34) = 0;\n    uVar3 = (**(code **)(iVar2 + 8))(*(int **)(param_1 + 4),&local_23,3);\n    *(undefined4 *)(param_1 + 0x50) = uVar3;\n    uVar3 = FUN_0003ca70();\n    uVar3 = FUN_000306f0("%s:\t%s %s","client",&DAT_000920ab,uVar3);\n    FUN_00068500(*(undefined4 *)(param_1 + 0xc),uVar3);\n    FUN_00031580(uVar3);\n    iVar2 = *(int *)(param_1 + 0x38);\n  }\n  if (iVar2 == 2) {\n    local_21 = 3;\n    local_23 = 0xfdff;\n    *(undefined4 *)(param_1 + 0x38) = 0;\n    uVar3 = (**(code **)(**(int **)(param_1 + 4) + 8))(*(int **)(param_1 + 4),&local_23,3);\n    *(undefined4 *)(param_1 + 0x50) = uVar3;\n    uVar3 = FUN_0003ca70();\n    uVar3 = FUN_000306f0("%s:\t%s %s","client",&DAT_000920a3,uVar3);\n    FUN_00068500(*(undefined4 *)(param_1 + 0xc),uVar3);\n    FUN_00031580(uVar3);\n  }\n  *(undefined4 *)(param_1 + 0x4c) = 1;\nLAB_0003d8d8:\n  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return;\n  }\n                    /* WARNING: Subroutine does not return */\n  FUN_00077880();\n}\n\n" comment (function_definition "void __regparm3 FUN_0003d850(int param_1,int *param_2)\n\n{\n  int iVar1;\n  int iVar2;\n  undefined4 uVar3;\n  undefined *puVar4;\n  int in_GS_OFFSET;\n  undefined2 local_23;\n  undefined1 local_21;\n  int local_20;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x3d85d;\n  iVar1 = *param_2;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  iVar2 = param_2[4];\n  if (iVar1 == 0xfb) {\n    if (iVar2 == 0x1f) {\n      FUN_0003d040(param_1,*(undefined4 *)(param_1 + 0x14),*(undefined4 *)(param_1 + 0x18));\n      iVar1 = *param_2;\n      iVar2 = param_2[4];\n      if (iVar1 != 0xfb) goto joined_r0x0003d942;\n    }\n    if ((iVar2 == 0x27) || (iVar2 == 0x24)) {\n      if (iVar2 == 0x27) {\n        iVar2 = 3;\n        puVar4 = &DAT_00092744;\n      }\n      else {\n        iVar2 = 4;\n        puVar4 = &DAT_00092728;\n      }\n      iVar2 = iVar2 + 4;\n      if (*(uint *)(param_1 + 0xc + iVar2 * 4) < 2) {\n        FUN_0003d2f0();\n        iVar2 = *(int *)(puVar4 + 0x14) + 4;\n      }\n      *(undefined4 *)(param_1 + 0xc + iVar2 * 4) = 3;\n      iVar2 = param_2[4];\n      iVar1 = *param_2;\n      goto joined_r0x0003d942;\n    }\n  }\n  else {\njoined_r0x0003d942:\n    if (iVar2 == 1) {\n      if (iVar1 == 0xfd) {\n        *(undefined4 *)(param_1 + 0x44) = 0;\n      }\n    }\n    else if ((iVar1 == 0xfd) && (iVar2 == 3)) {\n      *(undefined4 *)(param_1 + 0x48) = 0;\n    }\n  }\n  if (*(int *)(param_1 + 0x10) != 0) {\n    FUN_0002ada0(*(int *)(param_1 + 0x10));\n  }\n  if (*(int *)(param_1 + 0x4c) != 0) goto LAB_0003d8d8;\n  if (*(int *)(param_1 + 0x30) == 2) {\n    local_21 = 1;\n    local_23 = 0xfdff;\n    iVar2 = **(int **)(param_1 + 4);\n    *(undefined4 *)(param_1 + 0x30) = 0;\n    uVar3 = (**(code **)(iVar2 + 8))(*(int **)(param_1 + 4),&local_23,3);\n    *(undefined4 *)(param_1 + 0x50) = uVar3;\n    uVar3 = FUN_0003ca70();\n    uVar3 = FUN_000306f0("%s:\t%s %s","client",&DAT_000920a3,uVar3);\n    FUN_00068500(*(undefined4 *)(param_1 + 0xc),uVar3);\n    FUN_00031580(uVar3);\n    if (*(int *)(param_1 + 0x34) == 2) goto LAB_0003d9e4;\nLAB_0003d8c7:\n    iVar2 = *(int *)(param_1 + 0x38);\n  }\n  else {\n    if (*(int *)(param_1 + 0x34) != 2) goto LAB_0003d8c7;\nLAB_0003d9e4:\n    local_21 = 3;\n    local_23 = 0xfbff;\n    iVar2 = **(int **)(param_1 + 4);\n    *(undefined4 *)(param_1 + 0x34) = 0;\n    uVar3 = (**(code **)(iVar2 + 8))(*(int **)(param_1 + 4),&local_23,3);\n    *(undefined4 *)(param_1 + 0x50) = uVar3;\n    uVar3 = FUN_0003ca70();\n    uVar3 = FUN_000306f0("%s:\t%s %s","client",&DAT_000920ab,uVar3);\n    FUN_00068500(*(undefined4 *)(param_1 + 0xc),uVar3);\n    FUN_00031580(uVar3);\n    iVar2 = *(int *)(param_1 + 0x38);\n  }\n  if (iVar2 == 2) {\n    local_21 = 3;\n    local_23 = 0xfdff;\n    *(undefined4 *)(param_1 + 0x38) = 0;\n    uVar3 = (**(code **)(**(int **)(param_1 + 4) + 8))(*(int **)(param_1 + 4),&local_23,3);\n    *(undefined4 *)(param_1 + 0x50) = uVar3;\n    uVar3 = FUN_0003ca70();\n    uVar3 = FUN_000306f0("%s:\t%s %s","client",&DAT_000920a3,uVar3);\n    FUN_00068500(*(undefined4 *)(param_1 + 0xc),uVar3);\n    FUN_00031580(uVar3);\n  }\n  *(undefined4 *)(param_1 + 0x4c) = 1;\nLAB_0003d8d8:\n  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return;\n  }\n                    /* WARNING: Subroutine does not return */\n  FUN_00077880();\n}" primitive_type (ERROR "__regparm3" identifier) (function_declarator "FUN_0003d850(int param_1,int *param_2)" identifier (parameter_list "(int param_1,int *param_2)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "int *param_2" primitive_type (pointer_declarator "*param_2" * identifier)) ))) (compound_statement "{\n  int iVar1;\n  int iVar2;\n  undefined4 uVar3;\n  undefined *puVar4;\n  int in_GS_OFFSET;\n  undefined2 local_23;\n  undefined1 local_21;\n  int local_20;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x3d85d;\n  iVar1 = *param_2;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  iVar2 = param_2[4];\n  if (iVar1 == 0xfb) {\n    if (iVar2 == 0x1f) {\n      FUN_0003d040(param_1,*(undefined4 *)(param_1 + 0x14),*(undefined4 *)(param_1 + 0x18));\n      iVar1 = *param_2;\n      iVar2 = param_2[4];\n      if (iVar1 != 0xfb) goto joined_r0x0003d942;\n    }\n    if ((iVar2 == 0x27) || (iVar2 == 0x24)) {\n      if (iVar2 == 0x27) {\n        iVar2 = 3;\n        puVar4 = &DAT_00092744;\n      }\n      else {\n        iVar2 = 4;\n        puVar4 = &DAT_00092728;\n      }\n      iVar2 = iVar2 + 4;\n      if (*(uint *)(param_1 + 0xc + iVar2 * 4) < 2) {\n        FUN_0003d2f0();\n        iVar2 = *(int *)(puVar4 + 0x14) + 4;\n      }\n      *(undefined4 *)(param_1 + 0xc + iVar2 * 4) = 3;\n      iVar2 = param_2[4];\n      iVar1 = *param_2;\n      goto joined_r0x0003d942;\n    }\n  }\n  else {\njoined_r0x0003d942:\n    if (iVar2 == 1) {\n      if (iVar1 == 0xfd) {\n        *(undefined4 *)(param_1 + 0x44) = 0;\n      }\n    }\n    else if ((iVar1 == 0xfd) && (iVar2 == 3)) {\n      *(undefined4 *)(param_1 + 0x48) = 0;\n    }\n  }\n  if (*(int *)(param_1 + 0x10) != 0) {\n    FUN_0002ada0(*(int *)(param_1 + 0x10));\n  }\n  if (*(int *)(param_1 + 0x4c) != 0) goto LAB_0003d8d8;\n  if (*(int *)(param_1 + 0x30) == 2) {\n    local_21 = 1;\n    local_23 = 0xfdff;\n    iVar2 = **(int **)(param_1 + 4);\n    *(undefined4 *)(param_1 + 0x30) = 0;\n    uVar3 = (**(code **)(iVar2 + 8))(*(int **)(param_1 + 4),&local_23,3);\n    *(undefined4 *)(param_1 + 0x50) = uVar3;\n    uVar3 = FUN_0003ca70();\n    uVar3 = FUN_000306f0("%s:\t%s %s","client",&DAT_000920a3,uVar3);\n    FUN_00068500(*(undefined4 *)(param_1 + 0xc),uVar3);\n    FUN_00031580(uVar3);\n    if (*(int *)(param_1 + 0x34) == 2) goto LAB_0003d9e4;\nLAB_0003d8c7:\n    iVar2 = *(int *)(param_1 + 0x38);\n  }\n  else {\n    if (*(int *)(param_1 + 0x34) != 2) goto LAB_0003d8c7;\nLAB_0003d9e4:\n    local_21 = 3;\n    local_23 = 0xfbff;\n    iVar2 = **(int **)(param_1 + 4);\n    *(undefined4 *)(param_1 + 0x34) = 0;\n    uVar3 = (**(code **)(iVar2 + 8))(*(int **)(param_1 + 4),&local_23,3);\n    *(undefined4 *)(param_1 + 0x50) = uVar3;\n    uVar3 = FUN_0003ca70();\n    uVar3 = FUN_000306f0("%s:\t%s %s","client",&DAT_000920ab,uVar3);\n    FUN_00068500(*(undefined4 *)(param_1 + 0xc),uVar3);\n    FUN_00031580(uVar3);\n    iVar2 = *(int *)(param_1 + 0x38);\n  }\n  if (iVar2 == 2) {\n    local_21 = 3;\n    local_23 = 0xfdff;\n    *(undefined4 *)(param_1 + 0x38) = 0;\n    uVar3 = (**(code **)(**(int **)(param_1 + 4) + 8))(*(int **)(param_1 + 4),&local_23,3);\n    *(undefined4 *)(param_1 + 0x50) = uVar3;\n    uVar3 = FUN_0003ca70();\n    uVar3 = FUN_000306f0("%s:\t%s %s","client",&DAT_000920a3,uVar3);\n    FUN_00068500(*(undefined4 *)(param_1 + 0xc),uVar3);\n    FUN_00031580(uVar3);\n  }\n  *(undefined4 *)(param_1 + 0x4c) = 1;\nLAB_0003d8d8:\n  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return;\n  }\n                    /* WARNING: Subroutine does not return */\n  FUN_00077880();\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "undefined4 uVar3;" type_identifier identifier ;) (declaration "undefined *puVar4;" type_identifier (pointer_declarator "*puVar4" * identifier) ;) (declaration "int in_GS_OFFSET;" primitive_type identifier ;) (declaration "undefined2 local_23;" type_identifier identifier ;) (declaration "undefined1 local_21;" type_identifier identifier ;) (declaration "int local_20;" primitive_type identifier ;) (declaration "undefined4 uStack_14;" type_identifier identifier ;) (expression_statement "uStack_14 = 0x3d85d;" (assignment_expression "uStack_14 = 0x3d85d" identifier = number_literal) ;) (expression_statement "iVar1 = *param_2;" (assignment_expression "iVar1 = *param_2" identifier = (pointer_expression "*param_2" * identifier)) ;) (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 "iVar2 = param_2[4];" (assignment_expression "iVar2 = param_2[4]" identifier = (subscript_expression "param_2[4]" identifier [ number_literal ])) ;) (if_statement "if (iVar1 == 0xfb) {\n    if (iVar2 == 0x1f) {\n      FUN_0003d040(param_1,*(undefined4 *)(param_1 + 0x14),*(undefined4 *)(param_1 + 0x18));\n      iVar1 = *param_2;\n      iVar2 = param_2[4];\n      if (iVar1 != 0xfb) goto joined_r0x0003d942;\n    }\n    if ((iVar2 == 0x27) || (iVar2 == 0x24)) {\n      if (iVar2 == 0x27) {\n        iVar2 = 3;\n        puVar4 = &DAT_00092744;\n      }\n      else {\n        iVar2 = 4;\n        puVar4 = &DAT_00092728;\n      }\n      iVar2 = iVar2 + 4;\n      if (*(uint *)(param_1 + 0xc + iVar2 * 4) < 2) {\n        FUN_0003d2f0();\n        iVar2 = *(int *)(puVar4 + 0x14) + 4;\n      }\n      *(undefined4 *)(param_1 + 0xc + iVar2 * 4) = 3;\n      iVar2 = param_2[4];\n      iVar1 = *param_2;\n      goto joined_r0x0003d942;\n    }\n  }\n  else {\njoined_r0x0003d942:\n    if (iVar2 == 1) {\n      if (iVar1 == 0xfd) {\n        *(undefined4 *)(param_1 + 0x44) = 0;\n      }\n    }\n    else if ((iVar1 == 0xfd) && (iVar2 == 3)) {\n      *(undefined4 *)(param_1 + 0x48) = 0;\n    }\n  }" if (parenthesized_expression "(iVar1 == 0xfb)" ( (binary_expression "iVar1 == 0xfb" identifier == number_literal) )) (compound_statement "{\n    if (iVar2 == 0x1f) {\n      FUN_0003d040(param_1,*(undefined4 *)(param_1 + 0x14),*(undefined4 *)(param_1 + 0x18));\n      iVar1 = *param_2;\n      iVar2 = param_2[4];\n      if (iVar1 != 0xfb) goto joined_r0x0003d942;\n    }\n    if ((iVar2 == 0x27) || (iVar2 == 0x24)) {\n      if (iVar2 == 0x27) {\n        iVar2 = 3;\n        puVar4 = &DAT_00092744;\n      }\n      else {\n        iVar2 = 4;\n        puVar4 = &DAT_00092728;\n      }\n      iVar2 = iVar2 + 4;\n      if (*(uint *)(param_1 + 0xc + iVar2 * 4) < 2) {\n        FUN_0003d2f0();\n        iVar2 = *(int *)(puVar4 + 0x14) + 4;\n      }\n      *(undefined4 *)(param_1 + 0xc + iVar2 * 4) = 3;\n      iVar2 = param_2[4];\n      iVar1 = *param_2;\n      goto joined_r0x0003d942;\n    }\n  }" { (if_statement "if (iVar2 == 0x1f) {\n      FUN_0003d040(param_1,*(undefined4 *)(param_1 + 0x14),*(undefined4 *)(param_1 + 0x18));\n      iVar1 = *param_2;\n      iVar2 = param_2[4];\n      if (iVar1 != 0xfb) goto joined_r0x0003d942;\n    }" if (parenthesized_expression "(iVar2 == 0x1f)" ( (binary_expression "iVar2 == 0x1f" identifier == number_literal) )) (compound_statement "{\n      FUN_0003d040(param_1,*(undefined4 *)(param_1 + 0x14),*(undefined4 *)(param_1 + 0x18));\n      iVar1 = *param_2;\n      iVar2 = param_2[4];\n      if (iVar1 != 0xfb) goto joined_r0x0003d942;\n    }" { (expression_statement "FUN_0003d040(param_1,*(undefined4 *)(param_1 + 0x14),*(undefined4 *)(param_1 + 0x18));" (call_expression "FUN_0003d040(param_1,*(undefined4 *)(param_1 + 0x14),*(undefined4 *)(param_1 + 0x18))" identifier (argument_list "(param_1,*(undefined4 *)(param_1 + 0x14),*(undefined4 *)(param_1 + 0x18))" ( identifier , (pointer_expression "*(undefined4 *)(param_1 + 0x14)" * (cast_expression "(undefined4 *)(param_1 + 0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x14)" ( (binary_expression "param_1 + 0x14" identifier + number_literal) )))) , (pointer_expression "*(undefined4 *)(param_1 + 0x18)" * (cast_expression "(undefined4 *)(param_1 + 0x18)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x18)" ( (binary_expression "param_1 + 0x18" identifier + number_literal) )))) ))) ;) (expression_statement "iVar1 = *param_2;" (assignment_expression "iVar1 = *param_2" identifier = (pointer_expression "*param_2" * identifier)) ;) (expression_statement "iVar2 = param_2[4];" (assignment_expression "iVar2 = param_2[4]" identifier = (subscript_expression "param_2[4]" identifier [ number_literal ])) ;) (if_statement "if (iVar1 != 0xfb) goto joined_r0x0003d942;" if (parenthesized_expression "(iVar1 != 0xfb)" ( (binary_expression "iVar1 != 0xfb" identifier != number_literal) )) (goto_statement "goto joined_r0x0003d942;" goto statement_identifier ;)) })) (if_statement "if ((iVar2 == 0x27) || (iVar2 == 0x24)) {\n      if (iVar2 == 0x27) {\n        iVar2 = 3;\n        puVar4 = &DAT_00092744;\n      }\n      else {\n        iVar2 = 4;\n        puVar4 = &DAT_00092728;\n      }\n      iVar2 = iVar2 + 4;\n      if (*(uint *)(param_1 + 0xc + iVar2 * 4) < 2) {\n        FUN_0003d2f0();\n        iVar2 = *(int *)(puVar4 + 0x14) + 4;\n      }\n      *(undefined4 *)(param_1 + 0xc + iVar2 * 4) = 3;\n      iVar2 = param_2[4];\n      iVar1 = *param_2;\n      goto joined_r0x0003d942;\n    }" if (parenthesized_expression "((iVar2 == 0x27) || (iVar2 == 0x24))" ( (binary_expression "(iVar2 == 0x27) || (iVar2 == 0x24)" (parenthesized_expression "(iVar2 == 0x27)" ( (binary_expression "iVar2 == 0x27" identifier == number_literal) )) || (parenthesized_expression "(iVar2 == 0x24)" ( (binary_expression "iVar2 == 0x24" identifier == number_literal) ))) )) (compound_statement "{\n      if (iVar2 == 0x27) {\n        iVar2 = 3;\n        puVar4 = &DAT_00092744;\n      }\n      else {\n        iVar2 = 4;\n        puVar4 = &DAT_00092728;\n      }\n      iVar2 = iVar2 + 4;\n      if (*(uint *)(param_1 + 0xc + iVar2 * 4) < 2) {\n        FUN_0003d2f0();\n        iVar2 = *(int *)(puVar4 + 0x14) + 4;\n      }\n      *(undefined4 *)(param_1 + 0xc + iVar2 * 4) = 3;\n      iVar2 = param_2[4];\n      iVar1 = *param_2;\n      goto joined_r0x0003d942;\n    }" { (if_statement "if (iVar2 == 0x27) {\n        iVar2 = 3;\n        puVar4 = &DAT_00092744;\n      }\n      else {\n        iVar2 = 4;\n        puVar4 = &DAT_00092728;\n      }" if (parenthesized_expression "(iVar2 == 0x27)" ( (binary_expression "iVar2 == 0x27" identifier == number_literal) )) (compound_statement "{\n        iVar2 = 3;\n        puVar4 = &DAT_00092744;\n      }" { (expression_statement "iVar2 = 3;" (assignment_expression "iVar2 = 3" identifier = number_literal) ;) (expression_statement "puVar4 = &DAT_00092744;" (assignment_expression "puVar4 = &DAT_00092744" identifier = (pointer_expression "&DAT_00092744" & identifier)) ;) }) (else_clause "else {\n        iVar2 = 4;\n        puVar4 = &DAT_00092728;\n      }" else (compound_statement "{\n        iVar2 = 4;\n        puVar4 = &DAT_00092728;\n      }" { (expression_statement "iVar2 = 4;" (assignment_expression "iVar2 = 4" identifier = number_literal) ;) (expression_statement "puVar4 = &DAT_00092728;" (assignment_expression "puVar4 = &DAT_00092728" identifier = (pointer_expression "&DAT_00092728" & identifier)) ;) }))) (expression_statement "iVar2 = iVar2 + 4;" (assignment_expression "iVar2 = iVar2 + 4" identifier = (binary_expression "iVar2 + 4" identifier + number_literal)) ;) (if_statement "if (*(uint *)(param_1 + 0xc + iVar2 * 4) < 2) {\n        FUN_0003d2f0();\n        iVar2 = *(int *)(puVar4 + 0x14) + 4;\n      }" if (parenthesized_expression "(*(uint *)(param_1 + 0xc + iVar2 * 4) < 2)" ( (binary_expression "*(uint *)(param_1 + 0xc + iVar2 * 4) < 2" (pointer_expression "*(uint *)(param_1 + 0xc + iVar2 * 4)" * (cast_expression "(uint *)(param_1 + 0xc + iVar2 * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xc + iVar2 * 4)" ( (binary_expression "param_1 + 0xc + iVar2 * 4" (binary_expression "param_1 + 0xc" identifier + number_literal) + (binary_expression "iVar2 * 4" identifier * number_literal)) )))) < number_literal) )) (compound_statement "{\n        FUN_0003d2f0();\n        iVar2 = *(int *)(puVar4 + 0x14) + 4;\n      }" { (expression_statement "FUN_0003d2f0();" (call_expression "FUN_0003d2f0()" identifier (argument_list "()" ( ))) ;) (expression_statement "iVar2 = *(int *)(puVar4 + 0x14) + 4;" (assignment_expression "iVar2 = *(int *)(puVar4 + 0x14) + 4" identifier = (binary_expression "*(int *)(puVar4 + 0x14) + 4" (pointer_expression "*(int *)(puVar4 + 0x14)" * (cast_expression "(int *)(puVar4 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar4 + 0x14)" ( (binary_expression "puVar4 + 0x14" identifier + number_literal) )))) + number_literal)) ;) })) (expression_statement "*(undefined4 *)(param_1 + 0xc + iVar2 * 4) = 3;" (assignment_expression "*(undefined4 *)(param_1 + 0xc + iVar2 * 4) = 3" (pointer_expression "*(undefined4 *)(param_1 + 0xc + iVar2 * 4)" * (cast_expression "(undefined4 *)(param_1 + 0xc + iVar2 * 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xc + iVar2 * 4)" ( (binary_expression "param_1 + 0xc + iVar2 * 4" (binary_expression "param_1 + 0xc" identifier + number_literal) + (binary_expression "iVar2 * 4" identifier * number_literal)) )))) = number_literal) ;) (expression_statement "iVar2 = param_2[4];" (assignment_expression "iVar2 = param_2[4]" identifier = (subscript_expression "param_2[4]" identifier [ number_literal ])) ;) (expression_statement "iVar1 = *param_2;" (assignment_expression "iVar1 = *param_2" identifier = (pointer_expression "*param_2" * identifier)) ;) (goto_statement "goto joined_r0x0003d942;" goto statement_identifier ;) })) }) (else_clause "else {\njoined_r0x0003d942:\n    if (iVar2 == 1) {\n      if (iVar1 == 0xfd) {\n        *(undefined4 *)(param_1 + 0x44) = 0;\n      }\n    }\n    else if ((iVar1 == 0xfd) && (iVar2 == 3)) {\n      *(undefined4 *)(param_1 + 0x48) = 0;\n    }\n  }" else (compound_statement "{\njoined_r0x0003d942:\n    if (iVar2 == 1) {\n      if (iVar1 == 0xfd) {\n        *(undefined4 *)(param_1 + 0x44) = 0;\n      }\n    }\n    else if ((iVar1 == 0xfd) && (iVar2 == 3)) {\n      *(undefined4 *)(param_1 + 0x48) = 0;\n    }\n  }" { (labeled_statement "joined_r0x0003d942:\n    if (iVar2 == 1) {\n      if (iVar1 == 0xfd) {\n        *(undefined4 *)(param_1 + 0x44) = 0;\n      }\n    }\n    else if ((iVar1 == 0xfd) && (iVar2 == 3)) {\n      *(undefined4 *)(param_1 + 0x48) = 0;\n    }" statement_identifier : (if_statement "if (iVar2 == 1) {\n      if (iVar1 == 0xfd) {\n        *(undefined4 *)(param_1 + 0x44) = 0;\n      }\n    }\n    else if ((iVar1 == 0xfd) && (iVar2 == 3)) {\n      *(undefined4 *)(param_1 + 0x48) = 0;\n    }" if (parenthesized_expression "(iVar2 == 1)" ( (binary_expression "iVar2 == 1" identifier == number_literal) )) (compound_statement "{\n      if (iVar1 == 0xfd) {\n        *(undefined4 *)(param_1 + 0x44) = 0;\n      }\n    }" { (if_statement "if (iVar1 == 0xfd) {\n        *(undefined4 *)(param_1 + 0x44) = 0;\n      }" if (parenthesized_expression "(iVar1 == 0xfd)" ( (binary_expression "iVar1 == 0xfd" identifier == number_literal) )) (compound_statement "{\n        *(undefined4 *)(param_1 + 0x44) = 0;\n      }" { (expression_statement "*(undefined4 *)(param_1 + 0x44) = 0;" (assignment_expression "*(undefined4 *)(param_1 + 0x44) = 0" (pointer_expression "*(undefined4 *)(param_1 + 0x44)" * (cast_expression "(undefined4 *)(param_1 + 0x44)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x44)" ( (binary_expression "param_1 + 0x44" identifier + number_literal) )))) = number_literal) ;) })) }) (else_clause "else if ((iVar1 == 0xfd) && (iVar2 == 3)) {\n      *(undefined4 *)(param_1 + 0x48) = 0;\n    }" else (if_statement "if ((iVar1 == 0xfd) && (iVar2 == 3)) {\n      *(undefined4 *)(param_1 + 0x48) = 0;\n    }" if (parenthesized_expression "((iVar1 == 0xfd) && (iVar2 == 3))" ( (binary_expression "(iVar1 == 0xfd) && (iVar2 == 3)" (parenthesized_expression "(iVar1 == 0xfd)" ( (binary_expression "iVar1 == 0xfd" identifier == number_literal) )) && (parenthesized_expression "(iVar2 == 3)" ( (binary_expression "iVar2 == 3" identifier == number_literal) ))) )) (compound_statement "{\n      *(undefined4 *)(param_1 + 0x48) = 0;\n    }" { (expression_statement "*(undefined4 *)(param_1 + 0x48) = 0;" (assignment_expression "*(undefined4 *)(param_1 + 0x48) = 0" (pointer_expression "*(undefined4 *)(param_1 + 0x48)" * (cast_expression "(undefined4 *)(param_1 + 0x48)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x48)" ( (binary_expression "param_1 + 0x48" identifier + number_literal) )))) = number_literal) ;) }))))) }))) (if_statement "if (*(int *)(param_1 + 0x10) != 0) {\n    FUN_0002ada0(*(int *)(param_1 + 0x10));\n  }" if (parenthesized_expression "(*(int *)(param_1 + 0x10) != 0)" ( (binary_expression "*(int *)(param_1 + 0x10) != 0" (pointer_expression "*(int *)(param_1 + 0x10)" * (cast_expression "(int *)(param_1 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x10)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n    FUN_0002ada0(*(int *)(param_1 + 0x10));\n  }" { (expression_statement "FUN_0002ada0(*(int *)(param_1 + 0x10));" (call_expression "FUN_0002ada0(*(int *)(param_1 + 0x10))" identifier (argument_list "(*(int *)(param_1 + 0x10))" ( (pointer_expression "*(int *)(param_1 + 0x10)" * (cast_expression "(int *)(param_1 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x10)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) )))) ))) ;) })) (if_statement "if (*(int *)(param_1 + 0x4c) != 0) goto LAB_0003d8d8;" if (parenthesized_expression "(*(int *)(param_1 + 0x4c) != 0)" ( (binary_expression "*(int *)(param_1 + 0x4c) != 0" (pointer_expression "*(int *)(param_1 + 0x4c)" * (cast_expression "(int *)(param_1 + 0x4c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x4c)" ( (binary_expression "param_1 + 0x4c" identifier + number_literal) )))) != number_literal) )) (goto_statement "goto LAB_0003d8d8;" goto statement_identifier ;)) (if_statement "if (*(int *)(param_1 + 0x30) == 2) {\n    local_21 = 1;\n    local_23 = 0xfdff;\n    iVar2 = **(int **)(param_1 + 4);\n    *(undefined4 *)(param_1 + 0x30) = 0;\n    uVar3 = (**(code **)(iVar2 + 8))(*(int **)(param_1 + 4),&local_23,3);\n    *(undefined4 *)(param_1 + 0x50) = uVar3;\n    uVar3 = FUN_0003ca70();\n    uVar3 = FUN_000306f0("%s:\t%s %s","client",&DAT_000920a3,uVar3);\n    FUN_00068500(*(undefined4 *)(param_1 + 0xc),uVar3);\n    FUN_00031580(uVar3);\n    if (*(int *)(param_1 + 0x34) == 2) goto LAB_0003d9e4;\nLAB_0003d8c7:\n    iVar2 = *(int *)(param_1 + 0x38);\n  }\n  else {\n    if (*(int *)(param_1 + 0x34) != 2) goto LAB_0003d8c7;\nLAB_0003d9e4:\n    local_21 = 3;\n    local_23 = 0xfbff;\n    iVar2 = **(int **)(param_1 + 4);\n    *(undefined4 *)(param_1 + 0x34) = 0;\n    uVar3 = (**(code **)(iVar2 + 8))(*(int **)(param_1 + 4),&local_23,3);\n    *(undefined4 *)(param_1 + 0x50) = uVar3;\n    uVar3 = FUN_0003ca70();\n    uVar3 = FUN_000306f0("%s:\t%s %s","client",&DAT_000920ab,uVar3);\n    FUN_00068500(*(undefined4 *)(param_1 + 0xc),uVar3);\n    FUN_00031580(uVar3);\n    iVar2 = *(int *)(param_1 + 0x38);\n  }" if (parenthesized_expression "(*(int *)(param_1 + 0x30) == 2)" ( (binary_expression "*(int *)(param_1 + 0x30) == 2" (pointer_expression "*(int *)(param_1 + 0x30)" * (cast_expression "(int *)(param_1 + 0x30)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x30)" ( (binary_expression "param_1 + 0x30" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n    local_21 = 1;\n    local_23 = 0xfdff;\n    iVar2 = **(int **)(param_1 + 4);\n    *(undefined4 *)(param_1 + 0x30) = 0;\n    uVar3 = (**(code **)(iVar2 + 8))(*(int **)(param_1 + 4),&local_23,3);\n    *(undefined4 *)(param_1 + 0x50) = uVar3;\n    uVar3 = FUN_0003ca70();\n    uVar3 = FUN_000306f0("%s:\t%s %s","client",&DAT_000920a3,uVar3);\n    FUN_00068500(*(undefined4 *)(param_1 + 0xc),uVar3);\n    FUN_00031580(uVar3);\n    if (*(int *)(param_1 + 0x34) == 2) goto LAB_0003d9e4;\nLAB_0003d8c7:\n    iVar2 = *(int *)(param_1 + 0x38);\n  }" { (expression_statement "local_21 = 1;" (assignment_expression "local_21 = 1" identifier = number_literal) ;) (expression_statement "local_23 = 0xfdff;" (assignment_expression "local_23 = 0xfdff" identifier = number_literal) ;) (expression_statement "iVar2 = **(int **)(param_1 + 4);" (assignment_expression "iVar2 = **(int **)(param_1 + 4)" identifier = (pointer_expression "**(int **)(param_1 + 4)" * (pointer_expression "*(int **)(param_1 + 4)" * (cast_expression "(int **)(param_1 + 4)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) )))))) ;) (expression_statement "*(undefined4 *)(param_1 + 0x30) = 0;" (assignment_expression "*(undefined4 *)(param_1 + 0x30) = 0" (pointer_expression "*(undefined4 *)(param_1 + 0x30)" * (cast_expression "(undefined4 *)(param_1 + 0x30)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x30)" ( (binary_expression "param_1 + 0x30" identifier + number_literal) )))) = number_literal) ;) (expression_statement "uVar3 = (**(code **)(iVar2 + 8))(*(int **)(param_1 + 4),&local_23,3);" (assignment_expression "uVar3 = (**(code **)(iVar2 + 8))(*(int **)(param_1 + 4),&local_23,3)" identifier = (call_expression "(**(code **)(iVar2 + 8))(*(int **)(param_1 + 4),&local_23,3)" (parenthesized_expression "(**(code **)(iVar2 + 8))" ( (pointer_expression "**(code **)(iVar2 + 8)" * (pointer_expression "*(code **)(iVar2 + 8)" * (cast_expression "(code **)(iVar2 + 8)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar2 + 8)" ( (binary_expression "iVar2 + 8" identifier + number_literal) ))))) )) (argument_list "(*(int **)(param_1 + 4),&local_23,3)" ( (pointer_expression "*(int **)(param_1 + 4)" * (cast_expression "(int **)(param_1 + 4)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) )))) , (pointer_expression "&local_23" & identifier) , number_literal )))) ;) (expression_statement "*(undefined4 *)(param_1 + 0x50) = uVar3;" (assignment_expression "*(undefined4 *)(param_1 + 0x50) = uVar3" (pointer_expression "*(undefined4 *)(param_1 + 0x50)" * (cast_expression "(undefined4 *)(param_1 + 0x50)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x50)" ( (binary_expression "param_1 + 0x50" identifier + number_literal) )))) = identifier) ;) (expression_statement "uVar3 = FUN_0003ca70();" (assignment_expression "uVar3 = FUN_0003ca70()" identifier = (call_expression "FUN_0003ca70()" identifier (argument_list "()" ( )))) ;) (expression_statement "uVar3 = FUN_000306f0("%s:\t%s %s","client",&DAT_000920a3,uVar3);" (assignment_expression "uVar3 = FUN_000306f0("%s:\t%s %s","client",&DAT_000920a3,uVar3)" identifier = (call_expression "FUN_000306f0("%s:\t%s %s","client",&DAT_000920a3,uVar3)" identifier (argument_list "("%s:\t%s %s","client",&DAT_000920a3,uVar3)" ( (string_literal ""%s:\t%s %s"" " string_content escape_sequence string_content ") , (string_literal ""client"" " string_content ") , (pointer_expression "&DAT_000920a3" & identifier) , identifier )))) ;) (expression_statement "FUN_00068500(*(undefined4 *)(param_1 + 0xc),uVar3);" (call_expression "FUN_00068500(*(undefined4 *)(param_1 + 0xc),uVar3)" identifier (argument_list "(*(undefined4 *)(param_1 + 0xc),uVar3)" ( (pointer_expression "*(undefined4 *)(param_1 + 0xc)" * (cast_expression "(undefined4 *)(param_1 + 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xc)" ( (binary_expression "param_1 + 0xc" identifier + number_literal) )))) , identifier ))) ;) (expression_statement "FUN_00031580(uVar3);" (call_expression "FUN_00031580(uVar3)" identifier (argument_list "(uVar3)" ( identifier ))) ;) (if_statement "if (*(int *)(param_1 + 0x34) == 2) goto LAB_0003d9e4;" if (parenthesized_expression "(*(int *)(param_1 + 0x34) == 2)" ( (binary_expression "*(int *)(param_1 + 0x34) == 2" (pointer_expression "*(int *)(param_1 + 0x34)" * (cast_expression "(int *)(param_1 + 0x34)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x34)" ( (binary_expression "param_1 + 0x34" identifier + number_literal) )))) == number_literal) )) (goto_statement "goto LAB_0003d9e4;" goto statement_identifier ;)) (labeled_statement "LAB_0003d8c7:\n    iVar2 = *(int *)(param_1 + 0x38);" statement_identifier : (expression_statement "iVar2 = *(int *)(param_1 + 0x38);" (assignment_expression "iVar2 = *(int *)(param_1 + 0x38)" identifier = (pointer_expression "*(int *)(param_1 + 0x38)" * (cast_expression "(int *)(param_1 + 0x38)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x38)" ( (binary_expression "param_1 + 0x38" identifier + number_literal) ))))) ;)) }) (else_clause "else {\n    if (*(int *)(param_1 + 0x34) != 2) goto LAB_0003d8c7;\nLAB_0003d9e4:\n    local_21 = 3;\n    local_23 = 0xfbff;\n    iVar2 = **(int **)(param_1 + 4);\n    *(undefined4 *)(param_1 + 0x34) = 0;\n    uVar3 = (**(code **)(iVar2 + 8))(*(int **)(param_1 + 4),&local_23,3);\n    *(undefined4 *)(param_1 + 0x50) = uVar3;\n    uVar3 = FUN_0003ca70();\n    uVar3 = FUN_000306f0("%s:\t%s %s","client",&DAT_000920ab,uVar3);\n    FUN_00068500(*(undefined4 *)(param_1 + 0xc),uVar3);\n    FUN_00031580(uVar3);\n    iVar2 = *(int *)(param_1 + 0x38);\n  }" else (compound_statement "{\n    if (*(int *)(param_1 + 0x34) != 2) goto LAB_0003d8c7;\nLAB_0003d9e4:\n    local_21 = 3;\n    local_23 = 0xfbff;\n    iVar2 = **(int **)(param_1 + 4);\n    *(undefined4 *)(param_1 + 0x34) = 0;\n    uVar3 = (**(code **)(iVar2 + 8))(*(int **)(param_1 + 4),&local_23,3);\n    *(undefined4 *)(param_1 + 0x50) = uVar3;\n    uVar3 = FUN_0003ca70();\n    uVar3 = FUN_000306f0("%s:\t%s %s","client",&DAT_000920ab,uVar3);\n    FUN_00068500(*(undefined4 *)(param_1 + 0xc),uVar3);\n    FUN_00031580(uVar3);\n    iVar2 = *(int *)(param_1 + 0x38);\n  }" { (if_statement "if (*(int *)(param_1 + 0x34) != 2) goto LAB_0003d8c7;" if (parenthesized_expression "(*(int *)(param_1 + 0x34) != 2)" ( (binary_expression "*(int *)(param_1 + 0x34) != 2" (pointer_expression "*(int *)(param_1 + 0x34)" * (cast_expression "(int *)(param_1 + 0x34)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x34)" ( (binary_expression "param_1 + 0x34" identifier + number_literal) )))) != number_literal) )) (goto_statement "goto LAB_0003d8c7;" goto statement_identifier ;)) (labeled_statement "LAB_0003d9e4:\n    local_21 = 3;" statement_identifier : (expression_statement "local_21 = 3;" (assignment_expression "local_21 = 3" identifier = number_literal) ;)) (expression_statement "local_23 = 0xfbff;" (assignment_expression "local_23 = 0xfbff" identifier = number_literal) ;) (expression_statement "iVar2 = **(int **)(param_1 + 4);" (assignment_expression "iVar2 = **(int **)(param_1 + 4)" identifier = (pointer_expression "**(int **)(param_1 + 4)" * (pointer_expression "*(int **)(param_1 + 4)" * (cast_expression "(int **)(param_1 + 4)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) )))))) ;) (expression_statement "*(undefined4 *)(param_1 + 0x34) = 0;" (assignment_expression "*(undefined4 *)(param_1 + 0x34) = 0" (pointer_expression "*(undefined4 *)(param_1 + 0x34)" * (cast_expression "(undefined4 *)(param_1 + 0x34)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x34)" ( (binary_expression "param_1 + 0x34" identifier + number_literal) )))) = number_literal) ;) (expression_statement "uVar3 = (**(code **)(iVar2 + 8))(*(int **)(param_1 + 4),&local_23,3);" (assignment_expression "uVar3 = (**(code **)(iVar2 + 8))(*(int **)(param_1 + 4),&local_23,3)" identifier = (call_expression "(**(code **)(iVar2 + 8))(*(int **)(param_1 + 4),&local_23,3)" (parenthesized_expression "(**(code **)(iVar2 + 8))" ( (pointer_expression "**(code **)(iVar2 + 8)" * (pointer_expression "*(code **)(iVar2 + 8)" * (cast_expression "(code **)(iVar2 + 8)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar2 + 8)" ( (binary_expression "iVar2 + 8" identifier + number_literal) ))))) )) (argument_list "(*(int **)(param_1 + 4),&local_23,3)" ( (pointer_expression "*(int **)(param_1 + 4)" * (cast_expression "(int **)(param_1 + 4)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) )))) , (pointer_expression "&local_23" & identifier) , number_literal )))) ;) (expression_statement "*(undefined4 *)(param_1 + 0x50) = uVar3;" (assignment_expression "*(undefined4 *)(param_1 + 0x50) = uVar3" (pointer_expression "*(undefined4 *)(param_1 + 0x50)" * (cast_expression "(undefined4 *)(param_1 + 0x50)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x50)" ( (binary_expression "param_1 + 0x50" identifier + number_literal) )))) = identifier) ;) (expression_statement "uVar3 = FUN_0003ca70();" (assignment_expression "uVar3 = FUN_0003ca70()" identifier = (call_expression "FUN_0003ca70()" identifier (argument_list "()" ( )))) ;) (expression_statement "uVar3 = FUN_000306f0("%s:\t%s %s","client",&DAT_000920ab,uVar3);" (assignment_expression "uVar3 = FUN_000306f0("%s:\t%s %s","client",&DAT_000920ab,uVar3)" identifier = (call_expression "FUN_000306f0("%s:\t%s %s","client",&DAT_000920ab,uVar3)" identifier (argument_list "("%s:\t%s %s","client",&DAT_000920ab,uVar3)" ( (string_literal ""%s:\t%s %s"" " string_content escape_sequence string_content ") , (string_literal ""client"" " string_content ") , (pointer_expression "&DAT_000920ab" & identifier) , identifier )))) ;) (expression_statement "FUN_00068500(*(undefined4 *)(param_1 + 0xc),uVar3);" (call_expression "FUN_00068500(*(undefined4 *)(param_1 + 0xc),uVar3)" identifier (argument_list "(*(undefined4 *)(param_1 + 0xc),uVar3)" ( (pointer_expression "*(undefined4 *)(param_1 + 0xc)" * (cast_expression "(undefined4 *)(param_1 + 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xc)" ( (binary_expression "param_1 + 0xc" identifier + number_literal) )))) , identifier ))) ;) (expression_statement "FUN_00031580(uVar3);" (call_expression "FUN_00031580(uVar3)" identifier (argument_list "(uVar3)" ( identifier ))) ;) (expression_statement "iVar2 = *(int *)(param_1 + 0x38);" (assignment_expression "iVar2 = *(int *)(param_1 + 0x38)" identifier = (pointer_expression "*(int *)(param_1 + 0x38)" * (cast_expression "(int *)(param_1 + 0x38)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x38)" ( (binary_expression "param_1 + 0x38" identifier + number_literal) ))))) ;) }))) (if_statement "if (iVar2 == 2) {\n    local_21 = 3;\n    local_23 = 0xfdff;\n    *(undefined4 *)(param_1 + 0x38) = 0;\n    uVar3 = (**(code **)(**(int **)(param_1 + 4) + 8))(*(int **)(param_1 + 4),&local_23,3);\n    *(undefined4 *)(param_1 + 0x50) = uVar3;\n    uVar3 = FUN_0003ca70();\n    uVar3 = FUN_000306f0("%s:\t%s %s","client",&DAT_000920a3,uVar3);\n    FUN_00068500(*(undefined4 *)(param_1 + 0xc),uVar3);\n    FUN_00031580(uVar3);\n  }" if (parenthesized_expression "(iVar2 == 2)" ( (binary_expression "iVar2 == 2" identifier == number_literal) )) (compound_statement "{\n    local_21 = 3;\n    local_23 = 0xfdff;\n    *(undefined4 *)(param_1 + 0x38) = 0;\n    uVar3 = (**(code **)(**(int **)(param_1 + 4) + 8))(*(int **)(param_1 + 4),&local_23,3);\n    *(undefined4 *)(param_1 + 0x50) = uVar3;\n    uVar3 = FUN_0003ca70();\n    uVar3 = FUN_000306f0("%s:\t%s %s","client",&DAT_000920a3,uVar3);\n    FUN_00068500(*(undefined4 *)(param_1 + 0xc),uVar3);\n    FUN_00031580(uVar3);\n  }" { (expression_statement "local_21 = 3;" (assignment_expression "local_21 = 3" identifier = number_literal) ;) (expression_statement "local_23 = 0xfdff;" (assignment_expression "local_23 = 0xfdff" identifier = number_literal) ;) (expression_statement "*(undefined4 *)(param_1 + 0x38) = 0;" (assignment_expression "*(undefined4 *)(param_1 + 0x38) = 0" (pointer_expression "*(undefined4 *)(param_1 + 0x38)" * (cast_expression "(undefined4 *)(param_1 + 0x38)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x38)" ( (binary_expression "param_1 + 0x38" identifier + number_literal) )))) = number_literal) ;) (expression_statement "uVar3 = (**(code **)(**(int **)(param_1 + 4) + 8))(*(int **)(param_1 + 4),&local_23,3);" (assignment_expression "uVar3 = (**(code **)(**(int **)(param_1 + 4) + 8))(*(int **)(param_1 + 4),&local_23,3)" identifier = (call_expression "(**(code **)(**(int **)(param_1 + 4) + 8))(*(int **)(param_1 + 4),&local_23,3)" (parenthesized_expression "(**(code **)(**(int **)(param_1 + 4) + 8))" ( (pointer_expression "**(code **)(**(int **)(param_1 + 4) + 8)" * (pointer_expression "*(code **)(**(int **)(param_1 + 4) + 8)" * (cast_expression "(code **)(**(int **)(param_1 + 4) + 8)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(**(int **)(param_1 + 4) + 8)" ( (binary_expression "**(int **)(param_1 + 4) + 8" (pointer_expression "**(int **)(param_1 + 4)" * (pointer_expression "*(int **)(param_1 + 4)" * (cast_expression "(int **)(param_1 + 4)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) ))))) + number_literal) ))))) )) (argument_list "(*(int **)(param_1 + 4),&local_23,3)" ( (pointer_expression "*(int **)(param_1 + 4)" * (cast_expression "(int **)(param_1 + 4)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) )))) , (pointer_expression "&local_23" & identifier) , number_literal )))) ;) (expression_statement "*(undefined4 *)(param_1 + 0x50) = uVar3;" (assignment_expression "*(undefined4 *)(param_1 + 0x50) = uVar3" (pointer_expression "*(undefined4 *)(param_1 + 0x50)" * (cast_expression "(undefined4 *)(param_1 + 0x50)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x50)" ( (binary_expression "param_1 + 0x50" identifier + number_literal) )))) = identifier) ;) (expression_statement "uVar3 = FUN_0003ca70();" (assignment_expression "uVar3 = FUN_0003ca70()" identifier = (call_expression "FUN_0003ca70()" identifier (argument_list "()" ( )))) ;) (expression_statement "uVar3 = FUN_000306f0("%s:\t%s %s","client",&DAT_000920a3,uVar3);" (assignment_expression "uVar3 = FUN_000306f0("%s:\t%s %s","client",&DAT_000920a3,uVar3)" identifier = (call_expression "FUN_000306f0("%s:\t%s %s","client",&DAT_000920a3,uVar3)" identifier (argument_list "("%s:\t%s %s","client",&DAT_000920a3,uVar3)" ( (string_literal ""%s:\t%s %s"" " string_content escape_sequence string_content ") , (string_literal ""client"" " string_content ") , (pointer_expression "&DAT_000920a3" & identifier) , identifier )))) ;) (expression_statement "FUN_00068500(*(undefined4 *)(param_1 + 0xc),uVar3);" (call_expression "FUN_00068500(*(undefined4 *)(param_1 + 0xc),uVar3)" identifier (argument_list "(*(undefined4 *)(param_1 + 0xc),uVar3)" ( (pointer_expression "*(undefined4 *)(param_1 + 0xc)" * (cast_expression "(undefined4 *)(param_1 + 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xc)" ( (binary_expression "param_1 + 0xc" identifier + number_literal) )))) , identifier ))) ;) (expression_statement "FUN_00031580(uVar3);" (call_expression "FUN_00031580(uVar3)" identifier (argument_list "(uVar3)" ( identifier ))) ;) })) (expression_statement "*(undefined4 *)(param_1 + 0x4c) = 1;" (assignment_expression "*(undefined4 *)(param_1 + 0x4c) = 1" (pointer_expression "*(undefined4 *)(param_1 + 0x4c)" * (cast_expression "(undefined4 *)(param_1 + 0x4c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x4c)" ( (binary_expression "param_1 + 0x4c" identifier + number_literal) )))) = number_literal) ;) (labeled_statement "LAB_0003d8d8:\n  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return;\n  }" statement_identifier : (if_statement "if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return;\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    return;\n  }" { (return_statement "return;" return ;) }))) comment (expression_statement "FUN_00077880();" (call_expression "FUN_00077880()" identifier (argument_list "()" ( ))) ;) })))
(translation_unit "/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n/* WARNING: Enum "anon_enum_32": Some values do not have unique names */\n\nvoid __regparm3 activate_option(Telnet telnet,Opt *o)\n\n{\n  int iVar1;\n  socket_function_table *psVar2;\n  Socket ppsVar3;\n  int iVar4;\n  char *pcVar5;\n  int iVar6;\n  Opt *pOVar7;\n  int in_GS_OFFSET;\n  uchar b [3];\n  \n  iVar6 = o->send;\n  iVar1 = *(int *)(in_GS_OFFSET + 0x14);\n  iVar4 = o->option;\n  if (iVar6 == 0xfb) {\n    if (iVar4 == 0x1f) {\n      telnet_size(telnet,telnet->term_width,telnet->term_height);\n      iVar6 = o->send;\n      iVar4 = o->option;\n      if (iVar6 != 0xfb) goto joined_r0x0003d942;\n    }\n    if ((iVar4 == 0x27) || (iVar4 == 0x24)) {\n      if (iVar4 == 0x27) {\n        iVar6 = 0x24;\n        iVar4 = 3;\n        pOVar7 = &o_oenv;\n      }\n      else {\n        iVar6 = 0x27;\n        iVar4 = 4;\n        pOVar7 = &o_nenv;\n      }\n      if ((uint)telnet->opt_states[iVar4] < 2) {\n        send_opt(telnet,0xfc,iVar6);\n        iVar4 = pOVar7->index;\n      }\n      telnet->opt_states[iVar4] = 3;\n      iVar4 = o->option;\n      iVar6 = o->send;\n      goto joined_r0x0003d942;\n    }\n  }\n  else {\njoined_r0x0003d942:\n    if (iVar4 == 1) {\n      if (iVar6 == 0xfd) {\n        telnet->echoing = 0;\n      }\n    }\n    else if ((iVar6 == 0xfd) && (iVar4 == 3)) {\n      telnet->editing = 0;\n    }\n  }\n  if (telnet->ldisc != (void *)0x0) {\n    ldisc_echoedit_update(telnet->ldisc);\n  }\n  if (telnet->activated != 0) goto LAB_0003d8d8;\n  if (telnet->opt_states[5] == 2) {\n    ppsVar3 = telnet->s;\n    b[2] = '\x01';\n    b[0] = 0xff;\n    b[1] = 0xfd;\n    psVar2 = *ppsVar3;\n    telnet->opt_states[5] = 0;\n    iVar4 = (*psVar2->write)(ppsVar3,(char *)b,3);\n    telnet->bufsize = iVar4;\n    pcVar5 = telopt(1);\n    pcVar5 = dupprintf("%s:\t%s %s","client",&DAT_000920a3,pcVar5);\n    logevent(telnet->frontend,pcVar5);\n    safefree(pcVar5);\n    if (telnet->opt_states[6] == 2) goto LAB_0003d9e4;\nLAB_0003d8c7:\n    iVar4 = telnet->opt_states[7];\n  }\n  else {\n    if (telnet->opt_states[6] != 2) goto LAB_0003d8c7;\nLAB_0003d9e4:\n    ppsVar3 = telnet->s;\n    b[2] = '\x03';\n    b[0] = 0xff;\n    b[1] = 0xfb;\n    psVar2 = *ppsVar3;\n    telnet->opt_states[6] = 0;\n    iVar4 = (*psVar2->write)(ppsVar3,(char *)b,3);\n    telnet->bufsize = iVar4;\n    pcVar5 = telopt(3);\n    pcVar5 = dupprintf("%s:\t%s %s","client",&DAT_000920ab,pcVar5);\n    logevent(telnet->frontend,pcVar5);\n    safefree(pcVar5);\n    iVar4 = telnet->opt_states[7];\n  }\n  if (iVar4 == 2) {\n    b[2] = '\x03';\n    b[0] = 0xff;\n    b[1] = 0xfd;\n    ppsVar3 = telnet->s;\n    telnet->opt_states[7] = 0;\n    iVar4 = (*(*ppsVar3)->write)(ppsVar3,(char *)b,3);\n    telnet->bufsize = iVar4;\n    pcVar5 = telopt(3);\n    pcVar5 = dupprintf("%s:\t%s %s","client",&DAT_000920a3,pcVar5);\n    logevent(telnet->frontend,pcVar5);\n    safefree(pcVar5);\n  }\n  telnet->activated = 1;\nLAB_0003d8d8:\n  if (iVar1 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return;\n  }\n                    /* WARNING: Subroutine does not return */\n  __stack_chk_fail_local();\n}\n\n" comment comment (function_definition "void __regparm3 activate_option(Telnet telnet,Opt *o)\n\n{\n  int iVar1;\n  socket_function_table *psVar2;\n  Socket ppsVar3;\n  int iVar4;\n  char *pcVar5;\n  int iVar6;\n  Opt *pOVar7;\n  int in_GS_OFFSET;\n  uchar b [3];\n  \n  iVar6 = o->send;\n  iVar1 = *(int *)(in_GS_OFFSET + 0x14);\n  iVar4 = o->option;\n  if (iVar6 == 0xfb) {\n    if (iVar4 == 0x1f) {\n      telnet_size(telnet,telnet->term_width,telnet->term_height);\n      iVar6 = o->send;\n      iVar4 = o->option;\n      if (iVar6 != 0xfb) goto joined_r0x0003d942;\n    }\n    if ((iVar4 == 0x27) || (iVar4 == 0x24)) {\n      if (iVar4 == 0x27) {\n        iVar6 = 0x24;\n        iVar4 = 3;\n        pOVar7 = &o_oenv;\n      }\n      else {\n        iVar6 = 0x27;\n        iVar4 = 4;\n        pOVar7 = &o_nenv;\n      }\n      if ((uint)telnet->opt_states[iVar4] < 2) {\n        send_opt(telnet,0xfc,iVar6);\n        iVar4 = pOVar7->index;\n      }\n      telnet->opt_states[iVar4] = 3;\n      iVar4 = o->option;\n      iVar6 = o->send;\n      goto joined_r0x0003d942;\n    }\n  }\n  else {\njoined_r0x0003d942:\n    if (iVar4 == 1) {\n      if (iVar6 == 0xfd) {\n        telnet->echoing = 0;\n      }\n    }\n    else if ((iVar6 == 0xfd) && (iVar4 == 3)) {\n      telnet->editing = 0;\n    }\n  }\n  if (telnet->ldisc != (void *)0x0) {\n    ldisc_echoedit_update(telnet->ldisc);\n  }\n  if (telnet->activated != 0) goto LAB_0003d8d8;\n  if (telnet->opt_states[5] == 2) {\n    ppsVar3 = telnet->s;\n    b[2] = '\x01';\n    b[0] = 0xff;\n    b[1] = 0xfd;\n    psVar2 = *ppsVar3;\n    telnet->opt_states[5] = 0;\n    iVar4 = (*psVar2->write)(ppsVar3,(char *)b,3);\n    telnet->bufsize = iVar4;\n    pcVar5 = telopt(1);\n    pcVar5 = dupprintf("%s:\t%s %s","client",&DAT_000920a3,pcVar5);\n    logevent(telnet->frontend,pcVar5);\n    safefree(pcVar5);\n    if (telnet->opt_states[6] == 2) goto LAB_0003d9e4;\nLAB_0003d8c7:\n    iVar4 = telnet->opt_states[7];\n  }\n  else {\n    if (telnet->opt_states[6] != 2) goto LAB_0003d8c7;\nLAB_0003d9e4:\n    ppsVar3 = telnet->s;\n    b[2] = '\x03';\n    b[0] = 0xff;\n    b[1] = 0xfb;\n    psVar2 = *ppsVar3;\n    telnet->opt_states[6] = 0;\n    iVar4 = (*psVar2->write)(ppsVar3,(char *)b,3);\n    telnet->bufsize = iVar4;\n    pcVar5 = telopt(3);\n    pcVar5 = dupprintf("%s:\t%s %s","client",&DAT_000920ab,pcVar5);\n    logevent(telnet->frontend,pcVar5);\n    safefree(pcVar5);\n    iVar4 = telnet->opt_states[7];\n  }\n  if (iVar4 == 2) {\n    b[2] = '\x03';\n    b[0] = 0xff;\n    b[1] = 0xfd;\n    ppsVar3 = telnet->s;\n    telnet->opt_states[7] = 0;\n    iVar4 = (*(*ppsVar3)->write)(ppsVar3,(char *)b,3);\n    telnet->bufsize = iVar4;\n    pcVar5 = telopt(3);\n    pcVar5 = dupprintf("%s:\t%s %s","client",&DAT_000920a3,pcVar5);\n    logevent(telnet->frontend,pcVar5);\n    safefree(pcVar5);\n  }\n  telnet->activated = 1;\nLAB_0003d8d8:\n  if (iVar1 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return;\n  }\n                    /* WARNING: Subroutine does not return */\n  __stack_chk_fail_local();\n}" primitive_type (ERROR "__regparm3" identifier) (function_declarator "activate_option(Telnet telnet,Opt *o)" identifier (parameter_list "(Telnet telnet,Opt *o)" ( (parameter_declaration "Telnet telnet" type_identifier identifier) , (parameter_declaration "Opt *o" type_identifier (pointer_declarator "*o" * identifier)) ))) (compound_statement "{\n  int iVar1;\n  socket_function_table *psVar2;\n  Socket ppsVar3;\n  int iVar4;\n  char *pcVar5;\n  int iVar6;\n  Opt *pOVar7;\n  int in_GS_OFFSET;\n  uchar b [3];\n  \n  iVar6 = o->send;\n  iVar1 = *(int *)(in_GS_OFFSET + 0x14);\n  iVar4 = o->option;\n  if (iVar6 == 0xfb) {\n    if (iVar4 == 0x1f) {\n      telnet_size(telnet,telnet->term_width,telnet->term_height);\n      iVar6 = o->send;\n      iVar4 = o->option;\n      if (iVar6 != 0xfb) goto joined_r0x0003d942;\n    }\n    if ((iVar4 == 0x27) || (iVar4 == 0x24)) {\n      if (iVar4 == 0x27) {\n        iVar6 = 0x24;\n        iVar4 = 3;\n        pOVar7 = &o_oenv;\n      }\n      else {\n        iVar6 = 0x27;\n        iVar4 = 4;\n        pOVar7 = &o_nenv;\n      }\n      if ((uint)telnet->opt_states[iVar4] < 2) {\n        send_opt(telnet,0xfc,iVar6);\n        iVar4 = pOVar7->index;\n      }\n      telnet->opt_states[iVar4] = 3;\n      iVar4 = o->option;\n      iVar6 = o->send;\n      goto joined_r0x0003d942;\n    }\n  }\n  else {\njoined_r0x0003d942:\n    if (iVar4 == 1) {\n      if (iVar6 == 0xfd) {\n        telnet->echoing = 0;\n      }\n    }\n    else if ((iVar6 == 0xfd) && (iVar4 == 3)) {\n      telnet->editing = 0;\n    }\n  }\n  if (telnet->ldisc != (void *)0x0) {\n    ldisc_echoedit_update(telnet->ldisc);\n  }\n  if (telnet->activated != 0) goto LAB_0003d8d8;\n  if (telnet->opt_states[5] == 2) {\n    ppsVar3 = telnet->s;\n    b[2] = '\x01';\n    b[0] = 0xff;\n    b[1] = 0xfd;\n    psVar2 = *ppsVar3;\n    telnet->opt_states[5] = 0;\n    iVar4 = (*psVar2->write)(ppsVar3,(char *)b,3);\n    telnet->bufsize = iVar4;\n    pcVar5 = telopt(1);\n    pcVar5 = dupprintf("%s:\t%s %s","client",&DAT_000920a3,pcVar5);\n    logevent(telnet->frontend,pcVar5);\n    safefree(pcVar5);\n    if (telnet->opt_states[6] == 2) goto LAB_0003d9e4;\nLAB_0003d8c7:\n    iVar4 = telnet->opt_states[7];\n  }\n  else {\n    if (telnet->opt_states[6] != 2) goto LAB_0003d8c7;\nLAB_0003d9e4:\n    ppsVar3 = telnet->s;\n    b[2] = '\x03';\n    b[0] = 0xff;\n    b[1] = 0xfb;\n    psVar2 = *ppsVar3;\n    telnet->opt_states[6] = 0;\n    iVar4 = (*psVar2->write)(ppsVar3,(char *)b,3);\n    telnet->bufsize = iVar4;\n    pcVar5 = telopt(3);\n    pcVar5 = dupprintf("%s:\t%s %s","client",&DAT_000920ab,pcVar5);\n    logevent(telnet->frontend,pcVar5);\n    safefree(pcVar5);\n    iVar4 = telnet->opt_states[7];\n  }\n  if (iVar4 == 2) {\n    b[2] = '\x03';\n    b[0] = 0xff;\n    b[1] = 0xfd;\n    ppsVar3 = telnet->s;\n    telnet->opt_states[7] = 0;\n    iVar4 = (*(*ppsVar3)->write)(ppsVar3,(char *)b,3);\n    telnet->bufsize = iVar4;\n    pcVar5 = telopt(3);\n    pcVar5 = dupprintf("%s:\t%s %s","client",&DAT_000920a3,pcVar5);\n    logevent(telnet->frontend,pcVar5);\n    safefree(pcVar5);\n  }\n  telnet->activated = 1;\nLAB_0003d8d8:\n  if (iVar1 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return;\n  }\n                    /* WARNING: Subroutine does not return */\n  __stack_chk_fail_local();\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "socket_function_table *psVar2;" type_identifier (pointer_declarator "*psVar2" * identifier) ;) (declaration "Socket ppsVar3;" type_identifier identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "char *pcVar5;" primitive_type (pointer_declarator "*pcVar5" * identifier) ;) (declaration "int iVar6;" primitive_type identifier ;) (declaration "Opt *pOVar7;" type_identifier (pointer_declarator "*pOVar7" * identifier) ;) (declaration "int in_GS_OFFSET;" primitive_type identifier ;) (declaration "uchar b [3];" type_identifier (array_declarator "b [3]" identifier [ number_literal ]) ;) (expression_statement "iVar6 = o->send;" (assignment_expression "iVar6 = o->send" identifier = (field_expression "o->send" identifier -> field_identifier)) ;) (expression_statement "iVar1 = *(int *)(in_GS_OFFSET + 0x14);" (assignment_expression "iVar1 = *(int *)(in_GS_OFFSET + 0x14)" identifier = (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) ;) (expression_statement "iVar4 = o->option;" (assignment_expression "iVar4 = o->option" identifier = (field_expression "o->option" identifier -> field_identifier)) ;) (if_statement "if (iVar6 == 0xfb) {\n    if (iVar4 == 0x1f) {\n      telnet_size(telnet,telnet->term_width,telnet->term_height);\n      iVar6 = o->send;\n      iVar4 = o->option;\n      if (iVar6 != 0xfb) goto joined_r0x0003d942;\n    }\n    if ((iVar4 == 0x27) || (iVar4 == 0x24)) {\n      if (iVar4 == 0x27) {\n        iVar6 = 0x24;\n        iVar4 = 3;\n        pOVar7 = &o_oenv;\n      }\n      else {\n        iVar6 = 0x27;\n        iVar4 = 4;\n        pOVar7 = &o_nenv;\n      }\n      if ((uint)telnet->opt_states[iVar4] < 2) {\n        send_opt(telnet,0xfc,iVar6);\n        iVar4 = pOVar7->index;\n      }\n      telnet->opt_states[iVar4] = 3;\n      iVar4 = o->option;\n      iVar6 = o->send;\n      goto joined_r0x0003d942;\n    }\n  }\n  else {\njoined_r0x0003d942:\n    if (iVar4 == 1) {\n      if (iVar6 == 0xfd) {\n        telnet->echoing = 0;\n      }\n    }\n    else if ((iVar6 == 0xfd) && (iVar4 == 3)) {\n      telnet->editing = 0;\n    }\n  }" if (parenthesized_expression "(iVar6 == 0xfb)" ( (binary_expression "iVar6 == 0xfb" identifier == number_literal) )) (compound_statement "{\n    if (iVar4 == 0x1f) {\n      telnet_size(telnet,telnet->term_width,telnet->term_height);\n      iVar6 = o->send;\n      iVar4 = o->option;\n      if (iVar6 != 0xfb) goto joined_r0x0003d942;\n    }\n    if ((iVar4 == 0x27) || (iVar4 == 0x24)) {\n      if (iVar4 == 0x27) {\n        iVar6 = 0x24;\n        iVar4 = 3;\n        pOVar7 = &o_oenv;\n      }\n      else {\n        iVar6 = 0x27;\n        iVar4 = 4;\n        pOVar7 = &o_nenv;\n      }\n      if ((uint)telnet->opt_states[iVar4] < 2) {\n        send_opt(telnet,0xfc,iVar6);\n        iVar4 = pOVar7->index;\n      }\n      telnet->opt_states[iVar4] = 3;\n      iVar4 = o->option;\n      iVar6 = o->send;\n      goto joined_r0x0003d942;\n    }\n  }" { (if_statement "if (iVar4 == 0x1f) {\n      telnet_size(telnet,telnet->term_width,telnet->term_height);\n      iVar6 = o->send;\n      iVar4 = o->option;\n      if (iVar6 != 0xfb) goto joined_r0x0003d942;\n    }" if (parenthesized_expression "(iVar4 == 0x1f)" ( (binary_expression "iVar4 == 0x1f" identifier == number_literal) )) (compound_statement "{\n      telnet_size(telnet,telnet->term_width,telnet->term_height);\n      iVar6 = o->send;\n      iVar4 = o->option;\n      if (iVar6 != 0xfb) goto joined_r0x0003d942;\n    }" { (expression_statement "telnet_size(telnet,telnet->term_width,telnet->term_height);" (call_expression "telnet_size(telnet,telnet->term_width,telnet->term_height)" identifier (argument_list "(telnet,telnet->term_width,telnet->term_height)" ( identifier , (field_expression "telnet->term_width" identifier -> field_identifier) , (field_expression "telnet->term_height" identifier -> field_identifier) ))) ;) (expression_statement "iVar6 = o->send;" (assignment_expression "iVar6 = o->send" identifier = (field_expression "o->send" identifier -> field_identifier)) ;) (expression_statement "iVar4 = o->option;" (assignment_expression "iVar4 = o->option" identifier = (field_expression "o->option" identifier -> field_identifier)) ;) (if_statement "if (iVar6 != 0xfb) goto joined_r0x0003d942;" if (parenthesized_expression "(iVar6 != 0xfb)" ( (binary_expression "iVar6 != 0xfb" identifier != number_literal) )) (goto_statement "goto joined_r0x0003d942;" goto statement_identifier ;)) })) (if_statement "if ((iVar4 == 0x27) || (iVar4 == 0x24)) {\n      if (iVar4 == 0x27) {\n        iVar6 = 0x24;\n        iVar4 = 3;\n        pOVar7 = &o_oenv;\n      }\n      else {\n        iVar6 = 0x27;\n        iVar4 = 4;\n        pOVar7 = &o_nenv;\n      }\n      if ((uint)telnet->opt_states[iVar4] < 2) {\n        send_opt(telnet,0xfc,iVar6);\n        iVar4 = pOVar7->index;\n      }\n      telnet->opt_states[iVar4] = 3;\n      iVar4 = o->option;\n      iVar6 = o->send;\n      goto joined_r0x0003d942;\n    }" if (parenthesized_expression "((iVar4 == 0x27) || (iVar4 == 0x24))" ( (binary_expression "(iVar4 == 0x27) || (iVar4 == 0x24)" (parenthesized_expression "(iVar4 == 0x27)" ( (binary_expression "iVar4 == 0x27" identifier == number_literal) )) || (parenthesized_expression "(iVar4 == 0x24)" ( (binary_expression "iVar4 == 0x24" identifier == number_literal) ))) )) (compound_statement "{\n      if (iVar4 == 0x27) {\n        iVar6 = 0x24;\n        iVar4 = 3;\n        pOVar7 = &o_oenv;\n      }\n      else {\n        iVar6 = 0x27;\n        iVar4 = 4;\n        pOVar7 = &o_nenv;\n      }\n      if ((uint)telnet->opt_states[iVar4] < 2) {\n        send_opt(telnet,0xfc,iVar6);\n        iVar4 = pOVar7->index;\n      }\n      telnet->opt_states[iVar4] = 3;\n      iVar4 = o->option;\n      iVar6 = o->send;\n      goto joined_r0x0003d942;\n    }" { (if_statement "if (iVar4 == 0x27) {\n        iVar6 = 0x24;\n        iVar4 = 3;\n        pOVar7 = &o_oenv;\n      }\n      else {\n        iVar6 = 0x27;\n        iVar4 = 4;\n        pOVar7 = &o_nenv;\n      }" if (parenthesized_expression "(iVar4 == 0x27)" ( (binary_expression "iVar4 == 0x27" identifier == number_literal) )) (compound_statement "{\n        iVar6 = 0x24;\n        iVar4 = 3;\n        pOVar7 = &o_oenv;\n      }" { (expression_statement "iVar6 = 0x24;" (assignment_expression "iVar6 = 0x24" identifier = number_literal) ;) (expression_statement "iVar4 = 3;" (assignment_expression "iVar4 = 3" identifier = number_literal) ;) (expression_statement "pOVar7 = &o_oenv;" (assignment_expression "pOVar7 = &o_oenv" identifier = (pointer_expression "&o_oenv" & identifier)) ;) }) (else_clause "else {\n        iVar6 = 0x27;\n        iVar4 = 4;\n        pOVar7 = &o_nenv;\n      }" else (compound_statement "{\n        iVar6 = 0x27;\n        iVar4 = 4;\n        pOVar7 = &o_nenv;\n      }" { (expression_statement "iVar6 = 0x27;" (assignment_expression "iVar6 = 0x27" identifier = number_literal) ;) (expression_statement "iVar4 = 4;" (assignment_expression "iVar4 = 4" identifier = number_literal) ;) (expression_statement "pOVar7 = &o_nenv;" (assignment_expression "pOVar7 = &o_nenv" identifier = (pointer_expression "&o_nenv" & identifier)) ;) }))) (if_statement "if ((uint)telnet->opt_states[iVar4] < 2) {\n        send_opt(telnet,0xfc,iVar6);\n        iVar4 = pOVar7->index;\n      }" if (parenthesized_expression "((uint)telnet->opt_states[iVar4] < 2)" ( (binary_expression "(uint)telnet->opt_states[iVar4] < 2" (cast_expression "(uint)telnet->opt_states[iVar4]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "telnet->opt_states[iVar4]" (field_expression "telnet->opt_states" identifier -> field_identifier) [ identifier ])) < number_literal) )) (compound_statement "{\n        send_opt(telnet,0xfc,iVar6);\n        iVar4 = pOVar7->index;\n      }" { (expression_statement "send_opt(telnet,0xfc,iVar6);" (call_expression "send_opt(telnet,0xfc,iVar6)" identifier (argument_list "(telnet,0xfc,iVar6)" ( identifier , number_literal , identifier ))) ;) (expression_statement "iVar4 = pOVar7->index;" (assignment_expression "iVar4 = pOVar7->index" identifier = (field_expression "pOVar7->index" identifier -> field_identifier)) ;) })) (expression_statement "telnet->opt_states[iVar4] = 3;" (assignment_expression "telnet->opt_states[iVar4] = 3" (subscript_expression "telnet->opt_states[iVar4]" (field_expression "telnet->opt_states" identifier -> field_identifier) [ identifier ]) = number_literal) ;) (expression_statement "iVar4 = o->option;" (assignment_expression "iVar4 = o->option" identifier = (field_expression "o->option" identifier -> field_identifier)) ;) (expression_statement "iVar6 = o->send;" (assignment_expression "iVar6 = o->send" identifier = (field_expression "o->send" identifier -> field_identifier)) ;) (goto_statement "goto joined_r0x0003d942;" goto statement_identifier ;) })) }) (else_clause "else {\njoined_r0x0003d942:\n    if (iVar4 == 1) {\n      if (iVar6 == 0xfd) {\n        telnet->echoing = 0;\n      }\n    }\n    else if ((iVar6 == 0xfd) && (iVar4 == 3)) {\n      telnet->editing = 0;\n    }\n  }" else (compound_statement "{\njoined_r0x0003d942:\n    if (iVar4 == 1) {\n      if (iVar6 == 0xfd) {\n        telnet->echoing = 0;\n      }\n    }\n    else if ((iVar6 == 0xfd) && (iVar4 == 3)) {\n      telnet->editing = 0;\n    }\n  }" { (labeled_statement "joined_r0x0003d942:\n    if (iVar4 == 1) {\n      if (iVar6 == 0xfd) {\n        telnet->echoing = 0;\n      }\n    }\n    else if ((iVar6 == 0xfd) && (iVar4 == 3)) {\n      telnet->editing = 0;\n    }" statement_identifier : (if_statement "if (iVar4 == 1) {\n      if (iVar6 == 0xfd) {\n        telnet->echoing = 0;\n      }\n    }\n    else if ((iVar6 == 0xfd) && (iVar4 == 3)) {\n      telnet->editing = 0;\n    }" if (parenthesized_expression "(iVar4 == 1)" ( (binary_expression "iVar4 == 1" identifier == number_literal) )) (compound_statement "{\n      if (iVar6 == 0xfd) {\n        telnet->echoing = 0;\n      }\n    }" { (if_statement "if (iVar6 == 0xfd) {\n        telnet->echoing = 0;\n      }" if (parenthesized_expression "(iVar6 == 0xfd)" ( (binary_expression "iVar6 == 0xfd" identifier == number_literal) )) (compound_statement "{\n        telnet->echoing = 0;\n      }" { (expression_statement "telnet->echoing = 0;" (assignment_expression "telnet->echoing = 0" (field_expression "telnet->echoing" identifier -> field_identifier) = number_literal) ;) })) }) (else_clause "else if ((iVar6 == 0xfd) && (iVar4 == 3)) {\n      telnet->editing = 0;\n    }" else (if_statement "if ((iVar6 == 0xfd) && (iVar4 == 3)) {\n      telnet->editing = 0;\n    }" if (parenthesized_expression "((iVar6 == 0xfd) && (iVar4 == 3))" ( (binary_expression "(iVar6 == 0xfd) && (iVar4 == 3)" (parenthesized_expression "(iVar6 == 0xfd)" ( (binary_expression "iVar6 == 0xfd" identifier == number_literal) )) && (parenthesized_expression "(iVar4 == 3)" ( (binary_expression "iVar4 == 3" identifier == number_literal) ))) )) (compound_statement "{\n      telnet->editing = 0;\n    }" { (expression_statement "telnet->editing = 0;" (assignment_expression "telnet->editing = 0" (field_expression "telnet->editing" identifier -> field_identifier) = number_literal) ;) }))))) }))) (if_statement "if (telnet->ldisc != (void *)0x0) {\n    ldisc_echoedit_update(telnet->ldisc);\n  }" if (parenthesized_expression "(telnet->ldisc != (void *)0x0)" ( (binary_expression "telnet->ldisc != (void *)0x0" (field_expression "telnet->ldisc" identifier -> field_identifier) != (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    ldisc_echoedit_update(telnet->ldisc);\n  }" { (expression_statement "ldisc_echoedit_update(telnet->ldisc);" (call_expression "ldisc_echoedit_update(telnet->ldisc)" identifier (argument_list "(telnet->ldisc)" ( (field_expression "telnet->ldisc" identifier -> field_identifier) ))) ;) })) (if_statement "if (telnet->activated != 0) goto LAB_0003d8d8;" if (parenthesized_expression "(telnet->activated != 0)" ( (binary_expression "telnet->activated != 0" (field_expression "telnet->activated" identifier -> field_identifier) != number_literal) )) (goto_statement "goto LAB_0003d8d8;" goto statement_identifier ;)) (if_statement "if (telnet->opt_states[5] == 2) {\n    ppsVar3 = telnet->s;\n    b[2] = '\x01';\n    b[0] = 0xff;\n    b[1] = 0xfd;\n    psVar2 = *ppsVar3;\n    telnet->opt_states[5] = 0;\n    iVar4 = (*psVar2->write)(ppsVar3,(char *)b,3);\n    telnet->bufsize = iVar4;\n    pcVar5 = telopt(1);\n    pcVar5 = dupprintf("%s:\t%s %s","client",&DAT_000920a3,pcVar5);\n    logevent(telnet->frontend,pcVar5);\n    safefree(pcVar5);\n    if (telnet->opt_states[6] == 2) goto LAB_0003d9e4;\nLAB_0003d8c7:\n    iVar4 = telnet->opt_states[7];\n  }\n  else {\n    if (telnet->opt_states[6] != 2) goto LAB_0003d8c7;\nLAB_0003d9e4:\n    ppsVar3 = telnet->s;\n    b[2] = '\x03';\n    b[0] = 0xff;\n    b[1] = 0xfb;\n    psVar2 = *ppsVar3;\n    telnet->opt_states[6] = 0;\n    iVar4 = (*psVar2->write)(ppsVar3,(char *)b,3);\n    telnet->bufsize = iVar4;\n    pcVar5 = telopt(3);\n    pcVar5 = dupprintf("%s:\t%s %s","client",&DAT_000920ab,pcVar5);\n    logevent(telnet->frontend,pcVar5);\n    safefree(pcVar5);\n    iVar4 = telnet->opt_states[7];\n  }" if (parenthesized_expression "(telnet->opt_states[5] == 2)" ( (binary_expression "telnet->opt_states[5] == 2" (subscript_expression "telnet->opt_states[5]" (field_expression "telnet->opt_states" identifier -> field_identifier) [ number_literal ]) == number_literal) )) (compound_statement "{\n    ppsVar3 = telnet->s;\n    b[2] = '\x01';\n    b[0] = 0xff;\n    b[1] = 0xfd;\n    psVar2 = *ppsVar3;\n    telnet->opt_states[5] = 0;\n    iVar4 = (*psVar2->write)(ppsVar3,(char *)b,3);\n    telnet->bufsize = iVar4;\n    pcVar5 = telopt(1);\n    pcVar5 = dupprintf("%s:\t%s %s","client",&DAT_000920a3,pcVar5);\n    logevent(telnet->frontend,pcVar5);\n    safefree(pcVar5);\n    if (telnet->opt_states[6] == 2) goto LAB_0003d9e4;\nLAB_0003d8c7:\n    iVar4 = telnet->opt_states[7];\n  }" { (expression_statement "ppsVar3 = telnet->s;" (assignment_expression "ppsVar3 = telnet->s" identifier = (field_expression "telnet->s" identifier -> field_identifier)) ;) (expression_statement "b[2] = '\x01';" (assignment_expression "b[2] = '\x01'" (subscript_expression "b[2]" identifier [ number_literal ]) = (char_literal "'\x01'" ' escape_sequence ')) ;) (expression_statement "b[0] = 0xff;" (assignment_expression "b[0] = 0xff" (subscript_expression "b[0]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "b[1] = 0xfd;" (assignment_expression "b[1] = 0xfd" (subscript_expression "b[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "psVar2 = *ppsVar3;" (assignment_expression "psVar2 = *ppsVar3" identifier = (pointer_expression "*ppsVar3" * identifier)) ;) (expression_statement "telnet->opt_states[5] = 0;" (assignment_expression "telnet->opt_states[5] = 0" (subscript_expression "telnet->opt_states[5]" (field_expression "telnet->opt_states" identifier -> field_identifier) [ number_literal ]) = number_literal) ;) (expression_statement "iVar4 = (*psVar2->write)(ppsVar3,(char *)b,3);" (assignment_expression "iVar4 = (*psVar2->write)(ppsVar3,(char *)b,3)" identifier = (call_expression "(*psVar2->write)(ppsVar3,(char *)b,3)" (parenthesized_expression "(*psVar2->write)" ( (pointer_expression "*psVar2->write" * (field_expression "psVar2->write" identifier -> field_identifier)) )) (argument_list "(ppsVar3,(char *)b,3)" ( identifier , (cast_expression "(char *)b" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) , number_literal )))) ;) (expression_statement "telnet->bufsize = iVar4;" (assignment_expression "telnet->bufsize = iVar4" (field_expression "telnet->bufsize" identifier -> field_identifier) = identifier) ;) (expression_statement "pcVar5 = telopt(1);" (assignment_expression "pcVar5 = telopt(1)" identifier = (call_expression "telopt(1)" identifier (argument_list "(1)" ( number_literal )))) ;) (expression_statement "pcVar5 = dupprintf("%s:\t%s %s","client",&DAT_000920a3,pcVar5);" (assignment_expression "pcVar5 = dupprintf("%s:\t%s %s","client",&DAT_000920a3,pcVar5)" identifier = (call_expression "dupprintf("%s:\t%s %s","client",&DAT_000920a3,pcVar5)" identifier (argument_list "("%s:\t%s %s","client",&DAT_000920a3,pcVar5)" ( (string_literal ""%s:\t%s %s"" " string_content escape_sequence string_content ") , (string_literal ""client"" " string_content ") , (pointer_expression "&DAT_000920a3" & identifier) , identifier )))) ;) (expression_statement "logevent(telnet->frontend,pcVar5);" (call_expression "logevent(telnet->frontend,pcVar5)" identifier (argument_list "(telnet->frontend,pcVar5)" ( (field_expression "telnet->frontend" identifier -> field_identifier) , identifier ))) ;) (expression_statement "safefree(pcVar5);" (call_expression "safefree(pcVar5)" identifier (argument_list "(pcVar5)" ( identifier ))) ;) (if_statement "if (telnet->opt_states[6] == 2) goto LAB_0003d9e4;" if (parenthesized_expression "(telnet->opt_states[6] == 2)" ( (binary_expression "telnet->opt_states[6] == 2" (subscript_expression "telnet->opt_states[6]" (field_expression "telnet->opt_states" identifier -> field_identifier) [ number_literal ]) == number_literal) )) (goto_statement "goto LAB_0003d9e4;" goto statement_identifier ;)) (labeled_statement "LAB_0003d8c7:\n    iVar4 = telnet->opt_states[7];" statement_identifier : (expression_statement "iVar4 = telnet->opt_states[7];" (assignment_expression "iVar4 = telnet->opt_states[7]" identifier = (subscript_expression "telnet->opt_states[7]" (field_expression "telnet->opt_states" identifier -> field_identifier) [ number_literal ])) ;)) }) (else_clause "else {\n    if (telnet->opt_states[6] != 2) goto LAB_0003d8c7;\nLAB_0003d9e4:\n    ppsVar3 = telnet->s;\n    b[2] = '\x03';\n    b[0] = 0xff;\n    b[1] = 0xfb;\n    psVar2 = *ppsVar3;\n    telnet->opt_states[6] = 0;\n    iVar4 = (*psVar2->write)(ppsVar3,(char *)b,3);\n    telnet->bufsize = iVar4;\n    pcVar5 = telopt(3);\n    pcVar5 = dupprintf("%s:\t%s %s","client",&DAT_000920ab,pcVar5);\n    logevent(telnet->frontend,pcVar5);\n    safefree(pcVar5);\n    iVar4 = telnet->opt_states[7];\n  }" else (compound_statement "{\n    if (telnet->opt_states[6] != 2) goto LAB_0003d8c7;\nLAB_0003d9e4:\n    ppsVar3 = telnet->s;\n    b[2] = '\x03';\n    b[0] = 0xff;\n    b[1] = 0xfb;\n    psVar2 = *ppsVar3;\n    telnet->opt_states[6] = 0;\n    iVar4 = (*psVar2->write)(ppsVar3,(char *)b,3);\n    telnet->bufsize = iVar4;\n    pcVar5 = telopt(3);\n    pcVar5 = dupprintf("%s:\t%s %s","client",&DAT_000920ab,pcVar5);\n    logevent(telnet->frontend,pcVar5);\n    safefree(pcVar5);\n    iVar4 = telnet->opt_states[7];\n  }" { (if_statement "if (telnet->opt_states[6] != 2) goto LAB_0003d8c7;" if (parenthesized_expression "(telnet->opt_states[6] != 2)" ( (binary_expression "telnet->opt_states[6] != 2" (subscript_expression "telnet->opt_states[6]" (field_expression "telnet->opt_states" identifier -> field_identifier) [ number_literal ]) != number_literal) )) (goto_statement "goto LAB_0003d8c7;" goto statement_identifier ;)) (labeled_statement "LAB_0003d9e4:\n    ppsVar3 = telnet->s;" statement_identifier : (expression_statement "ppsVar3 = telnet->s;" (assignment_expression "ppsVar3 = telnet->s" identifier = (field_expression "telnet->s" identifier -> field_identifier)) ;)) (expression_statement "b[2] = '\x03';" (assignment_expression "b[2] = '\x03'" (subscript_expression "b[2]" identifier [ number_literal ]) = (char_literal "'\x03'" ' escape_sequence ')) ;) (expression_statement "b[0] = 0xff;" (assignment_expression "b[0] = 0xff" (subscript_expression "b[0]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "b[1] = 0xfb;" (assignment_expression "b[1] = 0xfb" (subscript_expression "b[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "psVar2 = *ppsVar3;" (assignment_expression "psVar2 = *ppsVar3" identifier = (pointer_expression "*ppsVar3" * identifier)) ;) (expression_statement "telnet->opt_states[6] = 0;" (assignment_expression "telnet->opt_states[6] = 0" (subscript_expression "telnet->opt_states[6]" (field_expression "telnet->opt_states" identifier -> field_identifier) [ number_literal ]) = number_literal) ;) (expression_statement "iVar4 = (*psVar2->write)(ppsVar3,(char *)b,3);" (assignment_expression "iVar4 = (*psVar2->write)(ppsVar3,(char *)b,3)" identifier = (call_expression "(*psVar2->write)(ppsVar3,(char *)b,3)" (parenthesized_expression "(*psVar2->write)" ( (pointer_expression "*psVar2->write" * (field_expression "psVar2->write" identifier -> field_identifier)) )) (argument_list "(ppsVar3,(char *)b,3)" ( identifier , (cast_expression "(char *)b" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) , number_literal )))) ;) (expression_statement "telnet->bufsize = iVar4;" (assignment_expression "telnet->bufsize = iVar4" (field_expression "telnet->bufsize" identifier -> field_identifier) = identifier) ;) (expression_statement "pcVar5 = telopt(3);" (assignment_expression "pcVar5 = telopt(3)" identifier = (call_expression "telopt(3)" identifier (argument_list "(3)" ( number_literal )))) ;) (expression_statement "pcVar5 = dupprintf("%s:\t%s %s","client",&DAT_000920ab,pcVar5);" (assignment_expression "pcVar5 = dupprintf("%s:\t%s %s","client",&DAT_000920ab,pcVar5)" identifier = (call_expression "dupprintf("%s:\t%s %s","client",&DAT_000920ab,pcVar5)" identifier (argument_list "("%s:\t%s %s","client",&DAT_000920ab,pcVar5)" ( (string_literal ""%s:\t%s %s"" " string_content escape_sequence string_content ") , (string_literal ""client"" " string_content ") , (pointer_expression "&DAT_000920ab" & identifier) , identifier )))) ;) (expression_statement "logevent(telnet->frontend,pcVar5);" (call_expression "logevent(telnet->frontend,pcVar5)" identifier (argument_list "(telnet->frontend,pcVar5)" ( (field_expression "telnet->frontend" identifier -> field_identifier) , identifier ))) ;) (expression_statement "safefree(pcVar5);" (call_expression "safefree(pcVar5)" identifier (argument_list "(pcVar5)" ( identifier ))) ;) (expression_statement "iVar4 = telnet->opt_states[7];" (assignment_expression "iVar4 = telnet->opt_states[7]" identifier = (subscript_expression "telnet->opt_states[7]" (field_expression "telnet->opt_states" identifier -> field_identifier) [ number_literal ])) ;) }))) (if_statement "if (iVar4 == 2) {\n    b[2] = '\x03';\n    b[0] = 0xff;\n    b[1] = 0xfd;\n    ppsVar3 = telnet->s;\n    telnet->opt_states[7] = 0;\n    iVar4 = (*(*ppsVar3)->write)(ppsVar3,(char *)b,3);\n    telnet->bufsize = iVar4;\n    pcVar5 = telopt(3);\n    pcVar5 = dupprintf("%s:\t%s %s","client",&DAT_000920a3,pcVar5);\n    logevent(telnet->frontend,pcVar5);\n    safefree(pcVar5);\n  }" if (parenthesized_expression "(iVar4 == 2)" ( (binary_expression "iVar4 == 2" identifier == number_literal) )) (compound_statement "{\n    b[2] = '\x03';\n    b[0] = 0xff;\n    b[1] = 0xfd;\n    ppsVar3 = telnet->s;\n    telnet->opt_states[7] = 0;\n    iVar4 = (*(*ppsVar3)->write)(ppsVar3,(char *)b,3);\n    telnet->bufsize = iVar4;\n    pcVar5 = telopt(3);\n    pcVar5 = dupprintf("%s:\t%s %s","client",&DAT_000920a3,pcVar5);\n    logevent(telnet->frontend,pcVar5);\n    safefree(pcVar5);\n  }" { (expression_statement "b[2] = '\x03';" (assignment_expression "b[2] = '\x03'" (subscript_expression "b[2]" identifier [ number_literal ]) = (char_literal "'\x03'" ' escape_sequence ')) ;) (expression_statement "b[0] = 0xff;" (assignment_expression "b[0] = 0xff" (subscript_expression "b[0]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "b[1] = 0xfd;" (assignment_expression "b[1] = 0xfd" (subscript_expression "b[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "ppsVar3 = telnet->s;" (assignment_expression "ppsVar3 = telnet->s" identifier = (field_expression "telnet->s" identifier -> field_identifier)) ;) (expression_statement "telnet->opt_states[7] = 0;" (assignment_expression "telnet->opt_states[7] = 0" (subscript_expression "telnet->opt_states[7]" (field_expression "telnet->opt_states" identifier -> field_identifier) [ number_literal ]) = number_literal) ;) (expression_statement "iVar4 = (*(*ppsVar3)->write)(ppsVar3,(char *)b,3);" (assignment_expression "iVar4 = (*(*ppsVar3)->write)(ppsVar3,(char *)b,3)" identifier = (call_expression "(*(*ppsVar3)->write)(ppsVar3,(char *)b,3)" (parenthesized_expression "(*(*ppsVar3)->write)" ( (pointer_expression "*(*ppsVar3)->write" * (field_expression "(*ppsVar3)->write" (parenthesized_expression "(*ppsVar3)" ( (pointer_expression "*ppsVar3" * identifier) )) -> field_identifier)) )) (argument_list "(ppsVar3,(char *)b,3)" ( identifier , (cast_expression "(char *)b" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) , number_literal )))) ;) (expression_statement "telnet->bufsize = iVar4;" (assignment_expression "telnet->bufsize = iVar4" (field_expression "telnet->bufsize" identifier -> field_identifier) = identifier) ;) (expression_statement "pcVar5 = telopt(3);" (assignment_expression "pcVar5 = telopt(3)" identifier = (call_expression "telopt(3)" identifier (argument_list "(3)" ( number_literal )))) ;) (expression_statement "pcVar5 = dupprintf("%s:\t%s %s","client",&DAT_000920a3,pcVar5);" (assignment_expression "pcVar5 = dupprintf("%s:\t%s %s","client",&DAT_000920a3,pcVar5)" identifier = (call_expression "dupprintf("%s:\t%s %s","client",&DAT_000920a3,pcVar5)" identifier (argument_list "("%s:\t%s %s","client",&DAT_000920a3,pcVar5)" ( (string_literal ""%s:\t%s %s"" " string_content escape_sequence string_content ") , (string_literal ""client"" " string_content ") , (pointer_expression "&DAT_000920a3" & identifier) , identifier )))) ;) (expression_statement "logevent(telnet->frontend,pcVar5);" (call_expression "logevent(telnet->frontend,pcVar5)" identifier (argument_list "(telnet->frontend,pcVar5)" ( (field_expression "telnet->frontend" identifier -> field_identifier) , identifier ))) ;) (expression_statement "safefree(pcVar5);" (call_expression "safefree(pcVar5)" identifier (argument_list "(pcVar5)" ( identifier ))) ;) })) (expression_statement "telnet->activated = 1;" (assignment_expression "telnet->activated = 1" (field_expression "telnet->activated" identifier -> field_identifier) = number_literal) ;) (labeled_statement "LAB_0003d8d8:\n  if (iVar1 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return;\n  }" statement_identifier : (if_statement "if (iVar1 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return;\n  }" if (parenthesized_expression "(iVar1 == *(int *)(in_GS_OFFSET + 0x14))" ( (binary_expression "iVar1 == *(int *)(in_GS_OFFSET + 0x14)" identifier == (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) )) (compound_statement "{\n    return;\n  }" { (return_statement "return;" return ;) }))) comment (expression_statement "__stack_chk_fail_local();" (call_expression "__stack_chk_fail_local()" identifier (argument_list "()" ( ))) ;) })))
(translation_unit "void __regparm3 FUN_0003d850(int param_1,int *param_2)\n\n{\n  int iVar1;\n  int iVar2;\n  undefined4 uVar3;\n  undefined *puVar4;\n  int in_GS_OFFSET;\n  undefined2 local_23;\n  undefined1 local_21;\n  int local_20;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x3d85d;\n  iVar1 = *param_2;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  iVar2 = param_2[4];\n  if (iVar1 == 0xfb) {\n    if (iVar2 == 0x1f) {\n      FUN_0003d040(param_1,*(undefined4 *)(param_1 + 0x14),*(undefined4 *)(param_1 + 0x18));\n      iVar1 = *param_2;\n      iVar2 = param_2[4];\n      if (iVar1 != 0xfb) goto joined_r0x0003d942;\n    }\n    if ((iVar2 == 0x27) || (iVar2 == 0x24)) {\n      if (iVar2 == 0x27) {\n        iVar2 = 3;\n        puVar4 = &DAT_00092744;\n      }\n      else {\n        iVar2 = 4;\n        puVar4 = &DAT_00092728;\n      }\n      iVar2 = iVar2 + 4;\n      if (*(uint *)(param_1 + 0xc + iVar2 * 4) < 2) {\n        FUN_0003d2f0();\n        iVar2 = *(int *)(puVar4 + 0x14) + 4;\n      }\n      *(undefined4 *)(param_1 + 0xc + iVar2 * 4) = 3;\n      iVar2 = param_2[4];\n      iVar1 = *param_2;\n      goto joined_r0x0003d942;\n    }\n  }\n  else {\njoined_r0x0003d942:\n    if (iVar2 == 1) {\n      if (iVar1 == 0xfd) {\n        *(undefined4 *)(param_1 + 0x44) = 0;\n      }\n    }\n    else if ((iVar1 == 0xfd) && (iVar2 == 3)) {\n      *(undefined4 *)(param_1 + 0x48) = 0;\n    }\n  }\n  if (*(int *)(param_1 + 0x10) != 0) {\n    FUN_0002ada0(*(int *)(param_1 + 0x10));\n  }\n  if (*(int *)(param_1 + 0x4c) != 0) goto LAB_0003d8d8;\n  if (*(int *)(param_1 + 0x30) == 2) {\n    local_21 = 1;\n    local_23 = 0xfdff;\n    iVar2 = **(int **)(param_1 + 4);\n    *(undefined4 *)(param_1 + 0x30) = 0;\n    uVar3 = (**(code **)(iVar2 + 8))(*(int **)(param_1 + 4),&local_23,3);\n    *(undefined4 *)(param_1 + 0x50) = uVar3;\n    uVar3 = FUN_0003ca70();\n    uVar3 = FUN_000306f0("%s:\t%s %s","client",&DAT_000920a3,uVar3);\n    FUN_00068500(*(undefined4 *)(param_1 + 0xc),uVar3);\n    FUN_00031580(uVar3);\n    if (*(int *)(param_1 + 0x34) == 2) goto LAB_0003d9e4;\nLAB_0003d8c7:\n    iVar2 = *(int *)(param_1 + 0x38);\n  }\n  else {\n    if (*(int *)(param_1 + 0x34) != 2) goto LAB_0003d8c7;\nLAB_0003d9e4:\n    local_21 = 3;\n    local_23 = 0xfbff;\n    iVar2 = **(int **)(param_1 + 4);\n    *(undefined4 *)(param_1 + 0x34) = 0;\n    uVar3 = (**(code **)(iVar2 + 8))(*(int **)(param_1 + 4),&local_23,3);\n    *(undefined4 *)(param_1 + 0x50) = uVar3;\n    uVar3 = FUN_0003ca70();\n    uVar3 = FUN_000306f0("%s:\t%s %s","client",&DAT_000920ab,uVar3);\n    FUN_00068500(*(undefined4 *)(param_1 + 0xc),uVar3);\n    FUN_00031580(uVar3);\n    iVar2 = *(int *)(param_1 + 0x38);\n  }\n  if (iVar2 == 2) {\n    local_21 = 3;\n    local_23 = 0xfdff;\n    *(undefined4 *)(param_1 + 0x38) = 0;\n    uVar3 = (**(code **)(**(int **)(param_1 + 4) + 8))(*(int **)(param_1 + 4),&local_23,3);\n    *(undefined4 *)(param_1 + 0x50) = uVar3;\n    uVar3 = FUN_0003ca70();\n    uVar3 = FUN_000306f0("%s:\t%s %s","client",&DAT_000920a3,uVar3);\n    FUN_00068500(*(undefined4 *)(param_1 + 0xc),uVar3);\n    FUN_00031580(uVar3);\n  }\n  *(undefined4 *)(param_1 + 0x4c) = 1;\nLAB_0003d8d8:\n  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return;\n  }\n                    \n  FUN_00077880();\n}\n\n" (function_definition "void __regparm3 FUN_0003d850(int param_1,int *param_2)\n\n{\n  int iVar1;\n  int iVar2;\n  undefined4 uVar3;\n  undefined *puVar4;\n  int in_GS_OFFSET;\n  undefined2 local_23;\n  undefined1 local_21;\n  int local_20;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x3d85d;\n  iVar1 = *param_2;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  iVar2 = param_2[4];\n  if (iVar1 == 0xfb) {\n    if (iVar2 == 0x1f) {\n      FUN_0003d040(param_1,*(undefined4 *)(param_1 + 0x14),*(undefined4 *)(param_1 + 0x18));\n      iVar1 = *param_2;\n      iVar2 = param_2[4];\n      if (iVar1 != 0xfb) goto joined_r0x0003d942;\n    }\n    if ((iVar2 == 0x27) || (iVar2 == 0x24)) {\n      if (iVar2 == 0x27) {\n        iVar2 = 3;\n        puVar4 = &DAT_00092744;\n      }\n      else {\n        iVar2 = 4;\n        puVar4 = &DAT_00092728;\n      }\n      iVar2 = iVar2 + 4;\n      if (*(uint *)(param_1 + 0xc + iVar2 * 4) < 2) {\n        FUN_0003d2f0();\n        iVar2 = *(int *)(puVar4 + 0x14) + 4;\n      }\n      *(undefined4 *)(param_1 + 0xc + iVar2 * 4) = 3;\n      iVar2 = param_2[4];\n      iVar1 = *param_2;\n      goto joined_r0x0003d942;\n    }\n  }\n  else {\njoined_r0x0003d942:\n    if (iVar2 == 1) {\n      if (iVar1 == 0xfd) {\n        *(undefined4 *)(param_1 + 0x44) = 0;\n      }\n    }\n    else if ((iVar1 == 0xfd) && (iVar2 == 3)) {\n      *(undefined4 *)(param_1 + 0x48) = 0;\n    }\n  }\n  if (*(int *)(param_1 + 0x10) != 0) {\n    FUN_0002ada0(*(int *)(param_1 + 0x10));\n  }\n  if (*(int *)(param_1 + 0x4c) != 0) goto LAB_0003d8d8;\n  if (*(int *)(param_1 + 0x30) == 2) {\n    local_21 = 1;\n    local_23 = 0xfdff;\n    iVar2 = **(int **)(param_1 + 4);\n    *(undefined4 *)(param_1 + 0x30) = 0;\n    uVar3 = (**(code **)(iVar2 + 8))(*(int **)(param_1 + 4),&local_23,3);\n    *(undefined4 *)(param_1 + 0x50) = uVar3;\n    uVar3 = FUN_0003ca70();\n    uVar3 = FUN_000306f0("%s:\t%s %s","client",&DAT_000920a3,uVar3);\n    FUN_00068500(*(undefined4 *)(param_1 + 0xc),uVar3);\n    FUN_00031580(uVar3);\n    if (*(int *)(param_1 + 0x34) == 2) goto LAB_0003d9e4;\nLAB_0003d8c7:\n    iVar2 = *(int *)(param_1 + 0x38);\n  }\n  else {\n    if (*(int *)(param_1 + 0x34) != 2) goto LAB_0003d8c7;\nLAB_0003d9e4:\n    local_21 = 3;\n    local_23 = 0xfbff;\n    iVar2 = **(int **)(param_1 + 4);\n    *(undefined4 *)(param_1 + 0x34) = 0;\n    uVar3 = (**(code **)(iVar2 + 8))(*(int **)(param_1 + 4),&local_23,3);\n    *(undefined4 *)(param_1 + 0x50) = uVar3;\n    uVar3 = FUN_0003ca70();\n    uVar3 = FUN_000306f0("%s:\t%s %s","client",&DAT_000920ab,uVar3);\n    FUN_00068500(*(undefined4 *)(param_1 + 0xc),uVar3);\n    FUN_00031580(uVar3);\n    iVar2 = *(int *)(param_1 + 0x38);\n  }\n  if (iVar2 == 2) {\n    local_21 = 3;\n    local_23 = 0xfdff;\n    *(undefined4 *)(param_1 + 0x38) = 0;\n    uVar3 = (**(code **)(**(int **)(param_1 + 4) + 8))(*(int **)(param_1 + 4),&local_23,3);\n    *(undefined4 *)(param_1 + 0x50) = uVar3;\n    uVar3 = FUN_0003ca70();\n    uVar3 = FUN_000306f0("%s:\t%s %s","client",&DAT_000920a3,uVar3);\n    FUN_00068500(*(undefined4 *)(param_1 + 0xc),uVar3);\n    FUN_00031580(uVar3);\n  }\n  *(undefined4 *)(param_1 + 0x4c) = 1;\nLAB_0003d8d8:\n  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return;\n  }\n                    \n  FUN_00077880();\n}" primitive_type (ERROR "__regparm3" identifier) (function_declarator "FUN_0003d850(int param_1,int *param_2)" identifier (parameter_list "(int param_1,int *param_2)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "int *param_2" primitive_type (pointer_declarator "*param_2" * identifier)) ))) (compound_statement "{\n  int iVar1;\n  int iVar2;\n  undefined4 uVar3;\n  undefined *puVar4;\n  int in_GS_OFFSET;\n  undefined2 local_23;\n  undefined1 local_21;\n  int local_20;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x3d85d;\n  iVar1 = *param_2;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  iVar2 = param_2[4];\n  if (iVar1 == 0xfb) {\n    if (iVar2 == 0x1f) {\n      FUN_0003d040(param_1,*(undefined4 *)(param_1 + 0x14),*(undefined4 *)(param_1 + 0x18));\n      iVar1 = *param_2;\n      iVar2 = param_2[4];\n      if (iVar1 != 0xfb) goto joined_r0x0003d942;\n    }\n    if ((iVar2 == 0x27) || (iVar2 == 0x24)) {\n      if (iVar2 == 0x27) {\n        iVar2 = 3;\n        puVar4 = &DAT_00092744;\n      }\n      else {\n        iVar2 = 4;\n        puVar4 = &DAT_00092728;\n      }\n      iVar2 = iVar2 + 4;\n      if (*(uint *)(param_1 + 0xc + iVar2 * 4) < 2) {\n        FUN_0003d2f0();\n        iVar2 = *(int *)(puVar4 + 0x14) + 4;\n      }\n      *(undefined4 *)(param_1 + 0xc + iVar2 * 4) = 3;\n      iVar2 = param_2[4];\n      iVar1 = *param_2;\n      goto joined_r0x0003d942;\n    }\n  }\n  else {\njoined_r0x0003d942:\n    if (iVar2 == 1) {\n      if (iVar1 == 0xfd) {\n        *(undefined4 *)(param_1 + 0x44) = 0;\n      }\n    }\n    else if ((iVar1 == 0xfd) && (iVar2 == 3)) {\n      *(undefined4 *)(param_1 + 0x48) = 0;\n    }\n  }\n  if (*(int *)(param_1 + 0x10) != 0) {\n    FUN_0002ada0(*(int *)(param_1 + 0x10));\n  }\n  if (*(int *)(param_1 + 0x4c) != 0) goto LAB_0003d8d8;\n  if (*(int *)(param_1 + 0x30) == 2) {\n    local_21 = 1;\n    local_23 = 0xfdff;\n    iVar2 = **(int **)(param_1 + 4);\n    *(undefined4 *)(param_1 + 0x30) = 0;\n    uVar3 = (**(code **)(iVar2 + 8))(*(int **)(param_1 + 4),&local_23,3);\n    *(undefined4 *)(param_1 + 0x50) = uVar3;\n    uVar3 = FUN_0003ca70();\n    uVar3 = FUN_000306f0("%s:\t%s %s","client",&DAT_000920a3,uVar3);\n    FUN_00068500(*(undefined4 *)(param_1 + 0xc),uVar3);\n    FUN_00031580(uVar3);\n    if (*(int *)(param_1 + 0x34) == 2) goto LAB_0003d9e4;\nLAB_0003d8c7:\n    iVar2 = *(int *)(param_1 + 0x38);\n  }\n  else {\n    if (*(int *)(param_1 + 0x34) != 2) goto LAB_0003d8c7;\nLAB_0003d9e4:\n    local_21 = 3;\n    local_23 = 0xfbff;\n    iVar2 = **(int **)(param_1 + 4);\n    *(undefined4 *)(param_1 + 0x34) = 0;\n    uVar3 = (**(code **)(iVar2 + 8))(*(int **)(param_1 + 4),&local_23,3);\n    *(undefined4 *)(param_1 + 0x50) = uVar3;\n    uVar3 = FUN_0003ca70();\n    uVar3 = FUN_000306f0("%s:\t%s %s","client",&DAT_000920ab,uVar3);\n    FUN_00068500(*(undefined4 *)(param_1 + 0xc),uVar3);\n    FUN_00031580(uVar3);\n    iVar2 = *(int *)(param_1 + 0x38);\n  }\n  if (iVar2 == 2) {\n    local_21 = 3;\n    local_23 = 0xfdff;\n    *(undefined4 *)(param_1 + 0x38) = 0;\n    uVar3 = (**(code **)(**(int **)(param_1 + 4) + 8))(*(int **)(param_1 + 4),&local_23,3);\n    *(undefined4 *)(param_1 + 0x50) = uVar3;\n    uVar3 = FUN_0003ca70();\n    uVar3 = FUN_000306f0("%s:\t%s %s","client",&DAT_000920a3,uVar3);\n    FUN_00068500(*(undefined4 *)(param_1 + 0xc),uVar3);\n    FUN_00031580(uVar3);\n  }\n  *(undefined4 *)(param_1 + 0x4c) = 1;\nLAB_0003d8d8:\n  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return;\n  }\n                    \n  FUN_00077880();\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "undefined4 uVar3;" type_identifier identifier ;) (declaration "undefined *puVar4;" type_identifier (pointer_declarator "*puVar4" * identifier) ;) (declaration "int in_GS_OFFSET;" primitive_type identifier ;) (declaration "undefined2 local_23;" type_identifier identifier ;) (declaration "undefined1 local_21;" type_identifier identifier ;) (declaration "int local_20;" primitive_type identifier ;) (declaration "undefined4 uStack_14;" type_identifier identifier ;) (expression_statement "uStack_14 = 0x3d85d;" (assignment_expression "uStack_14 = 0x3d85d" identifier = number_literal) ;) (expression_statement "iVar1 = *param_2;" (assignment_expression "iVar1 = *param_2" identifier = (pointer_expression "*param_2" * identifier)) ;) (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 "iVar2 = param_2[4];" (assignment_expression "iVar2 = param_2[4]" identifier = (subscript_expression "param_2[4]" identifier [ number_literal ])) ;) (if_statement "if (iVar1 == 0xfb) {\n    if (iVar2 == 0x1f) {\n      FUN_0003d040(param_1,*(undefined4 *)(param_1 + 0x14),*(undefined4 *)(param_1 + 0x18));\n      iVar1 = *param_2;\n      iVar2 = param_2[4];\n      if (iVar1 != 0xfb) goto joined_r0x0003d942;\n    }\n    if ((iVar2 == 0x27) || (iVar2 == 0x24)) {\n      if (iVar2 == 0x27) {\n        iVar2 = 3;\n        puVar4 = &DAT_00092744;\n      }\n      else {\n        iVar2 = 4;\n        puVar4 = &DAT_00092728;\n      }\n      iVar2 = iVar2 + 4;\n      if (*(uint *)(param_1 + 0xc + iVar2 * 4) < 2) {\n        FUN_0003d2f0();\n        iVar2 = *(int *)(puVar4 + 0x14) + 4;\n      }\n      *(undefined4 *)(param_1 + 0xc + iVar2 * 4) = 3;\n      iVar2 = param_2[4];\n      iVar1 = *param_2;\n      goto joined_r0x0003d942;\n    }\n  }\n  else {\njoined_r0x0003d942:\n    if (iVar2 == 1) {\n      if (iVar1 == 0xfd) {\n        *(undefined4 *)(param_1 + 0x44) = 0;\n      }\n    }\n    else if ((iVar1 == 0xfd) && (iVar2 == 3)) {\n      *(undefined4 *)(param_1 + 0x48) = 0;\n    }\n  }" if (parenthesized_expression "(iVar1 == 0xfb)" ( (binary_expression "iVar1 == 0xfb" identifier == number_literal) )) (compound_statement "{\n    if (iVar2 == 0x1f) {\n      FUN_0003d040(param_1,*(undefined4 *)(param_1 + 0x14),*(undefined4 *)(param_1 + 0x18));\n      iVar1 = *param_2;\n      iVar2 = param_2[4];\n      if (iVar1 != 0xfb) goto joined_r0x0003d942;\n    }\n    if ((iVar2 == 0x27) || (iVar2 == 0x24)) {\n      if (iVar2 == 0x27) {\n        iVar2 = 3;\n        puVar4 = &DAT_00092744;\n      }\n      else {\n        iVar2 = 4;\n        puVar4 = &DAT_00092728;\n      }\n      iVar2 = iVar2 + 4;\n      if (*(uint *)(param_1 + 0xc + iVar2 * 4) < 2) {\n        FUN_0003d2f0();\n        iVar2 = *(int *)(puVar4 + 0x14) + 4;\n      }\n      *(undefined4 *)(param_1 + 0xc + iVar2 * 4) = 3;\n      iVar2 = param_2[4];\n      iVar1 = *param_2;\n      goto joined_r0x0003d942;\n    }\n  }" { (if_statement "if (iVar2 == 0x1f) {\n      FUN_0003d040(param_1,*(undefined4 *)(param_1 + 0x14),*(undefined4 *)(param_1 + 0x18));\n      iVar1 = *param_2;\n      iVar2 = param_2[4];\n      if (iVar1 != 0xfb) goto joined_r0x0003d942;\n    }" if (parenthesized_expression "(iVar2 == 0x1f)" ( (binary_expression "iVar2 == 0x1f" identifier == number_literal) )) (compound_statement "{\n      FUN_0003d040(param_1,*(undefined4 *)(param_1 + 0x14),*(undefined4 *)(param_1 + 0x18));\n      iVar1 = *param_2;\n      iVar2 = param_2[4];\n      if (iVar1 != 0xfb) goto joined_r0x0003d942;\n    }" { (expression_statement "FUN_0003d040(param_1,*(undefined4 *)(param_1 + 0x14),*(undefined4 *)(param_1 + 0x18));" (call_expression "FUN_0003d040(param_1,*(undefined4 *)(param_1 + 0x14),*(undefined4 *)(param_1 + 0x18))" identifier (argument_list "(param_1,*(undefined4 *)(param_1 + 0x14),*(undefined4 *)(param_1 + 0x18))" ( identifier , (pointer_expression "*(undefined4 *)(param_1 + 0x14)" * (cast_expression "(undefined4 *)(param_1 + 0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x14)" ( (binary_expression "param_1 + 0x14" identifier + number_literal) )))) , (pointer_expression "*(undefined4 *)(param_1 + 0x18)" * (cast_expression "(undefined4 *)(param_1 + 0x18)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x18)" ( (binary_expression "param_1 + 0x18" identifier + number_literal) )))) ))) ;) (expression_statement "iVar1 = *param_2;" (assignment_expression "iVar1 = *param_2" identifier = (pointer_expression "*param_2" * identifier)) ;) (expression_statement "iVar2 = param_2[4];" (assignment_expression "iVar2 = param_2[4]" identifier = (subscript_expression "param_2[4]" identifier [ number_literal ])) ;) (if_statement "if (iVar1 != 0xfb) goto joined_r0x0003d942;" if (parenthesized_expression "(iVar1 != 0xfb)" ( (binary_expression "iVar1 != 0xfb" identifier != number_literal) )) (goto_statement "goto joined_r0x0003d942;" goto statement_identifier ;)) })) (if_statement "if ((iVar2 == 0x27) || (iVar2 == 0x24)) {\n      if (iVar2 == 0x27) {\n        iVar2 = 3;\n        puVar4 = &DAT_00092744;\n      }\n      else {\n        iVar2 = 4;\n        puVar4 = &DAT_00092728;\n      }\n      iVar2 = iVar2 + 4;\n      if (*(uint *)(param_1 + 0xc + iVar2 * 4) < 2) {\n        FUN_0003d2f0();\n        iVar2 = *(int *)(puVar4 + 0x14) + 4;\n      }\n      *(undefined4 *)(param_1 + 0xc + iVar2 * 4) = 3;\n      iVar2 = param_2[4];\n      iVar1 = *param_2;\n      goto joined_r0x0003d942;\n    }" if (parenthesized_expression "((iVar2 == 0x27) || (iVar2 == 0x24))" ( (binary_expression "(iVar2 == 0x27) || (iVar2 == 0x24)" (parenthesized_expression "(iVar2 == 0x27)" ( (binary_expression "iVar2 == 0x27" identifier == number_literal) )) || (parenthesized_expression "(iVar2 == 0x24)" ( (binary_expression "iVar2 == 0x24" identifier == number_literal) ))) )) (compound_statement "{\n      if (iVar2 == 0x27) {\n        iVar2 = 3;\n        puVar4 = &DAT_00092744;\n      }\n      else {\n        iVar2 = 4;\n        puVar4 = &DAT_00092728;\n      }\n      iVar2 = iVar2 + 4;\n      if (*(uint *)(param_1 + 0xc + iVar2 * 4) < 2) {\n        FUN_0003d2f0();\n        iVar2 = *(int *)(puVar4 + 0x14) + 4;\n      }\n      *(undefined4 *)(param_1 + 0xc + iVar2 * 4) = 3;\n      iVar2 = param_2[4];\n      iVar1 = *param_2;\n      goto joined_r0x0003d942;\n    }" { (if_statement "if (iVar2 == 0x27) {\n        iVar2 = 3;\n        puVar4 = &DAT_00092744;\n      }\n      else {\n        iVar2 = 4;\n        puVar4 = &DAT_00092728;\n      }" if (parenthesized_expression "(iVar2 == 0x27)" ( (binary_expression "iVar2 == 0x27" identifier == number_literal) )) (compound_statement "{\n        iVar2 = 3;\n        puVar4 = &DAT_00092744;\n      }" { (expression_statement "iVar2 = 3;" (assignment_expression "iVar2 = 3" identifier = number_literal) ;) (expression_statement "puVar4 = &DAT_00092744;" (assignment_expression "puVar4 = &DAT_00092744" identifier = (pointer_expression "&DAT_00092744" & identifier)) ;) }) (else_clause "else {\n        iVar2 = 4;\n        puVar4 = &DAT_00092728;\n      }" else (compound_statement "{\n        iVar2 = 4;\n        puVar4 = &DAT_00092728;\n      }" { (expression_statement "iVar2 = 4;" (assignment_expression "iVar2 = 4" identifier = number_literal) ;) (expression_statement "puVar4 = &DAT_00092728;" (assignment_expression "puVar4 = &DAT_00092728" identifier = (pointer_expression "&DAT_00092728" & identifier)) ;) }))) (expression_statement "iVar2 = iVar2 + 4;" (assignment_expression "iVar2 = iVar2 + 4" identifier = (binary_expression "iVar2 + 4" identifier + number_literal)) ;) (if_statement "if (*(uint *)(param_1 + 0xc + iVar2 * 4) < 2) {\n        FUN_0003d2f0();\n        iVar2 = *(int *)(puVar4 + 0x14) + 4;\n      }" if (parenthesized_expression "(*(uint *)(param_1 + 0xc + iVar2 * 4) < 2)" ( (binary_expression "*(uint *)(param_1 + 0xc + iVar2 * 4) < 2" (pointer_expression "*(uint *)(param_1 + 0xc + iVar2 * 4)" * (cast_expression "(uint *)(param_1 + 0xc + iVar2 * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xc + iVar2 * 4)" ( (binary_expression "param_1 + 0xc + iVar2 * 4" (binary_expression "param_1 + 0xc" identifier + number_literal) + (binary_expression "iVar2 * 4" identifier * number_literal)) )))) < number_literal) )) (compound_statement "{\n        FUN_0003d2f0();\n        iVar2 = *(int *)(puVar4 + 0x14) + 4;\n      }" { (expression_statement "FUN_0003d2f0();" (call_expression "FUN_0003d2f0()" identifier (argument_list "()" ( ))) ;) (expression_statement "iVar2 = *(int *)(puVar4 + 0x14) + 4;" (assignment_expression "iVar2 = *(int *)(puVar4 + 0x14) + 4" identifier = (binary_expression "*(int *)(puVar4 + 0x14) + 4" (pointer_expression "*(int *)(puVar4 + 0x14)" * (cast_expression "(int *)(puVar4 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar4 + 0x14)" ( (binary_expression "puVar4 + 0x14" identifier + number_literal) )))) + number_literal)) ;) })) (expression_statement "*(undefined4 *)(param_1 + 0xc + iVar2 * 4) = 3;" (assignment_expression "*(undefined4 *)(param_1 + 0xc + iVar2 * 4) = 3" (pointer_expression "*(undefined4 *)(param_1 + 0xc + iVar2 * 4)" * (cast_expression "(undefined4 *)(param_1 + 0xc + iVar2 * 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xc + iVar2 * 4)" ( (binary_expression "param_1 + 0xc + iVar2 * 4" (binary_expression "param_1 + 0xc" identifier + number_literal) + (binary_expression "iVar2 * 4" identifier * number_literal)) )))) = number_literal) ;) (expression_statement "iVar2 = param_2[4];" (assignment_expression "iVar2 = param_2[4]" identifier = (subscript_expression "param_2[4]" identifier [ number_literal ])) ;) (expression_statement "iVar1 = *param_2;" (assignment_expression "iVar1 = *param_2" identifier = (pointer_expression "*param_2" * identifier)) ;) (goto_statement "goto joined_r0x0003d942;" goto statement_identifier ;) })) }) (else_clause "else {\njoined_r0x0003d942:\n    if (iVar2 == 1) {\n      if (iVar1 == 0xfd) {\n        *(undefined4 *)(param_1 + 0x44) = 0;\n      }\n    }\n    else if ((iVar1 == 0xfd) && (iVar2 == 3)) {\n      *(undefined4 *)(param_1 + 0x48) = 0;\n    }\n  }" else (compound_statement "{\njoined_r0x0003d942:\n    if (iVar2 == 1) {\n      if (iVar1 == 0xfd) {\n        *(undefined4 *)(param_1 + 0x44) = 0;\n      }\n    }\n    else if ((iVar1 == 0xfd) && (iVar2 == 3)) {\n      *(undefined4 *)(param_1 + 0x48) = 0;\n    }\n  }" { (labeled_statement "joined_r0x0003d942:\n    if (iVar2 == 1) {\n      if (iVar1 == 0xfd) {\n        *(undefined4 *)(param_1 + 0x44) = 0;\n      }\n    }\n    else if ((iVar1 == 0xfd) && (iVar2 == 3)) {\n      *(undefined4 *)(param_1 + 0x48) = 0;\n    }" statement_identifier : (if_statement "if (iVar2 == 1) {\n      if (iVar1 == 0xfd) {\n        *(undefined4 *)(param_1 + 0x44) = 0;\n      }\n    }\n    else if ((iVar1 == 0xfd) && (iVar2 == 3)) {\n      *(undefined4 *)(param_1 + 0x48) = 0;\n    }" if (parenthesized_expression "(iVar2 == 1)" ( (binary_expression "iVar2 == 1" identifier == number_literal) )) (compound_statement "{\n      if (iVar1 == 0xfd) {\n        *(undefined4 *)(param_1 + 0x44) = 0;\n      }\n    }" { (if_statement "if (iVar1 == 0xfd) {\n        *(undefined4 *)(param_1 + 0x44) = 0;\n      }" if (parenthesized_expression "(iVar1 == 0xfd)" ( (binary_expression "iVar1 == 0xfd" identifier == number_literal) )) (compound_statement "{\n        *(undefined4 *)(param_1 + 0x44) = 0;\n      }" { (expression_statement "*(undefined4 *)(param_1 + 0x44) = 0;" (assignment_expression "*(undefined4 *)(param_1 + 0x44) = 0" (pointer_expression "*(undefined4 *)(param_1 + 0x44)" * (cast_expression "(undefined4 *)(param_1 + 0x44)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x44)" ( (binary_expression "param_1 + 0x44" identifier + number_literal) )))) = number_literal) ;) })) }) (else_clause "else if ((iVar1 == 0xfd) && (iVar2 == 3)) {\n      *(undefined4 *)(param_1 + 0x48) = 0;\n    }" else (if_statement "if ((iVar1 == 0xfd) && (iVar2 == 3)) {\n      *(undefined4 *)(param_1 + 0x48) = 0;\n    }" if (parenthesized_expression "((iVar1 == 0xfd) && (iVar2 == 3))" ( (binary_expression "(iVar1 == 0xfd) && (iVar2 == 3)" (parenthesized_expression "(iVar1 == 0xfd)" ( (binary_expression "iVar1 == 0xfd" identifier == number_literal) )) && (parenthesized_expression "(iVar2 == 3)" ( (binary_expression "iVar2 == 3" identifier == number_literal) ))) )) (compound_statement "{\n      *(undefined4 *)(param_1 + 0x48) = 0;\n    }" { (expression_statement "*(undefined4 *)(param_1 + 0x48) = 0;" (assignment_expression "*(undefined4 *)(param_1 + 0x48) = 0" (pointer_expression "*(undefined4 *)(param_1 + 0x48)" * (cast_expression "(undefined4 *)(param_1 + 0x48)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x48)" ( (binary_expression "param_1 + 0x48" identifier + number_literal) )))) = number_literal) ;) }))))) }))) (if_statement "if (*(int *)(param_1 + 0x10) != 0) {\n    FUN_0002ada0(*(int *)(param_1 + 0x10));\n  }" if (parenthesized_expression "(*(int *)(param_1 + 0x10) != 0)" ( (binary_expression "*(int *)(param_1 + 0x10) != 0" (pointer_expression "*(int *)(param_1 + 0x10)" * (cast_expression "(int *)(param_1 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x10)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n    FUN_0002ada0(*(int *)(param_1 + 0x10));\n  }" { (expression_statement "FUN_0002ada0(*(int *)(param_1 + 0x10));" (call_expression "FUN_0002ada0(*(int *)(param_1 + 0x10))" identifier (argument_list "(*(int *)(param_1 + 0x10))" ( (pointer_expression "*(int *)(param_1 + 0x10)" * (cast_expression "(int *)(param_1 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x10)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) )))) ))) ;) })) (if_statement "if (*(int *)(param_1 + 0x4c) != 0) goto LAB_0003d8d8;" if (parenthesized_expression "(*(int *)(param_1 + 0x4c) != 0)" ( (binary_expression "*(int *)(param_1 + 0x4c) != 0" (pointer_expression "*(int *)(param_1 + 0x4c)" * (cast_expression "(int *)(param_1 + 0x4c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x4c)" ( (binary_expression "param_1 + 0x4c" identifier + number_literal) )))) != number_literal) )) (goto_statement "goto LAB_0003d8d8;" goto statement_identifier ;)) (if_statement "if (*(int *)(param_1 + 0x30) == 2) {\n    local_21 = 1;\n    local_23 = 0xfdff;\n    iVar2 = **(int **)(param_1 + 4);\n    *(undefined4 *)(param_1 + 0x30) = 0;\n    uVar3 = (**(code **)(iVar2 + 8))(*(int **)(param_1 + 4),&local_23,3);\n    *(undefined4 *)(param_1 + 0x50) = uVar3;\n    uVar3 = FUN_0003ca70();\n    uVar3 = FUN_000306f0("%s:\t%s %s","client",&DAT_000920a3,uVar3);\n    FUN_00068500(*(undefined4 *)(param_1 + 0xc),uVar3);\n    FUN_00031580(uVar3);\n    if (*(int *)(param_1 + 0x34) == 2) goto LAB_0003d9e4;\nLAB_0003d8c7:\n    iVar2 = *(int *)(param_1 + 0x38);\n  }\n  else {\n    if (*(int *)(param_1 + 0x34) != 2) goto LAB_0003d8c7;\nLAB_0003d9e4:\n    local_21 = 3;\n    local_23 = 0xfbff;\n    iVar2 = **(int **)(param_1 + 4);\n    *(undefined4 *)(param_1 + 0x34) = 0;\n    uVar3 = (**(code **)(iVar2 + 8))(*(int **)(param_1 + 4),&local_23,3);\n    *(undefined4 *)(param_1 + 0x50) = uVar3;\n    uVar3 = FUN_0003ca70();\n    uVar3 = FUN_000306f0("%s:\t%s %s","client",&DAT_000920ab,uVar3);\n    FUN_00068500(*(undefined4 *)(param_1 + 0xc),uVar3);\n    FUN_00031580(uVar3);\n    iVar2 = *(int *)(param_1 + 0x38);\n  }" if (parenthesized_expression "(*(int *)(param_1 + 0x30) == 2)" ( (binary_expression "*(int *)(param_1 + 0x30) == 2" (pointer_expression "*(int *)(param_1 + 0x30)" * (cast_expression "(int *)(param_1 + 0x30)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x30)" ( (binary_expression "param_1 + 0x30" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n    local_21 = 1;\n    local_23 = 0xfdff;\n    iVar2 = **(int **)(param_1 + 4);\n    *(undefined4 *)(param_1 + 0x30) = 0;\n    uVar3 = (**(code **)(iVar2 + 8))(*(int **)(param_1 + 4),&local_23,3);\n    *(undefined4 *)(param_1 + 0x50) = uVar3;\n    uVar3 = FUN_0003ca70();\n    uVar3 = FUN_000306f0("%s:\t%s %s","client",&DAT_000920a3,uVar3);\n    FUN_00068500(*(undefined4 *)(param_1 + 0xc),uVar3);\n    FUN_00031580(uVar3);\n    if (*(int *)(param_1 + 0x34) == 2) goto LAB_0003d9e4;\nLAB_0003d8c7:\n    iVar2 = *(int *)(param_1 + 0x38);\n  }" { (expression_statement "local_21 = 1;" (assignment_expression "local_21 = 1" identifier = number_literal) ;) (expression_statement "local_23 = 0xfdff;" (assignment_expression "local_23 = 0xfdff" identifier = number_literal) ;) (expression_statement "iVar2 = **(int **)(param_1 + 4);" (assignment_expression "iVar2 = **(int **)(param_1 + 4)" identifier = (pointer_expression "**(int **)(param_1 + 4)" * (pointer_expression "*(int **)(param_1 + 4)" * (cast_expression "(int **)(param_1 + 4)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) )))))) ;) (expression_statement "*(undefined4 *)(param_1 + 0x30) = 0;" (assignment_expression "*(undefined4 *)(param_1 + 0x30) = 0" (pointer_expression "*(undefined4 *)(param_1 + 0x30)" * (cast_expression "(undefined4 *)(param_1 + 0x30)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x30)" ( (binary_expression "param_1 + 0x30" identifier + number_literal) )))) = number_literal) ;) (expression_statement "uVar3 = (**(code **)(iVar2 + 8))(*(int **)(param_1 + 4),&local_23,3);" (assignment_expression "uVar3 = (**(code **)(iVar2 + 8))(*(int **)(param_1 + 4),&local_23,3)" identifier = (call_expression "(**(code **)(iVar2 + 8))(*(int **)(param_1 + 4),&local_23,3)" (parenthesized_expression "(**(code **)(iVar2 + 8))" ( (pointer_expression "**(code **)(iVar2 + 8)" * (pointer_expression "*(code **)(iVar2 + 8)" * (cast_expression "(code **)(iVar2 + 8)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar2 + 8)" ( (binary_expression "iVar2 + 8" identifier + number_literal) ))))) )) (argument_list "(*(int **)(param_1 + 4),&local_23,3)" ( (pointer_expression "*(int **)(param_1 + 4)" * (cast_expression "(int **)(param_1 + 4)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) )))) , (pointer_expression "&local_23" & identifier) , number_literal )))) ;) (expression_statement "*(undefined4 *)(param_1 + 0x50) = uVar3;" (assignment_expression "*(undefined4 *)(param_1 + 0x50) = uVar3" (pointer_expression "*(undefined4 *)(param_1 + 0x50)" * (cast_expression "(undefined4 *)(param_1 + 0x50)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x50)" ( (binary_expression "param_1 + 0x50" identifier + number_literal) )))) = identifier) ;) (expression_statement "uVar3 = FUN_0003ca70();" (assignment_expression "uVar3 = FUN_0003ca70()" identifier = (call_expression "FUN_0003ca70()" identifier (argument_list "()" ( )))) ;) (expression_statement "uVar3 = FUN_000306f0("%s:\t%s %s","client",&DAT_000920a3,uVar3);" (assignment_expression "uVar3 = FUN_000306f0("%s:\t%s %s","client",&DAT_000920a3,uVar3)" identifier = (call_expression "FUN_000306f0("%s:\t%s %s","client",&DAT_000920a3,uVar3)" identifier (argument_list "("%s:\t%s %s","client",&DAT_000920a3,uVar3)" ( (string_literal ""%s:\t%s %s"" " string_content escape_sequence string_content ") , (string_literal ""client"" " string_content ") , (pointer_expression "&DAT_000920a3" & identifier) , identifier )))) ;) (expression_statement "FUN_00068500(*(undefined4 *)(param_1 + 0xc),uVar3);" (call_expression "FUN_00068500(*(undefined4 *)(param_1 + 0xc),uVar3)" identifier (argument_list "(*(undefined4 *)(param_1 + 0xc),uVar3)" ( (pointer_expression "*(undefined4 *)(param_1 + 0xc)" * (cast_expression "(undefined4 *)(param_1 + 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xc)" ( (binary_expression "param_1 + 0xc" identifier + number_literal) )))) , identifier ))) ;) (expression_statement "FUN_00031580(uVar3);" (call_expression "FUN_00031580(uVar3)" identifier (argument_list "(uVar3)" ( identifier ))) ;) (if_statement "if (*(int *)(param_1 + 0x34) == 2) goto LAB_0003d9e4;" if (parenthesized_expression "(*(int *)(param_1 + 0x34) == 2)" ( (binary_expression "*(int *)(param_1 + 0x34) == 2" (pointer_expression "*(int *)(param_1 + 0x34)" * (cast_expression "(int *)(param_1 + 0x34)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x34)" ( (binary_expression "param_1 + 0x34" identifier + number_literal) )))) == number_literal) )) (goto_statement "goto LAB_0003d9e4;" goto statement_identifier ;)) (labeled_statement "LAB_0003d8c7:\n    iVar2 = *(int *)(param_1 + 0x38);" statement_identifier : (expression_statement "iVar2 = *(int *)(param_1 + 0x38);" (assignment_expression "iVar2 = *(int *)(param_1 + 0x38)" identifier = (pointer_expression "*(int *)(param_1 + 0x38)" * (cast_expression "(int *)(param_1 + 0x38)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x38)" ( (binary_expression "param_1 + 0x38" identifier + number_literal) ))))) ;)) }) (else_clause "else {\n    if (*(int *)(param_1 + 0x34) != 2) goto LAB_0003d8c7;\nLAB_0003d9e4:\n    local_21 = 3;\n    local_23 = 0xfbff;\n    iVar2 = **(int **)(param_1 + 4);\n    *(undefined4 *)(param_1 + 0x34) = 0;\n    uVar3 = (**(code **)(iVar2 + 8))(*(int **)(param_1 + 4),&local_23,3);\n    *(undefined4 *)(param_1 + 0x50) = uVar3;\n    uVar3 = FUN_0003ca70();\n    uVar3 = FUN_000306f0("%s:\t%s %s","client",&DAT_000920ab,uVar3);\n    FUN_00068500(*(undefined4 *)(param_1 + 0xc),uVar3);\n    FUN_00031580(uVar3);\n    iVar2 = *(int *)(param_1 + 0x38);\n  }" else (compound_statement "{\n    if (*(int *)(param_1 + 0x34) != 2) goto LAB_0003d8c7;\nLAB_0003d9e4:\n    local_21 = 3;\n    local_23 = 0xfbff;\n    iVar2 = **(int **)(param_1 + 4);\n    *(undefined4 *)(param_1 + 0x34) = 0;\n    uVar3 = (**(code **)(iVar2 + 8))(*(int **)(param_1 + 4),&local_23,3);\n    *(undefined4 *)(param_1 + 0x50) = uVar3;\n    uVar3 = FUN_0003ca70();\n    uVar3 = FUN_000306f0("%s:\t%s %s","client",&DAT_000920ab,uVar3);\n    FUN_00068500(*(undefined4 *)(param_1 + 0xc),uVar3);\n    FUN_00031580(uVar3);\n    iVar2 = *(int *)(param_1 + 0x38);\n  }" { (if_statement "if (*(int *)(param_1 + 0x34) != 2) goto LAB_0003d8c7;" if (parenthesized_expression "(*(int *)(param_1 + 0x34) != 2)" ( (binary_expression "*(int *)(param_1 + 0x34) != 2" (pointer_expression "*(int *)(param_1 + 0x34)" * (cast_expression "(int *)(param_1 + 0x34)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x34)" ( (binary_expression "param_1 + 0x34" identifier + number_literal) )))) != number_literal) )) (goto_statement "goto LAB_0003d8c7;" goto statement_identifier ;)) (labeled_statement "LAB_0003d9e4:\n    local_21 = 3;" statement_identifier : (expression_statement "local_21 = 3;" (assignment_expression "local_21 = 3" identifier = number_literal) ;)) (expression_statement "local_23 = 0xfbff;" (assignment_expression "local_23 = 0xfbff" identifier = number_literal) ;) (expression_statement "iVar2 = **(int **)(param_1 + 4);" (assignment_expression "iVar2 = **(int **)(param_1 + 4)" identifier = (pointer_expression "**(int **)(param_1 + 4)" * (pointer_expression "*(int **)(param_1 + 4)" * (cast_expression "(int **)(param_1 + 4)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) )))))) ;) (expression_statement "*(undefined4 *)(param_1 + 0x34) = 0;" (assignment_expression "*(undefined4 *)(param_1 + 0x34) = 0" (pointer_expression "*(undefined4 *)(param_1 + 0x34)" * (cast_expression "(undefined4 *)(param_1 + 0x34)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x34)" ( (binary_expression "param_1 + 0x34" identifier + number_literal) )))) = number_literal) ;) (expression_statement "uVar3 = (**(code **)(iVar2 + 8))(*(int **)(param_1 + 4),&local_23,3);" (assignment_expression "uVar3 = (**(code **)(iVar2 + 8))(*(int **)(param_1 + 4),&local_23,3)" identifier = (call_expression "(**(code **)(iVar2 + 8))(*(int **)(param_1 + 4),&local_23,3)" (parenthesized_expression "(**(code **)(iVar2 + 8))" ( (pointer_expression "**(code **)(iVar2 + 8)" * (pointer_expression "*(code **)(iVar2 + 8)" * (cast_expression "(code **)(iVar2 + 8)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar2 + 8)" ( (binary_expression "iVar2 + 8" identifier + number_literal) ))))) )) (argument_list "(*(int **)(param_1 + 4),&local_23,3)" ( (pointer_expression "*(int **)(param_1 + 4)" * (cast_expression "(int **)(param_1 + 4)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) )))) , (pointer_expression "&local_23" & identifier) , number_literal )))) ;) (expression_statement "*(undefined4 *)(param_1 + 0x50) = uVar3;" (assignment_expression "*(undefined4 *)(param_1 + 0x50) = uVar3" (pointer_expression "*(undefined4 *)(param_1 + 0x50)" * (cast_expression "(undefined4 *)(param_1 + 0x50)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x50)" ( (binary_expression "param_1 + 0x50" identifier + number_literal) )))) = identifier) ;) (expression_statement "uVar3 = FUN_0003ca70();" (assignment_expression "uVar3 = FUN_0003ca70()" identifier = (call_expression "FUN_0003ca70()" identifier (argument_list "()" ( )))) ;) (expression_statement "uVar3 = FUN_000306f0("%s:\t%s %s","client",&DAT_000920ab,uVar3);" (assignment_expression "uVar3 = FUN_000306f0("%s:\t%s %s","client",&DAT_000920ab,uVar3)" identifier = (call_expression "FUN_000306f0("%s:\t%s %s","client",&DAT_000920ab,uVar3)" identifier (argument_list "("%s:\t%s %s","client",&DAT_000920ab,uVar3)" ( (string_literal ""%s:\t%s %s"" " string_content escape_sequence string_content ") , (string_literal ""client"" " string_content ") , (pointer_expression "&DAT_000920ab" & identifier) , identifier )))) ;) (expression_statement "FUN_00068500(*(undefined4 *)(param_1 + 0xc),uVar3);" (call_expression "FUN_00068500(*(undefined4 *)(param_1 + 0xc),uVar3)" identifier (argument_list "(*(undefined4 *)(param_1 + 0xc),uVar3)" ( (pointer_expression "*(undefined4 *)(param_1 + 0xc)" * (cast_expression "(undefined4 *)(param_1 + 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xc)" ( (binary_expression "param_1 + 0xc" identifier + number_literal) )))) , identifier ))) ;) (expression_statement "FUN_00031580(uVar3);" (call_expression "FUN_00031580(uVar3)" identifier (argument_list "(uVar3)" ( identifier ))) ;) (expression_statement "iVar2 = *(int *)(param_1 + 0x38);" (assignment_expression "iVar2 = *(int *)(param_1 + 0x38)" identifier = (pointer_expression "*(int *)(param_1 + 0x38)" * (cast_expression "(int *)(param_1 + 0x38)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x38)" ( (binary_expression "param_1 + 0x38" identifier + number_literal) ))))) ;) }))) (if_statement "if (iVar2 == 2) {\n    local_21 = 3;\n    local_23 = 0xfdff;\n    *(undefined4 *)(param_1 + 0x38) = 0;\n    uVar3 = (**(code **)(**(int **)(param_1 + 4) + 8))(*(int **)(param_1 + 4),&local_23,3);\n    *(undefined4 *)(param_1 + 0x50) = uVar3;\n    uVar3 = FUN_0003ca70();\n    uVar3 = FUN_000306f0("%s:\t%s %s","client",&DAT_000920a3,uVar3);\n    FUN_00068500(*(undefined4 *)(param_1 + 0xc),uVar3);\n    FUN_00031580(uVar3);\n  }" if (parenthesized_expression "(iVar2 == 2)" ( (binary_expression "iVar2 == 2" identifier == number_literal) )) (compound_statement "{\n    local_21 = 3;\n    local_23 = 0xfdff;\n    *(undefined4 *)(param_1 + 0x38) = 0;\n    uVar3 = (**(code **)(**(int **)(param_1 + 4) + 8))(*(int **)(param_1 + 4),&local_23,3);\n    *(undefined4 *)(param_1 + 0x50) = uVar3;\n    uVar3 = FUN_0003ca70();\n    uVar3 = FUN_000306f0("%s:\t%s %s","client",&DAT_000920a3,uVar3);\n    FUN_00068500(*(undefined4 *)(param_1 + 0xc),uVar3);\n    FUN_00031580(uVar3);\n  }" { (expression_statement "local_21 = 3;" (assignment_expression "local_21 = 3" identifier = number_literal) ;) (expression_statement "local_23 = 0xfdff;" (assignment_expression "local_23 = 0xfdff" identifier = number_literal) ;) (expression_statement "*(undefined4 *)(param_1 + 0x38) = 0;" (assignment_expression "*(undefined4 *)(param_1 + 0x38) = 0" (pointer_expression "*(undefined4 *)(param_1 + 0x38)" * (cast_expression "(undefined4 *)(param_1 + 0x38)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x38)" ( (binary_expression "param_1 + 0x38" identifier + number_literal) )))) = number_literal) ;) (expression_statement "uVar3 = (**(code **)(**(int **)(param_1 + 4) + 8))(*(int **)(param_1 + 4),&local_23,3);" (assignment_expression "uVar3 = (**(code **)(**(int **)(param_1 + 4) + 8))(*(int **)(param_1 + 4),&local_23,3)" identifier = (call_expression "(**(code **)(**(int **)(param_1 + 4) + 8))(*(int **)(param_1 + 4),&local_23,3)" (parenthesized_expression "(**(code **)(**(int **)(param_1 + 4) + 8))" ( (pointer_expression "**(code **)(**(int **)(param_1 + 4) + 8)" * (pointer_expression "*(code **)(**(int **)(param_1 + 4) + 8)" * (cast_expression "(code **)(**(int **)(param_1 + 4) + 8)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(**(int **)(param_1 + 4) + 8)" ( (binary_expression "**(int **)(param_1 + 4) + 8" (pointer_expression "**(int **)(param_1 + 4)" * (pointer_expression "*(int **)(param_1 + 4)" * (cast_expression "(int **)(param_1 + 4)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) ))))) + number_literal) ))))) )) (argument_list "(*(int **)(param_1 + 4),&local_23,3)" ( (pointer_expression "*(int **)(param_1 + 4)" * (cast_expression "(int **)(param_1 + 4)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) )))) , (pointer_expression "&local_23" & identifier) , number_literal )))) ;) (expression_statement "*(undefined4 *)(param_1 + 0x50) = uVar3;" (assignment_expression "*(undefined4 *)(param_1 + 0x50) = uVar3" (pointer_expression "*(undefined4 *)(param_1 + 0x50)" * (cast_expression "(undefined4 *)(param_1 + 0x50)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x50)" ( (binary_expression "param_1 + 0x50" identifier + number_literal) )))) = identifier) ;) (expression_statement "uVar3 = FUN_0003ca70();" (assignment_expression "uVar3 = FUN_0003ca70()" identifier = (call_expression "FUN_0003ca70()" identifier (argument_list "()" ( )))) ;) (expression_statement "uVar3 = FUN_000306f0("%s:\t%s %s","client",&DAT_000920a3,uVar3);" (assignment_expression "uVar3 = FUN_000306f0("%s:\t%s %s","client",&DAT_000920a3,uVar3)" identifier = (call_expression "FUN_000306f0("%s:\t%s %s","client",&DAT_000920a3,uVar3)" identifier (argument_list "("%s:\t%s %s","client",&DAT_000920a3,uVar3)" ( (string_literal ""%s:\t%s %s"" " string_content escape_sequence string_content ") , (string_literal ""client"" " string_content ") , (pointer_expression "&DAT_000920a3" & identifier) , identifier )))) ;) (expression_statement "FUN_00068500(*(undefined4 *)(param_1 + 0xc),uVar3);" (call_expression "FUN_00068500(*(undefined4 *)(param_1 + 0xc),uVar3)" identifier (argument_list "(*(undefined4 *)(param_1 + 0xc),uVar3)" ( (pointer_expression "*(undefined4 *)(param_1 + 0xc)" * (cast_expression "(undefined4 *)(param_1 + 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xc)" ( (binary_expression "param_1 + 0xc" identifier + number_literal) )))) , identifier ))) ;) (expression_statement "FUN_00031580(uVar3);" (call_expression "FUN_00031580(uVar3)" identifier (argument_list "(uVar3)" ( identifier ))) ;) })) (expression_statement "*(undefined4 *)(param_1 + 0x4c) = 1;" (assignment_expression "*(undefined4 *)(param_1 + 0x4c) = 1" (pointer_expression "*(undefined4 *)(param_1 + 0x4c)" * (cast_expression "(undefined4 *)(param_1 + 0x4c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x4c)" ( (binary_expression "param_1 + 0x4c" identifier + number_literal) )))) = number_literal) ;) (labeled_statement "LAB_0003d8d8:\n  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return;\n  }" statement_identifier : (if_statement "if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return;\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    return;\n  }" { (return_statement "return;" return ;) }))) (expression_statement "FUN_00077880();" (call_expression "FUN_00077880()" identifier (argument_list "()" ( ))) ;) })))
(translation_unit (function_definition TYPE (ERROR IDENT) (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE (pointer_declarator * IDENT)) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ 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 IDENT == LIT) )) || (parenthesized_expression ( (binary_expression IDENT == LIT) ))) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression & IDENT)) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression & IDENT)) ;) }))) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) + (binary_expression IDENT * LIT)) )))) < LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT)) ;) })) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) + (binary_expression IDENT * LIT)) )))) = LIT) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (goto_statement goto statement_identifier ;) })) }) (else_clause else (compound_statement { (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) })) }) (else_clause else (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == LIT) )) && (parenthesized_expression ( (binary_expression IDENT == LIT) ))) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) }))))) }))) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != LIT) )) (goto_statement goto statement_identifier ;)) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = 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 ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , (pointer_expression & IDENT) , LIT )))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (string_literal " string_content escape_sequence string_content ") , (string_literal " string_content ") , (pointer_expression & IDENT) , IDENT )))) ;) (expression_statement (call_expression IDENT (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , IDENT ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == LIT) )) (goto_statement goto statement_identifier ;)) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;)) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != LIT) )) (goto_statement goto statement_identifier ;)) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = LIT) ;)) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = 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 ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , (pointer_expression & IDENT) , LIT )))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (string_literal " string_content escape_sequence string_content ") , (string_literal " string_content ") , (pointer_expression & IDENT) , IDENT )))) ;) (expression_statement (call_expression IDENT (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , IDENT ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) }))) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = 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 (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) + LIT) ))))) )) (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , (pointer_expression & IDENT) , LIT )))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (string_literal " string_content escape_sequence string_content ") , (string_literal " string_content ") , (pointer_expression & IDENT) , IDENT )))) ;) (expression_statement (call_expression IDENT (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , IDENT ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) })) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = 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 { (return_statement return ;) }))) (expression_statement (call_expression IDENT (argument_list ( ))) ;) })))
(function_definition "void __regparm3 FUN_0003d850(int param_1,int *param_2)\n\n{\n  int iVar1;\n  int iVar2;\n  undefined4 uVar3;\n  undefined *puVar4;\n  int in_GS_OFFSET;\n  undefined2 local_23;\n  undefined1 local_21;\n  int local_20;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x3d85d;\n  iVar1 = *param_2;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  iVar2 = param_2[4];\n  if (iVar1 == 0xfb) {\n    if (iVar2 == 0x1f) {\n      FUN_0003d040(param_1,*(undefined4 *)(param_1 + 0x14),*(undefined4 *)(param_1 + 0x18));\n      iVar1 = *param_2;\n      iVar2 = param_2[4];\n      if (iVar1 != 0xfb) goto joined_r0x0003d942;\n    }\n    if ((iVar2 == 0x27) || (iVar2 == 0x24)) {\n      if (iVar2 == 0x27) {\n        iVar2 = 3;\n        puVar4 = &DAT_00092744;\n      }\n      else {\n        iVar2 = 4;\n        puVar4 = &DAT_00092728;\n      }\n      iVar2 = iVar2 + 4;\n      if (*(uint *)(param_1 + 0xc + iVar2 * 4) < 2) {\n        FUN_0003d2f0();\n        iVar2 = *(int *)(puVar4 + 0x14) + 4;\n      }\n      *(undefined4 *)(param_1 + 0xc + iVar2 * 4) = 3;\n      iVar2 = param_2[4];\n      iVar1 = *param_2;\n      goto joined_r0x0003d942;\n    }\n  }\n  else {\njoined_r0x0003d942:\n    if (iVar2 == 1) {\n      if (iVar1 == 0xfd) {\n        *(undefined4 *)(param_1 + 0x44) = 0;\n      }\n    }\n    else if ((iVar1 == 0xfd) && (iVar2 == 3)) {\n      *(undefined4 *)(param_1 + 0x48) = 0;\n    }\n  }\n  if (*(int *)(param_1 + 0x10) != 0) {\n    FUN_0002ada0(*(int *)(param_1 + 0x10));\n  }\n  if (*(int *)(param_1 + 0x4c) != 0) goto LAB_0003d8d8;\n  if (*(int *)(param_1 + 0x30) == 2) {\n    local_21 = 1;\n    local_23 = 0xfdff;\n    iVar2 = **(int **)(param_1 + 4);\n    *(undefined4 *)(param_1 + 0x30) = 0;\n    uVar3 = (**(code **)(iVar2 + 8))(*(int **)(param_1 + 4),&local_23,3);\n    *(undefined4 *)(param_1 + 0x50) = uVar3;\n    uVar3 = FUN_0003ca70();\n    uVar3 = FUN_000306f0("%s:\t%s %s","client",&DAT_000920a3,uVar3);\n    FUN_00068500(*(undefined4 *)(param_1 + 0xc),uVar3);\n    FUN_00031580(uVar3);\n    if (*(int *)(param_1 + 0x34) == 2) goto LAB_0003d9e4;\nLAB_0003d8c7:\n    iVar2 = *(int *)(param_1 + 0x38);\n  }\n  else {\n    if (*(int *)(param_1 + 0x34) != 2) goto LAB_0003d8c7;\nLAB_0003d9e4:\n    local_21 = 3;\n    local_23 = 0xfbff;\n    iVar2 = **(int **)(param_1 + 4);\n    *(undefined4 *)(param_1 + 0x34) = 0;\n    uVar3 = (**(code **)(iVar2 + 8))(*(int **)(param_1 + 4),&local_23,3);\n    *(undefined4 *)(param_1 + 0x50) = uVar3;\n    uVar3 = FUN_0003ca70();\n    uVar3 = FUN_000306f0("%s:\t%s %s","client",&DAT_000920ab,uVar3);\n    FUN_00068500(*(undefined4 *)(param_1 + 0xc),uVar3);\n    FUN_00031580(uVar3);\n    iVar2 = *(int *)(param_1 + 0x38);\n  }\n  if (iVar2 == 2) {\n    local_21 = 3;\n    local_23 = 0xfdff;\n    *(undefined4 *)(param_1 + 0x38) = 0;\n    uVar3 = (**(code **)(**(int **)(param_1 + 4) + 8))(*(int **)(param_1 + 4),&local_23,3);\n    *(undefined4 *)(param_1 + 0x50) = uVar3;\n    uVar3 = FUN_0003ca70();\n    uVar3 = FUN_000306f0("%s:\t%s %s","client",&DAT_000920a3,uVar3);\n    FUN_00068500(*(undefined4 *)(param_1 + 0xc),uVar3);\n    FUN_00031580(uVar3);\n  }\n  *(undefined4 *)(param_1 + 0x4c) = 1;\nLAB_0003d8d8:\n  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return;\n  }\n                    \n  FUN_00077880();\n}" (primitive_type "void") (ERROR "__regparm3" (identifier "__regparm3")) (function_declarator "FUN_0003d850(int param_1,int *param_2)" (identifier "FUN_0003d850") (parameter_list "(int param_1,int *param_2)" (( "(") (parameter_declaration "int param_1" (primitive_type "int") (identifier "param_1")) (, ",") (parameter_declaration "int *param_2" (primitive_type "int") (pointer_declarator "*param_2" (* "*") (identifier "param_2"))) () ")"))) (compound_statement "{\n  int iVar1;\n  int iVar2;\n  undefined4 uVar3;\n  undefined *puVar4;\n  int in_GS_OFFSET;\n  undefined2 local_23;\n  undefined1 local_21;\n  int local_20;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x3d85d;\n  iVar1 = *param_2;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  iVar2 = param_2[4];\n  if (iVar1 == 0xfb) {\n    if (iVar2 == 0x1f) {\n      FUN_0003d040(param_1,*(undefined4 *)(param_1 + 0x14),*(undefined4 *)(param_1 + 0x18));\n      iVar1 = *param_2;\n      iVar2 = param_2[4];\n      if (iVar1 != 0xfb) goto joined_r0x0003d942;\n    }\n    if ((iVar2 == 0x27) || (iVar2 == 0x24)) {\n      if (iVar2 == 0x27) {\n        iVar2 = 3;\n        puVar4 = &DAT_00092744;\n      }\n      else {\n        iVar2 = 4;\n        puVar4 = &DAT_00092728;\n      }\n      iVar2 = iVar2 + 4;\n      if (*(uint *)(param_1 + 0xc + iVar2 * 4) < 2) {\n        FUN_0003d2f0();\n        iVar2 = *(int *)(puVar4 + 0x14) + 4;\n      }\n      *(undefined4 *)(param_1 + 0xc + iVar2 * 4) = 3;\n      iVar2 = param_2[4];\n      iVar1 = *param_2;\n      goto joined_r0x0003d942;\n    }\n  }\n  else {\njoined_r0x0003d942:\n    if (iVar2 == 1) {\n      if (iVar1 == 0xfd) {\n        *(undefined4 *)(param_1 + 0x44) = 0;\n      }\n    }\n    else if ((iVar1 == 0xfd) && (iVar2 == 3)) {\n      *(undefined4 *)(param_1 + 0x48) = 0;\n    }\n  }\n  if (*(int *)(param_1 + 0x10) != 0) {\n    FUN_0002ada0(*(int *)(param_1 + 0x10));\n  }\n  if (*(int *)(param_1 + 0x4c) != 0) goto LAB_0003d8d8;\n  if (*(int *)(param_1 + 0x30) == 2) {\n    local_21 = 1;\n    local_23 = 0xfdff;\n    iVar2 = **(int **)(param_1 + 4);\n    *(undefined4 *)(param_1 + 0x30) = 0;\n    uVar3 = (**(code **)(iVar2 + 8))(*(int **)(param_1 + 4),&local_23,3);\n    *(undefined4 *)(param_1 + 0x50) = uVar3;\n    uVar3 = FUN_0003ca70();\n    uVar3 = FUN_000306f0("%s:\t%s %s","client",&DAT_000920a3,uVar3);\n    FUN_00068500(*(undefined4 *)(param_1 + 0xc),uVar3);\n    FUN_00031580(uVar3);\n    if (*(int *)(param_1 + 0x34) == 2) goto LAB_0003d9e4;\nLAB_0003d8c7:\n    iVar2 = *(int *)(param_1 + 0x38);\n  }\n  else {\n    if (*(int *)(param_1 + 0x34) != 2) goto LAB_0003d8c7;\nLAB_0003d9e4:\n    local_21 = 3;\n    local_23 = 0xfbff;\n    iVar2 = **(int **)(param_1 + 4);\n    *(undefined4 *)(param_1 + 0x34) = 0;\n    uVar3 = (**(code **)(iVar2 + 8))(*(int **)(param_1 + 4),&local_23,3);\n    *(undefined4 *)(param_1 + 0x50) = uVar3;\n    uVar3 = FUN_0003ca70();\n    uVar3 = FUN_000306f0("%s:\t%s %s","client",&DAT_000920ab,uVar3);\n    FUN_00068500(*(undefined4 *)(param_1 + 0xc),uVar3);\n    FUN_00031580(uVar3);\n    iVar2 = *(int *)(param_1 + 0x38);\n  }\n  if (iVar2 == 2) {\n    local_21 = 3;\n    local_23 = 0xfdff;\n    *(undefined4 *)(param_1 + 0x38) = 0;\n    uVar3 = (**(code **)(**(int **)(param_1 + 4) + 8))(*(int **)(param_1 + 4),&local_23,3);\n    *(undefined4 *)(param_1 + 0x50) = uVar3;\n    uVar3 = FUN_0003ca70();\n    uVar3 = FUN_000306f0("%s:\t%s %s","client",&DAT_000920a3,uVar3);\n    FUN_00068500(*(undefined4 *)(param_1 + 0xc),uVar3);\n    FUN_00031580(uVar3);\n  }\n  *(undefined4 *)(param_1 + 0x4c) = 1;\nLAB_0003d8d8:\n  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return;\n  }\n                    \n  FUN_00077880();\n}" ({ "{") (declaration "int iVar1;" (primitive_type "int") (identifier "iVar1") (; ";")) (declaration "int iVar2;" (primitive_type "int") (identifier "iVar2") (; ";")) (declaration "undefined4 uVar3;" (type_identifier "undefined4") (identifier "uVar3") (; ";")) (declaration "undefined *puVar4;" (type_identifier "undefined") (pointer_declarator "*puVar4" (* "*") (identifier "puVar4")) (; ";")) (declaration "int in_GS_OFFSET;" (primitive_type "int") (identifier "in_GS_OFFSET") (; ";")) (declaration "undefined2 local_23;" (type_identifier "undefined2") (identifier "local_23") (; ";")) (declaration "undefined1 local_21;" (type_identifier "undefined1") (identifier "local_21") (; ";")) (declaration "int local_20;" (primitive_type "int") (identifier "local_20") (; ";")) (declaration "undefined4 uStack_14;" (type_identifier "undefined4") (identifier "uStack_14") (; ";")) (expression_statement "uStack_14 = 0x3d85d;" (assignment_expression "uStack_14 = 0x3d85d" (identifier "uStack_14") (= "=") (number_literal "0x3d85d")) (; ";")) (expression_statement "iVar1 = *param_2;" (assignment_expression "iVar1 = *param_2" (identifier "iVar1") (= "=") (pointer_expression "*param_2" (* "*") (identifier "param_2"))) (; ";")) (expression_statement "local_20 = *(int *)(in_GS_OFFSET + 0x14);" (assignment_expression "local_20 = *(int *)(in_GS_OFFSET + 0x14)" (identifier "local_20") (= "=") (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 = param_2[4];" (assignment_expression "iVar2 = param_2[4]" (identifier "iVar2") (= "=") (subscript_expression "param_2[4]" (identifier "param_2") ([ "[") (number_literal "4") (] "]"))) (; ";")) (if_statement "if (iVar1 == 0xfb) {\n    if (iVar2 == 0x1f) {\n      FUN_0003d040(param_1,*(undefined4 *)(param_1 + 0x14),*(undefined4 *)(param_1 + 0x18));\n      iVar1 = *param_2;\n      iVar2 = param_2[4];\n      if (iVar1 != 0xfb) goto joined_r0x0003d942;\n    }\n    if ((iVar2 == 0x27) || (iVar2 == 0x24)) {\n      if (iVar2 == 0x27) {\n        iVar2 = 3;\n        puVar4 = &DAT_00092744;\n      }\n      else {\n        iVar2 = 4;\n        puVar4 = &DAT_00092728;\n      }\n      iVar2 = iVar2 + 4;\n      if (*(uint *)(param_1 + 0xc + iVar2 * 4) < 2) {\n        FUN_0003d2f0();\n        iVar2 = *(int *)(puVar4 + 0x14) + 4;\n      }\n      *(undefined4 *)(param_1 + 0xc + iVar2 * 4) = 3;\n      iVar2 = param_2[4];\n      iVar1 = *param_2;\n      goto joined_r0x0003d942;\n    }\n  }\n  else {\njoined_r0x0003d942:\n    if (iVar2 == 1) {\n      if (iVar1 == 0xfd) {\n        *(undefined4 *)(param_1 + 0x44) = 0;\n      }\n    }\n    else if ((iVar1 == 0xfd) && (iVar2 == 3)) {\n      *(undefined4 *)(param_1 + 0x48) = 0;\n    }\n  }" (if "if") (parenthesized_expression "(iVar1 == 0xfb)" (( "(") (binary_expression "iVar1 == 0xfb" (identifier "iVar1") (== "==") (number_literal "0xfb")) () ")")) (compound_statement "{\n    if (iVar2 == 0x1f) {\n      FUN_0003d040(param_1,*(undefined4 *)(param_1 + 0x14),*(undefined4 *)(param_1 + 0x18));\n      iVar1 = *param_2;\n      iVar2 = param_2[4];\n      if (iVar1 != 0xfb) goto joined_r0x0003d942;\n    }\n    if ((iVar2 == 0x27) || (iVar2 == 0x24)) {\n      if (iVar2 == 0x27) {\n        iVar2 = 3;\n        puVar4 = &DAT_00092744;\n      }\n      else {\n        iVar2 = 4;\n        puVar4 = &DAT_00092728;\n      }\n      iVar2 = iVar2 + 4;\n      if (*(uint *)(param_1 + 0xc + iVar2 * 4) < 2) {\n        FUN_0003d2f0();\n        iVar2 = *(int *)(puVar4 + 0x14) + 4;\n      }\n      *(undefined4 *)(param_1 + 0xc + iVar2 * 4) = 3;\n      iVar2 = param_2[4];\n      iVar1 = *param_2;\n      goto joined_r0x0003d942;\n    }\n  }" ({ "{") (if_statement "if (iVar2 == 0x1f) {\n      FUN_0003d040(param_1,*(undefined4 *)(param_1 + 0x14),*(undefined4 *)(param_1 + 0x18));\n      iVar1 = *param_2;\n      iVar2 = param_2[4];\n      if (iVar1 != 0xfb) goto joined_r0x0003d942;\n    }" (if "if") (parenthesized_expression "(iVar2 == 0x1f)" (( "(") (binary_expression "iVar2 == 0x1f" (identifier "iVar2") (== "==") (number_literal "0x1f")) () ")")) (compound_statement "{\n      FUN_0003d040(param_1,*(undefined4 *)(param_1 + 0x14),*(undefined4 *)(param_1 + 0x18));\n      iVar1 = *param_2;\n      iVar2 = param_2[4];\n      if (iVar1 != 0xfb) goto joined_r0x0003d942;\n    }" ({ "{") (expression_statement "FUN_0003d040(param_1,*(undefined4 *)(param_1 + 0x14),*(undefined4 *)(param_1 + 0x18));" (call_expression "FUN_0003d040(param_1,*(undefined4 *)(param_1 + 0x14),*(undefined4 *)(param_1 + 0x18))" (identifier "FUN_0003d040") (argument_list "(param_1,*(undefined4 *)(param_1 + 0x14),*(undefined4 *)(param_1 + 0x18))" (( "(") (identifier "param_1") (, ",") (pointer_expression "*(undefined4 *)(param_1 + 0x14)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0x14)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x14)" (( "(") (binary_expression "param_1 + 0x14" (identifier "param_1") (+ "+") (number_literal "0x14")) () ")")))) (, ",") (pointer_expression "*(undefined4 *)(param_1 + 0x18)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0x18)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x18)" (( "(") (binary_expression "param_1 + 0x18" (identifier "param_1") (+ "+") (number_literal "0x18")) () ")")))) () ")"))) (; ";")) (expression_statement "iVar1 = *param_2;" (assignment_expression "iVar1 = *param_2" (identifier "iVar1") (= "=") (pointer_expression "*param_2" (* "*") (identifier "param_2"))) (; ";")) (expression_statement "iVar2 = param_2[4];" (assignment_expression "iVar2 = param_2[4]" (identifier "iVar2") (= "=") (subscript_expression "param_2[4]" (identifier "param_2") ([ "[") (number_literal "4") (] "]"))) (; ";")) (if_statement "if (iVar1 != 0xfb) goto joined_r0x0003d942;" (if "if") (parenthesized_expression "(iVar1 != 0xfb)" (( "(") (binary_expression "iVar1 != 0xfb" (identifier "iVar1") (!= "!=") (number_literal "0xfb")) () ")")) (goto_statement "goto joined_r0x0003d942;" (goto "goto") (statement_identifier "joined_r0x0003d942") (; ";"))) (} "}"))) (if_statement "if ((iVar2 == 0x27) || (iVar2 == 0x24)) {\n      if (iVar2 == 0x27) {\n        iVar2 = 3;\n        puVar4 = &DAT_00092744;\n      }\n      else {\n        iVar2 = 4;\n        puVar4 = &DAT_00092728;\n      }\n      iVar2 = iVar2 + 4;\n      if (*(uint *)(param_1 + 0xc + iVar2 * 4) < 2) {\n        FUN_0003d2f0();\n        iVar2 = *(int *)(puVar4 + 0x14) + 4;\n      }\n      *(undefined4 *)(param_1 + 0xc + iVar2 * 4) = 3;\n      iVar2 = param_2[4];\n      iVar1 = *param_2;\n      goto joined_r0x0003d942;\n    }" (if "if") (parenthesized_expression "((iVar2 == 0x27) || (iVar2 == 0x24))" (( "(") (binary_expression "(iVar2 == 0x27) || (iVar2 == 0x24)" (parenthesized_expression "(iVar2 == 0x27)" (( "(") (binary_expression "iVar2 == 0x27" (identifier "iVar2") (== "==") (number_literal "0x27")) () ")")) (|| "||") (parenthesized_expression "(iVar2 == 0x24)" (( "(") (binary_expression "iVar2 == 0x24" (identifier "iVar2") (== "==") (number_literal "0x24")) () ")"))) () ")")) (compound_statement "{\n      if (iVar2 == 0x27) {\n        iVar2 = 3;\n        puVar4 = &DAT_00092744;\n      }\n      else {\n        iVar2 = 4;\n        puVar4 = &DAT_00092728;\n      }\n      iVar2 = iVar2 + 4;\n      if (*(uint *)(param_1 + 0xc + iVar2 * 4) < 2) {\n        FUN_0003d2f0();\n        iVar2 = *(int *)(puVar4 + 0x14) + 4;\n      }\n      *(undefined4 *)(param_1 + 0xc + iVar2 * 4) = 3;\n      iVar2 = param_2[4];\n      iVar1 = *param_2;\n      goto joined_r0x0003d942;\n    }" ({ "{") (if_statement "if (iVar2 == 0x27) {\n        iVar2 = 3;\n        puVar4 = &DAT_00092744;\n      }\n      else {\n        iVar2 = 4;\n        puVar4 = &DAT_00092728;\n      }" (if "if") (parenthesized_expression "(iVar2 == 0x27)" (( "(") (binary_expression "iVar2 == 0x27" (identifier "iVar2") (== "==") (number_literal "0x27")) () ")")) (compound_statement "{\n        iVar2 = 3;\n        puVar4 = &DAT_00092744;\n      }" ({ "{") (expression_statement "iVar2 = 3;" (assignment_expression "iVar2 = 3" (identifier "iVar2") (= "=") (number_literal "3")) (; ";")) (expression_statement "puVar4 = &DAT_00092744;" (assignment_expression "puVar4 = &DAT_00092744" (identifier "puVar4") (= "=") (pointer_expression "&DAT_00092744" (& "&") (identifier "DAT_00092744"))) (; ";")) (} "}")) (else_clause "else {\n        iVar2 = 4;\n        puVar4 = &DAT_00092728;\n      }" (else "else") (compound_statement "{\n        iVar2 = 4;\n        puVar4 = &DAT_00092728;\n      }" ({ "{") (expression_statement "iVar2 = 4;" (assignment_expression "iVar2 = 4" (identifier "iVar2") (= "=") (number_literal "4")) (; ";")) (expression_statement "puVar4 = &DAT_00092728;" (assignment_expression "puVar4 = &DAT_00092728" (identifier "puVar4") (= "=") (pointer_expression "&DAT_00092728" (& "&") (identifier "DAT_00092728"))) (; ";")) (} "}")))) (expression_statement "iVar2 = iVar2 + 4;" (assignment_expression "iVar2 = iVar2 + 4" (identifier "iVar2") (= "=") (binary_expression "iVar2 + 4" (identifier "iVar2") (+ "+") (number_literal "4"))) (; ";")) (if_statement "if (*(uint *)(param_1 + 0xc + iVar2 * 4) < 2) {\n        FUN_0003d2f0();\n        iVar2 = *(int *)(puVar4 + 0x14) + 4;\n      }" (if "if") (parenthesized_expression "(*(uint *)(param_1 + 0xc + iVar2 * 4) < 2)" (( "(") (binary_expression "*(uint *)(param_1 + 0xc + iVar2 * 4) < 2" (pointer_expression "*(uint *)(param_1 + 0xc + iVar2 * 4)" (* "*") (cast_expression "(uint *)(param_1 + 0xc + iVar2 * 4)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xc + iVar2 * 4)" (( "(") (binary_expression "param_1 + 0xc + iVar2 * 4" (binary_expression "param_1 + 0xc" (identifier "param_1") (+ "+") (number_literal "0xc")) (+ "+") (binary_expression "iVar2 * 4" (identifier "iVar2") (* "*") (number_literal "4"))) () ")")))) (< "<") (number_literal "2")) () ")")) (compound_statement "{\n        FUN_0003d2f0();\n        iVar2 = *(int *)(puVar4 + 0x14) + 4;\n      }" ({ "{") (expression_statement "FUN_0003d2f0();" (call_expression "FUN_0003d2f0()" (identifier "FUN_0003d2f0") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "iVar2 = *(int *)(puVar4 + 0x14) + 4;" (assignment_expression "iVar2 = *(int *)(puVar4 + 0x14) + 4" (identifier "iVar2") (= "=") (binary_expression "*(int *)(puVar4 + 0x14) + 4" (pointer_expression "*(int *)(puVar4 + 0x14)" (* "*") (cast_expression "(int *)(puVar4 + 0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar4 + 0x14)" (( "(") (binary_expression "puVar4 + 0x14" (identifier "puVar4") (+ "+") (number_literal "0x14")) () ")")))) (+ "+") (number_literal "4"))) (; ";")) (} "}"))) (expression_statement "*(undefined4 *)(param_1 + 0xc + iVar2 * 4) = 3;" (assignment_expression "*(undefined4 *)(param_1 + 0xc + iVar2 * 4) = 3" (pointer_expression "*(undefined4 *)(param_1 + 0xc + iVar2 * 4)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0xc + iVar2 * 4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xc + iVar2 * 4)" (( "(") (binary_expression "param_1 + 0xc + iVar2 * 4" (binary_expression "param_1 + 0xc" (identifier "param_1") (+ "+") (number_literal "0xc")) (+ "+") (binary_expression "iVar2 * 4" (identifier "iVar2") (* "*") (number_literal "4"))) () ")")))) (= "=") (number_literal "3")) (; ";")) (expression_statement "iVar2 = param_2[4];" (assignment_expression "iVar2 = param_2[4]" (identifier "iVar2") (= "=") (subscript_expression "param_2[4]" (identifier "param_2") ([ "[") (number_literal "4") (] "]"))) (; ";")) (expression_statement "iVar1 = *param_2;" (assignment_expression "iVar1 = *param_2" (identifier "iVar1") (= "=") (pointer_expression "*param_2" (* "*") (identifier "param_2"))) (; ";")) (goto_statement "goto joined_r0x0003d942;" (goto "goto") (statement_identifier "joined_r0x0003d942") (; ";")) (} "}"))) (} "}")) (else_clause "else {\njoined_r0x0003d942:\n    if (iVar2 == 1) {\n      if (iVar1 == 0xfd) {\n        *(undefined4 *)(param_1 + 0x44) = 0;\n      }\n    }\n    else if ((iVar1 == 0xfd) && (iVar2 == 3)) {\n      *(undefined4 *)(param_1 + 0x48) = 0;\n    }\n  }" (else "else") (compound_statement "{\njoined_r0x0003d942:\n    if (iVar2 == 1) {\n      if (iVar1 == 0xfd) {\n        *(undefined4 *)(param_1 + 0x44) = 0;\n      }\n    }\n    else if ((iVar1 == 0xfd) && (iVar2 == 3)) {\n      *(undefined4 *)(param_1 + 0x48) = 0;\n    }\n  }" ({ "{") (labeled_statement "joined_r0x0003d942:\n    if (iVar2 == 1) {\n      if (iVar1 == 0xfd) {\n        *(undefined4 *)(param_1 + 0x44) = 0;\n      }\n    }\n    else if ((iVar1 == 0xfd) && (iVar2 == 3)) {\n      *(undefined4 *)(param_1 + 0x48) = 0;\n    }" (statement_identifier "joined_r0x0003d942") (: ":") (if_statement "if (iVar2 == 1) {\n      if (iVar1 == 0xfd) {\n        *(undefined4 *)(param_1 + 0x44) = 0;\n      }\n    }\n    else if ((iVar1 == 0xfd) && (iVar2 == 3)) {\n      *(undefined4 *)(param_1 + 0x48) = 0;\n    }" (if "if") (parenthesized_expression "(iVar2 == 1)" (( "(") (binary_expression "iVar2 == 1" (identifier "iVar2") (== "==") (number_literal "1")) () ")")) (compound_statement "{\n      if (iVar1 == 0xfd) {\n        *(undefined4 *)(param_1 + 0x44) = 0;\n      }\n    }" ({ "{") (if_statement "if (iVar1 == 0xfd) {\n        *(undefined4 *)(param_1 + 0x44) = 0;\n      }" (if "if") (parenthesized_expression "(iVar1 == 0xfd)" (( "(") (binary_expression "iVar1 == 0xfd" (identifier "iVar1") (== "==") (number_literal "0xfd")) () ")")) (compound_statement "{\n        *(undefined4 *)(param_1 + 0x44) = 0;\n      }" ({ "{") (expression_statement "*(undefined4 *)(param_1 + 0x44) = 0;" (assignment_expression "*(undefined4 *)(param_1 + 0x44) = 0" (pointer_expression "*(undefined4 *)(param_1 + 0x44)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0x44)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x44)" (( "(") (binary_expression "param_1 + 0x44" (identifier "param_1") (+ "+") (number_literal "0x44")) () ")")))) (= "=") (number_literal "0")) (; ";")) (} "}"))) (} "}")) (else_clause "else if ((iVar1 == 0xfd) && (iVar2 == 3)) {\n      *(undefined4 *)(param_1 + 0x48) = 0;\n    }" (else "else") (if_statement "if ((iVar1 == 0xfd) && (iVar2 == 3)) {\n      *(undefined4 *)(param_1 + 0x48) = 0;\n    }" (if "if") (parenthesized_expression "((iVar1 == 0xfd) && (iVar2 == 3))" (( "(") (binary_expression "(iVar1 == 0xfd) && (iVar2 == 3)" (parenthesized_expression "(iVar1 == 0xfd)" (( "(") (binary_expression "iVar1 == 0xfd" (identifier "iVar1") (== "==") (number_literal "0xfd")) () ")")) (&& "&&") (parenthesized_expression "(iVar2 == 3)" (( "(") (binary_expression "iVar2 == 3" (identifier "iVar2") (== "==") (number_literal "3")) () ")"))) () ")")) (compound_statement "{\n      *(undefined4 *)(param_1 + 0x48) = 0;\n    }" ({ "{") (expression_statement "*(undefined4 *)(param_1 + 0x48) = 0;" (assignment_expression "*(undefined4 *)(param_1 + 0x48) = 0" (pointer_expression "*(undefined4 *)(param_1 + 0x48)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0x48)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x48)" (( "(") (binary_expression "param_1 + 0x48" (identifier "param_1") (+ "+") (number_literal "0x48")) () ")")))) (= "=") (number_literal "0")) (; ";")) (} "}")))))) (} "}")))) (if_statement "if (*(int *)(param_1 + 0x10) != 0) {\n    FUN_0002ada0(*(int *)(param_1 + 0x10));\n  }" (if "if") (parenthesized_expression "(*(int *)(param_1 + 0x10) != 0)" (( "(") (binary_expression "*(int *)(param_1 + 0x10) != 0" (pointer_expression "*(int *)(param_1 + 0x10)" (* "*") (cast_expression "(int *)(param_1 + 0x10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x10)" (( "(") (binary_expression "param_1 + 0x10" (identifier "param_1") (+ "+") (number_literal "0x10")) () ")")))) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    FUN_0002ada0(*(int *)(param_1 + 0x10));\n  }" ({ "{") (expression_statement "FUN_0002ada0(*(int *)(param_1 + 0x10));" (call_expression "FUN_0002ada0(*(int *)(param_1 + 0x10))" (identifier "FUN_0002ada0") (argument_list "(*(int *)(param_1 + 0x10))" (( "(") (pointer_expression "*(int *)(param_1 + 0x10)" (* "*") (cast_expression "(int *)(param_1 + 0x10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x10)" (( "(") (binary_expression "param_1 + 0x10" (identifier "param_1") (+ "+") (number_literal "0x10")) () ")")))) () ")"))) (; ";")) (} "}"))) (if_statement "if (*(int *)(param_1 + 0x4c) != 0) goto LAB_0003d8d8;" (if "if") (parenthesized_expression "(*(int *)(param_1 + 0x4c) != 0)" (( "(") (binary_expression "*(int *)(param_1 + 0x4c) != 0" (pointer_expression "*(int *)(param_1 + 0x4c)" (* "*") (cast_expression "(int *)(param_1 + 0x4c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x4c)" (( "(") (binary_expression "param_1 + 0x4c" (identifier "param_1") (+ "+") (number_literal "0x4c")) () ")")))) (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_0003d8d8;" (goto "goto") (statement_identifier "LAB_0003d8d8") (; ";"))) (if_statement "if (*(int *)(param_1 + 0x30) == 2) {\n    local_21 = 1;\n    local_23 = 0xfdff;\n    iVar2 = **(int **)(param_1 + 4);\n    *(undefined4 *)(param_1 + 0x30) = 0;\n    uVar3 = (**(code **)(iVar2 + 8))(*(int **)(param_1 + 4),&local_23,3);\n    *(undefined4 *)(param_1 + 0x50) = uVar3;\n    uVar3 = FUN_0003ca70();\n    uVar3 = FUN_000306f0("%s:\t%s %s","client",&DAT_000920a3,uVar3);\n    FUN_00068500(*(undefined4 *)(param_1 + 0xc),uVar3);\n    FUN_00031580(uVar3);\n    if (*(int *)(param_1 + 0x34) == 2) goto LAB_0003d9e4;\nLAB_0003d8c7:\n    iVar2 = *(int *)(param_1 + 0x38);\n  }\n  else {\n    if (*(int *)(param_1 + 0x34) != 2) goto LAB_0003d8c7;\nLAB_0003d9e4:\n    local_21 = 3;\n    local_23 = 0xfbff;\n    iVar2 = **(int **)(param_1 + 4);\n    *(undefined4 *)(param_1 + 0x34) = 0;\n    uVar3 = (**(code **)(iVar2 + 8))(*(int **)(param_1 + 4),&local_23,3);\n    *(undefined4 *)(param_1 + 0x50) = uVar3;\n    uVar3 = FUN_0003ca70();\n    uVar3 = FUN_000306f0("%s:\t%s %s","client",&DAT_000920ab,uVar3);\n    FUN_00068500(*(undefined4 *)(param_1 + 0xc),uVar3);\n    FUN_00031580(uVar3);\n    iVar2 = *(int *)(param_1 + 0x38);\n  }" (if "if") (parenthesized_expression "(*(int *)(param_1 + 0x30) == 2)" (( "(") (binary_expression "*(int *)(param_1 + 0x30) == 2" (pointer_expression "*(int *)(param_1 + 0x30)" (* "*") (cast_expression "(int *)(param_1 + 0x30)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x30)" (( "(") (binary_expression "param_1 + 0x30" (identifier "param_1") (+ "+") (number_literal "0x30")) () ")")))) (== "==") (number_literal "2")) () ")")) (compound_statement "{\n    local_21 = 1;\n    local_23 = 0xfdff;\n    iVar2 = **(int **)(param_1 + 4);\n    *(undefined4 *)(param_1 + 0x30) = 0;\n    uVar3 = (**(code **)(iVar2 + 8))(*(int **)(param_1 + 4),&local_23,3);\n    *(undefined4 *)(param_1 + 0x50) = uVar3;\n    uVar3 = FUN_0003ca70();\n    uVar3 = FUN_000306f0("%s:\t%s %s","client",&DAT_000920a3,uVar3);\n    FUN_00068500(*(undefined4 *)(param_1 + 0xc),uVar3);\n    FUN_00031580(uVar3);\n    if (*(int *)(param_1 + 0x34) == 2) goto LAB_0003d9e4;\nLAB_0003d8c7:\n    iVar2 = *(int *)(param_1 + 0x38);\n  }" ({ "{") (expression_statement "local_21 = 1;" (assignment_expression "local_21 = 1" (identifier "local_21") (= "=") (number_literal "1")) (; ";")) (expression_statement "local_23 = 0xfdff;" (assignment_expression "local_23 = 0xfdff" (identifier "local_23") (= "=") (number_literal "0xfdff")) (; ";")) (expression_statement "iVar2 = **(int **)(param_1 + 4);" (assignment_expression "iVar2 = **(int **)(param_1 + 4)" (identifier "iVar2") (= "=") (pointer_expression "**(int **)(param_1 + 4)" (* "*") (pointer_expression "*(int **)(param_1 + 4)" (* "*") (cast_expression "(int **)(param_1 + 4)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 4)" (( "(") (binary_expression "param_1 + 4" (identifier "param_1") (+ "+") (number_literal "4")) () ")")))))) (; ";")) (expression_statement "*(undefined4 *)(param_1 + 0x30) = 0;" (assignment_expression "*(undefined4 *)(param_1 + 0x30) = 0" (pointer_expression "*(undefined4 *)(param_1 + 0x30)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0x30)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x30)" (( "(") (binary_expression "param_1 + 0x30" (identifier "param_1") (+ "+") (number_literal "0x30")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "uVar3 = (**(code **)(iVar2 + 8))(*(int **)(param_1 + 4),&local_23,3);" (assignment_expression "uVar3 = (**(code **)(iVar2 + 8))(*(int **)(param_1 + 4),&local_23,3)" (identifier "uVar3") (= "=") (call_expression "(**(code **)(iVar2 + 8))(*(int **)(param_1 + 4),&local_23,3)" (parenthesized_expression "(**(code **)(iVar2 + 8))" (( "(") (pointer_expression "**(code **)(iVar2 + 8)" (* "*") (pointer_expression "*(code **)(iVar2 + 8)" (* "*") (cast_expression "(code **)(iVar2 + 8)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar2 + 8)" (( "(") (binary_expression "iVar2 + 8" (identifier "iVar2") (+ "+") (number_literal "8")) () ")"))))) () ")")) (argument_list "(*(int **)(param_1 + 4),&local_23,3)" (( "(") (pointer_expression "*(int **)(param_1 + 4)" (* "*") (cast_expression "(int **)(param_1 + 4)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 4)" (( "(") (binary_expression "param_1 + 4" (identifier "param_1") (+ "+") (number_literal "4")) () ")")))) (, ",") (pointer_expression "&local_23" (& "&") (identifier "local_23")) (, ",") (number_literal "3") () ")")))) (; ";")) (expression_statement "*(undefined4 *)(param_1 + 0x50) = uVar3;" (assignment_expression "*(undefined4 *)(param_1 + 0x50) = uVar3" (pointer_expression "*(undefined4 *)(param_1 + 0x50)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0x50)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x50)" (( "(") (binary_expression "param_1 + 0x50" (identifier "param_1") (+ "+") (number_literal "0x50")) () ")")))) (= "=") (identifier "uVar3")) (; ";")) (expression_statement "uVar3 = FUN_0003ca70();" (assignment_expression "uVar3 = FUN_0003ca70()" (identifier "uVar3") (= "=") (call_expression "FUN_0003ca70()" (identifier "FUN_0003ca70") (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "uVar3 = FUN_000306f0("%s:\t%s %s","client",&DAT_000920a3,uVar3);" (assignment_expression "uVar3 = FUN_000306f0("%s:\t%s %s","client",&DAT_000920a3,uVar3)" (identifier "uVar3") (= "=") (call_expression "FUN_000306f0("%s:\t%s %s","client",&DAT_000920a3,uVar3)" (identifier "FUN_000306f0") (argument_list "("%s:\t%s %s","client",&DAT_000920a3,uVar3)" (( "(") (string_literal ""%s:\t%s %s"" (" """) (string_content "%s:") (escape_sequence "\t") (string_content "%s %s") (" """)) (, ",") (string_literal ""client"" (" """) (string_content "client") (" """)) (, ",") (pointer_expression "&DAT_000920a3" (& "&") (identifier "DAT_000920a3")) (, ",") (identifier "uVar3") () ")")))) (; ";")) (expression_statement "FUN_00068500(*(undefined4 *)(param_1 + 0xc),uVar3);" (call_expression "FUN_00068500(*(undefined4 *)(param_1 + 0xc),uVar3)" (identifier "FUN_00068500") (argument_list "(*(undefined4 *)(param_1 + 0xc),uVar3)" (( "(") (pointer_expression "*(undefined4 *)(param_1 + 0xc)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0xc)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xc)" (( "(") (binary_expression "param_1 + 0xc" (identifier "param_1") (+ "+") (number_literal "0xc")) () ")")))) (, ",") (identifier "uVar3") () ")"))) (; ";")) (expression_statement "FUN_00031580(uVar3);" (call_expression "FUN_00031580(uVar3)" (identifier "FUN_00031580") (argument_list "(uVar3)" (( "(") (identifier "uVar3") () ")"))) (; ";")) (if_statement "if (*(int *)(param_1 + 0x34) == 2) goto LAB_0003d9e4;" (if "if") (parenthesized_expression "(*(int *)(param_1 + 0x34) == 2)" (( "(") (binary_expression "*(int *)(param_1 + 0x34) == 2" (pointer_expression "*(int *)(param_1 + 0x34)" (* "*") (cast_expression "(int *)(param_1 + 0x34)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x34)" (( "(") (binary_expression "param_1 + 0x34" (identifier "param_1") (+ "+") (number_literal "0x34")) () ")")))) (== "==") (number_literal "2")) () ")")) (goto_statement "goto LAB_0003d9e4;" (goto "goto") (statement_identifier "LAB_0003d9e4") (; ";"))) (labeled_statement "LAB_0003d8c7:\n    iVar2 = *(int *)(param_1 + 0x38);" (statement_identifier "LAB_0003d8c7") (: ":") (expression_statement "iVar2 = *(int *)(param_1 + 0x38);" (assignment_expression "iVar2 = *(int *)(param_1 + 0x38)" (identifier "iVar2") (= "=") (pointer_expression "*(int *)(param_1 + 0x38)" (* "*") (cast_expression "(int *)(param_1 + 0x38)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x38)" (( "(") (binary_expression "param_1 + 0x38" (identifier "param_1") (+ "+") (number_literal "0x38")) () ")"))))) (; ";"))) (} "}")) (else_clause "else {\n    if (*(int *)(param_1 + 0x34) != 2) goto LAB_0003d8c7;\nLAB_0003d9e4:\n    local_21 = 3;\n    local_23 = 0xfbff;\n    iVar2 = **(int **)(param_1 + 4);\n    *(undefined4 *)(param_1 + 0x34) = 0;\n    uVar3 = (**(code **)(iVar2 + 8))(*(int **)(param_1 + 4),&local_23,3);\n    *(undefined4 *)(param_1 + 0x50) = uVar3;\n    uVar3 = FUN_0003ca70();\n    uVar3 = FUN_000306f0("%s:\t%s %s","client",&DAT_000920ab,uVar3);\n    FUN_00068500(*(undefined4 *)(param_1 + 0xc),uVar3);\n    FUN_00031580(uVar3);\n    iVar2 = *(int *)(param_1 + 0x38);\n  }" (else "else") (compound_statement "{\n    if (*(int *)(param_1 + 0x34) != 2) goto LAB_0003d8c7;\nLAB_0003d9e4:\n    local_21 = 3;\n    local_23 = 0xfbff;\n    iVar2 = **(int **)(param_1 + 4);\n    *(undefined4 *)(param_1 + 0x34) = 0;\n    uVar3 = (**(code **)(iVar2 + 8))(*(int **)(param_1 + 4),&local_23,3);\n    *(undefined4 *)(param_1 + 0x50) = uVar3;\n    uVar3 = FUN_0003ca70();\n    uVar3 = FUN_000306f0("%s:\t%s %s","client",&DAT_000920ab,uVar3);\n    FUN_00068500(*(undefined4 *)(param_1 + 0xc),uVar3);\n    FUN_00031580(uVar3);\n    iVar2 = *(int *)(param_1 + 0x38);\n  }" ({ "{") (if_statement "if (*(int *)(param_1 + 0x34) != 2) goto LAB_0003d8c7;" (if "if") (parenthesized_expression "(*(int *)(param_1 + 0x34) != 2)" (( "(") (binary_expression "*(int *)(param_1 + 0x34) != 2" (pointer_expression "*(int *)(param_1 + 0x34)" (* "*") (cast_expression "(int *)(param_1 + 0x34)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x34)" (( "(") (binary_expression "param_1 + 0x34" (identifier "param_1") (+ "+") (number_literal "0x34")) () ")")))) (!= "!=") (number_literal "2")) () ")")) (goto_statement "goto LAB_0003d8c7;" (goto "goto") (statement_identifier "LAB_0003d8c7") (; ";"))) (labeled_statement "LAB_0003d9e4:\n    local_21 = 3;" (statement_identifier "LAB_0003d9e4") (: ":") (expression_statement "local_21 = 3;" (assignment_expression "local_21 = 3" (identifier "local_21") (= "=") (number_literal "3")) (; ";"))) (expression_statement "local_23 = 0xfbff;" (assignment_expression "local_23 = 0xfbff" (identifier "local_23") (= "=") (number_literal "0xfbff")) (; ";")) (expression_statement "iVar2 = **(int **)(param_1 + 4);" (assignment_expression "iVar2 = **(int **)(param_1 + 4)" (identifier "iVar2") (= "=") (pointer_expression "**(int **)(param_1 + 4)" (* "*") (pointer_expression "*(int **)(param_1 + 4)" (* "*") (cast_expression "(int **)(param_1 + 4)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 4)" (( "(") (binary_expression "param_1 + 4" (identifier "param_1") (+ "+") (number_literal "4")) () ")")))))) (; ";")) (expression_statement "*(undefined4 *)(param_1 + 0x34) = 0;" (assignment_expression "*(undefined4 *)(param_1 + 0x34) = 0" (pointer_expression "*(undefined4 *)(param_1 + 0x34)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0x34)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x34)" (( "(") (binary_expression "param_1 + 0x34" (identifier "param_1") (+ "+") (number_literal "0x34")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "uVar3 = (**(code **)(iVar2 + 8))(*(int **)(param_1 + 4),&local_23,3);" (assignment_expression "uVar3 = (**(code **)(iVar2 + 8))(*(int **)(param_1 + 4),&local_23,3)" (identifier "uVar3") (= "=") (call_expression "(**(code **)(iVar2 + 8))(*(int **)(param_1 + 4),&local_23,3)" (parenthesized_expression "(**(code **)(iVar2 + 8))" (( "(") (pointer_expression "**(code **)(iVar2 + 8)" (* "*") (pointer_expression "*(code **)(iVar2 + 8)" (* "*") (cast_expression "(code **)(iVar2 + 8)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar2 + 8)" (( "(") (binary_expression "iVar2 + 8" (identifier "iVar2") (+ "+") (number_literal "8")) () ")"))))) () ")")) (argument_list "(*(int **)(param_1 + 4),&local_23,3)" (( "(") (pointer_expression "*(int **)(param_1 + 4)" (* "*") (cast_expression "(int **)(param_1 + 4)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 4)" (( "(") (binary_expression "param_1 + 4" (identifier "param_1") (+ "+") (number_literal "4")) () ")")))) (, ",") (pointer_expression "&local_23" (& "&") (identifier "local_23")) (, ",") (number_literal "3") () ")")))) (; ";")) (expression_statement "*(undefined4 *)(param_1 + 0x50) = uVar3;" (assignment_expression "*(undefined4 *)(param_1 + 0x50) = uVar3" (pointer_expression "*(undefined4 *)(param_1 + 0x50)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0x50)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x50)" (( "(") (binary_expression "param_1 + 0x50" (identifier "param_1") (+ "+") (number_literal "0x50")) () ")")))) (= "=") (identifier "uVar3")) (; ";")) (expression_statement "uVar3 = FUN_0003ca70();" (assignment_expression "uVar3 = FUN_0003ca70()" (identifier "uVar3") (= "=") (call_expression "FUN_0003ca70()" (identifier "FUN_0003ca70") (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "uVar3 = FUN_000306f0("%s:\t%s %s","client",&DAT_000920ab,uVar3);" (assignment_expression "uVar3 = FUN_000306f0("%s:\t%s %s","client",&DAT_000920ab,uVar3)" (identifier "uVar3") (= "=") (call_expression "FUN_000306f0("%s:\t%s %s","client",&DAT_000920ab,uVar3)" (identifier "FUN_000306f0") (argument_list "("%s:\t%s %s","client",&DAT_000920ab,uVar3)" (( "(") (string_literal ""%s:\t%s %s"" (" """) (string_content "%s:") (escape_sequence "\t") (string_content "%s %s") (" """)) (, ",") (string_literal ""client"" (" """) (string_content "client") (" """)) (, ",") (pointer_expression "&DAT_000920ab" (& "&") (identifier "DAT_000920ab")) (, ",") (identifier "uVar3") () ")")))) (; ";")) (expression_statement "FUN_00068500(*(undefined4 *)(param_1 + 0xc),uVar3);" (call_expression "FUN_00068500(*(undefined4 *)(param_1 + 0xc),uVar3)" (identifier "FUN_00068500") (argument_list "(*(undefined4 *)(param_1 + 0xc),uVar3)" (( "(") (pointer_expression "*(undefined4 *)(param_1 + 0xc)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0xc)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xc)" (( "(") (binary_expression "param_1 + 0xc" (identifier "param_1") (+ "+") (number_literal "0xc")) () ")")))) (, ",") (identifier "uVar3") () ")"))) (; ";")) (expression_statement "FUN_00031580(uVar3);" (call_expression "FUN_00031580(uVar3)" (identifier "FUN_00031580") (argument_list "(uVar3)" (( "(") (identifier "uVar3") () ")"))) (; ";")) (expression_statement "iVar2 = *(int *)(param_1 + 0x38);" (assignment_expression "iVar2 = *(int *)(param_1 + 0x38)" (identifier "iVar2") (= "=") (pointer_expression "*(int *)(param_1 + 0x38)" (* "*") (cast_expression "(int *)(param_1 + 0x38)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x38)" (( "(") (binary_expression "param_1 + 0x38" (identifier "param_1") (+ "+") (number_literal "0x38")) () ")"))))) (; ";")) (} "}")))) (if_statement "if (iVar2 == 2) {\n    local_21 = 3;\n    local_23 = 0xfdff;\n    *(undefined4 *)(param_1 + 0x38) = 0;\n    uVar3 = (**(code **)(**(int **)(param_1 + 4) + 8))(*(int **)(param_1 + 4),&local_23,3);\n    *(undefined4 *)(param_1 + 0x50) = uVar3;\n    uVar3 = FUN_0003ca70();\n    uVar3 = FUN_000306f0("%s:\t%s %s","client",&DAT_000920a3,uVar3);\n    FUN_00068500(*(undefined4 *)(param_1 + 0xc),uVar3);\n    FUN_00031580(uVar3);\n  }" (if "if") (parenthesized_expression "(iVar2 == 2)" (( "(") (binary_expression "iVar2 == 2" (identifier "iVar2") (== "==") (number_literal "2")) () ")")) (compound_statement "{\n    local_21 = 3;\n    local_23 = 0xfdff;\n    *(undefined4 *)(param_1 + 0x38) = 0;\n    uVar3 = (**(code **)(**(int **)(param_1 + 4) + 8))(*(int **)(param_1 + 4),&local_23,3);\n    *(undefined4 *)(param_1 + 0x50) = uVar3;\n    uVar3 = FUN_0003ca70();\n    uVar3 = FUN_000306f0("%s:\t%s %s","client",&DAT_000920a3,uVar3);\n    FUN_00068500(*(undefined4 *)(param_1 + 0xc),uVar3);\n    FUN_00031580(uVar3);\n  }" ({ "{") (expression_statement "local_21 = 3;" (assignment_expression "local_21 = 3" (identifier "local_21") (= "=") (number_literal "3")) (; ";")) (expression_statement "local_23 = 0xfdff;" (assignment_expression "local_23 = 0xfdff" (identifier "local_23") (= "=") (number_literal "0xfdff")) (; ";")) (expression_statement "*(undefined4 *)(param_1 + 0x38) = 0;" (assignment_expression "*(undefined4 *)(param_1 + 0x38) = 0" (pointer_expression "*(undefined4 *)(param_1 + 0x38)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0x38)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x38)" (( "(") (binary_expression "param_1 + 0x38" (identifier "param_1") (+ "+") (number_literal "0x38")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "uVar3 = (**(code **)(**(int **)(param_1 + 4) + 8))(*(int **)(param_1 + 4),&local_23,3);" (assignment_expression "uVar3 = (**(code **)(**(int **)(param_1 + 4) + 8))(*(int **)(param_1 + 4),&local_23,3)" (identifier "uVar3") (= "=") (call_expression "(**(code **)(**(int **)(param_1 + 4) + 8))(*(int **)(param_1 + 4),&local_23,3)" (parenthesized_expression "(**(code **)(**(int **)(param_1 + 4) + 8))" (( "(") (pointer_expression "**(code **)(**(int **)(param_1 + 4) + 8)" (* "*") (pointer_expression "*(code **)(**(int **)(param_1 + 4) + 8)" (* "*") (cast_expression "(code **)(**(int **)(param_1 + 4) + 8)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(**(int **)(param_1 + 4) + 8)" (( "(") (binary_expression "**(int **)(param_1 + 4) + 8" (pointer_expression "**(int **)(param_1 + 4)" (* "*") (pointer_expression "*(int **)(param_1 + 4)" (* "*") (cast_expression "(int **)(param_1 + 4)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 4)" (( "(") (binary_expression "param_1 + 4" (identifier "param_1") (+ "+") (number_literal "4")) () ")"))))) (+ "+") (number_literal "8")) () ")"))))) () ")")) (argument_list "(*(int **)(param_1 + 4),&local_23,3)" (( "(") (pointer_expression "*(int **)(param_1 + 4)" (* "*") (cast_expression "(int **)(param_1 + 4)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 4)" (( "(") (binary_expression "param_1 + 4" (identifier "param_1") (+ "+") (number_literal "4")) () ")")))) (, ",") (pointer_expression "&local_23" (& "&") (identifier "local_23")) (, ",") (number_literal "3") () ")")))) (; ";")) (expression_statement "*(undefined4 *)(param_1 + 0x50) = uVar3;" (assignment_expression "*(undefined4 *)(param_1 + 0x50) = uVar3" (pointer_expression "*(undefined4 *)(param_1 + 0x50)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0x50)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x50)" (( "(") (binary_expression "param_1 + 0x50" (identifier "param_1") (+ "+") (number_literal "0x50")) () ")")))) (= "=") (identifier "uVar3")) (; ";")) (expression_statement "uVar3 = FUN_0003ca70();" (assignment_expression "uVar3 = FUN_0003ca70()" (identifier "uVar3") (= "=") (call_expression "FUN_0003ca70()" (identifier "FUN_0003ca70") (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "uVar3 = FUN_000306f0("%s:\t%s %s","client",&DAT_000920a3,uVar3);" (assignment_expression "uVar3 = FUN_000306f0("%s:\t%s %s","client",&DAT_000920a3,uVar3)" (identifier "uVar3") (= "=") (call_expression "FUN_000306f0("%s:\t%s %s","client",&DAT_000920a3,uVar3)" (identifier "FUN_000306f0") (argument_list "("%s:\t%s %s","client",&DAT_000920a3,uVar3)" (( "(") (string_literal ""%s:\t%s %s"" (" """) (string_content "%s:") (escape_sequence "\t") (string_content "%s %s") (" """)) (, ",") (string_literal ""client"" (" """) (string_content "client") (" """)) (, ",") (pointer_expression "&DAT_000920a3" (& "&") (identifier "DAT_000920a3")) (, ",") (identifier "uVar3") () ")")))) (; ";")) (expression_statement "FUN_00068500(*(undefined4 *)(param_1 + 0xc),uVar3);" (call_expression "FUN_00068500(*(undefined4 *)(param_1 + 0xc),uVar3)" (identifier "FUN_00068500") (argument_list "(*(undefined4 *)(param_1 + 0xc),uVar3)" (( "(") (pointer_expression "*(undefined4 *)(param_1 + 0xc)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0xc)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xc)" (( "(") (binary_expression "param_1 + 0xc" (identifier "param_1") (+ "+") (number_literal "0xc")) () ")")))) (, ",") (identifier "uVar3") () ")"))) (; ";")) (expression_statement "FUN_00031580(uVar3);" (call_expression "FUN_00031580(uVar3)" (identifier "FUN_00031580") (argument_list "(uVar3)" (( "(") (identifier "uVar3") () ")"))) (; ";")) (} "}"))) (expression_statement "*(undefined4 *)(param_1 + 0x4c) = 1;" (assignment_expression "*(undefined4 *)(param_1 + 0x4c) = 1" (pointer_expression "*(undefined4 *)(param_1 + 0x4c)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0x4c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x4c)" (( "(") (binary_expression "param_1 + 0x4c" (identifier "param_1") (+ "+") (number_literal "0x4c")) () ")")))) (= "=") (number_literal "1")) (; ";")) (labeled_statement "LAB_0003d8d8:\n  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return;\n  }" (statement_identifier "LAB_0003d8d8") (: ":") (if_statement "if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return;\n  }" (if "if") (parenthesized_expression "(local_20 == *(int *)(in_GS_OFFSET + 0x14))" (( "(") (binary_expression "local_20 == *(int *)(in_GS_OFFSET + 0x14)" (identifier "local_20") (== "==") (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" (* "*") (cast_expression "(int *)(in_GS_OFFSET + 0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(in_GS_OFFSET + 0x14)" (( "(") (binary_expression "in_GS_OFFSET + 0x14" (identifier "in_GS_OFFSET") (+ "+") (number_literal "0x14")) () ")"))))) () ")")) (compound_statement "{\n    return;\n  }" ({ "{") (return_statement "return;" (return "return") (; ";")) (} "}")))) (expression_statement "FUN_00077880();" (call_expression "FUN_00077880()" (identifier "FUN_00077880") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}")))

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

void __regparm3 function_1(type_1 telnet,type_2 *o)

{
  int var_11;
  type_3 *psVar2;
  type_4 ppsVar3;
  int var_3;
  char *pcVar5;
  int var_2;
  type_2 *pOVar7;
  int var_1;
  type_5 b [3];
  
  var_2 = o->send;
  var_11 = *(int *)(var_1 + 0x14);
  var_3 = o->option;
  if (var_2 == 0xfb) {
    if (var_3 == 0x1f) {
      var_4(telnet,telnet->term_width,telnet->term_height);
      var_2 = o->send;
      var_3 = o->option;
      if (var_2 != 0xfb) goto joined_r0x0003d942;
    }
    if ((var_3 == 0x27) || (var_3 == 0x24)) {
      if (var_3 == 0x27) {
        var_2 = 0x24;
        var_3 = 3;
        pOVar7 = &o_oenv;
      }
      else {
        var_2 = 0x27;
        var_3 = 4;
        pOVar7 = &o_nenv;
      }
      if ((type_6)telnet->opt_states[var_3] < 2) {
        var_5(telnet,0xfc,var_2);
        var_3 = pOVar7->index;
      }
      telnet->opt_states[var_3] = 3;
      var_3 = o->option;
      var_2 = o->send;
      goto joined_r0x0003d942;
    }
  }
  else {
joined_r0x0003d942:
    if (var_3 == 1) {
      if (var_2 == 0xfd) {
        telnet->echoing = 0;
      }
    }
    else if ((var_2 == 0xfd) && (var_3 == 3)) {
      telnet->editing = 0;
    }
  }
  if (telnet->ldisc != (void *)0x0) {
    var_6(telnet->ldisc);
  }
  if (telnet->activated != 0) goto LAB_0003d8d8;
  if (telnet->opt_states[5] == 2) {
    ppsVar3 = telnet->s;
    b[2] = '\x01';
    b[0] = 0xff;
    b[1] = 0xfd;
    psVar2 = *ppsVar3;
    telnet->opt_states[5] = 0;
    var_3 = (*psVar2->write)(ppsVar3,(char *)b,3);
    telnet->bufsize = var_3;
    pcVar5 = var_7(1);
    pcVar5 = var_8("%s:\t%s %s","client",&DAT_000920a3,pcVar5);
    var_9(telnet->frontend,pcVar5);
    var_10(pcVar5);
    if (telnet->opt_states[6] == 2) goto LAB_0003d9e4;
LAB_0003d8c7:
    var_3 = telnet->opt_states[7];
  }
  else {
    if (telnet->opt_states[6] != 2) goto LAB_0003d8c7;
LAB_0003d9e4:
    ppsVar3 = telnet->s;
    b[2] = '\x03';
    b[0] = 0xff;
    b[1] = 0xfb;
    psVar2 = *ppsVar3;
    telnet->opt_states[6] = 0;
    var_3 = (*psVar2->write)(ppsVar3,(char *)b,3);
    telnet->bufsize = var_3;
    pcVar5 = var_7(3);
    pcVar5 = var_8("%s:\t%s %s","client",&DAT_000920ab,pcVar5);
    var_9(telnet->frontend,pcVar5);
    var_10(pcVar5);
    var_3 = telnet->opt_states[7];
  }
  if (var_3 == 2) {
    b[2] = '\x03';
    b[0] = 0xff;
    b[1] = 0xfd;
    ppsVar3 = telnet->s;
    telnet->opt_states[7] = 0;
    var_3 = (*(*ppsVar3)->write)(ppsVar3,(char *)b,3);
    telnet->bufsize = var_3;
    pcVar5 = var_7(3);
    pcVar5 = var_8("%s:\t%s %s","client",&DAT_000920a3,pcVar5);
    var_9(telnet->frontend,pcVar5);
    var_10(pcVar5);
  }
  telnet->activated = 1;
LAB_0003d8d8:
  if (var_11 == *(int *)(var_1 + 0x14)) {
    return;
  }
                    /* WARNING: Subroutine does not return */
  var_12();
}


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

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

void __regparm3 MASKED(int param_1,int *param_2)

{
  int iVar1;
  int iVar2;
  undefined4 uVar3;
  undefined *puVar4;
  int in_GS_OFFSET;
  undefined2 local_23;
  undefined1 local_21;
  int local_20;
  undefined4 uStack_14;
  
  uStack_14 = 0x3d85d;
  iVar1 = *param_2;
  local_20 = *(int *)(in_GS_OFFSET + 0x14);
  iVar2 = param_2[4];
  if (iVar1 == 0xfb) {
    if (iVar2 == 0x1f) {
      FUN_0003d040(param_1,*(undefined4 *)(param_1 + 0x14),*(undefined4 *)(param_1 + 0x18));
      iVar1 = *param_2;
      iVar2 = param_2[4];
      if (iVar1 != 0xfb) goto joined_r0x0003d942;
    }
    if ((iVar2 == 0x27) || (iVar2 == 0x24)) {
      if (iVar2 == 0x27) {
        iVar2 = 3;
        puVar4 = &DAT_00092744;
      }
      else {
        iVar2 = 4;
        puVar4 = &DAT_00092728;
      }
      iVar2 = iVar2 + 4;
      if (*(uint *)(param_1 + 0xc + iVar2 * 4) < 2) {
        FUN_0003d2f0();
        iVar2 = *(int *)(puVar4 + 0x14) + 4;
      }
      *(undefined4 *)(param_1 + 0xc + iVar2 * 4) = 3;
      iVar2 = param_2[4];
      iVar1 = *param_2;
      goto joined_r0x0003d942;
    }
  }
  else {
joined_r0x0003d942:
    if (iVar2 == 1) {
      if (iVar1 == 0xfd) {
        *(undefined4 *)(param_1 + 0x44) = 0;
      }
    }
    else if ((iVar1 == 0xfd) && (iVar2 == 3)) {
      *(undefined4 *)(param_1 + 0x48) = 0;
    }
  }
  if (*(int *)(param_1 + 0x10) != 0) {
    FUN_0002ada0(*(int *)(param_1 + 0x10));
  }
  if (*(int *)(param_1 + 0x4c) != 0) goto LAB_0003d8d8;
  if (*(int *)(param_1 + 0x30) == 2) {
    local_21 = 1;
    local_23 = 0xfdff;
    iVar2 = **(int **)(param_1 + 4);
    *(undefined4 *)(param_1 + 0x30) = 0;
    uVar3 = (**(code **)(iVar2 + 8))(*(int **)(param_1 + 4),&local_23,3);
    *(undefined4 *)(param_1 + 0x50) = uVar3;
    uVar3 = FUN_0003ca70();
    uVar3 = FUN_000306f0("%s:\t%s %s","client",&DAT_000920a3,uVar3);
    FUN_00068500(*(undefined4 *)(param_1 + 0xc),uVar3);
    FUN_00031580(uVar3);
    if (*(int *)(param_1 + 0x34) == 2) goto LAB_0003d9e4;
LAB_0003d8c7:
    iVar2 = *(int *)(param_1 + 0x38);
  }
  else {
    if (*(int *)(param_1 + 0x34) != 2) goto LAB_0003d8c7;
LAB_0003d9e4:
    local_21 = 3;
    local_23 = 0xfbff;
    iVar2 = **(int **)(param_1 + 4);
    *(undefined4 *)(param_1 + 0x34) = 0;
    uVar3 = (**(code **)(iVar2 + 8))(*(int **)(param_1 + 4),&local_23,3);
    *(undefined4 *)(param_1 + 0x50) = uVar3;
    uVar3 = FUN_0003ca70();
    uVar3 = FUN_000306f0("%s:\t%s %s","client",&DAT_000920ab,uVar3);
    FUN_00068500(*(undefined4 *)(param_1 + 0xc),uVar3);
    FUN_00031580(uVar3);
    iVar2 = *(int *)(param_1 + 0x38);
  }
  if (iVar2 == 2) {
    local_21 = 3;
    local_23 = 0xfdff;
    *(undefined4 *)(param_1 + 0x38) = 0;
    uVar3 = (**(code **)(**(int **)(param_1 + 4) + 8))(*(int **)(param_1 + 4),&local_23,3);
    *(undefined4 *)(param_1 + 0x50) = uVar3;
    uVar3 = FUN_0003ca70();
    uVar3 = FUN_000306f0("%s:\t%s %s","client",&DAT_000920a3,uVar3);
    FUN_00068500(*(undefined4 *)(param_1 + 0xc),uVar3);
    FUN_00031580(uVar3);
  }
  *(undefined4 *)(param_1 + 0x4c) = 1;
LAB_0003d8d8:
  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {
    return;
  }
                    /* WARNING: Subroutine does not return */
  FUN_00077880();
}

