
int sqlite3session_attach(sqlite3_session *pSession,char *zName)

{
  byte *pbVar1;
  sqlite3_mutex *psVar2;
  byte *pbVar3;
  SessionTable *pSVar4;
  size_t sVar5;
  byte *pbVar6;
  SessionTable *pSVar7;
  char cVar8;
  uint uVar9;
  SessionTable *pSVar10;
  char cVar11;
  byte *pbVar12;
  int iVar13;
  int unaff_EDI;
  undefined4 *puVar14;
  byte bVar15;
  u64 in_stack_ffffffc4;
  uint local_30;
  
  bVar15 = 0;
  __x86_get_pc_thunk_di();
  psVar2 = pSession->db->mutex;
  if (psVar2 != (sqlite3_mutex *)0x0) {
    (**(code **)(unaff_EDI + 0x6c0b5))(psVar2);
  }
  if (zName == (char *)0x0) {
    iVar13 = 0;
    pSession->bAutoAttach = 1;
  }
  else {
    sVar5 = strlen(zName);
    for (pSVar7 = pSession->pTable; pSVar7 != (SessionTable *)0x0; pSVar7 = pSVar7->pNext) {
      pbVar3 = (byte *)pSVar7->zName;
      if (pbVar3 != (byte *)0x0) {
        iVar13 = unaff_EDI + 0x1a459;
        cVar8 = *(char *)(unaff_EDI + 0x1a459 + (uint)*pbVar3);
        cVar11 = *(char *)(unaff_EDI + 0x1a459 + (uint)(byte)*zName);
        if (*pbVar3 != 0) {
          pbVar1 = (byte *)zName;
          local_30 = sVar5 & 0x3fffffff;
          if (cVar8 != cVar11) goto LAB_0014f4c0;
          do {
            pbVar12 = pbVar1;
            pbVar6 = pbVar3;
            local_30 = local_30 - 1;
            pbVar1 = pbVar12 + 1;
            if (local_30 == 0xffffffff) goto LAB_0014f47a;
          } while ((pbVar6[1] != 0) &&
                  (pbVar3 = pbVar6 + 1,
                  *(char *)(iVar13 + (uint)pbVar6[1]) == *(char *)(iVar13 + (uint)*pbVar1)));
          cVar8 = *(char *)(iVar13 + (uint)pbVar6[1]);
          cVar11 = *(char *)(iVar13 + (uint)pbVar12[1]);
        }
        if (cVar8 == cVar11) {
LAB_0014f47a:
          iVar13 = 0;
          goto LAB_0014f47c;
        }
      }
LAB_0014f4c0:
    }
    iVar13 = sqlite3_initialize();
    if ((iVar13 == 0) &&
       (pSVar7 = (SessionTable *)sqlite3Malloc(in_stack_ffffffc4), pSVar7 != (SessionTable *)0x0)) {
      pSVar7->pNext = (SessionTable *)0x0;
      puVar14 = (undefined4 *)((uint)&pSVar7->zName & 0xfffffffc);
      pSVar7->apChange = (SessionChange **)0x0;
      uVar9 = (uint)((int)pSVar7 + (0x24 - (int)puVar14)) >> 2;
      for (; uVar9 != 0; uVar9 = uVar9 - 1) {
        *puVar14 = 0;
        puVar14 = puVar14 + (uint)bVar15 * -2 + 1;
      }
      pSVar7->zName = (char *)(pSVar7 + 1);
      memcpy(pSVar7 + 1,zName,(sVar5 & 0x3fffffff) + 1);
      iVar13 = 0;
      pSVar4 = pSession->pTable;
      if (pSession->pTable == (SessionTable *)0x0) {
        pSession->pTable = pSVar7;
      }
      else {
        do {
          pSVar10 = pSVar4;
          pSVar4 = pSVar10->pNext;
        } while (pSVar4 != (SessionTable *)0x0);
        pSVar10->pNext = pSVar7;
      }
    }
    else {
      iVar13 = 7;
    }
  }
LAB_0014f47c:
  psVar2 = pSession->db->mutex;
  if (psVar2 != (sqlite3_mutex *)0x0) {
    (**(code **)(unaff_EDI + 0x6c0bd))(psVar2);
  }
  return iVar13;
}



undefined4 FUN_0014f380(int *param_1,byte *param_2)

{
  byte *pbVar1;
  byte *pbVar2;
  size_t sVar3;
  byte *pbVar4;
  int iVar5;
  undefined4 *puVar6;
  char cVar7;
  uint uVar8;
  undefined4 *puVar9;
  char cVar10;
  byte *pbVar11;
  undefined4 uVar12;
  int unaff_EDI;
  undefined4 *puVar13;
  byte bVar14;
  uint local_30;
  
  bVar14 = 0;
  FUN_0003a401();
  if (*(int *)(*param_1 + 0xc) != 0) {
    (**(code **)(unaff_EDI + 0x6c0b5))(*(int *)(*param_1 + 0xc));
  }
  if (param_2 == (byte *)0x0) {
    uVar12 = 0;
    param_1[4] = 1;
  }
  else {
    sVar3 = strlen((char *)param_2);
    for (puVar6 = (undefined4 *)param_1[10]; puVar6 != (undefined4 *)0x0;
        puVar6 = (undefined4 *)*puVar6) {
      pbVar2 = (byte *)puVar6[1];
      if (pbVar2 != (byte *)0x0) {
        iVar5 = unaff_EDI + 0x1a459;
        cVar7 = *(char *)(unaff_EDI + 0x1a459 + (uint)*pbVar2);
        cVar10 = *(char *)(unaff_EDI + 0x1a459 + (uint)*param_2);
        if (*pbVar2 != 0) {
          pbVar1 = param_2;
          local_30 = sVar3 & 0x3fffffff;
          if (cVar7 != cVar10) goto LAB_0014f4c0;
          do {
            pbVar11 = pbVar1;
            pbVar4 = pbVar2;
            local_30 = local_30 - 1;
            pbVar1 = pbVar11 + 1;
            if (local_30 == 0xffffffff) goto LAB_0014f47a;
          } while ((pbVar4[1] != 0) &&
                  (pbVar2 = pbVar4 + 1,
                  *(char *)(iVar5 + (uint)pbVar4[1]) == *(char *)(iVar5 + (uint)*pbVar1)));
          cVar7 = *(char *)(iVar5 + (uint)pbVar4[1]);
          cVar10 = *(char *)(iVar5 + (uint)pbVar11[1]);
        }
        if (cVar7 == cVar10) {
LAB_0014f47a:
          uVar12 = 0;
          goto LAB_0014f47c;
        }
      }
LAB_0014f4c0:
    }
    iVar5 = FUN_00067fc0();
    if ((iVar5 == 0) && (puVar6 = (undefined4 *)FUN_00055780(), puVar6 != (undefined4 *)0x0)) {
      *puVar6 = 0;
      puVar6[8] = 0;
      puVar13 = (undefined4 *)((uint)(puVar6 + 1) & 0xfffffffc);
      for (uVar8 = (uint)((int)puVar6 + (0x24 - (int)((uint)(puVar6 + 1) & 0xfffffffc))) >> 2;
          uVar8 != 0; uVar8 = uVar8 - 1) {
        *puVar13 = 0;
        puVar13 = puVar13 + (uint)bVar14 * -2 + 1;
      }
      puVar6[1] = puVar6 + 9;
      memcpy(puVar6 + 9,param_2,(sVar3 & 0x3fffffff) + 1);
      uVar12 = 0;
      puVar13 = (undefined4 *)param_1[10];
      if ((undefined4 *)param_1[10] == (undefined4 *)0x0) {
        param_1[10] = (int)puVar6;
      }
      else {
        do {
          puVar9 = puVar13;
          puVar13 = (undefined4 *)*puVar9;
        } while (puVar13 != (undefined4 *)0x0);
        *puVar9 = puVar6;
      }
    }
    else {
      uVar12 = 7;
    }
  }
LAB_0014f47c:
  if (*(int *)(*param_1 + 0xc) != 0) {
    (**(code **)(unaff_EDI + 0x6c0bd))(*(int *)(*param_1 + 0xc));
  }
  return uVar12;
}


