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

void logevent_dlg(void *estuff,char *string)

{
  int iVar1;
  int iVar2;
  int iVar3;
  int iVar4;
  uint uVar5;
  uint uVar6;
  size_t sVar7;
  void *pvVar8;
  size_t n;
  uint *puVar9;
  uint *puVar10;
  int in_GS_OFFSET;
  bool bVar11;
  tm tm;
  char timebuf [40];
  
  iVar1 = *(int *)(in_GS_OFFSET + 0x14);
  if (*(int *)((int)estuff + 0x64c) <= *(int *)((int)estuff + 0x648)) {
    n = *(int *)((int)estuff + 0x64c) + 0x40;
    *(size_t *)((int)estuff + 0x64c) = n;
    pvVar8 = saferealloc(*(void **)((int)estuff + 0x644),n,4);
    *(void **)((int)estuff + 0x644) = pvVar8;
  }
  ltime();
  strftime(timebuf,0x28,"%Y-%m-%d %H:%M:%S\t",(tm *)&tm);
  puVar10 = (uint *)timebuf;
  do {
    puVar9 = puVar10;
    uVar5 = *puVar9 + 0xfefefeff & ~*puVar9;
    uVar6 = uVar5 & 0x80808080;
    puVar10 = puVar9 + 1;
  } while (uVar6 == 0);
  bVar11 = (uVar5 & 0x8080) == 0;
  if (bVar11) {
    uVar6 = uVar6 >> 0x10;
  }
  if (bVar11) {
    puVar10 = (uint *)((int)puVar9 + 6);
  }
  sVar7 = strlen(string);
  iVar2 = *(int *)((int)estuff + 0x644);
  iVar3 = *(int *)((int)estuff + 0x648);
  pvVar8 = safemalloc((size_t)((int)puVar10 +
                              sVar7 + (-(int)timebuf - (uint)CARRY1((byte)uVar6,(byte)uVar6)) + -2),
                      1);
  iVar4 = *(int *)((int)estuff + 0x648);
  *(void **)(iVar2 + iVar3 * 4) = pvVar8;
  strcpy(*(char **)(*(int *)((int)estuff + 0x644) + iVar4 * 4),timebuf);
  strcat(*(char **)(*(int *)((int)estuff + 0x644) + *(int *)((int)estuff + 0x648) * 4),string);
  if (*(int *)((int)estuff + 4) != 0) {
    dlg_listbox_addwithid
              (*(control **)((int)estuff + 0x640),(void *)((int)estuff + 0x60c),
               *(char **)(*(int *)((int)estuff + 0x644) + *(int *)((int)estuff + 0x648) * 4),0);
  }
  *(int *)((int)estuff + 0x648) = *(int *)((int)estuff + 0x648) + 1;
  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 FUN_0005e870(int param_1,char *param_2)

{
  int iVar1;
  int iVar2;
  uint uVar3;
  uint uVar4;
  size_t sVar5;
  undefined4 uVar6;
  int iVar7;
  uint *puVar8;
  uint *puVar9;
  int in_GS_OFFSET;
  bool bVar10;
  int local_ac;
  int local_a8;
  int local_a4;
  int local_a0;
  int local_9c;
  int local_98;
  int local_94;
  int local_90;
  int local_8c;
  long local_88;
  char *local_84;
  tm local_74;
  uint local_48 [10];
  int local_20;
  undefined4 uStack_14;
  
  uStack_14 = 0x5e87b;
  local_20 = *(int *)(in_GS_OFFSET + 0x14);
  if (*(int *)(param_1 + 0x64c) <= *(int *)(param_1 + 0x648)) {
    iVar7 = *(int *)(param_1 + 0x64c) + 0x40;
    *(int *)(param_1 + 0x64c) = iVar7;
    uVar6 = FUN_000314a0(*(undefined4 *)(param_1 + 0x644),iVar7,4);
    *(undefined4 *)(param_1 + 0x644) = uVar6;
  }
  FUN_0004f2a0(&local_ac);
  local_74.tm_sec = local_ac;
  local_74.tm_min = local_a8;
  local_74.tm_hour = local_a4;
  local_74.tm_mday = local_a0;
  local_74.tm_mon = local_9c;
  local_74.tm_year = local_98;
  local_74.tm_wday = local_94;
  local_74.tm_yday = local_90;
  local_74.tm_isdst = local_8c;
  local_74.tm_gmtoff = local_88;
  local_74.tm_zone = local_84;
  strftime((char *)local_48,0x28,"%Y-%m-%d %H:%M:%S\t",&local_74);
  puVar9 = local_48;
  do {
    puVar8 = puVar9;
    uVar3 = *puVar8 + 0xfefefeff & ~*puVar8;
    uVar4 = uVar3 & 0x80808080;
    puVar9 = puVar8 + 1;
  } while (uVar4 == 0);
  bVar10 = (uVar3 & 0x8080) == 0;
  if (bVar10) {
    uVar4 = uVar4 >> 0x10;
  }
  if (bVar10) {
    puVar9 = (uint *)((int)puVar8 + 6);
  }
  sVar5 = strlen(param_2);
  iVar7 = *(int *)(param_1 + 0x644);
  iVar1 = *(int *)(param_1 + 0x648);
  uVar6 = FUN_000313e0((char *)((int)puVar9 +
                               sVar5 + (-(int)local_48 - (uint)CARRY1((byte)uVar4,(byte)uVar4)) + -2
                               ),1);
  iVar2 = *(int *)(param_1 + 0x648);
  *(undefined4 *)(iVar7 + iVar1 * 4) = uVar6;
  strcpy(*(char **)(*(int *)(param_1 + 0x644) + iVar2 * 4),(char *)local_48);
  strcat(*(char **)(*(int *)(param_1 + 0x644) + *(int *)(param_1 + 0x648) * 4),param_2);
  if (*(int *)(param_1 + 4) != 0) {
    FUN_000598e0(*(undefined4 *)(param_1 + 0x640),param_1 + 0x60c,
                 *(undefined4 *)(*(int *)(param_1 + 0x644) + *(int *)(param_1 + 0x648) * 4),0);
  }
  *(int *)(param_1 + 0x648) = *(int *)(param_1 + 0x648) + 1;
  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {
    return;
  }
                    /* WARNING: Subroutine does not return */
  FUN_00077880();
}


PUSH EBP
MOV EBP,ESP
PUSH EDI
PUSH ESI
PUSH EBX
CALL 0x0001b410
ADD EBX,0x66f29
SUB ESP,0xac
MOV EAX,dword ptr [EBP + 0xc]
MOV ESI,dword ptr [EBP + 0x8]
MOV dword ptr [EBP + 0xffffff54],EAX
MOV EAX,GS:[0x14]
MOV dword ptr [EBP + -0x1c],EAX
XOR EAX,EAX
MOV EAX,dword ptr [ESI + 0x64c]
CMP dword ptr [ESI + 0x648],EAX
JGE 0x0005ea30
LEA EAX,[EBP + 0xffffff58]
SUB ESP,0xc
PUSH EAX
CALL 0x0004f2a0
MOV EAX,dword ptr [EBP + 0xffffff58]
ADD ESP,0xc
MOV dword ptr [EBP + -0x70],EAX
MOV EAX,dword ptr [EBP + 0xffffff5c]
MOV dword ptr [EBP + -0x6c],EAX
MOV EAX,dword ptr [EBP + 0xffffff60]
MOV dword ptr [EBP + -0x68],EAX
MOV EAX,dword ptr [EBP + 0xffffff64]
MOV dword ptr [EBP + -0x64],EAX
MOV EAX,dword ptr [EBP + 0xffffff68]
MOV dword ptr [EBP + -0x60],EAX
MOV EAX,dword ptr [EBP + 0xffffff6c]
MOV dword ptr [EBP + -0x5c],EAX
MOV EAX,dword ptr [EBP + 0xffffff70]
MOV dword ptr [EBP + -0x58],EAX
MOV EAX,dword ptr [EBP + 0xffffff74]
MOV dword ptr [EBP + -0x54],EAX
MOV EAX,dword ptr [EBP + 0xffffff78]
MOV dword ptr [EBP + -0x50],EAX
MOV EAX,dword ptr [EBP + 0xffffff7c]
MOV dword ptr [EBP + -0x4c],EAX
MOV EAX,dword ptr [EBP + -0x80]
MOV dword ptr [EBP + -0x48],EAX
LEA EAX,[EBP + -0x70]
PUSH EAX
LEA EAX,[EBX + 0xfffce4ed]
PUSH EAX
LEA EAX,[EBP + -0x44]
PUSH 0x28
MOV EDI,EAX
PUSH EAX
CALL 0x0001aab0
MOV ECX,EDI
MOV EDX,dword ptr [EDI]
ADD EDI,0x4
LEA EAX,[EDX + 0xfefefeff]
NOT EDX
AND EAX,EDX
AND EAX,0x80808080
JZ 0x0005e93c
MOV EDX,ECX
MOV ECX,EAX
SHR ECX,0x10
TEST EAX,0x8080
MOV dword ptr [EBP + 0xffffff50],EDX
CMOVZ EAX,ECX
LEA ECX,[EDI + 0x2]
CMOVZ EDI,ECX
MOV ECX,EAX
ADD CL,AL
POP EAX
PUSH dword ptr [EBP + 0xffffff54]
SBB EDI,0x3
SUB EDI,EDX
CALL 0x000198b0
POP EDX
MOV EDX,dword ptr [ESI + 0x644]
LEA EAX,[EDI + EAX*0x1 + 0x1]
POP ECX
MOV ECX,dword ptr [ESI + 0x648]
PUSH 0x1
PUSH EAX
LEA ECX,[EDX + ECX*0x4]
MOV dword ptr [EBP + 0xffffff4c],ECX
CALL 0x000313e0
MOV ECX,dword ptr [EBP + 0xffffff4c]
MOV EDX,dword ptr [ESI + 0x648]
MOV dword ptr [ECX],EAX
POP EDI
POP EAX
MOV EAX,dword ptr [ESI + 0x644]
PUSH dword ptr [EBP + 0xffffff50]
PUSH dword ptr [EAX + EDX*0x4]
CALL 0x0001aea0
POP EAX
MOV EAX,dword ptr [ESI + 0x644]
POP EDX
MOV EDX,dword ptr [ESI + 0x648]
PUSH dword ptr [EBP + 0xffffff54]
PUSH dword ptr [EAX + EDX*0x4]
CALL 0x000190b0
MOV ECX,dword ptr [ESI + 0x4]
ADD ESP,0x10
TEST ECX,ECX
JZ 0x0005ea15
PUSH 0x0
MOV EAX,dword ptr [ESI + 0x644]
MOV EDX,dword ptr [ESI + 0x648]
PUSH dword ptr [EAX + EDX*0x4]
LEA EAX,[ESI + 0x60c]
PUSH EAX
PUSH dword ptr [ESI + 0x640]
CALL 0x000598e0
ADD ESP,0x10
ADD dword ptr [ESI + 0x648],0x1
MOV EAX,dword ptr [EBP + -0x1c]
XOR EAX,dword ptr GS:[0x14]
JNZ 0x0005ea58
LEA ESP,[EBP + -0xc]
POP EBX
POP ESI
POP EDI
POP EBP
RET
SUB ESP,0x4
ADD EAX,0x40
MOV dword ptr [ESI + 0x64c],EAX
PUSH 0x4
PUSH EAX
PUSH dword ptr [ESI + 0x644]
CALL 0x000314a0
ADD ESP,0x10
MOV dword ptr [ESI + 0x644],EAX
JMP 0x0005e8b0
CALL 0x00077880
(translation_unit "/* WARNING: Function: __i686.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n\nvoid FUN_0005e870(int param_1,char *param_2)\n\n{\n  int iVar1;\n  int iVar2;\n  uint uVar3;\n  uint uVar4;\n  size_t sVar5;\n  undefined4 uVar6;\n  int iVar7;\n  uint *puVar8;\n  uint *puVar9;\n  int in_GS_OFFSET;\n  bool bVar10;\n  int local_ac;\n  int local_a8;\n  int local_a4;\n  int local_a0;\n  int local_9c;\n  int local_98;\n  int local_94;\n  int local_90;\n  int local_8c;\n  long local_88;\n  char *local_84;\n  tm local_74;\n  uint local_48 [10];\n  int local_20;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x5e87b;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  if (*(int *)(param_1 + 0x64c) <= *(int *)(param_1 + 0x648)) {\n    iVar7 = *(int *)(param_1 + 0x64c) + 0x40;\n    *(int *)(param_1 + 0x64c) = iVar7;\n    uVar6 = FUN_000314a0(*(undefined4 *)(param_1 + 0x644),iVar7,4);\n    *(undefined4 *)(param_1 + 0x644) = uVar6;\n  }\n  FUN_0004f2a0(&local_ac);\n  local_74.tm_sec = local_ac;\n  local_74.tm_min = local_a8;\n  local_74.tm_hour = local_a4;\n  local_74.tm_mday = local_a0;\n  local_74.tm_mon = local_9c;\n  local_74.tm_year = local_98;\n  local_74.tm_wday = local_94;\n  local_74.tm_yday = local_90;\n  local_74.tm_isdst = local_8c;\n  local_74.tm_gmtoff = local_88;\n  local_74.tm_zone = local_84;\n  strftime((char *)local_48,0x28,"%Y-%m-%d %H:%M:%S\t",&local_74);\n  puVar9 = local_48;\n  do {\n    puVar8 = puVar9;\n    uVar3 = *puVar8 + 0xfefefeff & ~*puVar8;\n    uVar4 = uVar3 & 0x80808080;\n    puVar9 = puVar8 + 1;\n  } while (uVar4 == 0);\n  bVar10 = (uVar3 & 0x8080) == 0;\n  if (bVar10) {\n    uVar4 = uVar4 >> 0x10;\n  }\n  if (bVar10) {\n    puVar9 = (uint *)((int)puVar8 + 6);\n  }\n  sVar5 = strlen(param_2);\n  iVar7 = *(int *)(param_1 + 0x644);\n  iVar1 = *(int *)(param_1 + 0x648);\n  uVar6 = FUN_000313e0((char *)((int)puVar9 +\n                               sVar5 + (-(int)local_48 - (uint)CARRY1((byte)uVar4,(byte)uVar4)) + -2\n                               ),1);\n  iVar2 = *(int *)(param_1 + 0x648);\n  *(undefined4 *)(iVar7 + iVar1 * 4) = uVar6;\n  strcpy(*(char **)(*(int *)(param_1 + 0x644) + iVar2 * 4),(char *)local_48);\n  strcat(*(char **)(*(int *)(param_1 + 0x644) + *(int *)(param_1 + 0x648) * 4),param_2);\n  if (*(int *)(param_1 + 4) != 0) {\n    FUN_000598e0(*(undefined4 *)(param_1 + 0x640),param_1 + 0x60c,\n                 *(undefined4 *)(*(int *)(param_1 + 0x644) + *(int *)(param_1 + 0x648) * 4),0);\n  }\n  *(int *)(param_1 + 0x648) = *(int *)(param_1 + 0x648) + 1;\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 FUN_0005e870(int param_1,char *param_2)\n\n{\n  int iVar1;\n  int iVar2;\n  uint uVar3;\n  uint uVar4;\n  size_t sVar5;\n  undefined4 uVar6;\n  int iVar7;\n  uint *puVar8;\n  uint *puVar9;\n  int in_GS_OFFSET;\n  bool bVar10;\n  int local_ac;\n  int local_a8;\n  int local_a4;\n  int local_a0;\n  int local_9c;\n  int local_98;\n  int local_94;\n  int local_90;\n  int local_8c;\n  long local_88;\n  char *local_84;\n  tm local_74;\n  uint local_48 [10];\n  int local_20;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x5e87b;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  if (*(int *)(param_1 + 0x64c) <= *(int *)(param_1 + 0x648)) {\n    iVar7 = *(int *)(param_1 + 0x64c) + 0x40;\n    *(int *)(param_1 + 0x64c) = iVar7;\n    uVar6 = FUN_000314a0(*(undefined4 *)(param_1 + 0x644),iVar7,4);\n    *(undefined4 *)(param_1 + 0x644) = uVar6;\n  }\n  FUN_0004f2a0(&local_ac);\n  local_74.tm_sec = local_ac;\n  local_74.tm_min = local_a8;\n  local_74.tm_hour = local_a4;\n  local_74.tm_mday = local_a0;\n  local_74.tm_mon = local_9c;\n  local_74.tm_year = local_98;\n  local_74.tm_wday = local_94;\n  local_74.tm_yday = local_90;\n  local_74.tm_isdst = local_8c;\n  local_74.tm_gmtoff = local_88;\n  local_74.tm_zone = local_84;\n  strftime((char *)local_48,0x28,"%Y-%m-%d %H:%M:%S\t",&local_74);\n  puVar9 = local_48;\n  do {\n    puVar8 = puVar9;\n    uVar3 = *puVar8 + 0xfefefeff & ~*puVar8;\n    uVar4 = uVar3 & 0x80808080;\n    puVar9 = puVar8 + 1;\n  } while (uVar4 == 0);\n  bVar10 = (uVar3 & 0x8080) == 0;\n  if (bVar10) {\n    uVar4 = uVar4 >> 0x10;\n  }\n  if (bVar10) {\n    puVar9 = (uint *)((int)puVar8 + 6);\n  }\n  sVar5 = strlen(param_2);\n  iVar7 = *(int *)(param_1 + 0x644);\n  iVar1 = *(int *)(param_1 + 0x648);\n  uVar6 = FUN_000313e0((char *)((int)puVar9 +\n                               sVar5 + (-(int)local_48 - (uint)CARRY1((byte)uVar4,(byte)uVar4)) + -2\n                               ),1);\n  iVar2 = *(int *)(param_1 + 0x648);\n  *(undefined4 *)(iVar7 + iVar1 * 4) = uVar6;\n  strcpy(*(char **)(*(int *)(param_1 + 0x644) + iVar2 * 4),(char *)local_48);\n  strcat(*(char **)(*(int *)(param_1 + 0x644) + *(int *)(param_1 + 0x648) * 4),param_2);\n  if (*(int *)(param_1 + 4) != 0) {\n    FUN_000598e0(*(undefined4 *)(param_1 + 0x640),param_1 + 0x60c,\n                 *(undefined4 *)(*(int *)(param_1 + 0x644) + *(int *)(param_1 + 0x648) * 4),0);\n  }\n  *(int *)(param_1 + 0x648) = *(int *)(param_1 + 0x648) + 1;\n  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return;\n  }\n                    /* WARNING: Subroutine does not return */\n  FUN_00077880();\n}" primitive_type (function_declarator "FUN_0005e870(int param_1,char *param_2)" identifier (parameter_list "(int param_1,char *param_2)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "char *param_2" primitive_type (pointer_declarator "*param_2" * identifier)) ))) (compound_statement "{\n  int iVar1;\n  int iVar2;\n  uint uVar3;\n  uint uVar4;\n  size_t sVar5;\n  undefined4 uVar6;\n  int iVar7;\n  uint *puVar8;\n  uint *puVar9;\n  int in_GS_OFFSET;\n  bool bVar10;\n  int local_ac;\n  int local_a8;\n  int local_a4;\n  int local_a0;\n  int local_9c;\n  int local_98;\n  int local_94;\n  int local_90;\n  int local_8c;\n  long local_88;\n  char *local_84;\n  tm local_74;\n  uint local_48 [10];\n  int local_20;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x5e87b;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  if (*(int *)(param_1 + 0x64c) <= *(int *)(param_1 + 0x648)) {\n    iVar7 = *(int *)(param_1 + 0x64c) + 0x40;\n    *(int *)(param_1 + 0x64c) = iVar7;\n    uVar6 = FUN_000314a0(*(undefined4 *)(param_1 + 0x644),iVar7,4);\n    *(undefined4 *)(param_1 + 0x644) = uVar6;\n  }\n  FUN_0004f2a0(&local_ac);\n  local_74.tm_sec = local_ac;\n  local_74.tm_min = local_a8;\n  local_74.tm_hour = local_a4;\n  local_74.tm_mday = local_a0;\n  local_74.tm_mon = local_9c;\n  local_74.tm_year = local_98;\n  local_74.tm_wday = local_94;\n  local_74.tm_yday = local_90;\n  local_74.tm_isdst = local_8c;\n  local_74.tm_gmtoff = local_88;\n  local_74.tm_zone = local_84;\n  strftime((char *)local_48,0x28,"%Y-%m-%d %H:%M:%S\t",&local_74);\n  puVar9 = local_48;\n  do {\n    puVar8 = puVar9;\n    uVar3 = *puVar8 + 0xfefefeff & ~*puVar8;\n    uVar4 = uVar3 & 0x80808080;\n    puVar9 = puVar8 + 1;\n  } while (uVar4 == 0);\n  bVar10 = (uVar3 & 0x8080) == 0;\n  if (bVar10) {\n    uVar4 = uVar4 >> 0x10;\n  }\n  if (bVar10) {\n    puVar9 = (uint *)((int)puVar8 + 6);\n  }\n  sVar5 = strlen(param_2);\n  iVar7 = *(int *)(param_1 + 0x644);\n  iVar1 = *(int *)(param_1 + 0x648);\n  uVar6 = FUN_000313e0((char *)((int)puVar9 +\n                               sVar5 + (-(int)local_48 - (uint)CARRY1((byte)uVar4,(byte)uVar4)) + -2\n                               ),1);\n  iVar2 = *(int *)(param_1 + 0x648);\n  *(undefined4 *)(iVar7 + iVar1 * 4) = uVar6;\n  strcpy(*(char **)(*(int *)(param_1 + 0x644) + iVar2 * 4),(char *)local_48);\n  strcat(*(char **)(*(int *)(param_1 + 0x644) + *(int *)(param_1 + 0x648) * 4),param_2);\n  if (*(int *)(param_1 + 4) != 0) {\n    FUN_000598e0(*(undefined4 *)(param_1 + 0x640),param_1 + 0x60c,\n                 *(undefined4 *)(*(int *)(param_1 + 0x644) + *(int *)(param_1 + 0x648) * 4),0);\n  }\n  *(int *)(param_1 + 0x648) = *(int *)(param_1 + 0x648) + 1;\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 "uint uVar3;" type_identifier identifier ;) (declaration "uint uVar4;" type_identifier identifier ;) (declaration "size_t sVar5;" primitive_type identifier ;) (declaration "undefined4 uVar6;" type_identifier identifier ;) (declaration "int iVar7;" primitive_type identifier ;) (declaration "uint *puVar8;" type_identifier (pointer_declarator "*puVar8" * identifier) ;) (declaration "uint *puVar9;" type_identifier (pointer_declarator "*puVar9" * identifier) ;) (declaration "int in_GS_OFFSET;" primitive_type identifier ;) (declaration "bool bVar10;" primitive_type identifier ;) (declaration "int local_ac;" primitive_type identifier ;) (declaration "int local_a8;" primitive_type identifier ;) (declaration "int local_a4;" primitive_type identifier ;) (declaration "int local_a0;" primitive_type identifier ;) (declaration "int local_9c;" primitive_type identifier ;) (declaration "int local_98;" primitive_type identifier ;) (declaration "int local_94;" primitive_type identifier ;) (declaration "int local_90;" primitive_type identifier ;) (declaration "int local_8c;" primitive_type identifier ;) (declaration "long local_88;" (sized_type_specifier "long" long) identifier ;) (declaration "char *local_84;" primitive_type (pointer_declarator "*local_84" * identifier) ;) (declaration "tm local_74;" type_identifier identifier ;) (declaration "uint local_48 [10];" type_identifier (array_declarator "local_48 [10]" identifier [ number_literal ]) ;) (declaration "int local_20;" primitive_type identifier ;) (declaration "undefined4 uStack_14;" type_identifier identifier ;) (expression_statement "uStack_14 = 0x5e87b;" (assignment_expression "uStack_14 = 0x5e87b" identifier = number_literal) ;) (expression_statement "local_20 = *(int *)(in_GS_OFFSET + 0x14);" (assignment_expression "local_20 = *(int *)(in_GS_OFFSET + 0x14)" identifier = (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) ;) (if_statement "if (*(int *)(param_1 + 0x64c) <= *(int *)(param_1 + 0x648)) {\n    iVar7 = *(int *)(param_1 + 0x64c) + 0x40;\n    *(int *)(param_1 + 0x64c) = iVar7;\n    uVar6 = FUN_000314a0(*(undefined4 *)(param_1 + 0x644),iVar7,4);\n    *(undefined4 *)(param_1 + 0x644) = uVar6;\n  }" if (parenthesized_expression "(*(int *)(param_1 + 0x64c) <= *(int *)(param_1 + 0x648))" ( (binary_expression "*(int *)(param_1 + 0x64c) <= *(int *)(param_1 + 0x648)" (pointer_expression "*(int *)(param_1 + 0x64c)" * (cast_expression "(int *)(param_1 + 0x64c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x64c)" ( (binary_expression "param_1 + 0x64c" identifier + number_literal) )))) <= (pointer_expression "*(int *)(param_1 + 0x648)" * (cast_expression "(int *)(param_1 + 0x648)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x648)" ( (binary_expression "param_1 + 0x648" identifier + number_literal) ))))) )) (compound_statement "{\n    iVar7 = *(int *)(param_1 + 0x64c) + 0x40;\n    *(int *)(param_1 + 0x64c) = iVar7;\n    uVar6 = FUN_000314a0(*(undefined4 *)(param_1 + 0x644),iVar7,4);\n    *(undefined4 *)(param_1 + 0x644) = uVar6;\n  }" { (expression_statement "iVar7 = *(int *)(param_1 + 0x64c) + 0x40;" (assignment_expression "iVar7 = *(int *)(param_1 + 0x64c) + 0x40" identifier = (binary_expression "*(int *)(param_1 + 0x64c) + 0x40" (pointer_expression "*(int *)(param_1 + 0x64c)" * (cast_expression "(int *)(param_1 + 0x64c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x64c)" ( (binary_expression "param_1 + 0x64c" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "*(int *)(param_1 + 0x64c) = iVar7;" (assignment_expression "*(int *)(param_1 + 0x64c) = iVar7" (pointer_expression "*(int *)(param_1 + 0x64c)" * (cast_expression "(int *)(param_1 + 0x64c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x64c)" ( (binary_expression "param_1 + 0x64c" identifier + number_literal) )))) = identifier) ;) (expression_statement "uVar6 = FUN_000314a0(*(undefined4 *)(param_1 + 0x644),iVar7,4);" (assignment_expression "uVar6 = FUN_000314a0(*(undefined4 *)(param_1 + 0x644),iVar7,4)" identifier = (call_expression "FUN_000314a0(*(undefined4 *)(param_1 + 0x644),iVar7,4)" identifier (argument_list "(*(undefined4 *)(param_1 + 0x644),iVar7,4)" ( (pointer_expression "*(undefined4 *)(param_1 + 0x644)" * (cast_expression "(undefined4 *)(param_1 + 0x644)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x644)" ( (binary_expression "param_1 + 0x644" identifier + number_literal) )))) , identifier , number_literal )))) ;) (expression_statement "*(undefined4 *)(param_1 + 0x644) = uVar6;" (assignment_expression "*(undefined4 *)(param_1 + 0x644) = uVar6" (pointer_expression "*(undefined4 *)(param_1 + 0x644)" * (cast_expression "(undefined4 *)(param_1 + 0x644)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x644)" ( (binary_expression "param_1 + 0x644" identifier + number_literal) )))) = identifier) ;) })) (expression_statement "FUN_0004f2a0(&local_ac);" (call_expression "FUN_0004f2a0(&local_ac)" identifier (argument_list "(&local_ac)" ( (pointer_expression "&local_ac" & identifier) ))) ;) (expression_statement "local_74.tm_sec = local_ac;" (assignment_expression "local_74.tm_sec = local_ac" (field_expression "local_74.tm_sec" identifier . field_identifier) = identifier) ;) (expression_statement "local_74.tm_min = local_a8;" (assignment_expression "local_74.tm_min = local_a8" (field_expression "local_74.tm_min" identifier . field_identifier) = identifier) ;) (expression_statement "local_74.tm_hour = local_a4;" (assignment_expression "local_74.tm_hour = local_a4" (field_expression "local_74.tm_hour" identifier . field_identifier) = identifier) ;) (expression_statement "local_74.tm_mday = local_a0;" (assignment_expression "local_74.tm_mday = local_a0" (field_expression "local_74.tm_mday" identifier . field_identifier) = identifier) ;) (expression_statement "local_74.tm_mon = local_9c;" (assignment_expression "local_74.tm_mon = local_9c" (field_expression "local_74.tm_mon" identifier . field_identifier) = identifier) ;) (expression_statement "local_74.tm_year = local_98;" (assignment_expression "local_74.tm_year = local_98" (field_expression "local_74.tm_year" identifier . field_identifier) = identifier) ;) (expression_statement "local_74.tm_wday = local_94;" (assignment_expression "local_74.tm_wday = local_94" (field_expression "local_74.tm_wday" identifier . field_identifier) = identifier) ;) (expression_statement "local_74.tm_yday = local_90;" (assignment_expression "local_74.tm_yday = local_90" (field_expression "local_74.tm_yday" identifier . field_identifier) = identifier) ;) (expression_statement "local_74.tm_isdst = local_8c;" (assignment_expression "local_74.tm_isdst = local_8c" (field_expression "local_74.tm_isdst" identifier . field_identifier) = identifier) ;) (expression_statement "local_74.tm_gmtoff = local_88;" (assignment_expression "local_74.tm_gmtoff = local_88" (field_expression "local_74.tm_gmtoff" identifier . field_identifier) = identifier) ;) (expression_statement "local_74.tm_zone = local_84;" (assignment_expression "local_74.tm_zone = local_84" (field_expression "local_74.tm_zone" identifier . field_identifier) = identifier) ;) (expression_statement "strftime((char *)local_48,0x28,"%Y-%m-%d %H:%M:%S\t",&local_74);" (call_expression "strftime((char *)local_48,0x28,"%Y-%m-%d %H:%M:%S\t",&local_74)" identifier (argument_list "((char *)local_48,0x28,"%Y-%m-%d %H:%M:%S\t",&local_74)" ( (cast_expression "(char *)local_48" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) , number_literal , (string_literal ""%Y-%m-%d %H:%M:%S\t"" " string_content escape_sequence ") , (pointer_expression "&local_74" & identifier) ))) ;) (expression_statement "puVar9 = local_48;" (assignment_expression "puVar9 = local_48" identifier = identifier) ;) (do_statement "do {\n    puVar8 = puVar9;\n    uVar3 = *puVar8 + 0xfefefeff & ~*puVar8;\n    uVar4 = uVar3 & 0x80808080;\n    puVar9 = puVar8 + 1;\n  } while (uVar4 == 0);" do (compound_statement "{\n    puVar8 = puVar9;\n    uVar3 = *puVar8 + 0xfefefeff & ~*puVar8;\n    uVar4 = uVar3 & 0x80808080;\n    puVar9 = puVar8 + 1;\n  }" { (expression_statement "puVar8 = puVar9;" (assignment_expression "puVar8 = puVar9" identifier = identifier) ;) (expression_statement "uVar3 = *puVar8 + 0xfefefeff & ~*puVar8;" (assignment_expression "uVar3 = *puVar8 + 0xfefefeff & ~*puVar8" identifier = (binary_expression "*puVar8 + 0xfefefeff & ~*puVar8" (binary_expression "*puVar8 + 0xfefefeff" (pointer_expression "*puVar8" * identifier) + number_literal) & (unary_expression "~*puVar8" ~ (pointer_expression "*puVar8" * identifier)))) ;) (expression_statement "uVar4 = uVar3 & 0x80808080;" (assignment_expression "uVar4 = uVar3 & 0x80808080" identifier = (binary_expression "uVar3 & 0x80808080" identifier & number_literal)) ;) (expression_statement "puVar9 = puVar8 + 1;" (assignment_expression "puVar9 = puVar8 + 1" identifier = (binary_expression "puVar8 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar4 == 0)" ( (binary_expression "uVar4 == 0" identifier == number_literal) )) ;) (expression_statement "bVar10 = (uVar3 & 0x8080) == 0;" (assignment_expression "bVar10 = (uVar3 & 0x8080) == 0" identifier = (binary_expression "(uVar3 & 0x8080) == 0" (parenthesized_expression "(uVar3 & 0x8080)" ( (binary_expression "uVar3 & 0x8080" identifier & number_literal) )) == number_literal)) ;) (if_statement "if (bVar10) {\n    uVar4 = uVar4 >> 0x10;\n  }" if (parenthesized_expression "(bVar10)" ( identifier )) (compound_statement "{\n    uVar4 = uVar4 >> 0x10;\n  }" { (expression_statement "uVar4 = uVar4 >> 0x10;" (assignment_expression "uVar4 = uVar4 >> 0x10" identifier = (binary_expression "uVar4 >> 0x10" identifier >> number_literal)) ;) })) (if_statement "if (bVar10) {\n    puVar9 = (uint *)((int)puVar8 + 6);\n  }" if (parenthesized_expression "(bVar10)" ( identifier )) (compound_statement "{\n    puVar9 = (uint *)((int)puVar8 + 6);\n  }" { (expression_statement "puVar9 = (uint *)((int)puVar8 + 6);" (assignment_expression "puVar9 = (uint *)((int)puVar8 + 6)" identifier = (cast_expression "(uint *)((int)puVar8 + 6)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar8 + 6)" ( (binary_expression "(int)puVar8 + 6" (cast_expression "(int)puVar8" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) })) (expression_statement "sVar5 = strlen(param_2);" (assignment_expression "sVar5 = strlen(param_2)" identifier = (call_expression "strlen(param_2)" identifier (argument_list "(param_2)" ( identifier )))) ;) (expression_statement "iVar7 = *(int *)(param_1 + 0x644);" (assignment_expression "iVar7 = *(int *)(param_1 + 0x644)" identifier = (pointer_expression "*(int *)(param_1 + 0x644)" * (cast_expression "(int *)(param_1 + 0x644)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x644)" ( (binary_expression "param_1 + 0x644" identifier + number_literal) ))))) ;) (expression_statement "iVar1 = *(int *)(param_1 + 0x648);" (assignment_expression "iVar1 = *(int *)(param_1 + 0x648)" identifier = (pointer_expression "*(int *)(param_1 + 0x648)" * (cast_expression "(int *)(param_1 + 0x648)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x648)" ( (binary_expression "param_1 + 0x648" identifier + number_literal) ))))) ;) (expression_statement "uVar6 = FUN_000313e0((char *)((int)puVar9 +\n                               sVar5 + (-(int)local_48 - (uint)CARRY1((byte)uVar4,(byte)uVar4)) + -2\n                               ),1);" (assignment_expression "uVar6 = FUN_000313e0((char *)((int)puVar9 +\n                               sVar5 + (-(int)local_48 - (uint)CARRY1((byte)uVar4,(byte)uVar4)) + -2\n                               ),1)" identifier = (call_expression "FUN_000313e0((char *)((int)puVar9 +\n                               sVar5 + (-(int)local_48 - (uint)CARRY1((byte)uVar4,(byte)uVar4)) + -2\n                               ),1)" identifier (argument_list "((char *)((int)puVar9 +\n                               sVar5 + (-(int)local_48 - (uint)CARRY1((byte)uVar4,(byte)uVar4)) + -2\n                               ),1)" ( (cast_expression "(char *)((int)puVar9 +\n                               sVar5 + (-(int)local_48 - (uint)CARRY1((byte)uVar4,(byte)uVar4)) + -2\n                               )" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar9 +\n                               sVar5 + (-(int)local_48 - (uint)CARRY1((byte)uVar4,(byte)uVar4)) + -2\n                               )" ( (binary_expression "(int)puVar9 +\n                               sVar5 + (-(int)local_48 - (uint)CARRY1((byte)uVar4,(byte)uVar4)) + -2" (binary_expression "(int)puVar9 +\n                               sVar5 + (-(int)local_48 - (uint)CARRY1((byte)uVar4,(byte)uVar4))" (binary_expression "(int)puVar9 +\n                               sVar5" (cast_expression "(int)puVar9" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) + (parenthesized_expression "(-(int)local_48 - (uint)CARRY1((byte)uVar4,(byte)uVar4))" ( (binary_expression "-(int)local_48 - (uint)CARRY1((byte)uVar4,(byte)uVar4)" (unary_expression "-(int)local_48" - (cast_expression "(int)local_48" ( (type_descriptor "int" primitive_type) ) identifier)) - (cast_expression "(uint)CARRY1((byte)uVar4,(byte)uVar4)" ( (type_descriptor "uint" type_identifier) ) (call_expression "CARRY1((byte)uVar4,(byte)uVar4)" identifier (argument_list "((byte)uVar4,(byte)uVar4)" ( (cast_expression "(byte)uVar4" ( (type_descriptor "byte" type_identifier) ) identifier) , (cast_expression "(byte)uVar4" ( (type_descriptor "byte" type_identifier) ) identifier) ))))) ))) + number_literal) ))) , number_literal )))) ;) (expression_statement "iVar2 = *(int *)(param_1 + 0x648);" (assignment_expression "iVar2 = *(int *)(param_1 + 0x648)" identifier = (pointer_expression "*(int *)(param_1 + 0x648)" * (cast_expression "(int *)(param_1 + 0x648)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x648)" ( (binary_expression "param_1 + 0x648" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(iVar7 + iVar1 * 4) = uVar6;" (assignment_expression "*(undefined4 *)(iVar7 + iVar1 * 4) = uVar6" (pointer_expression "*(undefined4 *)(iVar7 + iVar1 * 4)" * (cast_expression "(undefined4 *)(iVar7 + iVar1 * 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar7 + iVar1 * 4)" ( (binary_expression "iVar7 + iVar1 * 4" identifier + (binary_expression "iVar1 * 4" identifier * number_literal)) )))) = identifier) ;) (expression_statement "strcpy(*(char **)(*(int *)(param_1 + 0x644) + iVar2 * 4),(char *)local_48);" (call_expression "strcpy(*(char **)(*(int *)(param_1 + 0x644) + iVar2 * 4),(char *)local_48)" identifier (argument_list "(*(char **)(*(int *)(param_1 + 0x644) + iVar2 * 4),(char *)local_48)" ( (pointer_expression "*(char **)(*(int *)(param_1 + 0x644) + iVar2 * 4)" * (cast_expression "(char **)(*(int *)(param_1 + 0x644) + iVar2 * 4)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)(param_1 + 0x644) + iVar2 * 4)" ( (binary_expression "*(int *)(param_1 + 0x644) + iVar2 * 4" (pointer_expression "*(int *)(param_1 + 0x644)" * (cast_expression "(int *)(param_1 + 0x644)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x644)" ( (binary_expression "param_1 + 0x644" identifier + number_literal) )))) + (binary_expression "iVar2 * 4" identifier * number_literal)) )))) , (cast_expression "(char *)local_48" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) ))) ;) (expression_statement "strcat(*(char **)(*(int *)(param_1 + 0x644) + *(int *)(param_1 + 0x648) * 4),param_2);" (call_expression "strcat(*(char **)(*(int *)(param_1 + 0x644) + *(int *)(param_1 + 0x648) * 4),param_2)" identifier (argument_list "(*(char **)(*(int *)(param_1 + 0x644) + *(int *)(param_1 + 0x648) * 4),param_2)" ( (pointer_expression "*(char **)(*(int *)(param_1 + 0x644) + *(int *)(param_1 + 0x648) * 4)" * (cast_expression "(char **)(*(int *)(param_1 + 0x644) + *(int *)(param_1 + 0x648) * 4)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)(param_1 + 0x644) + *(int *)(param_1 + 0x648) * 4)" ( (binary_expression "*(int *)(param_1 + 0x644) + *(int *)(param_1 + 0x648) * 4" (pointer_expression "*(int *)(param_1 + 0x644)" * (cast_expression "(int *)(param_1 + 0x644)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x644)" ( (binary_expression "param_1 + 0x644" identifier + number_literal) )))) + (binary_expression "*(int *)(param_1 + 0x648) * 4" (pointer_expression "*(int *)(param_1 + 0x648)" * (cast_expression "(int *)(param_1 + 0x648)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x648)" ( (binary_expression "param_1 + 0x648" identifier + number_literal) )))) * number_literal)) )))) , identifier ))) ;) (if_statement "if (*(int *)(param_1 + 4) != 0) {\n    FUN_000598e0(*(undefined4 *)(param_1 + 0x640),param_1 + 0x60c,\n                 *(undefined4 *)(*(int *)(param_1 + 0x644) + *(int *)(param_1 + 0x648) * 4),0);\n  }" if (parenthesized_expression "(*(int *)(param_1 + 4) != 0)" ( (binary_expression "*(int *)(param_1 + 4) != 0" (pointer_expression "*(int *)(param_1 + 4)" * (cast_expression "(int *)(param_1 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n    FUN_000598e0(*(undefined4 *)(param_1 + 0x640),param_1 + 0x60c,\n                 *(undefined4 *)(*(int *)(param_1 + 0x644) + *(int *)(param_1 + 0x648) * 4),0);\n  }" { (expression_statement "FUN_000598e0(*(undefined4 *)(param_1 + 0x640),param_1 + 0x60c,\n                 *(undefined4 *)(*(int *)(param_1 + 0x644) + *(int *)(param_1 + 0x648) * 4),0);" (call_expression "FUN_000598e0(*(undefined4 *)(param_1 + 0x640),param_1 + 0x60c,\n                 *(undefined4 *)(*(int *)(param_1 + 0x644) + *(int *)(param_1 + 0x648) * 4),0)" identifier (argument_list "(*(undefined4 *)(param_1 + 0x640),param_1 + 0x60c,\n                 *(undefined4 *)(*(int *)(param_1 + 0x644) + *(int *)(param_1 + 0x648) * 4),0)" ( (pointer_expression "*(undefined4 *)(param_1 + 0x640)" * (cast_expression "(undefined4 *)(param_1 + 0x640)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x640)" ( (binary_expression "param_1 + 0x640" identifier + number_literal) )))) , (binary_expression "param_1 + 0x60c" identifier + number_literal) , (pointer_expression "*(undefined4 *)(*(int *)(param_1 + 0x644) + *(int *)(param_1 + 0x648) * 4)" * (cast_expression "(undefined4 *)(*(int *)(param_1 + 0x644) + *(int *)(param_1 + 0x648) * 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(param_1 + 0x644) + *(int *)(param_1 + 0x648) * 4)" ( (binary_expression "*(int *)(param_1 + 0x644) + *(int *)(param_1 + 0x648) * 4" (pointer_expression "*(int *)(param_1 + 0x644)" * (cast_expression "(int *)(param_1 + 0x644)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x644)" ( (binary_expression "param_1 + 0x644" identifier + number_literal) )))) + (binary_expression "*(int *)(param_1 + 0x648) * 4" (pointer_expression "*(int *)(param_1 + 0x648)" * (cast_expression "(int *)(param_1 + 0x648)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x648)" ( (binary_expression "param_1 + 0x648" identifier + number_literal) )))) * number_literal)) )))) , number_literal ))) ;) })) (expression_statement "*(int *)(param_1 + 0x648) = *(int *)(param_1 + 0x648) + 1;" (assignment_expression "*(int *)(param_1 + 0x648) = *(int *)(param_1 + 0x648) + 1" (pointer_expression "*(int *)(param_1 + 0x648)" * (cast_expression "(int *)(param_1 + 0x648)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x648)" ( (binary_expression "param_1 + 0x648" identifier + number_literal) )))) = (binary_expression "*(int *)(param_1 + 0x648) + 1" (pointer_expression "*(int *)(param_1 + 0x648)" * (cast_expression "(int *)(param_1 + 0x648)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x648)" ( (binary_expression "param_1 + 0x648" identifier + number_literal) )))) + number_literal)) ;) (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\nvoid logevent_dlg(void *estuff,char *string)\n\n{\n  int iVar1;\n  int iVar2;\n  int iVar3;\n  int iVar4;\n  uint uVar5;\n  uint uVar6;\n  size_t sVar7;\n  void *pvVar8;\n  size_t n;\n  uint *puVar9;\n  uint *puVar10;\n  int in_GS_OFFSET;\n  bool bVar11;\n  tm tm;\n  char timebuf [40];\n  \n  iVar1 = *(int *)(in_GS_OFFSET + 0x14);\n  if (*(int *)((int)estuff + 0x64c) <= *(int *)((int)estuff + 0x648)) {\n    n = *(int *)((int)estuff + 0x64c) + 0x40;\n    *(size_t *)((int)estuff + 0x64c) = n;\n    pvVar8 = saferealloc(*(void **)((int)estuff + 0x644),n,4);\n    *(void **)((int)estuff + 0x644) = pvVar8;\n  }\n  ltime();\n  strftime(timebuf,0x28,"%Y-%m-%d %H:%M:%S\t",(tm *)&tm);\n  puVar10 = (uint *)timebuf;\n  do {\n    puVar9 = puVar10;\n    uVar5 = *puVar9 + 0xfefefeff & ~*puVar9;\n    uVar6 = uVar5 & 0x80808080;\n    puVar10 = puVar9 + 1;\n  } while (uVar6 == 0);\n  bVar11 = (uVar5 & 0x8080) == 0;\n  if (bVar11) {\n    uVar6 = uVar6 >> 0x10;\n  }\n  if (bVar11) {\n    puVar10 = (uint *)((int)puVar9 + 6);\n  }\n  sVar7 = strlen(string);\n  iVar2 = *(int *)((int)estuff + 0x644);\n  iVar3 = *(int *)((int)estuff + 0x648);\n  pvVar8 = safemalloc((size_t)((int)puVar10 +\n                              sVar7 + (-(int)timebuf - (uint)CARRY1((byte)uVar6,(byte)uVar6)) + -2),\n                      1);\n  iVar4 = *(int *)((int)estuff + 0x648);\n  *(void **)(iVar2 + iVar3 * 4) = pvVar8;\n  strcpy(*(char **)(*(int *)((int)estuff + 0x644) + iVar4 * 4),timebuf);\n  strcat(*(char **)(*(int *)((int)estuff + 0x644) + *(int *)((int)estuff + 0x648) * 4),string);\n  if (*(int *)((int)estuff + 4) != 0) {\n    dlg_listbox_addwithid\n              (*(control **)((int)estuff + 0x640),(void *)((int)estuff + 0x60c),\n               *(char **)(*(int *)((int)estuff + 0x644) + *(int *)((int)estuff + 0x648) * 4),0);\n  }\n  *(int *)((int)estuff + 0x648) = *(int *)((int)estuff + 0x648) + 1;\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 (function_definition "void logevent_dlg(void *estuff,char *string)\n\n{\n  int iVar1;\n  int iVar2;\n  int iVar3;\n  int iVar4;\n  uint uVar5;\n  uint uVar6;\n  size_t sVar7;\n  void *pvVar8;\n  size_t n;\n  uint *puVar9;\n  uint *puVar10;\n  int in_GS_OFFSET;\n  bool bVar11;\n  tm tm;\n  char timebuf [40];\n  \n  iVar1 = *(int *)(in_GS_OFFSET + 0x14);\n  if (*(int *)((int)estuff + 0x64c) <= *(int *)((int)estuff + 0x648)) {\n    n = *(int *)((int)estuff + 0x64c) + 0x40;\n    *(size_t *)((int)estuff + 0x64c) = n;\n    pvVar8 = saferealloc(*(void **)((int)estuff + 0x644),n,4);\n    *(void **)((int)estuff + 0x644) = pvVar8;\n  }\n  ltime();\n  strftime(timebuf,0x28,"%Y-%m-%d %H:%M:%S\t",(tm *)&tm);\n  puVar10 = (uint *)timebuf;\n  do {\n    puVar9 = puVar10;\n    uVar5 = *puVar9 + 0xfefefeff & ~*puVar9;\n    uVar6 = uVar5 & 0x80808080;\n    puVar10 = puVar9 + 1;\n  } while (uVar6 == 0);\n  bVar11 = (uVar5 & 0x8080) == 0;\n  if (bVar11) {\n    uVar6 = uVar6 >> 0x10;\n  }\n  if (bVar11) {\n    puVar10 = (uint *)((int)puVar9 + 6);\n  }\n  sVar7 = strlen(string);\n  iVar2 = *(int *)((int)estuff + 0x644);\n  iVar3 = *(int *)((int)estuff + 0x648);\n  pvVar8 = safemalloc((size_t)((int)puVar10 +\n                              sVar7 + (-(int)timebuf - (uint)CARRY1((byte)uVar6,(byte)uVar6)) + -2),\n                      1);\n  iVar4 = *(int *)((int)estuff + 0x648);\n  *(void **)(iVar2 + iVar3 * 4) = pvVar8;\n  strcpy(*(char **)(*(int *)((int)estuff + 0x644) + iVar4 * 4),timebuf);\n  strcat(*(char **)(*(int *)((int)estuff + 0x644) + *(int *)((int)estuff + 0x648) * 4),string);\n  if (*(int *)((int)estuff + 4) != 0) {\n    dlg_listbox_addwithid\n              (*(control **)((int)estuff + 0x640),(void *)((int)estuff + 0x60c),\n               *(char **)(*(int *)((int)estuff + 0x644) + *(int *)((int)estuff + 0x648) * 4),0);\n  }\n  *(int *)((int)estuff + 0x648) = *(int *)((int)estuff + 0x648) + 1;\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 (function_declarator "logevent_dlg(void *estuff,char *string)" identifier (parameter_list "(void *estuff,char *string)" ( (parameter_declaration "void *estuff" primitive_type (pointer_declarator "*estuff" * identifier)) , (parameter_declaration "char *string" primitive_type (pointer_declarator "*string" * identifier)) ))) (compound_statement "{\n  int iVar1;\n  int iVar2;\n  int iVar3;\n  int iVar4;\n  uint uVar5;\n  uint uVar6;\n  size_t sVar7;\n  void *pvVar8;\n  size_t n;\n  uint *puVar9;\n  uint *puVar10;\n  int in_GS_OFFSET;\n  bool bVar11;\n  tm tm;\n  char timebuf [40];\n  \n  iVar1 = *(int *)(in_GS_OFFSET + 0x14);\n  if (*(int *)((int)estuff + 0x64c) <= *(int *)((int)estuff + 0x648)) {\n    n = *(int *)((int)estuff + 0x64c) + 0x40;\n    *(size_t *)((int)estuff + 0x64c) = n;\n    pvVar8 = saferealloc(*(void **)((int)estuff + 0x644),n,4);\n    *(void **)((int)estuff + 0x644) = pvVar8;\n  }\n  ltime();\n  strftime(timebuf,0x28,"%Y-%m-%d %H:%M:%S\t",(tm *)&tm);\n  puVar10 = (uint *)timebuf;\n  do {\n    puVar9 = puVar10;\n    uVar5 = *puVar9 + 0xfefefeff & ~*puVar9;\n    uVar6 = uVar5 & 0x80808080;\n    puVar10 = puVar9 + 1;\n  } while (uVar6 == 0);\n  bVar11 = (uVar5 & 0x8080) == 0;\n  if (bVar11) {\n    uVar6 = uVar6 >> 0x10;\n  }\n  if (bVar11) {\n    puVar10 = (uint *)((int)puVar9 + 6);\n  }\n  sVar7 = strlen(string);\n  iVar2 = *(int *)((int)estuff + 0x644);\n  iVar3 = *(int *)((int)estuff + 0x648);\n  pvVar8 = safemalloc((size_t)((int)puVar10 +\n                              sVar7 + (-(int)timebuf - (uint)CARRY1((byte)uVar6,(byte)uVar6)) + -2),\n                      1);\n  iVar4 = *(int *)((int)estuff + 0x648);\n  *(void **)(iVar2 + iVar3 * 4) = pvVar8;\n  strcpy(*(char **)(*(int *)((int)estuff + 0x644) + iVar4 * 4),timebuf);\n  strcat(*(char **)(*(int *)((int)estuff + 0x644) + *(int *)((int)estuff + 0x648) * 4),string);\n  if (*(int *)((int)estuff + 4) != 0) {\n    dlg_listbox_addwithid\n              (*(control **)((int)estuff + 0x640),(void *)((int)estuff + 0x60c),\n               *(char **)(*(int *)((int)estuff + 0x644) + *(int *)((int)estuff + 0x648) * 4),0);\n  }\n  *(int *)((int)estuff + 0x648) = *(int *)((int)estuff + 0x648) + 1;\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 "int iVar2;" primitive_type identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "uint uVar5;" type_identifier identifier ;) (declaration "uint uVar6;" type_identifier identifier ;) (declaration "size_t sVar7;" primitive_type identifier ;) (declaration "void *pvVar8;" primitive_type (pointer_declarator "*pvVar8" * identifier) ;) (declaration "size_t n;" primitive_type identifier ;) (declaration "uint *puVar9;" type_identifier (pointer_declarator "*puVar9" * identifier) ;) (declaration "uint *puVar10;" type_identifier (pointer_declarator "*puVar10" * identifier) ;) (declaration "int in_GS_OFFSET;" primitive_type identifier ;) (declaration "bool bVar11;" primitive_type identifier ;) (declaration "tm tm;" type_identifier identifier ;) (declaration "char timebuf [40];" primitive_type (array_declarator "timebuf [40]" identifier [ number_literal ]) ;) (expression_statement "iVar1 = *(int *)(in_GS_OFFSET + 0x14);" (assignment_expression "iVar1 = *(int *)(in_GS_OFFSET + 0x14)" identifier = (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) ;) (if_statement "if (*(int *)((int)estuff + 0x64c) <= *(int *)((int)estuff + 0x648)) {\n    n = *(int *)((int)estuff + 0x64c) + 0x40;\n    *(size_t *)((int)estuff + 0x64c) = n;\n    pvVar8 = saferealloc(*(void **)((int)estuff + 0x644),n,4);\n    *(void **)((int)estuff + 0x644) = pvVar8;\n  }" if (parenthesized_expression "(*(int *)((int)estuff + 0x64c) <= *(int *)((int)estuff + 0x648))" ( (binary_expression "*(int *)((int)estuff + 0x64c) <= *(int *)((int)estuff + 0x648)" (pointer_expression "*(int *)((int)estuff + 0x64c)" * (cast_expression "(int *)((int)estuff + 0x64c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)estuff + 0x64c)" ( (binary_expression "(int)estuff + 0x64c" (cast_expression "(int)estuff" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) <= (pointer_expression "*(int *)((int)estuff + 0x648)" * (cast_expression "(int *)((int)estuff + 0x648)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)estuff + 0x648)" ( (binary_expression "(int)estuff + 0x648" (cast_expression "(int)estuff" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) )) (compound_statement "{\n    n = *(int *)((int)estuff + 0x64c) + 0x40;\n    *(size_t *)((int)estuff + 0x64c) = n;\n    pvVar8 = saferealloc(*(void **)((int)estuff + 0x644),n,4);\n    *(void **)((int)estuff + 0x644) = pvVar8;\n  }" { (expression_statement "n = *(int *)((int)estuff + 0x64c) + 0x40;" (assignment_expression "n = *(int *)((int)estuff + 0x64c) + 0x40" identifier = (binary_expression "*(int *)((int)estuff + 0x64c) + 0x40" (pointer_expression "*(int *)((int)estuff + 0x64c)" * (cast_expression "(int *)((int)estuff + 0x64c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)estuff + 0x64c)" ( (binary_expression "(int)estuff + 0x64c" (cast_expression "(int)estuff" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) + number_literal)) ;) (expression_statement "*(size_t *)((int)estuff + 0x64c) = n;" (assignment_expression "*(size_t *)((int)estuff + 0x64c) = n" (pointer_expression "*(size_t *)((int)estuff + 0x64c)" * (cast_expression "(size_t *)((int)estuff + 0x64c)" ( (type_descriptor "size_t *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)estuff + 0x64c)" ( (binary_expression "(int)estuff + 0x64c" (cast_expression "(int)estuff" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "pvVar8 = saferealloc(*(void **)((int)estuff + 0x644),n,4);" (assignment_expression "pvVar8 = saferealloc(*(void **)((int)estuff + 0x644),n,4)" identifier = (call_expression "saferealloc(*(void **)((int)estuff + 0x644),n,4)" identifier (argument_list "(*(void **)((int)estuff + 0x644),n,4)" ( (pointer_expression "*(void **)((int)estuff + 0x644)" * (cast_expression "(void **)((int)estuff + 0x644)" ( (type_descriptor "void **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)estuff + 0x644)" ( (binary_expression "(int)estuff + 0x644" (cast_expression "(int)estuff" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) , identifier , number_literal )))) ;) (expression_statement "*(void **)((int)estuff + 0x644) = pvVar8;" (assignment_expression "*(void **)((int)estuff + 0x644) = pvVar8" (pointer_expression "*(void **)((int)estuff + 0x644)" * (cast_expression "(void **)((int)estuff + 0x644)" ( (type_descriptor "void **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)estuff + 0x644)" ( (binary_expression "(int)estuff + 0x644" (cast_expression "(int)estuff" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) })) (expression_statement "ltime();" (call_expression "ltime()" identifier (argument_list "()" ( ))) ;) (expression_statement "strftime(timebuf,0x28,"%Y-%m-%d %H:%M:%S\t",(tm *)&tm);" (call_expression "strftime(timebuf,0x28,"%Y-%m-%d %H:%M:%S\t",(tm *)&tm)" identifier (argument_list "(timebuf,0x28,"%Y-%m-%d %H:%M:%S\t",(tm *)&tm)" ( identifier , number_literal , (string_literal ""%Y-%m-%d %H:%M:%S\t"" " string_content escape_sequence ") , (cast_expression "(tm *)&tm" ( (type_descriptor "tm *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&tm" & identifier)) ))) ;) (expression_statement "puVar10 = (uint *)timebuf;" (assignment_expression "puVar10 = (uint *)timebuf" identifier = (cast_expression "(uint *)timebuf" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (do_statement "do {\n    puVar9 = puVar10;\n    uVar5 = *puVar9 + 0xfefefeff & ~*puVar9;\n    uVar6 = uVar5 & 0x80808080;\n    puVar10 = puVar9 + 1;\n  } while (uVar6 == 0);" do (compound_statement "{\n    puVar9 = puVar10;\n    uVar5 = *puVar9 + 0xfefefeff & ~*puVar9;\n    uVar6 = uVar5 & 0x80808080;\n    puVar10 = puVar9 + 1;\n  }" { (expression_statement "puVar9 = puVar10;" (assignment_expression "puVar9 = puVar10" identifier = identifier) ;) (expression_statement "uVar5 = *puVar9 + 0xfefefeff & ~*puVar9;" (assignment_expression "uVar5 = *puVar9 + 0xfefefeff & ~*puVar9" identifier = (binary_expression "*puVar9 + 0xfefefeff & ~*puVar9" (binary_expression "*puVar9 + 0xfefefeff" (pointer_expression "*puVar9" * identifier) + number_literal) & (unary_expression "~*puVar9" ~ (pointer_expression "*puVar9" * identifier)))) ;) (expression_statement "uVar6 = uVar5 & 0x80808080;" (assignment_expression "uVar6 = uVar5 & 0x80808080" identifier = (binary_expression "uVar5 & 0x80808080" identifier & number_literal)) ;) (expression_statement "puVar10 = puVar9 + 1;" (assignment_expression "puVar10 = puVar9 + 1" identifier = (binary_expression "puVar9 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar6 == 0)" ( (binary_expression "uVar6 == 0" identifier == number_literal) )) ;) (expression_statement "bVar11 = (uVar5 & 0x8080) == 0;" (assignment_expression "bVar11 = (uVar5 & 0x8080) == 0" identifier = (binary_expression "(uVar5 & 0x8080) == 0" (parenthesized_expression "(uVar5 & 0x8080)" ( (binary_expression "uVar5 & 0x8080" identifier & number_literal) )) == number_literal)) ;) (if_statement "if (bVar11) {\n    uVar6 = uVar6 >> 0x10;\n  }" if (parenthesized_expression "(bVar11)" ( identifier )) (compound_statement "{\n    uVar6 = uVar6 >> 0x10;\n  }" { (expression_statement "uVar6 = uVar6 >> 0x10;" (assignment_expression "uVar6 = uVar6 >> 0x10" identifier = (binary_expression "uVar6 >> 0x10" identifier >> number_literal)) ;) })) (if_statement "if (bVar11) {\n    puVar10 = (uint *)((int)puVar9 + 6);\n  }" if (parenthesized_expression "(bVar11)" ( identifier )) (compound_statement "{\n    puVar10 = (uint *)((int)puVar9 + 6);\n  }" { (expression_statement "puVar10 = (uint *)((int)puVar9 + 6);" (assignment_expression "puVar10 = (uint *)((int)puVar9 + 6)" identifier = (cast_expression "(uint *)((int)puVar9 + 6)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar9 + 6)" ( (binary_expression "(int)puVar9 + 6" (cast_expression "(int)puVar9" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) })) (expression_statement "sVar7 = strlen(string);" (assignment_expression "sVar7 = strlen(string)" identifier = (call_expression "strlen(string)" identifier (argument_list "(string)" ( identifier )))) ;) (expression_statement "iVar2 = *(int *)((int)estuff + 0x644);" (assignment_expression "iVar2 = *(int *)((int)estuff + 0x644)" identifier = (pointer_expression "*(int *)((int)estuff + 0x644)" * (cast_expression "(int *)((int)estuff + 0x644)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)estuff + 0x644)" ( (binary_expression "(int)estuff + 0x644" (cast_expression "(int)estuff" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (expression_statement "iVar3 = *(int *)((int)estuff + 0x648);" (assignment_expression "iVar3 = *(int *)((int)estuff + 0x648)" identifier = (pointer_expression "*(int *)((int)estuff + 0x648)" * (cast_expression "(int *)((int)estuff + 0x648)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)estuff + 0x648)" ( (binary_expression "(int)estuff + 0x648" (cast_expression "(int)estuff" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (expression_statement "pvVar8 = safemalloc((size_t)((int)puVar10 +\n                              sVar7 + (-(int)timebuf - (uint)CARRY1((byte)uVar6,(byte)uVar6)) + -2),\n                      1);" (assignment_expression "pvVar8 = safemalloc((size_t)((int)puVar10 +\n                              sVar7 + (-(int)timebuf - (uint)CARRY1((byte)uVar6,(byte)uVar6)) + -2),\n                      1)" identifier = (call_expression "safemalloc((size_t)((int)puVar10 +\n                              sVar7 + (-(int)timebuf - (uint)CARRY1((byte)uVar6,(byte)uVar6)) + -2),\n                      1)" identifier (argument_list "((size_t)((int)puVar10 +\n                              sVar7 + (-(int)timebuf - (uint)CARRY1((byte)uVar6,(byte)uVar6)) + -2),\n                      1)" ( (cast_expression "(size_t)((int)puVar10 +\n                              sVar7 + (-(int)timebuf - (uint)CARRY1((byte)uVar6,(byte)uVar6)) + -2)" ( (type_descriptor "size_t" primitive_type) ) (parenthesized_expression "((int)puVar10 +\n                              sVar7 + (-(int)timebuf - (uint)CARRY1((byte)uVar6,(byte)uVar6)) + -2)" ( (binary_expression "(int)puVar10 +\n                              sVar7 + (-(int)timebuf - (uint)CARRY1((byte)uVar6,(byte)uVar6)) + -2" (binary_expression "(int)puVar10 +\n                              sVar7 + (-(int)timebuf - (uint)CARRY1((byte)uVar6,(byte)uVar6))" (binary_expression "(int)puVar10 +\n                              sVar7" (cast_expression "(int)puVar10" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) + (parenthesized_expression "(-(int)timebuf - (uint)CARRY1((byte)uVar6,(byte)uVar6))" ( (binary_expression "-(int)timebuf - (uint)CARRY1((byte)uVar6,(byte)uVar6)" (unary_expression "-(int)timebuf" - (cast_expression "(int)timebuf" ( (type_descriptor "int" primitive_type) ) identifier)) - (cast_expression "(uint)CARRY1((byte)uVar6,(byte)uVar6)" ( (type_descriptor "uint" type_identifier) ) (call_expression "CARRY1((byte)uVar6,(byte)uVar6)" identifier (argument_list "((byte)uVar6,(byte)uVar6)" ( (cast_expression "(byte)uVar6" ( (type_descriptor "byte" type_identifier) ) identifier) , (cast_expression "(byte)uVar6" ( (type_descriptor "byte" type_identifier) ) identifier) ))))) ))) + number_literal) ))) , number_literal )))) ;) (expression_statement "iVar4 = *(int *)((int)estuff + 0x648);" (assignment_expression "iVar4 = *(int *)((int)estuff + 0x648)" identifier = (pointer_expression "*(int *)((int)estuff + 0x648)" * (cast_expression "(int *)((int)estuff + 0x648)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)estuff + 0x648)" ( (binary_expression "(int)estuff + 0x648" (cast_expression "(int)estuff" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (expression_statement "*(void **)(iVar2 + iVar3 * 4) = pvVar8;" (assignment_expression "*(void **)(iVar2 + iVar3 * 4) = pvVar8" (pointer_expression "*(void **)(iVar2 + iVar3 * 4)" * (cast_expression "(void **)(iVar2 + iVar3 * 4)" ( (type_descriptor "void **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar2 + iVar3 * 4)" ( (binary_expression "iVar2 + iVar3 * 4" identifier + (binary_expression "iVar3 * 4" identifier * number_literal)) )))) = identifier) ;) (expression_statement "strcpy(*(char **)(*(int *)((int)estuff + 0x644) + iVar4 * 4),timebuf);" (call_expression "strcpy(*(char **)(*(int *)((int)estuff + 0x644) + iVar4 * 4),timebuf)" identifier (argument_list "(*(char **)(*(int *)((int)estuff + 0x644) + iVar4 * 4),timebuf)" ( (pointer_expression "*(char **)(*(int *)((int)estuff + 0x644) + iVar4 * 4)" * (cast_expression "(char **)(*(int *)((int)estuff + 0x644) + iVar4 * 4)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)((int)estuff + 0x644) + iVar4 * 4)" ( (binary_expression "*(int *)((int)estuff + 0x644) + iVar4 * 4" (pointer_expression "*(int *)((int)estuff + 0x644)" * (cast_expression "(int *)((int)estuff + 0x644)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)estuff + 0x644)" ( (binary_expression "(int)estuff + 0x644" (cast_expression "(int)estuff" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) + (binary_expression "iVar4 * 4" identifier * number_literal)) )))) , identifier ))) ;) (expression_statement "strcat(*(char **)(*(int *)((int)estuff + 0x644) + *(int *)((int)estuff + 0x648) * 4),string);" (call_expression "strcat(*(char **)(*(int *)((int)estuff + 0x644) + *(int *)((int)estuff + 0x648) * 4),string)" identifier (argument_list "(*(char **)(*(int *)((int)estuff + 0x644) + *(int *)((int)estuff + 0x648) * 4),string)" ( (pointer_expression "*(char **)(*(int *)((int)estuff + 0x644) + *(int *)((int)estuff + 0x648) * 4)" * (cast_expression "(char **)(*(int *)((int)estuff + 0x644) + *(int *)((int)estuff + 0x648) * 4)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)((int)estuff + 0x644) + *(int *)((int)estuff + 0x648) * 4)" ( (binary_expression "*(int *)((int)estuff + 0x644) + *(int *)((int)estuff + 0x648) * 4" (pointer_expression "*(int *)((int)estuff + 0x644)" * (cast_expression "(int *)((int)estuff + 0x644)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)estuff + 0x644)" ( (binary_expression "(int)estuff + 0x644" (cast_expression "(int)estuff" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) + (binary_expression "*(int *)((int)estuff + 0x648) * 4" (pointer_expression "*(int *)((int)estuff + 0x648)" * (cast_expression "(int *)((int)estuff + 0x648)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)estuff + 0x648)" ( (binary_expression "(int)estuff + 0x648" (cast_expression "(int)estuff" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) * number_literal)) )))) , identifier ))) ;) (if_statement "if (*(int *)((int)estuff + 4) != 0) {\n    dlg_listbox_addwithid\n              (*(control **)((int)estuff + 0x640),(void *)((int)estuff + 0x60c),\n               *(char **)(*(int *)((int)estuff + 0x644) + *(int *)((int)estuff + 0x648) * 4),0);\n  }" if (parenthesized_expression "(*(int *)((int)estuff + 4) != 0)" ( (binary_expression "*(int *)((int)estuff + 4) != 0" (pointer_expression "*(int *)((int)estuff + 4)" * (cast_expression "(int *)((int)estuff + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)estuff + 4)" ( (binary_expression "(int)estuff + 4" (cast_expression "(int)estuff" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) != number_literal) )) (compound_statement "{\n    dlg_listbox_addwithid\n              (*(control **)((int)estuff + 0x640),(void *)((int)estuff + 0x60c),\n               *(char **)(*(int *)((int)estuff + 0x644) + *(int *)((int)estuff + 0x648) * 4),0);\n  }" { (expression_statement "dlg_listbox_addwithid\n              (*(control **)((int)estuff + 0x640),(void *)((int)estuff + 0x60c),\n               *(char **)(*(int *)((int)estuff + 0x644) + *(int *)((int)estuff + 0x648) * 4),0);" (call_expression "dlg_listbox_addwithid\n              (*(control **)((int)estuff + 0x640),(void *)((int)estuff + 0x60c),\n               *(char **)(*(int *)((int)estuff + 0x644) + *(int *)((int)estuff + 0x648) * 4),0)" identifier (argument_list "(*(control **)((int)estuff + 0x640),(void *)((int)estuff + 0x60c),\n               *(char **)(*(int *)((int)estuff + 0x644) + *(int *)((int)estuff + 0x648) * 4),0)" ( (pointer_expression "*(control **)((int)estuff + 0x640)" * (cast_expression "(control **)((int)estuff + 0x640)" ( (type_descriptor "control **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)estuff + 0x640)" ( (binary_expression "(int)estuff + 0x640" (cast_expression "(int)estuff" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) , (cast_expression "(void *)((int)estuff + 0x60c)" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)estuff + 0x60c)" ( (binary_expression "(int)estuff + 0x60c" (cast_expression "(int)estuff" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))) , (pointer_expression "*(char **)(*(int *)((int)estuff + 0x644) + *(int *)((int)estuff + 0x648) * 4)" * (cast_expression "(char **)(*(int *)((int)estuff + 0x644) + *(int *)((int)estuff + 0x648) * 4)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)((int)estuff + 0x644) + *(int *)((int)estuff + 0x648) * 4)" ( (binary_expression "*(int *)((int)estuff + 0x644) + *(int *)((int)estuff + 0x648) * 4" (pointer_expression "*(int *)((int)estuff + 0x644)" * (cast_expression "(int *)((int)estuff + 0x644)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)estuff + 0x644)" ( (binary_expression "(int)estuff + 0x644" (cast_expression "(int)estuff" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) + (binary_expression "*(int *)((int)estuff + 0x648) * 4" (pointer_expression "*(int *)((int)estuff + 0x648)" * (cast_expression "(int *)((int)estuff + 0x648)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)estuff + 0x648)" ( (binary_expression "(int)estuff + 0x648" (cast_expression "(int)estuff" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) * number_literal)) )))) , number_literal ))) ;) })) (expression_statement "*(int *)((int)estuff + 0x648) = *(int *)((int)estuff + 0x648) + 1;" (assignment_expression "*(int *)((int)estuff + 0x648) = *(int *)((int)estuff + 0x648) + 1" (pointer_expression "*(int *)((int)estuff + 0x648)" * (cast_expression "(int *)((int)estuff + 0x648)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)estuff + 0x648)" ( (binary_expression "(int)estuff + 0x648" (cast_expression "(int)estuff" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (binary_expression "*(int *)((int)estuff + 0x648) + 1" (pointer_expression "*(int *)((int)estuff + 0x648)" * (cast_expression "(int *)((int)estuff + 0x648)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)estuff + 0x648)" ( (binary_expression "(int)estuff + 0x648" (cast_expression "(int)estuff" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) + number_literal)) ;) (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 FUN_0005e870(int param_1,char *param_2)\n\n{\n  int iVar1;\n  int iVar2;\n  uint uVar3;\n  uint uVar4;\n  size_t sVar5;\n  undefined4 uVar6;\n  int iVar7;\n  uint *puVar8;\n  uint *puVar9;\n  int in_GS_OFFSET;\n  bool bVar10;\n  int local_ac;\n  int local_a8;\n  int local_a4;\n  int local_a0;\n  int local_9c;\n  int local_98;\n  int local_94;\n  int local_90;\n  int local_8c;\n  long local_88;\n  char *local_84;\n  tm local_74;\n  uint local_48 [10];\n  int local_20;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x5e87b;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  if (*(int *)(param_1 + 0x64c) <= *(int *)(param_1 + 0x648)) {\n    iVar7 = *(int *)(param_1 + 0x64c) + 0x40;\n    *(int *)(param_1 + 0x64c) = iVar7;\n    uVar6 = FUN_000314a0(*(undefined4 *)(param_1 + 0x644),iVar7,4);\n    *(undefined4 *)(param_1 + 0x644) = uVar6;\n  }\n  FUN_0004f2a0(&local_ac);\n  local_74.tm_sec = local_ac;\n  local_74.tm_min = local_a8;\n  local_74.tm_hour = local_a4;\n  local_74.tm_mday = local_a0;\n  local_74.tm_mon = local_9c;\n  local_74.tm_year = local_98;\n  local_74.tm_wday = local_94;\n  local_74.tm_yday = local_90;\n  local_74.tm_isdst = local_8c;\n  local_74.tm_gmtoff = local_88;\n  local_74.tm_zone = local_84;\n  strftime((char *)local_48,0x28,"%Y-%m-%d %H:%M:%S\t",&local_74);\n  puVar9 = local_48;\n  do {\n    puVar8 = puVar9;\n    uVar3 = *puVar8 + 0xfefefeff & ~*puVar8;\n    uVar4 = uVar3 & 0x80808080;\n    puVar9 = puVar8 + 1;\n  } while (uVar4 == 0);\n  bVar10 = (uVar3 & 0x8080) == 0;\n  if (bVar10) {\n    uVar4 = uVar4 >> 0x10;\n  }\n  if (bVar10) {\n    puVar9 = (uint *)((int)puVar8 + 6);\n  }\n  sVar5 = strlen(param_2);\n  iVar7 = *(int *)(param_1 + 0x644);\n  iVar1 = *(int *)(param_1 + 0x648);\n  uVar6 = FUN_000313e0((char *)((int)puVar9 +\n                               sVar5 + (-(int)local_48 - (uint)CARRY1((byte)uVar4,(byte)uVar4)) + -2\n                               ),1);\n  iVar2 = *(int *)(param_1 + 0x648);\n  *(undefined4 *)(iVar7 + iVar1 * 4) = uVar6;\n  strcpy(*(char **)(*(int *)(param_1 + 0x644) + iVar2 * 4),(char *)local_48);\n  strcat(*(char **)(*(int *)(param_1 + 0x644) + *(int *)(param_1 + 0x648) * 4),param_2);\n  if (*(int *)(param_1 + 4) != 0) {\n    FUN_000598e0(*(undefined4 *)(param_1 + 0x640),param_1 + 0x60c,\n                 *(undefined4 *)(*(int *)(param_1 + 0x644) + *(int *)(param_1 + 0x648) * 4),0);\n  }\n  *(int *)(param_1 + 0x648) = *(int *)(param_1 + 0x648) + 1;\n  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return;\n  }\n                    \n  FUN_00077880();\n}\n\n" (function_definition "void FUN_0005e870(int param_1,char *param_2)\n\n{\n  int iVar1;\n  int iVar2;\n  uint uVar3;\n  uint uVar4;\n  size_t sVar5;\n  undefined4 uVar6;\n  int iVar7;\n  uint *puVar8;\n  uint *puVar9;\n  int in_GS_OFFSET;\n  bool bVar10;\n  int local_ac;\n  int local_a8;\n  int local_a4;\n  int local_a0;\n  int local_9c;\n  int local_98;\n  int local_94;\n  int local_90;\n  int local_8c;\n  long local_88;\n  char *local_84;\n  tm local_74;\n  uint local_48 [10];\n  int local_20;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x5e87b;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  if (*(int *)(param_1 + 0x64c) <= *(int *)(param_1 + 0x648)) {\n    iVar7 = *(int *)(param_1 + 0x64c) + 0x40;\n    *(int *)(param_1 + 0x64c) = iVar7;\n    uVar6 = FUN_000314a0(*(undefined4 *)(param_1 + 0x644),iVar7,4);\n    *(undefined4 *)(param_1 + 0x644) = uVar6;\n  }\n  FUN_0004f2a0(&local_ac);\n  local_74.tm_sec = local_ac;\n  local_74.tm_min = local_a8;\n  local_74.tm_hour = local_a4;\n  local_74.tm_mday = local_a0;\n  local_74.tm_mon = local_9c;\n  local_74.tm_year = local_98;\n  local_74.tm_wday = local_94;\n  local_74.tm_yday = local_90;\n  local_74.tm_isdst = local_8c;\n  local_74.tm_gmtoff = local_88;\n  local_74.tm_zone = local_84;\n  strftime((char *)local_48,0x28,"%Y-%m-%d %H:%M:%S\t",&local_74);\n  puVar9 = local_48;\n  do {\n    puVar8 = puVar9;\n    uVar3 = *puVar8 + 0xfefefeff & ~*puVar8;\n    uVar4 = uVar3 & 0x80808080;\n    puVar9 = puVar8 + 1;\n  } while (uVar4 == 0);\n  bVar10 = (uVar3 & 0x8080) == 0;\n  if (bVar10) {\n    uVar4 = uVar4 >> 0x10;\n  }\n  if (bVar10) {\n    puVar9 = (uint *)((int)puVar8 + 6);\n  }\n  sVar5 = strlen(param_2);\n  iVar7 = *(int *)(param_1 + 0x644);\n  iVar1 = *(int *)(param_1 + 0x648);\n  uVar6 = FUN_000313e0((char *)((int)puVar9 +\n                               sVar5 + (-(int)local_48 - (uint)CARRY1((byte)uVar4,(byte)uVar4)) + -2\n                               ),1);\n  iVar2 = *(int *)(param_1 + 0x648);\n  *(undefined4 *)(iVar7 + iVar1 * 4) = uVar6;\n  strcpy(*(char **)(*(int *)(param_1 + 0x644) + iVar2 * 4),(char *)local_48);\n  strcat(*(char **)(*(int *)(param_1 + 0x644) + *(int *)(param_1 + 0x648) * 4),param_2);\n  if (*(int *)(param_1 + 4) != 0) {\n    FUN_000598e0(*(undefined4 *)(param_1 + 0x640),param_1 + 0x60c,\n                 *(undefined4 *)(*(int *)(param_1 + 0x644) + *(int *)(param_1 + 0x648) * 4),0);\n  }\n  *(int *)(param_1 + 0x648) = *(int *)(param_1 + 0x648) + 1;\n  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return;\n  }\n                    \n  FUN_00077880();\n}" primitive_type (function_declarator "FUN_0005e870(int param_1,char *param_2)" identifier (parameter_list "(int param_1,char *param_2)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "char *param_2" primitive_type (pointer_declarator "*param_2" * identifier)) ))) (compound_statement "{\n  int iVar1;\n  int iVar2;\n  uint uVar3;\n  uint uVar4;\n  size_t sVar5;\n  undefined4 uVar6;\n  int iVar7;\n  uint *puVar8;\n  uint *puVar9;\n  int in_GS_OFFSET;\n  bool bVar10;\n  int local_ac;\n  int local_a8;\n  int local_a4;\n  int local_a0;\n  int local_9c;\n  int local_98;\n  int local_94;\n  int local_90;\n  int local_8c;\n  long local_88;\n  char *local_84;\n  tm local_74;\n  uint local_48 [10];\n  int local_20;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x5e87b;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  if (*(int *)(param_1 + 0x64c) <= *(int *)(param_1 + 0x648)) {\n    iVar7 = *(int *)(param_1 + 0x64c) + 0x40;\n    *(int *)(param_1 + 0x64c) = iVar7;\n    uVar6 = FUN_000314a0(*(undefined4 *)(param_1 + 0x644),iVar7,4);\n    *(undefined4 *)(param_1 + 0x644) = uVar6;\n  }\n  FUN_0004f2a0(&local_ac);\n  local_74.tm_sec = local_ac;\n  local_74.tm_min = local_a8;\n  local_74.tm_hour = local_a4;\n  local_74.tm_mday = local_a0;\n  local_74.tm_mon = local_9c;\n  local_74.tm_year = local_98;\n  local_74.tm_wday = local_94;\n  local_74.tm_yday = local_90;\n  local_74.tm_isdst = local_8c;\n  local_74.tm_gmtoff = local_88;\n  local_74.tm_zone = local_84;\n  strftime((char *)local_48,0x28,"%Y-%m-%d %H:%M:%S\t",&local_74);\n  puVar9 = local_48;\n  do {\n    puVar8 = puVar9;\n    uVar3 = *puVar8 + 0xfefefeff & ~*puVar8;\n    uVar4 = uVar3 & 0x80808080;\n    puVar9 = puVar8 + 1;\n  } while (uVar4 == 0);\n  bVar10 = (uVar3 & 0x8080) == 0;\n  if (bVar10) {\n    uVar4 = uVar4 >> 0x10;\n  }\n  if (bVar10) {\n    puVar9 = (uint *)((int)puVar8 + 6);\n  }\n  sVar5 = strlen(param_2);\n  iVar7 = *(int *)(param_1 + 0x644);\n  iVar1 = *(int *)(param_1 + 0x648);\n  uVar6 = FUN_000313e0((char *)((int)puVar9 +\n                               sVar5 + (-(int)local_48 - (uint)CARRY1((byte)uVar4,(byte)uVar4)) + -2\n                               ),1);\n  iVar2 = *(int *)(param_1 + 0x648);\n  *(undefined4 *)(iVar7 + iVar1 * 4) = uVar6;\n  strcpy(*(char **)(*(int *)(param_1 + 0x644) + iVar2 * 4),(char *)local_48);\n  strcat(*(char **)(*(int *)(param_1 + 0x644) + *(int *)(param_1 + 0x648) * 4),param_2);\n  if (*(int *)(param_1 + 4) != 0) {\n    FUN_000598e0(*(undefined4 *)(param_1 + 0x640),param_1 + 0x60c,\n                 *(undefined4 *)(*(int *)(param_1 + 0x644) + *(int *)(param_1 + 0x648) * 4),0);\n  }\n  *(int *)(param_1 + 0x648) = *(int *)(param_1 + 0x648) + 1;\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 "uint uVar3;" type_identifier identifier ;) (declaration "uint uVar4;" type_identifier identifier ;) (declaration "size_t sVar5;" primitive_type identifier ;) (declaration "undefined4 uVar6;" type_identifier identifier ;) (declaration "int iVar7;" primitive_type identifier ;) (declaration "uint *puVar8;" type_identifier (pointer_declarator "*puVar8" * identifier) ;) (declaration "uint *puVar9;" type_identifier (pointer_declarator "*puVar9" * identifier) ;) (declaration "int in_GS_OFFSET;" primitive_type identifier ;) (declaration "bool bVar10;" primitive_type identifier ;) (declaration "int local_ac;" primitive_type identifier ;) (declaration "int local_a8;" primitive_type identifier ;) (declaration "int local_a4;" primitive_type identifier ;) (declaration "int local_a0;" primitive_type identifier ;) (declaration "int local_9c;" primitive_type identifier ;) (declaration "int local_98;" primitive_type identifier ;) (declaration "int local_94;" primitive_type identifier ;) (declaration "int local_90;" primitive_type identifier ;) (declaration "int local_8c;" primitive_type identifier ;) (declaration "long local_88;" (sized_type_specifier "long" long) identifier ;) (declaration "char *local_84;" primitive_type (pointer_declarator "*local_84" * identifier) ;) (declaration "tm local_74;" type_identifier identifier ;) (declaration "uint local_48 [10];" type_identifier (array_declarator "local_48 [10]" identifier [ number_literal ]) ;) (declaration "int local_20;" primitive_type identifier ;) (declaration "undefined4 uStack_14;" type_identifier identifier ;) (expression_statement "uStack_14 = 0x5e87b;" (assignment_expression "uStack_14 = 0x5e87b" identifier = number_literal) ;) (expression_statement "local_20 = *(int *)(in_GS_OFFSET + 0x14);" (assignment_expression "local_20 = *(int *)(in_GS_OFFSET + 0x14)" identifier = (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) ;) (if_statement "if (*(int *)(param_1 + 0x64c) <= *(int *)(param_1 + 0x648)) {\n    iVar7 = *(int *)(param_1 + 0x64c) + 0x40;\n    *(int *)(param_1 + 0x64c) = iVar7;\n    uVar6 = FUN_000314a0(*(undefined4 *)(param_1 + 0x644),iVar7,4);\n    *(undefined4 *)(param_1 + 0x644) = uVar6;\n  }" if (parenthesized_expression "(*(int *)(param_1 + 0x64c) <= *(int *)(param_1 + 0x648))" ( (binary_expression "*(int *)(param_1 + 0x64c) <= *(int *)(param_1 + 0x648)" (pointer_expression "*(int *)(param_1 + 0x64c)" * (cast_expression "(int *)(param_1 + 0x64c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x64c)" ( (binary_expression "param_1 + 0x64c" identifier + number_literal) )))) <= (pointer_expression "*(int *)(param_1 + 0x648)" * (cast_expression "(int *)(param_1 + 0x648)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x648)" ( (binary_expression "param_1 + 0x648" identifier + number_literal) ))))) )) (compound_statement "{\n    iVar7 = *(int *)(param_1 + 0x64c) + 0x40;\n    *(int *)(param_1 + 0x64c) = iVar7;\n    uVar6 = FUN_000314a0(*(undefined4 *)(param_1 + 0x644),iVar7,4);\n    *(undefined4 *)(param_1 + 0x644) = uVar6;\n  }" { (expression_statement "iVar7 = *(int *)(param_1 + 0x64c) + 0x40;" (assignment_expression "iVar7 = *(int *)(param_1 + 0x64c) + 0x40" identifier = (binary_expression "*(int *)(param_1 + 0x64c) + 0x40" (pointer_expression "*(int *)(param_1 + 0x64c)" * (cast_expression "(int *)(param_1 + 0x64c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x64c)" ( (binary_expression "param_1 + 0x64c" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "*(int *)(param_1 + 0x64c) = iVar7;" (assignment_expression "*(int *)(param_1 + 0x64c) = iVar7" (pointer_expression "*(int *)(param_1 + 0x64c)" * (cast_expression "(int *)(param_1 + 0x64c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x64c)" ( (binary_expression "param_1 + 0x64c" identifier + number_literal) )))) = identifier) ;) (expression_statement "uVar6 = FUN_000314a0(*(undefined4 *)(param_1 + 0x644),iVar7,4);" (assignment_expression "uVar6 = FUN_000314a0(*(undefined4 *)(param_1 + 0x644),iVar7,4)" identifier = (call_expression "FUN_000314a0(*(undefined4 *)(param_1 + 0x644),iVar7,4)" identifier (argument_list "(*(undefined4 *)(param_1 + 0x644),iVar7,4)" ( (pointer_expression "*(undefined4 *)(param_1 + 0x644)" * (cast_expression "(undefined4 *)(param_1 + 0x644)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x644)" ( (binary_expression "param_1 + 0x644" identifier + number_literal) )))) , identifier , number_literal )))) ;) (expression_statement "*(undefined4 *)(param_1 + 0x644) = uVar6;" (assignment_expression "*(undefined4 *)(param_1 + 0x644) = uVar6" (pointer_expression "*(undefined4 *)(param_1 + 0x644)" * (cast_expression "(undefined4 *)(param_1 + 0x644)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x644)" ( (binary_expression "param_1 + 0x644" identifier + number_literal) )))) = identifier) ;) })) (expression_statement "FUN_0004f2a0(&local_ac);" (call_expression "FUN_0004f2a0(&local_ac)" identifier (argument_list "(&local_ac)" ( (pointer_expression "&local_ac" & identifier) ))) ;) (expression_statement "local_74.tm_sec = local_ac;" (assignment_expression "local_74.tm_sec = local_ac" (field_expression "local_74.tm_sec" identifier . field_identifier) = identifier) ;) (expression_statement "local_74.tm_min = local_a8;" (assignment_expression "local_74.tm_min = local_a8" (field_expression "local_74.tm_min" identifier . field_identifier) = identifier) ;) (expression_statement "local_74.tm_hour = local_a4;" (assignment_expression "local_74.tm_hour = local_a4" (field_expression "local_74.tm_hour" identifier . field_identifier) = identifier) ;) (expression_statement "local_74.tm_mday = local_a0;" (assignment_expression "local_74.tm_mday = local_a0" (field_expression "local_74.tm_mday" identifier . field_identifier) = identifier) ;) (expression_statement "local_74.tm_mon = local_9c;" (assignment_expression "local_74.tm_mon = local_9c" (field_expression "local_74.tm_mon" identifier . field_identifier) = identifier) ;) (expression_statement "local_74.tm_year = local_98;" (assignment_expression "local_74.tm_year = local_98" (field_expression "local_74.tm_year" identifier . field_identifier) = identifier) ;) (expression_statement "local_74.tm_wday = local_94;" (assignment_expression "local_74.tm_wday = local_94" (field_expression "local_74.tm_wday" identifier . field_identifier) = identifier) ;) (expression_statement "local_74.tm_yday = local_90;" (assignment_expression "local_74.tm_yday = local_90" (field_expression "local_74.tm_yday" identifier . field_identifier) = identifier) ;) (expression_statement "local_74.tm_isdst = local_8c;" (assignment_expression "local_74.tm_isdst = local_8c" (field_expression "local_74.tm_isdst" identifier . field_identifier) = identifier) ;) (expression_statement "local_74.tm_gmtoff = local_88;" (assignment_expression "local_74.tm_gmtoff = local_88" (field_expression "local_74.tm_gmtoff" identifier . field_identifier) = identifier) ;) (expression_statement "local_74.tm_zone = local_84;" (assignment_expression "local_74.tm_zone = local_84" (field_expression "local_74.tm_zone" identifier . field_identifier) = identifier) ;) (expression_statement "strftime((char *)local_48,0x28,"%Y-%m-%d %H:%M:%S\t",&local_74);" (call_expression "strftime((char *)local_48,0x28,"%Y-%m-%d %H:%M:%S\t",&local_74)" identifier (argument_list "((char *)local_48,0x28,"%Y-%m-%d %H:%M:%S\t",&local_74)" ( (cast_expression "(char *)local_48" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) , number_literal , (string_literal ""%Y-%m-%d %H:%M:%S\t"" " string_content escape_sequence ") , (pointer_expression "&local_74" & identifier) ))) ;) (expression_statement "puVar9 = local_48;" (assignment_expression "puVar9 = local_48" identifier = identifier) ;) (do_statement "do {\n    puVar8 = puVar9;\n    uVar3 = *puVar8 + 0xfefefeff & ~*puVar8;\n    uVar4 = uVar3 & 0x80808080;\n    puVar9 = puVar8 + 1;\n  } while (uVar4 == 0);" do (compound_statement "{\n    puVar8 = puVar9;\n    uVar3 = *puVar8 + 0xfefefeff & ~*puVar8;\n    uVar4 = uVar3 & 0x80808080;\n    puVar9 = puVar8 + 1;\n  }" { (expression_statement "puVar8 = puVar9;" (assignment_expression "puVar8 = puVar9" identifier = identifier) ;) (expression_statement "uVar3 = *puVar8 + 0xfefefeff & ~*puVar8;" (assignment_expression "uVar3 = *puVar8 + 0xfefefeff & ~*puVar8" identifier = (binary_expression "*puVar8 + 0xfefefeff & ~*puVar8" (binary_expression "*puVar8 + 0xfefefeff" (pointer_expression "*puVar8" * identifier) + number_literal) & (unary_expression "~*puVar8" ~ (pointer_expression "*puVar8" * identifier)))) ;) (expression_statement "uVar4 = uVar3 & 0x80808080;" (assignment_expression "uVar4 = uVar3 & 0x80808080" identifier = (binary_expression "uVar3 & 0x80808080" identifier & number_literal)) ;) (expression_statement "puVar9 = puVar8 + 1;" (assignment_expression "puVar9 = puVar8 + 1" identifier = (binary_expression "puVar8 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar4 == 0)" ( (binary_expression "uVar4 == 0" identifier == number_literal) )) ;) (expression_statement "bVar10 = (uVar3 & 0x8080) == 0;" (assignment_expression "bVar10 = (uVar3 & 0x8080) == 0" identifier = (binary_expression "(uVar3 & 0x8080) == 0" (parenthesized_expression "(uVar3 & 0x8080)" ( (binary_expression "uVar3 & 0x8080" identifier & number_literal) )) == number_literal)) ;) (if_statement "if (bVar10) {\n    uVar4 = uVar4 >> 0x10;\n  }" if (parenthesized_expression "(bVar10)" ( identifier )) (compound_statement "{\n    uVar4 = uVar4 >> 0x10;\n  }" { (expression_statement "uVar4 = uVar4 >> 0x10;" (assignment_expression "uVar4 = uVar4 >> 0x10" identifier = (binary_expression "uVar4 >> 0x10" identifier >> number_literal)) ;) })) (if_statement "if (bVar10) {\n    puVar9 = (uint *)((int)puVar8 + 6);\n  }" if (parenthesized_expression "(bVar10)" ( identifier )) (compound_statement "{\n    puVar9 = (uint *)((int)puVar8 + 6);\n  }" { (expression_statement "puVar9 = (uint *)((int)puVar8 + 6);" (assignment_expression "puVar9 = (uint *)((int)puVar8 + 6)" identifier = (cast_expression "(uint *)((int)puVar8 + 6)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar8 + 6)" ( (binary_expression "(int)puVar8 + 6" (cast_expression "(int)puVar8" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) })) (expression_statement "sVar5 = strlen(param_2);" (assignment_expression "sVar5 = strlen(param_2)" identifier = (call_expression "strlen(param_2)" identifier (argument_list "(param_2)" ( identifier )))) ;) (expression_statement "iVar7 = *(int *)(param_1 + 0x644);" (assignment_expression "iVar7 = *(int *)(param_1 + 0x644)" identifier = (pointer_expression "*(int *)(param_1 + 0x644)" * (cast_expression "(int *)(param_1 + 0x644)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x644)" ( (binary_expression "param_1 + 0x644" identifier + number_literal) ))))) ;) (expression_statement "iVar1 = *(int *)(param_1 + 0x648);" (assignment_expression "iVar1 = *(int *)(param_1 + 0x648)" identifier = (pointer_expression "*(int *)(param_1 + 0x648)" * (cast_expression "(int *)(param_1 + 0x648)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x648)" ( (binary_expression "param_1 + 0x648" identifier + number_literal) ))))) ;) (expression_statement "uVar6 = FUN_000313e0((char *)((int)puVar9 +\n                               sVar5 + (-(int)local_48 - (uint)CARRY1((byte)uVar4,(byte)uVar4)) + -2\n                               ),1);" (assignment_expression "uVar6 = FUN_000313e0((char *)((int)puVar9 +\n                               sVar5 + (-(int)local_48 - (uint)CARRY1((byte)uVar4,(byte)uVar4)) + -2\n                               ),1)" identifier = (call_expression "FUN_000313e0((char *)((int)puVar9 +\n                               sVar5 + (-(int)local_48 - (uint)CARRY1((byte)uVar4,(byte)uVar4)) + -2\n                               ),1)" identifier (argument_list "((char *)((int)puVar9 +\n                               sVar5 + (-(int)local_48 - (uint)CARRY1((byte)uVar4,(byte)uVar4)) + -2\n                               ),1)" ( (cast_expression "(char *)((int)puVar9 +\n                               sVar5 + (-(int)local_48 - (uint)CARRY1((byte)uVar4,(byte)uVar4)) + -2\n                               )" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar9 +\n                               sVar5 + (-(int)local_48 - (uint)CARRY1((byte)uVar4,(byte)uVar4)) + -2\n                               )" ( (binary_expression "(int)puVar9 +\n                               sVar5 + (-(int)local_48 - (uint)CARRY1((byte)uVar4,(byte)uVar4)) + -2" (binary_expression "(int)puVar9 +\n                               sVar5 + (-(int)local_48 - (uint)CARRY1((byte)uVar4,(byte)uVar4))" (binary_expression "(int)puVar9 +\n                               sVar5" (cast_expression "(int)puVar9" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) + (parenthesized_expression "(-(int)local_48 - (uint)CARRY1((byte)uVar4,(byte)uVar4))" ( (binary_expression "-(int)local_48 - (uint)CARRY1((byte)uVar4,(byte)uVar4)" (unary_expression "-(int)local_48" - (cast_expression "(int)local_48" ( (type_descriptor "int" primitive_type) ) identifier)) - (cast_expression "(uint)CARRY1((byte)uVar4,(byte)uVar4)" ( (type_descriptor "uint" type_identifier) ) (call_expression "CARRY1((byte)uVar4,(byte)uVar4)" identifier (argument_list "((byte)uVar4,(byte)uVar4)" ( (cast_expression "(byte)uVar4" ( (type_descriptor "byte" type_identifier) ) identifier) , (cast_expression "(byte)uVar4" ( (type_descriptor "byte" type_identifier) ) identifier) ))))) ))) + number_literal) ))) , number_literal )))) ;) (expression_statement "iVar2 = *(int *)(param_1 + 0x648);" (assignment_expression "iVar2 = *(int *)(param_1 + 0x648)" identifier = (pointer_expression "*(int *)(param_1 + 0x648)" * (cast_expression "(int *)(param_1 + 0x648)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x648)" ( (binary_expression "param_1 + 0x648" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(iVar7 + iVar1 * 4) = uVar6;" (assignment_expression "*(undefined4 *)(iVar7 + iVar1 * 4) = uVar6" (pointer_expression "*(undefined4 *)(iVar7 + iVar1 * 4)" * (cast_expression "(undefined4 *)(iVar7 + iVar1 * 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar7 + iVar1 * 4)" ( (binary_expression "iVar7 + iVar1 * 4" identifier + (binary_expression "iVar1 * 4" identifier * number_literal)) )))) = identifier) ;) (expression_statement "strcpy(*(char **)(*(int *)(param_1 + 0x644) + iVar2 * 4),(char *)local_48);" (call_expression "strcpy(*(char **)(*(int *)(param_1 + 0x644) + iVar2 * 4),(char *)local_48)" identifier (argument_list "(*(char **)(*(int *)(param_1 + 0x644) + iVar2 * 4),(char *)local_48)" ( (pointer_expression "*(char **)(*(int *)(param_1 + 0x644) + iVar2 * 4)" * (cast_expression "(char **)(*(int *)(param_1 + 0x644) + iVar2 * 4)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)(param_1 + 0x644) + iVar2 * 4)" ( (binary_expression "*(int *)(param_1 + 0x644) + iVar2 * 4" (pointer_expression "*(int *)(param_1 + 0x644)" * (cast_expression "(int *)(param_1 + 0x644)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x644)" ( (binary_expression "param_1 + 0x644" identifier + number_literal) )))) + (binary_expression "iVar2 * 4" identifier * number_literal)) )))) , (cast_expression "(char *)local_48" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) ))) ;) (expression_statement "strcat(*(char **)(*(int *)(param_1 + 0x644) + *(int *)(param_1 + 0x648) * 4),param_2);" (call_expression "strcat(*(char **)(*(int *)(param_1 + 0x644) + *(int *)(param_1 + 0x648) * 4),param_2)" identifier (argument_list "(*(char **)(*(int *)(param_1 + 0x644) + *(int *)(param_1 + 0x648) * 4),param_2)" ( (pointer_expression "*(char **)(*(int *)(param_1 + 0x644) + *(int *)(param_1 + 0x648) * 4)" * (cast_expression "(char **)(*(int *)(param_1 + 0x644) + *(int *)(param_1 + 0x648) * 4)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)(param_1 + 0x644) + *(int *)(param_1 + 0x648) * 4)" ( (binary_expression "*(int *)(param_1 + 0x644) + *(int *)(param_1 + 0x648) * 4" (pointer_expression "*(int *)(param_1 + 0x644)" * (cast_expression "(int *)(param_1 + 0x644)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x644)" ( (binary_expression "param_1 + 0x644" identifier + number_literal) )))) + (binary_expression "*(int *)(param_1 + 0x648) * 4" (pointer_expression "*(int *)(param_1 + 0x648)" * (cast_expression "(int *)(param_1 + 0x648)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x648)" ( (binary_expression "param_1 + 0x648" identifier + number_literal) )))) * number_literal)) )))) , identifier ))) ;) (if_statement "if (*(int *)(param_1 + 4) != 0) {\n    FUN_000598e0(*(undefined4 *)(param_1 + 0x640),param_1 + 0x60c,\n                 *(undefined4 *)(*(int *)(param_1 + 0x644) + *(int *)(param_1 + 0x648) * 4),0);\n  }" if (parenthesized_expression "(*(int *)(param_1 + 4) != 0)" ( (binary_expression "*(int *)(param_1 + 4) != 0" (pointer_expression "*(int *)(param_1 + 4)" * (cast_expression "(int *)(param_1 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n    FUN_000598e0(*(undefined4 *)(param_1 + 0x640),param_1 + 0x60c,\n                 *(undefined4 *)(*(int *)(param_1 + 0x644) + *(int *)(param_1 + 0x648) * 4),0);\n  }" { (expression_statement "FUN_000598e0(*(undefined4 *)(param_1 + 0x640),param_1 + 0x60c,\n                 *(undefined4 *)(*(int *)(param_1 + 0x644) + *(int *)(param_1 + 0x648) * 4),0);" (call_expression "FUN_000598e0(*(undefined4 *)(param_1 + 0x640),param_1 + 0x60c,\n                 *(undefined4 *)(*(int *)(param_1 + 0x644) + *(int *)(param_1 + 0x648) * 4),0)" identifier (argument_list "(*(undefined4 *)(param_1 + 0x640),param_1 + 0x60c,\n                 *(undefined4 *)(*(int *)(param_1 + 0x644) + *(int *)(param_1 + 0x648) * 4),0)" ( (pointer_expression "*(undefined4 *)(param_1 + 0x640)" * (cast_expression "(undefined4 *)(param_1 + 0x640)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x640)" ( (binary_expression "param_1 + 0x640" identifier + number_literal) )))) , (binary_expression "param_1 + 0x60c" identifier + number_literal) , (pointer_expression "*(undefined4 *)(*(int *)(param_1 + 0x644) + *(int *)(param_1 + 0x648) * 4)" * (cast_expression "(undefined4 *)(*(int *)(param_1 + 0x644) + *(int *)(param_1 + 0x648) * 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(param_1 + 0x644) + *(int *)(param_1 + 0x648) * 4)" ( (binary_expression "*(int *)(param_1 + 0x644) + *(int *)(param_1 + 0x648) * 4" (pointer_expression "*(int *)(param_1 + 0x644)" * (cast_expression "(int *)(param_1 + 0x644)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x644)" ( (binary_expression "param_1 + 0x644" identifier + number_literal) )))) + (binary_expression "*(int *)(param_1 + 0x648) * 4" (pointer_expression "*(int *)(param_1 + 0x648)" * (cast_expression "(int *)(param_1 + 0x648)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x648)" ( (binary_expression "param_1 + 0x648" identifier + number_literal) )))) * number_literal)) )))) , number_literal ))) ;) })) (expression_statement "*(int *)(param_1 + 0x648) = *(int *)(param_1 + 0x648) + 1;" (assignment_expression "*(int *)(param_1 + 0x648) = *(int *)(param_1 + 0x648) + 1" (pointer_expression "*(int *)(param_1 + 0x648)" * (cast_expression "(int *)(param_1 + 0x648)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x648)" ( (binary_expression "param_1 + 0x648" identifier + number_literal) )))) = (binary_expression "*(int *)(param_1 + 0x648) + 1" (pointer_expression "*(int *)(param_1 + 0x648)" * (cast_expression "(int *)(param_1 + 0x648)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x648)" ( (binary_expression "param_1 + 0x648" identifier + number_literal) )))) + number_literal)) ;) (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 (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 IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = LIT) ;) (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 (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) ))))) )) (compound_statement { (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 IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , 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 (call_expression IDENT (argument_list ( (pointer_expression & IDENT) ))) ;) (expression_statement (assignment_expression (field_expression IDENT . field_identifier) = IDENT) ;) (expression_statement (assignment_expression (field_expression IDENT . field_identifier) = IDENT) ;) (expression_statement (assignment_expression (field_expression IDENT . field_identifier) = IDENT) ;) (expression_statement (assignment_expression (field_expression IDENT . field_identifier) = IDENT) ;) (expression_statement (assignment_expression (field_expression IDENT . field_identifier) = IDENT) ;) (expression_statement (assignment_expression (field_expression IDENT . field_identifier) = IDENT) ;) (expression_statement (assignment_expression (field_expression IDENT . field_identifier) = IDENT) ;) (expression_statement (assignment_expression (field_expression IDENT . field_identifier) = IDENT) ;) (expression_statement (assignment_expression (field_expression IDENT . field_identifier) = IDENT) ;) (expression_statement (assignment_expression (field_expression IDENT . field_identifier) = IDENT) ;) (expression_statement (assignment_expression (field_expression IDENT . field_identifier) = IDENT) ;) (expression_statement (call_expression IDENT (argument_list ( (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT) , LIT , (string_literal " string_content escape_sequence ") , (pointer_expression & IDENT) ))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (pointer_expression * IDENT) + LIT) & (unary_expression ~ (pointer_expression * IDENT)))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT & LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT == LIT) )) ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) == LIT)) ;) (if_statement if (parenthesized_expression ( IDENT )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT >> LIT)) ;) })) (if_statement if (parenthesized_expression ( IDENT )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) ;) })) (expression_statement (assignment_expression IDENT = (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) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + IDENT) + (parenthesized_expression ( (binary_expression (unary_expression - (cast_expression ( (type_descriptor TYPE) ) IDENT)) - (cast_expression ( (type_descriptor TYPE) ) (call_expression IDENT (argument_list ( (cast_expression ( (type_descriptor TYPE) ) IDENT) , (cast_expression ( (type_descriptor TYPE) ) IDENT) ))))) ))) + LIT) ))) , LIT )))) ;) (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 (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression IDENT * LIT)) )))) = IDENT) ;) (expression_statement (call_expression IDENT (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + (binary_expression IDENT * LIT)) )))) , (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT) ))) ;) (expression_statement (call_expression IDENT (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) * LIT)) )))) , 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) )) (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) )))) , (binary_expression IDENT + LIT) , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) * LIT)) )))) , LIT ))) ;) })) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_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 IDENT == (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (compound_statement { (return_statement return ;) })) (expression_statement (call_expression IDENT (argument_list ( ))) ;) })))
(function_definition "void FUN_0005e870(int param_1,char *param_2)\n\n{\n  int iVar1;\n  int iVar2;\n  uint uVar3;\n  uint uVar4;\n  size_t sVar5;\n  undefined4 uVar6;\n  int iVar7;\n  uint *puVar8;\n  uint *puVar9;\n  int in_GS_OFFSET;\n  bool bVar10;\n  int local_ac;\n  int local_a8;\n  int local_a4;\n  int local_a0;\n  int local_9c;\n  int local_98;\n  int local_94;\n  int local_90;\n  int local_8c;\n  long local_88;\n  char *local_84;\n  tm local_74;\n  uint local_48 [10];\n  int local_20;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x5e87b;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  if (*(int *)(param_1 + 0x64c) <= *(int *)(param_1 + 0x648)) {\n    iVar7 = *(int *)(param_1 + 0x64c) + 0x40;\n    *(int *)(param_1 + 0x64c) = iVar7;\n    uVar6 = FUN_000314a0(*(undefined4 *)(param_1 + 0x644),iVar7,4);\n    *(undefined4 *)(param_1 + 0x644) = uVar6;\n  }\n  FUN_0004f2a0(&local_ac);\n  local_74.tm_sec = local_ac;\n  local_74.tm_min = local_a8;\n  local_74.tm_hour = local_a4;\n  local_74.tm_mday = local_a0;\n  local_74.tm_mon = local_9c;\n  local_74.tm_year = local_98;\n  local_74.tm_wday = local_94;\n  local_74.tm_yday = local_90;\n  local_74.tm_isdst = local_8c;\n  local_74.tm_gmtoff = local_88;\n  local_74.tm_zone = local_84;\n  strftime((char *)local_48,0x28,"%Y-%m-%d %H:%M:%S\t",&local_74);\n  puVar9 = local_48;\n  do {\n    puVar8 = puVar9;\n    uVar3 = *puVar8 + 0xfefefeff & ~*puVar8;\n    uVar4 = uVar3 & 0x80808080;\n    puVar9 = puVar8 + 1;\n  } while (uVar4 == 0);\n  bVar10 = (uVar3 & 0x8080) == 0;\n  if (bVar10) {\n    uVar4 = uVar4 >> 0x10;\n  }\n  if (bVar10) {\n    puVar9 = (uint *)((int)puVar8 + 6);\n  }\n  sVar5 = strlen(param_2);\n  iVar7 = *(int *)(param_1 + 0x644);\n  iVar1 = *(int *)(param_1 + 0x648);\n  uVar6 = FUN_000313e0((char *)((int)puVar9 +\n                               sVar5 + (-(int)local_48 - (uint)CARRY1((byte)uVar4,(byte)uVar4)) + -2\n                               ),1);\n  iVar2 = *(int *)(param_1 + 0x648);\n  *(undefined4 *)(iVar7 + iVar1 * 4) = uVar6;\n  strcpy(*(char **)(*(int *)(param_1 + 0x644) + iVar2 * 4),(char *)local_48);\n  strcat(*(char **)(*(int *)(param_1 + 0x644) + *(int *)(param_1 + 0x648) * 4),param_2);\n  if (*(int *)(param_1 + 4) != 0) {\n    FUN_000598e0(*(undefined4 *)(param_1 + 0x640),param_1 + 0x60c,\n                 *(undefined4 *)(*(int *)(param_1 + 0x644) + *(int *)(param_1 + 0x648) * 4),0);\n  }\n  *(int *)(param_1 + 0x648) = *(int *)(param_1 + 0x648) + 1;\n  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return;\n  }\n                    \n  FUN_00077880();\n}" (primitive_type "void") (function_declarator "FUN_0005e870(int param_1,char *param_2)" (identifier "FUN_0005e870") (parameter_list "(int param_1,char *param_2)" (( "(") (parameter_declaration "int param_1" (primitive_type "int") (identifier "param_1")) (, ",") (parameter_declaration "char *param_2" (primitive_type "char") (pointer_declarator "*param_2" (* "*") (identifier "param_2"))) () ")"))) (compound_statement "{\n  int iVar1;\n  int iVar2;\n  uint uVar3;\n  uint uVar4;\n  size_t sVar5;\n  undefined4 uVar6;\n  int iVar7;\n  uint *puVar8;\n  uint *puVar9;\n  int in_GS_OFFSET;\n  bool bVar10;\n  int local_ac;\n  int local_a8;\n  int local_a4;\n  int local_a0;\n  int local_9c;\n  int local_98;\n  int local_94;\n  int local_90;\n  int local_8c;\n  long local_88;\n  char *local_84;\n  tm local_74;\n  uint local_48 [10];\n  int local_20;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x5e87b;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  if (*(int *)(param_1 + 0x64c) <= *(int *)(param_1 + 0x648)) {\n    iVar7 = *(int *)(param_1 + 0x64c) + 0x40;\n    *(int *)(param_1 + 0x64c) = iVar7;\n    uVar6 = FUN_000314a0(*(undefined4 *)(param_1 + 0x644),iVar7,4);\n    *(undefined4 *)(param_1 + 0x644) = uVar6;\n  }\n  FUN_0004f2a0(&local_ac);\n  local_74.tm_sec = local_ac;\n  local_74.tm_min = local_a8;\n  local_74.tm_hour = local_a4;\n  local_74.tm_mday = local_a0;\n  local_74.tm_mon = local_9c;\n  local_74.tm_year = local_98;\n  local_74.tm_wday = local_94;\n  local_74.tm_yday = local_90;\n  local_74.tm_isdst = local_8c;\n  local_74.tm_gmtoff = local_88;\n  local_74.tm_zone = local_84;\n  strftime((char *)local_48,0x28,"%Y-%m-%d %H:%M:%S\t",&local_74);\n  puVar9 = local_48;\n  do {\n    puVar8 = puVar9;\n    uVar3 = *puVar8 + 0xfefefeff & ~*puVar8;\n    uVar4 = uVar3 & 0x80808080;\n    puVar9 = puVar8 + 1;\n  } while (uVar4 == 0);\n  bVar10 = (uVar3 & 0x8080) == 0;\n  if (bVar10) {\n    uVar4 = uVar4 >> 0x10;\n  }\n  if (bVar10) {\n    puVar9 = (uint *)((int)puVar8 + 6);\n  }\n  sVar5 = strlen(param_2);\n  iVar7 = *(int *)(param_1 + 0x644);\n  iVar1 = *(int *)(param_1 + 0x648);\n  uVar6 = FUN_000313e0((char *)((int)puVar9 +\n                               sVar5 + (-(int)local_48 - (uint)CARRY1((byte)uVar4,(byte)uVar4)) + -2\n                               ),1);\n  iVar2 = *(int *)(param_1 + 0x648);\n  *(undefined4 *)(iVar7 + iVar1 * 4) = uVar6;\n  strcpy(*(char **)(*(int *)(param_1 + 0x644) + iVar2 * 4),(char *)local_48);\n  strcat(*(char **)(*(int *)(param_1 + 0x644) + *(int *)(param_1 + 0x648) * 4),param_2);\n  if (*(int *)(param_1 + 4) != 0) {\n    FUN_000598e0(*(undefined4 *)(param_1 + 0x640),param_1 + 0x60c,\n                 *(undefined4 *)(*(int *)(param_1 + 0x644) + *(int *)(param_1 + 0x648) * 4),0);\n  }\n  *(int *)(param_1 + 0x648) = *(int *)(param_1 + 0x648) + 1;\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 "uint uVar3;" (type_identifier "uint") (identifier "uVar3") (; ";")) (declaration "uint uVar4;" (type_identifier "uint") (identifier "uVar4") (; ";")) (declaration "size_t sVar5;" (primitive_type "size_t") (identifier "sVar5") (; ";")) (declaration "undefined4 uVar6;" (type_identifier "undefined4") (identifier "uVar6") (; ";")) (declaration "int iVar7;" (primitive_type "int") (identifier "iVar7") (; ";")) (declaration "uint *puVar8;" (type_identifier "uint") (pointer_declarator "*puVar8" (* "*") (identifier "puVar8")) (; ";")) (declaration "uint *puVar9;" (type_identifier "uint") (pointer_declarator "*puVar9" (* "*") (identifier "puVar9")) (; ";")) (declaration "int in_GS_OFFSET;" (primitive_type "int") (identifier "in_GS_OFFSET") (; ";")) (declaration "bool bVar10;" (primitive_type "bool") (identifier "bVar10") (; ";")) (declaration "int local_ac;" (primitive_type "int") (identifier "local_ac") (; ";")) (declaration "int local_a8;" (primitive_type "int") (identifier "local_a8") (; ";")) (declaration "int local_a4;" (primitive_type "int") (identifier "local_a4") (; ";")) (declaration "int local_a0;" (primitive_type "int") (identifier "local_a0") (; ";")) (declaration "int local_9c;" (primitive_type "int") (identifier "local_9c") (; ";")) (declaration "int local_98;" (primitive_type "int") (identifier "local_98") (; ";")) (declaration "int local_94;" (primitive_type "int") (identifier "local_94") (; ";")) (declaration "int local_90;" (primitive_type "int") (identifier "local_90") (; ";")) (declaration "int local_8c;" (primitive_type "int") (identifier "local_8c") (; ";")) (declaration "long local_88;" (sized_type_specifier "long" (long "long")) (identifier "local_88") (; ";")) (declaration "char *local_84;" (primitive_type "char") (pointer_declarator "*local_84" (* "*") (identifier "local_84")) (; ";")) (declaration "tm local_74;" (type_identifier "tm") (identifier "local_74") (; ";")) (declaration "uint local_48 [10];" (type_identifier "uint") (array_declarator "local_48 [10]" (identifier "local_48") ([ "[") (number_literal "10") (] "]")) (; ";")) (declaration "int local_20;" (primitive_type "int") (identifier "local_20") (; ";")) (declaration "undefined4 uStack_14;" (type_identifier "undefined4") (identifier "uStack_14") (; ";")) (expression_statement "uStack_14 = 0x5e87b;" (assignment_expression "uStack_14 = 0x5e87b" (identifier "uStack_14") (= "=") (number_literal "0x5e87b")) (; ";")) (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")) () ")"))))) (; ";")) (if_statement "if (*(int *)(param_1 + 0x64c) <= *(int *)(param_1 + 0x648)) {\n    iVar7 = *(int *)(param_1 + 0x64c) + 0x40;\n    *(int *)(param_1 + 0x64c) = iVar7;\n    uVar6 = FUN_000314a0(*(undefined4 *)(param_1 + 0x644),iVar7,4);\n    *(undefined4 *)(param_1 + 0x644) = uVar6;\n  }" (if "if") (parenthesized_expression "(*(int *)(param_1 + 0x64c) <= *(int *)(param_1 + 0x648))" (( "(") (binary_expression "*(int *)(param_1 + 0x64c) <= *(int *)(param_1 + 0x648)" (pointer_expression "*(int *)(param_1 + 0x64c)" (* "*") (cast_expression "(int *)(param_1 + 0x64c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x64c)" (( "(") (binary_expression "param_1 + 0x64c" (identifier "param_1") (+ "+") (number_literal "0x64c")) () ")")))) (<= "<=") (pointer_expression "*(int *)(param_1 + 0x648)" (* "*") (cast_expression "(int *)(param_1 + 0x648)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x648)" (( "(") (binary_expression "param_1 + 0x648" (identifier "param_1") (+ "+") (number_literal "0x648")) () ")"))))) () ")")) (compound_statement "{\n    iVar7 = *(int *)(param_1 + 0x64c) + 0x40;\n    *(int *)(param_1 + 0x64c) = iVar7;\n    uVar6 = FUN_000314a0(*(undefined4 *)(param_1 + 0x644),iVar7,4);\n    *(undefined4 *)(param_1 + 0x644) = uVar6;\n  }" ({ "{") (expression_statement "iVar7 = *(int *)(param_1 + 0x64c) + 0x40;" (assignment_expression "iVar7 = *(int *)(param_1 + 0x64c) + 0x40" (identifier "iVar7") (= "=") (binary_expression "*(int *)(param_1 + 0x64c) + 0x40" (pointer_expression "*(int *)(param_1 + 0x64c)" (* "*") (cast_expression "(int *)(param_1 + 0x64c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x64c)" (( "(") (binary_expression "param_1 + 0x64c" (identifier "param_1") (+ "+") (number_literal "0x64c")) () ")")))) (+ "+") (number_literal "0x40"))) (; ";")) (expression_statement "*(int *)(param_1 + 0x64c) = iVar7;" (assignment_expression "*(int *)(param_1 + 0x64c) = iVar7" (pointer_expression "*(int *)(param_1 + 0x64c)" (* "*") (cast_expression "(int *)(param_1 + 0x64c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x64c)" (( "(") (binary_expression "param_1 + 0x64c" (identifier "param_1") (+ "+") (number_literal "0x64c")) () ")")))) (= "=") (identifier "iVar7")) (; ";")) (expression_statement "uVar6 = FUN_000314a0(*(undefined4 *)(param_1 + 0x644),iVar7,4);" (assignment_expression "uVar6 = FUN_000314a0(*(undefined4 *)(param_1 + 0x644),iVar7,4)" (identifier "uVar6") (= "=") (call_expression "FUN_000314a0(*(undefined4 *)(param_1 + 0x644),iVar7,4)" (identifier "FUN_000314a0") (argument_list "(*(undefined4 *)(param_1 + 0x644),iVar7,4)" (( "(") (pointer_expression "*(undefined4 *)(param_1 + 0x644)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0x644)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x644)" (( "(") (binary_expression "param_1 + 0x644" (identifier "param_1") (+ "+") (number_literal "0x644")) () ")")))) (, ",") (identifier "iVar7") (, ",") (number_literal "4") () ")")))) (; ";")) (expression_statement "*(undefined4 *)(param_1 + 0x644) = uVar6;" (assignment_expression "*(undefined4 *)(param_1 + 0x644) = uVar6" (pointer_expression "*(undefined4 *)(param_1 + 0x644)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0x644)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x644)" (( "(") (binary_expression "param_1 + 0x644" (identifier "param_1") (+ "+") (number_literal "0x644")) () ")")))) (= "=") (identifier "uVar6")) (; ";")) (} "}"))) (expression_statement "FUN_0004f2a0(&local_ac);" (call_expression "FUN_0004f2a0(&local_ac)" (identifier "FUN_0004f2a0") (argument_list "(&local_ac)" (( "(") (pointer_expression "&local_ac" (& "&") (identifier "local_ac")) () ")"))) (; ";")) (expression_statement "local_74.tm_sec = local_ac;" (assignment_expression "local_74.tm_sec = local_ac" (field_expression "local_74.tm_sec" (identifier "local_74") (. ".") (field_identifier "tm_sec")) (= "=") (identifier "local_ac")) (; ";")) (expression_statement "local_74.tm_min = local_a8;" (assignment_expression "local_74.tm_min = local_a8" (field_expression "local_74.tm_min" (identifier "local_74") (. ".") (field_identifier "tm_min")) (= "=") (identifier "local_a8")) (; ";")) (expression_statement "local_74.tm_hour = local_a4;" (assignment_expression "local_74.tm_hour = local_a4" (field_expression "local_74.tm_hour" (identifier "local_74") (. ".") (field_identifier "tm_hour")) (= "=") (identifier "local_a4")) (; ";")) (expression_statement "local_74.tm_mday = local_a0;" (assignment_expression "local_74.tm_mday = local_a0" (field_expression "local_74.tm_mday" (identifier "local_74") (. ".") (field_identifier "tm_mday")) (= "=") (identifier "local_a0")) (; ";")) (expression_statement "local_74.tm_mon = local_9c;" (assignment_expression "local_74.tm_mon = local_9c" (field_expression "local_74.tm_mon" (identifier "local_74") (. ".") (field_identifier "tm_mon")) (= "=") (identifier "local_9c")) (; ";")) (expression_statement "local_74.tm_year = local_98;" (assignment_expression "local_74.tm_year = local_98" (field_expression "local_74.tm_year" (identifier "local_74") (. ".") (field_identifier "tm_year")) (= "=") (identifier "local_98")) (; ";")) (expression_statement "local_74.tm_wday = local_94;" (assignment_expression "local_74.tm_wday = local_94" (field_expression "local_74.tm_wday" (identifier "local_74") (. ".") (field_identifier "tm_wday")) (= "=") (identifier "local_94")) (; ";")) (expression_statement "local_74.tm_yday = local_90;" (assignment_expression "local_74.tm_yday = local_90" (field_expression "local_74.tm_yday" (identifier "local_74") (. ".") (field_identifier "tm_yday")) (= "=") (identifier "local_90")) (; ";")) (expression_statement "local_74.tm_isdst = local_8c;" (assignment_expression "local_74.tm_isdst = local_8c" (field_expression "local_74.tm_isdst" (identifier "local_74") (. ".") (field_identifier "tm_isdst")) (= "=") (identifier "local_8c")) (; ";")) (expression_statement "local_74.tm_gmtoff = local_88;" (assignment_expression "local_74.tm_gmtoff = local_88" (field_expression "local_74.tm_gmtoff" (identifier "local_74") (. ".") (field_identifier "tm_gmtoff")) (= "=") (identifier "local_88")) (; ";")) (expression_statement "local_74.tm_zone = local_84;" (assignment_expression "local_74.tm_zone = local_84" (field_expression "local_74.tm_zone" (identifier "local_74") (. ".") (field_identifier "tm_zone")) (= "=") (identifier "local_84")) (; ";")) (expression_statement "strftime((char *)local_48,0x28,"%Y-%m-%d %H:%M:%S\t",&local_74);" (call_expression "strftime((char *)local_48,0x28,"%Y-%m-%d %H:%M:%S\t",&local_74)" (identifier "strftime") (argument_list "((char *)local_48,0x28,"%Y-%m-%d %H:%M:%S\t",&local_74)" (( "(") (cast_expression "(char *)local_48" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "local_48")) (, ",") (number_literal "0x28") (, ",") (string_literal ""%Y-%m-%d %H:%M:%S\t"" (" """) (string_content "%Y-%m-%d %H:%M:%S") (escape_sequence "\t") (" """)) (, ",") (pointer_expression "&local_74" (& "&") (identifier "local_74")) () ")"))) (; ";")) (expression_statement "puVar9 = local_48;" (assignment_expression "puVar9 = local_48" (identifier "puVar9") (= "=") (identifier "local_48")) (; ";")) (do_statement "do {\n    puVar8 = puVar9;\n    uVar3 = *puVar8 + 0xfefefeff & ~*puVar8;\n    uVar4 = uVar3 & 0x80808080;\n    puVar9 = puVar8 + 1;\n  } while (uVar4 == 0);" (do "do") (compound_statement "{\n    puVar8 = puVar9;\n    uVar3 = *puVar8 + 0xfefefeff & ~*puVar8;\n    uVar4 = uVar3 & 0x80808080;\n    puVar9 = puVar8 + 1;\n  }" ({ "{") (expression_statement "puVar8 = puVar9;" (assignment_expression "puVar8 = puVar9" (identifier "puVar8") (= "=") (identifier "puVar9")) (; ";")) (expression_statement "uVar3 = *puVar8 + 0xfefefeff & ~*puVar8;" (assignment_expression "uVar3 = *puVar8 + 0xfefefeff & ~*puVar8" (identifier "uVar3") (= "=") (binary_expression "*puVar8 + 0xfefefeff & ~*puVar8" (binary_expression "*puVar8 + 0xfefefeff" (pointer_expression "*puVar8" (* "*") (identifier "puVar8")) (+ "+") (number_literal "0xfefefeff")) (& "&") (unary_expression "~*puVar8" (~ "~") (pointer_expression "*puVar8" (* "*") (identifier "puVar8"))))) (; ";")) (expression_statement "uVar4 = uVar3 & 0x80808080;" (assignment_expression "uVar4 = uVar3 & 0x80808080" (identifier "uVar4") (= "=") (binary_expression "uVar3 & 0x80808080" (identifier "uVar3") (& "&") (number_literal "0x80808080"))) (; ";")) (expression_statement "puVar9 = puVar8 + 1;" (assignment_expression "puVar9 = puVar8 + 1" (identifier "puVar9") (= "=") (binary_expression "puVar8 + 1" (identifier "puVar8") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(uVar4 == 0)" (( "(") (binary_expression "uVar4 == 0" (identifier "uVar4") (== "==") (number_literal "0")) () ")")) (; ";")) (expression_statement "bVar10 = (uVar3 & 0x8080) == 0;" (assignment_expression "bVar10 = (uVar3 & 0x8080) == 0" (identifier "bVar10") (= "=") (binary_expression "(uVar3 & 0x8080) == 0" (parenthesized_expression "(uVar3 & 0x8080)" (( "(") (binary_expression "uVar3 & 0x8080" (identifier "uVar3") (& "&") (number_literal "0x8080")) () ")")) (== "==") (number_literal "0"))) (; ";")) (if_statement "if (bVar10) {\n    uVar4 = uVar4 >> 0x10;\n  }" (if "if") (parenthesized_expression "(bVar10)" (( "(") (identifier "bVar10") () ")")) (compound_statement "{\n    uVar4 = uVar4 >> 0x10;\n  }" ({ "{") (expression_statement "uVar4 = uVar4 >> 0x10;" (assignment_expression "uVar4 = uVar4 >> 0x10" (identifier "uVar4") (= "=") (binary_expression "uVar4 >> 0x10" (identifier "uVar4") (>> ">>") (number_literal "0x10"))) (; ";")) (} "}"))) (if_statement "if (bVar10) {\n    puVar9 = (uint *)((int)puVar8 + 6);\n  }" (if "if") (parenthesized_expression "(bVar10)" (( "(") (identifier "bVar10") () ")")) (compound_statement "{\n    puVar9 = (uint *)((int)puVar8 + 6);\n  }" ({ "{") (expression_statement "puVar9 = (uint *)((int)puVar8 + 6);" (assignment_expression "puVar9 = (uint *)((int)puVar8 + 6)" (identifier "puVar9") (= "=") (cast_expression "(uint *)((int)puVar8 + 6)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar8 + 6)" (( "(") (binary_expression "(int)puVar8 + 6" (cast_expression "(int)puVar8" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar8")) (+ "+") (number_literal "6")) () ")")))) (; ";")) (} "}"))) (expression_statement "sVar5 = strlen(param_2);" (assignment_expression "sVar5 = strlen(param_2)" (identifier "sVar5") (= "=") (call_expression "strlen(param_2)" (identifier "strlen") (argument_list "(param_2)" (( "(") (identifier "param_2") () ")")))) (; ";")) (expression_statement "iVar7 = *(int *)(param_1 + 0x644);" (assignment_expression "iVar7 = *(int *)(param_1 + 0x644)" (identifier "iVar7") (= "=") (pointer_expression "*(int *)(param_1 + 0x644)" (* "*") (cast_expression "(int *)(param_1 + 0x644)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x644)" (( "(") (binary_expression "param_1 + 0x644" (identifier "param_1") (+ "+") (number_literal "0x644")) () ")"))))) (; ";")) (expression_statement "iVar1 = *(int *)(param_1 + 0x648);" (assignment_expression "iVar1 = *(int *)(param_1 + 0x648)" (identifier "iVar1") (= "=") (pointer_expression "*(int *)(param_1 + 0x648)" (* "*") (cast_expression "(int *)(param_1 + 0x648)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x648)" (( "(") (binary_expression "param_1 + 0x648" (identifier "param_1") (+ "+") (number_literal "0x648")) () ")"))))) (; ";")) (expression_statement "uVar6 = FUN_000313e0((char *)((int)puVar9 +\n                               sVar5 + (-(int)local_48 - (uint)CARRY1((byte)uVar4,(byte)uVar4)) + -2\n                               ),1);" (assignment_expression "uVar6 = FUN_000313e0((char *)((int)puVar9 +\n                               sVar5 + (-(int)local_48 - (uint)CARRY1((byte)uVar4,(byte)uVar4)) + -2\n                               ),1)" (identifier "uVar6") (= "=") (call_expression "FUN_000313e0((char *)((int)puVar9 +\n                               sVar5 + (-(int)local_48 - (uint)CARRY1((byte)uVar4,(byte)uVar4)) + -2\n                               ),1)" (identifier "FUN_000313e0") (argument_list "((char *)((int)puVar9 +\n                               sVar5 + (-(int)local_48 - (uint)CARRY1((byte)uVar4,(byte)uVar4)) + -2\n                               ),1)" (( "(") (cast_expression "(char *)((int)puVar9 +\n                               sVar5 + (-(int)local_48 - (uint)CARRY1((byte)uVar4,(byte)uVar4)) + -2\n                               )" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar9 +\n                               sVar5 + (-(int)local_48 - (uint)CARRY1((byte)uVar4,(byte)uVar4)) + -2\n                               )" (( "(") (binary_expression "(int)puVar9 +\n                               sVar5 + (-(int)local_48 - (uint)CARRY1((byte)uVar4,(byte)uVar4)) + -2" (binary_expression "(int)puVar9 +\n                               sVar5 + (-(int)local_48 - (uint)CARRY1((byte)uVar4,(byte)uVar4))" (binary_expression "(int)puVar9 +\n                               sVar5" (cast_expression "(int)puVar9" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar9")) (+ "+") (identifier "sVar5")) (+ "+") (parenthesized_expression "(-(int)local_48 - (uint)CARRY1((byte)uVar4,(byte)uVar4))" (( "(") (binary_expression "-(int)local_48 - (uint)CARRY1((byte)uVar4,(byte)uVar4)" (unary_expression "-(int)local_48" (- "-") (cast_expression "(int)local_48" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_48"))) (- "-") (cast_expression "(uint)CARRY1((byte)uVar4,(byte)uVar4)" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (call_expression "CARRY1((byte)uVar4,(byte)uVar4)" (identifier "CARRY1") (argument_list "((byte)uVar4,(byte)uVar4)" (( "(") (cast_expression "(byte)uVar4" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "uVar4")) (, ",") (cast_expression "(byte)uVar4" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "uVar4")) () ")"))))) () ")"))) (+ "+") (number_literal "-2")) () ")"))) (, ",") (number_literal "1") () ")")))) (; ";")) (expression_statement "iVar2 = *(int *)(param_1 + 0x648);" (assignment_expression "iVar2 = *(int *)(param_1 + 0x648)" (identifier "iVar2") (= "=") (pointer_expression "*(int *)(param_1 + 0x648)" (* "*") (cast_expression "(int *)(param_1 + 0x648)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x648)" (( "(") (binary_expression "param_1 + 0x648" (identifier "param_1") (+ "+") (number_literal "0x648")) () ")"))))) (; ";")) (expression_statement "*(undefined4 *)(iVar7 + iVar1 * 4) = uVar6;" (assignment_expression "*(undefined4 *)(iVar7 + iVar1 * 4) = uVar6" (pointer_expression "*(undefined4 *)(iVar7 + iVar1 * 4)" (* "*") (cast_expression "(undefined4 *)(iVar7 + iVar1 * 4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar7 + iVar1 * 4)" (( "(") (binary_expression "iVar7 + iVar1 * 4" (identifier "iVar7") (+ "+") (binary_expression "iVar1 * 4" (identifier "iVar1") (* "*") (number_literal "4"))) () ")")))) (= "=") (identifier "uVar6")) (; ";")) (expression_statement "strcpy(*(char **)(*(int *)(param_1 + 0x644) + iVar2 * 4),(char *)local_48);" (call_expression "strcpy(*(char **)(*(int *)(param_1 + 0x644) + iVar2 * 4),(char *)local_48)" (identifier "strcpy") (argument_list "(*(char **)(*(int *)(param_1 + 0x644) + iVar2 * 4),(char *)local_48)" (( "(") (pointer_expression "*(char **)(*(int *)(param_1 + 0x644) + iVar2 * 4)" (* "*") (cast_expression "(char **)(*(int *)(param_1 + 0x644) + iVar2 * 4)" (( "(") (type_descriptor "char **" (primitive_type "char") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*(int *)(param_1 + 0x644) + iVar2 * 4)" (( "(") (binary_expression "*(int *)(param_1 + 0x644) + iVar2 * 4" (pointer_expression "*(int *)(param_1 + 0x644)" (* "*") (cast_expression "(int *)(param_1 + 0x644)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x644)" (( "(") (binary_expression "param_1 + 0x644" (identifier "param_1") (+ "+") (number_literal "0x644")) () ")")))) (+ "+") (binary_expression "iVar2 * 4" (identifier "iVar2") (* "*") (number_literal "4"))) () ")")))) (, ",") (cast_expression "(char *)local_48" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "local_48")) () ")"))) (; ";")) (expression_statement "strcat(*(char **)(*(int *)(param_1 + 0x644) + *(int *)(param_1 + 0x648) * 4),param_2);" (call_expression "strcat(*(char **)(*(int *)(param_1 + 0x644) + *(int *)(param_1 + 0x648) * 4),param_2)" (identifier "strcat") (argument_list "(*(char **)(*(int *)(param_1 + 0x644) + *(int *)(param_1 + 0x648) * 4),param_2)" (( "(") (pointer_expression "*(char **)(*(int *)(param_1 + 0x644) + *(int *)(param_1 + 0x648) * 4)" (* "*") (cast_expression "(char **)(*(int *)(param_1 + 0x644) + *(int *)(param_1 + 0x648) * 4)" (( "(") (type_descriptor "char **" (primitive_type "char") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*(int *)(param_1 + 0x644) + *(int *)(param_1 + 0x648) * 4)" (( "(") (binary_expression "*(int *)(param_1 + 0x644) + *(int *)(param_1 + 0x648) * 4" (pointer_expression "*(int *)(param_1 + 0x644)" (* "*") (cast_expression "(int *)(param_1 + 0x644)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x644)" (( "(") (binary_expression "param_1 + 0x644" (identifier "param_1") (+ "+") (number_literal "0x644")) () ")")))) (+ "+") (binary_expression "*(int *)(param_1 + 0x648) * 4" (pointer_expression "*(int *)(param_1 + 0x648)" (* "*") (cast_expression "(int *)(param_1 + 0x648)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x648)" (( "(") (binary_expression "param_1 + 0x648" (identifier "param_1") (+ "+") (number_literal "0x648")) () ")")))) (* "*") (number_literal "4"))) () ")")))) (, ",") (identifier "param_2") () ")"))) (; ";")) (if_statement "if (*(int *)(param_1 + 4) != 0) {\n    FUN_000598e0(*(undefined4 *)(param_1 + 0x640),param_1 + 0x60c,\n                 *(undefined4 *)(*(int *)(param_1 + 0x644) + *(int *)(param_1 + 0x648) * 4),0);\n  }" (if "if") (parenthesized_expression "(*(int *)(param_1 + 4) != 0)" (( "(") (binary_expression "*(int *)(param_1 + 4) != 0" (pointer_expression "*(int *)(param_1 + 4)" (* "*") (cast_expression "(int *)(param_1 + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 4)" (( "(") (binary_expression "param_1 + 4" (identifier "param_1") (+ "+") (number_literal "4")) () ")")))) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    FUN_000598e0(*(undefined4 *)(param_1 + 0x640),param_1 + 0x60c,\n                 *(undefined4 *)(*(int *)(param_1 + 0x644) + *(int *)(param_1 + 0x648) * 4),0);\n  }" ({ "{") (expression_statement "FUN_000598e0(*(undefined4 *)(param_1 + 0x640),param_1 + 0x60c,\n                 *(undefined4 *)(*(int *)(param_1 + 0x644) + *(int *)(param_1 + 0x648) * 4),0);" (call_expression "FUN_000598e0(*(undefined4 *)(param_1 + 0x640),param_1 + 0x60c,\n                 *(undefined4 *)(*(int *)(param_1 + 0x644) + *(int *)(param_1 + 0x648) * 4),0)" (identifier "FUN_000598e0") (argument_list "(*(undefined4 *)(param_1 + 0x640),param_1 + 0x60c,\n                 *(undefined4 *)(*(int *)(param_1 + 0x644) + *(int *)(param_1 + 0x648) * 4),0)" (( "(") (pointer_expression "*(undefined4 *)(param_1 + 0x640)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0x640)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x640)" (( "(") (binary_expression "param_1 + 0x640" (identifier "param_1") (+ "+") (number_literal "0x640")) () ")")))) (, ",") (binary_expression "param_1 + 0x60c" (identifier "param_1") (+ "+") (number_literal "0x60c")) (, ",") (pointer_expression "*(undefined4 *)(*(int *)(param_1 + 0x644) + *(int *)(param_1 + 0x648) * 4)" (* "*") (cast_expression "(undefined4 *)(*(int *)(param_1 + 0x644) + *(int *)(param_1 + 0x648) * 4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(param_1 + 0x644) + *(int *)(param_1 + 0x648) * 4)" (( "(") (binary_expression "*(int *)(param_1 + 0x644) + *(int *)(param_1 + 0x648) * 4" (pointer_expression "*(int *)(param_1 + 0x644)" (* "*") (cast_expression "(int *)(param_1 + 0x644)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x644)" (( "(") (binary_expression "param_1 + 0x644" (identifier "param_1") (+ "+") (number_literal "0x644")) () ")")))) (+ "+") (binary_expression "*(int *)(param_1 + 0x648) * 4" (pointer_expression "*(int *)(param_1 + 0x648)" (* "*") (cast_expression "(int *)(param_1 + 0x648)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x648)" (( "(") (binary_expression "param_1 + 0x648" (identifier "param_1") (+ "+") (number_literal "0x648")) () ")")))) (* "*") (number_literal "4"))) () ")")))) (, ",") (number_literal "0") () ")"))) (; ";")) (} "}"))) (expression_statement "*(int *)(param_1 + 0x648) = *(int *)(param_1 + 0x648) + 1;" (assignment_expression "*(int *)(param_1 + 0x648) = *(int *)(param_1 + 0x648) + 1" (pointer_expression "*(int *)(param_1 + 0x648)" (* "*") (cast_expression "(int *)(param_1 + 0x648)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x648)" (( "(") (binary_expression "param_1 + 0x648" (identifier "param_1") (+ "+") (number_literal "0x648")) () ")")))) (= "=") (binary_expression "*(int *)(param_1 + 0x648) + 1" (pointer_expression "*(int *)(param_1 + 0x648)" (* "*") (cast_expression "(int *)(param_1 + 0x648)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x648)" (( "(") (binary_expression "param_1 + 0x648" (identifier "param_1") (+ "+") (number_literal "0x648")) () ")")))) (+ "+") (number_literal "1"))) (; ";")) (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 */

void function_1(void *estuff,char *string)

{
  int var_18;
  int var_12;
  int var_13;
  int var_15;
  type_1 var_5;
  type_1 var_7;
  size_t var_10;
  void *pvVar8;
  size_t n;
  type_1 *var_6;
  type_1 *puVar10;
  int var_1;
  bool bVar11;
  type_2 type_2;
  char timebuf [40];
  
  var_18 = *(int *)(var_1 + 0x14);
  if (*(int *)((int)estuff + 0x64c) <= *(int *)((int)estuff + 0x648)) {
    n = *(int *)((int)estuff + 0x64c) + 0x40;
    *(size_t *)((int)estuff + 0x64c) = n;
    pvVar8 = var_2(*(void **)((int)estuff + 0x644),n,4);
    *(void **)((int)estuff + 0x644) = pvVar8;
  }
  var_3();
  var_4(timebuf,0x28,"%Y-%m-%d %H:%M:%S\t",(type_2 *)&type_2);
  puVar10 = (type_1 *)timebuf;
  do {
    var_6 = puVar10;
    var_5 = *var_6 + 0xfefefeff & ~*var_6;
    var_7 = var_5 & 0x80808080;
    puVar10 = var_6 + 1;
  } while (var_7 == 0);
  bVar11 = (var_5 & 0x8080) == 0;
  if (bVar11) {
    var_7 = var_7 >> 0x10;
  }
  if (bVar11) {
    puVar10 = (type_1 *)((int)var_6 + 6);
  }
  var_10 = var_8(string);
  var_12 = *(int *)((int)estuff + 0x644);
  var_13 = *(int *)((int)estuff + 0x648);
  pvVar8 = var_9((size_t)((int)puVar10 +
                              var_10 + (-(int)timebuf - (type_1)var_11((type_3)var_7,(type_3)var_7)) + -2),
                      1);
  var_15 = *(int *)((int)estuff + 0x648);
  *(void **)(var_12 + var_13 * 4) = pvVar8;
  var_14(*(char **)(*(int *)((int)estuff + 0x644) + var_15 * 4),timebuf);
  var_16(*(char **)(*(int *)((int)estuff + 0x644) + *(int *)((int)estuff + 0x648) * 4),string);
  if (*(int *)((int)estuff + 4) != 0) {
    var_17
              (*(type_4 **)((int)estuff + 0x640),(void *)((int)estuff + 0x60c),
               *(char **)(*(int *)((int)estuff + 0x644) + *(int *)((int)estuff + 0x648) * 4),0);
  }
  *(int *)((int)estuff + 0x648) = *(int *)((int)estuff + 0x648) + 1;
  if (var_18 == *(int *)(var_1 + 0x14)) {
    return;
  }
                    /* WARNING: Subroutine does not return */
  var_19();
}


(translation_unit (function_definition type: (primitive_type) 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: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (sized_type_specifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (array_declarator declarator: (identifier) size: (number_literal))) (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: (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: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) consequence: (compound_statement (expression_statement (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: (primitive_type) 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 (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) (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 (call_expression function: (identifier) arguments: (argument_list (pointer_expression argument: (identifier))))) (expression_statement (assignment_expression left: (field_expression argument: (identifier) field: (field_identifier)) right: (identifier))) (expression_statement (assignment_expression left: (field_expression argument: (identifier) field: (field_identifier)) right: (identifier))) (expression_statement (assignment_expression left: (field_expression argument: (identifier) field: (field_identifier)) right: (identifier))) (expression_statement (assignment_expression left: (field_expression argument: (identifier) field: (field_identifier)) right: (identifier))) (expression_statement (assignment_expression left: (field_expression argument: (identifier) field: (field_identifier)) right: (identifier))) (expression_statement (assignment_expression left: (field_expression argument: (identifier) field: (field_identifier)) right: (identifier))) (expression_statement (assignment_expression left: (field_expression argument: (identifier) field: (field_identifier)) right: (identifier))) (expression_statement (assignment_expression left: (field_expression argument: (identifier) field: (field_identifier)) right: (identifier))) (expression_statement (assignment_expression left: (field_expression argument: (identifier) field: (field_identifier)) right: (identifier))) (expression_statement (assignment_expression left: (field_expression argument: (identifier) field: (field_identifier)) right: (identifier))) (expression_statement (assignment_expression left: (field_expression argument: (identifier) field: (field_identifier)) right: (identifier))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (identifier)) (number_literal) (string_literal (string_content) (escape_sequence)) (pointer_expression argument: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (pointer_expression argument: (identifier)) right: (number_literal)) right: (unary_expression argument: (pointer_expression argument: (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal)))) (if_statement condition: (parenthesized_expression (identifier)) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))))) (if_statement condition: (parenthesized_expression (identifier)) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal)))))))) (expression_statement (assignment_expression left: (identifier) right: (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))))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (binary_expression left: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (identifier)) right: (parenthesized_expression (binary_expression left: (unary_expression argument: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier))) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (call_expression function: (identifier) arguments: (argument_list (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)))))))) right: (number_literal)))) (number_literal))))) (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: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))))) right: (identifier))) (expression_statement (call_expression function: (identifier) 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: (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: (binary_expression left: (identifier) right: (number_literal)))))) (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (identifier))))) (expression_statement (call_expression function: (identifier) 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: (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: (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)))))) (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 (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))))) (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: (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: (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)))))) (number_literal)))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (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)))) (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 MASKED(int param_1,char *param_2)

{
  int iVar1;
  int iVar2;
  uint uVar3;
  uint uVar4;
  size_t sVar5;
  undefined4 uVar6;
  int iVar7;
  uint *puVar8;
  uint *puVar9;
  int in_GS_OFFSET;
  bool bVar10;
  int local_ac;
  int local_a8;
  int local_a4;
  int local_a0;
  int local_9c;
  int local_98;
  int local_94;
  int local_90;
  int local_8c;
  long local_88;
  char *local_84;
  tm local_74;
  uint local_48 [10];
  int local_20;
  undefined4 uStack_14;
  
  uStack_14 = 0x5e87b;
  local_20 = *(int *)(in_GS_OFFSET + 0x14);
  if (*(int *)(param_1 + 0x64c) <= *(int *)(param_1 + 0x648)) {
    iVar7 = *(int *)(param_1 + 0x64c) + 0x40;
    *(int *)(param_1 + 0x64c) = iVar7;
    uVar6 = FUN_000314a0(*(undefined4 *)(param_1 + 0x644),iVar7,4);
    *(undefined4 *)(param_1 + 0x644) = uVar6;
  }
  FUN_0004f2a0(&local_ac);
  local_74.tm_sec = local_ac;
  local_74.tm_min = local_a8;
  local_74.tm_hour = local_a4;
  local_74.tm_mday = local_a0;
  local_74.tm_mon = local_9c;
  local_74.tm_year = local_98;
  local_74.tm_wday = local_94;
  local_74.tm_yday = local_90;
  local_74.tm_isdst = local_8c;
  local_74.tm_gmtoff = local_88;
  local_74.tm_zone = local_84;
  strftime((char *)local_48,0x28,"%Y-%m-%d %H:%M:%S\t",&local_74);
  puVar9 = local_48;
  do {
    puVar8 = puVar9;
    uVar3 = *puVar8 + 0xfefefeff & ~*puVar8;
    uVar4 = uVar3 & 0x80808080;
    puVar9 = puVar8 + 1;
  } while (uVar4 == 0);
  bVar10 = (uVar3 & 0x8080) == 0;
  if (bVar10) {
    uVar4 = uVar4 >> 0x10;
  }
  if (bVar10) {
    puVar9 = (uint *)((int)puVar8 + 6);
  }
  sVar5 = strlen(param_2);
  iVar7 = *(int *)(param_1 + 0x644);
  iVar1 = *(int *)(param_1 + 0x648);
  uVar6 = FUN_000313e0((char *)((int)puVar9 +
                               sVar5 + (-(int)local_48 - (uint)CARRY1((byte)uVar4,(byte)uVar4)) + -2
                               ),1);
  iVar2 = *(int *)(param_1 + 0x648);
  *(undefined4 *)(iVar7 + iVar1 * 4) = uVar6;
  strcpy(*(char **)(*(int *)(param_1 + 0x644) + iVar2 * 4),(char *)local_48);
  strcat(*(char **)(*(int *)(param_1 + 0x644) + *(int *)(param_1 + 0x648) * 4),param_2);
  if (*(int *)(param_1 + 4) != 0) {
    FUN_000598e0(*(undefined4 *)(param_1 + 0x640),param_1 + 0x60c,
                 *(undefined4 *)(*(int *)(param_1 + 0x644) + *(int *)(param_1 + 0x648) * 4),0);
  }
  *(int *)(param_1 + 0x648) = *(int *)(param_1 + 0x648) + 1;
  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {
    return;
  }
                    /* WARNING: Subroutine does not return */
  FUN_00077880();
}