PUSH EBP
PUSH EDI
CALL 0x0003a401
ADD EDI,0x6baa1
PUSH ESI
PUSH EBX
SUB ESP,0x2c
MOV EAX,dword ptr [ESP + 0x40]
MOV dword ptr [ESP + 0x18],EDI
MOV EAX,dword ptr [EAX]
MOV EAX,dword ptr [EAX + 0xc]
TEST EAX,EAX
JZ 0x0014f3b0
SUB ESP,0xc
PUSH EAX
CALL dword ptr [EDI + 0x614]
ADD ESP,0x10
MOV EAX,dword ptr [ESP + 0x44]
TEST EAX,EAX
JZ 0x0014f550
SUB ESP,0xc
PUSH dword ptr [ESP + 0x50]
MOV EBX,dword ptr [ESP + 0x28]
CALL 0x000153b0
ADD ESP,0x10
AND EAX,0x3fffffff
MOV dword ptr [ESP + 0x1c],EAX
MOV EAX,dword ptr [ESP + 0x40]
MOV EBP,dword ptr [EAX + 0x28]
TEST EBP,EBP
JZ 0x0014f4cb
LEA ESI,[ESI]
NOP
MOV EAX,dword ptr [EBP + 0x4]
TEST EAX,EAX
JZ 0x0014f4c0
MOV EBX,dword ptr [ESP + 0x44]
MOVZX ECX,byte ptr [EAX]
MOV ESI,dword ptr [ESP + 0x18]
MOVZX EBX,byte ptr [EBX]
MOV EDX,ECX
LEA EDI,[ESI + 0xfffae9b8]
MOVZX ECX,byte ptr [ESI + ECX*0x1 + 0xfffae9b8]
MOVZX EBX,byte ptr [ESI + EBX*0x1 + 0xfffae9b8]
TEST DL,DL
JZ 0x0014f4bc
CMP CL,BL
JNZ 0x0014f4c0
MOV ECX,dword ptr [ESP + 0x1c]
MOV EBX,dword ptr [ESP + 0x44]
MOV dword ptr [ESP + 0x14],EBP
MOV dword ptr [ESP + 0xc],ECX
JMP 0x0014f462
MOVZX EDX,byte ptr [EAX + 0x1]
TEST DL,DL
JZ 0x0014f4a8
MOVZX EBP,byte ptr [ESI]
MOVZX ECX,byte ptr [EDI + EBP*0x1]
CMP byte ptr [EDI + EDX*0x1],CL
JNZ 0x0014f4a8
MOV EAX,dword ptr [ESP + 0x10]
MOV EBX,ESI
SUB dword ptr [ESP + 0xc],0x1
MOV EDX,dword ptr [ESP + 0xc]
LEA ECX,[EAX + 0x1]
LEA ESI,[EBX + 0x1]
MOV dword ptr [ESP + 0x10],ECX
CMP EDX,-0x1
JNZ 0x0014f448
XOR ESI,ESI
MOV EAX,dword ptr [ESP + 0x40]
MOV EAX,dword ptr [EAX]
MOV EAX,dword ptr [EAX + 0xc]
TEST EAX,EAX
JZ 0x0014f49a
SUB ESP,0xc
PUSH EAX
MOV EAX,dword ptr [ESP + 0x28]
CALL dword ptr [EAX + 0x61c]
ADD ESP,0x10
ADD ESP,0x2c
MOV EAX,ESI
POP EBX
POP ESI
POP EDI
POP EBP
RET
MOVZX EAX,byte ptr [EAX + 0x1]
MOV EBP,dword ptr [ESP + 0x14]
MOVZX ECX,byte ptr [EDI + EAX*0x1]
MOVZX EAX,byte ptr [EBX + 0x1]
MOVZX EBX,byte ptr [EDI + EAX*0x1]
CMP CL,BL
JZ 0x0014f47a
MOV EBP,dword ptr [EBP]
TEST EBP,EBP
JNZ 0x0014f3f0
CALL 0x00067fc0
MOV ESI,EAX
TEST EAX,EAX
JNZ 0x0014f562
MOV EAX,dword ptr [ESP + 0x1c]
XOR EDX,EDX
ADD EAX,0x25
CALL 0x00055780
MOV EBP,EAX
TEST EAX,EAX
JZ 0x0014f562
LEA EDI,[EAX + 0x4]
MOV ECX,EAX
MOV dword ptr [EAX],0x0
SUB ESP,0x4
AND EDI,0xfffffffc
MOV dword ptr [EAX + 0x20],0x0
MOV EAX,ESI
SUB ECX,EDI
ADD ECX,0x24
SHR ECX,0x2
STOSD.REP ES:EDI
LEA EAX,[EBP + 0x24]
MOV dword ptr [EBP + 0x4],EAX
MOV EDX,dword ptr [ESP + 0x20]
ADD EDX,0x1
PUSH EDX
PUSH dword ptr [ESP + 0x4c]
PUSH EAX
MOV EBX,dword ptr [ESP + 0x28]
CALL 0x00015130
MOV EAX,dword ptr [ESP + 0x50]
ADD ESP,0x10
MOV EDX,dword ptr [EAX + 0x28]
TEST EDX,EDX
JNZ 0x0014f542
JMP 0x0014f56c
MOV EDX,EAX
MOV EAX,dword ptr [EDX]
TEST EAX,EAX
JNZ 0x0014f540
MOV dword ptr [EDX],EBP
JMP 0x0014f47c
MOV EAX,dword ptr [ESP + 0x40]
XOR ESI,ESI
MOV dword ptr [EAX + 0x10],0x1
JMP 0x0014f47c
MOV ESI,0x7
JMP 0x0014f47c
MOV EAX,dword ptr [ESP + 0x40]
LEA EDX,[EAX + 0x28]
MOV dword ptr [EDX],EBP
JMP 0x0014f47c
(translation_unit "undefined4 FUN_0014f380(int *param_1,byte *param_2)\n\n{\n  byte *pbVar1;\n  byte *pbVar2;\n  size_t sVar3;\n  byte *pbVar4;\n  int iVar5;\n  undefined4 *puVar6;\n  char cVar7;\n  uint uVar8;\n  undefined4 *puVar9;\n  char cVar10;\n  byte *pbVar11;\n  undefined4 uVar12;\n  int unaff_EDI;\n  undefined4 *puVar13;\n  byte bVar14;\n  uint local_30;\n  \n  bVar14 = 0;\n  FUN_0003a401();\n  if (*(int *)(*param_1 + 0xc) != 0) {\n    (**(code **)(unaff_EDI + 0x6c0b5))(*(int *)(*param_1 + 0xc));\n  }\n  if (param_2 == (byte *)0x0) {\n    uVar12 = 0;\n    param_1[4] = 1;\n  }\n  else {\n    sVar3 = strlen((char *)param_2);\n    for (puVar6 = (undefined4 *)param_1[10]; puVar6 != (undefined4 *)0x0;\n        puVar6 = (undefined4 *)*puVar6) {\n      pbVar2 = (byte *)puVar6[1];\n      if (pbVar2 != (byte *)0x0) {\n        iVar5 = unaff_EDI + 0x1a459;\n        cVar7 = *(char *)(unaff_EDI + 0x1a459 + (uint)*pbVar2);\n        cVar10 = *(char *)(unaff_EDI + 0x1a459 + (uint)*param_2);\n        if (*pbVar2 != 0) {\n          pbVar1 = param_2;\n          local_30 = sVar3 & 0x3fffffff;\n          if (cVar7 != cVar10) goto LAB_0014f4c0;\n          do {\n            pbVar11 = pbVar1;\n            pbVar4 = pbVar2;\n            local_30 = local_30 - 1;\n            pbVar1 = pbVar11 + 1;\n            if (local_30 == 0xffffffff) goto LAB_0014f47a;\n          } while ((pbVar4[1] != 0) &&\n                  (pbVar2 = pbVar4 + 1,\n                  *(char *)(iVar5 + (uint)pbVar4[1]) == *(char *)(iVar5 + (uint)*pbVar1)));\n          cVar7 = *(char *)(iVar5 + (uint)pbVar4[1]);\n          cVar10 = *(char *)(iVar5 + (uint)pbVar11[1]);\n        }\n        if (cVar7 == cVar10) {\nLAB_0014f47a:\n          uVar12 = 0;\n          goto LAB_0014f47c;\n        }\n      }\nLAB_0014f4c0:\n    }\n    iVar5 = FUN_00067fc0();\n    if ((iVar5 == 0) && (puVar6 = (undefined4 *)FUN_00055780(), puVar6 != (undefined4 *)0x0)) {\n      *puVar6 = 0;\n      puVar6[8] = 0;\n      puVar13 = (undefined4 *)((uint)(puVar6 + 1) & 0xfffffffc);\n      for (uVar8 = (uint)((int)puVar6 + (0x24 - (int)((uint)(puVar6 + 1) & 0xfffffffc))) >> 2;\n          uVar8 != 0; uVar8 = uVar8 - 1) {\n        *puVar13 = 0;\n        puVar13 = puVar13 + (uint)bVar14 * -2 + 1;\n      }\n      puVar6[1] = puVar6 + 9;\n      memcpy(puVar6 + 9,param_2,(sVar3 & 0x3fffffff) + 1);\n      uVar12 = 0;\n      puVar13 = (undefined4 *)param_1[10];\n      if ((undefined4 *)param_1[10] == (undefined4 *)0x0) {\n        param_1[10] = (int)puVar6;\n      }\n      else {\n        do {\n          puVar9 = puVar13;\n          puVar13 = (undefined4 *)*puVar9;\n        } while (puVar13 != (undefined4 *)0x0);\n        *puVar9 = puVar6;\n      }\n    }\n    else {\n      uVar12 = 7;\n    }\n  }\nLAB_0014f47c:\n  if (*(int *)(*param_1 + 0xc) != 0) {\n    (**(code **)(unaff_EDI + 0x6c0bd))(*(int *)(*param_1 + 0xc));\n  }\n  return uVar12;\n}\n\n" (function_definition "undefined4 FUN_0014f380(int *param_1,byte *param_2)\n\n{\n  byte *pbVar1;\n  byte *pbVar2;\n  size_t sVar3;\n  byte *pbVar4;\n  int iVar5;\n  undefined4 *puVar6;\n  char cVar7;\n  uint uVar8;\n  undefined4 *puVar9;\n  char cVar10;\n  byte *pbVar11;\n  undefined4 uVar12;\n  int unaff_EDI;\n  undefined4 *puVar13;\n  byte bVar14;\n  uint local_30;\n  \n  bVar14 = 0;\n  FUN_0003a401();\n  if (*(int *)(*param_1 + 0xc) != 0) {\n    (**(code **)(unaff_EDI + 0x6c0b5))(*(int *)(*param_1 + 0xc));\n  }\n  if (param_2 == (byte *)0x0) {\n    uVar12 = 0;\n    param_1[4] = 1;\n  }\n  else {\n    sVar3 = strlen((char *)param_2);\n    for (puVar6 = (undefined4 *)param_1[10]; puVar6 != (undefined4 *)0x0;\n        puVar6 = (undefined4 *)*puVar6) {\n      pbVar2 = (byte *)puVar6[1];\n      if (pbVar2 != (byte *)0x0) {\n        iVar5 = unaff_EDI + 0x1a459;\n        cVar7 = *(char *)(unaff_EDI + 0x1a459 + (uint)*pbVar2);\n        cVar10 = *(char *)(unaff_EDI + 0x1a459 + (uint)*param_2);\n        if (*pbVar2 != 0) {\n          pbVar1 = param_2;\n          local_30 = sVar3 & 0x3fffffff;\n          if (cVar7 != cVar10) goto LAB_0014f4c0;\n          do {\n            pbVar11 = pbVar1;\n            pbVar4 = pbVar2;\n            local_30 = local_30 - 1;\n            pbVar1 = pbVar11 + 1;\n            if (local_30 == 0xffffffff) goto LAB_0014f47a;\n          } while ((pbVar4[1] != 0) &&\n                  (pbVar2 = pbVar4 + 1,\n                  *(char *)(iVar5 + (uint)pbVar4[1]) == *(char *)(iVar5 + (uint)*pbVar1)));\n          cVar7 = *(char *)(iVar5 + (uint)pbVar4[1]);\n          cVar10 = *(char *)(iVar5 + (uint)pbVar11[1]);\n        }\n        if (cVar7 == cVar10) {\nLAB_0014f47a:\n          uVar12 = 0;\n          goto LAB_0014f47c;\n        }\n      }\nLAB_0014f4c0:\n    }\n    iVar5 = FUN_00067fc0();\n    if ((iVar5 == 0) && (puVar6 = (undefined4 *)FUN_00055780(), puVar6 != (undefined4 *)0x0)) {\n      *puVar6 = 0;\n      puVar6[8] = 0;\n      puVar13 = (undefined4 *)((uint)(puVar6 + 1) & 0xfffffffc);\n      for (uVar8 = (uint)((int)puVar6 + (0x24 - (int)((uint)(puVar6 + 1) & 0xfffffffc))) >> 2;\n          uVar8 != 0; uVar8 = uVar8 - 1) {\n        *puVar13 = 0;\n        puVar13 = puVar13 + (uint)bVar14 * -2 + 1;\n      }\n      puVar6[1] = puVar6 + 9;\n      memcpy(puVar6 + 9,param_2,(sVar3 & 0x3fffffff) + 1);\n      uVar12 = 0;\n      puVar13 = (undefined4 *)param_1[10];\n      if ((undefined4 *)param_1[10] == (undefined4 *)0x0) {\n        param_1[10] = (int)puVar6;\n      }\n      else {\n        do {\n          puVar9 = puVar13;\n          puVar13 = (undefined4 *)*puVar9;\n        } while (puVar13 != (undefined4 *)0x0);\n        *puVar9 = puVar6;\n      }\n    }\n    else {\n      uVar12 = 7;\n    }\n  }\nLAB_0014f47c:\n  if (*(int *)(*param_1 + 0xc) != 0) {\n    (**(code **)(unaff_EDI + 0x6c0bd))(*(int *)(*param_1 + 0xc));\n  }\n  return uVar12;\n}" type_identifier (function_declarator "FUN_0014f380(int *param_1,byte *param_2)" identifier (parameter_list "(int *param_1,byte *param_2)" ( (parameter_declaration "int *param_1" primitive_type (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "byte *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) ))) (compound_statement "{\n  byte *pbVar1;\n  byte *pbVar2;\n  size_t sVar3;\n  byte *pbVar4;\n  int iVar5;\n  undefined4 *puVar6;\n  char cVar7;\n  uint uVar8;\n  undefined4 *puVar9;\n  char cVar10;\n  byte *pbVar11;\n  undefined4 uVar12;\n  int unaff_EDI;\n  undefined4 *puVar13;\n  byte bVar14;\n  uint local_30;\n  \n  bVar14 = 0;\n  FUN_0003a401();\n  if (*(int *)(*param_1 + 0xc) != 0) {\n    (**(code **)(unaff_EDI + 0x6c0b5))(*(int *)(*param_1 + 0xc));\n  }\n  if (param_2 == (byte *)0x0) {\n    uVar12 = 0;\n    param_1[4] = 1;\n  }\n  else {\n    sVar3 = strlen((char *)param_2);\n    for (puVar6 = (undefined4 *)param_1[10]; puVar6 != (undefined4 *)0x0;\n        puVar6 = (undefined4 *)*puVar6) {\n      pbVar2 = (byte *)puVar6[1];\n      if (pbVar2 != (byte *)0x0) {\n        iVar5 = unaff_EDI + 0x1a459;\n        cVar7 = *(char *)(unaff_EDI + 0x1a459 + (uint)*pbVar2);\n        cVar10 = *(char *)(unaff_EDI + 0x1a459 + (uint)*param_2);\n        if (*pbVar2 != 0) {\n          pbVar1 = param_2;\n          local_30 = sVar3 & 0x3fffffff;\n          if (cVar7 != cVar10) goto LAB_0014f4c0;\n          do {\n            pbVar11 = pbVar1;\n            pbVar4 = pbVar2;\n            local_30 = local_30 - 1;\n            pbVar1 = pbVar11 + 1;\n            if (local_30 == 0xffffffff) goto LAB_0014f47a;\n          } while ((pbVar4[1] != 0) &&\n                  (pbVar2 = pbVar4 + 1,\n                  *(char *)(iVar5 + (uint)pbVar4[1]) == *(char *)(iVar5 + (uint)*pbVar1)));\n          cVar7 = *(char *)(iVar5 + (uint)pbVar4[1]);\n          cVar10 = *(char *)(iVar5 + (uint)pbVar11[1]);\n        }\n        if (cVar7 == cVar10) {\nLAB_0014f47a:\n          uVar12 = 0;\n          goto LAB_0014f47c;\n        }\n      }\nLAB_0014f4c0:\n    }\n    iVar5 = FUN_00067fc0();\n    if ((iVar5 == 0) && (puVar6 = (undefined4 *)FUN_00055780(), puVar6 != (undefined4 *)0x0)) {\n      *puVar6 = 0;\n      puVar6[8] = 0;\n      puVar13 = (undefined4 *)((uint)(puVar6 + 1) & 0xfffffffc);\n      for (uVar8 = (uint)((int)puVar6 + (0x24 - (int)((uint)(puVar6 + 1) & 0xfffffffc))) >> 2;\n          uVar8 != 0; uVar8 = uVar8 - 1) {\n        *puVar13 = 0;\n        puVar13 = puVar13 + (uint)bVar14 * -2 + 1;\n      }\n      puVar6[1] = puVar6 + 9;\n      memcpy(puVar6 + 9,param_2,(sVar3 & 0x3fffffff) + 1);\n      uVar12 = 0;\n      puVar13 = (undefined4 *)param_1[10];\n      if ((undefined4 *)param_1[10] == (undefined4 *)0x0) {\n        param_1[10] = (int)puVar6;\n      }\n      else {\n        do {\n          puVar9 = puVar13;\n          puVar13 = (undefined4 *)*puVar9;\n        } while (puVar13 != (undefined4 *)0x0);\n        *puVar9 = puVar6;\n      }\n    }\n    else {\n      uVar12 = 7;\n    }\n  }\nLAB_0014f47c:\n  if (*(int *)(*param_1 + 0xc) != 0) {\n    (**(code **)(unaff_EDI + 0x6c0bd))(*(int *)(*param_1 + 0xc));\n  }\n  return uVar12;\n}" { (declaration "byte *pbVar1;" type_identifier (pointer_declarator "*pbVar1" * identifier) ;) (declaration "byte *pbVar2;" type_identifier (pointer_declarator "*pbVar2" * identifier) ;) (declaration "size_t sVar3;" primitive_type identifier ;) (declaration "byte *pbVar4;" type_identifier (pointer_declarator "*pbVar4" * identifier) ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "undefined4 *puVar6;" type_identifier (pointer_declarator "*puVar6" * identifier) ;) (declaration "char cVar7;" primitive_type identifier ;) (declaration "uint uVar8;" type_identifier identifier ;) (declaration "undefined4 *puVar9;" type_identifier (pointer_declarator "*puVar9" * identifier) ;) (declaration "char cVar10;" primitive_type identifier ;) (declaration "byte *pbVar11;" type_identifier (pointer_declarator "*pbVar11" * identifier) ;) (declaration "undefined4 uVar12;" type_identifier identifier ;) (declaration "int unaff_EDI;" primitive_type identifier ;) (declaration "undefined4 *puVar13;" type_identifier (pointer_declarator "*puVar13" * identifier) ;) (declaration "byte bVar14;" type_identifier identifier ;) (declaration "uint local_30;" type_identifier identifier ;) (expression_statement "bVar14 = 0;" (assignment_expression "bVar14 = 0" identifier = number_literal) ;) (expression_statement "FUN_0003a401();" (call_expression "FUN_0003a401()" identifier (argument_list "()" ( ))) ;) (if_statement "if (*(int *)(*param_1 + 0xc) != 0) {\n    (**(code **)(unaff_EDI + 0x6c0b5))(*(int *)(*param_1 + 0xc));\n  }" if (parenthesized_expression "(*(int *)(*param_1 + 0xc) != 0)" ( (binary_expression "*(int *)(*param_1 + 0xc) != 0" (pointer_expression "*(int *)(*param_1 + 0xc)" * (cast_expression "(int *)(*param_1 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*param_1 + 0xc)" ( (binary_expression "*param_1 + 0xc" (pointer_expression "*param_1" * identifier) + number_literal) )))) != number_literal) )) (compound_statement "{\n    (**(code **)(unaff_EDI + 0x6c0b5))(*(int *)(*param_1 + 0xc));\n  }" { (expression_statement "(**(code **)(unaff_EDI + 0x6c0b5))(*(int *)(*param_1 + 0xc));" (call_expression "(**(code **)(unaff_EDI + 0x6c0b5))(*(int *)(*param_1 + 0xc))" (parenthesized_expression "(**(code **)(unaff_EDI + 0x6c0b5))" ( (pointer_expression "**(code **)(unaff_EDI + 0x6c0b5)" * (pointer_expression "*(code **)(unaff_EDI + 0x6c0b5)" * (cast_expression "(code **)(unaff_EDI + 0x6c0b5)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(unaff_EDI + 0x6c0b5)" ( (binary_expression "unaff_EDI + 0x6c0b5" identifier + number_literal) ))))) )) (argument_list "(*(int *)(*param_1 + 0xc))" ( (pointer_expression "*(int *)(*param_1 + 0xc)" * (cast_expression "(int *)(*param_1 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*param_1 + 0xc)" ( (binary_expression "*param_1 + 0xc" (pointer_expression "*param_1" * identifier) + number_literal) )))) ))) ;) })) (if_statement "if (param_2 == (byte *)0x0) {\n    uVar12 = 0;\n    param_1[4] = 1;\n  }\n  else {\n    sVar3 = strlen((char *)param_2);\n    for (puVar6 = (undefined4 *)param_1[10]; puVar6 != (undefined4 *)0x0;\n        puVar6 = (undefined4 *)*puVar6) {\n      pbVar2 = (byte *)puVar6[1];\n      if (pbVar2 != (byte *)0x0) {\n        iVar5 = unaff_EDI + 0x1a459;\n        cVar7 = *(char *)(unaff_EDI + 0x1a459 + (uint)*pbVar2);\n        cVar10 = *(char *)(unaff_EDI + 0x1a459 + (uint)*param_2);\n        if (*pbVar2 != 0) {\n          pbVar1 = param_2;\n          local_30 = sVar3 & 0x3fffffff;\n          if (cVar7 != cVar10) goto LAB_0014f4c0;\n          do {\n            pbVar11 = pbVar1;\n            pbVar4 = pbVar2;\n            local_30 = local_30 - 1;\n            pbVar1 = pbVar11 + 1;\n            if (local_30 == 0xffffffff) goto LAB_0014f47a;\n          } while ((pbVar4[1] != 0) &&\n                  (pbVar2 = pbVar4 + 1,\n                  *(char *)(iVar5 + (uint)pbVar4[1]) == *(char *)(iVar5 + (uint)*pbVar1)));\n          cVar7 = *(char *)(iVar5 + (uint)pbVar4[1]);\n          cVar10 = *(char *)(iVar5 + (uint)pbVar11[1]);\n        }\n        if (cVar7 == cVar10) {\nLAB_0014f47a:\n          uVar12 = 0;\n          goto LAB_0014f47c;\n        }\n      }\nLAB_0014f4c0:\n    }\n    iVar5 = FUN_00067fc0();\n    if ((iVar5 == 0) && (puVar6 = (undefined4 *)FUN_00055780(), puVar6 != (undefined4 *)0x0)) {\n      *puVar6 = 0;\n      puVar6[8] = 0;\n      puVar13 = (undefined4 *)((uint)(puVar6 + 1) & 0xfffffffc);\n      for (uVar8 = (uint)((int)puVar6 + (0x24 - (int)((uint)(puVar6 + 1) & 0xfffffffc))) >> 2;\n          uVar8 != 0; uVar8 = uVar8 - 1) {\n        *puVar13 = 0;\n        puVar13 = puVar13 + (uint)bVar14 * -2 + 1;\n      }\n      puVar6[1] = puVar6 + 9;\n      memcpy(puVar6 + 9,param_2,(sVar3 & 0x3fffffff) + 1);\n      uVar12 = 0;\n      puVar13 = (undefined4 *)param_1[10];\n      if ((undefined4 *)param_1[10] == (undefined4 *)0x0) {\n        param_1[10] = (int)puVar6;\n      }\n      else {\n        do {\n          puVar9 = puVar13;\n          puVar13 = (undefined4 *)*puVar9;\n        } while (puVar13 != (undefined4 *)0x0);\n        *puVar9 = puVar6;\n      }\n    }\n    else {\n      uVar12 = 7;\n    }\n  }\nLAB_0014f47c:\n  if (*(int *)(*param_1 + 0xc) != 0) {\n    (**(code **)(unaff_EDI + 0x6c0bd))(*(int *)(*param_1 + 0xc));\n  }\n  return uVar12;\n}" if (parenthesized_expression "(param_2 == (byte *)0x0)" ( (binary_expression "param_2 == (byte *)0x0" identifier == (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    uVar12 = 0;\n    param_1[4] = 1;\n  }" { (expression_statement "uVar12 = 0;" (assignment_expression "uVar12 = 0" identifier = number_literal) ;) (expression_statement "param_1[4] = 1;" (assignment_expression "param_1[4] = 1" (subscript_expression "param_1[4]" identifier [ number_literal ]) = number_literal) ;) }) (else_clause "else {\n    sVar3 = strlen((char *)param_2);\n    for (puVar6 = (undefined4 *)param_1[10]; puVar6 != (undefined4 *)0x0;\n        puVar6 = (undefined4 *)*puVar6) {\n      pbVar2 = (byte *)puVar6[1];\n      if (pbVar2 != (byte *)0x0) {\n        iVar5 = unaff_EDI + 0x1a459;\n        cVar7 = *(char *)(unaff_EDI + 0x1a459 + (uint)*pbVar2);\n        cVar10 = *(char *)(unaff_EDI + 0x1a459 + (uint)*param_2);\n        if (*pbVar2 != 0) {\n          pbVar1 = param_2;\n          local_30 = sVar3 & 0x3fffffff;\n          if (cVar7 != cVar10) goto LAB_0014f4c0;\n          do {\n            pbVar11 = pbVar1;\n            pbVar4 = pbVar2;\n            local_30 = local_30 - 1;\n            pbVar1 = pbVar11 + 1;\n            if (local_30 == 0xffffffff) goto LAB_0014f47a;\n          } while ((pbVar4[1] != 0) &&\n                  (pbVar2 = pbVar4 + 1,\n                  *(char *)(iVar5 + (uint)pbVar4[1]) == *(char *)(iVar5 + (uint)*pbVar1)));\n          cVar7 = *(char *)(iVar5 + (uint)pbVar4[1]);\n          cVar10 = *(char *)(iVar5 + (uint)pbVar11[1]);\n        }\n        if (cVar7 == cVar10) {\nLAB_0014f47a:\n          uVar12 = 0;\n          goto LAB_0014f47c;\n        }\n      }\nLAB_0014f4c0:\n    }\n    iVar5 = FUN_00067fc0();\n    if ((iVar5 == 0) && (puVar6 = (undefined4 *)FUN_00055780(), puVar6 != (undefined4 *)0x0)) {\n      *puVar6 = 0;\n      puVar6[8] = 0;\n      puVar13 = (undefined4 *)((uint)(puVar6 + 1) & 0xfffffffc);\n      for (uVar8 = (uint)((int)puVar6 + (0x24 - (int)((uint)(puVar6 + 1) & 0xfffffffc))) >> 2;\n          uVar8 != 0; uVar8 = uVar8 - 1) {\n        *puVar13 = 0;\n        puVar13 = puVar13 + (uint)bVar14 * -2 + 1;\n      }\n      puVar6[1] = puVar6 + 9;\n      memcpy(puVar6 + 9,param_2,(sVar3 & 0x3fffffff) + 1);\n      uVar12 = 0;\n      puVar13 = (undefined4 *)param_1[10];\n      if ((undefined4 *)param_1[10] == (undefined4 *)0x0) {\n        param_1[10] = (int)puVar6;\n      }\n      else {\n        do {\n          puVar9 = puVar13;\n          puVar13 = (undefined4 *)*puVar9;\n        } while (puVar13 != (undefined4 *)0x0);\n        *puVar9 = puVar6;\n      }\n    }\n    else {\n      uVar12 = 7;\n    }\n  }\nLAB_0014f47c:\n  if (*(int *)(*param_1 + 0xc) != 0) {\n    (**(code **)(unaff_EDI + 0x6c0bd))(*(int *)(*param_1 + 0xc));\n  }\n  return uVar12;\n}" else (compound_statement "{\n    sVar3 = strlen((char *)param_2);\n    for (puVar6 = (undefined4 *)param_1[10]; puVar6 != (undefined4 *)0x0;\n        puVar6 = (undefined4 *)*puVar6) {\n      pbVar2 = (byte *)puVar6[1];\n      if (pbVar2 != (byte *)0x0) {\n        iVar5 = unaff_EDI + 0x1a459;\n        cVar7 = *(char *)(unaff_EDI + 0x1a459 + (uint)*pbVar2);\n        cVar10 = *(char *)(unaff_EDI + 0x1a459 + (uint)*param_2);\n        if (*pbVar2 != 0) {\n          pbVar1 = param_2;\n          local_30 = sVar3 & 0x3fffffff;\n          if (cVar7 != cVar10) goto LAB_0014f4c0;\n          do {\n            pbVar11 = pbVar1;\n            pbVar4 = pbVar2;\n            local_30 = local_30 - 1;\n            pbVar1 = pbVar11 + 1;\n            if (local_30 == 0xffffffff) goto LAB_0014f47a;\n          } while ((pbVar4[1] != 0) &&\n                  (pbVar2 = pbVar4 + 1,\n                  *(char *)(iVar5 + (uint)pbVar4[1]) == *(char *)(iVar5 + (uint)*pbVar1)));\n          cVar7 = *(char *)(iVar5 + (uint)pbVar4[1]);\n          cVar10 = *(char *)(iVar5 + (uint)pbVar11[1]);\n        }\n        if (cVar7 == cVar10) {\nLAB_0014f47a:\n          uVar12 = 0;\n          goto LAB_0014f47c;\n        }\n      }\nLAB_0014f4c0:\n    }\n    iVar5 = FUN_00067fc0();\n    if ((iVar5 == 0) && (puVar6 = (undefined4 *)FUN_00055780(), puVar6 != (undefined4 *)0x0)) {\n      *puVar6 = 0;\n      puVar6[8] = 0;\n      puVar13 = (undefined4 *)((uint)(puVar6 + 1) & 0xfffffffc);\n      for (uVar8 = (uint)((int)puVar6 + (0x24 - (int)((uint)(puVar6 + 1) & 0xfffffffc))) >> 2;\n          uVar8 != 0; uVar8 = uVar8 - 1) {\n        *puVar13 = 0;\n        puVar13 = puVar13 + (uint)bVar14 * -2 + 1;\n      }\n      puVar6[1] = puVar6 + 9;\n      memcpy(puVar6 + 9,param_2,(sVar3 & 0x3fffffff) + 1);\n      uVar12 = 0;\n      puVar13 = (undefined4 *)param_1[10];\n      if ((undefined4 *)param_1[10] == (undefined4 *)0x0) {\n        param_1[10] = (int)puVar6;\n      }\n      else {\n        do {\n          puVar9 = puVar13;\n          puVar13 = (undefined4 *)*puVar9;\n        } while (puVar13 != (undefined4 *)0x0);\n        *puVar9 = puVar6;\n      }\n    }\n    else {\n      uVar12 = 7;\n    }\n  }\nLAB_0014f47c:\n  if (*(int *)(*param_1 + 0xc) != 0) {\n    (**(code **)(unaff_EDI + 0x6c0bd))(*(int *)(*param_1 + 0xc));\n  }\n  return uVar12;\n}" { (expression_statement "sVar3 = strlen((char *)param_2);" (assignment_expression "sVar3 = strlen((char *)param_2)" identifier = (call_expression "strlen((char *)param_2)" identifier (argument_list "((char *)param_2)" ( (cast_expression "(char *)param_2" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) )))) ;) (for_statement "for (puVar6 = (undefined4 *)param_1[10]; puVar6 != (undefined4 *)0x0;\n        puVar6 = (undefined4 *)*puVar6) {\n      pbVar2 = (byte *)puVar6[1];\n      if (pbVar2 != (byte *)0x0) {\n        iVar5 = unaff_EDI + 0x1a459;\n        cVar7 = *(char *)(unaff_EDI + 0x1a459 + (uint)*pbVar2);\n        cVar10 = *(char *)(unaff_EDI + 0x1a459 + (uint)*param_2);\n        if (*pbVar2 != 0) {\n          pbVar1 = param_2;\n          local_30 = sVar3 & 0x3fffffff;\n          if (cVar7 != cVar10) goto LAB_0014f4c0;\n          do {\n            pbVar11 = pbVar1;\n            pbVar4 = pbVar2;\n            local_30 = local_30 - 1;\n            pbVar1 = pbVar11 + 1;\n            if (local_30 == 0xffffffff) goto LAB_0014f47a;\n          } while ((pbVar4[1] != 0) &&\n                  (pbVar2 = pbVar4 + 1,\n                  *(char *)(iVar5 + (uint)pbVar4[1]) == *(char *)(iVar5 + (uint)*pbVar1)));\n          cVar7 = *(char *)(iVar5 + (uint)pbVar4[1]);\n          cVar10 = *(char *)(iVar5 + (uint)pbVar11[1]);\n        }\n        if (cVar7 == cVar10) {\nLAB_0014f47a:\n          uVar12 = 0;\n          goto LAB_0014f47c;\n        }\n      }\nLAB_0014f4c0:\n    }\n    iVar5 = FUN_00067fc0();\n    if ((iVar5 == 0) && (puVar6 = (undefined4 *)FUN_00055780(), puVar6 != (undefined4 *)0x0)) {\n      *puVar6 = 0;\n      puVar6[8] = 0;\n      puVar13 = (undefined4 *)((uint)(puVar6 + 1) & 0xfffffffc);\n      for (uVar8 = (uint)((int)puVar6 + (0x24 - (int)((uint)(puVar6 + 1) & 0xfffffffc))) >> 2;\n          uVar8 != 0; uVar8 = uVar8 - 1) {\n        *puVar13 = 0;\n        puVar13 = puVar13 + (uint)bVar14 * -2 + 1;\n      }\n      puVar6[1] = puVar6 + 9;\n      memcpy(puVar6 + 9,param_2,(sVar3 & 0x3fffffff) + 1);\n      uVar12 = 0;\n      puVar13 = (undefined4 *)param_1[10];\n      if ((undefined4 *)param_1[10] == (undefined4 *)0x0) {\n        param_1[10] = (int)puVar6;\n      }\n      else {\n        do {\n          puVar9 = puVar13;\n          puVar13 = (undefined4 *)*puVar9;\n        } while (puVar13 != (undefined4 *)0x0);\n        *puVar9 = puVar6;\n      }\n    }\n    else {\n      uVar12 = 7;\n    }\n  }" for ( (assignment_expression "puVar6 = (undefined4 *)param_1[10]" identifier = (cast_expression "(undefined4 *)param_1[10]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[10]" identifier [ number_literal ]))) ; (binary_expression "puVar6 != (undefined4 *)0x0" identifier != (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ; (assignment_expression "puVar6 = (undefined4 *)*puVar6" identifier = (cast_expression "(undefined4 *)*puVar6" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar6" * identifier))) ) (compound_statement "{\n      pbVar2 = (byte *)puVar6[1];\n      if (pbVar2 != (byte *)0x0) {\n        iVar5 = unaff_EDI + 0x1a459;\n        cVar7 = *(char *)(unaff_EDI + 0x1a459 + (uint)*pbVar2);\n        cVar10 = *(char *)(unaff_EDI + 0x1a459 + (uint)*param_2);\n        if (*pbVar2 != 0) {\n          pbVar1 = param_2;\n          local_30 = sVar3 & 0x3fffffff;\n          if (cVar7 != cVar10) goto LAB_0014f4c0;\n          do {\n            pbVar11 = pbVar1;\n            pbVar4 = pbVar2;\n            local_30 = local_30 - 1;\n            pbVar1 = pbVar11 + 1;\n            if (local_30 == 0xffffffff) goto LAB_0014f47a;\n          } while ((pbVar4[1] != 0) &&\n                  (pbVar2 = pbVar4 + 1,\n                  *(char *)(iVar5 + (uint)pbVar4[1]) == *(char *)(iVar5 + (uint)*pbVar1)));\n          cVar7 = *(char *)(iVar5 + (uint)pbVar4[1]);\n          cVar10 = *(char *)(iVar5 + (uint)pbVar11[1]);\n        }\n        if (cVar7 == cVar10) {\nLAB_0014f47a:\n          uVar12 = 0;\n          goto LAB_0014f47c;\n        }\n      }\nLAB_0014f4c0:\n    }\n    iVar5 = FUN_00067fc0();\n    if ((iVar5 == 0) && (puVar6 = (undefined4 *)FUN_00055780(), puVar6 != (undefined4 *)0x0)) {\n      *puVar6 = 0;\n      puVar6[8] = 0;\n      puVar13 = (undefined4 *)((uint)(puVar6 + 1) & 0xfffffffc);\n      for (uVar8 = (uint)((int)puVar6 + (0x24 - (int)((uint)(puVar6 + 1) & 0xfffffffc))) >> 2;\n          uVar8 != 0; uVar8 = uVar8 - 1) {\n        *puVar13 = 0;\n        puVar13 = puVar13 + (uint)bVar14 * -2 + 1;\n      }\n      puVar6[1] = puVar6 + 9;\n      memcpy(puVar6 + 9,param_2,(sVar3 & 0x3fffffff) + 1);\n      uVar12 = 0;\n      puVar13 = (undefined4 *)param_1[10];\n      if ((undefined4 *)param_1[10] == (undefined4 *)0x0) {\n        param_1[10] = (int)puVar6;\n      }\n      else {\n        do {\n          puVar9 = puVar13;\n          puVar13 = (undefined4 *)*puVar9;\n        } while (puVar13 != (undefined4 *)0x0);\n        *puVar9 = puVar6;\n      }\n    }\n    else {\n      uVar12 = 7;\n    }\n  }" { (expression_statement "pbVar2 = (byte *)puVar6[1];" (assignment_expression "pbVar2 = (byte *)puVar6[1]" identifier = (cast_expression "(byte *)puVar6[1]" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar6[1]" identifier [ number_literal ]))) ;) (if_statement "if (pbVar2 != (byte *)0x0) {\n        iVar5 = unaff_EDI + 0x1a459;\n        cVar7 = *(char *)(unaff_EDI + 0x1a459 + (uint)*pbVar2);\n        cVar10 = *(char *)(unaff_EDI + 0x1a459 + (uint)*param_2);\n        if (*pbVar2 != 0) {\n          pbVar1 = param_2;\n          local_30 = sVar3 & 0x3fffffff;\n          if (cVar7 != cVar10) goto LAB_0014f4c0;\n          do {\n            pbVar11 = pbVar1;\n            pbVar4 = pbVar2;\n            local_30 = local_30 - 1;\n            pbVar1 = pbVar11 + 1;\n            if (local_30 == 0xffffffff) goto LAB_0014f47a;\n          } while ((pbVar4[1] != 0) &&\n                  (pbVar2 = pbVar4 + 1,\n                  *(char *)(iVar5 + (uint)pbVar4[1]) == *(char *)(iVar5 + (uint)*pbVar1)));\n          cVar7 = *(char *)(iVar5 + (uint)pbVar4[1]);\n          cVar10 = *(char *)(iVar5 + (uint)pbVar11[1]);\n        }\n        if (cVar7 == cVar10) {\nLAB_0014f47a:\n          uVar12 = 0;\n          goto LAB_0014f47c;\n        }\n      }" if (parenthesized_expression "(pbVar2 != (byte *)0x0)" ( (binary_expression "pbVar2 != (byte *)0x0" identifier != (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        iVar5 = unaff_EDI + 0x1a459;\n        cVar7 = *(char *)(unaff_EDI + 0x1a459 + (uint)*pbVar2);\n        cVar10 = *(char *)(unaff_EDI + 0x1a459 + (uint)*param_2);\n        if (*pbVar2 != 0) {\n          pbVar1 = param_2;\n          local_30 = sVar3 & 0x3fffffff;\n          if (cVar7 != cVar10) goto LAB_0014f4c0;\n          do {\n            pbVar11 = pbVar1;\n            pbVar4 = pbVar2;\n            local_30 = local_30 - 1;\n            pbVar1 = pbVar11 + 1;\n            if (local_30 == 0xffffffff) goto LAB_0014f47a;\n          } while ((pbVar4[1] != 0) &&\n                  (pbVar2 = pbVar4 + 1,\n                  *(char *)(iVar5 + (uint)pbVar4[1]) == *(char *)(iVar5 + (uint)*pbVar1)));\n          cVar7 = *(char *)(iVar5 + (uint)pbVar4[1]);\n          cVar10 = *(char *)(iVar5 + (uint)pbVar11[1]);\n        }\n        if (cVar7 == cVar10) {\nLAB_0014f47a:\n          uVar12 = 0;\n          goto LAB_0014f47c;\n        }\n      }" { (expression_statement "iVar5 = unaff_EDI + 0x1a459;" (assignment_expression "iVar5 = unaff_EDI + 0x1a459" identifier = (binary_expression "unaff_EDI + 0x1a459" identifier + number_literal)) ;) (expression_statement "cVar7 = *(char *)(unaff_EDI + 0x1a459 + (uint)*pbVar2);" (assignment_expression "cVar7 = *(char *)(unaff_EDI + 0x1a459 + (uint)*pbVar2)" identifier = (pointer_expression "*(char *)(unaff_EDI + 0x1a459 + (uint)*pbVar2)" * (cast_expression "(char *)(unaff_EDI + 0x1a459 + (uint)*pbVar2)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x1a459 + (uint)*pbVar2)" ( (binary_expression "unaff_EDI + 0x1a459 + (uint)*pbVar2" (binary_expression "unaff_EDI + 0x1a459" identifier + number_literal) + (binary_expression "(uint)*pbVar2" (parenthesized_expression "(uint)" ( identifier )) * identifier)) ))))) ;) (expression_statement "cVar10 = *(char *)(unaff_EDI + 0x1a459 + (uint)*param_2);" (assignment_expression "cVar10 = *(char *)(unaff_EDI + 0x1a459 + (uint)*param_2)" identifier = (pointer_expression "*(char *)(unaff_EDI + 0x1a459 + (uint)*param_2)" * (cast_expression "(char *)(unaff_EDI + 0x1a459 + (uint)*param_2)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x1a459 + (uint)*param_2)" ( (binary_expression "unaff_EDI + 0x1a459 + (uint)*param_2" (binary_expression "unaff_EDI + 0x1a459" identifier + number_literal) + (binary_expression "(uint)*param_2" (parenthesized_expression "(uint)" ( identifier )) * identifier)) ))))) ;) (if_statement "if (*pbVar2 != 0) {\n          pbVar1 = param_2;\n          local_30 = sVar3 & 0x3fffffff;\n          if (cVar7 != cVar10) goto LAB_0014f4c0;\n          do {\n            pbVar11 = pbVar1;\n            pbVar4 = pbVar2;\n            local_30 = local_30 - 1;\n            pbVar1 = pbVar11 + 1;\n            if (local_30 == 0xffffffff) goto LAB_0014f47a;\n          } while ((pbVar4[1] != 0) &&\n                  (pbVar2 = pbVar4 + 1,\n                  *(char *)(iVar5 + (uint)pbVar4[1]) == *(char *)(iVar5 + (uint)*pbVar1)));\n          cVar7 = *(char *)(iVar5 + (uint)pbVar4[1]);\n          cVar10 = *(char *)(iVar5 + (uint)pbVar11[1]);\n        }" if (parenthesized_expression "(*pbVar2 != 0)" ( (binary_expression "*pbVar2 != 0" (pointer_expression "*pbVar2" * identifier) != number_literal) )) (compound_statement "{\n          pbVar1 = param_2;\n          local_30 = sVar3 & 0x3fffffff;\n          if (cVar7 != cVar10) goto LAB_0014f4c0;\n          do {\n            pbVar11 = pbVar1;\n            pbVar4 = pbVar2;\n            local_30 = local_30 - 1;\n            pbVar1 = pbVar11 + 1;\n            if (local_30 == 0xffffffff) goto LAB_0014f47a;\n          } while ((pbVar4[1] != 0) &&\n                  (pbVar2 = pbVar4 + 1,\n                  *(char *)(iVar5 + (uint)pbVar4[1]) == *(char *)(iVar5 + (uint)*pbVar1)));\n          cVar7 = *(char *)(iVar5 + (uint)pbVar4[1]);\n          cVar10 = *(char *)(iVar5 + (uint)pbVar11[1]);\n        }" { (expression_statement "pbVar1 = param_2;" (assignment_expression "pbVar1 = param_2" identifier = identifier) ;) (expression_statement "local_30 = sVar3 & 0x3fffffff;" (assignment_expression "local_30 = sVar3 & 0x3fffffff" identifier = (binary_expression "sVar3 & 0x3fffffff" identifier & number_literal)) ;) (if_statement "if (cVar7 != cVar10) goto LAB_0014f4c0;" if (parenthesized_expression "(cVar7 != cVar10)" ( (binary_expression "cVar7 != cVar10" identifier != identifier) )) (goto_statement "goto LAB_0014f4c0;" goto statement_identifier ;)) (do_statement "do {\n            pbVar11 = pbVar1;\n            pbVar4 = pbVar2;\n            local_30 = local_30 - 1;\n            pbVar1 = pbVar11 + 1;\n            if (local_30 == 0xffffffff) goto LAB_0014f47a;\n          } while ((pbVar4[1] != 0) &&\n                  (pbVar2 = pbVar4 + 1,\n                  *(char *)(iVar5 + (uint)pbVar4[1]) == *(char *)(iVar5 + (uint)*pbVar1)));" do (compound_statement "{\n            pbVar11 = pbVar1;\n            pbVar4 = pbVar2;\n            local_30 = local_30 - 1;\n            pbVar1 = pbVar11 + 1;\n            if (local_30 == 0xffffffff) goto LAB_0014f47a;\n          }" { (expression_statement "pbVar11 = pbVar1;" (assignment_expression "pbVar11 = pbVar1" identifier = identifier) ;) (expression_statement "pbVar4 = pbVar2;" (assignment_expression "pbVar4 = pbVar2" identifier = identifier) ;) (expression_statement "local_30 = local_30 - 1;" (assignment_expression "local_30 = local_30 - 1" identifier = (binary_expression "local_30 - 1" identifier - number_literal)) ;) (expression_statement "pbVar1 = pbVar11 + 1;" (assignment_expression "pbVar1 = pbVar11 + 1" identifier = (binary_expression "pbVar11 + 1" identifier + number_literal)) ;) (if_statement "if (local_30 == 0xffffffff) goto LAB_0014f47a;" if (parenthesized_expression "(local_30 == 0xffffffff)" ( (binary_expression "local_30 == 0xffffffff" identifier == number_literal) )) (goto_statement "goto LAB_0014f47a;" goto statement_identifier ;)) }) while (parenthesized_expression "((pbVar4[1] != 0) &&\n                  (pbVar2 = pbVar4 + 1,\n                  *(char *)(iVar5 + (uint)pbVar4[1]) == *(char *)(iVar5 + (uint)*pbVar1)))" ( (binary_expression "(pbVar4[1] != 0) &&\n                  (pbVar2 = pbVar4 + 1,\n                  *(char *)(iVar5 + (uint)pbVar4[1]) == *(char *)(iVar5 + (uint)*pbVar1))" (parenthesized_expression "(pbVar4[1] != 0)" ( (binary_expression "pbVar4[1] != 0" (subscript_expression "pbVar4[1]" identifier [ number_literal ]) != number_literal) )) && (parenthesized_expression "(pbVar2 = pbVar4 + 1,\n                  *(char *)(iVar5 + (uint)pbVar4[1]) == *(char *)(iVar5 + (uint)*pbVar1))" ( (comma_expression "pbVar2 = pbVar4 + 1,\n                  *(char *)(iVar5 + (uint)pbVar4[1]) == *(char *)(iVar5 + (uint)*pbVar1)" (assignment_expression "pbVar2 = pbVar4 + 1" identifier = (binary_expression "pbVar4 + 1" identifier + number_literal)) , (binary_expression "*(char *)(iVar5 + (uint)pbVar4[1]) == *(char *)(iVar5 + (uint)*pbVar1)" (pointer_expression "*(char *)(iVar5 + (uint)pbVar4[1])" * (cast_expression "(char *)(iVar5 + (uint)pbVar4[1])" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + (uint)pbVar4[1])" ( (binary_expression "iVar5 + (uint)pbVar4[1]" identifier + (cast_expression "(uint)pbVar4[1]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "pbVar4[1]" identifier [ number_literal ]))) )))) == (pointer_expression "*(char *)(iVar5 + (uint)*pbVar1)" * (cast_expression "(char *)(iVar5 + (uint)*pbVar1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + (uint)*pbVar1)" ( (binary_expression "iVar5 + (uint)*pbVar1" identifier + (binary_expression "(uint)*pbVar1" (parenthesized_expression "(uint)" ( identifier )) * identifier)) )))))) ))) )) ;) (expression_statement "cVar7 = *(char *)(iVar5 + (uint)pbVar4[1]);" (assignment_expression "cVar7 = *(char *)(iVar5 + (uint)pbVar4[1])" identifier = (pointer_expression "*(char *)(iVar5 + (uint)pbVar4[1])" * (cast_expression "(char *)(iVar5 + (uint)pbVar4[1])" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + (uint)pbVar4[1])" ( (binary_expression "iVar5 + (uint)pbVar4[1]" identifier + (cast_expression "(uint)pbVar4[1]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "pbVar4[1]" identifier [ number_literal ]))) ))))) ;) (expression_statement "cVar10 = *(char *)(iVar5 + (uint)pbVar11[1]);" (assignment_expression "cVar10 = *(char *)(iVar5 + (uint)pbVar11[1])" identifier = (pointer_expression "*(char *)(iVar5 + (uint)pbVar11[1])" * (cast_expression "(char *)(iVar5 + (uint)pbVar11[1])" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + (uint)pbVar11[1])" ( (binary_expression "iVar5 + (uint)pbVar11[1]" identifier + (cast_expression "(uint)pbVar11[1]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "pbVar11[1]" identifier [ number_literal ]))) ))))) ;) })) (if_statement "if (cVar7 == cVar10) {\nLAB_0014f47a:\n          uVar12 = 0;\n          goto LAB_0014f47c;\n        }" if (parenthesized_expression "(cVar7 == cVar10)" ( (binary_expression "cVar7 == cVar10" identifier == identifier) )) (compound_statement "{\nLAB_0014f47a:\n          uVar12 = 0;\n          goto LAB_0014f47c;\n        }" { (labeled_statement "LAB_0014f47a:\n          uVar12 = 0;" statement_identifier : (expression_statement "uVar12 = 0;" (assignment_expression "uVar12 = 0" identifier = number_literal) ;)) (goto_statement "goto LAB_0014f47c;" goto statement_identifier ;) })) })) (labeled_statement "LAB_0014f4c0:\n    }\n    iVar5 = FUN_00067fc0();" statement_identifier : (ERROR "}" }) (expression_statement "iVar5 = FUN_00067fc0();" (assignment_expression "iVar5 = FUN_00067fc0()" identifier = (call_expression "FUN_00067fc0()" identifier (argument_list "()" ( )))) ;)) (if_statement "if ((iVar5 == 0) && (puVar6 = (undefined4 *)FUN_00055780(), puVar6 != (undefined4 *)0x0)) {\n      *puVar6 = 0;\n      puVar6[8] = 0;\n      puVar13 = (undefined4 *)((uint)(puVar6 + 1) & 0xfffffffc);\n      for (uVar8 = (uint)((int)puVar6 + (0x24 - (int)((uint)(puVar6 + 1) & 0xfffffffc))) >> 2;\n          uVar8 != 0; uVar8 = uVar8 - 1) {\n        *puVar13 = 0;\n        puVar13 = puVar13 + (uint)bVar14 * -2 + 1;\n      }\n      puVar6[1] = puVar6 + 9;\n      memcpy(puVar6 + 9,param_2,(sVar3 & 0x3fffffff) + 1);\n      uVar12 = 0;\n      puVar13 = (undefined4 *)param_1[10];\n      if ((undefined4 *)param_1[10] == (undefined4 *)0x0) {\n        param_1[10] = (int)puVar6;\n      }\n      else {\n        do {\n          puVar9 = puVar13;\n          puVar13 = (undefined4 *)*puVar9;\n        } while (puVar13 != (undefined4 *)0x0);\n        *puVar9 = puVar6;\n      }\n    }\n    else {\n      uVar12 = 7;\n    }" if (parenthesized_expression "((iVar5 == 0) && (puVar6 = (undefined4 *)FUN_00055780(), puVar6 != (undefined4 *)0x0))" ( (binary_expression "(iVar5 == 0) && (puVar6 = (undefined4 *)FUN_00055780(), puVar6 != (undefined4 *)0x0)" (parenthesized_expression "(iVar5 == 0)" ( (binary_expression "iVar5 == 0" identifier == number_literal) )) && (parenthesized_expression "(puVar6 = (undefined4 *)FUN_00055780(), puVar6 != (undefined4 *)0x0)" ( (comma_expression "puVar6 = (undefined4 *)FUN_00055780(), puVar6 != (undefined4 *)0x0" (assignment_expression "puVar6 = (undefined4 *)FUN_00055780()" identifier = (cast_expression "(undefined4 *)FUN_00055780()" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00055780()" identifier (argument_list "()" ( ))))) , (binary_expression "puVar6 != (undefined4 *)0x0" identifier != (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) ))) )) (compound_statement "{\n      *puVar6 = 0;\n      puVar6[8] = 0;\n      puVar13 = (undefined4 *)((uint)(puVar6 + 1) & 0xfffffffc);\n      for (uVar8 = (uint)((int)puVar6 + (0x24 - (int)((uint)(puVar6 + 1) & 0xfffffffc))) >> 2;\n          uVar8 != 0; uVar8 = uVar8 - 1) {\n        *puVar13 = 0;\n        puVar13 = puVar13 + (uint)bVar14 * -2 + 1;\n      }\n      puVar6[1] = puVar6 + 9;\n      memcpy(puVar6 + 9,param_2,(sVar3 & 0x3fffffff) + 1);\n      uVar12 = 0;\n      puVar13 = (undefined4 *)param_1[10];\n      if ((undefined4 *)param_1[10] == (undefined4 *)0x0) {\n        param_1[10] = (int)puVar6;\n      }\n      else {\n        do {\n          puVar9 = puVar13;\n          puVar13 = (undefined4 *)*puVar9;\n        } while (puVar13 != (undefined4 *)0x0);\n        *puVar9 = puVar6;\n      }\n    }" { (expression_statement "*puVar6 = 0;" (assignment_expression "*puVar6 = 0" (pointer_expression "*puVar6" * identifier) = number_literal) ;) (expression_statement "puVar6[8] = 0;" (assignment_expression "puVar6[8] = 0" (subscript_expression "puVar6[8]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar13 = (undefined4 *)((uint)(puVar6 + 1) & 0xfffffffc);" (assignment_expression "puVar13 = (undefined4 *)((uint)(puVar6 + 1) & 0xfffffffc)" identifier = (cast_expression "(undefined4 *)((uint)(puVar6 + 1) & 0xfffffffc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((uint)(puVar6 + 1) & 0xfffffffc)" ( (binary_expression "(uint)(puVar6 + 1) & 0xfffffffc" (call_expression "(uint)(puVar6 + 1)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(puVar6 + 1)" ( (binary_expression "puVar6 + 1" identifier + number_literal) ))) & number_literal) )))) ;) (for_statement "for (uVar8 = (uint)((int)puVar6 + (0x24 - (int)((uint)(puVar6 + 1) & 0xfffffffc))) >> 2;\n          uVar8 != 0; uVar8 = uVar8 - 1) {\n        *puVar13 = 0;\n        puVar13 = puVar13 + (uint)bVar14 * -2 + 1;\n      }" for ( (assignment_expression "uVar8 = (uint)((int)puVar6 + (0x24 - (int)((uint)(puVar6 + 1) & 0xfffffffc))) >> 2" identifier = (binary_expression "(uint)((int)puVar6 + (0x24 - (int)((uint)(puVar6 + 1) & 0xfffffffc))) >> 2" (call_expression "(uint)((int)puVar6 + (0x24 - (int)((uint)(puVar6 + 1) & 0xfffffffc)))" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((int)puVar6 + (0x24 - (int)((uint)(puVar6 + 1) & 0xfffffffc)))" ( (binary_expression "(int)puVar6 + (0x24 - (int)((uint)(puVar6 + 1) & 0xfffffffc))" (cast_expression "(int)puVar6" ( (type_descriptor "int" primitive_type) ) identifier) + (parenthesized_expression "(0x24 - (int)((uint)(puVar6 + 1) & 0xfffffffc))" ( (binary_expression "0x24 - (int)((uint)(puVar6 + 1) & 0xfffffffc)" number_literal - (cast_expression "(int)((uint)(puVar6 + 1) & 0xfffffffc)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((uint)(puVar6 + 1) & 0xfffffffc)" ( (binary_expression "(uint)(puVar6 + 1) & 0xfffffffc" (call_expression "(uint)(puVar6 + 1)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(puVar6 + 1)" ( (binary_expression "puVar6 + 1" identifier + number_literal) ))) & number_literal) )))) ))) ))) >> number_literal)) ; (binary_expression "uVar8 != 0" identifier != number_literal) ; (assignment_expression "uVar8 = uVar8 - 1" identifier = (binary_expression "uVar8 - 1" identifier - number_literal)) ) (compound_statement "{\n        *puVar13 = 0;\n        puVar13 = puVar13 + (uint)bVar14 * -2 + 1;\n      }" { (expression_statement "*puVar13 = 0;" (assignment_expression "*puVar13 = 0" (pointer_expression "*puVar13" * identifier) = number_literal) ;) (expression_statement "puVar13 = puVar13 + (uint)bVar14 * -2 + 1;" (assignment_expression "puVar13 = puVar13 + (uint)bVar14 * -2 + 1" identifier = (binary_expression "puVar13 + (uint)bVar14 * -2 + 1" (binary_expression "puVar13 + (uint)bVar14 * -2" identifier + (binary_expression "(uint)bVar14 * -2" (cast_expression "(uint)bVar14" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) })) (expression_statement "puVar6[1] = puVar6 + 9;" (assignment_expression "puVar6[1] = puVar6 + 9" (subscript_expression "puVar6[1]" identifier [ number_literal ]) = (binary_expression "puVar6 + 9" identifier + number_literal)) ;) (expression_statement "memcpy(puVar6 + 9,param_2,(sVar3 & 0x3fffffff) + 1);" (call_expression "memcpy(puVar6 + 9,param_2,(sVar3 & 0x3fffffff) + 1)" identifier (argument_list "(puVar6 + 9,param_2,(sVar3 & 0x3fffffff) + 1)" ( (binary_expression "puVar6 + 9" identifier + number_literal) , identifier , (binary_expression "(sVar3 & 0x3fffffff) + 1" (parenthesized_expression "(sVar3 & 0x3fffffff)" ( (binary_expression "sVar3 & 0x3fffffff" identifier & number_literal) )) + number_literal) ))) ;) (expression_statement "uVar12 = 0;" (assignment_expression "uVar12 = 0" identifier = number_literal) ;) (expression_statement "puVar13 = (undefined4 *)param_1[10];" (assignment_expression "puVar13 = (undefined4 *)param_1[10]" identifier = (cast_expression "(undefined4 *)param_1[10]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[10]" identifier [ number_literal ]))) ;) (if_statement "if ((undefined4 *)param_1[10] == (undefined4 *)0x0) {\n        param_1[10] = (int)puVar6;\n      }\n      else {\n        do {\n          puVar9 = puVar13;\n          puVar13 = (undefined4 *)*puVar9;\n        } while (puVar13 != (undefined4 *)0x0);\n        *puVar9 = puVar6;\n      }" if (parenthesized_expression "((undefined4 *)param_1[10] == (undefined4 *)0x0)" ( (binary_expression "(undefined4 *)param_1[10] == (undefined4 *)0x0" (cast_expression "(undefined4 *)param_1[10]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[10]" identifier [ number_literal ])) == (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        param_1[10] = (int)puVar6;\n      }" { (expression_statement "param_1[10] = (int)puVar6;" (assignment_expression "param_1[10] = (int)puVar6" (subscript_expression "param_1[10]" identifier [ number_literal ]) = (cast_expression "(int)puVar6" ( (type_descriptor "int" primitive_type) ) identifier)) ;) }) (else_clause "else {\n        do {\n          puVar9 = puVar13;\n          puVar13 = (undefined4 *)*puVar9;\n        } while (puVar13 != (undefined4 *)0x0);\n        *puVar9 = puVar6;\n      }" else (compound_statement "{\n        do {\n          puVar9 = puVar13;\n          puVar13 = (undefined4 *)*puVar9;\n        } while (puVar13 != (undefined4 *)0x0);\n        *puVar9 = puVar6;\n      }" { (do_statement "do {\n          puVar9 = puVar13;\n          puVar13 = (undefined4 *)*puVar9;\n        } while (puVar13 != (undefined4 *)0x0);" do (compound_statement "{\n          puVar9 = puVar13;\n          puVar13 = (undefined4 *)*puVar9;\n        }" { (expression_statement "puVar9 = puVar13;" (assignment_expression "puVar9 = puVar13" identifier = identifier) ;) (expression_statement "puVar13 = (undefined4 *)*puVar9;" (assignment_expression "puVar13 = (undefined4 *)*puVar9" identifier = (cast_expression "(undefined4 *)*puVar9" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar9" * identifier))) ;) }) while (parenthesized_expression "(puVar13 != (undefined4 *)0x0)" ( (binary_expression "puVar13 != (undefined4 *)0x0" identifier != (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) ;) (expression_statement "*puVar9 = puVar6;" (assignment_expression "*puVar9 = puVar6" (pointer_expression "*puVar9" * identifier) = identifier) ;) }))) }) (else_clause "else {\n      uVar12 = 7;\n    }" else (compound_statement "{\n      uVar12 = 7;\n    }" { (expression_statement "uVar12 = 7;" (assignment_expression "uVar12 = 7" identifier = number_literal) ;) }))) })) (labeled_statement "LAB_0014f47c:\n  if (*(int *)(*param_1 + 0xc) != 0) {\n    (**(code **)(unaff_EDI + 0x6c0bd))(*(int *)(*param_1 + 0xc));\n  }" statement_identifier : (if_statement "if (*(int *)(*param_1 + 0xc) != 0) {\n    (**(code **)(unaff_EDI + 0x6c0bd))(*(int *)(*param_1 + 0xc));\n  }" if (parenthesized_expression "(*(int *)(*param_1 + 0xc) != 0)" ( (binary_expression "*(int *)(*param_1 + 0xc) != 0" (pointer_expression "*(int *)(*param_1 + 0xc)" * (cast_expression "(int *)(*param_1 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*param_1 + 0xc)" ( (binary_expression "*param_1 + 0xc" (pointer_expression "*param_1" * identifier) + number_literal) )))) != number_literal) )) (compound_statement "{\n    (**(code **)(unaff_EDI + 0x6c0bd))(*(int *)(*param_1 + 0xc));\n  }" { (expression_statement "(**(code **)(unaff_EDI + 0x6c0bd))(*(int *)(*param_1 + 0xc));" (call_expression "(**(code **)(unaff_EDI + 0x6c0bd))(*(int *)(*param_1 + 0xc))" (parenthesized_expression "(**(code **)(unaff_EDI + 0x6c0bd))" ( (pointer_expression "**(code **)(unaff_EDI + 0x6c0bd)" * (pointer_expression "*(code **)(unaff_EDI + 0x6c0bd)" * (cast_expression "(code **)(unaff_EDI + 0x6c0bd)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(unaff_EDI + 0x6c0bd)" ( (binary_expression "unaff_EDI + 0x6c0bd" identifier + number_literal) ))))) )) (argument_list "(*(int *)(*param_1 + 0xc))" ( (pointer_expression "*(int *)(*param_1 + 0xc)" * (cast_expression "(int *)(*param_1 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*param_1 + 0xc)" ( (binary_expression "*param_1 + 0xc" (pointer_expression "*param_1" * identifier) + number_literal) )))) ))) ;) }))) (return_statement "return uVar12;" return identifier ;) }))) })))
(translation_unit "int sqlite3session_attach(sqlite3_session *pSession,char *zName)\n\n{\n  byte *pbVar1;\n  sqlite3_mutex *psVar2;\n  byte *pbVar3;\n  SessionTable *pSVar4;\n  size_t sVar5;\n  byte *pbVar6;\n  SessionTable *pSVar7;\n  char cVar8;\n  uint uVar9;\n  SessionTable *pSVar10;\n  char cVar11;\n  byte *pbVar12;\n  int iVar13;\n  int unaff_EDI;\n  undefined4 *puVar14;\n  byte bVar15;\n  u64 in_stack_ffffffc4;\n  uint local_30;\n  \n  bVar15 = 0;\n  __x86_get_pc_thunk_di();\n  psVar2 = pSession->db->mutex;\n  if (psVar2 != (sqlite3_mutex *)0x0) {\n    (**(code **)(unaff_EDI + 0x6c0b5))(psVar2);\n  }\n  if (zName == (char *)0x0) {\n    iVar13 = 0;\n    pSession->bAutoAttach = 1;\n  }\n  else {\n    sVar5 = strlen(zName);\n    for (pSVar7 = pSession->pTable; pSVar7 != (SessionTable *)0x0; pSVar7 = pSVar7->pNext) {\n      pbVar3 = (byte *)pSVar7->zName;\n      if (pbVar3 != (byte *)0x0) {\n        iVar13 = unaff_EDI + 0x1a459;\n        cVar8 = *(char *)(unaff_EDI + 0x1a459 + (uint)*pbVar3);\n        cVar11 = *(char *)(unaff_EDI + 0x1a459 + (uint)(byte)*zName);\n        if (*pbVar3 != 0) {\n          pbVar1 = (byte *)zName;\n          local_30 = sVar5 & 0x3fffffff;\n          if (cVar8 != cVar11) goto LAB_0014f4c0;\n          do {\n            pbVar12 = pbVar1;\n            pbVar6 = pbVar3;\n            local_30 = local_30 - 1;\n            pbVar1 = pbVar12 + 1;\n            if (local_30 == 0xffffffff) goto LAB_0014f47a;\n          } while ((pbVar6[1] != 0) &&\n                  (pbVar3 = pbVar6 + 1,\n                  *(char *)(iVar13 + (uint)pbVar6[1]) == *(char *)(iVar13 + (uint)*pbVar1)));\n          cVar8 = *(char *)(iVar13 + (uint)pbVar6[1]);\n          cVar11 = *(char *)(iVar13 + (uint)pbVar12[1]);\n        }\n        if (cVar8 == cVar11) {\nLAB_0014f47a:\n          iVar13 = 0;\n          goto LAB_0014f47c;\n        }\n      }\nLAB_0014f4c0:\n    }\n    iVar13 = sqlite3_initialize();\n    if ((iVar13 == 0) &&\n       (pSVar7 = (SessionTable *)sqlite3Malloc(in_stack_ffffffc4), pSVar7 != (SessionTable *)0x0)) {\n      pSVar7->pNext = (SessionTable *)0x0;\n      puVar14 = (undefined4 *)((uint)&pSVar7->zName & 0xfffffffc);\n      pSVar7->apChange = (SessionChange **)0x0;\n      uVar9 = (uint)((int)pSVar7 + (0x24 - (int)puVar14)) >> 2;\n      for (; uVar9 != 0; uVar9 = uVar9 - 1) {\n        *puVar14 = 0;\n        puVar14 = puVar14 + (uint)bVar15 * -2 + 1;\n      }\n      pSVar7->zName = (char *)(pSVar7 + 1);\n      memcpy(pSVar7 + 1,zName,(sVar5 & 0x3fffffff) + 1);\n      iVar13 = 0;\n      pSVar4 = pSession->pTable;\n      if (pSession->pTable == (SessionTable *)0x0) {\n        pSession->pTable = pSVar7;\n      }\n      else {\n        do {\n          pSVar10 = pSVar4;\n          pSVar4 = pSVar10->pNext;\n        } while (pSVar4 != (SessionTable *)0x0);\n        pSVar10->pNext = pSVar7;\n      }\n    }\n    else {\n      iVar13 = 7;\n    }\n  }\nLAB_0014f47c:\n  psVar2 = pSession->db->mutex;\n  if (psVar2 != (sqlite3_mutex *)0x0) {\n    (**(code **)(unaff_EDI + 0x6c0bd))(psVar2);\n  }\n  return iVar13;\n}\n\n" (function_definition "int sqlite3session_attach(sqlite3_session *pSession,char *zName)\n\n{\n  byte *pbVar1;\n  sqlite3_mutex *psVar2;\n  byte *pbVar3;\n  SessionTable *pSVar4;\n  size_t sVar5;\n  byte *pbVar6;\n  SessionTable *pSVar7;\n  char cVar8;\n  uint uVar9;\n  SessionTable *pSVar10;\n  char cVar11;\n  byte *pbVar12;\n  int iVar13;\n  int unaff_EDI;\n  undefined4 *puVar14;\n  byte bVar15;\n  u64 in_stack_ffffffc4;\n  uint local_30;\n  \n  bVar15 = 0;\n  __x86_get_pc_thunk_di();\n  psVar2 = pSession->db->mutex;\n  if (psVar2 != (sqlite3_mutex *)0x0) {\n    (**(code **)(unaff_EDI + 0x6c0b5))(psVar2);\n  }\n  if (zName == (char *)0x0) {\n    iVar13 = 0;\n    pSession->bAutoAttach = 1;\n  }\n  else {\n    sVar5 = strlen(zName);\n    for (pSVar7 = pSession->pTable; pSVar7 != (SessionTable *)0x0; pSVar7 = pSVar7->pNext) {\n      pbVar3 = (byte *)pSVar7->zName;\n      if (pbVar3 != (byte *)0x0) {\n        iVar13 = unaff_EDI + 0x1a459;\n        cVar8 = *(char *)(unaff_EDI + 0x1a459 + (uint)*pbVar3);\n        cVar11 = *(char *)(unaff_EDI + 0x1a459 + (uint)(byte)*zName);\n        if (*pbVar3 != 0) {\n          pbVar1 = (byte *)zName;\n          local_30 = sVar5 & 0x3fffffff;\n          if (cVar8 != cVar11) goto LAB_0014f4c0;\n          do {\n            pbVar12 = pbVar1;\n            pbVar6 = pbVar3;\n            local_30 = local_30 - 1;\n            pbVar1 = pbVar12 + 1;\n            if (local_30 == 0xffffffff) goto LAB_0014f47a;\n          } while ((pbVar6[1] != 0) &&\n                  (pbVar3 = pbVar6 + 1,\n                  *(char *)(iVar13 + (uint)pbVar6[1]) == *(char *)(iVar13 + (uint)*pbVar1)));\n          cVar8 = *(char *)(iVar13 + (uint)pbVar6[1]);\n          cVar11 = *(char *)(iVar13 + (uint)pbVar12[1]);\n        }\n        if (cVar8 == cVar11) {\nLAB_0014f47a:\n          iVar13 = 0;\n          goto LAB_0014f47c;\n        }\n      }\nLAB_0014f4c0:\n    }\n    iVar13 = sqlite3_initialize();\n    if ((iVar13 == 0) &&\n       (pSVar7 = (SessionTable *)sqlite3Malloc(in_stack_ffffffc4), pSVar7 != (SessionTable *)0x0)) {\n      pSVar7->pNext = (SessionTable *)0x0;\n      puVar14 = (undefined4 *)((uint)&pSVar7->zName & 0xfffffffc);\n      pSVar7->apChange = (SessionChange **)0x0;\n      uVar9 = (uint)((int)pSVar7 + (0x24 - (int)puVar14)) >> 2;\n      for (; uVar9 != 0; uVar9 = uVar9 - 1) {\n        *puVar14 = 0;\n        puVar14 = puVar14 + (uint)bVar15 * -2 + 1;\n      }\n      pSVar7->zName = (char *)(pSVar7 + 1);\n      memcpy(pSVar7 + 1,zName,(sVar5 & 0x3fffffff) + 1);\n      iVar13 = 0;\n      pSVar4 = pSession->pTable;\n      if (pSession->pTable == (SessionTable *)0x0) {\n        pSession->pTable = pSVar7;\n      }\n      else {\n        do {\n          pSVar10 = pSVar4;\n          pSVar4 = pSVar10->pNext;\n        } while (pSVar4 != (SessionTable *)0x0);\n        pSVar10->pNext = pSVar7;\n      }\n    }\n    else {\n      iVar13 = 7;\n    }\n  }\nLAB_0014f47c:\n  psVar2 = pSession->db->mutex;\n  if (psVar2 != (sqlite3_mutex *)0x0) {\n    (**(code **)(unaff_EDI + 0x6c0bd))(psVar2);\n  }\n  return iVar13;\n}" primitive_type (function_declarator "sqlite3session_attach(sqlite3_session *pSession,char *zName)" identifier (parameter_list "(sqlite3_session *pSession,char *zName)" ( (parameter_declaration "sqlite3_session *pSession" type_identifier (pointer_declarator "*pSession" * identifier)) , (parameter_declaration "char *zName" primitive_type (pointer_declarator "*zName" * identifier)) ))) (compound_statement "{\n  byte *pbVar1;\n  sqlite3_mutex *psVar2;\n  byte *pbVar3;\n  SessionTable *pSVar4;\n  size_t sVar5;\n  byte *pbVar6;\n  SessionTable *pSVar7;\n  char cVar8;\n  uint uVar9;\n  SessionTable *pSVar10;\n  char cVar11;\n  byte *pbVar12;\n  int iVar13;\n  int unaff_EDI;\n  undefined4 *puVar14;\n  byte bVar15;\n  u64 in_stack_ffffffc4;\n  uint local_30;\n  \n  bVar15 = 0;\n  __x86_get_pc_thunk_di();\n  psVar2 = pSession->db->mutex;\n  if (psVar2 != (sqlite3_mutex *)0x0) {\n    (**(code **)(unaff_EDI + 0x6c0b5))(psVar2);\n  }\n  if (zName == (char *)0x0) {\n    iVar13 = 0;\n    pSession->bAutoAttach = 1;\n  }\n  else {\n    sVar5 = strlen(zName);\n    for (pSVar7 = pSession->pTable; pSVar7 != (SessionTable *)0x0; pSVar7 = pSVar7->pNext) {\n      pbVar3 = (byte *)pSVar7->zName;\n      if (pbVar3 != (byte *)0x0) {\n        iVar13 = unaff_EDI + 0x1a459;\n        cVar8 = *(char *)(unaff_EDI + 0x1a459 + (uint)*pbVar3);\n        cVar11 = *(char *)(unaff_EDI + 0x1a459 + (uint)(byte)*zName);\n        if (*pbVar3 != 0) {\n          pbVar1 = (byte *)zName;\n          local_30 = sVar5 & 0x3fffffff;\n          if (cVar8 != cVar11) goto LAB_0014f4c0;\n          do {\n            pbVar12 = pbVar1;\n            pbVar6 = pbVar3;\n            local_30 = local_30 - 1;\n            pbVar1 = pbVar12 + 1;\n            if (local_30 == 0xffffffff) goto LAB_0014f47a;\n          } while ((pbVar6[1] != 0) &&\n                  (pbVar3 = pbVar6 + 1,\n                  *(char *)(iVar13 + (uint)pbVar6[1]) == *(char *)(iVar13 + (uint)*pbVar1)));\n          cVar8 = *(char *)(iVar13 + (uint)pbVar6[1]);\n          cVar11 = *(char *)(iVar13 + (uint)pbVar12[1]);\n        }\n        if (cVar8 == cVar11) {\nLAB_0014f47a:\n          iVar13 = 0;\n          goto LAB_0014f47c;\n        }\n      }\nLAB_0014f4c0:\n    }\n    iVar13 = sqlite3_initialize();\n    if ((iVar13 == 0) &&\n       (pSVar7 = (SessionTable *)sqlite3Malloc(in_stack_ffffffc4), pSVar7 != (SessionTable *)0x0)) {\n      pSVar7->pNext = (SessionTable *)0x0;\n      puVar14 = (undefined4 *)((uint)&pSVar7->zName & 0xfffffffc);\n      pSVar7->apChange = (SessionChange **)0x0;\n      uVar9 = (uint)((int)pSVar7 + (0x24 - (int)puVar14)) >> 2;\n      for (; uVar9 != 0; uVar9 = uVar9 - 1) {\n        *puVar14 = 0;\n        puVar14 = puVar14 + (uint)bVar15 * -2 + 1;\n      }\n      pSVar7->zName = (char *)(pSVar7 + 1);\n      memcpy(pSVar7 + 1,zName,(sVar5 & 0x3fffffff) + 1);\n      iVar13 = 0;\n      pSVar4 = pSession->pTable;\n      if (pSession->pTable == (SessionTable *)0x0) {\n        pSession->pTable = pSVar7;\n      }\n      else {\n        do {\n          pSVar10 = pSVar4;\n          pSVar4 = pSVar10->pNext;\n        } while (pSVar4 != (SessionTable *)0x0);\n        pSVar10->pNext = pSVar7;\n      }\n    }\n    else {\n      iVar13 = 7;\n    }\n  }\nLAB_0014f47c:\n  psVar2 = pSession->db->mutex;\n  if (psVar2 != (sqlite3_mutex *)0x0) {\n    (**(code **)(unaff_EDI + 0x6c0bd))(psVar2);\n  }\n  return iVar13;\n}" { (declaration "byte *pbVar1;" type_identifier (pointer_declarator "*pbVar1" * identifier) ;) (declaration "sqlite3_mutex *psVar2;" type_identifier (pointer_declarator "*psVar2" * identifier) ;) (declaration "byte *pbVar3;" type_identifier (pointer_declarator "*pbVar3" * identifier) ;) (declaration "SessionTable *pSVar4;" type_identifier (pointer_declarator "*pSVar4" * identifier) ;) (declaration "size_t sVar5;" primitive_type identifier ;) (declaration "byte *pbVar6;" type_identifier (pointer_declarator "*pbVar6" * identifier) ;) (declaration "SessionTable *pSVar7;" type_identifier (pointer_declarator "*pSVar7" * identifier) ;) (declaration "char cVar8;" primitive_type identifier ;) (declaration "uint uVar9;" type_identifier identifier ;) (declaration "SessionTable *pSVar10;" type_identifier (pointer_declarator "*pSVar10" * identifier) ;) (declaration "char cVar11;" primitive_type identifier ;) (declaration "byte *pbVar12;" type_identifier (pointer_declarator "*pbVar12" * identifier) ;) (declaration "int iVar13;" primitive_type identifier ;) (declaration "int unaff_EDI;" primitive_type identifier ;) (declaration "undefined4 *puVar14;" type_identifier (pointer_declarator "*puVar14" * identifier) ;) (declaration "byte bVar15;" type_identifier identifier ;) (declaration "u64 in_stack_ffffffc4;" type_identifier identifier ;) (declaration "uint local_30;" type_identifier identifier ;) (expression_statement "bVar15 = 0;" (assignment_expression "bVar15 = 0" identifier = number_literal) ;) (expression_statement "__x86_get_pc_thunk_di();" (call_expression "__x86_get_pc_thunk_di()" identifier (argument_list "()" ( ))) ;) (expression_statement "psVar2 = pSession->db->mutex;" (assignment_expression "psVar2 = pSession->db->mutex" identifier = (field_expression "pSession->db->mutex" (field_expression "pSession->db" identifier -> field_identifier) -> field_identifier)) ;) (if_statement "if (psVar2 != (sqlite3_mutex *)0x0) {\n    (**(code **)(unaff_EDI + 0x6c0b5))(psVar2);\n  }" if (parenthesized_expression "(psVar2 != (sqlite3_mutex *)0x0)" ( (binary_expression "psVar2 != (sqlite3_mutex *)0x0" identifier != (cast_expression "(sqlite3_mutex *)0x0" ( (type_descriptor "sqlite3_mutex *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    (**(code **)(unaff_EDI + 0x6c0b5))(psVar2);\n  }" { (expression_statement "(**(code **)(unaff_EDI + 0x6c0b5))(psVar2);" (call_expression "(**(code **)(unaff_EDI + 0x6c0b5))(psVar2)" (parenthesized_expression "(**(code **)(unaff_EDI + 0x6c0b5))" ( (pointer_expression "**(code **)(unaff_EDI + 0x6c0b5)" * (pointer_expression "*(code **)(unaff_EDI + 0x6c0b5)" * (cast_expression "(code **)(unaff_EDI + 0x6c0b5)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(unaff_EDI + 0x6c0b5)" ( (binary_expression "unaff_EDI + 0x6c0b5" identifier + number_literal) ))))) )) (argument_list "(psVar2)" ( identifier ))) ;) })) (if_statement "if (zName == (char *)0x0) {\n    iVar13 = 0;\n    pSession->bAutoAttach = 1;\n  }\n  else {\n    sVar5 = strlen(zName);\n    for (pSVar7 = pSession->pTable; pSVar7 != (SessionTable *)0x0; pSVar7 = pSVar7->pNext) {\n      pbVar3 = (byte *)pSVar7->zName;\n      if (pbVar3 != (byte *)0x0) {\n        iVar13 = unaff_EDI + 0x1a459;\n        cVar8 = *(char *)(unaff_EDI + 0x1a459 + (uint)*pbVar3);\n        cVar11 = *(char *)(unaff_EDI + 0x1a459 + (uint)(byte)*zName);\n        if (*pbVar3 != 0) {\n          pbVar1 = (byte *)zName;\n          local_30 = sVar5 & 0x3fffffff;\n          if (cVar8 != cVar11) goto LAB_0014f4c0;\n          do {\n            pbVar12 = pbVar1;\n            pbVar6 = pbVar3;\n            local_30 = local_30 - 1;\n            pbVar1 = pbVar12 + 1;\n            if (local_30 == 0xffffffff) goto LAB_0014f47a;\n          } while ((pbVar6[1] != 0) &&\n                  (pbVar3 = pbVar6 + 1,\n                  *(char *)(iVar13 + (uint)pbVar6[1]) == *(char *)(iVar13 + (uint)*pbVar1)));\n          cVar8 = *(char *)(iVar13 + (uint)pbVar6[1]);\n          cVar11 = *(char *)(iVar13 + (uint)pbVar12[1]);\n        }\n        if (cVar8 == cVar11) {\nLAB_0014f47a:\n          iVar13 = 0;\n          goto LAB_0014f47c;\n        }\n      }\nLAB_0014f4c0:\n    }\n    iVar13 = sqlite3_initialize();\n    if ((iVar13 == 0) &&\n       (pSVar7 = (SessionTable *)sqlite3Malloc(in_stack_ffffffc4), pSVar7 != (SessionTable *)0x0)) {\n      pSVar7->pNext = (SessionTable *)0x0;\n      puVar14 = (undefined4 *)((uint)&pSVar7->zName & 0xfffffffc);\n      pSVar7->apChange = (SessionChange **)0x0;\n      uVar9 = (uint)((int)pSVar7 + (0x24 - (int)puVar14)) >> 2;\n      for (; uVar9 != 0; uVar9 = uVar9 - 1) {\n        *puVar14 = 0;\n        puVar14 = puVar14 + (uint)bVar15 * -2 + 1;\n      }\n      pSVar7->zName = (char *)(pSVar7 + 1);\n      memcpy(pSVar7 + 1,zName,(sVar5 & 0x3fffffff) + 1);\n      iVar13 = 0;\n      pSVar4 = pSession->pTable;\n      if (pSession->pTable == (SessionTable *)0x0) {\n        pSession->pTable = pSVar7;\n      }\n      else {\n        do {\n          pSVar10 = pSVar4;\n          pSVar4 = pSVar10->pNext;\n        } while (pSVar4 != (SessionTable *)0x0);\n        pSVar10->pNext = pSVar7;\n      }\n    }\n    else {\n      iVar13 = 7;\n    }\n  }\nLAB_0014f47c:\n  psVar2 = pSession->db->mutex;\n  if (psVar2 != (sqlite3_mutex *)0x0) {\n    (**(code **)(unaff_EDI + 0x6c0bd))(psVar2);\n  }\n  return iVar13;\n}" if (parenthesized_expression "(zName == (char *)0x0)" ( (binary_expression "zName == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    iVar13 = 0;\n    pSession->bAutoAttach = 1;\n  }" { (expression_statement "iVar13 = 0;" (assignment_expression "iVar13 = 0" identifier = number_literal) ;) (expression_statement "pSession->bAutoAttach = 1;" (assignment_expression "pSession->bAutoAttach = 1" (field_expression "pSession->bAutoAttach" identifier -> field_identifier) = number_literal) ;) }) (else_clause "else {\n    sVar5 = strlen(zName);\n    for (pSVar7 = pSession->pTable; pSVar7 != (SessionTable *)0x0; pSVar7 = pSVar7->pNext) {\n      pbVar3 = (byte *)pSVar7->zName;\n      if (pbVar3 != (byte *)0x0) {\n        iVar13 = unaff_EDI + 0x1a459;\n        cVar8 = *(char *)(unaff_EDI + 0x1a459 + (uint)*pbVar3);\n        cVar11 = *(char *)(unaff_EDI + 0x1a459 + (uint)(byte)*zName);\n        if (*pbVar3 != 0) {\n          pbVar1 = (byte *)zName;\n          local_30 = sVar5 & 0x3fffffff;\n          if (cVar8 != cVar11) goto LAB_0014f4c0;\n          do {\n            pbVar12 = pbVar1;\n            pbVar6 = pbVar3;\n            local_30 = local_30 - 1;\n            pbVar1 = pbVar12 + 1;\n            if (local_30 == 0xffffffff) goto LAB_0014f47a;\n          } while ((pbVar6[1] != 0) &&\n                  (pbVar3 = pbVar6 + 1,\n                  *(char *)(iVar13 + (uint)pbVar6[1]) == *(char *)(iVar13 + (uint)*pbVar1)));\n          cVar8 = *(char *)(iVar13 + (uint)pbVar6[1]);\n          cVar11 = *(char *)(iVar13 + (uint)pbVar12[1]);\n        }\n        if (cVar8 == cVar11) {\nLAB_0014f47a:\n          iVar13 = 0;\n          goto LAB_0014f47c;\n        }\n      }\nLAB_0014f4c0:\n    }\n    iVar13 = sqlite3_initialize();\n    if ((iVar13 == 0) &&\n       (pSVar7 = (SessionTable *)sqlite3Malloc(in_stack_ffffffc4), pSVar7 != (SessionTable *)0x0)) {\n      pSVar7->pNext = (SessionTable *)0x0;\n      puVar14 = (undefined4 *)((uint)&pSVar7->zName & 0xfffffffc);\n      pSVar7->apChange = (SessionChange **)0x0;\n      uVar9 = (uint)((int)pSVar7 + (0x24 - (int)puVar14)) >> 2;\n      for (; uVar9 != 0; uVar9 = uVar9 - 1) {\n        *puVar14 = 0;\n        puVar14 = puVar14 + (uint)bVar15 * -2 + 1;\n      }\n      pSVar7->zName = (char *)(pSVar7 + 1);\n      memcpy(pSVar7 + 1,zName,(sVar5 & 0x3fffffff) + 1);\n      iVar13 = 0;\n      pSVar4 = pSession->pTable;\n      if (pSession->pTable == (SessionTable *)0x0) {\n        pSession->pTable = pSVar7;\n      }\n      else {\n        do {\n          pSVar10 = pSVar4;\n          pSVar4 = pSVar10->pNext;\n        } while (pSVar4 != (SessionTable *)0x0);\n        pSVar10->pNext = pSVar7;\n      }\n    }\n    else {\n      iVar13 = 7;\n    }\n  }\nLAB_0014f47c:\n  psVar2 = pSession->db->mutex;\n  if (psVar2 != (sqlite3_mutex *)0x0) {\n    (**(code **)(unaff_EDI + 0x6c0bd))(psVar2);\n  }\n  return iVar13;\n}" else (compound_statement "{\n    sVar5 = strlen(zName);\n    for (pSVar7 = pSession->pTable; pSVar7 != (SessionTable *)0x0; pSVar7 = pSVar7->pNext) {\n      pbVar3 = (byte *)pSVar7->zName;\n      if (pbVar3 != (byte *)0x0) {\n        iVar13 = unaff_EDI + 0x1a459;\n        cVar8 = *(char *)(unaff_EDI + 0x1a459 + (uint)*pbVar3);\n        cVar11 = *(char *)(unaff_EDI + 0x1a459 + (uint)(byte)*zName);\n        if (*pbVar3 != 0) {\n          pbVar1 = (byte *)zName;\n          local_30 = sVar5 & 0x3fffffff;\n          if (cVar8 != cVar11) goto LAB_0014f4c0;\n          do {\n            pbVar12 = pbVar1;\n            pbVar6 = pbVar3;\n            local_30 = local_30 - 1;\n            pbVar1 = pbVar12 + 1;\n            if (local_30 == 0xffffffff) goto LAB_0014f47a;\n          } while ((pbVar6[1] != 0) &&\n                  (pbVar3 = pbVar6 + 1,\n                  *(char *)(iVar13 + (uint)pbVar6[1]) == *(char *)(iVar13 + (uint)*pbVar1)));\n          cVar8 = *(char *)(iVar13 + (uint)pbVar6[1]);\n          cVar11 = *(char *)(iVar13 + (uint)pbVar12[1]);\n        }\n        if (cVar8 == cVar11) {\nLAB_0014f47a:\n          iVar13 = 0;\n          goto LAB_0014f47c;\n        }\n      }\nLAB_0014f4c0:\n    }\n    iVar13 = sqlite3_initialize();\n    if ((iVar13 == 0) &&\n       (pSVar7 = (SessionTable *)sqlite3Malloc(in_stack_ffffffc4), pSVar7 != (SessionTable *)0x0)) {\n      pSVar7->pNext = (SessionTable *)0x0;\n      puVar14 = (undefined4 *)((uint)&pSVar7->zName & 0xfffffffc);\n      pSVar7->apChange = (SessionChange **)0x0;\n      uVar9 = (uint)((int)pSVar7 + (0x24 - (int)puVar14)) >> 2;\n      for (; uVar9 != 0; uVar9 = uVar9 - 1) {\n        *puVar14 = 0;\n        puVar14 = puVar14 + (uint)bVar15 * -2 + 1;\n      }\n      pSVar7->zName = (char *)(pSVar7 + 1);\n      memcpy(pSVar7 + 1,zName,(sVar5 & 0x3fffffff) + 1);\n      iVar13 = 0;\n      pSVar4 = pSession->pTable;\n      if (pSession->pTable == (SessionTable *)0x0) {\n        pSession->pTable = pSVar7;\n      }\n      else {\n        do {\n          pSVar10 = pSVar4;\n          pSVar4 = pSVar10->pNext;\n        } while (pSVar4 != (SessionTable *)0x0);\n        pSVar10->pNext = pSVar7;\n      }\n    }\n    else {\n      iVar13 = 7;\n    }\n  }\nLAB_0014f47c:\n  psVar2 = pSession->db->mutex;\n  if (psVar2 != (sqlite3_mutex *)0x0) {\n    (**(code **)(unaff_EDI + 0x6c0bd))(psVar2);\n  }\n  return iVar13;\n}" { (expression_statement "sVar5 = strlen(zName);" (assignment_expression "sVar5 = strlen(zName)" identifier = (call_expression "strlen(zName)" identifier (argument_list "(zName)" ( identifier )))) ;) (for_statement "for (pSVar7 = pSession->pTable; pSVar7 != (SessionTable *)0x0; pSVar7 = pSVar7->pNext) {\n      pbVar3 = (byte *)pSVar7->zName;\n      if (pbVar3 != (byte *)0x0) {\n        iVar13 = unaff_EDI + 0x1a459;\n        cVar8 = *(char *)(unaff_EDI + 0x1a459 + (uint)*pbVar3);\n        cVar11 = *(char *)(unaff_EDI + 0x1a459 + (uint)(byte)*zName);\n        if (*pbVar3 != 0) {\n          pbVar1 = (byte *)zName;\n          local_30 = sVar5 & 0x3fffffff;\n          if (cVar8 != cVar11) goto LAB_0014f4c0;\n          do {\n            pbVar12 = pbVar1;\n            pbVar6 = pbVar3;\n            local_30 = local_30 - 1;\n            pbVar1 = pbVar12 + 1;\n            if (local_30 == 0xffffffff) goto LAB_0014f47a;\n          } while ((pbVar6[1] != 0) &&\n                  (pbVar3 = pbVar6 + 1,\n                  *(char *)(iVar13 + (uint)pbVar6[1]) == *(char *)(iVar13 + (uint)*pbVar1)));\n          cVar8 = *(char *)(iVar13 + (uint)pbVar6[1]);\n          cVar11 = *(char *)(iVar13 + (uint)pbVar12[1]);\n        }\n        if (cVar8 == cVar11) {\nLAB_0014f47a:\n          iVar13 = 0;\n          goto LAB_0014f47c;\n        }\n      }\nLAB_0014f4c0:\n    }\n    iVar13 = sqlite3_initialize();\n    if ((iVar13 == 0) &&\n       (pSVar7 = (SessionTable *)sqlite3Malloc(in_stack_ffffffc4), pSVar7 != (SessionTable *)0x0)) {\n      pSVar7->pNext = (SessionTable *)0x0;\n      puVar14 = (undefined4 *)((uint)&pSVar7->zName & 0xfffffffc);\n      pSVar7->apChange = (SessionChange **)0x0;\n      uVar9 = (uint)((int)pSVar7 + (0x24 - (int)puVar14)) >> 2;\n      for (; uVar9 != 0; uVar9 = uVar9 - 1) {\n        *puVar14 = 0;\n        puVar14 = puVar14 + (uint)bVar15 * -2 + 1;\n      }\n      pSVar7->zName = (char *)(pSVar7 + 1);\n      memcpy(pSVar7 + 1,zName,(sVar5 & 0x3fffffff) + 1);\n      iVar13 = 0;\n      pSVar4 = pSession->pTable;\n      if (pSession->pTable == (SessionTable *)0x0) {\n        pSession->pTable = pSVar7;\n      }\n      else {\n        do {\n          pSVar10 = pSVar4;\n          pSVar4 = pSVar10->pNext;\n        } while (pSVar4 != (SessionTable *)0x0);\n        pSVar10->pNext = pSVar7;\n      }\n    }\n    else {\n      iVar13 = 7;\n    }\n  }" for ( (assignment_expression "pSVar7 = pSession->pTable" identifier = (field_expression "pSession->pTable" identifier -> field_identifier)) ; (binary_expression "pSVar7 != (SessionTable *)0x0" identifier != (cast_expression "(SessionTable *)0x0" ( (type_descriptor "SessionTable *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ; (assignment_expression "pSVar7 = pSVar7->pNext" identifier = (field_expression "pSVar7->pNext" identifier -> field_identifier)) ) (compound_statement "{\n      pbVar3 = (byte *)pSVar7->zName;\n      if (pbVar3 != (byte *)0x0) {\n        iVar13 = unaff_EDI + 0x1a459;\n        cVar8 = *(char *)(unaff_EDI + 0x1a459 + (uint)*pbVar3);\n        cVar11 = *(char *)(unaff_EDI + 0x1a459 + (uint)(byte)*zName);\n        if (*pbVar3 != 0) {\n          pbVar1 = (byte *)zName;\n          local_30 = sVar5 & 0x3fffffff;\n          if (cVar8 != cVar11) goto LAB_0014f4c0;\n          do {\n            pbVar12 = pbVar1;\n            pbVar6 = pbVar3;\n            local_30 = local_30 - 1;\n            pbVar1 = pbVar12 + 1;\n            if (local_30 == 0xffffffff) goto LAB_0014f47a;\n          } while ((pbVar6[1] != 0) &&\n                  (pbVar3 = pbVar6 + 1,\n                  *(char *)(iVar13 + (uint)pbVar6[1]) == *(char *)(iVar13 + (uint)*pbVar1)));\n          cVar8 = *(char *)(iVar13 + (uint)pbVar6[1]);\n          cVar11 = *(char *)(iVar13 + (uint)pbVar12[1]);\n        }\n        if (cVar8 == cVar11) {\nLAB_0014f47a:\n          iVar13 = 0;\n          goto LAB_0014f47c;\n        }\n      }\nLAB_0014f4c0:\n    }\n    iVar13 = sqlite3_initialize();\n    if ((iVar13 == 0) &&\n       (pSVar7 = (SessionTable *)sqlite3Malloc(in_stack_ffffffc4), pSVar7 != (SessionTable *)0x0)) {\n      pSVar7->pNext = (SessionTable *)0x0;\n      puVar14 = (undefined4 *)((uint)&pSVar7->zName & 0xfffffffc);\n      pSVar7->apChange = (SessionChange **)0x0;\n      uVar9 = (uint)((int)pSVar7 + (0x24 - (int)puVar14)) >> 2;\n      for (; uVar9 != 0; uVar9 = uVar9 - 1) {\n        *puVar14 = 0;\n        puVar14 = puVar14 + (uint)bVar15 * -2 + 1;\n      }\n      pSVar7->zName = (char *)(pSVar7 + 1);\n      memcpy(pSVar7 + 1,zName,(sVar5 & 0x3fffffff) + 1);\n      iVar13 = 0;\n      pSVar4 = pSession->pTable;\n      if (pSession->pTable == (SessionTable *)0x0) {\n        pSession->pTable = pSVar7;\n      }\n      else {\n        do {\n          pSVar10 = pSVar4;\n          pSVar4 = pSVar10->pNext;\n        } while (pSVar4 != (SessionTable *)0x0);\n        pSVar10->pNext = pSVar7;\n      }\n    }\n    else {\n      iVar13 = 7;\n    }\n  }" { (expression_statement "pbVar3 = (byte *)pSVar7->zName;" (assignment_expression "pbVar3 = (byte *)pSVar7->zName" identifier = (cast_expression "(byte *)pSVar7->zName" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "pSVar7->zName" identifier -> field_identifier))) ;) (if_statement "if (pbVar3 != (byte *)0x0) {\n        iVar13 = unaff_EDI + 0x1a459;\n        cVar8 = *(char *)(unaff_EDI + 0x1a459 + (uint)*pbVar3);\n        cVar11 = *(char *)(unaff_EDI + 0x1a459 + (uint)(byte)*zName);\n        if (*pbVar3 != 0) {\n          pbVar1 = (byte *)zName;\n          local_30 = sVar5 & 0x3fffffff;\n          if (cVar8 != cVar11) goto LAB_0014f4c0;\n          do {\n            pbVar12 = pbVar1;\n            pbVar6 = pbVar3;\n            local_30 = local_30 - 1;\n            pbVar1 = pbVar12 + 1;\n            if (local_30 == 0xffffffff) goto LAB_0014f47a;\n          } while ((pbVar6[1] != 0) &&\n                  (pbVar3 = pbVar6 + 1,\n                  *(char *)(iVar13 + (uint)pbVar6[1]) == *(char *)(iVar13 + (uint)*pbVar1)));\n          cVar8 = *(char *)(iVar13 + (uint)pbVar6[1]);\n          cVar11 = *(char *)(iVar13 + (uint)pbVar12[1]);\n        }\n        if (cVar8 == cVar11) {\nLAB_0014f47a:\n          iVar13 = 0;\n          goto LAB_0014f47c;\n        }\n      }" if (parenthesized_expression "(pbVar3 != (byte *)0x0)" ( (binary_expression "pbVar3 != (byte *)0x0" identifier != (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        iVar13 = unaff_EDI + 0x1a459;\n        cVar8 = *(char *)(unaff_EDI + 0x1a459 + (uint)*pbVar3);\n        cVar11 = *(char *)(unaff_EDI + 0x1a459 + (uint)(byte)*zName);\n        if (*pbVar3 != 0) {\n          pbVar1 = (byte *)zName;\n          local_30 = sVar5 & 0x3fffffff;\n          if (cVar8 != cVar11) goto LAB_0014f4c0;\n          do {\n            pbVar12 = pbVar1;\n            pbVar6 = pbVar3;\n            local_30 = local_30 - 1;\n            pbVar1 = pbVar12 + 1;\n            if (local_30 == 0xffffffff) goto LAB_0014f47a;\n          } while ((pbVar6[1] != 0) &&\n                  (pbVar3 = pbVar6 + 1,\n                  *(char *)(iVar13 + (uint)pbVar6[1]) == *(char *)(iVar13 + (uint)*pbVar1)));\n          cVar8 = *(char *)(iVar13 + (uint)pbVar6[1]);\n          cVar11 = *(char *)(iVar13 + (uint)pbVar12[1]);\n        }\n        if (cVar8 == cVar11) {\nLAB_0014f47a:\n          iVar13 = 0;\n          goto LAB_0014f47c;\n        }\n      }" { (expression_statement "iVar13 = unaff_EDI + 0x1a459;" (assignment_expression "iVar13 = unaff_EDI + 0x1a459" identifier = (binary_expression "unaff_EDI + 0x1a459" identifier + number_literal)) ;) (expression_statement "cVar8 = *(char *)(unaff_EDI + 0x1a459 + (uint)*pbVar3);" (assignment_expression "cVar8 = *(char *)(unaff_EDI + 0x1a459 + (uint)*pbVar3)" identifier = (pointer_expression "*(char *)(unaff_EDI + 0x1a459 + (uint)*pbVar3)" * (cast_expression "(char *)(unaff_EDI + 0x1a459 + (uint)*pbVar3)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x1a459 + (uint)*pbVar3)" ( (binary_expression "unaff_EDI + 0x1a459 + (uint)*pbVar3" (binary_expression "unaff_EDI + 0x1a459" identifier + number_literal) + (binary_expression "(uint)*pbVar3" (parenthesized_expression "(uint)" ( identifier )) * identifier)) ))))) ;) (expression_statement "cVar11 = *(char *)(unaff_EDI + 0x1a459 + (uint)(byte)*zName);" (assignment_expression "cVar11 = *(char *)(unaff_EDI + 0x1a459 + (uint)(byte)*zName)" identifier = (pointer_expression "*(char *)(unaff_EDI + 0x1a459 + (uint)(byte)*zName)" * (cast_expression "(char *)(unaff_EDI + 0x1a459 + (uint)(byte)*zName)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x1a459 + (uint)(byte)*zName)" ( (binary_expression "unaff_EDI + 0x1a459 + (uint)(byte)*zName" (binary_expression "unaff_EDI + 0x1a459" identifier + number_literal) + (binary_expression "(uint)(byte)*zName" (call_expression "(uint)(byte)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(byte)" ( identifier ))) * identifier)) ))))) ;) (if_statement "if (*pbVar3 != 0) {\n          pbVar1 = (byte *)zName;\n          local_30 = sVar5 & 0x3fffffff;\n          if (cVar8 != cVar11) goto LAB_0014f4c0;\n          do {\n            pbVar12 = pbVar1;\n            pbVar6 = pbVar3;\n            local_30 = local_30 - 1;\n            pbVar1 = pbVar12 + 1;\n            if (local_30 == 0xffffffff) goto LAB_0014f47a;\n          } while ((pbVar6[1] != 0) &&\n                  (pbVar3 = pbVar6 + 1,\n                  *(char *)(iVar13 + (uint)pbVar6[1]) == *(char *)(iVar13 + (uint)*pbVar1)));\n          cVar8 = *(char *)(iVar13 + (uint)pbVar6[1]);\n          cVar11 = *(char *)(iVar13 + (uint)pbVar12[1]);\n        }" if (parenthesized_expression "(*pbVar3 != 0)" ( (binary_expression "*pbVar3 != 0" (pointer_expression "*pbVar3" * identifier) != number_literal) )) (compound_statement "{\n          pbVar1 = (byte *)zName;\n          local_30 = sVar5 & 0x3fffffff;\n          if (cVar8 != cVar11) goto LAB_0014f4c0;\n          do {\n            pbVar12 = pbVar1;\n            pbVar6 = pbVar3;\n            local_30 = local_30 - 1;\n            pbVar1 = pbVar12 + 1;\n            if (local_30 == 0xffffffff) goto LAB_0014f47a;\n          } while ((pbVar6[1] != 0) &&\n                  (pbVar3 = pbVar6 + 1,\n                  *(char *)(iVar13 + (uint)pbVar6[1]) == *(char *)(iVar13 + (uint)*pbVar1)));\n          cVar8 = *(char *)(iVar13 + (uint)pbVar6[1]);\n          cVar11 = *(char *)(iVar13 + (uint)pbVar12[1]);\n        }" { (expression_statement "pbVar1 = (byte *)zName;" (assignment_expression "pbVar1 = (byte *)zName" identifier = (cast_expression "(byte *)zName" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "local_30 = sVar5 & 0x3fffffff;" (assignment_expression "local_30 = sVar5 & 0x3fffffff" identifier = (binary_expression "sVar5 & 0x3fffffff" identifier & number_literal)) ;) (if_statement "if (cVar8 != cVar11) goto LAB_0014f4c0;" if (parenthesized_expression "(cVar8 != cVar11)" ( (binary_expression "cVar8 != cVar11" identifier != identifier) )) (goto_statement "goto LAB_0014f4c0;" goto statement_identifier ;)) (do_statement "do {\n            pbVar12 = pbVar1;\n            pbVar6 = pbVar3;\n            local_30 = local_30 - 1;\n            pbVar1 = pbVar12 + 1;\n            if (local_30 == 0xffffffff) goto LAB_0014f47a;\n          } while ((pbVar6[1] != 0) &&\n                  (pbVar3 = pbVar6 + 1,\n                  *(char *)(iVar13 + (uint)pbVar6[1]) == *(char *)(iVar13 + (uint)*pbVar1)));" do (compound_statement "{\n            pbVar12 = pbVar1;\n            pbVar6 = pbVar3;\n            local_30 = local_30 - 1;\n            pbVar1 = pbVar12 + 1;\n            if (local_30 == 0xffffffff) goto LAB_0014f47a;\n          }" { (expression_statement "pbVar12 = pbVar1;" (assignment_expression "pbVar12 = pbVar1" identifier = identifier) ;) (expression_statement "pbVar6 = pbVar3;" (assignment_expression "pbVar6 = pbVar3" identifier = identifier) ;) (expression_statement "local_30 = local_30 - 1;" (assignment_expression "local_30 = local_30 - 1" identifier = (binary_expression "local_30 - 1" identifier - number_literal)) ;) (expression_statement "pbVar1 = pbVar12 + 1;" (assignment_expression "pbVar1 = pbVar12 + 1" identifier = (binary_expression "pbVar12 + 1" identifier + number_literal)) ;) (if_statement "if (local_30 == 0xffffffff) goto LAB_0014f47a;" if (parenthesized_expression "(local_30 == 0xffffffff)" ( (binary_expression "local_30 == 0xffffffff" identifier == number_literal) )) (goto_statement "goto LAB_0014f47a;" goto statement_identifier ;)) }) while (parenthesized_expression "((pbVar6[1] != 0) &&\n                  (pbVar3 = pbVar6 + 1,\n                  *(char *)(iVar13 + (uint)pbVar6[1]) == *(char *)(iVar13 + (uint)*pbVar1)))" ( (binary_expression "(pbVar6[1] != 0) &&\n                  (pbVar3 = pbVar6 + 1,\n                  *(char *)(iVar13 + (uint)pbVar6[1]) == *(char *)(iVar13 + (uint)*pbVar1))" (parenthesized_expression "(pbVar6[1] != 0)" ( (binary_expression "pbVar6[1] != 0" (subscript_expression "pbVar6[1]" identifier [ number_literal ]) != number_literal) )) && (parenthesized_expression "(pbVar3 = pbVar6 + 1,\n                  *(char *)(iVar13 + (uint)pbVar6[1]) == *(char *)(iVar13 + (uint)*pbVar1))" ( (comma_expression "pbVar3 = pbVar6 + 1,\n                  *(char *)(iVar13 + (uint)pbVar6[1]) == *(char *)(iVar13 + (uint)*pbVar1)" (assignment_expression "pbVar3 = pbVar6 + 1" identifier = (binary_expression "pbVar6 + 1" identifier + number_literal)) , (binary_expression "*(char *)(iVar13 + (uint)pbVar6[1]) == *(char *)(iVar13 + (uint)*pbVar1)" (pointer_expression "*(char *)(iVar13 + (uint)pbVar6[1])" * (cast_expression "(char *)(iVar13 + (uint)pbVar6[1])" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar13 + (uint)pbVar6[1])" ( (binary_expression "iVar13 + (uint)pbVar6[1]" identifier + (cast_expression "(uint)pbVar6[1]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "pbVar6[1]" identifier [ number_literal ]))) )))) == (pointer_expression "*(char *)(iVar13 + (uint)*pbVar1)" * (cast_expression "(char *)(iVar13 + (uint)*pbVar1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar13 + (uint)*pbVar1)" ( (binary_expression "iVar13 + (uint)*pbVar1" identifier + (binary_expression "(uint)*pbVar1" (parenthesized_expression "(uint)" ( identifier )) * identifier)) )))))) ))) )) ;) (expression_statement "cVar8 = *(char *)(iVar13 + (uint)pbVar6[1]);" (assignment_expression "cVar8 = *(char *)(iVar13 + (uint)pbVar6[1])" identifier = (pointer_expression "*(char *)(iVar13 + (uint)pbVar6[1])" * (cast_expression "(char *)(iVar13 + (uint)pbVar6[1])" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar13 + (uint)pbVar6[1])" ( (binary_expression "iVar13 + (uint)pbVar6[1]" identifier + (cast_expression "(uint)pbVar6[1]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "pbVar6[1]" identifier [ number_literal ]))) ))))) ;) (expression_statement "cVar11 = *(char *)(iVar13 + (uint)pbVar12[1]);" (assignment_expression "cVar11 = *(char *)(iVar13 + (uint)pbVar12[1])" identifier = (pointer_expression "*(char *)(iVar13 + (uint)pbVar12[1])" * (cast_expression "(char *)(iVar13 + (uint)pbVar12[1])" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar13 + (uint)pbVar12[1])" ( (binary_expression "iVar13 + (uint)pbVar12[1]" identifier + (cast_expression "(uint)pbVar12[1]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "pbVar12[1]" identifier [ number_literal ]))) ))))) ;) })) (if_statement "if (cVar8 == cVar11) {\nLAB_0014f47a:\n          iVar13 = 0;\n          goto LAB_0014f47c;\n        }" if (parenthesized_expression "(cVar8 == cVar11)" ( (binary_expression "cVar8 == cVar11" identifier == identifier) )) (compound_statement "{\nLAB_0014f47a:\n          iVar13 = 0;\n          goto LAB_0014f47c;\n        }" { (labeled_statement "LAB_0014f47a:\n          iVar13 = 0;" statement_identifier : (expression_statement "iVar13 = 0;" (assignment_expression "iVar13 = 0" identifier = number_literal) ;)) (goto_statement "goto LAB_0014f47c;" goto statement_identifier ;) })) })) (labeled_statement "LAB_0014f4c0:\n    }\n    iVar13 = sqlite3_initialize();" statement_identifier : (ERROR "}" }) (expression_statement "iVar13 = sqlite3_initialize();" (assignment_expression "iVar13 = sqlite3_initialize()" identifier = (call_expression "sqlite3_initialize()" identifier (argument_list "()" ( )))) ;)) (if_statement "if ((iVar13 == 0) &&\n       (pSVar7 = (SessionTable *)sqlite3Malloc(in_stack_ffffffc4), pSVar7 != (SessionTable *)0x0)) {\n      pSVar7->pNext = (SessionTable *)0x0;\n      puVar14 = (undefined4 *)((uint)&pSVar7->zName & 0xfffffffc);\n      pSVar7->apChange = (SessionChange **)0x0;\n      uVar9 = (uint)((int)pSVar7 + (0x24 - (int)puVar14)) >> 2;\n      for (; uVar9 != 0; uVar9 = uVar9 - 1) {\n        *puVar14 = 0;\n        puVar14 = puVar14 + (uint)bVar15 * -2 + 1;\n      }\n      pSVar7->zName = (char *)(pSVar7 + 1);\n      memcpy(pSVar7 + 1,zName,(sVar5 & 0x3fffffff) + 1);\n      iVar13 = 0;\n      pSVar4 = pSession->pTable;\n      if (pSession->pTable == (SessionTable *)0x0) {\n        pSession->pTable = pSVar7;\n      }\n      else {\n        do {\n          pSVar10 = pSVar4;\n          pSVar4 = pSVar10->pNext;\n        } while (pSVar4 != (SessionTable *)0x0);\n        pSVar10->pNext = pSVar7;\n      }\n    }\n    else {\n      iVar13 = 7;\n    }" if (parenthesized_expression "((iVar13 == 0) &&\n       (pSVar7 = (SessionTable *)sqlite3Malloc(in_stack_ffffffc4), pSVar7 != (SessionTable *)0x0))" ( (binary_expression "(iVar13 == 0) &&\n       (pSVar7 = (SessionTable *)sqlite3Malloc(in_stack_ffffffc4), pSVar7 != (SessionTable *)0x0)" (parenthesized_expression "(iVar13 == 0)" ( (binary_expression "iVar13 == 0" identifier == number_literal) )) && (parenthesized_expression "(pSVar7 = (SessionTable *)sqlite3Malloc(in_stack_ffffffc4), pSVar7 != (SessionTable *)0x0)" ( (comma_expression "pSVar7 = (SessionTable *)sqlite3Malloc(in_stack_ffffffc4), pSVar7 != (SessionTable *)0x0" (assignment_expression "pSVar7 = (SessionTable *)sqlite3Malloc(in_stack_ffffffc4)" identifier = (cast_expression "(SessionTable *)sqlite3Malloc(in_stack_ffffffc4)" ( (type_descriptor "SessionTable *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "sqlite3Malloc(in_stack_ffffffc4)" identifier (argument_list "(in_stack_ffffffc4)" ( identifier ))))) , (binary_expression "pSVar7 != (SessionTable *)0x0" identifier != (cast_expression "(SessionTable *)0x0" ( (type_descriptor "SessionTable *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) ))) )) (compound_statement "{\n      pSVar7->pNext = (SessionTable *)0x0;\n      puVar14 = (undefined4 *)((uint)&pSVar7->zName & 0xfffffffc);\n      pSVar7->apChange = (SessionChange **)0x0;\n      uVar9 = (uint)((int)pSVar7 + (0x24 - (int)puVar14)) >> 2;\n      for (; uVar9 != 0; uVar9 = uVar9 - 1) {\n        *puVar14 = 0;\n        puVar14 = puVar14 + (uint)bVar15 * -2 + 1;\n      }\n      pSVar7->zName = (char *)(pSVar7 + 1);\n      memcpy(pSVar7 + 1,zName,(sVar5 & 0x3fffffff) + 1);\n      iVar13 = 0;\n      pSVar4 = pSession->pTable;\n      if (pSession->pTable == (SessionTable *)0x0) {\n        pSession->pTable = pSVar7;\n      }\n      else {\n        do {\n          pSVar10 = pSVar4;\n          pSVar4 = pSVar10->pNext;\n        } while (pSVar4 != (SessionTable *)0x0);\n        pSVar10->pNext = pSVar7;\n      }\n    }" { (expression_statement "pSVar7->pNext = (SessionTable *)0x0;" (assignment_expression "pSVar7->pNext = (SessionTable *)0x0" (field_expression "pSVar7->pNext" identifier -> field_identifier) = (cast_expression "(SessionTable *)0x0" ( (type_descriptor "SessionTable *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "puVar14 = (undefined4 *)((uint)&pSVar7->zName & 0xfffffffc);" (assignment_expression "puVar14 = (undefined4 *)((uint)&pSVar7->zName & 0xfffffffc)" identifier = (cast_expression "(undefined4 *)((uint)&pSVar7->zName & 0xfffffffc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((uint)&pSVar7->zName & 0xfffffffc)" ( (binary_expression "(uint)&pSVar7->zName & 0xfffffffc" (binary_expression "(uint)&pSVar7->zName" (parenthesized_expression "(uint)" ( identifier )) & (field_expression "pSVar7->zName" identifier -> field_identifier)) & number_literal) )))) ;) (expression_statement "pSVar7->apChange = (SessionChange **)0x0;" (assignment_expression "pSVar7->apChange = (SessionChange **)0x0" (field_expression "pSVar7->apChange" identifier -> field_identifier) = (cast_expression "(SessionChange **)0x0" ( (type_descriptor "SessionChange **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) number_literal)) ;) (expression_statement "uVar9 = (uint)((int)pSVar7 + (0x24 - (int)puVar14)) >> 2;" (assignment_expression "uVar9 = (uint)((int)pSVar7 + (0x24 - (int)puVar14)) >> 2" identifier = (binary_expression "(uint)((int)pSVar7 + (0x24 - (int)puVar14)) >> 2" (call_expression "(uint)((int)pSVar7 + (0x24 - (int)puVar14))" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((int)pSVar7 + (0x24 - (int)puVar14))" ( (binary_expression "(int)pSVar7 + (0x24 - (int)puVar14)" (cast_expression "(int)pSVar7" ( (type_descriptor "int" primitive_type) ) identifier) + (parenthesized_expression "(0x24 - (int)puVar14)" ( (binary_expression "0x24 - (int)puVar14" number_literal - (cast_expression "(int)puVar14" ( (type_descriptor "int" primitive_type) ) identifier)) ))) ))) >> number_literal)) ;) (for_statement "for (; uVar9 != 0; uVar9 = uVar9 - 1) {\n        *puVar14 = 0;\n        puVar14 = puVar14 + (uint)bVar15 * -2 + 1;\n      }" for ( ; (binary_expression "uVar9 != 0" identifier != number_literal) ; (assignment_expression "uVar9 = uVar9 - 1" identifier = (binary_expression "uVar9 - 1" identifier - number_literal)) ) (compound_statement "{\n        *puVar14 = 0;\n        puVar14 = puVar14 + (uint)bVar15 * -2 + 1;\n      }" { (expression_statement "*puVar14 = 0;" (assignment_expression "*puVar14 = 0" (pointer_expression "*puVar14" * identifier) = number_literal) ;) (expression_statement "puVar14 = puVar14 + (uint)bVar15 * -2 + 1;" (assignment_expression "puVar14 = puVar14 + (uint)bVar15 * -2 + 1" identifier = (binary_expression "puVar14 + (uint)bVar15 * -2 + 1" (binary_expression "puVar14 + (uint)bVar15 * -2" identifier + (binary_expression "(uint)bVar15 * -2" (cast_expression "(uint)bVar15" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) })) (expression_statement "pSVar7->zName = (char *)(pSVar7 + 1);" (assignment_expression "pSVar7->zName = (char *)(pSVar7 + 1)" (field_expression "pSVar7->zName" identifier -> field_identifier) = (cast_expression "(char *)(pSVar7 + 1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pSVar7 + 1)" ( (binary_expression "pSVar7 + 1" identifier + number_literal) )))) ;) (expression_statement "memcpy(pSVar7 + 1,zName,(sVar5 & 0x3fffffff) + 1);" (call_expression "memcpy(pSVar7 + 1,zName,(sVar5 & 0x3fffffff) + 1)" identifier (argument_list "(pSVar7 + 1,zName,(sVar5 & 0x3fffffff) + 1)" ( (binary_expression "pSVar7 + 1" identifier + number_literal) , identifier , (binary_expression "(sVar5 & 0x3fffffff) + 1" (parenthesized_expression "(sVar5 & 0x3fffffff)" ( (binary_expression "sVar5 & 0x3fffffff" identifier & number_literal) )) + number_literal) ))) ;) (expression_statement "iVar13 = 0;" (assignment_expression "iVar13 = 0" identifier = number_literal) ;) (expression_statement "pSVar4 = pSession->pTable;" (assignment_expression "pSVar4 = pSession->pTable" identifier = (field_expression "pSession->pTable" identifier -> field_identifier)) ;) (if_statement "if (pSession->pTable == (SessionTable *)0x0) {\n        pSession->pTable = pSVar7;\n      }\n      else {\n        do {\n          pSVar10 = pSVar4;\n          pSVar4 = pSVar10->pNext;\n        } while (pSVar4 != (SessionTable *)0x0);\n        pSVar10->pNext = pSVar7;\n      }" if (parenthesized_expression "(pSession->pTable == (SessionTable *)0x0)" ( (binary_expression "pSession->pTable == (SessionTable *)0x0" (field_expression "pSession->pTable" identifier -> field_identifier) == (cast_expression "(SessionTable *)0x0" ( (type_descriptor "SessionTable *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        pSession->pTable = pSVar7;\n      }" { (expression_statement "pSession->pTable = pSVar7;" (assignment_expression "pSession->pTable = pSVar7" (field_expression "pSession->pTable" identifier -> field_identifier) = identifier) ;) }) (else_clause "else {\n        do {\n          pSVar10 = pSVar4;\n          pSVar4 = pSVar10->pNext;\n        } while (pSVar4 != (SessionTable *)0x0);\n        pSVar10->pNext = pSVar7;\n      }" else (compound_statement "{\n        do {\n          pSVar10 = pSVar4;\n          pSVar4 = pSVar10->pNext;\n        } while (pSVar4 != (SessionTable *)0x0);\n        pSVar10->pNext = pSVar7;\n      }" { (do_statement "do {\n          pSVar10 = pSVar4;\n          pSVar4 = pSVar10->pNext;\n        } while (pSVar4 != (SessionTable *)0x0);" do (compound_statement "{\n          pSVar10 = pSVar4;\n          pSVar4 = pSVar10->pNext;\n        }" { (expression_statement "pSVar10 = pSVar4;" (assignment_expression "pSVar10 = pSVar4" identifier = identifier) ;) (expression_statement "pSVar4 = pSVar10->pNext;" (assignment_expression "pSVar4 = pSVar10->pNext" identifier = (field_expression "pSVar10->pNext" identifier -> field_identifier)) ;) }) while (parenthesized_expression "(pSVar4 != (SessionTable *)0x0)" ( (binary_expression "pSVar4 != (SessionTable *)0x0" identifier != (cast_expression "(SessionTable *)0x0" ( (type_descriptor "SessionTable *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) ;) (expression_statement "pSVar10->pNext = pSVar7;" (assignment_expression "pSVar10->pNext = pSVar7" (field_expression "pSVar10->pNext" identifier -> field_identifier) = identifier) ;) }))) }) (else_clause "else {\n      iVar13 = 7;\n    }" else (compound_statement "{\n      iVar13 = 7;\n    }" { (expression_statement "iVar13 = 7;" (assignment_expression "iVar13 = 7" identifier = number_literal) ;) }))) })) (labeled_statement "LAB_0014f47c:\n  psVar2 = pSession->db->mutex;" statement_identifier : (expression_statement "psVar2 = pSession->db->mutex;" (assignment_expression "psVar2 = pSession->db->mutex" identifier = (field_expression "pSession->db->mutex" (field_expression "pSession->db" identifier -> field_identifier) -> field_identifier)) ;)) (if_statement "if (psVar2 != (sqlite3_mutex *)0x0) {\n    (**(code **)(unaff_EDI + 0x6c0bd))(psVar2);\n  }" if (parenthesized_expression "(psVar2 != (sqlite3_mutex *)0x0)" ( (binary_expression "psVar2 != (sqlite3_mutex *)0x0" identifier != (cast_expression "(sqlite3_mutex *)0x0" ( (type_descriptor "sqlite3_mutex *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    (**(code **)(unaff_EDI + 0x6c0bd))(psVar2);\n  }" { (expression_statement "(**(code **)(unaff_EDI + 0x6c0bd))(psVar2);" (call_expression "(**(code **)(unaff_EDI + 0x6c0bd))(psVar2)" (parenthesized_expression "(**(code **)(unaff_EDI + 0x6c0bd))" ( (pointer_expression "**(code **)(unaff_EDI + 0x6c0bd)" * (pointer_expression "*(code **)(unaff_EDI + 0x6c0bd)" * (cast_expression "(code **)(unaff_EDI + 0x6c0bd)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(unaff_EDI + 0x6c0bd)" ( (binary_expression "unaff_EDI + 0x6c0bd" identifier + number_literal) ))))) )) (argument_list "(psVar2)" ( identifier ))) ;) })) (return_statement "return iVar13;" return identifier ;) }))) })))
(translation_unit "undefined4 FUN_0014f380(int *param_1,byte *param_2)\n\n{\n  byte *pbVar1;\n  byte *pbVar2;\n  size_t sVar3;\n  byte *pbVar4;\n  int iVar5;\n  undefined4 *puVar6;\n  char cVar7;\n  uint uVar8;\n  undefined4 *puVar9;\n  char cVar10;\n  byte *pbVar11;\n  undefined4 uVar12;\n  int unaff_EDI;\n  undefined4 *puVar13;\n  byte bVar14;\n  uint local_30;\n  \n  bVar14 = 0;\n  FUN_0003a401();\n  if (*(int *)(*param_1 + 0xc) != 0) {\n    (**(code **)(unaff_EDI + 0x6c0b5))(*(int *)(*param_1 + 0xc));\n  }\n  if (param_2 == (byte *)0x0) {\n    uVar12 = 0;\n    param_1[4] = 1;\n  }\n  else {\n    sVar3 = strlen((char *)param_2);\n    for (puVar6 = (undefined4 *)param_1[10]; puVar6 != (undefined4 *)0x0;\n        puVar6 = (undefined4 *)*puVar6) {\n      pbVar2 = (byte *)puVar6[1];\n      if (pbVar2 != (byte *)0x0) {\n        iVar5 = unaff_EDI + 0x1a459;\n        cVar7 = *(char *)(unaff_EDI + 0x1a459 + (uint)*pbVar2);\n        cVar10 = *(char *)(unaff_EDI + 0x1a459 + (uint)*param_2);\n        if (*pbVar2 != 0) {\n          pbVar1 = param_2;\n          local_30 = sVar3 & 0x3fffffff;\n          if (cVar7 != cVar10) goto LAB_0014f4c0;\n          do {\n            pbVar11 = pbVar1;\n            pbVar4 = pbVar2;\n            local_30 = local_30 - 1;\n            pbVar1 = pbVar11 + 1;\n            if (local_30 == 0xffffffff) goto LAB_0014f47a;\n          } while ((pbVar4[1] != 0) &&\n                  (pbVar2 = pbVar4 + 1,\n                  *(char *)(iVar5 + (uint)pbVar4[1]) == *(char *)(iVar5 + (uint)*pbVar1)));\n          cVar7 = *(char *)(iVar5 + (uint)pbVar4[1]);\n          cVar10 = *(char *)(iVar5 + (uint)pbVar11[1]);\n        }\n        if (cVar7 == cVar10) {\nLAB_0014f47a:\n          uVar12 = 0;\n          goto LAB_0014f47c;\n        }\n      }\nLAB_0014f4c0:\n    }\n    iVar5 = FUN_00067fc0();\n    if ((iVar5 == 0) && (puVar6 = (undefined4 *)FUN_00055780(), puVar6 != (undefined4 *)0x0)) {\n      *puVar6 = 0;\n      puVar6[8] = 0;\n      puVar13 = (undefined4 *)((uint)(puVar6 + 1) & 0xfffffffc);\n      for (uVar8 = (uint)((int)puVar6 + (0x24 - (int)((uint)(puVar6 + 1) & 0xfffffffc))) >> 2;\n          uVar8 != 0; uVar8 = uVar8 - 1) {\n        *puVar13 = 0;\n        puVar13 = puVar13 + (uint)bVar14 * -2 + 1;\n      }\n      puVar6[1] = puVar6 + 9;\n      memcpy(puVar6 + 9,param_2,(sVar3 & 0x3fffffff) + 1);\n      uVar12 = 0;\n      puVar13 = (undefined4 *)param_1[10];\n      if ((undefined4 *)param_1[10] == (undefined4 *)0x0) {\n        param_1[10] = (int)puVar6;\n      }\n      else {\n        do {\n          puVar9 = puVar13;\n          puVar13 = (undefined4 *)*puVar9;\n        } while (puVar13 != (undefined4 *)0x0);\n        *puVar9 = puVar6;\n      }\n    }\n    else {\n      uVar12 = 7;\n    }\n  }\nLAB_0014f47c:\n  if (*(int *)(*param_1 + 0xc) != 0) {\n    (**(code **)(unaff_EDI + 0x6c0bd))(*(int *)(*param_1 + 0xc));\n  }\n  return uVar12;\n}\n\n" (function_definition "undefined4 FUN_0014f380(int *param_1,byte *param_2)\n\n{\n  byte *pbVar1;\n  byte *pbVar2;\n  size_t sVar3;\n  byte *pbVar4;\n  int iVar5;\n  undefined4 *puVar6;\n  char cVar7;\n  uint uVar8;\n  undefined4 *puVar9;\n  char cVar10;\n  byte *pbVar11;\n  undefined4 uVar12;\n  int unaff_EDI;\n  undefined4 *puVar13;\n  byte bVar14;\n  uint local_30;\n  \n  bVar14 = 0;\n  FUN_0003a401();\n  if (*(int *)(*param_1 + 0xc) != 0) {\n    (**(code **)(unaff_EDI + 0x6c0b5))(*(int *)(*param_1 + 0xc));\n  }\n  if (param_2 == (byte *)0x0) {\n    uVar12 = 0;\n    param_1[4] = 1;\n  }\n  else {\n    sVar3 = strlen((char *)param_2);\n    for (puVar6 = (undefined4 *)param_1[10]; puVar6 != (undefined4 *)0x0;\n        puVar6 = (undefined4 *)*puVar6) {\n      pbVar2 = (byte *)puVar6[1];\n      if (pbVar2 != (byte *)0x0) {\n        iVar5 = unaff_EDI + 0x1a459;\n        cVar7 = *(char *)(unaff_EDI + 0x1a459 + (uint)*pbVar2);\n        cVar10 = *(char *)(unaff_EDI + 0x1a459 + (uint)*param_2);\n        if (*pbVar2 != 0) {\n          pbVar1 = param_2;\n          local_30 = sVar3 & 0x3fffffff;\n          if (cVar7 != cVar10) goto LAB_0014f4c0;\n          do {\n            pbVar11 = pbVar1;\n            pbVar4 = pbVar2;\n            local_30 = local_30 - 1;\n            pbVar1 = pbVar11 + 1;\n            if (local_30 == 0xffffffff) goto LAB_0014f47a;\n          } while ((pbVar4[1] != 0) &&\n                  (pbVar2 = pbVar4 + 1,\n                  *(char *)(iVar5 + (uint)pbVar4[1]) == *(char *)(iVar5 + (uint)*pbVar1)));\n          cVar7 = *(char *)(iVar5 + (uint)pbVar4[1]);\n          cVar10 = *(char *)(iVar5 + (uint)pbVar11[1]);\n        }\n        if (cVar7 == cVar10) {\nLAB_0014f47a:\n          uVar12 = 0;\n          goto LAB_0014f47c;\n        }\n      }\nLAB_0014f4c0:\n    }\n    iVar5 = FUN_00067fc0();\n    if ((iVar5 == 0) && (puVar6 = (undefined4 *)FUN_00055780(), puVar6 != (undefined4 *)0x0)) {\n      *puVar6 = 0;\n      puVar6[8] = 0;\n      puVar13 = (undefined4 *)((uint)(puVar6 + 1) & 0xfffffffc);\n      for (uVar8 = (uint)((int)puVar6 + (0x24 - (int)((uint)(puVar6 + 1) & 0xfffffffc))) >> 2;\n          uVar8 != 0; uVar8 = uVar8 - 1) {\n        *puVar13 = 0;\n        puVar13 = puVar13 + (uint)bVar14 * -2 + 1;\n      }\n      puVar6[1] = puVar6 + 9;\n      memcpy(puVar6 + 9,param_2,(sVar3 & 0x3fffffff) + 1);\n      uVar12 = 0;\n      puVar13 = (undefined4 *)param_1[10];\n      if ((undefined4 *)param_1[10] == (undefined4 *)0x0) {\n        param_1[10] = (int)puVar6;\n      }\n      else {\n        do {\n          puVar9 = puVar13;\n          puVar13 = (undefined4 *)*puVar9;\n        } while (puVar13 != (undefined4 *)0x0);\n        *puVar9 = puVar6;\n      }\n    }\n    else {\n      uVar12 = 7;\n    }\n  }\nLAB_0014f47c:\n  if (*(int *)(*param_1 + 0xc) != 0) {\n    (**(code **)(unaff_EDI + 0x6c0bd))(*(int *)(*param_1 + 0xc));\n  }\n  return uVar12;\n}" type_identifier (function_declarator "FUN_0014f380(int *param_1,byte *param_2)" identifier (parameter_list "(int *param_1,byte *param_2)" ( (parameter_declaration "int *param_1" primitive_type (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "byte *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) ))) (compound_statement "{\n  byte *pbVar1;\n  byte *pbVar2;\n  size_t sVar3;\n  byte *pbVar4;\n  int iVar5;\n  undefined4 *puVar6;\n  char cVar7;\n  uint uVar8;\n  undefined4 *puVar9;\n  char cVar10;\n  byte *pbVar11;\n  undefined4 uVar12;\n  int unaff_EDI;\n  undefined4 *puVar13;\n  byte bVar14;\n  uint local_30;\n  \n  bVar14 = 0;\n  FUN_0003a401();\n  if (*(int *)(*param_1 + 0xc) != 0) {\n    (**(code **)(unaff_EDI + 0x6c0b5))(*(int *)(*param_1 + 0xc));\n  }\n  if (param_2 == (byte *)0x0) {\n    uVar12 = 0;\n    param_1[4] = 1;\n  }\n  else {\n    sVar3 = strlen((char *)param_2);\n    for (puVar6 = (undefined4 *)param_1[10]; puVar6 != (undefined4 *)0x0;\n        puVar6 = (undefined4 *)*puVar6) {\n      pbVar2 = (byte *)puVar6[1];\n      if (pbVar2 != (byte *)0x0) {\n        iVar5 = unaff_EDI + 0x1a459;\n        cVar7 = *(char *)(unaff_EDI + 0x1a459 + (uint)*pbVar2);\n        cVar10 = *(char *)(unaff_EDI + 0x1a459 + (uint)*param_2);\n        if (*pbVar2 != 0) {\n          pbVar1 = param_2;\n          local_30 = sVar3 & 0x3fffffff;\n          if (cVar7 != cVar10) goto LAB_0014f4c0;\n          do {\n            pbVar11 = pbVar1;\n            pbVar4 = pbVar2;\n            local_30 = local_30 - 1;\n            pbVar1 = pbVar11 + 1;\n            if (local_30 == 0xffffffff) goto LAB_0014f47a;\n          } while ((pbVar4[1] != 0) &&\n                  (pbVar2 = pbVar4 + 1,\n                  *(char *)(iVar5 + (uint)pbVar4[1]) == *(char *)(iVar5 + (uint)*pbVar1)));\n          cVar7 = *(char *)(iVar5 + (uint)pbVar4[1]);\n          cVar10 = *(char *)(iVar5 + (uint)pbVar11[1]);\n        }\n        if (cVar7 == cVar10) {\nLAB_0014f47a:\n          uVar12 = 0;\n          goto LAB_0014f47c;\n        }\n      }\nLAB_0014f4c0:\n    }\n    iVar5 = FUN_00067fc0();\n    if ((iVar5 == 0) && (puVar6 = (undefined4 *)FUN_00055780(), puVar6 != (undefined4 *)0x0)) {\n      *puVar6 = 0;\n      puVar6[8] = 0;\n      puVar13 = (undefined4 *)((uint)(puVar6 + 1) & 0xfffffffc);\n      for (uVar8 = (uint)((int)puVar6 + (0x24 - (int)((uint)(puVar6 + 1) & 0xfffffffc))) >> 2;\n          uVar8 != 0; uVar8 = uVar8 - 1) {\n        *puVar13 = 0;\n        puVar13 = puVar13 + (uint)bVar14 * -2 + 1;\n      }\n      puVar6[1] = puVar6 + 9;\n      memcpy(puVar6 + 9,param_2,(sVar3 & 0x3fffffff) + 1);\n      uVar12 = 0;\n      puVar13 = (undefined4 *)param_1[10];\n      if ((undefined4 *)param_1[10] == (undefined4 *)0x0) {\n        param_1[10] = (int)puVar6;\n      }\n      else {\n        do {\n          puVar9 = puVar13;\n          puVar13 = (undefined4 *)*puVar9;\n        } while (puVar13 != (undefined4 *)0x0);\n        *puVar9 = puVar6;\n      }\n    }\n    else {\n      uVar12 = 7;\n    }\n  }\nLAB_0014f47c:\n  if (*(int *)(*param_1 + 0xc) != 0) {\n    (**(code **)(unaff_EDI + 0x6c0bd))(*(int *)(*param_1 + 0xc));\n  }\n  return uVar12;\n}" { (declaration "byte *pbVar1;" type_identifier (pointer_declarator "*pbVar1" * identifier) ;) (declaration "byte *pbVar2;" type_identifier (pointer_declarator "*pbVar2" * identifier) ;) (declaration "size_t sVar3;" primitive_type identifier ;) (declaration "byte *pbVar4;" type_identifier (pointer_declarator "*pbVar4" * identifier) ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "undefined4 *puVar6;" type_identifier (pointer_declarator "*puVar6" * identifier) ;) (declaration "char cVar7;" primitive_type identifier ;) (declaration "uint uVar8;" type_identifier identifier ;) (declaration "undefined4 *puVar9;" type_identifier (pointer_declarator "*puVar9" * identifier) ;) (declaration "char cVar10;" primitive_type identifier ;) (declaration "byte *pbVar11;" type_identifier (pointer_declarator "*pbVar11" * identifier) ;) (declaration "undefined4 uVar12;" type_identifier identifier ;) (declaration "int unaff_EDI;" primitive_type identifier ;) (declaration "undefined4 *puVar13;" type_identifier (pointer_declarator "*puVar13" * identifier) ;) (declaration "byte bVar14;" type_identifier identifier ;) (declaration "uint local_30;" type_identifier identifier ;) (expression_statement "bVar14 = 0;" (assignment_expression "bVar14 = 0" identifier = number_literal) ;) (expression_statement "FUN_0003a401();" (call_expression "FUN_0003a401()" identifier (argument_list "()" ( ))) ;) (if_statement "if (*(int *)(*param_1 + 0xc) != 0) {\n    (**(code **)(unaff_EDI + 0x6c0b5))(*(int *)(*param_1 + 0xc));\n  }" if (parenthesized_expression "(*(int *)(*param_1 + 0xc) != 0)" ( (binary_expression "*(int *)(*param_1 + 0xc) != 0" (pointer_expression "*(int *)(*param_1 + 0xc)" * (cast_expression "(int *)(*param_1 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*param_1 + 0xc)" ( (binary_expression "*param_1 + 0xc" (pointer_expression "*param_1" * identifier) + number_literal) )))) != number_literal) )) (compound_statement "{\n    (**(code **)(unaff_EDI + 0x6c0b5))(*(int *)(*param_1 + 0xc));\n  }" { (expression_statement "(**(code **)(unaff_EDI + 0x6c0b5))(*(int *)(*param_1 + 0xc));" (call_expression "(**(code **)(unaff_EDI + 0x6c0b5))(*(int *)(*param_1 + 0xc))" (parenthesized_expression "(**(code **)(unaff_EDI + 0x6c0b5))" ( (pointer_expression "**(code **)(unaff_EDI + 0x6c0b5)" * (pointer_expression "*(code **)(unaff_EDI + 0x6c0b5)" * (cast_expression "(code **)(unaff_EDI + 0x6c0b5)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(unaff_EDI + 0x6c0b5)" ( (binary_expression "unaff_EDI + 0x6c0b5" identifier + number_literal) ))))) )) (argument_list "(*(int *)(*param_1 + 0xc))" ( (pointer_expression "*(int *)(*param_1 + 0xc)" * (cast_expression "(int *)(*param_1 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*param_1 + 0xc)" ( (binary_expression "*param_1 + 0xc" (pointer_expression "*param_1" * identifier) + number_literal) )))) ))) ;) })) (if_statement "if (param_2 == (byte *)0x0) {\n    uVar12 = 0;\n    param_1[4] = 1;\n  }\n  else {\n    sVar3 = strlen((char *)param_2);\n    for (puVar6 = (undefined4 *)param_1[10]; puVar6 != (undefined4 *)0x0;\n        puVar6 = (undefined4 *)*puVar6) {\n      pbVar2 = (byte *)puVar6[1];\n      if (pbVar2 != (byte *)0x0) {\n        iVar5 = unaff_EDI + 0x1a459;\n        cVar7 = *(char *)(unaff_EDI + 0x1a459 + (uint)*pbVar2);\n        cVar10 = *(char *)(unaff_EDI + 0x1a459 + (uint)*param_2);\n        if (*pbVar2 != 0) {\n          pbVar1 = param_2;\n          local_30 = sVar3 & 0x3fffffff;\n          if (cVar7 != cVar10) goto LAB_0014f4c0;\n          do {\n            pbVar11 = pbVar1;\n            pbVar4 = pbVar2;\n            local_30 = local_30 - 1;\n            pbVar1 = pbVar11 + 1;\n            if (local_30 == 0xffffffff) goto LAB_0014f47a;\n          } while ((pbVar4[1] != 0) &&\n                  (pbVar2 = pbVar4 + 1,\n                  *(char *)(iVar5 + (uint)pbVar4[1]) == *(char *)(iVar5 + (uint)*pbVar1)));\n          cVar7 = *(char *)(iVar5 + (uint)pbVar4[1]);\n          cVar10 = *(char *)(iVar5 + (uint)pbVar11[1]);\n        }\n        if (cVar7 == cVar10) {\nLAB_0014f47a:\n          uVar12 = 0;\n          goto LAB_0014f47c;\n        }\n      }\nLAB_0014f4c0:\n    }\n    iVar5 = FUN_00067fc0();\n    if ((iVar5 == 0) && (puVar6 = (undefined4 *)FUN_00055780(), puVar6 != (undefined4 *)0x0)) {\n      *puVar6 = 0;\n      puVar6[8] = 0;\n      puVar13 = (undefined4 *)((uint)(puVar6 + 1) & 0xfffffffc);\n      for (uVar8 = (uint)((int)puVar6 + (0x24 - (int)((uint)(puVar6 + 1) & 0xfffffffc))) >> 2;\n          uVar8 != 0; uVar8 = uVar8 - 1) {\n        *puVar13 = 0;\n        puVar13 = puVar13 + (uint)bVar14 * -2 + 1;\n      }\n      puVar6[1] = puVar6 + 9;\n      memcpy(puVar6 + 9,param_2,(sVar3 & 0x3fffffff) + 1);\n      uVar12 = 0;\n      puVar13 = (undefined4 *)param_1[10];\n      if ((undefined4 *)param_1[10] == (undefined4 *)0x0) {\n        param_1[10] = (int)puVar6;\n      }\n      else {\n        do {\n          puVar9 = puVar13;\n          puVar13 = (undefined4 *)*puVar9;\n        } while (puVar13 != (undefined4 *)0x0);\n        *puVar9 = puVar6;\n      }\n    }\n    else {\n      uVar12 = 7;\n    }\n  }\nLAB_0014f47c:\n  if (*(int *)(*param_1 + 0xc) != 0) {\n    (**(code **)(unaff_EDI + 0x6c0bd))(*(int *)(*param_1 + 0xc));\n  }\n  return uVar12;\n}" if (parenthesized_expression "(param_2 == (byte *)0x0)" ( (binary_expression "param_2 == (byte *)0x0" identifier == (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    uVar12 = 0;\n    param_1[4] = 1;\n  }" { (expression_statement "uVar12 = 0;" (assignment_expression "uVar12 = 0" identifier = number_literal) ;) (expression_statement "param_1[4] = 1;" (assignment_expression "param_1[4] = 1" (subscript_expression "param_1[4]" identifier [ number_literal ]) = number_literal) ;) }) (else_clause "else {\n    sVar3 = strlen((char *)param_2);\n    for (puVar6 = (undefined4 *)param_1[10]; puVar6 != (undefined4 *)0x0;\n        puVar6 = (undefined4 *)*puVar6) {\n      pbVar2 = (byte *)puVar6[1];\n      if (pbVar2 != (byte *)0x0) {\n        iVar5 = unaff_EDI + 0x1a459;\n        cVar7 = *(char *)(unaff_EDI + 0x1a459 + (uint)*pbVar2);\n        cVar10 = *(char *)(unaff_EDI + 0x1a459 + (uint)*param_2);\n        if (*pbVar2 != 0) {\n          pbVar1 = param_2;\n          local_30 = sVar3 & 0x3fffffff;\n          if (cVar7 != cVar10) goto LAB_0014f4c0;\n          do {\n            pbVar11 = pbVar1;\n            pbVar4 = pbVar2;\n            local_30 = local_30 - 1;\n            pbVar1 = pbVar11 + 1;\n            if (local_30 == 0xffffffff) goto LAB_0014f47a;\n          } while ((pbVar4[1] != 0) &&\n                  (pbVar2 = pbVar4 + 1,\n                  *(char *)(iVar5 + (uint)pbVar4[1]) == *(char *)(iVar5 + (uint)*pbVar1)));\n          cVar7 = *(char *)(iVar5 + (uint)pbVar4[1]);\n          cVar10 = *(char *)(iVar5 + (uint)pbVar11[1]);\n        }\n        if (cVar7 == cVar10) {\nLAB_0014f47a:\n          uVar12 = 0;\n          goto LAB_0014f47c;\n        }\n      }\nLAB_0014f4c0:\n    }\n    iVar5 = FUN_00067fc0();\n    if ((iVar5 == 0) && (puVar6 = (undefined4 *)FUN_00055780(), puVar6 != (undefined4 *)0x0)) {\n      *puVar6 = 0;\n      puVar6[8] = 0;\n      puVar13 = (undefined4 *)((uint)(puVar6 + 1) & 0xfffffffc);\n      for (uVar8 = (uint)((int)puVar6 + (0x24 - (int)((uint)(puVar6 + 1) & 0xfffffffc))) >> 2;\n          uVar8 != 0; uVar8 = uVar8 - 1) {\n        *puVar13 = 0;\n        puVar13 = puVar13 + (uint)bVar14 * -2 + 1;\n      }\n      puVar6[1] = puVar6 + 9;\n      memcpy(puVar6 + 9,param_2,(sVar3 & 0x3fffffff) + 1);\n      uVar12 = 0;\n      puVar13 = (undefined4 *)param_1[10];\n      if ((undefined4 *)param_1[10] == (undefined4 *)0x0) {\n        param_1[10] = (int)puVar6;\n      }\n      else {\n        do {\n          puVar9 = puVar13;\n          puVar13 = (undefined4 *)*puVar9;\n        } while (puVar13 != (undefined4 *)0x0);\n        *puVar9 = puVar6;\n      }\n    }\n    else {\n      uVar12 = 7;\n    }\n  }\nLAB_0014f47c:\n  if (*(int *)(*param_1 + 0xc) != 0) {\n    (**(code **)(unaff_EDI + 0x6c0bd))(*(int *)(*param_1 + 0xc));\n  }\n  return uVar12;\n}" else (compound_statement "{\n    sVar3 = strlen((char *)param_2);\n    for (puVar6 = (undefined4 *)param_1[10]; puVar6 != (undefined4 *)0x0;\n        puVar6 = (undefined4 *)*puVar6) {\n      pbVar2 = (byte *)puVar6[1];\n      if (pbVar2 != (byte *)0x0) {\n        iVar5 = unaff_EDI + 0x1a459;\n        cVar7 = *(char *)(unaff_EDI + 0x1a459 + (uint)*pbVar2);\n        cVar10 = *(char *)(unaff_EDI + 0x1a459 + (uint)*param_2);\n        if (*pbVar2 != 0) {\n          pbVar1 = param_2;\n          local_30 = sVar3 & 0x3fffffff;\n          if (cVar7 != cVar10) goto LAB_0014f4c0;\n          do {\n            pbVar11 = pbVar1;\n            pbVar4 = pbVar2;\n            local_30 = local_30 - 1;\n            pbVar1 = pbVar11 + 1;\n            if (local_30 == 0xffffffff) goto LAB_0014f47a;\n          } while ((pbVar4[1] != 0) &&\n                  (pbVar2 = pbVar4 + 1,\n                  *(char *)(iVar5 + (uint)pbVar4[1]) == *(char *)(iVar5 + (uint)*pbVar1)));\n          cVar7 = *(char *)(iVar5 + (uint)pbVar4[1]);\n          cVar10 = *(char *)(iVar5 + (uint)pbVar11[1]);\n        }\n        if (cVar7 == cVar10) {\nLAB_0014f47a:\n          uVar12 = 0;\n          goto LAB_0014f47c;\n        }\n      }\nLAB_0014f4c0:\n    }\n    iVar5 = FUN_00067fc0();\n    if ((iVar5 == 0) && (puVar6 = (undefined4 *)FUN_00055780(), puVar6 != (undefined4 *)0x0)) {\n      *puVar6 = 0;\n      puVar6[8] = 0;\n      puVar13 = (undefined4 *)((uint)(puVar6 + 1) & 0xfffffffc);\n      for (uVar8 = (uint)((int)puVar6 + (0x24 - (int)((uint)(puVar6 + 1) & 0xfffffffc))) >> 2;\n          uVar8 != 0; uVar8 = uVar8 - 1) {\n        *puVar13 = 0;\n        puVar13 = puVar13 + (uint)bVar14 * -2 + 1;\n      }\n      puVar6[1] = puVar6 + 9;\n      memcpy(puVar6 + 9,param_2,(sVar3 & 0x3fffffff) + 1);\n      uVar12 = 0;\n      puVar13 = (undefined4 *)param_1[10];\n      if ((undefined4 *)param_1[10] == (undefined4 *)0x0) {\n        param_1[10] = (int)puVar6;\n      }\n      else {\n        do {\n          puVar9 = puVar13;\n          puVar13 = (undefined4 *)*puVar9;\n        } while (puVar13 != (undefined4 *)0x0);\n        *puVar9 = puVar6;\n      }\n    }\n    else {\n      uVar12 = 7;\n    }\n  }\nLAB_0014f47c:\n  if (*(int *)(*param_1 + 0xc) != 0) {\n    (**(code **)(unaff_EDI + 0x6c0bd))(*(int *)(*param_1 + 0xc));\n  }\n  return uVar12;\n}" { (expression_statement "sVar3 = strlen((char *)param_2);" (assignment_expression "sVar3 = strlen((char *)param_2)" identifier = (call_expression "strlen((char *)param_2)" identifier (argument_list "((char *)param_2)" ( (cast_expression "(char *)param_2" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) )))) ;) (for_statement "for (puVar6 = (undefined4 *)param_1[10]; puVar6 != (undefined4 *)0x0;\n        puVar6 = (undefined4 *)*puVar6) {\n      pbVar2 = (byte *)puVar6[1];\n      if (pbVar2 != (byte *)0x0) {\n        iVar5 = unaff_EDI + 0x1a459;\n        cVar7 = *(char *)(unaff_EDI + 0x1a459 + (uint)*pbVar2);\n        cVar10 = *(char *)(unaff_EDI + 0x1a459 + (uint)*param_2);\n        if (*pbVar2 != 0) {\n          pbVar1 = param_2;\n          local_30 = sVar3 & 0x3fffffff;\n          if (cVar7 != cVar10) goto LAB_0014f4c0;\n          do {\n            pbVar11 = pbVar1;\n            pbVar4 = pbVar2;\n            local_30 = local_30 - 1;\n            pbVar1 = pbVar11 + 1;\n            if (local_30 == 0xffffffff) goto LAB_0014f47a;\n          } while ((pbVar4[1] != 0) &&\n                  (pbVar2 = pbVar4 + 1,\n                  *(char *)(iVar5 + (uint)pbVar4[1]) == *(char *)(iVar5 + (uint)*pbVar1)));\n          cVar7 = *(char *)(iVar5 + (uint)pbVar4[1]);\n          cVar10 = *(char *)(iVar5 + (uint)pbVar11[1]);\n        }\n        if (cVar7 == cVar10) {\nLAB_0014f47a:\n          uVar12 = 0;\n          goto LAB_0014f47c;\n        }\n      }\nLAB_0014f4c0:\n    }\n    iVar5 = FUN_00067fc0();\n    if ((iVar5 == 0) && (puVar6 = (undefined4 *)FUN_00055780(), puVar6 != (undefined4 *)0x0)) {\n      *puVar6 = 0;\n      puVar6[8] = 0;\n      puVar13 = (undefined4 *)((uint)(puVar6 + 1) & 0xfffffffc);\n      for (uVar8 = (uint)((int)puVar6 + (0x24 - (int)((uint)(puVar6 + 1) & 0xfffffffc))) >> 2;\n          uVar8 != 0; uVar8 = uVar8 - 1) {\n        *puVar13 = 0;\n        puVar13 = puVar13 + (uint)bVar14 * -2 + 1;\n      }\n      puVar6[1] = puVar6 + 9;\n      memcpy(puVar6 + 9,param_2,(sVar3 & 0x3fffffff) + 1);\n      uVar12 = 0;\n      puVar13 = (undefined4 *)param_1[10];\n      if ((undefined4 *)param_1[10] == (undefined4 *)0x0) {\n        param_1[10] = (int)puVar6;\n      }\n      else {\n        do {\n          puVar9 = puVar13;\n          puVar13 = (undefined4 *)*puVar9;\n        } while (puVar13 != (undefined4 *)0x0);\n        *puVar9 = puVar6;\n      }\n    }\n    else {\n      uVar12 = 7;\n    }\n  }" for ( (assignment_expression "puVar6 = (undefined4 *)param_1[10]" identifier = (cast_expression "(undefined4 *)param_1[10]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[10]" identifier [ number_literal ]))) ; (binary_expression "puVar6 != (undefined4 *)0x0" identifier != (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ; (assignment_expression "puVar6 = (undefined4 *)*puVar6" identifier = (cast_expression "(undefined4 *)*puVar6" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar6" * identifier))) ) (compound_statement "{\n      pbVar2 = (byte *)puVar6[1];\n      if (pbVar2 != (byte *)0x0) {\n        iVar5 = unaff_EDI + 0x1a459;\n        cVar7 = *(char *)(unaff_EDI + 0x1a459 + (uint)*pbVar2);\n        cVar10 = *(char *)(unaff_EDI + 0x1a459 + (uint)*param_2);\n        if (*pbVar2 != 0) {\n          pbVar1 = param_2;\n          local_30 = sVar3 & 0x3fffffff;\n          if (cVar7 != cVar10) goto LAB_0014f4c0;\n          do {\n            pbVar11 = pbVar1;\n            pbVar4 = pbVar2;\n            local_30 = local_30 - 1;\n            pbVar1 = pbVar11 + 1;\n            if (local_30 == 0xffffffff) goto LAB_0014f47a;\n          } while ((pbVar4[1] != 0) &&\n                  (pbVar2 = pbVar4 + 1,\n                  *(char *)(iVar5 + (uint)pbVar4[1]) == *(char *)(iVar5 + (uint)*pbVar1)));\n          cVar7 = *(char *)(iVar5 + (uint)pbVar4[1]);\n          cVar10 = *(char *)(iVar5 + (uint)pbVar11[1]);\n        }\n        if (cVar7 == cVar10) {\nLAB_0014f47a:\n          uVar12 = 0;\n          goto LAB_0014f47c;\n        }\n      }\nLAB_0014f4c0:\n    }\n    iVar5 = FUN_00067fc0();\n    if ((iVar5 == 0) && (puVar6 = (undefined4 *)FUN_00055780(), puVar6 != (undefined4 *)0x0)) {\n      *puVar6 = 0;\n      puVar6[8] = 0;\n      puVar13 = (undefined4 *)((uint)(puVar6 + 1) & 0xfffffffc);\n      for (uVar8 = (uint)((int)puVar6 + (0x24 - (int)((uint)(puVar6 + 1) & 0xfffffffc))) >> 2;\n          uVar8 != 0; uVar8 = uVar8 - 1) {\n        *puVar13 = 0;\n        puVar13 = puVar13 + (uint)bVar14 * -2 + 1;\n      }\n      puVar6[1] = puVar6 + 9;\n      memcpy(puVar6 + 9,param_2,(sVar3 & 0x3fffffff) + 1);\n      uVar12 = 0;\n      puVar13 = (undefined4 *)param_1[10];\n      if ((undefined4 *)param_1[10] == (undefined4 *)0x0) {\n        param_1[10] = (int)puVar6;\n      }\n      else {\n        do {\n          puVar9 = puVar13;\n          puVar13 = (undefined4 *)*puVar9;\n        } while (puVar13 != (undefined4 *)0x0);\n        *puVar9 = puVar6;\n      }\n    }\n    else {\n      uVar12 = 7;\n    }\n  }" { (expression_statement "pbVar2 = (byte *)puVar6[1];" (assignment_expression "pbVar2 = (byte *)puVar6[1]" identifier = (cast_expression "(byte *)puVar6[1]" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar6[1]" identifier [ number_literal ]))) ;) (if_statement "if (pbVar2 != (byte *)0x0) {\n        iVar5 = unaff_EDI + 0x1a459;\n        cVar7 = *(char *)(unaff_EDI + 0x1a459 + (uint)*pbVar2);\n        cVar10 = *(char *)(unaff_EDI + 0x1a459 + (uint)*param_2);\n        if (*pbVar2 != 0) {\n          pbVar1 = param_2;\n          local_30 = sVar3 & 0x3fffffff;\n          if (cVar7 != cVar10) goto LAB_0014f4c0;\n          do {\n            pbVar11 = pbVar1;\n            pbVar4 = pbVar2;\n            local_30 = local_30 - 1;\n            pbVar1 = pbVar11 + 1;\n            if (local_30 == 0xffffffff) goto LAB_0014f47a;\n          } while ((pbVar4[1] != 0) &&\n                  (pbVar2 = pbVar4 + 1,\n                  *(char *)(iVar5 + (uint)pbVar4[1]) == *(char *)(iVar5 + (uint)*pbVar1)));\n          cVar7 = *(char *)(iVar5 + (uint)pbVar4[1]);\n          cVar10 = *(char *)(iVar5 + (uint)pbVar11[1]);\n        }\n        if (cVar7 == cVar10) {\nLAB_0014f47a:\n          uVar12 = 0;\n          goto LAB_0014f47c;\n        }\n      }" if (parenthesized_expression "(pbVar2 != (byte *)0x0)" ( (binary_expression "pbVar2 != (byte *)0x0" identifier != (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        iVar5 = unaff_EDI + 0x1a459;\n        cVar7 = *(char *)(unaff_EDI + 0x1a459 + (uint)*pbVar2);\n        cVar10 = *(char *)(unaff_EDI + 0x1a459 + (uint)*param_2);\n        if (*pbVar2 != 0) {\n          pbVar1 = param_2;\n          local_30 = sVar3 & 0x3fffffff;\n          if (cVar7 != cVar10) goto LAB_0014f4c0;\n          do {\n            pbVar11 = pbVar1;\n            pbVar4 = pbVar2;\n            local_30 = local_30 - 1;\n            pbVar1 = pbVar11 + 1;\n            if (local_30 == 0xffffffff) goto LAB_0014f47a;\n          } while ((pbVar4[1] != 0) &&\n                  (pbVar2 = pbVar4 + 1,\n                  *(char *)(iVar5 + (uint)pbVar4[1]) == *(char *)(iVar5 + (uint)*pbVar1)));\n          cVar7 = *(char *)(iVar5 + (uint)pbVar4[1]);\n          cVar10 = *(char *)(iVar5 + (uint)pbVar11[1]);\n        }\n        if (cVar7 == cVar10) {\nLAB_0014f47a:\n          uVar12 = 0;\n          goto LAB_0014f47c;\n        }\n      }" { (expression_statement "iVar5 = unaff_EDI + 0x1a459;" (assignment_expression "iVar5 = unaff_EDI + 0x1a459" identifier = (binary_expression "unaff_EDI + 0x1a459" identifier + number_literal)) ;) (expression_statement "cVar7 = *(char *)(unaff_EDI + 0x1a459 + (uint)*pbVar2);" (assignment_expression "cVar7 = *(char *)(unaff_EDI + 0x1a459 + (uint)*pbVar2)" identifier = (pointer_expression "*(char *)(unaff_EDI + 0x1a459 + (uint)*pbVar2)" * (cast_expression "(char *)(unaff_EDI + 0x1a459 + (uint)*pbVar2)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x1a459 + (uint)*pbVar2)" ( (binary_expression "unaff_EDI + 0x1a459 + (uint)*pbVar2" (binary_expression "unaff_EDI + 0x1a459" identifier + number_literal) + (binary_expression "(uint)*pbVar2" (parenthesized_expression "(uint)" ( identifier )) * identifier)) ))))) ;) (expression_statement "cVar10 = *(char *)(unaff_EDI + 0x1a459 + (uint)*param_2);" (assignment_expression "cVar10 = *(char *)(unaff_EDI + 0x1a459 + (uint)*param_2)" identifier = (pointer_expression "*(char *)(unaff_EDI + 0x1a459 + (uint)*param_2)" * (cast_expression "(char *)(unaff_EDI + 0x1a459 + (uint)*param_2)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x1a459 + (uint)*param_2)" ( (binary_expression "unaff_EDI + 0x1a459 + (uint)*param_2" (binary_expression "unaff_EDI + 0x1a459" identifier + number_literal) + (binary_expression "(uint)*param_2" (parenthesized_expression "(uint)" ( identifier )) * identifier)) ))))) ;) (if_statement "if (*pbVar2 != 0) {\n          pbVar1 = param_2;\n          local_30 = sVar3 & 0x3fffffff;\n          if (cVar7 != cVar10) goto LAB_0014f4c0;\n          do {\n            pbVar11 = pbVar1;\n            pbVar4 = pbVar2;\n            local_30 = local_30 - 1;\n            pbVar1 = pbVar11 + 1;\n            if (local_30 == 0xffffffff) goto LAB_0014f47a;\n          } while ((pbVar4[1] != 0) &&\n                  (pbVar2 = pbVar4 + 1,\n                  *(char *)(iVar5 + (uint)pbVar4[1]) == *(char *)(iVar5 + (uint)*pbVar1)));\n          cVar7 = *(char *)(iVar5 + (uint)pbVar4[1]);\n          cVar10 = *(char *)(iVar5 + (uint)pbVar11[1]);\n        }" if (parenthesized_expression "(*pbVar2 != 0)" ( (binary_expression "*pbVar2 != 0" (pointer_expression "*pbVar2" * identifier) != number_literal) )) (compound_statement "{\n          pbVar1 = param_2;\n          local_30 = sVar3 & 0x3fffffff;\n          if (cVar7 != cVar10) goto LAB_0014f4c0;\n          do {\n            pbVar11 = pbVar1;\n            pbVar4 = pbVar2;\n            local_30 = local_30 - 1;\n            pbVar1 = pbVar11 + 1;\n            if (local_30 == 0xffffffff) goto LAB_0014f47a;\n          } while ((pbVar4[1] != 0) &&\n                  (pbVar2 = pbVar4 + 1,\n                  *(char *)(iVar5 + (uint)pbVar4[1]) == *(char *)(iVar5 + (uint)*pbVar1)));\n          cVar7 = *(char *)(iVar5 + (uint)pbVar4[1]);\n          cVar10 = *(char *)(iVar5 + (uint)pbVar11[1]);\n        }" { (expression_statement "pbVar1 = param_2;" (assignment_expression "pbVar1 = param_2" identifier = identifier) ;) (expression_statement "local_30 = sVar3 & 0x3fffffff;" (assignment_expression "local_30 = sVar3 & 0x3fffffff" identifier = (binary_expression "sVar3 & 0x3fffffff" identifier & number_literal)) ;) (if_statement "if (cVar7 != cVar10) goto LAB_0014f4c0;" if (parenthesized_expression "(cVar7 != cVar10)" ( (binary_expression "cVar7 != cVar10" identifier != identifier) )) (goto_statement "goto LAB_0014f4c0;" goto statement_identifier ;)) (do_statement "do {\n            pbVar11 = pbVar1;\n            pbVar4 = pbVar2;\n            local_30 = local_30 - 1;\n            pbVar1 = pbVar11 + 1;\n            if (local_30 == 0xffffffff) goto LAB_0014f47a;\n          } while ((pbVar4[1] != 0) &&\n                  (pbVar2 = pbVar4 + 1,\n                  *(char *)(iVar5 + (uint)pbVar4[1]) == *(char *)(iVar5 + (uint)*pbVar1)));" do (compound_statement "{\n            pbVar11 = pbVar1;\n            pbVar4 = pbVar2;\n            local_30 = local_30 - 1;\n            pbVar1 = pbVar11 + 1;\n            if (local_30 == 0xffffffff) goto LAB_0014f47a;\n          }" { (expression_statement "pbVar11 = pbVar1;" (assignment_expression "pbVar11 = pbVar1" identifier = identifier) ;) (expression_statement "pbVar4 = pbVar2;" (assignment_expression "pbVar4 = pbVar2" identifier = identifier) ;) (expression_statement "local_30 = local_30 - 1;" (assignment_expression "local_30 = local_30 - 1" identifier = (binary_expression "local_30 - 1" identifier - number_literal)) ;) (expression_statement "pbVar1 = pbVar11 + 1;" (assignment_expression "pbVar1 = pbVar11 + 1" identifier = (binary_expression "pbVar11 + 1" identifier + number_literal)) ;) (if_statement "if (local_30 == 0xffffffff) goto LAB_0014f47a;" if (parenthesized_expression "(local_30 == 0xffffffff)" ( (binary_expression "local_30 == 0xffffffff" identifier == number_literal) )) (goto_statement "goto LAB_0014f47a;" goto statement_identifier ;)) }) while (parenthesized_expression "((pbVar4[1] != 0) &&\n                  (pbVar2 = pbVar4 + 1,\n                  *(char *)(iVar5 + (uint)pbVar4[1]) == *(char *)(iVar5 + (uint)*pbVar1)))" ( (binary_expression "(pbVar4[1] != 0) &&\n                  (pbVar2 = pbVar4 + 1,\n                  *(char *)(iVar5 + (uint)pbVar4[1]) == *(char *)(iVar5 + (uint)*pbVar1))" (parenthesized_expression "(pbVar4[1] != 0)" ( (binary_expression "pbVar4[1] != 0" (subscript_expression "pbVar4[1]" identifier [ number_literal ]) != number_literal) )) && (parenthesized_expression "(pbVar2 = pbVar4 + 1,\n                  *(char *)(iVar5 + (uint)pbVar4[1]) == *(char *)(iVar5 + (uint)*pbVar1))" ( (comma_expression "pbVar2 = pbVar4 + 1,\n                  *(char *)(iVar5 + (uint)pbVar4[1]) == *(char *)(iVar5 + (uint)*pbVar1)" (assignment_expression "pbVar2 = pbVar4 + 1" identifier = (binary_expression "pbVar4 + 1" identifier + number_literal)) , (binary_expression "*(char *)(iVar5 + (uint)pbVar4[1]) == *(char *)(iVar5 + (uint)*pbVar1)" (pointer_expression "*(char *)(iVar5 + (uint)pbVar4[1])" * (cast_expression "(char *)(iVar5 + (uint)pbVar4[1])" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + (uint)pbVar4[1])" ( (binary_expression "iVar5 + (uint)pbVar4[1]" identifier + (cast_expression "(uint)pbVar4[1]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "pbVar4[1]" identifier [ number_literal ]))) )))) == (pointer_expression "*(char *)(iVar5 + (uint)*pbVar1)" * (cast_expression "(char *)(iVar5 + (uint)*pbVar1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + (uint)*pbVar1)" ( (binary_expression "iVar5 + (uint)*pbVar1" identifier + (binary_expression "(uint)*pbVar1" (parenthesized_expression "(uint)" ( identifier )) * identifier)) )))))) ))) )) ;) (expression_statement "cVar7 = *(char *)(iVar5 + (uint)pbVar4[1]);" (assignment_expression "cVar7 = *(char *)(iVar5 + (uint)pbVar4[1])" identifier = (pointer_expression "*(char *)(iVar5 + (uint)pbVar4[1])" * (cast_expression "(char *)(iVar5 + (uint)pbVar4[1])" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + (uint)pbVar4[1])" ( (binary_expression "iVar5 + (uint)pbVar4[1]" identifier + (cast_expression "(uint)pbVar4[1]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "pbVar4[1]" identifier [ number_literal ]))) ))))) ;) (expression_statement "cVar10 = *(char *)(iVar5 + (uint)pbVar11[1]);" (assignment_expression "cVar10 = *(char *)(iVar5 + (uint)pbVar11[1])" identifier = (pointer_expression "*(char *)(iVar5 + (uint)pbVar11[1])" * (cast_expression "(char *)(iVar5 + (uint)pbVar11[1])" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + (uint)pbVar11[1])" ( (binary_expression "iVar5 + (uint)pbVar11[1]" identifier + (cast_expression "(uint)pbVar11[1]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "pbVar11[1]" identifier [ number_literal ]))) ))))) ;) })) (if_statement "if (cVar7 == cVar10) {\nLAB_0014f47a:\n          uVar12 = 0;\n          goto LAB_0014f47c;\n        }" if (parenthesized_expression "(cVar7 == cVar10)" ( (binary_expression "cVar7 == cVar10" identifier == identifier) )) (compound_statement "{\nLAB_0014f47a:\n          uVar12 = 0;\n          goto LAB_0014f47c;\n        }" { (labeled_statement "LAB_0014f47a:\n          uVar12 = 0;" statement_identifier : (expression_statement "uVar12 = 0;" (assignment_expression "uVar12 = 0" identifier = number_literal) ;)) (goto_statement "goto LAB_0014f47c;" goto statement_identifier ;) })) })) (labeled_statement "LAB_0014f4c0:\n    }\n    iVar5 = FUN_00067fc0();" statement_identifier : (ERROR "}" }) (expression_statement "iVar5 = FUN_00067fc0();" (assignment_expression "iVar5 = FUN_00067fc0()" identifier = (call_expression "FUN_00067fc0()" identifier (argument_list "()" ( )))) ;)) (if_statement "if ((iVar5 == 0) && (puVar6 = (undefined4 *)FUN_00055780(), puVar6 != (undefined4 *)0x0)) {\n      *puVar6 = 0;\n      puVar6[8] = 0;\n      puVar13 = (undefined4 *)((uint)(puVar6 + 1) & 0xfffffffc);\n      for (uVar8 = (uint)((int)puVar6 + (0x24 - (int)((uint)(puVar6 + 1) & 0xfffffffc))) >> 2;\n          uVar8 != 0; uVar8 = uVar8 - 1) {\n        *puVar13 = 0;\n        puVar13 = puVar13 + (uint)bVar14 * -2 + 1;\n      }\n      puVar6[1] = puVar6 + 9;\n      memcpy(puVar6 + 9,param_2,(sVar3 & 0x3fffffff) + 1);\n      uVar12 = 0;\n      puVar13 = (undefined4 *)param_1[10];\n      if ((undefined4 *)param_1[10] == (undefined4 *)0x0) {\n        param_1[10] = (int)puVar6;\n      }\n      else {\n        do {\n          puVar9 = puVar13;\n          puVar13 = (undefined4 *)*puVar9;\n        } while (puVar13 != (undefined4 *)0x0);\n        *puVar9 = puVar6;\n      }\n    }\n    else {\n      uVar12 = 7;\n    }" if (parenthesized_expression "((iVar5 == 0) && (puVar6 = (undefined4 *)FUN_00055780(), puVar6 != (undefined4 *)0x0))" ( (binary_expression "(iVar5 == 0) && (puVar6 = (undefined4 *)FUN_00055780(), puVar6 != (undefined4 *)0x0)" (parenthesized_expression "(iVar5 == 0)" ( (binary_expression "iVar5 == 0" identifier == number_literal) )) && (parenthesized_expression "(puVar6 = (undefined4 *)FUN_00055780(), puVar6 != (undefined4 *)0x0)" ( (comma_expression "puVar6 = (undefined4 *)FUN_00055780(), puVar6 != (undefined4 *)0x0" (assignment_expression "puVar6 = (undefined4 *)FUN_00055780()" identifier = (cast_expression "(undefined4 *)FUN_00055780()" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00055780()" identifier (argument_list "()" ( ))))) , (binary_expression "puVar6 != (undefined4 *)0x0" identifier != (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) ))) )) (compound_statement "{\n      *puVar6 = 0;\n      puVar6[8] = 0;\n      puVar13 = (undefined4 *)((uint)(puVar6 + 1) & 0xfffffffc);\n      for (uVar8 = (uint)((int)puVar6 + (0x24 - (int)((uint)(puVar6 + 1) & 0xfffffffc))) >> 2;\n          uVar8 != 0; uVar8 = uVar8 - 1) {\n        *puVar13 = 0;\n        puVar13 = puVar13 + (uint)bVar14 * -2 + 1;\n      }\n      puVar6[1] = puVar6 + 9;\n      memcpy(puVar6 + 9,param_2,(sVar3 & 0x3fffffff) + 1);\n      uVar12 = 0;\n      puVar13 = (undefined4 *)param_1[10];\n      if ((undefined4 *)param_1[10] == (undefined4 *)0x0) {\n        param_1[10] = (int)puVar6;\n      }\n      else {\n        do {\n          puVar9 = puVar13;\n          puVar13 = (undefined4 *)*puVar9;\n        } while (puVar13 != (undefined4 *)0x0);\n        *puVar9 = puVar6;\n      }\n    }" { (expression_statement "*puVar6 = 0;" (assignment_expression "*puVar6 = 0" (pointer_expression "*puVar6" * identifier) = number_literal) ;) (expression_statement "puVar6[8] = 0;" (assignment_expression "puVar6[8] = 0" (subscript_expression "puVar6[8]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar13 = (undefined4 *)((uint)(puVar6 + 1) & 0xfffffffc);" (assignment_expression "puVar13 = (undefined4 *)((uint)(puVar6 + 1) & 0xfffffffc)" identifier = (cast_expression "(undefined4 *)((uint)(puVar6 + 1) & 0xfffffffc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((uint)(puVar6 + 1) & 0xfffffffc)" ( (binary_expression "(uint)(puVar6 + 1) & 0xfffffffc" (call_expression "(uint)(puVar6 + 1)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(puVar6 + 1)" ( (binary_expression "puVar6 + 1" identifier + number_literal) ))) & number_literal) )))) ;) (for_statement "for (uVar8 = (uint)((int)puVar6 + (0x24 - (int)((uint)(puVar6 + 1) & 0xfffffffc))) >> 2;\n          uVar8 != 0; uVar8 = uVar8 - 1) {\n        *puVar13 = 0;\n        puVar13 = puVar13 + (uint)bVar14 * -2 + 1;\n      }" for ( (assignment_expression "uVar8 = (uint)((int)puVar6 + (0x24 - (int)((uint)(puVar6 + 1) & 0xfffffffc))) >> 2" identifier = (binary_expression "(uint)((int)puVar6 + (0x24 - (int)((uint)(puVar6 + 1) & 0xfffffffc))) >> 2" (call_expression "(uint)((int)puVar6 + (0x24 - (int)((uint)(puVar6 + 1) & 0xfffffffc)))" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((int)puVar6 + (0x24 - (int)((uint)(puVar6 + 1) & 0xfffffffc)))" ( (binary_expression "(int)puVar6 + (0x24 - (int)((uint)(puVar6 + 1) & 0xfffffffc))" (cast_expression "(int)puVar6" ( (type_descriptor "int" primitive_type) ) identifier) + (parenthesized_expression "(0x24 - (int)((uint)(puVar6 + 1) & 0xfffffffc))" ( (binary_expression "0x24 - (int)((uint)(puVar6 + 1) & 0xfffffffc)" number_literal - (cast_expression "(int)((uint)(puVar6 + 1) & 0xfffffffc)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((uint)(puVar6 + 1) & 0xfffffffc)" ( (binary_expression "(uint)(puVar6 + 1) & 0xfffffffc" (call_expression "(uint)(puVar6 + 1)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(puVar6 + 1)" ( (binary_expression "puVar6 + 1" identifier + number_literal) ))) & number_literal) )))) ))) ))) >> number_literal)) ; (binary_expression "uVar8 != 0" identifier != number_literal) ; (assignment_expression "uVar8 = uVar8 - 1" identifier = (binary_expression "uVar8 - 1" identifier - number_literal)) ) (compound_statement "{\n        *puVar13 = 0;\n        puVar13 = puVar13 + (uint)bVar14 * -2 + 1;\n      }" { (expression_statement "*puVar13 = 0;" (assignment_expression "*puVar13 = 0" (pointer_expression "*puVar13" * identifier) = number_literal) ;) (expression_statement "puVar13 = puVar13 + (uint)bVar14 * -2 + 1;" (assignment_expression "puVar13 = puVar13 + (uint)bVar14 * -2 + 1" identifier = (binary_expression "puVar13 + (uint)bVar14 * -2 + 1" (binary_expression "puVar13 + (uint)bVar14 * -2" identifier + (binary_expression "(uint)bVar14 * -2" (cast_expression "(uint)bVar14" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) })) (expression_statement "puVar6[1] = puVar6 + 9;" (assignment_expression "puVar6[1] = puVar6 + 9" (subscript_expression "puVar6[1]" identifier [ number_literal ]) = (binary_expression "puVar6 + 9" identifier + number_literal)) ;) (expression_statement "memcpy(puVar6 + 9,param_2,(sVar3 & 0x3fffffff) + 1);" (call_expression "memcpy(puVar6 + 9,param_2,(sVar3 & 0x3fffffff) + 1)" identifier (argument_list "(puVar6 + 9,param_2,(sVar3 & 0x3fffffff) + 1)" ( (binary_expression "puVar6 + 9" identifier + number_literal) , identifier , (binary_expression "(sVar3 & 0x3fffffff) + 1" (parenthesized_expression "(sVar3 & 0x3fffffff)" ( (binary_expression "sVar3 & 0x3fffffff" identifier & number_literal) )) + number_literal) ))) ;) (expression_statement "uVar12 = 0;" (assignment_expression "uVar12 = 0" identifier = number_literal) ;) (expression_statement "puVar13 = (undefined4 *)param_1[10];" (assignment_expression "puVar13 = (undefined4 *)param_1[10]" identifier = (cast_expression "(undefined4 *)param_1[10]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[10]" identifier [ number_literal ]))) ;) (if_statement "if ((undefined4 *)param_1[10] == (undefined4 *)0x0) {\n        param_1[10] = (int)puVar6;\n      }\n      else {\n        do {\n          puVar9 = puVar13;\n          puVar13 = (undefined4 *)*puVar9;\n        } while (puVar13 != (undefined4 *)0x0);\n        *puVar9 = puVar6;\n      }" if (parenthesized_expression "((undefined4 *)param_1[10] == (undefined4 *)0x0)" ( (binary_expression "(undefined4 *)param_1[10] == (undefined4 *)0x0" (cast_expression "(undefined4 *)param_1[10]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[10]" identifier [ number_literal ])) == (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        param_1[10] = (int)puVar6;\n      }" { (expression_statement "param_1[10] = (int)puVar6;" (assignment_expression "param_1[10] = (int)puVar6" (subscript_expression "param_1[10]" identifier [ number_literal ]) = (cast_expression "(int)puVar6" ( (type_descriptor "int" primitive_type) ) identifier)) ;) }) (else_clause "else {\n        do {\n          puVar9 = puVar13;\n          puVar13 = (undefined4 *)*puVar9;\n        } while (puVar13 != (undefined4 *)0x0);\n        *puVar9 = puVar6;\n      }" else (compound_statement "{\n        do {\n          puVar9 = puVar13;\n          puVar13 = (undefined4 *)*puVar9;\n        } while (puVar13 != (undefined4 *)0x0);\n        *puVar9 = puVar6;\n      }" { (do_statement "do {\n          puVar9 = puVar13;\n          puVar13 = (undefined4 *)*puVar9;\n        } while (puVar13 != (undefined4 *)0x0);" do (compound_statement "{\n          puVar9 = puVar13;\n          puVar13 = (undefined4 *)*puVar9;\n        }" { (expression_statement "puVar9 = puVar13;" (assignment_expression "puVar9 = puVar13" identifier = identifier) ;) (expression_statement "puVar13 = (undefined4 *)*puVar9;" (assignment_expression "puVar13 = (undefined4 *)*puVar9" identifier = (cast_expression "(undefined4 *)*puVar9" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar9" * identifier))) ;) }) while (parenthesized_expression "(puVar13 != (undefined4 *)0x0)" ( (binary_expression "puVar13 != (undefined4 *)0x0" identifier != (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) ;) (expression_statement "*puVar9 = puVar6;" (assignment_expression "*puVar9 = puVar6" (pointer_expression "*puVar9" * identifier) = identifier) ;) }))) }) (else_clause "else {\n      uVar12 = 7;\n    }" else (compound_statement "{\n      uVar12 = 7;\n    }" { (expression_statement "uVar12 = 7;" (assignment_expression "uVar12 = 7" identifier = number_literal) ;) }))) })) (labeled_statement "LAB_0014f47c:\n  if (*(int *)(*param_1 + 0xc) != 0) {\n    (**(code **)(unaff_EDI + 0x6c0bd))(*(int *)(*param_1 + 0xc));\n  }" statement_identifier : (if_statement "if (*(int *)(*param_1 + 0xc) != 0) {\n    (**(code **)(unaff_EDI + 0x6c0bd))(*(int *)(*param_1 + 0xc));\n  }" if (parenthesized_expression "(*(int *)(*param_1 + 0xc) != 0)" ( (binary_expression "*(int *)(*param_1 + 0xc) != 0" (pointer_expression "*(int *)(*param_1 + 0xc)" * (cast_expression "(int *)(*param_1 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*param_1 + 0xc)" ( (binary_expression "*param_1 + 0xc" (pointer_expression "*param_1" * identifier) + number_literal) )))) != number_literal) )) (compound_statement "{\n    (**(code **)(unaff_EDI + 0x6c0bd))(*(int *)(*param_1 + 0xc));\n  }" { (expression_statement "(**(code **)(unaff_EDI + 0x6c0bd))(*(int *)(*param_1 + 0xc));" (call_expression "(**(code **)(unaff_EDI + 0x6c0bd))(*(int *)(*param_1 + 0xc))" (parenthesized_expression "(**(code **)(unaff_EDI + 0x6c0bd))" ( (pointer_expression "**(code **)(unaff_EDI + 0x6c0bd)" * (pointer_expression "*(code **)(unaff_EDI + 0x6c0bd)" * (cast_expression "(code **)(unaff_EDI + 0x6c0bd)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(unaff_EDI + 0x6c0bd)" ( (binary_expression "unaff_EDI + 0x6c0bd" identifier + number_literal) ))))) )) (argument_list "(*(int *)(*param_1 + 0xc))" ( (pointer_expression "*(int *)(*param_1 + 0xc)" * (cast_expression "(int *)(*param_1 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*param_1 + 0xc)" ( (binary_expression "*param_1 + 0xc" (pointer_expression "*param_1" * identifier) + number_literal) )))) ))) ;) }))) (return_statement "return uVar12;" return identifier ;) }))) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE (pointer_declarator * IDENT)) ))) (compound_statement { (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) )))) != LIT) )) (compound_statement { (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) )))) ))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT) )))) ;) (for_statement for ( (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ; (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ; (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) + (binary_expression (parenthesized_expression ( IDENT )) * IDENT)) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) + (binary_expression (parenthesized_expression ( IDENT )) * IDENT)) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT & LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != IDENT) )) (goto_statement goto statement_identifier ;)) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (goto_statement goto statement_identifier ;)) }) while (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) != LIT) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (binary_expression IDENT + LIT)) , (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ]))) )))) == (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression (parenthesized_expression ( IDENT )) * IDENT)) )))))) ))) )) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ]))) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ]))) ))))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = LIT) ;)) (goto_statement goto statement_identifier ;) })) })) (labeled_statement statement_identifier : (ERROR }) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;)) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == LIT) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( ))))) , (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT))) ))) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT + LIT) ))) & LIT) )))) ;) (for_statement for ( (assignment_expression IDENT = (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + (parenthesized_expression ( (binary_expression LIT - (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT + LIT) ))) & LIT) )))) ))) ))) >> LIT)) ; (binary_expression IDENT != LIT) ; (assignment_expression IDENT = (binary_expression IDENT - LIT)) ) (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) + LIT)) ;) })) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression IDENT + LIT)) ;) (expression_statement (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) , IDENT , (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) + LIT) ))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ])) == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) }) (else_clause else (compound_statement { (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) }) while (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) }))) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) }))) })) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) )))) != LIT) )) (compound_statement { (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) )))) ))) ;) }))) (return_statement return IDENT ;) }))) })))
(function_definition "undefined4 FUN_0014f380(int *param_1,byte *param_2)\n\n{\n  byte *pbVar1;\n  byte *pbVar2;\n  size_t sVar3;\n  byte *pbVar4;\n  int iVar5;\n  undefined4 *puVar6;\n  char cVar7;\n  uint uVar8;\n  undefined4 *puVar9;\n  char cVar10;\n  byte *pbVar11;\n  undefined4 uVar12;\n  int unaff_EDI;\n  undefined4 *puVar13;\n  byte bVar14;\n  uint local_30;\n  \n  bVar14 = 0;\n  FUN_0003a401();\n  if (*(int *)(*param_1 + 0xc) != 0) {\n    (**(code **)(unaff_EDI + 0x6c0b5))(*(int *)(*param_1 + 0xc));\n  }\n  if (param_2 == (byte *)0x0) {\n    uVar12 = 0;\n    param_1[4] = 1;\n  }\n  else {\n    sVar3 = strlen((char *)param_2);\n    for (puVar6 = (undefined4 *)param_1[10]; puVar6 != (undefined4 *)0x0;\n        puVar6 = (undefined4 *)*puVar6) {\n      pbVar2 = (byte *)puVar6[1];\n      if (pbVar2 != (byte *)0x0) {\n        iVar5 = unaff_EDI + 0x1a459;\n        cVar7 = *(char *)(unaff_EDI + 0x1a459 + (uint)*pbVar2);\n        cVar10 = *(char *)(unaff_EDI + 0x1a459 + (uint)*param_2);\n        if (*pbVar2 != 0) {\n          pbVar1 = param_2;\n          local_30 = sVar3 & 0x3fffffff;\n          if (cVar7 != cVar10) goto LAB_0014f4c0;\n          do {\n            pbVar11 = pbVar1;\n            pbVar4 = pbVar2;\n            local_30 = local_30 - 1;\n            pbVar1 = pbVar11 + 1;\n            if (local_30 == 0xffffffff) goto LAB_0014f47a;\n          } while ((pbVar4[1] != 0) &&\n                  (pbVar2 = pbVar4 + 1,\n                  *(char *)(iVar5 + (uint)pbVar4[1]) == *(char *)(iVar5 + (uint)*pbVar1)));\n          cVar7 = *(char *)(iVar5 + (uint)pbVar4[1]);\n          cVar10 = *(char *)(iVar5 + (uint)pbVar11[1]);\n        }\n        if (cVar7 == cVar10) {\nLAB_0014f47a:\n          uVar12 = 0;\n          goto LAB_0014f47c;\n        }\n      }\nLAB_0014f4c0:\n    }\n    iVar5 = FUN_00067fc0();\n    if ((iVar5 == 0) && (puVar6 = (undefined4 *)FUN_00055780(), puVar6 != (undefined4 *)0x0)) {\n      *puVar6 = 0;\n      puVar6[8] = 0;\n      puVar13 = (undefined4 *)((uint)(puVar6 + 1) & 0xfffffffc);\n      for (uVar8 = (uint)((int)puVar6 + (0x24 - (int)((uint)(puVar6 + 1) & 0xfffffffc))) >> 2;\n          uVar8 != 0; uVar8 = uVar8 - 1) {\n        *puVar13 = 0;\n        puVar13 = puVar13 + (uint)bVar14 * -2 + 1;\n      }\n      puVar6[1] = puVar6 + 9;\n      memcpy(puVar6 + 9,param_2,(sVar3 & 0x3fffffff) + 1);\n      uVar12 = 0;\n      puVar13 = (undefined4 *)param_1[10];\n      if ((undefined4 *)param_1[10] == (undefined4 *)0x0) {\n        param_1[10] = (int)puVar6;\n      }\n      else {\n        do {\n          puVar9 = puVar13;\n          puVar13 = (undefined4 *)*puVar9;\n        } while (puVar13 != (undefined4 *)0x0);\n        *puVar9 = puVar6;\n      }\n    }\n    else {\n      uVar12 = 7;\n    }\n  }\nLAB_0014f47c:\n  if (*(int *)(*param_1 + 0xc) != 0) {\n    (**(code **)(unaff_EDI + 0x6c0bd))(*(int *)(*param_1 + 0xc));\n  }\n  return uVar12;\n}" (type_identifier "undefined4") (function_declarator "FUN_0014f380(int *param_1,byte *param_2)" (identifier "FUN_0014f380") (parameter_list "(int *param_1,byte *param_2)" (( "(") (parameter_declaration "int *param_1" (primitive_type "int") (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) (, ",") (parameter_declaration "byte *param_2" (type_identifier "byte") (pointer_declarator "*param_2" (* "*") (identifier "param_2"))) () ")"))) (compound_statement "{\n  byte *pbVar1;\n  byte *pbVar2;\n  size_t sVar3;\n  byte *pbVar4;\n  int iVar5;\n  undefined4 *puVar6;\n  char cVar7;\n  uint uVar8;\n  undefined4 *puVar9;\n  char cVar10;\n  byte *pbVar11;\n  undefined4 uVar12;\n  int unaff_EDI;\n  undefined4 *puVar13;\n  byte bVar14;\n  uint local_30;\n  \n  bVar14 = 0;\n  FUN_0003a401();\n  if (*(int *)(*param_1 + 0xc) != 0) {\n    (**(code **)(unaff_EDI + 0x6c0b5))(*(int *)(*param_1 + 0xc));\n  }\n  if (param_2 == (byte *)0x0) {\n    uVar12 = 0;\n    param_1[4] = 1;\n  }\n  else {\n    sVar3 = strlen((char *)param_2);\n    for (puVar6 = (undefined4 *)param_1[10]; puVar6 != (undefined4 *)0x0;\n        puVar6 = (undefined4 *)*puVar6) {\n      pbVar2 = (byte *)puVar6[1];\n      if (pbVar2 != (byte *)0x0) {\n        iVar5 = unaff_EDI + 0x1a459;\n        cVar7 = *(char *)(unaff_EDI + 0x1a459 + (uint)*pbVar2);\n        cVar10 = *(char *)(unaff_EDI + 0x1a459 + (uint)*param_2);\n        if (*pbVar2 != 0) {\n          pbVar1 = param_2;\n          local_30 = sVar3 & 0x3fffffff;\n          if (cVar7 != cVar10) goto LAB_0014f4c0;\n          do {\n            pbVar11 = pbVar1;\n            pbVar4 = pbVar2;\n            local_30 = local_30 - 1;\n            pbVar1 = pbVar11 + 1;\n            if (local_30 == 0xffffffff) goto LAB_0014f47a;\n          } while ((pbVar4[1] != 0) &&\n                  (pbVar2 = pbVar4 + 1,\n                  *(char *)(iVar5 + (uint)pbVar4[1]) == *(char *)(iVar5 + (uint)*pbVar1)));\n          cVar7 = *(char *)(iVar5 + (uint)pbVar4[1]);\n          cVar10 = *(char *)(iVar5 + (uint)pbVar11[1]);\n        }\n        if (cVar7 == cVar10) {\nLAB_0014f47a:\n          uVar12 = 0;\n          goto LAB_0014f47c;\n        }\n      }\nLAB_0014f4c0:\n    }\n    iVar5 = FUN_00067fc0();\n    if ((iVar5 == 0) && (puVar6 = (undefined4 *)FUN_00055780(), puVar6 != (undefined4 *)0x0)) {\n      *puVar6 = 0;\n      puVar6[8] = 0;\n      puVar13 = (undefined4 *)((uint)(puVar6 + 1) & 0xfffffffc);\n      for (uVar8 = (uint)((int)puVar6 + (0x24 - (int)((uint)(puVar6 + 1) & 0xfffffffc))) >> 2;\n          uVar8 != 0; uVar8 = uVar8 - 1) {\n        *puVar13 = 0;\n        puVar13 = puVar13 + (uint)bVar14 * -2 + 1;\n      }\n      puVar6[1] = puVar6 + 9;\n      memcpy(puVar6 + 9,param_2,(sVar3 & 0x3fffffff) + 1);\n      uVar12 = 0;\n      puVar13 = (undefined4 *)param_1[10];\n      if ((undefined4 *)param_1[10] == (undefined4 *)0x0) {\n        param_1[10] = (int)puVar6;\n      }\n      else {\n        do {\n          puVar9 = puVar13;\n          puVar13 = (undefined4 *)*puVar9;\n        } while (puVar13 != (undefined4 *)0x0);\n        *puVar9 = puVar6;\n      }\n    }\n    else {\n      uVar12 = 7;\n    }\n  }\nLAB_0014f47c:\n  if (*(int *)(*param_1 + 0xc) != 0) {\n    (**(code **)(unaff_EDI + 0x6c0bd))(*(int *)(*param_1 + 0xc));\n  }\n  return uVar12;\n}" ({ "{") (declaration "byte *pbVar1;" (type_identifier "byte") (pointer_declarator "*pbVar1" (* "*") (identifier "pbVar1")) (; ";")) (declaration "byte *pbVar2;" (type_identifier "byte") (pointer_declarator "*pbVar2" (* "*") (identifier "pbVar2")) (; ";")) (declaration "size_t sVar3;" (primitive_type "size_t") (identifier "sVar3") (; ";")) (declaration "byte *pbVar4;" (type_identifier "byte") (pointer_declarator "*pbVar4" (* "*") (identifier "pbVar4")) (; ";")) (declaration "int iVar5;" (primitive_type "int") (identifier "iVar5") (; ";")) (declaration "undefined4 *puVar6;" (type_identifier "undefined4") (pointer_declarator "*puVar6" (* "*") (identifier "puVar6")) (; ";")) (declaration "char cVar7;" (primitive_type "char") (identifier "cVar7") (; ";")) (declaration "uint uVar8;" (type_identifier "uint") (identifier "uVar8") (; ";")) (declaration "undefined4 *puVar9;" (type_identifier "undefined4") (pointer_declarator "*puVar9" (* "*") (identifier "puVar9")) (; ";")) (declaration "char cVar10;" (primitive_type "char") (identifier "cVar10") (; ";")) (declaration "byte *pbVar11;" (type_identifier "byte") (pointer_declarator "*pbVar11" (* "*") (identifier "pbVar11")) (; ";")) (declaration "undefined4 uVar12;" (type_identifier "undefined4") (identifier "uVar12") (; ";")) (declaration "int unaff_EDI;" (primitive_type "int") (identifier "unaff_EDI") (; ";")) (declaration "undefined4 *puVar13;" (type_identifier "undefined4") (pointer_declarator "*puVar13" (* "*") (identifier "puVar13")) (; ";")) (declaration "byte bVar14;" (type_identifier "byte") (identifier "bVar14") (; ";")) (declaration "uint local_30;" (type_identifier "uint") (identifier "local_30") (; ";")) (expression_statement "bVar14 = 0;" (assignment_expression "bVar14 = 0" (identifier "bVar14") (= "=") (number_literal "0")) (; ";")) (expression_statement "FUN_0003a401();" (call_expression "FUN_0003a401()" (identifier "FUN_0003a401") (argument_list "()" (( "(") () ")"))) (; ";")) (if_statement "if (*(int *)(*param_1 + 0xc) != 0) {\n    (**(code **)(unaff_EDI + 0x6c0b5))(*(int *)(*param_1 + 0xc));\n  }" (if "if") (parenthesized_expression "(*(int *)(*param_1 + 0xc) != 0)" (( "(") (binary_expression "*(int *)(*param_1 + 0xc) != 0" (pointer_expression "*(int *)(*param_1 + 0xc)" (* "*") (cast_expression "(int *)(*param_1 + 0xc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*param_1 + 0xc)" (( "(") (binary_expression "*param_1 + 0xc" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (+ "+") (number_literal "0xc")) () ")")))) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    (**(code **)(unaff_EDI + 0x6c0b5))(*(int *)(*param_1 + 0xc));\n  }" ({ "{") (expression_statement "(**(code **)(unaff_EDI + 0x6c0b5))(*(int *)(*param_1 + 0xc));" (call_expression "(**(code **)(unaff_EDI + 0x6c0b5))(*(int *)(*param_1 + 0xc))" (parenthesized_expression "(**(code **)(unaff_EDI + 0x6c0b5))" (( "(") (pointer_expression "**(code **)(unaff_EDI + 0x6c0b5)" (* "*") (pointer_expression "*(code **)(unaff_EDI + 0x6c0b5)" (* "*") (cast_expression "(code **)(unaff_EDI + 0x6c0b5)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(unaff_EDI + 0x6c0b5)" (( "(") (binary_expression "unaff_EDI + 0x6c0b5" (identifier "unaff_EDI") (+ "+") (number_literal "0x6c0b5")) () ")"))))) () ")")) (argument_list "(*(int *)(*param_1 + 0xc))" (( "(") (pointer_expression "*(int *)(*param_1 + 0xc)" (* "*") (cast_expression "(int *)(*param_1 + 0xc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*param_1 + 0xc)" (( "(") (binary_expression "*param_1 + 0xc" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (+ "+") (number_literal "0xc")) () ")")))) () ")"))) (; ";")) (} "}"))) (if_statement "if (param_2 == (byte *)0x0) {\n    uVar12 = 0;\n    param_1[4] = 1;\n  }\n  else {\n    sVar3 = strlen((char *)param_2);\n    for (puVar6 = (undefined4 *)param_1[10]; puVar6 != (undefined4 *)0x0;\n        puVar6 = (undefined4 *)*puVar6) {\n      pbVar2 = (byte *)puVar6[1];\n      if (pbVar2 != (byte *)0x0) {\n        iVar5 = unaff_EDI + 0x1a459;\n        cVar7 = *(char *)(unaff_EDI + 0x1a459 + (uint)*pbVar2);\n        cVar10 = *(char *)(unaff_EDI + 0x1a459 + (uint)*param_2);\n        if (*pbVar2 != 0) {\n          pbVar1 = param_2;\n          local_30 = sVar3 & 0x3fffffff;\n          if (cVar7 != cVar10) goto LAB_0014f4c0;\n          do {\n            pbVar11 = pbVar1;\n            pbVar4 = pbVar2;\n            local_30 = local_30 - 1;\n            pbVar1 = pbVar11 + 1;\n            if (local_30 == 0xffffffff) goto LAB_0014f47a;\n          } while ((pbVar4[1] != 0) &&\n                  (pbVar2 = pbVar4 + 1,\n                  *(char *)(iVar5 + (uint)pbVar4[1]) == *(char *)(iVar5 + (uint)*pbVar1)));\n          cVar7 = *(char *)(iVar5 + (uint)pbVar4[1]);\n          cVar10 = *(char *)(iVar5 + (uint)pbVar11[1]);\n        }\n        if (cVar7 == cVar10) {\nLAB_0014f47a:\n          uVar12 = 0;\n          goto LAB_0014f47c;\n        }\n      }\nLAB_0014f4c0:\n    }\n    iVar5 = FUN_00067fc0();\n    if ((iVar5 == 0) && (puVar6 = (undefined4 *)FUN_00055780(), puVar6 != (undefined4 *)0x0)) {\n      *puVar6 = 0;\n      puVar6[8] = 0;\n      puVar13 = (undefined4 *)((uint)(puVar6 + 1) & 0xfffffffc);\n      for (uVar8 = (uint)((int)puVar6 + (0x24 - (int)((uint)(puVar6 + 1) & 0xfffffffc))) >> 2;\n          uVar8 != 0; uVar8 = uVar8 - 1) {\n        *puVar13 = 0;\n        puVar13 = puVar13 + (uint)bVar14 * -2 + 1;\n      }\n      puVar6[1] = puVar6 + 9;\n      memcpy(puVar6 + 9,param_2,(sVar3 & 0x3fffffff) + 1);\n      uVar12 = 0;\n      puVar13 = (undefined4 *)param_1[10];\n      if ((undefined4 *)param_1[10] == (undefined4 *)0x0) {\n        param_1[10] = (int)puVar6;\n      }\n      else {\n        do {\n          puVar9 = puVar13;\n          puVar13 = (undefined4 *)*puVar9;\n        } while (puVar13 != (undefined4 *)0x0);\n        *puVar9 = puVar6;\n      }\n    }\n    else {\n      uVar12 = 7;\n    }\n  }\nLAB_0014f47c:\n  if (*(int *)(*param_1 + 0xc) != 0) {\n    (**(code **)(unaff_EDI + 0x6c0bd))(*(int *)(*param_1 + 0xc));\n  }\n  return uVar12;\n}" (if "if") (parenthesized_expression "(param_2 == (byte *)0x0)" (( "(") (binary_expression "param_2 == (byte *)0x0" (identifier "param_2") (== "==") (cast_expression "(byte *)0x0" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n    uVar12 = 0;\n    param_1[4] = 1;\n  }" ({ "{") (expression_statement "uVar12 = 0;" (assignment_expression "uVar12 = 0" (identifier "uVar12") (= "=") (number_literal "0")) (; ";")) (expression_statement "param_1[4] = 1;" (assignment_expression "param_1[4] = 1" (subscript_expression "param_1[4]" (identifier "param_1") ([ "[") (number_literal "4") (] "]")) (= "=") (number_literal "1")) (; ";")) (} "}")) (else_clause "else {\n    sVar3 = strlen((char *)param_2);\n    for (puVar6 = (undefined4 *)param_1[10]; puVar6 != (undefined4 *)0x0;\n        puVar6 = (undefined4 *)*puVar6) {\n      pbVar2 = (byte *)puVar6[1];\n      if (pbVar2 != (byte *)0x0) {\n        iVar5 = unaff_EDI + 0x1a459;\n        cVar7 = *(char *)(unaff_EDI + 0x1a459 + (uint)*pbVar2);\n        cVar10 = *(char *)(unaff_EDI + 0x1a459 + (uint)*param_2);\n        if (*pbVar2 != 0) {\n          pbVar1 = param_2;\n          local_30 = sVar3 & 0x3fffffff;\n          if (cVar7 != cVar10) goto LAB_0014f4c0;\n          do {\n            pbVar11 = pbVar1;\n            pbVar4 = pbVar2;\n            local_30 = local_30 - 1;\n            pbVar1 = pbVar11 + 1;\n            if (local_30 == 0xffffffff) goto LAB_0014f47a;\n          } while ((pbVar4[1] != 0) &&\n                  (pbVar2 = pbVar4 + 1,\n                  *(char *)(iVar5 + (uint)pbVar4[1]) == *(char *)(iVar5 + (uint)*pbVar1)));\n          cVar7 = *(char *)(iVar5 + (uint)pbVar4[1]);\n          cVar10 = *(char *)(iVar5 + (uint)pbVar11[1]);\n        }\n        if (cVar7 == cVar10) {\nLAB_0014f47a:\n          uVar12 = 0;\n          goto LAB_0014f47c;\n        }\n      }\nLAB_0014f4c0:\n    }\n    iVar5 = FUN_00067fc0();\n    if ((iVar5 == 0) && (puVar6 = (undefined4 *)FUN_00055780(), puVar6 != (undefined4 *)0x0)) {\n      *puVar6 = 0;\n      puVar6[8] = 0;\n      puVar13 = (undefined4 *)((uint)(puVar6 + 1) & 0xfffffffc);\n      for (uVar8 = (uint)((int)puVar6 + (0x24 - (int)((uint)(puVar6 + 1) & 0xfffffffc))) >> 2;\n          uVar8 != 0; uVar8 = uVar8 - 1) {\n        *puVar13 = 0;\n        puVar13 = puVar13 + (uint)bVar14 * -2 + 1;\n      }\n      puVar6[1] = puVar6 + 9;\n      memcpy(puVar6 + 9,param_2,(sVar3 & 0x3fffffff) + 1);\n      uVar12 = 0;\n      puVar13 = (undefined4 *)param_1[10];\n      if ((undefined4 *)param_1[10] == (undefined4 *)0x0) {\n        param_1[10] = (int)puVar6;\n      }\n      else {\n        do {\n          puVar9 = puVar13;\n          puVar13 = (undefined4 *)*puVar9;\n        } while (puVar13 != (undefined4 *)0x0);\n        *puVar9 = puVar6;\n      }\n    }\n    else {\n      uVar12 = 7;\n    }\n  }\nLAB_0014f47c:\n  if (*(int *)(*param_1 + 0xc) != 0) {\n    (**(code **)(unaff_EDI + 0x6c0bd))(*(int *)(*param_1 + 0xc));\n  }\n  return uVar12;\n}" (else "else") (compound_statement "{\n    sVar3 = strlen((char *)param_2);\n    for (puVar6 = (undefined4 *)param_1[10]; puVar6 != (undefined4 *)0x0;\n        puVar6 = (undefined4 *)*puVar6) {\n      pbVar2 = (byte *)puVar6[1];\n      if (pbVar2 != (byte *)0x0) {\n        iVar5 = unaff_EDI + 0x1a459;\n        cVar7 = *(char *)(unaff_EDI + 0x1a459 + (uint)*pbVar2);\n        cVar10 = *(char *)(unaff_EDI + 0x1a459 + (uint)*param_2);\n        if (*pbVar2 != 0) {\n          pbVar1 = param_2;\n          local_30 = sVar3 & 0x3fffffff;\n          if (cVar7 != cVar10) goto LAB_0014f4c0;\n          do {\n            pbVar11 = pbVar1;\n            pbVar4 = pbVar2;\n            local_30 = local_30 - 1;\n            pbVar1 = pbVar11 + 1;\n            if (local_30 == 0xffffffff) goto LAB_0014f47a;\n          } while ((pbVar4[1] != 0) &&\n                  (pbVar2 = pbVar4 + 1,\n                  *(char *)(iVar5 + (uint)pbVar4[1]) == *(char *)(iVar5 + (uint)*pbVar1)));\n          cVar7 = *(char *)(iVar5 + (uint)pbVar4[1]);\n          cVar10 = *(char *)(iVar5 + (uint)pbVar11[1]);\n        }\n        if (cVar7 == cVar10) {\nLAB_0014f47a:\n          uVar12 = 0;\n          goto LAB_0014f47c;\n        }\n      }\nLAB_0014f4c0:\n    }\n    iVar5 = FUN_00067fc0();\n    if ((iVar5 == 0) && (puVar6 = (undefined4 *)FUN_00055780(), puVar6 != (undefined4 *)0x0)) {\n      *puVar6 = 0;\n      puVar6[8] = 0;\n      puVar13 = (undefined4 *)((uint)(puVar6 + 1) & 0xfffffffc);\n      for (uVar8 = (uint)((int)puVar6 + (0x24 - (int)((uint)(puVar6 + 1) & 0xfffffffc))) >> 2;\n          uVar8 != 0; uVar8 = uVar8 - 1) {\n        *puVar13 = 0;\n        puVar13 = puVar13 + (uint)bVar14 * -2 + 1;\n      }\n      puVar6[1] = puVar6 + 9;\n      memcpy(puVar6 + 9,param_2,(sVar3 & 0x3fffffff) + 1);\n      uVar12 = 0;\n      puVar13 = (undefined4 *)param_1[10];\n      if ((undefined4 *)param_1[10] == (undefined4 *)0x0) {\n        param_1[10] = (int)puVar6;\n      }\n      else {\n        do {\n          puVar9 = puVar13;\n          puVar13 = (undefined4 *)*puVar9;\n        } while (puVar13 != (undefined4 *)0x0);\n        *puVar9 = puVar6;\n      }\n    }\n    else {\n      uVar12 = 7;\n    }\n  }\nLAB_0014f47c:\n  if (*(int *)(*param_1 + 0xc) != 0) {\n    (**(code **)(unaff_EDI + 0x6c0bd))(*(int *)(*param_1 + 0xc));\n  }\n  return uVar12;\n}" ({ "{") (expression_statement "sVar3 = strlen((char *)param_2);" (assignment_expression "sVar3 = strlen((char *)param_2)" (identifier "sVar3") (= "=") (call_expression "strlen((char *)param_2)" (identifier "strlen") (argument_list "((char *)param_2)" (( "(") (cast_expression "(char *)param_2" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "param_2")) () ")")))) (; ";")) (for_statement "for (puVar6 = (undefined4 *)param_1[10]; puVar6 != (undefined4 *)0x0;\n        puVar6 = (undefined4 *)*puVar6) {\n      pbVar2 = (byte *)puVar6[1];\n      if (pbVar2 != (byte *)0x0) {\n        iVar5 = unaff_EDI + 0x1a459;\n        cVar7 = *(char *)(unaff_EDI + 0x1a459 + (uint)*pbVar2);\n        cVar10 = *(char *)(unaff_EDI + 0x1a459 + (uint)*param_2);\n        if (*pbVar2 != 0) {\n          pbVar1 = param_2;\n          local_30 = sVar3 & 0x3fffffff;\n          if (cVar7 != cVar10) goto LAB_0014f4c0;\n          do {\n            pbVar11 = pbVar1;\n            pbVar4 = pbVar2;\n            local_30 = local_30 - 1;\n            pbVar1 = pbVar11 + 1;\n            if (local_30 == 0xffffffff) goto LAB_0014f47a;\n          } while ((pbVar4[1] != 0) &&\n                  (pbVar2 = pbVar4 + 1,\n                  *(char *)(iVar5 + (uint)pbVar4[1]) == *(char *)(iVar5 + (uint)*pbVar1)));\n          cVar7 = *(char *)(iVar5 + (uint)pbVar4[1]);\n          cVar10 = *(char *)(iVar5 + (uint)pbVar11[1]);\n        }\n        if (cVar7 == cVar10) {\nLAB_0014f47a:\n          uVar12 = 0;\n          goto LAB_0014f47c;\n        }\n      }\nLAB_0014f4c0:\n    }\n    iVar5 = FUN_00067fc0();\n    if ((iVar5 == 0) && (puVar6 = (undefined4 *)FUN_00055780(), puVar6 != (undefined4 *)0x0)) {\n      *puVar6 = 0;\n      puVar6[8] = 0;\n      puVar13 = (undefined4 *)((uint)(puVar6 + 1) & 0xfffffffc);\n      for (uVar8 = (uint)((int)puVar6 + (0x24 - (int)((uint)(puVar6 + 1) & 0xfffffffc))) >> 2;\n          uVar8 != 0; uVar8 = uVar8 - 1) {\n        *puVar13 = 0;\n        puVar13 = puVar13 + (uint)bVar14 * -2 + 1;\n      }\n      puVar6[1] = puVar6 + 9;\n      memcpy(puVar6 + 9,param_2,(sVar3 & 0x3fffffff) + 1);\n      uVar12 = 0;\n      puVar13 = (undefined4 *)param_1[10];\n      if ((undefined4 *)param_1[10] == (undefined4 *)0x0) {\n        param_1[10] = (int)puVar6;\n      }\n      else {\n        do {\n          puVar9 = puVar13;\n          puVar13 = (undefined4 *)*puVar9;\n        } while (puVar13 != (undefined4 *)0x0);\n        *puVar9 = puVar6;\n      }\n    }\n    else {\n      uVar12 = 7;\n    }\n  }" (for "for") (( "(") (assignment_expression "puVar6 = (undefined4 *)param_1[10]" (identifier "puVar6") (= "=") (cast_expression "(undefined4 *)param_1[10]" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_1[10]" (identifier "param_1") ([ "[") (number_literal "10") (] "]")))) (; ";") (binary_expression "puVar6 != (undefined4 *)0x0" (identifier "puVar6") (!= "!=") (cast_expression "(undefined4 *)0x0" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";") (assignment_expression "puVar6 = (undefined4 *)*puVar6" (identifier "puVar6") (= "=") (cast_expression "(undefined4 *)*puVar6" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*puVar6" (* "*") (identifier "puVar6")))) () ")") (compound_statement "{\n      pbVar2 = (byte *)puVar6[1];\n      if (pbVar2 != (byte *)0x0) {\n        iVar5 = unaff_EDI + 0x1a459;\n        cVar7 = *(char *)(unaff_EDI + 0x1a459 + (uint)*pbVar2);\n        cVar10 = *(char *)(unaff_EDI + 0x1a459 + (uint)*param_2);\n        if (*pbVar2 != 0) {\n          pbVar1 = param_2;\n          local_30 = sVar3 & 0x3fffffff;\n          if (cVar7 != cVar10) goto LAB_0014f4c0;\n          do {\n            pbVar11 = pbVar1;\n            pbVar4 = pbVar2;\n            local_30 = local_30 - 1;\n            pbVar1 = pbVar11 + 1;\n            if (local_30 == 0xffffffff) goto LAB_0014f47a;\n          } while ((pbVar4[1] != 0) &&\n                  (pbVar2 = pbVar4 + 1,\n                  *(char *)(iVar5 + (uint)pbVar4[1]) == *(char *)(iVar5 + (uint)*pbVar1)));\n          cVar7 = *(char *)(iVar5 + (uint)pbVar4[1]);\n          cVar10 = *(char *)(iVar5 + (uint)pbVar11[1]);\n        }\n        if (cVar7 == cVar10) {\nLAB_0014f47a:\n          uVar12 = 0;\n          goto LAB_0014f47c;\n        }\n      }\nLAB_0014f4c0:\n    }\n    iVar5 = FUN_00067fc0();\n    if ((iVar5 == 0) && (puVar6 = (undefined4 *)FUN_00055780(), puVar6 != (undefined4 *)0x0)) {\n      *puVar6 = 0;\n      puVar6[8] = 0;\n      puVar13 = (undefined4 *)((uint)(puVar6 + 1) & 0xfffffffc);\n      for (uVar8 = (uint)((int)puVar6 + (0x24 - (int)((uint)(puVar6 + 1) & 0xfffffffc))) >> 2;\n          uVar8 != 0; uVar8 = uVar8 - 1) {\n        *puVar13 = 0;\n        puVar13 = puVar13 + (uint)bVar14 * -2 + 1;\n      }\n      puVar6[1] = puVar6 + 9;\n      memcpy(puVar6 + 9,param_2,(sVar3 & 0x3fffffff) + 1);\n      uVar12 = 0;\n      puVar13 = (undefined4 *)param_1[10];\n      if ((undefined4 *)param_1[10] == (undefined4 *)0x0) {\n        param_1[10] = (int)puVar6;\n      }\n      else {\n        do {\n          puVar9 = puVar13;\n          puVar13 = (undefined4 *)*puVar9;\n        } while (puVar13 != (undefined4 *)0x0);\n        *puVar9 = puVar6;\n      }\n    }\n    else {\n      uVar12 = 7;\n    }\n  }" ({ "{") (expression_statement "pbVar2 = (byte *)puVar6[1];" (assignment_expression "pbVar2 = (byte *)puVar6[1]" (identifier "pbVar2") (= "=") (cast_expression "(byte *)puVar6[1]" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "puVar6[1]" (identifier "puVar6") ([ "[") (number_literal "1") (] "]")))) (; ";")) (if_statement "if (pbVar2 != (byte *)0x0) {\n        iVar5 = unaff_EDI + 0x1a459;\n        cVar7 = *(char *)(unaff_EDI + 0x1a459 + (uint)*pbVar2);\n        cVar10 = *(char *)(unaff_EDI + 0x1a459 + (uint)*param_2);\n        if (*pbVar2 != 0) {\n          pbVar1 = param_2;\n          local_30 = sVar3 & 0x3fffffff;\n          if (cVar7 != cVar10) goto LAB_0014f4c0;\n          do {\n            pbVar11 = pbVar1;\n            pbVar4 = pbVar2;\n            local_30 = local_30 - 1;\n            pbVar1 = pbVar11 + 1;\n            if (local_30 == 0xffffffff) goto LAB_0014f47a;\n          } while ((pbVar4[1] != 0) &&\n                  (pbVar2 = pbVar4 + 1,\n                  *(char *)(iVar5 + (uint)pbVar4[1]) == *(char *)(iVar5 + (uint)*pbVar1)));\n          cVar7 = *(char *)(iVar5 + (uint)pbVar4[1]);\n          cVar10 = *(char *)(iVar5 + (uint)pbVar11[1]);\n        }\n        if (cVar7 == cVar10) {\nLAB_0014f47a:\n          uVar12 = 0;\n          goto LAB_0014f47c;\n        }\n      }" (if "if") (parenthesized_expression "(pbVar2 != (byte *)0x0)" (( "(") (binary_expression "pbVar2 != (byte *)0x0" (identifier "pbVar2") (!= "!=") (cast_expression "(byte *)0x0" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n        iVar5 = unaff_EDI + 0x1a459;\n        cVar7 = *(char *)(unaff_EDI + 0x1a459 + (uint)*pbVar2);\n        cVar10 = *(char *)(unaff_EDI + 0x1a459 + (uint)*param_2);\n        if (*pbVar2 != 0) {\n          pbVar1 = param_2;\n          local_30 = sVar3 & 0x3fffffff;\n          if (cVar7 != cVar10) goto LAB_0014f4c0;\n          do {\n            pbVar11 = pbVar1;\n            pbVar4 = pbVar2;\n            local_30 = local_30 - 1;\n            pbVar1 = pbVar11 + 1;\n            if (local_30 == 0xffffffff) goto LAB_0014f47a;\n          } while ((pbVar4[1] != 0) &&\n                  (pbVar2 = pbVar4 + 1,\n                  *(char *)(iVar5 + (uint)pbVar4[1]) == *(char *)(iVar5 + (uint)*pbVar1)));\n          cVar7 = *(char *)(iVar5 + (uint)pbVar4[1]);\n          cVar10 = *(char *)(iVar5 + (uint)pbVar11[1]);\n        }\n        if (cVar7 == cVar10) {\nLAB_0014f47a:\n          uVar12 = 0;\n          goto LAB_0014f47c;\n        }\n      }" ({ "{") (expression_statement "iVar5 = unaff_EDI + 0x1a459;" (assignment_expression "iVar5 = unaff_EDI + 0x1a459" (identifier "iVar5") (= "=") (binary_expression "unaff_EDI + 0x1a459" (identifier "unaff_EDI") (+ "+") (number_literal "0x1a459"))) (; ";")) (expression_statement "cVar7 = *(char *)(unaff_EDI + 0x1a459 + (uint)*pbVar2);" (assignment_expression "cVar7 = *(char *)(unaff_EDI + 0x1a459 + (uint)*pbVar2)" (identifier "cVar7") (= "=") (pointer_expression "*(char *)(unaff_EDI + 0x1a459 + (uint)*pbVar2)" (* "*") (cast_expression "(char *)(unaff_EDI + 0x1a459 + (uint)*pbVar2)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(unaff_EDI + 0x1a459 + (uint)*pbVar2)" (( "(") (binary_expression "unaff_EDI + 0x1a459 + (uint)*pbVar2" (binary_expression "unaff_EDI + 0x1a459" (identifier "unaff_EDI") (+ "+") (number_literal "0x1a459")) (+ "+") (binary_expression "(uint)*pbVar2" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (* "*") (identifier "pbVar2"))) () ")"))))) (; ";")) (expression_statement "cVar10 = *(char *)(unaff_EDI + 0x1a459 + (uint)*param_2);" (assignment_expression "cVar10 = *(char *)(unaff_EDI + 0x1a459 + (uint)*param_2)" (identifier "cVar10") (= "=") (pointer_expression "*(char *)(unaff_EDI + 0x1a459 + (uint)*param_2)" (* "*") (cast_expression "(char *)(unaff_EDI + 0x1a459 + (uint)*param_2)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(unaff_EDI + 0x1a459 + (uint)*param_2)" (( "(") (binary_expression "unaff_EDI + 0x1a459 + (uint)*param_2" (binary_expression "unaff_EDI + 0x1a459" (identifier "unaff_EDI") (+ "+") (number_literal "0x1a459")) (+ "+") (binary_expression "(uint)*param_2" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (* "*") (identifier "param_2"))) () ")"))))) (; ";")) (if_statement "if (*pbVar2 != 0) {\n          pbVar1 = param_2;\n          local_30 = sVar3 & 0x3fffffff;\n          if (cVar7 != cVar10) goto LAB_0014f4c0;\n          do {\n            pbVar11 = pbVar1;\n            pbVar4 = pbVar2;\n            local_30 = local_30 - 1;\n            pbVar1 = pbVar11 + 1;\n            if (local_30 == 0xffffffff) goto LAB_0014f47a;\n          } while ((pbVar4[1] != 0) &&\n                  (pbVar2 = pbVar4 + 1,\n                  *(char *)(iVar5 + (uint)pbVar4[1]) == *(char *)(iVar5 + (uint)*pbVar1)));\n          cVar7 = *(char *)(iVar5 + (uint)pbVar4[1]);\n          cVar10 = *(char *)(iVar5 + (uint)pbVar11[1]);\n        }" (if "if") (parenthesized_expression "(*pbVar2 != 0)" (( "(") (binary_expression "*pbVar2 != 0" (pointer_expression "*pbVar2" (* "*") (identifier "pbVar2")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n          pbVar1 = param_2;\n          local_30 = sVar3 & 0x3fffffff;\n          if (cVar7 != cVar10) goto LAB_0014f4c0;\n          do {\n            pbVar11 = pbVar1;\n            pbVar4 = pbVar2;\n            local_30 = local_30 - 1;\n            pbVar1 = pbVar11 + 1;\n            if (local_30 == 0xffffffff) goto LAB_0014f47a;\n          } while ((pbVar4[1] != 0) &&\n                  (pbVar2 = pbVar4 + 1,\n                  *(char *)(iVar5 + (uint)pbVar4[1]) == *(char *)(iVar5 + (uint)*pbVar1)));\n          cVar7 = *(char *)(iVar5 + (uint)pbVar4[1]);\n          cVar10 = *(char *)(iVar5 + (uint)pbVar11[1]);\n        }" ({ "{") (expression_statement "pbVar1 = param_2;" (assignment_expression "pbVar1 = param_2" (identifier "pbVar1") (= "=") (identifier "param_2")) (; ";")) (expression_statement "local_30 = sVar3 & 0x3fffffff;" (assignment_expression "local_30 = sVar3 & 0x3fffffff" (identifier "local_30") (= "=") (binary_expression "sVar3 & 0x3fffffff" (identifier "sVar3") (& "&") (number_literal "0x3fffffff"))) (; ";")) (if_statement "if (cVar7 != cVar10) goto LAB_0014f4c0;" (if "if") (parenthesized_expression "(cVar7 != cVar10)" (( "(") (binary_expression "cVar7 != cVar10" (identifier "cVar7") (!= "!=") (identifier "cVar10")) () ")")) (goto_statement "goto LAB_0014f4c0;" (goto "goto") (statement_identifier "LAB_0014f4c0") (; ";"))) (do_statement "do {\n            pbVar11 = pbVar1;\n            pbVar4 = pbVar2;\n            local_30 = local_30 - 1;\n            pbVar1 = pbVar11 + 1;\n            if (local_30 == 0xffffffff) goto LAB_0014f47a;\n          } while ((pbVar4[1] != 0) &&\n                  (pbVar2 = pbVar4 + 1,\n                  *(char *)(iVar5 + (uint)pbVar4[1]) == *(char *)(iVar5 + (uint)*pbVar1)));" (do "do") (compound_statement "{\n            pbVar11 = pbVar1;\n            pbVar4 = pbVar2;\n            local_30 = local_30 - 1;\n            pbVar1 = pbVar11 + 1;\n            if (local_30 == 0xffffffff) goto LAB_0014f47a;\n          }" ({ "{") (expression_statement "pbVar11 = pbVar1;" (assignment_expression "pbVar11 = pbVar1" (identifier "pbVar11") (= "=") (identifier "pbVar1")) (; ";")) (expression_statement "pbVar4 = pbVar2;" (assignment_expression "pbVar4 = pbVar2" (identifier "pbVar4") (= "=") (identifier "pbVar2")) (; ";")) (expression_statement "local_30 = local_30 - 1;" (assignment_expression "local_30 = local_30 - 1" (identifier "local_30") (= "=") (binary_expression "local_30 - 1" (identifier "local_30") (- "-") (number_literal "1"))) (; ";")) (expression_statement "pbVar1 = pbVar11 + 1;" (assignment_expression "pbVar1 = pbVar11 + 1" (identifier "pbVar1") (= "=") (binary_expression "pbVar11 + 1" (identifier "pbVar11") (+ "+") (number_literal "1"))) (; ";")) (if_statement "if (local_30 == 0xffffffff) goto LAB_0014f47a;" (if "if") (parenthesized_expression "(local_30 == 0xffffffff)" (( "(") (binary_expression "local_30 == 0xffffffff" (identifier "local_30") (== "==") (number_literal "0xffffffff")) () ")")) (goto_statement "goto LAB_0014f47a;" (goto "goto") (statement_identifier "LAB_0014f47a") (; ";"))) (} "}")) (while "while") (parenthesized_expression "((pbVar4[1] != 0) &&\n                  (pbVar2 = pbVar4 + 1,\n                  *(char *)(iVar5 + (uint)pbVar4[1]) == *(char *)(iVar5 + (uint)*pbVar1)))" (( "(") (binary_expression "(pbVar4[1] != 0) &&\n                  (pbVar2 = pbVar4 + 1,\n                  *(char *)(iVar5 + (uint)pbVar4[1]) == *(char *)(iVar5 + (uint)*pbVar1))" (parenthesized_expression "(pbVar4[1] != 0)" (( "(") (binary_expression "pbVar4[1] != 0" (subscript_expression "pbVar4[1]" (identifier "pbVar4") ([ "[") (number_literal "1") (] "]")) (!= "!=") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(pbVar2 = pbVar4 + 1,\n                  *(char *)(iVar5 + (uint)pbVar4[1]) == *(char *)(iVar5 + (uint)*pbVar1))" (( "(") (comma_expression "pbVar2 = pbVar4 + 1,\n                  *(char *)(iVar5 + (uint)pbVar4[1]) == *(char *)(iVar5 + (uint)*pbVar1)" (assignment_expression "pbVar2 = pbVar4 + 1" (identifier "pbVar2") (= "=") (binary_expression "pbVar4 + 1" (identifier "pbVar4") (+ "+") (number_literal "1"))) (, ",") (binary_expression "*(char *)(iVar5 + (uint)pbVar4[1]) == *(char *)(iVar5 + (uint)*pbVar1)" (pointer_expression "*(char *)(iVar5 + (uint)pbVar4[1])" (* "*") (cast_expression "(char *)(iVar5 + (uint)pbVar4[1])" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar5 + (uint)pbVar4[1])" (( "(") (binary_expression "iVar5 + (uint)pbVar4[1]" (identifier "iVar5") (+ "+") (cast_expression "(uint)pbVar4[1]" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (subscript_expression "pbVar4[1]" (identifier "pbVar4") ([ "[") (number_literal "1") (] "]")))) () ")")))) (== "==") (pointer_expression "*(char *)(iVar5 + (uint)*pbVar1)" (* "*") (cast_expression "(char *)(iVar5 + (uint)*pbVar1)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar5 + (uint)*pbVar1)" (( "(") (binary_expression "iVar5 + (uint)*pbVar1" (identifier "iVar5") (+ "+") (binary_expression "(uint)*pbVar1" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (* "*") (identifier "pbVar1"))) () ")")))))) () ")"))) () ")")) (; ";")) (expression_statement "cVar7 = *(char *)(iVar5 + (uint)pbVar4[1]);" (assignment_expression "cVar7 = *(char *)(iVar5 + (uint)pbVar4[1])" (identifier "cVar7") (= "=") (pointer_expression "*(char *)(iVar5 + (uint)pbVar4[1])" (* "*") (cast_expression "(char *)(iVar5 + (uint)pbVar4[1])" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar5 + (uint)pbVar4[1])" (( "(") (binary_expression "iVar5 + (uint)pbVar4[1]" (identifier "iVar5") (+ "+") (cast_expression "(uint)pbVar4[1]" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (subscript_expression "pbVar4[1]" (identifier "pbVar4") ([ "[") (number_literal "1") (] "]")))) () ")"))))) (; ";")) (expression_statement "cVar10 = *(char *)(iVar5 + (uint)pbVar11[1]);" (assignment_expression "cVar10 = *(char *)(iVar5 + (uint)pbVar11[1])" (identifier "cVar10") (= "=") (pointer_expression "*(char *)(iVar5 + (uint)pbVar11[1])" (* "*") (cast_expression "(char *)(iVar5 + (uint)pbVar11[1])" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar5 + (uint)pbVar11[1])" (( "(") (binary_expression "iVar5 + (uint)pbVar11[1]" (identifier "iVar5") (+ "+") (cast_expression "(uint)pbVar11[1]" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (subscript_expression "pbVar11[1]" (identifier "pbVar11") ([ "[") (number_literal "1") (] "]")))) () ")"))))) (; ";")) (} "}"))) (if_statement "if (cVar7 == cVar10) {\nLAB_0014f47a:\n          uVar12 = 0;\n          goto LAB_0014f47c;\n        }" (if "if") (parenthesized_expression "(cVar7 == cVar10)" (( "(") (binary_expression "cVar7 == cVar10" (identifier "cVar7") (== "==") (identifier "cVar10")) () ")")) (compound_statement "{\nLAB_0014f47a:\n          uVar12 = 0;\n          goto LAB_0014f47c;\n        }" ({ "{") (labeled_statement "LAB_0014f47a:\n          uVar12 = 0;" (statement_identifier "LAB_0014f47a") (: ":") (expression_statement "uVar12 = 0;" (assignment_expression "uVar12 = 0" (identifier "uVar12") (= "=") (number_literal "0")) (; ";"))) (goto_statement "goto LAB_0014f47c;" (goto "goto") (statement_identifier "LAB_0014f47c") (; ";")) (} "}"))) (} "}"))) (labeled_statement "LAB_0014f4c0:\n    }\n    iVar5 = FUN_00067fc0();" (statement_identifier "LAB_0014f4c0") (: ":") (ERROR "}" (} "}")) (expression_statement "iVar5 = FUN_00067fc0();" (assignment_expression "iVar5 = FUN_00067fc0()" (identifier "iVar5") (= "=") (call_expression "FUN_00067fc0()" (identifier "FUN_00067fc0") (argument_list "()" (( "(") () ")")))) (; ";"))) (if_statement "if ((iVar5 == 0) && (puVar6 = (undefined4 *)FUN_00055780(), puVar6 != (undefined4 *)0x0)) {\n      *puVar6 = 0;\n      puVar6[8] = 0;\n      puVar13 = (undefined4 *)((uint)(puVar6 + 1) & 0xfffffffc);\n      for (uVar8 = (uint)((int)puVar6 + (0x24 - (int)((uint)(puVar6 + 1) & 0xfffffffc))) >> 2;\n          uVar8 != 0; uVar8 = uVar8 - 1) {\n        *puVar13 = 0;\n        puVar13 = puVar13 + (uint)bVar14 * -2 + 1;\n      }\n      puVar6[1] = puVar6 + 9;\n      memcpy(puVar6 + 9,param_2,(sVar3 & 0x3fffffff) + 1);\n      uVar12 = 0;\n      puVar13 = (undefined4 *)param_1[10];\n      if ((undefined4 *)param_1[10] == (undefined4 *)0x0) {\n        param_1[10] = (int)puVar6;\n      }\n      else {\n        do {\n          puVar9 = puVar13;\n          puVar13 = (undefined4 *)*puVar9;\n        } while (puVar13 != (undefined4 *)0x0);\n        *puVar9 = puVar6;\n      }\n    }\n    else {\n      uVar12 = 7;\n    }" (if "if") (parenthesized_expression "((iVar5 == 0) && (puVar6 = (undefined4 *)FUN_00055780(), puVar6 != (undefined4 *)0x0))" (( "(") (binary_expression "(iVar5 == 0) && (puVar6 = (undefined4 *)FUN_00055780(), puVar6 != (undefined4 *)0x0)" (parenthesized_expression "(iVar5 == 0)" (( "(") (binary_expression "iVar5 == 0" (identifier "iVar5") (== "==") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(puVar6 = (undefined4 *)FUN_00055780(), puVar6 != (undefined4 *)0x0)" (( "(") (comma_expression "puVar6 = (undefined4 *)FUN_00055780(), puVar6 != (undefined4 *)0x0" (assignment_expression "puVar6 = (undefined4 *)FUN_00055780()" (identifier "puVar6") (= "=") (cast_expression "(undefined4 *)FUN_00055780()" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_00055780()" (identifier "FUN_00055780") (argument_list "()" (( "(") () ")"))))) (, ",") (binary_expression "puVar6 != (undefined4 *)0x0" (identifier "puVar6") (!= "!=") (cast_expression "(undefined4 *)0x0" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0")))) () ")"))) () ")")) (compound_statement "{\n      *puVar6 = 0;\n      puVar6[8] = 0;\n      puVar13 = (undefined4 *)((uint)(puVar6 + 1) & 0xfffffffc);\n      for (uVar8 = (uint)((int)puVar6 + (0x24 - (int)((uint)(puVar6 + 1) & 0xfffffffc))) >> 2;\n          uVar8 != 0; uVar8 = uVar8 - 1) {\n        *puVar13 = 0;\n        puVar13 = puVar13 + (uint)bVar14 * -2 + 1;\n      }\n      puVar6[1] = puVar6 + 9;\n      memcpy(puVar6 + 9,param_2,(sVar3 & 0x3fffffff) + 1);\n      uVar12 = 0;\n      puVar13 = (undefined4 *)param_1[10];\n      if ((undefined4 *)param_1[10] == (undefined4 *)0x0) {\n        param_1[10] = (int)puVar6;\n      }\n      else {\n        do {\n          puVar9 = puVar13;\n          puVar13 = (undefined4 *)*puVar9;\n        } while (puVar13 != (undefined4 *)0x0);\n        *puVar9 = puVar6;\n      }\n    }" ({ "{") (expression_statement "*puVar6 = 0;" (assignment_expression "*puVar6 = 0" (pointer_expression "*puVar6" (* "*") (identifier "puVar6")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar6[8] = 0;" (assignment_expression "puVar6[8] = 0" (subscript_expression "puVar6[8]" (identifier "puVar6") ([ "[") (number_literal "8") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar13 = (undefined4 *)((uint)(puVar6 + 1) & 0xfffffffc);" (assignment_expression "puVar13 = (undefined4 *)((uint)(puVar6 + 1) & 0xfffffffc)" (identifier "puVar13") (= "=") (cast_expression "(undefined4 *)((uint)(puVar6 + 1) & 0xfffffffc)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((uint)(puVar6 + 1) & 0xfffffffc)" (( "(") (binary_expression "(uint)(puVar6 + 1) & 0xfffffffc" (call_expression "(uint)(puVar6 + 1)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(puVar6 + 1)" (( "(") (binary_expression "puVar6 + 1" (identifier "puVar6") (+ "+") (number_literal "1")) () ")"))) (& "&") (number_literal "0xfffffffc")) () ")")))) (; ";")) (for_statement "for (uVar8 = (uint)((int)puVar6 + (0x24 - (int)((uint)(puVar6 + 1) & 0xfffffffc))) >> 2;\n          uVar8 != 0; uVar8 = uVar8 - 1) {\n        *puVar13 = 0;\n        puVar13 = puVar13 + (uint)bVar14 * -2 + 1;\n      }" (for "for") (( "(") (assignment_expression "uVar8 = (uint)((int)puVar6 + (0x24 - (int)((uint)(puVar6 + 1) & 0xfffffffc))) >> 2" (identifier "uVar8") (= "=") (binary_expression "(uint)((int)puVar6 + (0x24 - (int)((uint)(puVar6 + 1) & 0xfffffffc))) >> 2" (call_expression "(uint)((int)puVar6 + (0x24 - (int)((uint)(puVar6 + 1) & 0xfffffffc)))" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "((int)puVar6 + (0x24 - (int)((uint)(puVar6 + 1) & 0xfffffffc)))" (( "(") (binary_expression "(int)puVar6 + (0x24 - (int)((uint)(puVar6 + 1) & 0xfffffffc))" (cast_expression "(int)puVar6" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar6")) (+ "+") (parenthesized_expression "(0x24 - (int)((uint)(puVar6 + 1) & 0xfffffffc))" (( "(") (binary_expression "0x24 - (int)((uint)(puVar6 + 1) & 0xfffffffc)" (number_literal "0x24") (- "-") (cast_expression "(int)((uint)(puVar6 + 1) & 0xfffffffc)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "((uint)(puVar6 + 1) & 0xfffffffc)" (( "(") (binary_expression "(uint)(puVar6 + 1) & 0xfffffffc" (call_expression "(uint)(puVar6 + 1)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(puVar6 + 1)" (( "(") (binary_expression "puVar6 + 1" (identifier "puVar6") (+ "+") (number_literal "1")) () ")"))) (& "&") (number_literal "0xfffffffc")) () ")")))) () ")"))) () ")"))) (>> ">>") (number_literal "2"))) (; ";") (binary_expression "uVar8 != 0" (identifier "uVar8") (!= "!=") (number_literal "0")) (; ";") (assignment_expression "uVar8 = uVar8 - 1" (identifier "uVar8") (= "=") (binary_expression "uVar8 - 1" (identifier "uVar8") (- "-") (number_literal "1"))) () ")") (compound_statement "{\n        *puVar13 = 0;\n        puVar13 = puVar13 + (uint)bVar14 * -2 + 1;\n      }" ({ "{") (expression_statement "*puVar13 = 0;" (assignment_expression "*puVar13 = 0" (pointer_expression "*puVar13" (* "*") (identifier "puVar13")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar13 = puVar13 + (uint)bVar14 * -2 + 1;" (assignment_expression "puVar13 = puVar13 + (uint)bVar14 * -2 + 1" (identifier "puVar13") (= "=") (binary_expression "puVar13 + (uint)bVar14 * -2 + 1" (binary_expression "puVar13 + (uint)bVar14 * -2" (identifier "puVar13") (+ "+") (binary_expression "(uint)bVar14 * -2" (cast_expression "(uint)bVar14" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar14")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (} "}"))) (expression_statement "puVar6[1] = puVar6 + 9;" (assignment_expression "puVar6[1] = puVar6 + 9" (subscript_expression "puVar6[1]" (identifier "puVar6") ([ "[") (number_literal "1") (] "]")) (= "=") (binary_expression "puVar6 + 9" (identifier "puVar6") (+ "+") (number_literal "9"))) (; ";")) (expression_statement "memcpy(puVar6 + 9,param_2,(sVar3 & 0x3fffffff) + 1);" (call_expression "memcpy(puVar6 + 9,param_2,(sVar3 & 0x3fffffff) + 1)" (identifier "memcpy") (argument_list "(puVar6 + 9,param_2,(sVar3 & 0x3fffffff) + 1)" (( "(") (binary_expression "puVar6 + 9" (identifier "puVar6") (+ "+") (number_literal "9")) (, ",") (identifier "param_2") (, ",") (binary_expression "(sVar3 & 0x3fffffff) + 1" (parenthesized_expression "(sVar3 & 0x3fffffff)" (( "(") (binary_expression "sVar3 & 0x3fffffff" (identifier "sVar3") (& "&") (number_literal "0x3fffffff")) () ")")) (+ "+") (number_literal "1")) () ")"))) (; ";")) (expression_statement "uVar12 = 0;" (assignment_expression "uVar12 = 0" (identifier "uVar12") (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar13 = (undefined4 *)param_1[10];" (assignment_expression "puVar13 = (undefined4 *)param_1[10]" (identifier "puVar13") (= "=") (cast_expression "(undefined4 *)param_1[10]" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_1[10]" (identifier "param_1") ([ "[") (number_literal "10") (] "]")))) (; ";")) (if_statement "if ((undefined4 *)param_1[10] == (undefined4 *)0x0) {\n        param_1[10] = (int)puVar6;\n      }\n      else {\n        do {\n          puVar9 = puVar13;\n          puVar13 = (undefined4 *)*puVar9;\n        } while (puVar13 != (undefined4 *)0x0);\n        *puVar9 = puVar6;\n      }" (if "if") (parenthesized_expression "((undefined4 *)param_1[10] == (undefined4 *)0x0)" (( "(") (binary_expression "(undefined4 *)param_1[10] == (undefined4 *)0x0" (cast_expression "(undefined4 *)param_1[10]" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_1[10]" (identifier "param_1") ([ "[") (number_literal "10") (] "]"))) (== "==") (cast_expression "(undefined4 *)0x0" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n        param_1[10] = (int)puVar6;\n      }" ({ "{") (expression_statement "param_1[10] = (int)puVar6;" (assignment_expression "param_1[10] = (int)puVar6" (subscript_expression "param_1[10]" (identifier "param_1") ([ "[") (number_literal "10") (] "]")) (= "=") (cast_expression "(int)puVar6" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar6"))) (; ";")) (} "}")) (else_clause "else {\n        do {\n          puVar9 = puVar13;\n          puVar13 = (undefined4 *)*puVar9;\n        } while (puVar13 != (undefined4 *)0x0);\n        *puVar9 = puVar6;\n      }" (else "else") (compound_statement "{\n        do {\n          puVar9 = puVar13;\n          puVar13 = (undefined4 *)*puVar9;\n        } while (puVar13 != (undefined4 *)0x0);\n        *puVar9 = puVar6;\n      }" ({ "{") (do_statement "do {\n          puVar9 = puVar13;\n          puVar13 = (undefined4 *)*puVar9;\n        } while (puVar13 != (undefined4 *)0x0);" (do "do") (compound_statement "{\n          puVar9 = puVar13;\n          puVar13 = (undefined4 *)*puVar9;\n        }" ({ "{") (expression_statement "puVar9 = puVar13;" (assignment_expression "puVar9 = puVar13" (identifier "puVar9") (= "=") (identifier "puVar13")) (; ";")) (expression_statement "puVar13 = (undefined4 *)*puVar9;" (assignment_expression "puVar13 = (undefined4 *)*puVar9" (identifier "puVar13") (= "=") (cast_expression "(undefined4 *)*puVar9" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*puVar9" (* "*") (identifier "puVar9")))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(puVar13 != (undefined4 *)0x0)" (( "(") (binary_expression "puVar13 != (undefined4 *)0x0" (identifier "puVar13") (!= "!=") (cast_expression "(undefined4 *)0x0" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (; ";")) (expression_statement "*puVar9 = puVar6;" (assignment_expression "*puVar9 = puVar6" (pointer_expression "*puVar9" (* "*") (identifier "puVar9")) (= "=") (identifier "puVar6")) (; ";")) (} "}")))) (} "}")) (else_clause "else {\n      uVar12 = 7;\n    }" (else "else") (compound_statement "{\n      uVar12 = 7;\n    }" ({ "{") (expression_statement "uVar12 = 7;" (assignment_expression "uVar12 = 7" (identifier "uVar12") (= "=") (number_literal "7")) (; ";")) (} "}")))) (} "}"))) (labeled_statement "LAB_0014f47c:\n  if (*(int *)(*param_1 + 0xc) != 0) {\n    (**(code **)(unaff_EDI + 0x6c0bd))(*(int *)(*param_1 + 0xc));\n  }" (statement_identifier "LAB_0014f47c") (: ":") (if_statement "if (*(int *)(*param_1 + 0xc) != 0) {\n    (**(code **)(unaff_EDI + 0x6c0bd))(*(int *)(*param_1 + 0xc));\n  }" (if "if") (parenthesized_expression "(*(int *)(*param_1 + 0xc) != 0)" (( "(") (binary_expression "*(int *)(*param_1 + 0xc) != 0" (pointer_expression "*(int *)(*param_1 + 0xc)" (* "*") (cast_expression "(int *)(*param_1 + 0xc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*param_1 + 0xc)" (( "(") (binary_expression "*param_1 + 0xc" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (+ "+") (number_literal "0xc")) () ")")))) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    (**(code **)(unaff_EDI + 0x6c0bd))(*(int *)(*param_1 + 0xc));\n  }" ({ "{") (expression_statement "(**(code **)(unaff_EDI + 0x6c0bd))(*(int *)(*param_1 + 0xc));" (call_expression "(**(code **)(unaff_EDI + 0x6c0bd))(*(int *)(*param_1 + 0xc))" (parenthesized_expression "(**(code **)(unaff_EDI + 0x6c0bd))" (( "(") (pointer_expression "**(code **)(unaff_EDI + 0x6c0bd)" (* "*") (pointer_expression "*(code **)(unaff_EDI + 0x6c0bd)" (* "*") (cast_expression "(code **)(unaff_EDI + 0x6c0bd)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(unaff_EDI + 0x6c0bd)" (( "(") (binary_expression "unaff_EDI + 0x6c0bd" (identifier "unaff_EDI") (+ "+") (number_literal "0x6c0bd")) () ")"))))) () ")")) (argument_list "(*(int *)(*param_1 + 0xc))" (( "(") (pointer_expression "*(int *)(*param_1 + 0xc)" (* "*") (cast_expression "(int *)(*param_1 + 0xc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*param_1 + 0xc)" (( "(") (binary_expression "*param_1 + 0xc" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (+ "+") (number_literal "0xc")) () ")")))) () ")"))) (; ";")) (} "}")))) (return_statement "return uVar12;" (return "return") (identifier "uVar12") (; ";")) (} "}")))) (} "")))

int function_1(type_1 *pSession,char *var_4)

{
  type_2 *var_15;
  type_3 *var_2;
  type_2 *var_7;
  type_4 *var_21;
  size_t var_8;
  type_2 *var_13;
  type_4 *var_6;
  char var_9;
  type_5 var_18;
  type_4 *pSVar10;
  char var_10;
  type_2 *var_12;
  int var_14;
  int var_3;
  type_6 *var_19;
  type_2 bVar15;
  type_7 in_stack_ffffffc4;
  type_5 var_11;
  
  bVar15 = 0;
  var_1();
  var_2 = pSession->db->mutex;
  if (var_2 != (type_3 *)0x0) {
    (**(type_8 **)(var_3 + 0x6c0b5))(var_2);
  }
  if (var_4 == (char *)0x0) {
    var_14 = 0;
    pSession->bAutoAttach = 1;
  }
  else {
    var_8 = var_5(var_4);
    for (var_6 = pSession->pTable; var_6 != (type_4 *)0x0; var_6 = var_6->pNext) {
      var_7 = (type_2 *)var_6->var_4;
      if (var_7 != (type_2 *)0x0) {
        var_14 = var_3 + 0x1a459;
        var_9 = *(char *)(var_3 + 0x1a459 + (type_5)*var_7);
        var_10 = *(char *)(var_3 + 0x1a459 + (type_5)(type_2)*var_4);
        if (*var_7 != 0) {
          var_15 = (type_2 *)var_4;
          var_11 = var_8 & 0x3fffffff;
          if (var_9 != var_10) goto LAB_0014f4c0;
          do {
            var_12 = var_15;
            var_13 = var_7;
            var_11 = var_11 - 1;
            var_15 = var_12 + 1;
            if (var_11 == 0xffffffff) goto LAB_0014f47a;
          } while ((var_13[1] != 0) &&
                  (var_7 = var_13 + 1,
                  *(char *)(var_14 + (type_5)var_13[1]) == *(char *)(var_14 + (type_5)*var_15)));
          var_9 = *(char *)(var_14 + (type_5)var_13[1]);
          var_10 = *(char *)(var_14 + (type_5)var_12[1]);
        }
        if (var_9 == var_10) {
LAB_0014f47a:
          var_14 = 0;
          goto LAB_0014f47c;
        }
      }
LAB_0014f4c0:
    }
    var_14 = var_16();
    if ((var_14 == 0) &&
       (var_6 = (type_4 *)var_17(in_stack_ffffffc4), var_6 != (type_4 *)0x0)) {
      var_6->pNext = (type_4 *)0x0;
      var_19 = (type_6 *)((type_5)&var_6->var_4 & 0xfffffffc);
      var_6->apChange = (type_9 **)0x0;
      var_18 = (type_5)((int)var_6 + (0x24 - (int)var_19)) >> 2;
      for (; var_18 != 0; var_18 = var_18 - 1) {
        *var_19 = 0;
        var_19 = var_19 + (type_5)bVar15 * -2 + 1;
      }
      var_6->var_4 = (char *)(var_6 + 1);
      var_20(var_6 + 1,var_4,(var_8 & 0x3fffffff) + 1);
      var_14 = 0;
      var_21 = pSession->pTable;
      if (pSession->pTable == (type_4 *)0x0) {
        pSession->pTable = var_6;
      }
      else {
        do {
          pSVar10 = var_21;
          var_21 = pSVar10->pNext;
        } while (var_21 != (type_4 *)0x0);
        pSVar10->pNext = var_6;
      }
    }
    else {
      var_14 = 7;
    }
  }
LAB_0014f47c:
  var_2 = pSession->db->mutex;
  if (var_2 != (type_3 *)0x0) {
    (**(type_8 **)(var_3 + 0x6c0bd))(var_2);
  }
  return var_14;
}


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

undefined4 MASKED(int *param_1,byte *param_2)

{
  byte *pbVar1;
  byte *pbVar2;
  size_t sVar3;
  byte *pbVar4;
  int iVar5;
  undefined4 *puVar6;
  char cVar7;
  uint uVar8;
  undefined4 *puVar9;
  char cVar10;
  byte *pbVar11;
  undefined4 uVar12;
  int unaff_EDI;
  undefined4 *puVar13;
  byte bVar14;
  uint local_30;
  
  bVar14 = 0;
  FUN_0003a401();
  if (*(int *)(*param_1 + 0xc) != 0) {
    (**(code **)(unaff_EDI + 0x6c0b5))(*(int *)(*param_1 + 0xc));
  }
  if (param_2 == (byte *)0x0) {
    uVar12 = 0;
    param_1[4] = 1;
  }
  else {
    sVar3 = strlen((char *)param_2);
    for (puVar6 = (undefined4 *)param_1[10]; puVar6 != (undefined4 *)0x0;
        puVar6 = (undefined4 *)*puVar6) {
      pbVar2 = (byte *)puVar6[1];
      if (pbVar2 != (byte *)0x0) {
        iVar5 = unaff_EDI + 0x1a459;
        cVar7 = *(char *)(unaff_EDI + 0x1a459 + (uint)*pbVar2);
        cVar10 = *(char *)(unaff_EDI + 0x1a459 + (uint)*param_2);
        if (*pbVar2 != 0) {
          pbVar1 = param_2;
          local_30 = sVar3 & 0x3fffffff;
          if (cVar7 != cVar10) goto LAB_0014f4c0;
          do {
            pbVar11 = pbVar1;
            pbVar4 = pbVar2;
            local_30 = local_30 - 1;
            pbVar1 = pbVar11 + 1;
            if (local_30 == 0xffffffff) goto LAB_0014f47a;
          } while ((pbVar4[1] != 0) &&
                  (pbVar2 = pbVar4 + 1,
                  *(char *)(iVar5 + (uint)pbVar4[1]) == *(char *)(iVar5 + (uint)*pbVar1)));
          cVar7 = *(char *)(iVar5 + (uint)pbVar4[1]);
          cVar10 = *(char *)(iVar5 + (uint)pbVar11[1]);
        }
        if (cVar7 == cVar10) {
LAB_0014f47a:
          uVar12 = 0;
          goto LAB_0014f47c;
        }
      }
LAB_0014f4c0:
    }
    iVar5 = FUN_00067fc0();
    if ((iVar5 == 0) && (puVar6 = (undefined4 *)FUN_00055780(), puVar6 != (undefined4 *)0x0)) {
      *puVar6 = 0;
      puVar6[8] = 0;
      puVar13 = (undefined4 *)((uint)(puVar6 + 1) & 0xfffffffc);
      for (uVar8 = (uint)((int)puVar6 + (0x24 - (int)((uint)(puVar6 + 1) & 0xfffffffc))) >> 2;
          uVar8 != 0; uVar8 = uVar8 - 1) {
        *puVar13 = 0;
        puVar13 = puVar13 + (uint)bVar14 * -2 + 1;
      }
      puVar6[1] = puVar6 + 9;
      memcpy(puVar6 + 9,param_2,(sVar3 & 0x3fffffff) + 1);
      uVar12 = 0;
      puVar13 = (undefined4 *)param_1[10];
      if ((undefined4 *)param_1[10] == (undefined4 *)0x0) {
        param_1[10] = (int)puVar6;
      }
      else {
        do {
          puVar9 = puVar13;
          puVar13 = (undefined4 *)*puVar9;
        } while (puVar13 != (undefined4 *)0x0);
        *puVar9 = puVar6;
      }
    }
    else {
      uVar12 = 7;
    }
  }
LAB_0014f47c:
  if (*(int *)(*param_1 + 0xc) != 0) {
    (**(code **)(unaff_EDI + 0x6c0bd))(*(int *)(*param_1 + 0xc));
  }
  return uVar12;
}

