
/* WARNING: Type propagation algorithm not settling */

int __regparm3 volume_id_probe_udf(volume_id *id)

{
  uint uVar1;
  void *pvVar2;
  short *psVar3;
  uint uVar4;
  int iVar5;
  uint uVar6;
  bool bVar7;
  uint local_2c;
  
  pvVar2 = volume_id_get_buffer(id,0x8000,0x200);
  if (pvVar2 == (void *)0x0) {
    return -1;
  }
  if (*(int *)((int)pvVar2 + 1) == 0x3052534e) {
    if (*(char *)((int)pvVar2 + 5) == '2') goto LAB_000743c5;
    iVar5 = *(int *)((int)pvVar2 + 1);
  }
  else {
    iVar5 = *(int *)((int)pvVar2 + 1);
  }
  if (iVar5 == 0x3052534e) {
    if (*(char *)((int)pvVar2 + 5) == '3') goto LAB_000743c5;
    iVar5 = *(int *)((int)pvVar2 + 1);
  }
  else {
    iVar5 = *(int *)((int)pvVar2 + 1);
  }
  if (iVar5 == 0x30414542) {
    if (*(char *)((int)pvVar2 + 5) == '1') goto LAB_000743c5;
    iVar5 = *(int *)((int)pvVar2 + 1);
  }
  else {
    iVar5 = *(int *)((int)pvVar2 + 1);
  }
  if (iVar5 == 0x544f4f42) {
    if (*(char *)((int)pvVar2 + 5) == '2') goto LAB_000743c5;
    if (*(int *)((int)pvVar2 + 1) != 0x30304443) goto LAB_000743a9;
LAB_000745d1:
    if (*(char *)((int)pvVar2 + 5) == '1') goto LAB_000743c5;
    if (*(int *)((int)pvVar2 + 1) == 0x30574443) goto LAB_000745e8;
LAB_000743b6:
    iVar5 = *(int *)((int)pvVar2 + 1);
  }
  else {
    if (*(int *)((int)pvVar2 + 1) == 0x30304443) goto LAB_000745d1;
LAB_000743a9:
    if (*(int *)((int)pvVar2 + 1) != 0x30574443) goto LAB_000743b6;
LAB_000745e8:
    if (*(char *)((int)pvVar2 + 5) == '2') goto LAB_000743c5;
    iVar5 = *(int *)((int)pvVar2 + 1);
  }
  if (iVar5 != 0x30414554) {
    return -1;
  }
  if (*(char *)((int)pvVar2 + 5) != '3') {
    return -1;
  }
LAB_000743c5:
  uVar4 = 0x8800;
  iVar5 = 0;
  while( true ) {
    uVar1 = uVar4 - 0x8000;
    pvVar2 = volume_id_get_buffer(id,CONCAT44(iVar5,uVar4),0x800);
    if (pvVar2 == (void *)0x0) {
      return -1;
    }
    if (*(char *)((int)pvVar2 + 1) != '\0') break;
    bVar7 = 0xfffff7ff < uVar4;
    uVar4 = uVar4 + 0x800;
    iVar5 = iVar5 + (uint)bVar7;
    if (iVar5 == 0 && uVar4 == 0x10000) {
      return -1;
    }
  }
  uVar4 = 0;
  iVar5 = 0x40;
  while( true ) {
    pvVar2 = volume_id_get_buffer(id,(ulonglong)CONCAT14(0xffff7fff < uVar4,uVar4 + 0x8000),0x800);
    if (pvVar2 == (void *)0x0) {
      return -1;
    }
    if (*(char *)((int)pvVar2 + 1) == '\0') {
      return -1;
    }
    if (((*(int *)((int)pvVar2 + 1) == 0x3052534e) && (*(char *)((int)pvVar2 + 5) == '2')) ||
       ((*(int *)((int)pvVar2 + 1) == 0x3052534e && (*(char *)((int)pvVar2 + 5) == '3')))) break;
    iVar5 = iVar5 + -1;
    uVar4 = uVar4 + uVar1;
    if (iVar5 == 0) {
      return -1;
    }
  }
  psVar3 = (short *)volume_id_get_buffer(id,(ulonglong)(uVar1 * 0x100),0x200);
  if (psVar3 == (short *)0x0) {
    return -1;
  }
  if (*psVar3 != 2) {
    return 0;
  }
  uVar4 = *(uint *)(psVar3 + 8);
  if (uVar4 < uVar1) {
    return 0;
  }
  iVar5 = *(int *)(psVar3 + 10);
  local_2c = iVar5 * uVar1;
  uVar6 = 0;
  while( true ) {
    psVar3 = (short *)volume_id_get_buffer(id,(ulonglong)local_2c,0x200);
    if (psVar3 == (short *)0x0) {
      return -1;
    }
    if (*psVar3 == 0) {
      return 0;
    }
    if (*(int *)(psVar3 + 6) != uVar6 + iVar5) {
      return 0;
    }
    if (*psVar3 == 1) break;
    uVar6 = uVar6 + 1;
    local_2c = local_2c + uVar1;
    if (uVar4 / uVar1 <= uVar6) {
      return 0;
    }
  }
  if ((char)psVar3[0xc] == '\b') {
    volume_id_set_label_string(id,(uint8_t *)((int)psVar3 + 0x19),0x1f);
    return 0;
  }
  if ((char)psVar3[0xc] != '\x10') {
    return 0;
  }
  volume_id_set_label_unicode16(id,(uint8_t *)((int)psVar3 + 0x19),BE,0x1f);
  return 0;
}



/* WARNING: Type propagation algorithm not settling */

undefined4 __regparm3 FUN_00074336(undefined4 param_1)

{
  uint uVar1;
  int iVar2;
  int iVar3;
  short *psVar4;
  uint uVar5;
  uint uVar6;
  bool bVar7;
  int local_2c;
  
  iVar2 = FUN_000749ed(param_1,0x8000,0,0x200);
  if (iVar2 == 0) {
    return 0xffffffff;
  }
  if (*(int *)(iVar2 + 1) == 0x3052534e) {
    if (*(char *)(iVar2 + 5) == '2') goto LAB_000743c5;
    iVar3 = *(int *)(iVar2 + 1);
  }
  else {
    iVar3 = *(int *)(iVar2 + 1);
  }
  if (iVar3 == 0x3052534e) {
    if (*(char *)(iVar2 + 5) == '3') goto LAB_000743c5;
    iVar3 = *(int *)(iVar2 + 1);
  }
  else {
    iVar3 = *(int *)(iVar2 + 1);
  }
  if (iVar3 == 0x30414542) {
    if (*(char *)(iVar2 + 5) == '1') goto LAB_000743c5;
    iVar3 = *(int *)(iVar2 + 1);
  }
  else {
    iVar3 = *(int *)(iVar2 + 1);
  }
  if (iVar3 == 0x544f4f42) {
    if (*(char *)(iVar2 + 5) == '2') goto LAB_000743c5;
    if (*(int *)(iVar2 + 1) != 0x30304443) goto LAB_000743a9;
LAB_000745d1:
    if (*(char *)(iVar2 + 5) == '1') goto LAB_000743c5;
    if (*(int *)(iVar2 + 1) == 0x30574443) goto LAB_000745e8;
LAB_000743b6:
    iVar3 = *(int *)(iVar2 + 1);
  }
  else {
    if (*(int *)(iVar2 + 1) == 0x30304443) goto LAB_000745d1;
LAB_000743a9:
    if (*(int *)(iVar2 + 1) != 0x30574443) goto LAB_000743b6;
LAB_000745e8:
    if (*(char *)(iVar2 + 5) == '2') goto LAB_000743c5;
    iVar3 = *(int *)(iVar2 + 1);
  }
  if (iVar3 != 0x30414554) {
    return 0xffffffff;
  }
  if (*(char *)(iVar2 + 5) != '3') {
    return 0xffffffff;
  }
LAB_000743c5:
  uVar5 = 0x8800;
  iVar2 = 0;
  while( true ) {
    uVar1 = uVar5 - 0x8000;
    iVar3 = FUN_000749ed(param_1,uVar5,iVar2,0x800);
    if (iVar3 == 0) {
      return 0xffffffff;
    }
    if (*(char *)(iVar3 + 1) != '\0') break;
    bVar7 = 0xfffff7ff < uVar5;
    uVar5 = uVar5 + 0x800;
    iVar2 = iVar2 + (uint)bVar7;
    if (iVar2 == 0 && uVar5 == 0x10000) {
      return 0xffffffff;
    }
  }
  uVar5 = 0;
  iVar2 = 0x40;
  while( true ) {
    iVar3 = FUN_000749ed(param_1,uVar5 + 0x8000,0xffff7fff < uVar5,0x800);
    if (iVar3 == 0) {
      return 0xffffffff;
    }
    if (*(char *)(iVar3 + 1) == '\0') {
      return 0xffffffff;
    }
    if (((*(int *)(iVar3 + 1) == 0x3052534e) && (*(char *)(iVar3 + 5) == '2')) ||
       ((*(int *)(iVar3 + 1) == 0x3052534e && (*(char *)(iVar3 + 5) == '3')))) break;
    iVar2 = iVar2 + -1;
    uVar5 = uVar5 + uVar1;
    if (iVar2 == 0) {
      return 0xffffffff;
    }
  }
  psVar4 = (short *)FUN_000749ed(param_1,uVar1 * 0x100,0,0x200);
  if (psVar4 == (short *)0x0) {
    return 0xffffffff;
  }
  if (*psVar4 != 2) {
    return 0;
  }
  uVar5 = *(uint *)(psVar4 + 8);
  if (uVar5 < uVar1) {
    return 0;
  }
  iVar2 = *(int *)(psVar4 + 10);
  local_2c = iVar2 * uVar1;
  uVar6 = 0;
  while( true ) {
    psVar4 = (short *)FUN_000749ed(param_1,local_2c,0,0x200);
    if (psVar4 == (short *)0x0) {
      return 0xffffffff;
    }
    if (*psVar4 == 0) {
      return 0;
    }
    if (*(int *)(psVar4 + 6) != uVar6 + iVar2) {
      return 0;
    }
    if (*psVar4 == 1) break;
    uVar6 = uVar6 + 1;
    local_2c = local_2c + uVar1;
    if (uVar5 / uVar1 <= uVar6) {
      return 0;
    }
  }
  if ((char)psVar4[0xc] == '\b') {
    FUN_000747a0(param_1,(int)psVar4 + 0x19,0x1f,8);
    return 0;
  }
  if ((char)psVar4[0xc] != '\x10') {
    return 0;
  }
  FUN_00074819(param_1,(int)psVar4 + 0x19,1,0x1f);
  return 0;
}


PUSH EBP
PUSH EDI
PUSH ESI
PUSH EBX
SUB ESP,0x1c
MOV EDI,EAX
PUSH 0x200
PUSH 0x0
PUSH 0x8000
PUSH EAX
CALL 0x000749ed
ADD ESP,0x10
TEST EAX,EAX
JNZ 0x00074365
MOV EAX,0xffffffff
ADD ESP,0x1c
POP EBX
POP ESI
POP EDI
POP EBP
RET
LEA EDX,[EAX + 0x1]
CMP dword ptr [EAX + 0x1],0x3052534e
JZ 0x00074455
CMP dword ptr [EAX + 0x1],0x3052534e
JZ 0x0007458c
CMP dword ptr [EAX + 0x1],0x30414542
JZ 0x000745a3
CMP dword ptr [EAX + 0x1],0x544f4f42
JZ 0x000745ba
CMP dword ptr [EAX + 0x1],0x30304443
JZ 0x000745d1
CMP dword ptr [EAX + 0x1],0x30574443
JZ 0x000745e8
CMP dword ptr [EAX + 0x1],0x30414554
JNZ 0x00074358
CMP byte ptr [EDX + 0x4],0x33
JNZ 0x00074358
MOV ECX,0x8800
XOR EBX,EBX
LEA EBP,[ECX + 0xffff8000]
PUSH 0x800
PUSH EBX
PUSH ECX
MOV dword ptr [ESP + 0xc],ECX
MOV dword ptr [ESP + 0x10],EBX
PUSH EDI
CALL 0x000749ed
ADD ESP,0x10
TEST EAX,EAX
JZ 0x00074358
CMP byte ptr [EAX + 0x1],0x0
JZ 0x00074471
XOR ESI,ESI
MOV EBX,0x40
PUSH 0x800
MOV EAX,ESI
XOR EDX,EDX
ADD EAX,0x8000
ADC EDX,0x0
PUSH EDX
PUSH EAX
PUSH EDI
CALL 0x000749ed
ADD ESP,0x10
TEST EAX,EAX
JZ 0x00074358
CMP byte ptr [EAX + 0x1],0x0
JZ 0x00074358
LEA EDX,[EAX + 0x1]
CMP dword ptr [EAX + 0x1],0x3052534e
JZ 0x0007449c
CMP dword ptr [EAX + 0x1],0x3052534e
JZ 0x00074574
ADD ESI,EBP
DEC EBX
JNZ 0x000743ff
MOV EAX,0xffffffff
JMP 0x0007435d
CMP byte ptr [EDX + 0x4],0x32
JZ 0x000743c5
CMP dword ptr [EAX + 0x1],0x3052534e
JNZ 0x00074382
JMP 0x0007458c
MOV ECX,dword ptr [ESP]
MOV EBX,dword ptr [ESP + 0x4]
ADD ECX,0x800
ADC EBX,0x0
MOV EAX,ECX
XOR EAX,0x10000
MOV EDX,EBX
OR EDX,EAX
JNZ 0x000743cc
MOV EAX,0xffffffff
JMP 0x0007435d
CMP byte ptr [EDX + 0x4],0x32
JNZ 0x00074439
PUSH 0x200
MOV EAX,EBP
SHL EAX,0x8
XOR EDX,EDX
PUSH EDX
PUSH EAX
PUSH EDI
CALL 0x000749ed
ADD ESP,0x10
TEST EAX,EAX
JZ 0x00074358
CMP word ptr [EAX],0x2
JZ 0x000744d1
XOR EAX,EAX
ADD ESP,0x1c
POP EBX
POP ESI
POP EDI
POP EBP
RET
MOV EBX,dword ptr [EAX + 0x10]
MOV dword ptr [ESP + 0xc],EBX
CMP EBX,EBP
JC 0x000744c7
MOV ESI,dword ptr [EAX + 0x14]
MOV EAX,ESI
IMUL EAX,EBP
MOV dword ptr [ESP],EAX
XOR EBX,EBX
PUSH 0x200
MOV EAX,dword ptr [ESP + 0x4]
XOR EDX,EDX
PUSH EDX
PUSH EAX
PUSH EDI
CALL 0x000749ed
ADD ESP,0x10
TEST EAX,EAX
JZ 0x00074358
MOVZX EDX,word ptr [EAX]
TEST EDX,EDX
JZ 0x000744c7
LEA ECX,[EBX + ESI*0x1]
CMP dword ptr [EAX + 0xc],ECX
JNZ 0x000744c7
DEC EDX
JNZ 0x0007453c
MOVZX EDX,byte ptr [EAX + 0x18]
CMP EDX,0x8
JNZ 0x00074553
PUSH EDX
PUSH 0x1f
ADD EAX,0x19
PUSH EAX
PUSH EDI
CALL 0x000747a0
ADD ESP,0x10
XOR EAX,EAX
ADD ESP,0x1c
POP EBX
POP ESI
POP EDI
POP EBP
RET
INC EBX
ADD dword ptr [ESP],EBP
MOV EAX,dword ptr [ESP + 0xc]
XOR EDX,EDX
DIV EBP
CMP EAX,EBX
JA 0x000744e9
XOR EAX,EAX
JMP 0x000744c9
CMP EDX,0x10
JNZ 0x000744c7
PUSH 0x1f
PUSH 0x1
ADD EAX,0x19
PUSH EAX
PUSH EDI
CALL 0x00074819
ADD ESP,0x10
XOR EAX,EAX
JMP 0x000744c9
CMP byte ptr [EDX + 0x4],0x33
JZ 0x000744a2
ADD ESI,EBP
DEC EBX
JNZ 0x000743ff
JMP 0x0007444b
CMP byte ptr [EDX + 0x4],0x33
JZ 0x000743c5
CMP dword ptr [EAX + 0x1],0x30414542
JNZ 0x0007438f
CMP byte ptr [EDX + 0x4],0x31
JZ 0x000743c5
CMP dword ptr [EAX + 0x1],0x544f4f42
JNZ 0x0007439c
CMP byte ptr [EDX + 0x4],0x32
JZ 0x000743c5
CMP dword ptr [EAX + 0x1],0x30304443
JNZ 0x000743a9
CMP byte ptr [EDX + 0x4],0x31
JZ 0x000743c5
CMP dword ptr [EAX + 0x1],0x30574443
JNZ 0x000743b6
CMP byte ptr [EDX + 0x4],0x32
JZ 0x000743c5
CMP dword ptr [EAX + 0x1],0x30414554
JNZ 0x00074358
JMP 0x000743bf
(translation_unit "/* WARNING: Type propagation algorithm not settling */\n\nundefined4 __regparm3 FUN_00074336(undefined4 param_1)\n\n{\n  uint uVar1;\n  int iVar2;\n  int iVar3;\n  short *psVar4;\n  uint uVar5;\n  uint uVar6;\n  bool bVar7;\n  int local_2c;\n  \n  iVar2 = FUN_000749ed(param_1,0x8000,0,0x200);\n  if (iVar2 == 0) {\n    return 0xffffffff;\n  }\n  if (*(int *)(iVar2 + 1) == 0x3052534e) {\n    if (*(char *)(iVar2 + 5) == '2') goto LAB_000743c5;\n    iVar3 = *(int *)(iVar2 + 1);\n  }\n  else {\n    iVar3 = *(int *)(iVar2 + 1);\n  }\n  if (iVar3 == 0x3052534e) {\n    if (*(char *)(iVar2 + 5) == '3') goto LAB_000743c5;\n    iVar3 = *(int *)(iVar2 + 1);\n  }\n  else {\n    iVar3 = *(int *)(iVar2 + 1);\n  }\n  if (iVar3 == 0x30414542) {\n    if (*(char *)(iVar2 + 5) == '1') goto LAB_000743c5;\n    iVar3 = *(int *)(iVar2 + 1);\n  }\n  else {\n    iVar3 = *(int *)(iVar2 + 1);\n  }\n  if (iVar3 == 0x544f4f42) {\n    if (*(char *)(iVar2 + 5) == '2') goto LAB_000743c5;\n    if (*(int *)(iVar2 + 1) != 0x30304443) goto LAB_000743a9;\nLAB_000745d1:\n    if (*(char *)(iVar2 + 5) == '1') goto LAB_000743c5;\n    if (*(int *)(iVar2 + 1) == 0x30574443) goto LAB_000745e8;\nLAB_000743b6:\n    iVar3 = *(int *)(iVar2 + 1);\n  }\n  else {\n    if (*(int *)(iVar2 + 1) == 0x30304443) goto LAB_000745d1;\nLAB_000743a9:\n    if (*(int *)(iVar2 + 1) != 0x30574443) goto LAB_000743b6;\nLAB_000745e8:\n    if (*(char *)(iVar2 + 5) == '2') goto LAB_000743c5;\n    iVar3 = *(int *)(iVar2 + 1);\n  }\n  if (iVar3 != 0x30414554) {\n    return 0xffffffff;\n  }\n  if (*(char *)(iVar2 + 5) != '3') {\n    return 0xffffffff;\n  }\nLAB_000743c5:\n  uVar5 = 0x8800;\n  iVar2 = 0;\n  while( true ) {\n    uVar1 = uVar5 - 0x8000;\n    iVar3 = FUN_000749ed(param_1,uVar5,iVar2,0x800);\n    if (iVar3 == 0) {\n      return 0xffffffff;\n    }\n    if (*(char *)(iVar3 + 1) != '\0') break;\n    bVar7 = 0xfffff7ff < uVar5;\n    uVar5 = uVar5 + 0x800;\n    iVar2 = iVar2 + (uint)bVar7;\n    if (iVar2 == 0 && uVar5 == 0x10000) {\n      return 0xffffffff;\n    }\n  }\n  uVar5 = 0;\n  iVar2 = 0x40;\n  while( true ) {\n    iVar3 = FUN_000749ed(param_1,uVar5 + 0x8000,0xffff7fff < uVar5,0x800);\n    if (iVar3 == 0) {\n      return 0xffffffff;\n    }\n    if (*(char *)(iVar3 + 1) == '\0') {\n      return 0xffffffff;\n    }\n    if (((*(int *)(iVar3 + 1) == 0x3052534e) && (*(char *)(iVar3 + 5) == '2')) ||\n       ((*(int *)(iVar3 + 1) == 0x3052534e && (*(char *)(iVar3 + 5) == '3')))) break;\n    iVar2 = iVar2 + -1;\n    uVar5 = uVar5 + uVar1;\n    if (iVar2 == 0) {\n      return 0xffffffff;\n    }\n  }\n  psVar4 = (short *)FUN_000749ed(param_1,uVar1 * 0x100,0,0x200);\n  if (psVar4 == (short *)0x0) {\n    return 0xffffffff;\n  }\n  if (*psVar4 != 2) {\n    return 0;\n  }\n  uVar5 = *(uint *)(psVar4 + 8);\n  if (uVar5 < uVar1) {\n    return 0;\n  }\n  iVar2 = *(int *)(psVar4 + 10);\n  local_2c = iVar2 * uVar1;\n  uVar6 = 0;\n  while( true ) {\n    psVar4 = (short *)FUN_000749ed(param_1,local_2c,0,0x200);\n    if (psVar4 == (short *)0x0) {\n      return 0xffffffff;\n    }\n    if (*psVar4 == 0) {\n      return 0;\n    }\n    if (*(int *)(psVar4 + 6) != uVar6 + iVar2) {\n      return 0;\n    }\n    if (*psVar4 == 1) break;\n    uVar6 = uVar6 + 1;\n    local_2c = local_2c + uVar1;\n    if (uVar5 / uVar1 <= uVar6) {\n      return 0;\n    }\n  }\n  if ((char)psVar4[0xc] == '\b') {\n    FUN_000747a0(param_1,(int)psVar4 + 0x19,0x1f,8);\n    return 0;\n  }\n  if ((char)psVar4[0xc] != '\x10') {\n    return 0;\n  }\n  FUN_00074819(param_1,(int)psVar4 + 0x19,1,0x1f);\n  return 0;\n}\n\n" comment (function_definition "undefined4 __regparm3 FUN_00074336(undefined4 param_1)\n\n{\n  uint uVar1;\n  int iVar2;\n  int iVar3;\n  short *psVar4;\n  uint uVar5;\n  uint uVar6;\n  bool bVar7;\n  int local_2c;\n  \n  iVar2 = FUN_000749ed(param_1,0x8000,0,0x200);\n  if (iVar2 == 0) {\n    return 0xffffffff;\n  }\n  if (*(int *)(iVar2 + 1) == 0x3052534e) {\n    if (*(char *)(iVar2 + 5) == '2') goto LAB_000743c5;\n    iVar3 = *(int *)(iVar2 + 1);\n  }\n  else {\n    iVar3 = *(int *)(iVar2 + 1);\n  }\n  if (iVar3 == 0x3052534e) {\n    if (*(char *)(iVar2 + 5) == '3') goto LAB_000743c5;\n    iVar3 = *(int *)(iVar2 + 1);\n  }\n  else {\n    iVar3 = *(int *)(iVar2 + 1);\n  }\n  if (iVar3 == 0x30414542) {\n    if (*(char *)(iVar2 + 5) == '1') goto LAB_000743c5;\n    iVar3 = *(int *)(iVar2 + 1);\n  }\n  else {\n    iVar3 = *(int *)(iVar2 + 1);\n  }\n  if (iVar3 == 0x544f4f42) {\n    if (*(char *)(iVar2 + 5) == '2') goto LAB_000743c5;\n    if (*(int *)(iVar2 + 1) != 0x30304443) goto LAB_000743a9;\nLAB_000745d1:\n    if (*(char *)(iVar2 + 5) == '1') goto LAB_000743c5;\n    if (*(int *)(iVar2 + 1) == 0x30574443) goto LAB_000745e8;\nLAB_000743b6:\n    iVar3 = *(int *)(iVar2 + 1);\n  }\n  else {\n    if (*(int *)(iVar2 + 1) == 0x30304443) goto LAB_000745d1;\nLAB_000743a9:\n    if (*(int *)(iVar2 + 1) != 0x30574443) goto LAB_000743b6;\nLAB_000745e8:\n    if (*(char *)(iVar2 + 5) == '2') goto LAB_000743c5;\n    iVar3 = *(int *)(iVar2 + 1);\n  }\n  if (iVar3 != 0x30414554) {\n    return 0xffffffff;\n  }\n  if (*(char *)(iVar2 + 5) != '3') {\n    return 0xffffffff;\n  }\nLAB_000743c5:\n  uVar5 = 0x8800;\n  iVar2 = 0;\n  while( true ) {\n    uVar1 = uVar5 - 0x8000;\n    iVar3 = FUN_000749ed(param_1,uVar5,iVar2,0x800);\n    if (iVar3 == 0) {\n      return 0xffffffff;\n    }\n    if (*(char *)(iVar3 + 1) != '\0') break;\n    bVar7 = 0xfffff7ff < uVar5;\n    uVar5 = uVar5 + 0x800;\n    iVar2 = iVar2 + (uint)bVar7;\n    if (iVar2 == 0 && uVar5 == 0x10000) {\n      return 0xffffffff;\n    }\n  }\n  uVar5 = 0;\n  iVar2 = 0x40;\n  while( true ) {\n    iVar3 = FUN_000749ed(param_1,uVar5 + 0x8000,0xffff7fff < uVar5,0x800);\n    if (iVar3 == 0) {\n      return 0xffffffff;\n    }\n    if (*(char *)(iVar3 + 1) == '\0') {\n      return 0xffffffff;\n    }\n    if (((*(int *)(iVar3 + 1) == 0x3052534e) && (*(char *)(iVar3 + 5) == '2')) ||\n       ((*(int *)(iVar3 + 1) == 0x3052534e && (*(char *)(iVar3 + 5) == '3')))) break;\n    iVar2 = iVar2 + -1;\n    uVar5 = uVar5 + uVar1;\n    if (iVar2 == 0) {\n      return 0xffffffff;\n    }\n  }\n  psVar4 = (short *)FUN_000749ed(param_1,uVar1 * 0x100,0,0x200);\n  if (psVar4 == (short *)0x0) {\n    return 0xffffffff;\n  }\n  if (*psVar4 != 2) {\n    return 0;\n  }\n  uVar5 = *(uint *)(psVar4 + 8);\n  if (uVar5 < uVar1) {\n    return 0;\n  }\n  iVar2 = *(int *)(psVar4 + 10);\n  local_2c = iVar2 * uVar1;\n  uVar6 = 0;\n  while( true ) {\n    psVar4 = (short *)FUN_000749ed(param_1,local_2c,0,0x200);\n    if (psVar4 == (short *)0x0) {\n      return 0xffffffff;\n    }\n    if (*psVar4 == 0) {\n      return 0;\n    }\n    if (*(int *)(psVar4 + 6) != uVar6 + iVar2) {\n      return 0;\n    }\n    if (*psVar4 == 1) break;\n    uVar6 = uVar6 + 1;\n    local_2c = local_2c + uVar1;\n    if (uVar5 / uVar1 <= uVar6) {\n      return 0;\n    }\n  }\n  if ((char)psVar4[0xc] == '\b') {\n    FUN_000747a0(param_1,(int)psVar4 + 0x19,0x1f,8);\n    return 0;\n  }\n  if ((char)psVar4[0xc] != '\x10') {\n    return 0;\n  }\n  FUN_00074819(param_1,(int)psVar4 + 0x19,1,0x1f);\n  return 0;\n}" type_identifier (ERROR "__regparm3" identifier) (function_declarator "FUN_00074336(undefined4 param_1)" identifier (parameter_list "(undefined4 param_1)" ( (parameter_declaration "undefined4 param_1" type_identifier identifier) ))) (compound_statement "{\n  uint uVar1;\n  int iVar2;\n  int iVar3;\n  short *psVar4;\n  uint uVar5;\n  uint uVar6;\n  bool bVar7;\n  int local_2c;\n  \n  iVar2 = FUN_000749ed(param_1,0x8000,0,0x200);\n  if (iVar2 == 0) {\n    return 0xffffffff;\n  }\n  if (*(int *)(iVar2 + 1) == 0x3052534e) {\n    if (*(char *)(iVar2 + 5) == '2') goto LAB_000743c5;\n    iVar3 = *(int *)(iVar2 + 1);\n  }\n  else {\n    iVar3 = *(int *)(iVar2 + 1);\n  }\n  if (iVar3 == 0x3052534e) {\n    if (*(char *)(iVar2 + 5) == '3') goto LAB_000743c5;\n    iVar3 = *(int *)(iVar2 + 1);\n  }\n  else {\n    iVar3 = *(int *)(iVar2 + 1);\n  }\n  if (iVar3 == 0x30414542) {\n    if (*(char *)(iVar2 + 5) == '1') goto LAB_000743c5;\n    iVar3 = *(int *)(iVar2 + 1);\n  }\n  else {\n    iVar3 = *(int *)(iVar2 + 1);\n  }\n  if (iVar3 == 0x544f4f42) {\n    if (*(char *)(iVar2 + 5) == '2') goto LAB_000743c5;\n    if (*(int *)(iVar2 + 1) != 0x30304443) goto LAB_000743a9;\nLAB_000745d1:\n    if (*(char *)(iVar2 + 5) == '1') goto LAB_000743c5;\n    if (*(int *)(iVar2 + 1) == 0x30574443) goto LAB_000745e8;\nLAB_000743b6:\n    iVar3 = *(int *)(iVar2 + 1);\n  }\n  else {\n    if (*(int *)(iVar2 + 1) == 0x30304443) goto LAB_000745d1;\nLAB_000743a9:\n    if (*(int *)(iVar2 + 1) != 0x30574443) goto LAB_000743b6;\nLAB_000745e8:\n    if (*(char *)(iVar2 + 5) == '2') goto LAB_000743c5;\n    iVar3 = *(int *)(iVar2 + 1);\n  }\n  if (iVar3 != 0x30414554) {\n    return 0xffffffff;\n  }\n  if (*(char *)(iVar2 + 5) != '3') {\n    return 0xffffffff;\n  }\nLAB_000743c5:\n  uVar5 = 0x8800;\n  iVar2 = 0;\n  while( true ) {\n    uVar1 = uVar5 - 0x8000;\n    iVar3 = FUN_000749ed(param_1,uVar5,iVar2,0x800);\n    if (iVar3 == 0) {\n      return 0xffffffff;\n    }\n    if (*(char *)(iVar3 + 1) != '\0') break;\n    bVar7 = 0xfffff7ff < uVar5;\n    uVar5 = uVar5 + 0x800;\n    iVar2 = iVar2 + (uint)bVar7;\n    if (iVar2 == 0 && uVar5 == 0x10000) {\n      return 0xffffffff;\n    }\n  }\n  uVar5 = 0;\n  iVar2 = 0x40;\n  while( true ) {\n    iVar3 = FUN_000749ed(param_1,uVar5 + 0x8000,0xffff7fff < uVar5,0x800);\n    if (iVar3 == 0) {\n      return 0xffffffff;\n    }\n    if (*(char *)(iVar3 + 1) == '\0') {\n      return 0xffffffff;\n    }\n    if (((*(int *)(iVar3 + 1) == 0x3052534e) && (*(char *)(iVar3 + 5) == '2')) ||\n       ((*(int *)(iVar3 + 1) == 0x3052534e && (*(char *)(iVar3 + 5) == '3')))) break;\n    iVar2 = iVar2 + -1;\n    uVar5 = uVar5 + uVar1;\n    if (iVar2 == 0) {\n      return 0xffffffff;\n    }\n  }\n  psVar4 = (short *)FUN_000749ed(param_1,uVar1 * 0x100,0,0x200);\n  if (psVar4 == (short *)0x0) {\n    return 0xffffffff;\n  }\n  if (*psVar4 != 2) {\n    return 0;\n  }\n  uVar5 = *(uint *)(psVar4 + 8);\n  if (uVar5 < uVar1) {\n    return 0;\n  }\n  iVar2 = *(int *)(psVar4 + 10);\n  local_2c = iVar2 * uVar1;\n  uVar6 = 0;\n  while( true ) {\n    psVar4 = (short *)FUN_000749ed(param_1,local_2c,0,0x200);\n    if (psVar4 == (short *)0x0) {\n      return 0xffffffff;\n    }\n    if (*psVar4 == 0) {\n      return 0;\n    }\n    if (*(int *)(psVar4 + 6) != uVar6 + iVar2) {\n      return 0;\n    }\n    if (*psVar4 == 1) break;\n    uVar6 = uVar6 + 1;\n    local_2c = local_2c + uVar1;\n    if (uVar5 / uVar1 <= uVar6) {\n      return 0;\n    }\n  }\n  if ((char)psVar4[0xc] == '\b') {\n    FUN_000747a0(param_1,(int)psVar4 + 0x19,0x1f,8);\n    return 0;\n  }\n  if ((char)psVar4[0xc] != '\x10') {\n    return 0;\n  }\n  FUN_00074819(param_1,(int)psVar4 + 0x19,1,0x1f);\n  return 0;\n}" { (declaration "uint uVar1;" type_identifier identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "short *psVar4;" (sized_type_specifier "short" short) (pointer_declarator "*psVar4" * identifier) ;) (declaration "uint uVar5;" type_identifier identifier ;) (declaration "uint uVar6;" type_identifier identifier ;) (declaration "bool bVar7;" primitive_type identifier ;) (declaration "int local_2c;" primitive_type identifier ;) (expression_statement "iVar2 = FUN_000749ed(param_1,0x8000,0,0x200);" (assignment_expression "iVar2 = FUN_000749ed(param_1,0x8000,0,0x200)" identifier = (call_expression "FUN_000749ed(param_1,0x8000,0,0x200)" identifier (argument_list "(param_1,0x8000,0,0x200)" ( identifier , number_literal , number_literal , number_literal )))) ;) (if_statement "if (iVar2 == 0) {\n    return 0xffffffff;\n  }" if (parenthesized_expression "(iVar2 == 0)" ( (binary_expression "iVar2 == 0" identifier == number_literal) )) (compound_statement "{\n    return 0xffffffff;\n  }" { (return_statement "return 0xffffffff;" return number_literal ;) })) (if_statement "if (*(int *)(iVar2 + 1) == 0x3052534e) {\n    if (*(char *)(iVar2 + 5) == '2') goto LAB_000743c5;\n    iVar3 = *(int *)(iVar2 + 1);\n  }\n  else {\n    iVar3 = *(int *)(iVar2 + 1);\n  }" if (parenthesized_expression "(*(int *)(iVar2 + 1) == 0x3052534e)" ( (binary_expression "*(int *)(iVar2 + 1) == 0x3052534e" (pointer_expression "*(int *)(iVar2 + 1)" * (cast_expression "(int *)(iVar2 + 1)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 1)" ( (binary_expression "iVar2 + 1" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n    if (*(char *)(iVar2 + 5) == '2') goto LAB_000743c5;\n    iVar3 = *(int *)(iVar2 + 1);\n  }" { (if_statement "if (*(char *)(iVar2 + 5) == '2') goto LAB_000743c5;" if (parenthesized_expression "(*(char *)(iVar2 + 5) == '2')" ( (binary_expression "*(char *)(iVar2 + 5) == '2'" (pointer_expression "*(char *)(iVar2 + 5)" * (cast_expression "(char *)(iVar2 + 5)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 5)" ( (binary_expression "iVar2 + 5" identifier + number_literal) )))) == (char_literal "'2'" ' character ')) )) (goto_statement "goto LAB_000743c5;" goto statement_identifier ;)) (expression_statement "iVar3 = *(int *)(iVar2 + 1);" (assignment_expression "iVar3 = *(int *)(iVar2 + 1)" identifier = (pointer_expression "*(int *)(iVar2 + 1)" * (cast_expression "(int *)(iVar2 + 1)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 1)" ( (binary_expression "iVar2 + 1" identifier + number_literal) ))))) ;) }) (else_clause "else {\n    iVar3 = *(int *)(iVar2 + 1);\n  }" else (compound_statement "{\n    iVar3 = *(int *)(iVar2 + 1);\n  }" { (expression_statement "iVar3 = *(int *)(iVar2 + 1);" (assignment_expression "iVar3 = *(int *)(iVar2 + 1)" identifier = (pointer_expression "*(int *)(iVar2 + 1)" * (cast_expression "(int *)(iVar2 + 1)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 1)" ( (binary_expression "iVar2 + 1" identifier + number_literal) ))))) ;) }))) (if_statement "if (iVar3 == 0x3052534e) {\n    if (*(char *)(iVar2 + 5) == '3') goto LAB_000743c5;\n    iVar3 = *(int *)(iVar2 + 1);\n  }\n  else {\n    iVar3 = *(int *)(iVar2 + 1);\n  }" if (parenthesized_expression "(iVar3 == 0x3052534e)" ( (binary_expression "iVar3 == 0x3052534e" identifier == number_literal) )) (compound_statement "{\n    if (*(char *)(iVar2 + 5) == '3') goto LAB_000743c5;\n    iVar3 = *(int *)(iVar2 + 1);\n  }" { (if_statement "if (*(char *)(iVar2 + 5) == '3') goto LAB_000743c5;" if (parenthesized_expression "(*(char *)(iVar2 + 5) == '3')" ( (binary_expression "*(char *)(iVar2 + 5) == '3'" (pointer_expression "*(char *)(iVar2 + 5)" * (cast_expression "(char *)(iVar2 + 5)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 5)" ( (binary_expression "iVar2 + 5" identifier + number_literal) )))) == (char_literal "'3'" ' character ')) )) (goto_statement "goto LAB_000743c5;" goto statement_identifier ;)) (expression_statement "iVar3 = *(int *)(iVar2 + 1);" (assignment_expression "iVar3 = *(int *)(iVar2 + 1)" identifier = (pointer_expression "*(int *)(iVar2 + 1)" * (cast_expression "(int *)(iVar2 + 1)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 1)" ( (binary_expression "iVar2 + 1" identifier + number_literal) ))))) ;) }) (else_clause "else {\n    iVar3 = *(int *)(iVar2 + 1);\n  }" else (compound_statement "{\n    iVar3 = *(int *)(iVar2 + 1);\n  }" { (expression_statement "iVar3 = *(int *)(iVar2 + 1);" (assignment_expression "iVar3 = *(int *)(iVar2 + 1)" identifier = (pointer_expression "*(int *)(iVar2 + 1)" * (cast_expression "(int *)(iVar2 + 1)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 1)" ( (binary_expression "iVar2 + 1" identifier + number_literal) ))))) ;) }))) (if_statement "if (iVar3 == 0x30414542) {\n    if (*(char *)(iVar2 + 5) == '1') goto LAB_000743c5;\n    iVar3 = *(int *)(iVar2 + 1);\n  }\n  else {\n    iVar3 = *(int *)(iVar2 + 1);\n  }" if (parenthesized_expression "(iVar3 == 0x30414542)" ( (binary_expression "iVar3 == 0x30414542" identifier == number_literal) )) (compound_statement "{\n    if (*(char *)(iVar2 + 5) == '1') goto LAB_000743c5;\n    iVar3 = *(int *)(iVar2 + 1);\n  }" { (if_statement "if (*(char *)(iVar2 + 5) == '1') goto LAB_000743c5;" if (parenthesized_expression "(*(char *)(iVar2 + 5) == '1')" ( (binary_expression "*(char *)(iVar2 + 5) == '1'" (pointer_expression "*(char *)(iVar2 + 5)" * (cast_expression "(char *)(iVar2 + 5)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 5)" ( (binary_expression "iVar2 + 5" identifier + number_literal) )))) == (char_literal "'1'" ' character ')) )) (goto_statement "goto LAB_000743c5;" goto statement_identifier ;)) (expression_statement "iVar3 = *(int *)(iVar2 + 1);" (assignment_expression "iVar3 = *(int *)(iVar2 + 1)" identifier = (pointer_expression "*(int *)(iVar2 + 1)" * (cast_expression "(int *)(iVar2 + 1)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 1)" ( (binary_expression "iVar2 + 1" identifier + number_literal) ))))) ;) }) (else_clause "else {\n    iVar3 = *(int *)(iVar2 + 1);\n  }" else (compound_statement "{\n    iVar3 = *(int *)(iVar2 + 1);\n  }" { (expression_statement "iVar3 = *(int *)(iVar2 + 1);" (assignment_expression "iVar3 = *(int *)(iVar2 + 1)" identifier = (pointer_expression "*(int *)(iVar2 + 1)" * (cast_expression "(int *)(iVar2 + 1)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 1)" ( (binary_expression "iVar2 + 1" identifier + number_literal) ))))) ;) }))) (if_statement "if (iVar3 == 0x544f4f42) {\n    if (*(char *)(iVar2 + 5) == '2') goto LAB_000743c5;\n    if (*(int *)(iVar2 + 1) != 0x30304443) goto LAB_000743a9;\nLAB_000745d1:\n    if (*(char *)(iVar2 + 5) == '1') goto LAB_000743c5;\n    if (*(int *)(iVar2 + 1) == 0x30574443) goto LAB_000745e8;\nLAB_000743b6:\n    iVar3 = *(int *)(iVar2 + 1);\n  }\n  else {\n    if (*(int *)(iVar2 + 1) == 0x30304443) goto LAB_000745d1;\nLAB_000743a9:\n    if (*(int *)(iVar2 + 1) != 0x30574443) goto LAB_000743b6;\nLAB_000745e8:\n    if (*(char *)(iVar2 + 5) == '2') goto LAB_000743c5;\n    iVar3 = *(int *)(iVar2 + 1);\n  }" if (parenthesized_expression "(iVar3 == 0x544f4f42)" ( (binary_expression "iVar3 == 0x544f4f42" identifier == number_literal) )) (compound_statement "{\n    if (*(char *)(iVar2 + 5) == '2') goto LAB_000743c5;\n    if (*(int *)(iVar2 + 1) != 0x30304443) goto LAB_000743a9;\nLAB_000745d1:\n    if (*(char *)(iVar2 + 5) == '1') goto LAB_000743c5;\n    if (*(int *)(iVar2 + 1) == 0x30574443) goto LAB_000745e8;\nLAB_000743b6:\n    iVar3 = *(int *)(iVar2 + 1);\n  }" { (if_statement "if (*(char *)(iVar2 + 5) == '2') goto LAB_000743c5;" if (parenthesized_expression "(*(char *)(iVar2 + 5) == '2')" ( (binary_expression "*(char *)(iVar2 + 5) == '2'" (pointer_expression "*(char *)(iVar2 + 5)" * (cast_expression "(char *)(iVar2 + 5)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 5)" ( (binary_expression "iVar2 + 5" identifier + number_literal) )))) == (char_literal "'2'" ' character ')) )) (goto_statement "goto LAB_000743c5;" goto statement_identifier ;)) (if_statement "if (*(int *)(iVar2 + 1) != 0x30304443) goto LAB_000743a9;" if (parenthesized_expression "(*(int *)(iVar2 + 1) != 0x30304443)" ( (binary_expression "*(int *)(iVar2 + 1) != 0x30304443" (pointer_expression "*(int *)(iVar2 + 1)" * (cast_expression "(int *)(iVar2 + 1)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 1)" ( (binary_expression "iVar2 + 1" identifier + number_literal) )))) != number_literal) )) (goto_statement "goto LAB_000743a9;" goto statement_identifier ;)) (labeled_statement "LAB_000745d1:\n    if (*(char *)(iVar2 + 5) == '1') goto LAB_000743c5;" statement_identifier : (if_statement "if (*(char *)(iVar2 + 5) == '1') goto LAB_000743c5;" if (parenthesized_expression "(*(char *)(iVar2 + 5) == '1')" ( (binary_expression "*(char *)(iVar2 + 5) == '1'" (pointer_expression "*(char *)(iVar2 + 5)" * (cast_expression "(char *)(iVar2 + 5)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 5)" ( (binary_expression "iVar2 + 5" identifier + number_literal) )))) == (char_literal "'1'" ' character ')) )) (goto_statement "goto LAB_000743c5;" goto statement_identifier ;))) (if_statement "if (*(int *)(iVar2 + 1) == 0x30574443) goto LAB_000745e8;" if (parenthesized_expression "(*(int *)(iVar2 + 1) == 0x30574443)" ( (binary_expression "*(int *)(iVar2 + 1) == 0x30574443" (pointer_expression "*(int *)(iVar2 + 1)" * (cast_expression "(int *)(iVar2 + 1)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 1)" ( (binary_expression "iVar2 + 1" identifier + number_literal) )))) == number_literal) )) (goto_statement "goto LAB_000745e8;" goto statement_identifier ;)) (labeled_statement "LAB_000743b6:\n    iVar3 = *(int *)(iVar2 + 1);" statement_identifier : (expression_statement "iVar3 = *(int *)(iVar2 + 1);" (assignment_expression "iVar3 = *(int *)(iVar2 + 1)" identifier = (pointer_expression "*(int *)(iVar2 + 1)" * (cast_expression "(int *)(iVar2 + 1)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 1)" ( (binary_expression "iVar2 + 1" identifier + number_literal) ))))) ;)) }) (else_clause "else {\n    if (*(int *)(iVar2 + 1) == 0x30304443) goto LAB_000745d1;\nLAB_000743a9:\n    if (*(int *)(iVar2 + 1) != 0x30574443) goto LAB_000743b6;\nLAB_000745e8:\n    if (*(char *)(iVar2 + 5) == '2') goto LAB_000743c5;\n    iVar3 = *(int *)(iVar2 + 1);\n  }" else (compound_statement "{\n    if (*(int *)(iVar2 + 1) == 0x30304443) goto LAB_000745d1;\nLAB_000743a9:\n    if (*(int *)(iVar2 + 1) != 0x30574443) goto LAB_000743b6;\nLAB_000745e8:\n    if (*(char *)(iVar2 + 5) == '2') goto LAB_000743c5;\n    iVar3 = *(int *)(iVar2 + 1);\n  }" { (if_statement "if (*(int *)(iVar2 + 1) == 0x30304443) goto LAB_000745d1;" if (parenthesized_expression "(*(int *)(iVar2 + 1) == 0x30304443)" ( (binary_expression "*(int *)(iVar2 + 1) == 0x30304443" (pointer_expression "*(int *)(iVar2 + 1)" * (cast_expression "(int *)(iVar2 + 1)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 1)" ( (binary_expression "iVar2 + 1" identifier + number_literal) )))) == number_literal) )) (goto_statement "goto LAB_000745d1;" goto statement_identifier ;)) (labeled_statement "LAB_000743a9:\n    if (*(int *)(iVar2 + 1) != 0x30574443) goto LAB_000743b6;" statement_identifier : (if_statement "if (*(int *)(iVar2 + 1) != 0x30574443) goto LAB_000743b6;" if (parenthesized_expression "(*(int *)(iVar2 + 1) != 0x30574443)" ( (binary_expression "*(int *)(iVar2 + 1) != 0x30574443" (pointer_expression "*(int *)(iVar2 + 1)" * (cast_expression "(int *)(iVar2 + 1)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 1)" ( (binary_expression "iVar2 + 1" identifier + number_literal) )))) != number_literal) )) (goto_statement "goto LAB_000743b6;" goto statement_identifier ;))) (labeled_statement "LAB_000745e8:\n    if (*(char *)(iVar2 + 5) == '2') goto LAB_000743c5;" statement_identifier : (if_statement "if (*(char *)(iVar2 + 5) == '2') goto LAB_000743c5;" if (parenthesized_expression "(*(char *)(iVar2 + 5) == '2')" ( (binary_expression "*(char *)(iVar2 + 5) == '2'" (pointer_expression "*(char *)(iVar2 + 5)" * (cast_expression "(char *)(iVar2 + 5)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 5)" ( (binary_expression "iVar2 + 5" identifier + number_literal) )))) == (char_literal "'2'" ' character ')) )) (goto_statement "goto LAB_000743c5;" goto statement_identifier ;))) (expression_statement "iVar3 = *(int *)(iVar2 + 1);" (assignment_expression "iVar3 = *(int *)(iVar2 + 1)" identifier = (pointer_expression "*(int *)(iVar2 + 1)" * (cast_expression "(int *)(iVar2 + 1)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 1)" ( (binary_expression "iVar2 + 1" identifier + number_literal) ))))) ;) }))) (if_statement "if (iVar3 != 0x30414554) {\n    return 0xffffffff;\n  }" if (parenthesized_expression "(iVar3 != 0x30414554)" ( (binary_expression "iVar3 != 0x30414554" identifier != number_literal) )) (compound_statement "{\n    return 0xffffffff;\n  }" { (return_statement "return 0xffffffff;" return number_literal ;) })) (if_statement "if (*(char *)(iVar2 + 5) != '3') {\n    return 0xffffffff;\n  }" if (parenthesized_expression "(*(char *)(iVar2 + 5) != '3')" ( (binary_expression "*(char *)(iVar2 + 5) != '3'" (pointer_expression "*(char *)(iVar2 + 5)" * (cast_expression "(char *)(iVar2 + 5)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 5)" ( (binary_expression "iVar2 + 5" identifier + number_literal) )))) != (char_literal "'3'" ' character ')) )) (compound_statement "{\n    return 0xffffffff;\n  }" { (return_statement "return 0xffffffff;" return number_literal ;) })) (labeled_statement "LAB_000743c5:\n  uVar5 = 0x8800;" statement_identifier : (expression_statement "uVar5 = 0x8800;" (assignment_expression "uVar5 = 0x8800" identifier = number_literal) ;)) (expression_statement "iVar2 = 0;" (assignment_expression "iVar2 = 0" identifier = number_literal) ;) (while_statement "while( true ) {\n    uVar1 = uVar5 - 0x8000;\n    iVar3 = FUN_000749ed(param_1,uVar5,iVar2,0x800);\n    if (iVar3 == 0) {\n      return 0xffffffff;\n    }\n    if (*(char *)(iVar3 + 1) != '\0') break;\n    bVar7 = 0xfffff7ff < uVar5;\n    uVar5 = uVar5 + 0x800;\n    iVar2 = iVar2 + (uint)bVar7;\n    if (iVar2 == 0 && uVar5 == 0x10000) {\n      return 0xffffffff;\n    }\n  }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n    uVar1 = uVar5 - 0x8000;\n    iVar3 = FUN_000749ed(param_1,uVar5,iVar2,0x800);\n    if (iVar3 == 0) {\n      return 0xffffffff;\n    }\n    if (*(char *)(iVar3 + 1) != '\0') break;\n    bVar7 = 0xfffff7ff < uVar5;\n    uVar5 = uVar5 + 0x800;\n    iVar2 = iVar2 + (uint)bVar7;\n    if (iVar2 == 0 && uVar5 == 0x10000) {\n      return 0xffffffff;\n    }\n  }" { (expression_statement "uVar1 = uVar5 - 0x8000;" (assignment_expression "uVar1 = uVar5 - 0x8000" identifier = (binary_expression "uVar5 - 0x8000" identifier - number_literal)) ;) (expression_statement "iVar3 = FUN_000749ed(param_1,uVar5,iVar2,0x800);" (assignment_expression "iVar3 = FUN_000749ed(param_1,uVar5,iVar2,0x800)" identifier = (call_expression "FUN_000749ed(param_1,uVar5,iVar2,0x800)" identifier (argument_list "(param_1,uVar5,iVar2,0x800)" ( identifier , identifier , identifier , number_literal )))) ;) (if_statement "if (iVar3 == 0) {\n      return 0xffffffff;\n    }" if (parenthesized_expression "(iVar3 == 0)" ( (binary_expression "iVar3 == 0" identifier == number_literal) )) (compound_statement "{\n      return 0xffffffff;\n    }" { (return_statement "return 0xffffffff;" return number_literal ;) })) (if_statement "if (*(char *)(iVar3 + 1) != '\0') break;" if (parenthesized_expression "(*(char *)(iVar3 + 1) != '\0')" ( (binary_expression "*(char *)(iVar3 + 1) != '\0'" (pointer_expression "*(char *)(iVar3 + 1)" * (cast_expression "(char *)(iVar3 + 1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 1)" ( (binary_expression "iVar3 + 1" identifier + number_literal) )))) != (char_literal "'\0'" ' escape_sequence ')) )) (break_statement "break;" break ;)) (expression_statement "bVar7 = 0xfffff7ff < uVar5;" (assignment_expression "bVar7 = 0xfffff7ff < uVar5" identifier = (binary_expression "0xfffff7ff < uVar5" number_literal < identifier)) ;) (expression_statement "uVar5 = uVar5 + 0x800;" (assignment_expression "uVar5 = uVar5 + 0x800" identifier = (binary_expression "uVar5 + 0x800" identifier + number_literal)) ;) (expression_statement "iVar2 = iVar2 + (uint)bVar7;" (assignment_expression "iVar2 = iVar2 + (uint)bVar7" identifier = (binary_expression "iVar2 + (uint)bVar7" identifier + (cast_expression "(uint)bVar7" ( (type_descriptor "uint" type_identifier) ) identifier))) ;) (if_statement "if (iVar2 == 0 && uVar5 == 0x10000) {\n      return 0xffffffff;\n    }" if (parenthesized_expression "(iVar2 == 0 && uVar5 == 0x10000)" ( (binary_expression "iVar2 == 0 && uVar5 == 0x10000" (binary_expression "iVar2 == 0" identifier == number_literal) && (binary_expression "uVar5 == 0x10000" identifier == number_literal)) )) (compound_statement "{\n      return 0xffffffff;\n    }" { (return_statement "return 0xffffffff;" return number_literal ;) })) })) (expression_statement "uVar5 = 0;" (assignment_expression "uVar5 = 0" identifier = number_literal) ;) (expression_statement "iVar2 = 0x40;" (assignment_expression "iVar2 = 0x40" identifier = number_literal) ;) (while_statement "while( true ) {\n    iVar3 = FUN_000749ed(param_1,uVar5 + 0x8000,0xffff7fff < uVar5,0x800);\n    if (iVar3 == 0) {\n      return 0xffffffff;\n    }\n    if (*(char *)(iVar3 + 1) == '\0') {\n      return 0xffffffff;\n    }\n    if (((*(int *)(iVar3 + 1) == 0x3052534e) && (*(char *)(iVar3 + 5) == '2')) ||\n       ((*(int *)(iVar3 + 1) == 0x3052534e && (*(char *)(iVar3 + 5) == '3')))) break;\n    iVar2 = iVar2 + -1;\n    uVar5 = uVar5 + uVar1;\n    if (iVar2 == 0) {\n      return 0xffffffff;\n    }\n  }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n    iVar3 = FUN_000749ed(param_1,uVar5 + 0x8000,0xffff7fff < uVar5,0x800);\n    if (iVar3 == 0) {\n      return 0xffffffff;\n    }\n    if (*(char *)(iVar3 + 1) == '\0') {\n      return 0xffffffff;\n    }\n    if (((*(int *)(iVar3 + 1) == 0x3052534e) && (*(char *)(iVar3 + 5) == '2')) ||\n       ((*(int *)(iVar3 + 1) == 0x3052534e && (*(char *)(iVar3 + 5) == '3')))) break;\n    iVar2 = iVar2 + -1;\n    uVar5 = uVar5 + uVar1;\n    if (iVar2 == 0) {\n      return 0xffffffff;\n    }\n  }" { (expression_statement "iVar3 = FUN_000749ed(param_1,uVar5 + 0x8000,0xffff7fff < uVar5,0x800);" (assignment_expression "iVar3 = FUN_000749ed(param_1,uVar5 + 0x8000,0xffff7fff < uVar5,0x800)" identifier = (call_expression "FUN_000749ed(param_1,uVar5 + 0x8000,0xffff7fff < uVar5,0x800)" identifier (argument_list "(param_1,uVar5 + 0x8000,0xffff7fff < uVar5,0x800)" ( identifier , (binary_expression "uVar5 + 0x8000" identifier + number_literal) , (binary_expression "0xffff7fff < uVar5" number_literal < identifier) , number_literal )))) ;) (if_statement "if (iVar3 == 0) {\n      return 0xffffffff;\n    }" if (parenthesized_expression "(iVar3 == 0)" ( (binary_expression "iVar3 == 0" identifier == number_literal) )) (compound_statement "{\n      return 0xffffffff;\n    }" { (return_statement "return 0xffffffff;" return number_literal ;) })) (if_statement "if (*(char *)(iVar3 + 1) == '\0') {\n      return 0xffffffff;\n    }" if (parenthesized_expression "(*(char *)(iVar3 + 1) == '\0')" ( (binary_expression "*(char *)(iVar3 + 1) == '\0'" (pointer_expression "*(char *)(iVar3 + 1)" * (cast_expression "(char *)(iVar3 + 1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 1)" ( (binary_expression "iVar3 + 1" identifier + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      return 0xffffffff;\n    }" { (return_statement "return 0xffffffff;" return number_literal ;) })) (if_statement "if (((*(int *)(iVar3 + 1) == 0x3052534e) && (*(char *)(iVar3 + 5) == '2')) ||\n       ((*(int *)(iVar3 + 1) == 0x3052534e && (*(char *)(iVar3 + 5) == '3')))) break;" if (parenthesized_expression "(((*(int *)(iVar3 + 1) == 0x3052534e) && (*(char *)(iVar3 + 5) == '2')) ||\n       ((*(int *)(iVar3 + 1) == 0x3052534e && (*(char *)(iVar3 + 5) == '3'))))" ( (binary_expression "((*(int *)(iVar3 + 1) == 0x3052534e) && (*(char *)(iVar3 + 5) == '2')) ||\n       ((*(int *)(iVar3 + 1) == 0x3052534e && (*(char *)(iVar3 + 5) == '3')))" (parenthesized_expression "((*(int *)(iVar3 + 1) == 0x3052534e) && (*(char *)(iVar3 + 5) == '2'))" ( (binary_expression "(*(int *)(iVar3 + 1) == 0x3052534e) && (*(char *)(iVar3 + 5) == '2')" (parenthesized_expression "(*(int *)(iVar3 + 1) == 0x3052534e)" ( (binary_expression "*(int *)(iVar3 + 1) == 0x3052534e" (pointer_expression "*(int *)(iVar3 + 1)" * (cast_expression "(int *)(iVar3 + 1)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 1)" ( (binary_expression "iVar3 + 1" identifier + number_literal) )))) == number_literal) )) && (parenthesized_expression "(*(char *)(iVar3 + 5) == '2')" ( (binary_expression "*(char *)(iVar3 + 5) == '2'" (pointer_expression "*(char *)(iVar3 + 5)" * (cast_expression "(char *)(iVar3 + 5)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 5)" ( (binary_expression "iVar3 + 5" identifier + number_literal) )))) == (char_literal "'2'" ' character ')) ))) )) || (parenthesized_expression "((*(int *)(iVar3 + 1) == 0x3052534e && (*(char *)(iVar3 + 5) == '3')))" ( (parenthesized_expression "(*(int *)(iVar3 + 1) == 0x3052534e && (*(char *)(iVar3 + 5) == '3'))" ( (binary_expression "*(int *)(iVar3 + 1) == 0x3052534e && (*(char *)(iVar3 + 5) == '3')" (binary_expression "*(int *)(iVar3 + 1) == 0x3052534e" (pointer_expression "*(int *)(iVar3 + 1)" * (cast_expression "(int *)(iVar3 + 1)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 1)" ( (binary_expression "iVar3 + 1" identifier + number_literal) )))) == number_literal) && (parenthesized_expression "(*(char *)(iVar3 + 5) == '3')" ( (binary_expression "*(char *)(iVar3 + 5) == '3'" (pointer_expression "*(char *)(iVar3 + 5)" * (cast_expression "(char *)(iVar3 + 5)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 5)" ( (binary_expression "iVar3 + 5" identifier + number_literal) )))) == (char_literal "'3'" ' character ')) ))) )) ))) )) (break_statement "break;" break ;)) (expression_statement "iVar2 = iVar2 + -1;" (assignment_expression "iVar2 = iVar2 + -1" identifier = (binary_expression "iVar2 + -1" identifier + number_literal)) ;) (expression_statement "uVar5 = uVar5 + uVar1;" (assignment_expression "uVar5 = uVar5 + uVar1" identifier = (binary_expression "uVar5 + uVar1" identifier + identifier)) ;) (if_statement "if (iVar2 == 0) {\n      return 0xffffffff;\n    }" if (parenthesized_expression "(iVar2 == 0)" ( (binary_expression "iVar2 == 0" identifier == number_literal) )) (compound_statement "{\n      return 0xffffffff;\n    }" { (return_statement "return 0xffffffff;" return number_literal ;) })) })) (expression_statement "psVar4 = (short *)FUN_000749ed(param_1,uVar1 * 0x100,0,0x200);" (assignment_expression "psVar4 = (short *)FUN_000749ed(param_1,uVar1 * 0x100,0,0x200)" identifier = (cast_expression "(short *)FUN_000749ed(param_1,uVar1 * 0x100,0,0x200)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_000749ed(param_1,uVar1 * 0x100,0,0x200)" identifier (argument_list "(param_1,uVar1 * 0x100,0,0x200)" ( identifier , (binary_expression "uVar1 * 0x100" identifier * number_literal) , number_literal , number_literal ))))) ;) (if_statement "if (psVar4 == (short *)0x0) {\n    return 0xffffffff;\n  }" if (parenthesized_expression "(psVar4 == (short *)0x0)" ( (binary_expression "psVar4 == (short *)0x0" identifier == (cast_expression "(short *)0x0" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    return 0xffffffff;\n  }" { (return_statement "return 0xffffffff;" return number_literal ;) })) (if_statement "if (*psVar4 != 2) {\n    return 0;\n  }" if (parenthesized_expression "(*psVar4 != 2)" ( (binary_expression "*psVar4 != 2" (pointer_expression "*psVar4" * identifier) != number_literal) )) (compound_statement "{\n    return 0;\n  }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "uVar5 = *(uint *)(psVar4 + 8);" (assignment_expression "uVar5 = *(uint *)(psVar4 + 8)" identifier = (pointer_expression "*(uint *)(psVar4 + 8)" * (cast_expression "(uint *)(psVar4 + 8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(psVar4 + 8)" ( (binary_expression "psVar4 + 8" identifier + number_literal) ))))) ;) (if_statement "if (uVar5 < uVar1) {\n    return 0;\n  }" if (parenthesized_expression "(uVar5 < uVar1)" ( (binary_expression "uVar5 < uVar1" identifier < identifier) )) (compound_statement "{\n    return 0;\n  }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "iVar2 = *(int *)(psVar4 + 10);" (assignment_expression "iVar2 = *(int *)(psVar4 + 10)" identifier = (pointer_expression "*(int *)(psVar4 + 10)" * (cast_expression "(int *)(psVar4 + 10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(psVar4 + 10)" ( (binary_expression "psVar4 + 10" identifier + number_literal) ))))) ;) (expression_statement "local_2c = iVar2 * uVar1;" (assignment_expression "local_2c = iVar2 * uVar1" identifier = (binary_expression "iVar2 * uVar1" identifier * identifier)) ;) (expression_statement "uVar6 = 0;" (assignment_expression "uVar6 = 0" identifier = number_literal) ;) (while_statement "while( true ) {\n    psVar4 = (short *)FUN_000749ed(param_1,local_2c,0,0x200);\n    if (psVar4 == (short *)0x0) {\n      return 0xffffffff;\n    }\n    if (*psVar4 == 0) {\n      return 0;\n    }\n    if (*(int *)(psVar4 + 6) != uVar6 + iVar2) {\n      return 0;\n    }\n    if (*psVar4 == 1) break;\n    uVar6 = uVar6 + 1;\n    local_2c = local_2c + uVar1;\n    if (uVar5 / uVar1 <= uVar6) {\n      return 0;\n    }\n  }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n    psVar4 = (short *)FUN_000749ed(param_1,local_2c,0,0x200);\n    if (psVar4 == (short *)0x0) {\n      return 0xffffffff;\n    }\n    if (*psVar4 == 0) {\n      return 0;\n    }\n    if (*(int *)(psVar4 + 6) != uVar6 + iVar2) {\n      return 0;\n    }\n    if (*psVar4 == 1) break;\n    uVar6 = uVar6 + 1;\n    local_2c = local_2c + uVar1;\n    if (uVar5 / uVar1 <= uVar6) {\n      return 0;\n    }\n  }" { (expression_statement "psVar4 = (short *)FUN_000749ed(param_1,local_2c,0,0x200);" (assignment_expression "psVar4 = (short *)FUN_000749ed(param_1,local_2c,0,0x200)" identifier = (cast_expression "(short *)FUN_000749ed(param_1,local_2c,0,0x200)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_000749ed(param_1,local_2c,0,0x200)" identifier (argument_list "(param_1,local_2c,0,0x200)" ( identifier , identifier , number_literal , number_literal ))))) ;) (if_statement "if (psVar4 == (short *)0x0) {\n      return 0xffffffff;\n    }" if (parenthesized_expression "(psVar4 == (short *)0x0)" ( (binary_expression "psVar4 == (short *)0x0" identifier == (cast_expression "(short *)0x0" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      return 0xffffffff;\n    }" { (return_statement "return 0xffffffff;" return number_literal ;) })) (if_statement "if (*psVar4 == 0) {\n      return 0;\n    }" if (parenthesized_expression "(*psVar4 == 0)" ( (binary_expression "*psVar4 == 0" (pointer_expression "*psVar4" * identifier) == number_literal) )) (compound_statement "{\n      return 0;\n    }" { (return_statement "return 0;" return number_literal ;) })) (if_statement "if (*(int *)(psVar4 + 6) != uVar6 + iVar2) {\n      return 0;\n    }" if (parenthesized_expression "(*(int *)(psVar4 + 6) != uVar6 + iVar2)" ( (binary_expression "*(int *)(psVar4 + 6) != uVar6 + iVar2" (pointer_expression "*(int *)(psVar4 + 6)" * (cast_expression "(int *)(psVar4 + 6)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(psVar4 + 6)" ( (binary_expression "psVar4 + 6" identifier + number_literal) )))) != (binary_expression "uVar6 + iVar2" identifier + identifier)) )) (compound_statement "{\n      return 0;\n    }" { (return_statement "return 0;" return number_literal ;) })) (if_statement "if (*psVar4 == 1) break;" if (parenthesized_expression "(*psVar4 == 1)" ( (binary_expression "*psVar4 == 1" (pointer_expression "*psVar4" * identifier) == number_literal) )) (break_statement "break;" break ;)) (expression_statement "uVar6 = uVar6 + 1;" (assignment_expression "uVar6 = uVar6 + 1" identifier = (binary_expression "uVar6 + 1" identifier + number_literal)) ;) (expression_statement "local_2c = local_2c + uVar1;" (assignment_expression "local_2c = local_2c + uVar1" identifier = (binary_expression "local_2c + uVar1" identifier + identifier)) ;) (if_statement "if (uVar5 / uVar1 <= uVar6) {\n      return 0;\n    }" if (parenthesized_expression "(uVar5 / uVar1 <= uVar6)" ( (binary_expression "uVar5 / uVar1 <= uVar6" (binary_expression "uVar5 / uVar1" identifier / identifier) <= identifier) )) (compound_statement "{\n      return 0;\n    }" { (return_statement "return 0;" return number_literal ;) })) })) (if_statement "if ((char)psVar4[0xc] == '\b') {\n    FUN_000747a0(param_1,(int)psVar4 + 0x19,0x1f,8);\n    return 0;\n  }" if (parenthesized_expression "((char)psVar4[0xc] == '\b')" ( (binary_expression "(char)psVar4[0xc] == '\b'" (cast_expression "(char)psVar4[0xc]" ( (type_descriptor "char" primitive_type) ) (subscript_expression "psVar4[0xc]" identifier [ number_literal ])) == (char_literal "'\b'" ' escape_sequence ')) )) (compound_statement "{\n    FUN_000747a0(param_1,(int)psVar4 + 0x19,0x1f,8);\n    return 0;\n  }" { (expression_statement "FUN_000747a0(param_1,(int)psVar4 + 0x19,0x1f,8);" (call_expression "FUN_000747a0(param_1,(int)psVar4 + 0x19,0x1f,8)" identifier (argument_list "(param_1,(int)psVar4 + 0x19,0x1f,8)" ( identifier , (binary_expression "(int)psVar4 + 0x19" (cast_expression "(int)psVar4" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) , number_literal , number_literal ))) ;) (return_statement "return 0;" return number_literal ;) })) (if_statement "if ((char)psVar4[0xc] != '\x10') {\n    return 0;\n  }" if (parenthesized_expression "((char)psVar4[0xc] != '\x10')" ( (binary_expression "(char)psVar4[0xc] != '\x10'" (cast_expression "(char)psVar4[0xc]" ( (type_descriptor "char" primitive_type) ) (subscript_expression "psVar4[0xc]" identifier [ number_literal ])) != (char_literal "'\x10'" ' escape_sequence ')) )) (compound_statement "{\n    return 0;\n  }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "FUN_00074819(param_1,(int)psVar4 + 0x19,1,0x1f);" (call_expression "FUN_00074819(param_1,(int)psVar4 + 0x19,1,0x1f)" identifier (argument_list "(param_1,(int)psVar4 + 0x19,1,0x1f)" ( identifier , (binary_expression "(int)psVar4 + 0x19" (cast_expression "(int)psVar4" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) , number_literal , number_literal ))) ;) (return_statement "return 0;" return number_literal ;) })))
(translation_unit "/* WARNING: Type propagation algorithm not settling */\n\nint __regparm3 volume_id_probe_udf(volume_id *id)\n\n{\n  uint uVar1;\n  void *pvVar2;\n  short *psVar3;\n  uint uVar4;\n  int iVar5;\n  uint uVar6;\n  bool bVar7;\n  uint local_2c;\n  \n  pvVar2 = volume_id_get_buffer(id,0x8000,0x200);\n  if (pvVar2 == (void *)0x0) {\n    return -1;\n  }\n  if (*(int *)((int)pvVar2 + 1) == 0x3052534e) {\n    if (*(char *)((int)pvVar2 + 5) == '2') goto LAB_000743c5;\n    iVar5 = *(int *)((int)pvVar2 + 1);\n  }\n  else {\n    iVar5 = *(int *)((int)pvVar2 + 1);\n  }\n  if (iVar5 == 0x3052534e) {\n    if (*(char *)((int)pvVar2 + 5) == '3') goto LAB_000743c5;\n    iVar5 = *(int *)((int)pvVar2 + 1);\n  }\n  else {\n    iVar5 = *(int *)((int)pvVar2 + 1);\n  }\n  if (iVar5 == 0x30414542) {\n    if (*(char *)((int)pvVar2 + 5) == '1') goto LAB_000743c5;\n    iVar5 = *(int *)((int)pvVar2 + 1);\n  }\n  else {\n    iVar5 = *(int *)((int)pvVar2 + 1);\n  }\n  if (iVar5 == 0x544f4f42) {\n    if (*(char *)((int)pvVar2 + 5) == '2') goto LAB_000743c5;\n    if (*(int *)((int)pvVar2 + 1) != 0x30304443) goto LAB_000743a9;\nLAB_000745d1:\n    if (*(char *)((int)pvVar2 + 5) == '1') goto LAB_000743c5;\n    if (*(int *)((int)pvVar2 + 1) == 0x30574443) goto LAB_000745e8;\nLAB_000743b6:\n    iVar5 = *(int *)((int)pvVar2 + 1);\n  }\n  else {\n    if (*(int *)((int)pvVar2 + 1) == 0x30304443) goto LAB_000745d1;\nLAB_000743a9:\n    if (*(int *)((int)pvVar2 + 1) != 0x30574443) goto LAB_000743b6;\nLAB_000745e8:\n    if (*(char *)((int)pvVar2 + 5) == '2') goto LAB_000743c5;\n    iVar5 = *(int *)((int)pvVar2 + 1);\n  }\n  if (iVar5 != 0x30414554) {\n    return -1;\n  }\n  if (*(char *)((int)pvVar2 + 5) != '3') {\n    return -1;\n  }\nLAB_000743c5:\n  uVar4 = 0x8800;\n  iVar5 = 0;\n  while( true ) {\n    uVar1 = uVar4 - 0x8000;\n    pvVar2 = volume_id_get_buffer(id,CONCAT44(iVar5,uVar4),0x800);\n    if (pvVar2 == (void *)0x0) {\n      return -1;\n    }\n    if (*(char *)((int)pvVar2 + 1) != '\0') break;\n    bVar7 = 0xfffff7ff < uVar4;\n    uVar4 = uVar4 + 0x800;\n    iVar5 = iVar5 + (uint)bVar7;\n    if (iVar5 == 0 && uVar4 == 0x10000) {\n      return -1;\n    }\n  }\n  uVar4 = 0;\n  iVar5 = 0x40;\n  while( true ) {\n    pvVar2 = volume_id_get_buffer(id,(ulonglong)CONCAT14(0xffff7fff < uVar4,uVar4 + 0x8000),0x800);\n    if (pvVar2 == (void *)0x0) {\n      return -1;\n    }\n    if (*(char *)((int)pvVar2 + 1) == '\0') {\n      return -1;\n    }\n    if (((*(int *)((int)pvVar2 + 1) == 0x3052534e) && (*(char *)((int)pvVar2 + 5) == '2')) ||\n       ((*(int *)((int)pvVar2 + 1) == 0x3052534e && (*(char *)((int)pvVar2 + 5) == '3')))) break;\n    iVar5 = iVar5 + -1;\n    uVar4 = uVar4 + uVar1;\n    if (iVar5 == 0) {\n      return -1;\n    }\n  }\n  psVar3 = (short *)volume_id_get_buffer(id,(ulonglong)(uVar1 * 0x100),0x200);\n  if (psVar3 == (short *)0x0) {\n    return -1;\n  }\n  if (*psVar3 != 2) {\n    return 0;\n  }\n  uVar4 = *(uint *)(psVar3 + 8);\n  if (uVar4 < uVar1) {\n    return 0;\n  }\n  iVar5 = *(int *)(psVar3 + 10);\n  local_2c = iVar5 * uVar1;\n  uVar6 = 0;\n  while( true ) {\n    psVar3 = (short *)volume_id_get_buffer(id,(ulonglong)local_2c,0x200);\n    if (psVar3 == (short *)0x0) {\n      return -1;\n    }\n    if (*psVar3 == 0) {\n      return 0;\n    }\n    if (*(int *)(psVar3 + 6) != uVar6 + iVar5) {\n      return 0;\n    }\n    if (*psVar3 == 1) break;\n    uVar6 = uVar6 + 1;\n    local_2c = local_2c + uVar1;\n    if (uVar4 / uVar1 <= uVar6) {\n      return 0;\n    }\n  }\n  if ((char)psVar3[0xc] == '\b') {\n    volume_id_set_label_string(id,(uint8_t *)((int)psVar3 + 0x19),0x1f);\n    return 0;\n  }\n  if ((char)psVar3[0xc] != '\x10') {\n    return 0;\n  }\n  volume_id_set_label_unicode16(id,(uint8_t *)((int)psVar3 + 0x19),BE,0x1f);\n  return 0;\n}\n\n" comment (function_definition "int __regparm3 volume_id_probe_udf(volume_id *id)\n\n{\n  uint uVar1;\n  void *pvVar2;\n  short *psVar3;\n  uint uVar4;\n  int iVar5;\n  uint uVar6;\n  bool bVar7;\n  uint local_2c;\n  \n  pvVar2 = volume_id_get_buffer(id,0x8000,0x200);\n  if (pvVar2 == (void *)0x0) {\n    return -1;\n  }\n  if (*(int *)((int)pvVar2 + 1) == 0x3052534e) {\n    if (*(char *)((int)pvVar2 + 5) == '2') goto LAB_000743c5;\n    iVar5 = *(int *)((int)pvVar2 + 1);\n  }\n  else {\n    iVar5 = *(int *)((int)pvVar2 + 1);\n  }\n  if (iVar5 == 0x3052534e) {\n    if (*(char *)((int)pvVar2 + 5) == '3') goto LAB_000743c5;\n    iVar5 = *(int *)((int)pvVar2 + 1);\n  }\n  else {\n    iVar5 = *(int *)((int)pvVar2 + 1);\n  }\n  if (iVar5 == 0x30414542) {\n    if (*(char *)((int)pvVar2 + 5) == '1') goto LAB_000743c5;\n    iVar5 = *(int *)((int)pvVar2 + 1);\n  }\n  else {\n    iVar5 = *(int *)((int)pvVar2 + 1);\n  }\n  if (iVar5 == 0x544f4f42) {\n    if (*(char *)((int)pvVar2 + 5) == '2') goto LAB_000743c5;\n    if (*(int *)((int)pvVar2 + 1) != 0x30304443) goto LAB_000743a9;\nLAB_000745d1:\n    if (*(char *)((int)pvVar2 + 5) == '1') goto LAB_000743c5;\n    if (*(int *)((int)pvVar2 + 1) == 0x30574443) goto LAB_000745e8;\nLAB_000743b6:\n    iVar5 = *(int *)((int)pvVar2 + 1);\n  }\n  else {\n    if (*(int *)((int)pvVar2 + 1) == 0x30304443) goto LAB_000745d1;\nLAB_000743a9:\n    if (*(int *)((int)pvVar2 + 1) != 0x30574443) goto LAB_000743b6;\nLAB_000745e8:\n    if (*(char *)((int)pvVar2 + 5) == '2') goto LAB_000743c5;\n    iVar5 = *(int *)((int)pvVar2 + 1);\n  }\n  if (iVar5 != 0x30414554) {\n    return -1;\n  }\n  if (*(char *)((int)pvVar2 + 5) != '3') {\n    return -1;\n  }\nLAB_000743c5:\n  uVar4 = 0x8800;\n  iVar5 = 0;\n  while( true ) {\n    uVar1 = uVar4 - 0x8000;\n    pvVar2 = volume_id_get_buffer(id,CONCAT44(iVar5,uVar4),0x800);\n    if (pvVar2 == (void *)0x0) {\n      return -1;\n    }\n    if (*(char *)((int)pvVar2 + 1) != '\0') break;\n    bVar7 = 0xfffff7ff < uVar4;\n    uVar4 = uVar4 + 0x800;\n    iVar5 = iVar5 + (uint)bVar7;\n    if (iVar5 == 0 && uVar4 == 0x10000) {\n      return -1;\n    }\n  }\n  uVar4 = 0;\n  iVar5 = 0x40;\n  while( true ) {\n    pvVar2 = volume_id_get_buffer(id,(ulonglong)CONCAT14(0xffff7fff < uVar4,uVar4 + 0x8000),0x800);\n    if (pvVar2 == (void *)0x0) {\n      return -1;\n    }\n    if (*(char *)((int)pvVar2 + 1) == '\0') {\n      return -1;\n    }\n    if (((*(int *)((int)pvVar2 + 1) == 0x3052534e) && (*(char *)((int)pvVar2 + 5) == '2')) ||\n       ((*(int *)((int)pvVar2 + 1) == 0x3052534e && (*(char *)((int)pvVar2 + 5) == '3')))) break;\n    iVar5 = iVar5 + -1;\n    uVar4 = uVar4 + uVar1;\n    if (iVar5 == 0) {\n      return -1;\n    }\n  }\n  psVar3 = (short *)volume_id_get_buffer(id,(ulonglong)(uVar1 * 0x100),0x200);\n  if (psVar3 == (short *)0x0) {\n    return -1;\n  }\n  if (*psVar3 != 2) {\n    return 0;\n  }\n  uVar4 = *(uint *)(psVar3 + 8);\n  if (uVar4 < uVar1) {\n    return 0;\n  }\n  iVar5 = *(int *)(psVar3 + 10);\n  local_2c = iVar5 * uVar1;\n  uVar6 = 0;\n  while( true ) {\n    psVar3 = (short *)volume_id_get_buffer(id,(ulonglong)local_2c,0x200);\n    if (psVar3 == (short *)0x0) {\n      return -1;\n    }\n    if (*psVar3 == 0) {\n      return 0;\n    }\n    if (*(int *)(psVar3 + 6) != uVar6 + iVar5) {\n      return 0;\n    }\n    if (*psVar3 == 1) break;\n    uVar6 = uVar6 + 1;\n    local_2c = local_2c + uVar1;\n    if (uVar4 / uVar1 <= uVar6) {\n      return 0;\n    }\n  }\n  if ((char)psVar3[0xc] == '\b') {\n    volume_id_set_label_string(id,(uint8_t *)((int)psVar3 + 0x19),0x1f);\n    return 0;\n  }\n  if ((char)psVar3[0xc] != '\x10') {\n    return 0;\n  }\n  volume_id_set_label_unicode16(id,(uint8_t *)((int)psVar3 + 0x19),BE,0x1f);\n  return 0;\n}" primitive_type (ERROR "__regparm3" identifier) (function_declarator "volume_id_probe_udf(volume_id *id)" identifier (parameter_list "(volume_id *id)" ( (parameter_declaration "volume_id *id" type_identifier (pointer_declarator "*id" * identifier)) ))) (compound_statement "{\n  uint uVar1;\n  void *pvVar2;\n  short *psVar3;\n  uint uVar4;\n  int iVar5;\n  uint uVar6;\n  bool bVar7;\n  uint local_2c;\n  \n  pvVar2 = volume_id_get_buffer(id,0x8000,0x200);\n  if (pvVar2 == (void *)0x0) {\n    return -1;\n  }\n  if (*(int *)((int)pvVar2 + 1) == 0x3052534e) {\n    if (*(char *)((int)pvVar2 + 5) == '2') goto LAB_000743c5;\n    iVar5 = *(int *)((int)pvVar2 + 1);\n  }\n  else {\n    iVar5 = *(int *)((int)pvVar2 + 1);\n  }\n  if (iVar5 == 0x3052534e) {\n    if (*(char *)((int)pvVar2 + 5) == '3') goto LAB_000743c5;\n    iVar5 = *(int *)((int)pvVar2 + 1);\n  }\n  else {\n    iVar5 = *(int *)((int)pvVar2 + 1);\n  }\n  if (iVar5 == 0x30414542) {\n    if (*(char *)((int)pvVar2 + 5) == '1') goto LAB_000743c5;\n    iVar5 = *(int *)((int)pvVar2 + 1);\n  }\n  else {\n    iVar5 = *(int *)((int)pvVar2 + 1);\n  }\n  if (iVar5 == 0x544f4f42) {\n    if (*(char *)((int)pvVar2 + 5) == '2') goto LAB_000743c5;\n    if (*(int *)((int)pvVar2 + 1) != 0x30304443) goto LAB_000743a9;\nLAB_000745d1:\n    if (*(char *)((int)pvVar2 + 5) == '1') goto LAB_000743c5;\n    if (*(int *)((int)pvVar2 + 1) == 0x30574443) goto LAB_000745e8;\nLAB_000743b6:\n    iVar5 = *(int *)((int)pvVar2 + 1);\n  }\n  else {\n    if (*(int *)((int)pvVar2 + 1) == 0x30304443) goto LAB_000745d1;\nLAB_000743a9:\n    if (*(int *)((int)pvVar2 + 1) != 0x30574443) goto LAB_000743b6;\nLAB_000745e8:\n    if (*(char *)((int)pvVar2 + 5) == '2') goto LAB_000743c5;\n    iVar5 = *(int *)((int)pvVar2 + 1);\n  }\n  if (iVar5 != 0x30414554) {\n    return -1;\n  }\n  if (*(char *)((int)pvVar2 + 5) != '3') {\n    return -1;\n  }\nLAB_000743c5:\n  uVar4 = 0x8800;\n  iVar5 = 0;\n  while( true ) {\n    uVar1 = uVar4 - 0x8000;\n    pvVar2 = volume_id_get_buffer(id,CONCAT44(iVar5,uVar4),0x800);\n    if (pvVar2 == (void *)0x0) {\n      return -1;\n    }\n    if (*(char *)((int)pvVar2 + 1) != '\0') break;\n    bVar7 = 0xfffff7ff < uVar4;\n    uVar4 = uVar4 + 0x800;\n    iVar5 = iVar5 + (uint)bVar7;\n    if (iVar5 == 0 && uVar4 == 0x10000) {\n      return -1;\n    }\n  }\n  uVar4 = 0;\n  iVar5 = 0x40;\n  while( true ) {\n    pvVar2 = volume_id_get_buffer(id,(ulonglong)CONCAT14(0xffff7fff < uVar4,uVar4 + 0x8000),0x800);\n    if (pvVar2 == (void *)0x0) {\n      return -1;\n    }\n    if (*(char *)((int)pvVar2 + 1) == '\0') {\n      return -1;\n    }\n    if (((*(int *)((int)pvVar2 + 1) == 0x3052534e) && (*(char *)((int)pvVar2 + 5) == '2')) ||\n       ((*(int *)((int)pvVar2 + 1) == 0x3052534e && (*(char *)((int)pvVar2 + 5) == '3')))) break;\n    iVar5 = iVar5 + -1;\n    uVar4 = uVar4 + uVar1;\n    if (iVar5 == 0) {\n      return -1;\n    }\n  }\n  psVar3 = (short *)volume_id_get_buffer(id,(ulonglong)(uVar1 * 0x100),0x200);\n  if (psVar3 == (short *)0x0) {\n    return -1;\n  }\n  if (*psVar3 != 2) {\n    return 0;\n  }\n  uVar4 = *(uint *)(psVar3 + 8);\n  if (uVar4 < uVar1) {\n    return 0;\n  }\n  iVar5 = *(int *)(psVar3 + 10);\n  local_2c = iVar5 * uVar1;\n  uVar6 = 0;\n  while( true ) {\n    psVar3 = (short *)volume_id_get_buffer(id,(ulonglong)local_2c,0x200);\n    if (psVar3 == (short *)0x0) {\n      return -1;\n    }\n    if (*psVar3 == 0) {\n      return 0;\n    }\n    if (*(int *)(psVar3 + 6) != uVar6 + iVar5) {\n      return 0;\n    }\n    if (*psVar3 == 1) break;\n    uVar6 = uVar6 + 1;\n    local_2c = local_2c + uVar1;\n    if (uVar4 / uVar1 <= uVar6) {\n      return 0;\n    }\n  }\n  if ((char)psVar3[0xc] == '\b') {\n    volume_id_set_label_string(id,(uint8_t *)((int)psVar3 + 0x19),0x1f);\n    return 0;\n  }\n  if ((char)psVar3[0xc] != '\x10') {\n    return 0;\n  }\n  volume_id_set_label_unicode16(id,(uint8_t *)((int)psVar3 + 0x19),BE,0x1f);\n  return 0;\n}" { (declaration "uint uVar1;" type_identifier identifier ;) (declaration "void *pvVar2;" primitive_type (pointer_declarator "*pvVar2" * identifier) ;) (declaration "short *psVar3;" (sized_type_specifier "short" short) (pointer_declarator "*psVar3" * identifier) ;) (declaration "uint uVar4;" type_identifier identifier ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "uint uVar6;" type_identifier identifier ;) (declaration "bool bVar7;" primitive_type identifier ;) (declaration "uint local_2c;" type_identifier identifier ;) (expression_statement "pvVar2 = volume_id_get_buffer(id,0x8000,0x200);" (assignment_expression "pvVar2 = volume_id_get_buffer(id,0x8000,0x200)" identifier = (call_expression "volume_id_get_buffer(id,0x8000,0x200)" identifier (argument_list "(id,0x8000,0x200)" ( identifier , number_literal , number_literal )))) ;) (if_statement "if (pvVar2 == (void *)0x0) {\n    return -1;\n  }" if (parenthesized_expression "(pvVar2 == (void *)0x0)" ( (binary_expression "pvVar2 == (void *)0x0" identifier == (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    return -1;\n  }" { (return_statement "return -1;" return number_literal ;) })) (if_statement "if (*(int *)((int)pvVar2 + 1) == 0x3052534e) {\n    if (*(char *)((int)pvVar2 + 5) == '2') goto LAB_000743c5;\n    iVar5 = *(int *)((int)pvVar2 + 1);\n  }\n  else {\n    iVar5 = *(int *)((int)pvVar2 + 1);\n  }" if (parenthesized_expression "(*(int *)((int)pvVar2 + 1) == 0x3052534e)" ( (binary_expression "*(int *)((int)pvVar2 + 1) == 0x3052534e" (pointer_expression "*(int *)((int)pvVar2 + 1)" * (cast_expression "(int *)((int)pvVar2 + 1)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pvVar2 + 1)" ( (binary_expression "(int)pvVar2 + 1" (cast_expression "(int)pvVar2" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) == number_literal) )) (compound_statement "{\n    if (*(char *)((int)pvVar2 + 5) == '2') goto LAB_000743c5;\n    iVar5 = *(int *)((int)pvVar2 + 1);\n  }" { (if_statement "if (*(char *)((int)pvVar2 + 5) == '2') goto LAB_000743c5;" if (parenthesized_expression "(*(char *)((int)pvVar2 + 5) == '2')" ( (binary_expression "*(char *)((int)pvVar2 + 5) == '2'" (pointer_expression "*(char *)((int)pvVar2 + 5)" * (cast_expression "(char *)((int)pvVar2 + 5)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pvVar2 + 5)" ( (binary_expression "(int)pvVar2 + 5" (cast_expression "(int)pvVar2" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) == (char_literal "'2'" ' character ')) )) (goto_statement "goto LAB_000743c5;" goto statement_identifier ;)) (expression_statement "iVar5 = *(int *)((int)pvVar2 + 1);" (assignment_expression "iVar5 = *(int *)((int)pvVar2 + 1)" identifier = (pointer_expression "*(int *)((int)pvVar2 + 1)" * (cast_expression "(int *)((int)pvVar2 + 1)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pvVar2 + 1)" ( (binary_expression "(int)pvVar2 + 1" (cast_expression "(int)pvVar2" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) }) (else_clause "else {\n    iVar5 = *(int *)((int)pvVar2 + 1);\n  }" else (compound_statement "{\n    iVar5 = *(int *)((int)pvVar2 + 1);\n  }" { (expression_statement "iVar5 = *(int *)((int)pvVar2 + 1);" (assignment_expression "iVar5 = *(int *)((int)pvVar2 + 1)" identifier = (pointer_expression "*(int *)((int)pvVar2 + 1)" * (cast_expression "(int *)((int)pvVar2 + 1)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pvVar2 + 1)" ( (binary_expression "(int)pvVar2 + 1" (cast_expression "(int)pvVar2" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) }))) (if_statement "if (iVar5 == 0x3052534e) {\n    if (*(char *)((int)pvVar2 + 5) == '3') goto LAB_000743c5;\n    iVar5 = *(int *)((int)pvVar2 + 1);\n  }\n  else {\n    iVar5 = *(int *)((int)pvVar2 + 1);\n  }" if (parenthesized_expression "(iVar5 == 0x3052534e)" ( (binary_expression "iVar5 == 0x3052534e" identifier == number_literal) )) (compound_statement "{\n    if (*(char *)((int)pvVar2 + 5) == '3') goto LAB_000743c5;\n    iVar5 = *(int *)((int)pvVar2 + 1);\n  }" { (if_statement "if (*(char *)((int)pvVar2 + 5) == '3') goto LAB_000743c5;" if (parenthesized_expression "(*(char *)((int)pvVar2 + 5) == '3')" ( (binary_expression "*(char *)((int)pvVar2 + 5) == '3'" (pointer_expression "*(char *)((int)pvVar2 + 5)" * (cast_expression "(char *)((int)pvVar2 + 5)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pvVar2 + 5)" ( (binary_expression "(int)pvVar2 + 5" (cast_expression "(int)pvVar2" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) == (char_literal "'3'" ' character ')) )) (goto_statement "goto LAB_000743c5;" goto statement_identifier ;)) (expression_statement "iVar5 = *(int *)((int)pvVar2 + 1);" (assignment_expression "iVar5 = *(int *)((int)pvVar2 + 1)" identifier = (pointer_expression "*(int *)((int)pvVar2 + 1)" * (cast_expression "(int *)((int)pvVar2 + 1)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pvVar2 + 1)" ( (binary_expression "(int)pvVar2 + 1" (cast_expression "(int)pvVar2" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) }) (else_clause "else {\n    iVar5 = *(int *)((int)pvVar2 + 1);\n  }" else (compound_statement "{\n    iVar5 = *(int *)((int)pvVar2 + 1);\n  }" { (expression_statement "iVar5 = *(int *)((int)pvVar2 + 1);" (assignment_expression "iVar5 = *(int *)((int)pvVar2 + 1)" identifier = (pointer_expression "*(int *)((int)pvVar2 + 1)" * (cast_expression "(int *)((int)pvVar2 + 1)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pvVar2 + 1)" ( (binary_expression "(int)pvVar2 + 1" (cast_expression "(int)pvVar2" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) }))) (if_statement "if (iVar5 == 0x30414542) {\n    if (*(char *)((int)pvVar2 + 5) == '1') goto LAB_000743c5;\n    iVar5 = *(int *)((int)pvVar2 + 1);\n  }\n  else {\n    iVar5 = *(int *)((int)pvVar2 + 1);\n  }" if (parenthesized_expression "(iVar5 == 0x30414542)" ( (binary_expression "iVar5 == 0x30414542" identifier == number_literal) )) (compound_statement "{\n    if (*(char *)((int)pvVar2 + 5) == '1') goto LAB_000743c5;\n    iVar5 = *(int *)((int)pvVar2 + 1);\n  }" { (if_statement "if (*(char *)((int)pvVar2 + 5) == '1') goto LAB_000743c5;" if (parenthesized_expression "(*(char *)((int)pvVar2 + 5) == '1')" ( (binary_expression "*(char *)((int)pvVar2 + 5) == '1'" (pointer_expression "*(char *)((int)pvVar2 + 5)" * (cast_expression "(char *)((int)pvVar2 + 5)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pvVar2 + 5)" ( (binary_expression "(int)pvVar2 + 5" (cast_expression "(int)pvVar2" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) == (char_literal "'1'" ' character ')) )) (goto_statement "goto LAB_000743c5;" goto statement_identifier ;)) (expression_statement "iVar5 = *(int *)((int)pvVar2 + 1);" (assignment_expression "iVar5 = *(int *)((int)pvVar2 + 1)" identifier = (pointer_expression "*(int *)((int)pvVar2 + 1)" * (cast_expression "(int *)((int)pvVar2 + 1)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pvVar2 + 1)" ( (binary_expression "(int)pvVar2 + 1" (cast_expression "(int)pvVar2" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) }) (else_clause "else {\n    iVar5 = *(int *)((int)pvVar2 + 1);\n  }" else (compound_statement "{\n    iVar5 = *(int *)((int)pvVar2 + 1);\n  }" { (expression_statement "iVar5 = *(int *)((int)pvVar2 + 1);" (assignment_expression "iVar5 = *(int *)((int)pvVar2 + 1)" identifier = (pointer_expression "*(int *)((int)pvVar2 + 1)" * (cast_expression "(int *)((int)pvVar2 + 1)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pvVar2 + 1)" ( (binary_expression "(int)pvVar2 + 1" (cast_expression "(int)pvVar2" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) }))) (if_statement "if (iVar5 == 0x544f4f42) {\n    if (*(char *)((int)pvVar2 + 5) == '2') goto LAB_000743c5;\n    if (*(int *)((int)pvVar2 + 1) != 0x30304443) goto LAB_000743a9;\nLAB_000745d1:\n    if (*(char *)((int)pvVar2 + 5) == '1') goto LAB_000743c5;\n    if (*(int *)((int)pvVar2 + 1) == 0x30574443) goto LAB_000745e8;\nLAB_000743b6:\n    iVar5 = *(int *)((int)pvVar2 + 1);\n  }\n  else {\n    if (*(int *)((int)pvVar2 + 1) == 0x30304443) goto LAB_000745d1;\nLAB_000743a9:\n    if (*(int *)((int)pvVar2 + 1) != 0x30574443) goto LAB_000743b6;\nLAB_000745e8:\n    if (*(char *)((int)pvVar2 + 5) == '2') goto LAB_000743c5;\n    iVar5 = *(int *)((int)pvVar2 + 1);\n  }" if (parenthesized_expression "(iVar5 == 0x544f4f42)" ( (binary_expression "iVar5 == 0x544f4f42" identifier == number_literal) )) (compound_statement "{\n    if (*(char *)((int)pvVar2 + 5) == '2') goto LAB_000743c5;\n    if (*(int *)((int)pvVar2 + 1) != 0x30304443) goto LAB_000743a9;\nLAB_000745d1:\n    if (*(char *)((int)pvVar2 + 5) == '1') goto LAB_000743c5;\n    if (*(int *)((int)pvVar2 + 1) == 0x30574443) goto LAB_000745e8;\nLAB_000743b6:\n    iVar5 = *(int *)((int)pvVar2 + 1);\n  }" { (if_statement "if (*(char *)((int)pvVar2 + 5) == '2') goto LAB_000743c5;" if (parenthesized_expression "(*(char *)((int)pvVar2 + 5) == '2')" ( (binary_expression "*(char *)((int)pvVar2 + 5) == '2'" (pointer_expression "*(char *)((int)pvVar2 + 5)" * (cast_expression "(char *)((int)pvVar2 + 5)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pvVar2 + 5)" ( (binary_expression "(int)pvVar2 + 5" (cast_expression "(int)pvVar2" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) == (char_literal "'2'" ' character ')) )) (goto_statement "goto LAB_000743c5;" goto statement_identifier ;)) (if_statement "if (*(int *)((int)pvVar2 + 1) != 0x30304443) goto LAB_000743a9;" if (parenthesized_expression "(*(int *)((int)pvVar2 + 1) != 0x30304443)" ( (binary_expression "*(int *)((int)pvVar2 + 1) != 0x30304443" (pointer_expression "*(int *)((int)pvVar2 + 1)" * (cast_expression "(int *)((int)pvVar2 + 1)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pvVar2 + 1)" ( (binary_expression "(int)pvVar2 + 1" (cast_expression "(int)pvVar2" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) != number_literal) )) (goto_statement "goto LAB_000743a9;" goto statement_identifier ;)) (labeled_statement "LAB_000745d1:\n    if (*(char *)((int)pvVar2 + 5) == '1') goto LAB_000743c5;" statement_identifier : (if_statement "if (*(char *)((int)pvVar2 + 5) == '1') goto LAB_000743c5;" if (parenthesized_expression "(*(char *)((int)pvVar2 + 5) == '1')" ( (binary_expression "*(char *)((int)pvVar2 + 5) == '1'" (pointer_expression "*(char *)((int)pvVar2 + 5)" * (cast_expression "(char *)((int)pvVar2 + 5)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pvVar2 + 5)" ( (binary_expression "(int)pvVar2 + 5" (cast_expression "(int)pvVar2" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) == (char_literal "'1'" ' character ')) )) (goto_statement "goto LAB_000743c5;" goto statement_identifier ;))) (if_statement "if (*(int *)((int)pvVar2 + 1) == 0x30574443) goto LAB_000745e8;" if (parenthesized_expression "(*(int *)((int)pvVar2 + 1) == 0x30574443)" ( (binary_expression "*(int *)((int)pvVar2 + 1) == 0x30574443" (pointer_expression "*(int *)((int)pvVar2 + 1)" * (cast_expression "(int *)((int)pvVar2 + 1)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pvVar2 + 1)" ( (binary_expression "(int)pvVar2 + 1" (cast_expression "(int)pvVar2" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) == number_literal) )) (goto_statement "goto LAB_000745e8;" goto statement_identifier ;)) (labeled_statement "LAB_000743b6:\n    iVar5 = *(int *)((int)pvVar2 + 1);" statement_identifier : (expression_statement "iVar5 = *(int *)((int)pvVar2 + 1);" (assignment_expression "iVar5 = *(int *)((int)pvVar2 + 1)" identifier = (pointer_expression "*(int *)((int)pvVar2 + 1)" * (cast_expression "(int *)((int)pvVar2 + 1)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pvVar2 + 1)" ( (binary_expression "(int)pvVar2 + 1" (cast_expression "(int)pvVar2" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;)) }) (else_clause "else {\n    if (*(int *)((int)pvVar2 + 1) == 0x30304443) goto LAB_000745d1;\nLAB_000743a9:\n    if (*(int *)((int)pvVar2 + 1) != 0x30574443) goto LAB_000743b6;\nLAB_000745e8:\n    if (*(char *)((int)pvVar2 + 5) == '2') goto LAB_000743c5;\n    iVar5 = *(int *)((int)pvVar2 + 1);\n  }" else (compound_statement "{\n    if (*(int *)((int)pvVar2 + 1) == 0x30304443) goto LAB_000745d1;\nLAB_000743a9:\n    if (*(int *)((int)pvVar2 + 1) != 0x30574443) goto LAB_000743b6;\nLAB_000745e8:\n    if (*(char *)((int)pvVar2 + 5) == '2') goto LAB_000743c5;\n    iVar5 = *(int *)((int)pvVar2 + 1);\n  }" { (if_statement "if (*(int *)((int)pvVar2 + 1) == 0x30304443) goto LAB_000745d1;" if (parenthesized_expression "(*(int *)((int)pvVar2 + 1) == 0x30304443)" ( (binary_expression "*(int *)((int)pvVar2 + 1) == 0x30304443" (pointer_expression "*(int *)((int)pvVar2 + 1)" * (cast_expression "(int *)((int)pvVar2 + 1)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pvVar2 + 1)" ( (binary_expression "(int)pvVar2 + 1" (cast_expression "(int)pvVar2" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) == number_literal) )) (goto_statement "goto LAB_000745d1;" goto statement_identifier ;)) (labeled_statement "LAB_000743a9:\n    if (*(int *)((int)pvVar2 + 1) != 0x30574443) goto LAB_000743b6;" statement_identifier : (if_statement "if (*(int *)((int)pvVar2 + 1) != 0x30574443) goto LAB_000743b6;" if (parenthesized_expression "(*(int *)((int)pvVar2 + 1) != 0x30574443)" ( (binary_expression "*(int *)((int)pvVar2 + 1) != 0x30574443" (pointer_expression "*(int *)((int)pvVar2 + 1)" * (cast_expression "(int *)((int)pvVar2 + 1)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pvVar2 + 1)" ( (binary_expression "(int)pvVar2 + 1" (cast_expression "(int)pvVar2" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) != number_literal) )) (goto_statement "goto LAB_000743b6;" goto statement_identifier ;))) (labeled_statement "LAB_000745e8:\n    if (*(char *)((int)pvVar2 + 5) == '2') goto LAB_000743c5;" statement_identifier : (if_statement "if (*(char *)((int)pvVar2 + 5) == '2') goto LAB_000743c5;" if (parenthesized_expression "(*(char *)((int)pvVar2 + 5) == '2')" ( (binary_expression "*(char *)((int)pvVar2 + 5) == '2'" (pointer_expression "*(char *)((int)pvVar2 + 5)" * (cast_expression "(char *)((int)pvVar2 + 5)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pvVar2 + 5)" ( (binary_expression "(int)pvVar2 + 5" (cast_expression "(int)pvVar2" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) == (char_literal "'2'" ' character ')) )) (goto_statement "goto LAB_000743c5;" goto statement_identifier ;))) (expression_statement "iVar5 = *(int *)((int)pvVar2 + 1);" (assignment_expression "iVar5 = *(int *)((int)pvVar2 + 1)" identifier = (pointer_expression "*(int *)((int)pvVar2 + 1)" * (cast_expression "(int *)((int)pvVar2 + 1)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pvVar2 + 1)" ( (binary_expression "(int)pvVar2 + 1" (cast_expression "(int)pvVar2" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) }))) (if_statement "if (iVar5 != 0x30414554) {\n    return -1;\n  }" if (parenthesized_expression "(iVar5 != 0x30414554)" ( (binary_expression "iVar5 != 0x30414554" identifier != number_literal) )) (compound_statement "{\n    return -1;\n  }" { (return_statement "return -1;" return number_literal ;) })) (if_statement "if (*(char *)((int)pvVar2 + 5) != '3') {\n    return -1;\n  }" if (parenthesized_expression "(*(char *)((int)pvVar2 + 5) != '3')" ( (binary_expression "*(char *)((int)pvVar2 + 5) != '3'" (pointer_expression "*(char *)((int)pvVar2 + 5)" * (cast_expression "(char *)((int)pvVar2 + 5)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pvVar2 + 5)" ( (binary_expression "(int)pvVar2 + 5" (cast_expression "(int)pvVar2" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) != (char_literal "'3'" ' character ')) )) (compound_statement "{\n    return -1;\n  }" { (return_statement "return -1;" return number_literal ;) })) (labeled_statement "LAB_000743c5:\n  uVar4 = 0x8800;" statement_identifier : (expression_statement "uVar4 = 0x8800;" (assignment_expression "uVar4 = 0x8800" identifier = number_literal) ;)) (expression_statement "iVar5 = 0;" (assignment_expression "iVar5 = 0" identifier = number_literal) ;) (while_statement "while( true ) {\n    uVar1 = uVar4 - 0x8000;\n    pvVar2 = volume_id_get_buffer(id,CONCAT44(iVar5,uVar4),0x800);\n    if (pvVar2 == (void *)0x0) {\n      return -1;\n    }\n    if (*(char *)((int)pvVar2 + 1) != '\0') break;\n    bVar7 = 0xfffff7ff < uVar4;\n    uVar4 = uVar4 + 0x800;\n    iVar5 = iVar5 + (uint)bVar7;\n    if (iVar5 == 0 && uVar4 == 0x10000) {\n      return -1;\n    }\n  }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n    uVar1 = uVar4 - 0x8000;\n    pvVar2 = volume_id_get_buffer(id,CONCAT44(iVar5,uVar4),0x800);\n    if (pvVar2 == (void *)0x0) {\n      return -1;\n    }\n    if (*(char *)((int)pvVar2 + 1) != '\0') break;\n    bVar7 = 0xfffff7ff < uVar4;\n    uVar4 = uVar4 + 0x800;\n    iVar5 = iVar5 + (uint)bVar7;\n    if (iVar5 == 0 && uVar4 == 0x10000) {\n      return -1;\n    }\n  }" { (expression_statement "uVar1 = uVar4 - 0x8000;" (assignment_expression "uVar1 = uVar4 - 0x8000" identifier = (binary_expression "uVar4 - 0x8000" identifier - number_literal)) ;) (expression_statement "pvVar2 = volume_id_get_buffer(id,CONCAT44(iVar5,uVar4),0x800);" (assignment_expression "pvVar2 = volume_id_get_buffer(id,CONCAT44(iVar5,uVar4),0x800)" identifier = (call_expression "volume_id_get_buffer(id,CONCAT44(iVar5,uVar4),0x800)" identifier (argument_list "(id,CONCAT44(iVar5,uVar4),0x800)" ( identifier , (call_expression "CONCAT44(iVar5,uVar4)" identifier (argument_list "(iVar5,uVar4)" ( identifier , identifier ))) , number_literal )))) ;) (if_statement "if (pvVar2 == (void *)0x0) {\n      return -1;\n    }" if (parenthesized_expression "(pvVar2 == (void *)0x0)" ( (binary_expression "pvVar2 == (void *)0x0" identifier == (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      return -1;\n    }" { (return_statement "return -1;" return number_literal ;) })) (if_statement "if (*(char *)((int)pvVar2 + 1) != '\0') break;" if (parenthesized_expression "(*(char *)((int)pvVar2 + 1) != '\0')" ( (binary_expression "*(char *)((int)pvVar2 + 1) != '\0'" (pointer_expression "*(char *)((int)pvVar2 + 1)" * (cast_expression "(char *)((int)pvVar2 + 1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pvVar2 + 1)" ( (binary_expression "(int)pvVar2 + 1" (cast_expression "(int)pvVar2" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) != (char_literal "'\0'" ' escape_sequence ')) )) (break_statement "break;" break ;)) (expression_statement "bVar7 = 0xfffff7ff < uVar4;" (assignment_expression "bVar7 = 0xfffff7ff < uVar4" identifier = (binary_expression "0xfffff7ff < uVar4" number_literal < identifier)) ;) (expression_statement "uVar4 = uVar4 + 0x800;" (assignment_expression "uVar4 = uVar4 + 0x800" identifier = (binary_expression "uVar4 + 0x800" identifier + number_literal)) ;) (expression_statement "iVar5 = iVar5 + (uint)bVar7;" (assignment_expression "iVar5 = iVar5 + (uint)bVar7" identifier = (binary_expression "iVar5 + (uint)bVar7" identifier + (cast_expression "(uint)bVar7" ( (type_descriptor "uint" type_identifier) ) identifier))) ;) (if_statement "if (iVar5 == 0 && uVar4 == 0x10000) {\n      return -1;\n    }" if (parenthesized_expression "(iVar5 == 0 && uVar4 == 0x10000)" ( (binary_expression "iVar5 == 0 && uVar4 == 0x10000" (binary_expression "iVar5 == 0" identifier == number_literal) && (binary_expression "uVar4 == 0x10000" identifier == number_literal)) )) (compound_statement "{\n      return -1;\n    }" { (return_statement "return -1;" return number_literal ;) })) })) (expression_statement "uVar4 = 0;" (assignment_expression "uVar4 = 0" identifier = number_literal) ;) (expression_statement "iVar5 = 0x40;" (assignment_expression "iVar5 = 0x40" identifier = number_literal) ;) (while_statement "while( true ) {\n    pvVar2 = volume_id_get_buffer(id,(ulonglong)CONCAT14(0xffff7fff < uVar4,uVar4 + 0x8000),0x800);\n    if (pvVar2 == (void *)0x0) {\n      return -1;\n    }\n    if (*(char *)((int)pvVar2 + 1) == '\0') {\n      return -1;\n    }\n    if (((*(int *)((int)pvVar2 + 1) == 0x3052534e) && (*(char *)((int)pvVar2 + 5) == '2')) ||\n       ((*(int *)((int)pvVar2 + 1) == 0x3052534e && (*(char *)((int)pvVar2 + 5) == '3')))) break;\n    iVar5 = iVar5 + -1;\n    uVar4 = uVar4 + uVar1;\n    if (iVar5 == 0) {\n      return -1;\n    }\n  }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n    pvVar2 = volume_id_get_buffer(id,(ulonglong)CONCAT14(0xffff7fff < uVar4,uVar4 + 0x8000),0x800);\n    if (pvVar2 == (void *)0x0) {\n      return -1;\n    }\n    if (*(char *)((int)pvVar2 + 1) == '\0') {\n      return -1;\n    }\n    if (((*(int *)((int)pvVar2 + 1) == 0x3052534e) && (*(char *)((int)pvVar2 + 5) == '2')) ||\n       ((*(int *)((int)pvVar2 + 1) == 0x3052534e && (*(char *)((int)pvVar2 + 5) == '3')))) break;\n    iVar5 = iVar5 + -1;\n    uVar4 = uVar4 + uVar1;\n    if (iVar5 == 0) {\n      return -1;\n    }\n  }" { (expression_statement "pvVar2 = volume_id_get_buffer(id,(ulonglong)CONCAT14(0xffff7fff < uVar4,uVar4 + 0x8000),0x800);" (assignment_expression "pvVar2 = volume_id_get_buffer(id,(ulonglong)CONCAT14(0xffff7fff < uVar4,uVar4 + 0x8000),0x800)" identifier = (call_expression "volume_id_get_buffer(id,(ulonglong)CONCAT14(0xffff7fff < uVar4,uVar4 + 0x8000),0x800)" identifier (argument_list "(id,(ulonglong)CONCAT14(0xffff7fff < uVar4,uVar4 + 0x8000),0x800)" ( identifier , (cast_expression "(ulonglong)CONCAT14(0xffff7fff < uVar4,uVar4 + 0x8000)" ( (type_descriptor "ulonglong" type_identifier) ) (call_expression "CONCAT14(0xffff7fff < uVar4,uVar4 + 0x8000)" identifier (argument_list "(0xffff7fff < uVar4,uVar4 + 0x8000)" ( (binary_expression "0xffff7fff < uVar4" number_literal < identifier) , (binary_expression "uVar4 + 0x8000" identifier + number_literal) )))) , number_literal )))) ;) (if_statement "if (pvVar2 == (void *)0x0) {\n      return -1;\n    }" if (parenthesized_expression "(pvVar2 == (void *)0x0)" ( (binary_expression "pvVar2 == (void *)0x0" identifier == (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      return -1;\n    }" { (return_statement "return -1;" return number_literal ;) })) (if_statement "if (*(char *)((int)pvVar2 + 1) == '\0') {\n      return -1;\n    }" if (parenthesized_expression "(*(char *)((int)pvVar2 + 1) == '\0')" ( (binary_expression "*(char *)((int)pvVar2 + 1) == '\0'" (pointer_expression "*(char *)((int)pvVar2 + 1)" * (cast_expression "(char *)((int)pvVar2 + 1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pvVar2 + 1)" ( (binary_expression "(int)pvVar2 + 1" (cast_expression "(int)pvVar2" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      return -1;\n    }" { (return_statement "return -1;" return number_literal ;) })) (if_statement "if (((*(int *)((int)pvVar2 + 1) == 0x3052534e) && (*(char *)((int)pvVar2 + 5) == '2')) ||\n       ((*(int *)((int)pvVar2 + 1) == 0x3052534e && (*(char *)((int)pvVar2 + 5) == '3')))) break;" if (parenthesized_expression "(((*(int *)((int)pvVar2 + 1) == 0x3052534e) && (*(char *)((int)pvVar2 + 5) == '2')) ||\n       ((*(int *)((int)pvVar2 + 1) == 0x3052534e && (*(char *)((int)pvVar2 + 5) == '3'))))" ( (binary_expression "((*(int *)((int)pvVar2 + 1) == 0x3052534e) && (*(char *)((int)pvVar2 + 5) == '2')) ||\n       ((*(int *)((int)pvVar2 + 1) == 0x3052534e && (*(char *)((int)pvVar2 + 5) == '3')))" (parenthesized_expression "((*(int *)((int)pvVar2 + 1) == 0x3052534e) && (*(char *)((int)pvVar2 + 5) == '2'))" ( (binary_expression "(*(int *)((int)pvVar2 + 1) == 0x3052534e) && (*(char *)((int)pvVar2 + 5) == '2')" (parenthesized_expression "(*(int *)((int)pvVar2 + 1) == 0x3052534e)" ( (binary_expression "*(int *)((int)pvVar2 + 1) == 0x3052534e" (pointer_expression "*(int *)((int)pvVar2 + 1)" * (cast_expression "(int *)((int)pvVar2 + 1)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pvVar2 + 1)" ( (binary_expression "(int)pvVar2 + 1" (cast_expression "(int)pvVar2" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) == number_literal) )) && (parenthesized_expression "(*(char *)((int)pvVar2 + 5) == '2')" ( (binary_expression "*(char *)((int)pvVar2 + 5) == '2'" (pointer_expression "*(char *)((int)pvVar2 + 5)" * (cast_expression "(char *)((int)pvVar2 + 5)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pvVar2 + 5)" ( (binary_expression "(int)pvVar2 + 5" (cast_expression "(int)pvVar2" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) == (char_literal "'2'" ' character ')) ))) )) || (parenthesized_expression "((*(int *)((int)pvVar2 + 1) == 0x3052534e && (*(char *)((int)pvVar2 + 5) == '3')))" ( (parenthesized_expression "(*(int *)((int)pvVar2 + 1) == 0x3052534e && (*(char *)((int)pvVar2 + 5) == '3'))" ( (binary_expression "*(int *)((int)pvVar2 + 1) == 0x3052534e && (*(char *)((int)pvVar2 + 5) == '3')" (binary_expression "*(int *)((int)pvVar2 + 1) == 0x3052534e" (pointer_expression "*(int *)((int)pvVar2 + 1)" * (cast_expression "(int *)((int)pvVar2 + 1)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pvVar2 + 1)" ( (binary_expression "(int)pvVar2 + 1" (cast_expression "(int)pvVar2" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) == number_literal) && (parenthesized_expression "(*(char *)((int)pvVar2 + 5) == '3')" ( (binary_expression "*(char *)((int)pvVar2 + 5) == '3'" (pointer_expression "*(char *)((int)pvVar2 + 5)" * (cast_expression "(char *)((int)pvVar2 + 5)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pvVar2 + 5)" ( (binary_expression "(int)pvVar2 + 5" (cast_expression "(int)pvVar2" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) == (char_literal "'3'" ' character ')) ))) )) ))) )) (break_statement "break;" break ;)) (expression_statement "iVar5 = iVar5 + -1;" (assignment_expression "iVar5 = iVar5 + -1" identifier = (binary_expression "iVar5 + -1" identifier + number_literal)) ;) (expression_statement "uVar4 = uVar4 + uVar1;" (assignment_expression "uVar4 = uVar4 + uVar1" identifier = (binary_expression "uVar4 + uVar1" identifier + identifier)) ;) (if_statement "if (iVar5 == 0) {\n      return -1;\n    }" if (parenthesized_expression "(iVar5 == 0)" ( (binary_expression "iVar5 == 0" identifier == number_literal) )) (compound_statement "{\n      return -1;\n    }" { (return_statement "return -1;" return number_literal ;) })) })) (expression_statement "psVar3 = (short *)volume_id_get_buffer(id,(ulonglong)(uVar1 * 0x100),0x200);" (assignment_expression "psVar3 = (short *)volume_id_get_buffer(id,(ulonglong)(uVar1 * 0x100),0x200)" identifier = (cast_expression "(short *)volume_id_get_buffer(id,(ulonglong)(uVar1 * 0x100),0x200)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (call_expression "volume_id_get_buffer(id,(ulonglong)(uVar1 * 0x100),0x200)" identifier (argument_list "(id,(ulonglong)(uVar1 * 0x100),0x200)" ( identifier , (call_expression "(ulonglong)(uVar1 * 0x100)" (parenthesized_expression "(ulonglong)" ( identifier )) (argument_list "(uVar1 * 0x100)" ( (binary_expression "uVar1 * 0x100" identifier * number_literal) ))) , number_literal ))))) ;) (if_statement "if (psVar3 == (short *)0x0) {\n    return -1;\n  }" if (parenthesized_expression "(psVar3 == (short *)0x0)" ( (binary_expression "psVar3 == (short *)0x0" identifier == (cast_expression "(short *)0x0" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    return -1;\n  }" { (return_statement "return -1;" return number_literal ;) })) (if_statement "if (*psVar3 != 2) {\n    return 0;\n  }" if (parenthesized_expression "(*psVar3 != 2)" ( (binary_expression "*psVar3 != 2" (pointer_expression "*psVar3" * identifier) != number_literal) )) (compound_statement "{\n    return 0;\n  }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "uVar4 = *(uint *)(psVar3 + 8);" (assignment_expression "uVar4 = *(uint *)(psVar3 + 8)" identifier = (pointer_expression "*(uint *)(psVar3 + 8)" * (cast_expression "(uint *)(psVar3 + 8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(psVar3 + 8)" ( (binary_expression "psVar3 + 8" identifier + number_literal) ))))) ;) (if_statement "if (uVar4 < uVar1) {\n    return 0;\n  }" if (parenthesized_expression "(uVar4 < uVar1)" ( (binary_expression "uVar4 < uVar1" identifier < identifier) )) (compound_statement "{\n    return 0;\n  }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "iVar5 = *(int *)(psVar3 + 10);" (assignment_expression "iVar5 = *(int *)(psVar3 + 10)" identifier = (pointer_expression "*(int *)(psVar3 + 10)" * (cast_expression "(int *)(psVar3 + 10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(psVar3 + 10)" ( (binary_expression "psVar3 + 10" identifier + number_literal) ))))) ;) (expression_statement "local_2c = iVar5 * uVar1;" (assignment_expression "local_2c = iVar5 * uVar1" identifier = (binary_expression "iVar5 * uVar1" identifier * identifier)) ;) (expression_statement "uVar6 = 0;" (assignment_expression "uVar6 = 0" identifier = number_literal) ;) (while_statement "while( true ) {\n    psVar3 = (short *)volume_id_get_buffer(id,(ulonglong)local_2c,0x200);\n    if (psVar3 == (short *)0x0) {\n      return -1;\n    }\n    if (*psVar3 == 0) {\n      return 0;\n    }\n    if (*(int *)(psVar3 + 6) != uVar6 + iVar5) {\n      return 0;\n    }\n    if (*psVar3 == 1) break;\n    uVar6 = uVar6 + 1;\n    local_2c = local_2c + uVar1;\n    if (uVar4 / uVar1 <= uVar6) {\n      return 0;\n    }\n  }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n    psVar3 = (short *)volume_id_get_buffer(id,(ulonglong)local_2c,0x200);\n    if (psVar3 == (short *)0x0) {\n      return -1;\n    }\n    if (*psVar3 == 0) {\n      return 0;\n    }\n    if (*(int *)(psVar3 + 6) != uVar6 + iVar5) {\n      return 0;\n    }\n    if (*psVar3 == 1) break;\n    uVar6 = uVar6 + 1;\n    local_2c = local_2c + uVar1;\n    if (uVar4 / uVar1 <= uVar6) {\n      return 0;\n    }\n  }" { (expression_statement "psVar3 = (short *)volume_id_get_buffer(id,(ulonglong)local_2c,0x200);" (assignment_expression "psVar3 = (short *)volume_id_get_buffer(id,(ulonglong)local_2c,0x200)" identifier = (cast_expression "(short *)volume_id_get_buffer(id,(ulonglong)local_2c,0x200)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (call_expression "volume_id_get_buffer(id,(ulonglong)local_2c,0x200)" identifier (argument_list "(id,(ulonglong)local_2c,0x200)" ( identifier , (cast_expression "(ulonglong)local_2c" ( (type_descriptor "ulonglong" type_identifier) ) identifier) , number_literal ))))) ;) (if_statement "if (psVar3 == (short *)0x0) {\n      return -1;\n    }" if (parenthesized_expression "(psVar3 == (short *)0x0)" ( (binary_expression "psVar3 == (short *)0x0" identifier == (cast_expression "(short *)0x0" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      return -1;\n    }" { (return_statement "return -1;" return number_literal ;) })) (if_statement "if (*psVar3 == 0) {\n      return 0;\n    }" if (parenthesized_expression "(*psVar3 == 0)" ( (binary_expression "*psVar3 == 0" (pointer_expression "*psVar3" * identifier) == number_literal) )) (compound_statement "{\n      return 0;\n    }" { (return_statement "return 0;" return number_literal ;) })) (if_statement "if (*(int *)(psVar3 + 6) != uVar6 + iVar5) {\n      return 0;\n    }" if (parenthesized_expression "(*(int *)(psVar3 + 6) != uVar6 + iVar5)" ( (binary_expression "*(int *)(psVar3 + 6) != uVar6 + iVar5" (pointer_expression "*(int *)(psVar3 + 6)" * (cast_expression "(int *)(psVar3 + 6)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(psVar3 + 6)" ( (binary_expression "psVar3 + 6" identifier + number_literal) )))) != (binary_expression "uVar6 + iVar5" identifier + identifier)) )) (compound_statement "{\n      return 0;\n    }" { (return_statement "return 0;" return number_literal ;) })) (if_statement "if (*psVar3 == 1) break;" if (parenthesized_expression "(*psVar3 == 1)" ( (binary_expression "*psVar3 == 1" (pointer_expression "*psVar3" * identifier) == number_literal) )) (break_statement "break;" break ;)) (expression_statement "uVar6 = uVar6 + 1;" (assignment_expression "uVar6 = uVar6 + 1" identifier = (binary_expression "uVar6 + 1" identifier + number_literal)) ;) (expression_statement "local_2c = local_2c + uVar1;" (assignment_expression "local_2c = local_2c + uVar1" identifier = (binary_expression "local_2c + uVar1" identifier + identifier)) ;) (if_statement "if (uVar4 / uVar1 <= uVar6) {\n      return 0;\n    }" if (parenthesized_expression "(uVar4 / uVar1 <= uVar6)" ( (binary_expression "uVar4 / uVar1 <= uVar6" (binary_expression "uVar4 / uVar1" identifier / identifier) <= identifier) )) (compound_statement "{\n      return 0;\n    }" { (return_statement "return 0;" return number_literal ;) })) })) (if_statement "if ((char)psVar3[0xc] == '\b') {\n    volume_id_set_label_string(id,(uint8_t *)((int)psVar3 + 0x19),0x1f);\n    return 0;\n  }" if (parenthesized_expression "((char)psVar3[0xc] == '\b')" ( (binary_expression "(char)psVar3[0xc] == '\b'" (cast_expression "(char)psVar3[0xc]" ( (type_descriptor "char" primitive_type) ) (subscript_expression "psVar3[0xc]" identifier [ number_literal ])) == (char_literal "'\b'" ' escape_sequence ')) )) (compound_statement "{\n    volume_id_set_label_string(id,(uint8_t *)((int)psVar3 + 0x19),0x1f);\n    return 0;\n  }" { (expression_statement "volume_id_set_label_string(id,(uint8_t *)((int)psVar3 + 0x19),0x1f);" (call_expression "volume_id_set_label_string(id,(uint8_t *)((int)psVar3 + 0x19),0x1f)" identifier (argument_list "(id,(uint8_t *)((int)psVar3 + 0x19),0x1f)" ( identifier , (cast_expression "(uint8_t *)((int)psVar3 + 0x19)" ( (type_descriptor "uint8_t *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)psVar3 + 0x19)" ( (binary_expression "(int)psVar3 + 0x19" (cast_expression "(int)psVar3" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))) , number_literal ))) ;) (return_statement "return 0;" return number_literal ;) })) (if_statement "if ((char)psVar3[0xc] != '\x10') {\n    return 0;\n  }" if (parenthesized_expression "((char)psVar3[0xc] != '\x10')" ( (binary_expression "(char)psVar3[0xc] != '\x10'" (cast_expression "(char)psVar3[0xc]" ( (type_descriptor "char" primitive_type) ) (subscript_expression "psVar3[0xc]" identifier [ number_literal ])) != (char_literal "'\x10'" ' escape_sequence ')) )) (compound_statement "{\n    return 0;\n  }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "volume_id_set_label_unicode16(id,(uint8_t *)((int)psVar3 + 0x19),BE,0x1f);" (call_expression "volume_id_set_label_unicode16(id,(uint8_t *)((int)psVar3 + 0x19),BE,0x1f)" identifier (argument_list "(id,(uint8_t *)((int)psVar3 + 0x19),BE,0x1f)" ( identifier , (cast_expression "(uint8_t *)((int)psVar3 + 0x19)" ( (type_descriptor "uint8_t *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)psVar3 + 0x19)" ( (binary_expression "(int)psVar3 + 0x19" (cast_expression "(int)psVar3" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))) , identifier , number_literal ))) ;) (return_statement "return 0;" return number_literal ;) })))
(translation_unit "undefined4 __regparm3 FUN_00074336(undefined4 param_1)\n\n{\n  uint uVar1;\n  int iVar2;\n  int iVar3;\n  short *psVar4;\n  uint uVar5;\n  uint uVar6;\n  bool bVar7;\n  int local_2c;\n  \n  iVar2 = FUN_000749ed(param_1,0x8000,0,0x200);\n  if (iVar2 == 0) {\n    return 0xffffffff;\n  }\n  if (*(int *)(iVar2 + 1) == 0x3052534e) {\n    if (*(char *)(iVar2 + 5) == '2') goto LAB_000743c5;\n    iVar3 = *(int *)(iVar2 + 1);\n  }\n  else {\n    iVar3 = *(int *)(iVar2 + 1);\n  }\n  if (iVar3 == 0x3052534e) {\n    if (*(char *)(iVar2 + 5) == '3') goto LAB_000743c5;\n    iVar3 = *(int *)(iVar2 + 1);\n  }\n  else {\n    iVar3 = *(int *)(iVar2 + 1);\n  }\n  if (iVar3 == 0x30414542) {\n    if (*(char *)(iVar2 + 5) == '1') goto LAB_000743c5;\n    iVar3 = *(int *)(iVar2 + 1);\n  }\n  else {\n    iVar3 = *(int *)(iVar2 + 1);\n  }\n  if (iVar3 == 0x544f4f42) {\n    if (*(char *)(iVar2 + 5) == '2') goto LAB_000743c5;\n    if (*(int *)(iVar2 + 1) != 0x30304443) goto LAB_000743a9;\nLAB_000745d1:\n    if (*(char *)(iVar2 + 5) == '1') goto LAB_000743c5;\n    if (*(int *)(iVar2 + 1) == 0x30574443) goto LAB_000745e8;\nLAB_000743b6:\n    iVar3 = *(int *)(iVar2 + 1);\n  }\n  else {\n    if (*(int *)(iVar2 + 1) == 0x30304443) goto LAB_000745d1;\nLAB_000743a9:\n    if (*(int *)(iVar2 + 1) != 0x30574443) goto LAB_000743b6;\nLAB_000745e8:\n    if (*(char *)(iVar2 + 5) == '2') goto LAB_000743c5;\n    iVar3 = *(int *)(iVar2 + 1);\n  }\n  if (iVar3 != 0x30414554) {\n    return 0xffffffff;\n  }\n  if (*(char *)(iVar2 + 5) != '3') {\n    return 0xffffffff;\n  }\nLAB_000743c5:\n  uVar5 = 0x8800;\n  iVar2 = 0;\n  while( true ) {\n    uVar1 = uVar5 - 0x8000;\n    iVar3 = FUN_000749ed(param_1,uVar5,iVar2,0x800);\n    if (iVar3 == 0) {\n      return 0xffffffff;\n    }\n    if (*(char *)(iVar3 + 1) != '\0') break;\n    bVar7 = 0xfffff7ff < uVar5;\n    uVar5 = uVar5 + 0x800;\n    iVar2 = iVar2 + (uint)bVar7;\n    if (iVar2 == 0 && uVar5 == 0x10000) {\n      return 0xffffffff;\n    }\n  }\n  uVar5 = 0;\n  iVar2 = 0x40;\n  while( true ) {\n    iVar3 = FUN_000749ed(param_1,uVar5 + 0x8000,0xffff7fff < uVar5,0x800);\n    if (iVar3 == 0) {\n      return 0xffffffff;\n    }\n    if (*(char *)(iVar3 + 1) == '\0') {\n      return 0xffffffff;\n    }\n    if (((*(int *)(iVar3 + 1) == 0x3052534e) && (*(char *)(iVar3 + 5) == '2')) ||\n       ((*(int *)(iVar3 + 1) == 0x3052534e && (*(char *)(iVar3 + 5) == '3')))) break;\n    iVar2 = iVar2 + -1;\n    uVar5 = uVar5 + uVar1;\n    if (iVar2 == 0) {\n      return 0xffffffff;\n    }\n  }\n  psVar4 = (short *)FUN_000749ed(param_1,uVar1 * 0x100,0,0x200);\n  if (psVar4 == (short *)0x0) {\n    return 0xffffffff;\n  }\n  if (*psVar4 != 2) {\n    return 0;\n  }\n  uVar5 = *(uint *)(psVar4 + 8);\n  if (uVar5 < uVar1) {\n    return 0;\n  }\n  iVar2 = *(int *)(psVar4 + 10);\n  local_2c = iVar2 * uVar1;\n  uVar6 = 0;\n  while( true ) {\n    psVar4 = (short *)FUN_000749ed(param_1,local_2c,0,0x200);\n    if (psVar4 == (short *)0x0) {\n      return 0xffffffff;\n    }\n    if (*psVar4 == 0) {\n      return 0;\n    }\n    if (*(int *)(psVar4 + 6) != uVar6 + iVar2) {\n      return 0;\n    }\n    if (*psVar4 == 1) break;\n    uVar6 = uVar6 + 1;\n    local_2c = local_2c + uVar1;\n    if (uVar5 / uVar1 <= uVar6) {\n      return 0;\n    }\n  }\n  if ((char)psVar4[0xc] == '\b') {\n    FUN_000747a0(param_1,(int)psVar4 + 0x19,0x1f,8);\n    return 0;\n  }\n  if ((char)psVar4[0xc] != '\x10') {\n    return 0;\n  }\n  FUN_00074819(param_1,(int)psVar4 + 0x19,1,0x1f);\n  return 0;\n}\n\n" (function_definition "undefined4 __regparm3 FUN_00074336(undefined4 param_1)\n\n{\n  uint uVar1;\n  int iVar2;\n  int iVar3;\n  short *psVar4;\n  uint uVar5;\n  uint uVar6;\n  bool bVar7;\n  int local_2c;\n  \n  iVar2 = FUN_000749ed(param_1,0x8000,0,0x200);\n  if (iVar2 == 0) {\n    return 0xffffffff;\n  }\n  if (*(int *)(iVar2 + 1) == 0x3052534e) {\n    if (*(char *)(iVar2 + 5) == '2') goto LAB_000743c5;\n    iVar3 = *(int *)(iVar2 + 1);\n  }\n  else {\n    iVar3 = *(int *)(iVar2 + 1);\n  }\n  if (iVar3 == 0x3052534e) {\n    if (*(char *)(iVar2 + 5) == '3') goto LAB_000743c5;\n    iVar3 = *(int *)(iVar2 + 1);\n  }\n  else {\n    iVar3 = *(int *)(iVar2 + 1);\n  }\n  if (iVar3 == 0x30414542) {\n    if (*(char *)(iVar2 + 5) == '1') goto LAB_000743c5;\n    iVar3 = *(int *)(iVar2 + 1);\n  }\n  else {\n    iVar3 = *(int *)(iVar2 + 1);\n  }\n  if (iVar3 == 0x544f4f42) {\n    if (*(char *)(iVar2 + 5) == '2') goto LAB_000743c5;\n    if (*(int *)(iVar2 + 1) != 0x30304443) goto LAB_000743a9;\nLAB_000745d1:\n    if (*(char *)(iVar2 + 5) == '1') goto LAB_000743c5;\n    if (*(int *)(iVar2 + 1) == 0x30574443) goto LAB_000745e8;\nLAB_000743b6:\n    iVar3 = *(int *)(iVar2 + 1);\n  }\n  else {\n    if (*(int *)(iVar2 + 1) == 0x30304443) goto LAB_000745d1;\nLAB_000743a9:\n    if (*(int *)(iVar2 + 1) != 0x30574443) goto LAB_000743b6;\nLAB_000745e8:\n    if (*(char *)(iVar2 + 5) == '2') goto LAB_000743c5;\n    iVar3 = *(int *)(iVar2 + 1);\n  }\n  if (iVar3 != 0x30414554) {\n    return 0xffffffff;\n  }\n  if (*(char *)(iVar2 + 5) != '3') {\n    return 0xffffffff;\n  }\nLAB_000743c5:\n  uVar5 = 0x8800;\n  iVar2 = 0;\n  while( true ) {\n    uVar1 = uVar5 - 0x8000;\n    iVar3 = FUN_000749ed(param_1,uVar5,iVar2,0x800);\n    if (iVar3 == 0) {\n      return 0xffffffff;\n    }\n    if (*(char *)(iVar3 + 1) != '\0') break;\n    bVar7 = 0xfffff7ff < uVar5;\n    uVar5 = uVar5 + 0x800;\n    iVar2 = iVar2 + (uint)bVar7;\n    if (iVar2 == 0 && uVar5 == 0x10000) {\n      return 0xffffffff;\n    }\n  }\n  uVar5 = 0;\n  iVar2 = 0x40;\n  while( true ) {\n    iVar3 = FUN_000749ed(param_1,uVar5 + 0x8000,0xffff7fff < uVar5,0x800);\n    if (iVar3 == 0) {\n      return 0xffffffff;\n    }\n    if (*(char *)(iVar3 + 1) == '\0') {\n      return 0xffffffff;\n    }\n    if (((*(int *)(iVar3 + 1) == 0x3052534e) && (*(char *)(iVar3 + 5) == '2')) ||\n       ((*(int *)(iVar3 + 1) == 0x3052534e && (*(char *)(iVar3 + 5) == '3')))) break;\n    iVar2 = iVar2 + -1;\n    uVar5 = uVar5 + uVar1;\n    if (iVar2 == 0) {\n      return 0xffffffff;\n    }\n  }\n  psVar4 = (short *)FUN_000749ed(param_1,uVar1 * 0x100,0,0x200);\n  if (psVar4 == (short *)0x0) {\n    return 0xffffffff;\n  }\n  if (*psVar4 != 2) {\n    return 0;\n  }\n  uVar5 = *(uint *)(psVar4 + 8);\n  if (uVar5 < uVar1) {\n    return 0;\n  }\n  iVar2 = *(int *)(psVar4 + 10);\n  local_2c = iVar2 * uVar1;\n  uVar6 = 0;\n  while( true ) {\n    psVar4 = (short *)FUN_000749ed(param_1,local_2c,0,0x200);\n    if (psVar4 == (short *)0x0) {\n      return 0xffffffff;\n    }\n    if (*psVar4 == 0) {\n      return 0;\n    }\n    if (*(int *)(psVar4 + 6) != uVar6 + iVar2) {\n      return 0;\n    }\n    if (*psVar4 == 1) break;\n    uVar6 = uVar6 + 1;\n    local_2c = local_2c + uVar1;\n    if (uVar5 / uVar1 <= uVar6) {\n      return 0;\n    }\n  }\n  if ((char)psVar4[0xc] == '\b') {\n    FUN_000747a0(param_1,(int)psVar4 + 0x19,0x1f,8);\n    return 0;\n  }\n  if ((char)psVar4[0xc] != '\x10') {\n    return 0;\n  }\n  FUN_00074819(param_1,(int)psVar4 + 0x19,1,0x1f);\n  return 0;\n}" type_identifier (ERROR "__regparm3" identifier) (function_declarator "FUN_00074336(undefined4 param_1)" identifier (parameter_list "(undefined4 param_1)" ( (parameter_declaration "undefined4 param_1" type_identifier identifier) ))) (compound_statement "{\n  uint uVar1;\n  int iVar2;\n  int iVar3;\n  short *psVar4;\n  uint uVar5;\n  uint uVar6;\n  bool bVar7;\n  int local_2c;\n  \n  iVar2 = FUN_000749ed(param_1,0x8000,0,0x200);\n  if (iVar2 == 0) {\n    return 0xffffffff;\n  }\n  if (*(int *)(iVar2 + 1) == 0x3052534e) {\n    if (*(char *)(iVar2 + 5) == '2') goto LAB_000743c5;\n    iVar3 = *(int *)(iVar2 + 1);\n  }\n  else {\n    iVar3 = *(int *)(iVar2 + 1);\n  }\n  if (iVar3 == 0x3052534e) {\n    if (*(char *)(iVar2 + 5) == '3') goto LAB_000743c5;\n    iVar3 = *(int *)(iVar2 + 1);\n  }\n  else {\n    iVar3 = *(int *)(iVar2 + 1);\n  }\n  if (iVar3 == 0x30414542) {\n    if (*(char *)(iVar2 + 5) == '1') goto LAB_000743c5;\n    iVar3 = *(int *)(iVar2 + 1);\n  }\n  else {\n    iVar3 = *(int *)(iVar2 + 1);\n  }\n  if (iVar3 == 0x544f4f42) {\n    if (*(char *)(iVar2 + 5) == '2') goto LAB_000743c5;\n    if (*(int *)(iVar2 + 1) != 0x30304443) goto LAB_000743a9;\nLAB_000745d1:\n    if (*(char *)(iVar2 + 5) == '1') goto LAB_000743c5;\n    if (*(int *)(iVar2 + 1) == 0x30574443) goto LAB_000745e8;\nLAB_000743b6:\n    iVar3 = *(int *)(iVar2 + 1);\n  }\n  else {\n    if (*(int *)(iVar2 + 1) == 0x30304443) goto LAB_000745d1;\nLAB_000743a9:\n    if (*(int *)(iVar2 + 1) != 0x30574443) goto LAB_000743b6;\nLAB_000745e8:\n    if (*(char *)(iVar2 + 5) == '2') goto LAB_000743c5;\n    iVar3 = *(int *)(iVar2 + 1);\n  }\n  if (iVar3 != 0x30414554) {\n    return 0xffffffff;\n  }\n  if (*(char *)(iVar2 + 5) != '3') {\n    return 0xffffffff;\n  }\nLAB_000743c5:\n  uVar5 = 0x8800;\n  iVar2 = 0;\n  while( true ) {\n    uVar1 = uVar5 - 0x8000;\n    iVar3 = FUN_000749ed(param_1,uVar5,iVar2,0x800);\n    if (iVar3 == 0) {\n      return 0xffffffff;\n    }\n    if (*(char *)(iVar3 + 1) != '\0') break;\n    bVar7 = 0xfffff7ff < uVar5;\n    uVar5 = uVar5 + 0x800;\n    iVar2 = iVar2 + (uint)bVar7;\n    if (iVar2 == 0 && uVar5 == 0x10000) {\n      return 0xffffffff;\n    }\n  }\n  uVar5 = 0;\n  iVar2 = 0x40;\n  while( true ) {\n    iVar3 = FUN_000749ed(param_1,uVar5 + 0x8000,0xffff7fff < uVar5,0x800);\n    if (iVar3 == 0) {\n      return 0xffffffff;\n    }\n    if (*(char *)(iVar3 + 1) == '\0') {\n      return 0xffffffff;\n    }\n    if (((*(int *)(iVar3 + 1) == 0x3052534e) && (*(char *)(iVar3 + 5) == '2')) ||\n       ((*(int *)(iVar3 + 1) == 0x3052534e && (*(char *)(iVar3 + 5) == '3')))) break;\n    iVar2 = iVar2 + -1;\n    uVar5 = uVar5 + uVar1;\n    if (iVar2 == 0) {\n      return 0xffffffff;\n    }\n  }\n  psVar4 = (short *)FUN_000749ed(param_1,uVar1 * 0x100,0,0x200);\n  if (psVar4 == (short *)0x0) {\n    return 0xffffffff;\n  }\n  if (*psVar4 != 2) {\n    return 0;\n  }\n  uVar5 = *(uint *)(psVar4 + 8);\n  if (uVar5 < uVar1) {\n    return 0;\n  }\n  iVar2 = *(int *)(psVar4 + 10);\n  local_2c = iVar2 * uVar1;\n  uVar6 = 0;\n  while( true ) {\n    psVar4 = (short *)FUN_000749ed(param_1,local_2c,0,0x200);\n    if (psVar4 == (short *)0x0) {\n      return 0xffffffff;\n    }\n    if (*psVar4 == 0) {\n      return 0;\n    }\n    if (*(int *)(psVar4 + 6) != uVar6 + iVar2) {\n      return 0;\n    }\n    if (*psVar4 == 1) break;\n    uVar6 = uVar6 + 1;\n    local_2c = local_2c + uVar1;\n    if (uVar5 / uVar1 <= uVar6) {\n      return 0;\n    }\n  }\n  if ((char)psVar4[0xc] == '\b') {\n    FUN_000747a0(param_1,(int)psVar4 + 0x19,0x1f,8);\n    return 0;\n  }\n  if ((char)psVar4[0xc] != '\x10') {\n    return 0;\n  }\n  FUN_00074819(param_1,(int)psVar4 + 0x19,1,0x1f);\n  return 0;\n}" { (declaration "uint uVar1;" type_identifier identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "short *psVar4;" (sized_type_specifier "short" short) (pointer_declarator "*psVar4" * identifier) ;) (declaration "uint uVar5;" type_identifier identifier ;) (declaration "uint uVar6;" type_identifier identifier ;) (declaration "bool bVar7;" primitive_type identifier ;) (declaration "int local_2c;" primitive_type identifier ;) (expression_statement "iVar2 = FUN_000749ed(param_1,0x8000,0,0x200);" (assignment_expression "iVar2 = FUN_000749ed(param_1,0x8000,0,0x200)" identifier = (call_expression "FUN_000749ed(param_1,0x8000,0,0x200)" identifier (argument_list "(param_1,0x8000,0,0x200)" ( identifier , number_literal , number_literal , number_literal )))) ;) (if_statement "if (iVar2 == 0) {\n    return 0xffffffff;\n  }" if (parenthesized_expression "(iVar2 == 0)" ( (binary_expression "iVar2 == 0" identifier == number_literal) )) (compound_statement "{\n    return 0xffffffff;\n  }" { (return_statement "return 0xffffffff;" return number_literal ;) })) (if_statement "if (*(int *)(iVar2 + 1) == 0x3052534e) {\n    if (*(char *)(iVar2 + 5) == '2') goto LAB_000743c5;\n    iVar3 = *(int *)(iVar2 + 1);\n  }\n  else {\n    iVar3 = *(int *)(iVar2 + 1);\n  }" if (parenthesized_expression "(*(int *)(iVar2 + 1) == 0x3052534e)" ( (binary_expression "*(int *)(iVar2 + 1) == 0x3052534e" (pointer_expression "*(int *)(iVar2 + 1)" * (cast_expression "(int *)(iVar2 + 1)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 1)" ( (binary_expression "iVar2 + 1" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n    if (*(char *)(iVar2 + 5) == '2') goto LAB_000743c5;\n    iVar3 = *(int *)(iVar2 + 1);\n  }" { (if_statement "if (*(char *)(iVar2 + 5) == '2') goto LAB_000743c5;" if (parenthesized_expression "(*(char *)(iVar2 + 5) == '2')" ( (binary_expression "*(char *)(iVar2 + 5) == '2'" (pointer_expression "*(char *)(iVar2 + 5)" * (cast_expression "(char *)(iVar2 + 5)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 5)" ( (binary_expression "iVar2 + 5" identifier + number_literal) )))) == (char_literal "'2'" ' character ')) )) (goto_statement "goto LAB_000743c5;" goto statement_identifier ;)) (expression_statement "iVar3 = *(int *)(iVar2 + 1);" (assignment_expression "iVar3 = *(int *)(iVar2 + 1)" identifier = (pointer_expression "*(int *)(iVar2 + 1)" * (cast_expression "(int *)(iVar2 + 1)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 1)" ( (binary_expression "iVar2 + 1" identifier + number_literal) ))))) ;) }) (else_clause "else {\n    iVar3 = *(int *)(iVar2 + 1);\n  }" else (compound_statement "{\n    iVar3 = *(int *)(iVar2 + 1);\n  }" { (expression_statement "iVar3 = *(int *)(iVar2 + 1);" (assignment_expression "iVar3 = *(int *)(iVar2 + 1)" identifier = (pointer_expression "*(int *)(iVar2 + 1)" * (cast_expression "(int *)(iVar2 + 1)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 1)" ( (binary_expression "iVar2 + 1" identifier + number_literal) ))))) ;) }))) (if_statement "if (iVar3 == 0x3052534e) {\n    if (*(char *)(iVar2 + 5) == '3') goto LAB_000743c5;\n    iVar3 = *(int *)(iVar2 + 1);\n  }\n  else {\n    iVar3 = *(int *)(iVar2 + 1);\n  }" if (parenthesized_expression "(iVar3 == 0x3052534e)" ( (binary_expression "iVar3 == 0x3052534e" identifier == number_literal) )) (compound_statement "{\n    if (*(char *)(iVar2 + 5) == '3') goto LAB_000743c5;\n    iVar3 = *(int *)(iVar2 + 1);\n  }" { (if_statement "if (*(char *)(iVar2 + 5) == '3') goto LAB_000743c5;" if (parenthesized_expression "(*(char *)(iVar2 + 5) == '3')" ( (binary_expression "*(char *)(iVar2 + 5) == '3'" (pointer_expression "*(char *)(iVar2 + 5)" * (cast_expression "(char *)(iVar2 + 5)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 5)" ( (binary_expression "iVar2 + 5" identifier + number_literal) )))) == (char_literal "'3'" ' character ')) )) (goto_statement "goto LAB_000743c5;" goto statement_identifier ;)) (expression_statement "iVar3 = *(int *)(iVar2 + 1);" (assignment_expression "iVar3 = *(int *)(iVar2 + 1)" identifier = (pointer_expression "*(int *)(iVar2 + 1)" * (cast_expression "(int *)(iVar2 + 1)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 1)" ( (binary_expression "iVar2 + 1" identifier + number_literal) ))))) ;) }) (else_clause "else {\n    iVar3 = *(int *)(iVar2 + 1);\n  }" else (compound_statement "{\n    iVar3 = *(int *)(iVar2 + 1);\n  }" { (expression_statement "iVar3 = *(int *)(iVar2 + 1);" (assignment_expression "iVar3 = *(int *)(iVar2 + 1)" identifier = (pointer_expression "*(int *)(iVar2 + 1)" * (cast_expression "(int *)(iVar2 + 1)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 1)" ( (binary_expression "iVar2 + 1" identifier + number_literal) ))))) ;) }))) (if_statement "if (iVar3 == 0x30414542) {\n    if (*(char *)(iVar2 + 5) == '1') goto LAB_000743c5;\n    iVar3 = *(int *)(iVar2 + 1);\n  }\n  else {\n    iVar3 = *(int *)(iVar2 + 1);\n  }" if (parenthesized_expression "(iVar3 == 0x30414542)" ( (binary_expression "iVar3 == 0x30414542" identifier == number_literal) )) (compound_statement "{\n    if (*(char *)(iVar2 + 5) == '1') goto LAB_000743c5;\n    iVar3 = *(int *)(iVar2 + 1);\n  }" { (if_statement "if (*(char *)(iVar2 + 5) == '1') goto LAB_000743c5;" if (parenthesized_expression "(*(char *)(iVar2 + 5) == '1')" ( (binary_expression "*(char *)(iVar2 + 5) == '1'" (pointer_expression "*(char *)(iVar2 + 5)" * (cast_expression "(char *)(iVar2 + 5)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 5)" ( (binary_expression "iVar2 + 5" identifier + number_literal) )))) == (char_literal "'1'" ' character ')) )) (goto_statement "goto LAB_000743c5;" goto statement_identifier ;)) (expression_statement "iVar3 = *(int *)(iVar2 + 1);" (assignment_expression "iVar3 = *(int *)(iVar2 + 1)" identifier = (pointer_expression "*(int *)(iVar2 + 1)" * (cast_expression "(int *)(iVar2 + 1)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 1)" ( (binary_expression "iVar2 + 1" identifier + number_literal) ))))) ;) }) (else_clause "else {\n    iVar3 = *(int *)(iVar2 + 1);\n  }" else (compound_statement "{\n    iVar3 = *(int *)(iVar2 + 1);\n  }" { (expression_statement "iVar3 = *(int *)(iVar2 + 1);" (assignment_expression "iVar3 = *(int *)(iVar2 + 1)" identifier = (pointer_expression "*(int *)(iVar2 + 1)" * (cast_expression "(int *)(iVar2 + 1)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 1)" ( (binary_expression "iVar2 + 1" identifier + number_literal) ))))) ;) }))) (if_statement "if (iVar3 == 0x544f4f42) {\n    if (*(char *)(iVar2 + 5) == '2') goto LAB_000743c5;\n    if (*(int *)(iVar2 + 1) != 0x30304443) goto LAB_000743a9;\nLAB_000745d1:\n    if (*(char *)(iVar2 + 5) == '1') goto LAB_000743c5;\n    if (*(int *)(iVar2 + 1) == 0x30574443) goto LAB_000745e8;\nLAB_000743b6:\n    iVar3 = *(int *)(iVar2 + 1);\n  }\n  else {\n    if (*(int *)(iVar2 + 1) == 0x30304443) goto LAB_000745d1;\nLAB_000743a9:\n    if (*(int *)(iVar2 + 1) != 0x30574443) goto LAB_000743b6;\nLAB_000745e8:\n    if (*(char *)(iVar2 + 5) == '2') goto LAB_000743c5;\n    iVar3 = *(int *)(iVar2 + 1);\n  }" if (parenthesized_expression "(iVar3 == 0x544f4f42)" ( (binary_expression "iVar3 == 0x544f4f42" identifier == number_literal) )) (compound_statement "{\n    if (*(char *)(iVar2 + 5) == '2') goto LAB_000743c5;\n    if (*(int *)(iVar2 + 1) != 0x30304443) goto LAB_000743a9;\nLAB_000745d1:\n    if (*(char *)(iVar2 + 5) == '1') goto LAB_000743c5;\n    if (*(int *)(iVar2 + 1) == 0x30574443) goto LAB_000745e8;\nLAB_000743b6:\n    iVar3 = *(int *)(iVar2 + 1);\n  }" { (if_statement "if (*(char *)(iVar2 + 5) == '2') goto LAB_000743c5;" if (parenthesized_expression "(*(char *)(iVar2 + 5) == '2')" ( (binary_expression "*(char *)(iVar2 + 5) == '2'" (pointer_expression "*(char *)(iVar2 + 5)" * (cast_expression "(char *)(iVar2 + 5)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 5)" ( (binary_expression "iVar2 + 5" identifier + number_literal) )))) == (char_literal "'2'" ' character ')) )) (goto_statement "goto LAB_000743c5;" goto statement_identifier ;)) (if_statement "if (*(int *)(iVar2 + 1) != 0x30304443) goto LAB_000743a9;" if (parenthesized_expression "(*(int *)(iVar2 + 1) != 0x30304443)" ( (binary_expression "*(int *)(iVar2 + 1) != 0x30304443" (pointer_expression "*(int *)(iVar2 + 1)" * (cast_expression "(int *)(iVar2 + 1)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 1)" ( (binary_expression "iVar2 + 1" identifier + number_literal) )))) != number_literal) )) (goto_statement "goto LAB_000743a9;" goto statement_identifier ;)) (labeled_statement "LAB_000745d1:\n    if (*(char *)(iVar2 + 5) == '1') goto LAB_000743c5;" statement_identifier : (if_statement "if (*(char *)(iVar2 + 5) == '1') goto LAB_000743c5;" if (parenthesized_expression "(*(char *)(iVar2 + 5) == '1')" ( (binary_expression "*(char *)(iVar2 + 5) == '1'" (pointer_expression "*(char *)(iVar2 + 5)" * (cast_expression "(char *)(iVar2 + 5)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 5)" ( (binary_expression "iVar2 + 5" identifier + number_literal) )))) == (char_literal "'1'" ' character ')) )) (goto_statement "goto LAB_000743c5;" goto statement_identifier ;))) (if_statement "if (*(int *)(iVar2 + 1) == 0x30574443) goto LAB_000745e8;" if (parenthesized_expression "(*(int *)(iVar2 + 1) == 0x30574443)" ( (binary_expression "*(int *)(iVar2 + 1) == 0x30574443" (pointer_expression "*(int *)(iVar2 + 1)" * (cast_expression "(int *)(iVar2 + 1)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 1)" ( (binary_expression "iVar2 + 1" identifier + number_literal) )))) == number_literal) )) (goto_statement "goto LAB_000745e8;" goto statement_identifier ;)) (labeled_statement "LAB_000743b6:\n    iVar3 = *(int *)(iVar2 + 1);" statement_identifier : (expression_statement "iVar3 = *(int *)(iVar2 + 1);" (assignment_expression "iVar3 = *(int *)(iVar2 + 1)" identifier = (pointer_expression "*(int *)(iVar2 + 1)" * (cast_expression "(int *)(iVar2 + 1)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 1)" ( (binary_expression "iVar2 + 1" identifier + number_literal) ))))) ;)) }) (else_clause "else {\n    if (*(int *)(iVar2 + 1) == 0x30304443) goto LAB_000745d1;\nLAB_000743a9:\n    if (*(int *)(iVar2 + 1) != 0x30574443) goto LAB_000743b6;\nLAB_000745e8:\n    if (*(char *)(iVar2 + 5) == '2') goto LAB_000743c5;\n    iVar3 = *(int *)(iVar2 + 1);\n  }" else (compound_statement "{\n    if (*(int *)(iVar2 + 1) == 0x30304443) goto LAB_000745d1;\nLAB_000743a9:\n    if (*(int *)(iVar2 + 1) != 0x30574443) goto LAB_000743b6;\nLAB_000745e8:\n    if (*(char *)(iVar2 + 5) == '2') goto LAB_000743c5;\n    iVar3 = *(int *)(iVar2 + 1);\n  }" { (if_statement "if (*(int *)(iVar2 + 1) == 0x30304443) goto LAB_000745d1;" if (parenthesized_expression "(*(int *)(iVar2 + 1) == 0x30304443)" ( (binary_expression "*(int *)(iVar2 + 1) == 0x30304443" (pointer_expression "*(int *)(iVar2 + 1)" * (cast_expression "(int *)(iVar2 + 1)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 1)" ( (binary_expression "iVar2 + 1" identifier + number_literal) )))) == number_literal) )) (goto_statement "goto LAB_000745d1;" goto statement_identifier ;)) (labeled_statement "LAB_000743a9:\n    if (*(int *)(iVar2 + 1) != 0x30574443) goto LAB_000743b6;" statement_identifier : (if_statement "if (*(int *)(iVar2 + 1) != 0x30574443) goto LAB_000743b6;" if (parenthesized_expression "(*(int *)(iVar2 + 1) != 0x30574443)" ( (binary_expression "*(int *)(iVar2 + 1) != 0x30574443" (pointer_expression "*(int *)(iVar2 + 1)" * (cast_expression "(int *)(iVar2 + 1)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 1)" ( (binary_expression "iVar2 + 1" identifier + number_literal) )))) != number_literal) )) (goto_statement "goto LAB_000743b6;" goto statement_identifier ;))) (labeled_statement "LAB_000745e8:\n    if (*(char *)(iVar2 + 5) == '2') goto LAB_000743c5;" statement_identifier : (if_statement "if (*(char *)(iVar2 + 5) == '2') goto LAB_000743c5;" if (parenthesized_expression "(*(char *)(iVar2 + 5) == '2')" ( (binary_expression "*(char *)(iVar2 + 5) == '2'" (pointer_expression "*(char *)(iVar2 + 5)" * (cast_expression "(char *)(iVar2 + 5)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 5)" ( (binary_expression "iVar2 + 5" identifier + number_literal) )))) == (char_literal "'2'" ' character ')) )) (goto_statement "goto LAB_000743c5;" goto statement_identifier ;))) (expression_statement "iVar3 = *(int *)(iVar2 + 1);" (assignment_expression "iVar3 = *(int *)(iVar2 + 1)" identifier = (pointer_expression "*(int *)(iVar2 + 1)" * (cast_expression "(int *)(iVar2 + 1)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 1)" ( (binary_expression "iVar2 + 1" identifier + number_literal) ))))) ;) }))) (if_statement "if (iVar3 != 0x30414554) {\n    return 0xffffffff;\n  }" if (parenthesized_expression "(iVar3 != 0x30414554)" ( (binary_expression "iVar3 != 0x30414554" identifier != number_literal) )) (compound_statement "{\n    return 0xffffffff;\n  }" { (return_statement "return 0xffffffff;" return number_literal ;) })) (if_statement "if (*(char *)(iVar2 + 5) != '3') {\n    return 0xffffffff;\n  }" if (parenthesized_expression "(*(char *)(iVar2 + 5) != '3')" ( (binary_expression "*(char *)(iVar2 + 5) != '3'" (pointer_expression "*(char *)(iVar2 + 5)" * (cast_expression "(char *)(iVar2 + 5)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 5)" ( (binary_expression "iVar2 + 5" identifier + number_literal) )))) != (char_literal "'3'" ' character ')) )) (compound_statement "{\n    return 0xffffffff;\n  }" { (return_statement "return 0xffffffff;" return number_literal ;) })) (labeled_statement "LAB_000743c5:\n  uVar5 = 0x8800;" statement_identifier : (expression_statement "uVar5 = 0x8800;" (assignment_expression "uVar5 = 0x8800" identifier = number_literal) ;)) (expression_statement "iVar2 = 0;" (assignment_expression "iVar2 = 0" identifier = number_literal) ;) (while_statement "while( true ) {\n    uVar1 = uVar5 - 0x8000;\n    iVar3 = FUN_000749ed(param_1,uVar5,iVar2,0x800);\n    if (iVar3 == 0) {\n      return 0xffffffff;\n    }\n    if (*(char *)(iVar3 + 1) != '\0') break;\n    bVar7 = 0xfffff7ff < uVar5;\n    uVar5 = uVar5 + 0x800;\n    iVar2 = iVar2 + (uint)bVar7;\n    if (iVar2 == 0 && uVar5 == 0x10000) {\n      return 0xffffffff;\n    }\n  }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n    uVar1 = uVar5 - 0x8000;\n    iVar3 = FUN_000749ed(param_1,uVar5,iVar2,0x800);\n    if (iVar3 == 0) {\n      return 0xffffffff;\n    }\n    if (*(char *)(iVar3 + 1) != '\0') break;\n    bVar7 = 0xfffff7ff < uVar5;\n    uVar5 = uVar5 + 0x800;\n    iVar2 = iVar2 + (uint)bVar7;\n    if (iVar2 == 0 && uVar5 == 0x10000) {\n      return 0xffffffff;\n    }\n  }" { (expression_statement "uVar1 = uVar5 - 0x8000;" (assignment_expression "uVar1 = uVar5 - 0x8000" identifier = (binary_expression "uVar5 - 0x8000" identifier - number_literal)) ;) (expression_statement "iVar3 = FUN_000749ed(param_1,uVar5,iVar2,0x800);" (assignment_expression "iVar3 = FUN_000749ed(param_1,uVar5,iVar2,0x800)" identifier = (call_expression "FUN_000749ed(param_1,uVar5,iVar2,0x800)" identifier (argument_list "(param_1,uVar5,iVar2,0x800)" ( identifier , identifier , identifier , number_literal )))) ;) (if_statement "if (iVar3 == 0) {\n      return 0xffffffff;\n    }" if (parenthesized_expression "(iVar3 == 0)" ( (binary_expression "iVar3 == 0" identifier == number_literal) )) (compound_statement "{\n      return 0xffffffff;\n    }" { (return_statement "return 0xffffffff;" return number_literal ;) })) (if_statement "if (*(char *)(iVar3 + 1) != '\0') break;" if (parenthesized_expression "(*(char *)(iVar3 + 1) != '\0')" ( (binary_expression "*(char *)(iVar3 + 1) != '\0'" (pointer_expression "*(char *)(iVar3 + 1)" * (cast_expression "(char *)(iVar3 + 1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 1)" ( (binary_expression "iVar3 + 1" identifier + number_literal) )))) != (char_literal "'\0'" ' escape_sequence ')) )) (break_statement "break;" break ;)) (expression_statement "bVar7 = 0xfffff7ff < uVar5;" (assignment_expression "bVar7 = 0xfffff7ff < uVar5" identifier = (binary_expression "0xfffff7ff < uVar5" number_literal < identifier)) ;) (expression_statement "uVar5 = uVar5 + 0x800;" (assignment_expression "uVar5 = uVar5 + 0x800" identifier = (binary_expression "uVar5 + 0x800" identifier + number_literal)) ;) (expression_statement "iVar2 = iVar2 + (uint)bVar7;" (assignment_expression "iVar2 = iVar2 + (uint)bVar7" identifier = (binary_expression "iVar2 + (uint)bVar7" identifier + (cast_expression "(uint)bVar7" ( (type_descriptor "uint" type_identifier) ) identifier))) ;) (if_statement "if (iVar2 == 0 && uVar5 == 0x10000) {\n      return 0xffffffff;\n    }" if (parenthesized_expression "(iVar2 == 0 && uVar5 == 0x10000)" ( (binary_expression "iVar2 == 0 && uVar5 == 0x10000" (binary_expression "iVar2 == 0" identifier == number_literal) && (binary_expression "uVar5 == 0x10000" identifier == number_literal)) )) (compound_statement "{\n      return 0xffffffff;\n    }" { (return_statement "return 0xffffffff;" return number_literal ;) })) })) (expression_statement "uVar5 = 0;" (assignment_expression "uVar5 = 0" identifier = number_literal) ;) (expression_statement "iVar2 = 0x40;" (assignment_expression "iVar2 = 0x40" identifier = number_literal) ;) (while_statement "while( true ) {\n    iVar3 = FUN_000749ed(param_1,uVar5 + 0x8000,0xffff7fff < uVar5,0x800);\n    if (iVar3 == 0) {\n      return 0xffffffff;\n    }\n    if (*(char *)(iVar3 + 1) == '\0') {\n      return 0xffffffff;\n    }\n    if (((*(int *)(iVar3 + 1) == 0x3052534e) && (*(char *)(iVar3 + 5) == '2')) ||\n       ((*(int *)(iVar3 + 1) == 0x3052534e && (*(char *)(iVar3 + 5) == '3')))) break;\n    iVar2 = iVar2 + -1;\n    uVar5 = uVar5 + uVar1;\n    if (iVar2 == 0) {\n      return 0xffffffff;\n    }\n  }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n    iVar3 = FUN_000749ed(param_1,uVar5 + 0x8000,0xffff7fff < uVar5,0x800);\n    if (iVar3 == 0) {\n      return 0xffffffff;\n    }\n    if (*(char *)(iVar3 + 1) == '\0') {\n      return 0xffffffff;\n    }\n    if (((*(int *)(iVar3 + 1) == 0x3052534e) && (*(char *)(iVar3 + 5) == '2')) ||\n       ((*(int *)(iVar3 + 1) == 0x3052534e && (*(char *)(iVar3 + 5) == '3')))) break;\n    iVar2 = iVar2 + -1;\n    uVar5 = uVar5 + uVar1;\n    if (iVar2 == 0) {\n      return 0xffffffff;\n    }\n  }" { (expression_statement "iVar3 = FUN_000749ed(param_1,uVar5 + 0x8000,0xffff7fff < uVar5,0x800);" (assignment_expression "iVar3 = FUN_000749ed(param_1,uVar5 + 0x8000,0xffff7fff < uVar5,0x800)" identifier = (call_expression "FUN_000749ed(param_1,uVar5 + 0x8000,0xffff7fff < uVar5,0x800)" identifier (argument_list "(param_1,uVar5 + 0x8000,0xffff7fff < uVar5,0x800)" ( identifier , (binary_expression "uVar5 + 0x8000" identifier + number_literal) , (binary_expression "0xffff7fff < uVar5" number_literal < identifier) , number_literal )))) ;) (if_statement "if (iVar3 == 0) {\n      return 0xffffffff;\n    }" if (parenthesized_expression "(iVar3 == 0)" ( (binary_expression "iVar3 == 0" identifier == number_literal) )) (compound_statement "{\n      return 0xffffffff;\n    }" { (return_statement "return 0xffffffff;" return number_literal ;) })) (if_statement "if (*(char *)(iVar3 + 1) == '\0') {\n      return 0xffffffff;\n    }" if (parenthesized_expression "(*(char *)(iVar3 + 1) == '\0')" ( (binary_expression "*(char *)(iVar3 + 1) == '\0'" (pointer_expression "*(char *)(iVar3 + 1)" * (cast_expression "(char *)(iVar3 + 1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 1)" ( (binary_expression "iVar3 + 1" identifier + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      return 0xffffffff;\n    }" { (return_statement "return 0xffffffff;" return number_literal ;) })) (if_statement "if (((*(int *)(iVar3 + 1) == 0x3052534e) && (*(char *)(iVar3 + 5) == '2')) ||\n       ((*(int *)(iVar3 + 1) == 0x3052534e && (*(char *)(iVar3 + 5) == '3')))) break;" if (parenthesized_expression "(((*(int *)(iVar3 + 1) == 0x3052534e) && (*(char *)(iVar3 + 5) == '2')) ||\n       ((*(int *)(iVar3 + 1) == 0x3052534e && (*(char *)(iVar3 + 5) == '3'))))" ( (binary_expression "((*(int *)(iVar3 + 1) == 0x3052534e) && (*(char *)(iVar3 + 5) == '2')) ||\n       ((*(int *)(iVar3 + 1) == 0x3052534e && (*(char *)(iVar3 + 5) == '3')))" (parenthesized_expression "((*(int *)(iVar3 + 1) == 0x3052534e) && (*(char *)(iVar3 + 5) == '2'))" ( (binary_expression "(*(int *)(iVar3 + 1) == 0x3052534e) && (*(char *)(iVar3 + 5) == '2')" (parenthesized_expression "(*(int *)(iVar3 + 1) == 0x3052534e)" ( (binary_expression "*(int *)(iVar3 + 1) == 0x3052534e" (pointer_expression "*(int *)(iVar3 + 1)" * (cast_expression "(int *)(iVar3 + 1)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 1)" ( (binary_expression "iVar3 + 1" identifier + number_literal) )))) == number_literal) )) && (parenthesized_expression "(*(char *)(iVar3 + 5) == '2')" ( (binary_expression "*(char *)(iVar3 + 5) == '2'" (pointer_expression "*(char *)(iVar3 + 5)" * (cast_expression "(char *)(iVar3 + 5)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 5)" ( (binary_expression "iVar3 + 5" identifier + number_literal) )))) == (char_literal "'2'" ' character ')) ))) )) || (parenthesized_expression "((*(int *)(iVar3 + 1) == 0x3052534e && (*(char *)(iVar3 + 5) == '3')))" ( (parenthesized_expression "(*(int *)(iVar3 + 1) == 0x3052534e && (*(char *)(iVar3 + 5) == '3'))" ( (binary_expression "*(int *)(iVar3 + 1) == 0x3052534e && (*(char *)(iVar3 + 5) == '3')" (binary_expression "*(int *)(iVar3 + 1) == 0x3052534e" (pointer_expression "*(int *)(iVar3 + 1)" * (cast_expression "(int *)(iVar3 + 1)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 1)" ( (binary_expression "iVar3 + 1" identifier + number_literal) )))) == number_literal) && (parenthesized_expression "(*(char *)(iVar3 + 5) == '3')" ( (binary_expression "*(char *)(iVar3 + 5) == '3'" (pointer_expression "*(char *)(iVar3 + 5)" * (cast_expression "(char *)(iVar3 + 5)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 5)" ( (binary_expression "iVar3 + 5" identifier + number_literal) )))) == (char_literal "'3'" ' character ')) ))) )) ))) )) (break_statement "break;" break ;)) (expression_statement "iVar2 = iVar2 + -1;" (assignment_expression "iVar2 = iVar2 + -1" identifier = (binary_expression "iVar2 + -1" identifier + number_literal)) ;) (expression_statement "uVar5 = uVar5 + uVar1;" (assignment_expression "uVar5 = uVar5 + uVar1" identifier = (binary_expression "uVar5 + uVar1" identifier + identifier)) ;) (if_statement "if (iVar2 == 0) {\n      return 0xffffffff;\n    }" if (parenthesized_expression "(iVar2 == 0)" ( (binary_expression "iVar2 == 0" identifier == number_literal) )) (compound_statement "{\n      return 0xffffffff;\n    }" { (return_statement "return 0xffffffff;" return number_literal ;) })) })) (expression_statement "psVar4 = (short *)FUN_000749ed(param_1,uVar1 * 0x100,0,0x200);" (assignment_expression "psVar4 = (short *)FUN_000749ed(param_1,uVar1 * 0x100,0,0x200)" identifier = (cast_expression "(short *)FUN_000749ed(param_1,uVar1 * 0x100,0,0x200)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_000749ed(param_1,uVar1 * 0x100,0,0x200)" identifier (argument_list "(param_1,uVar1 * 0x100,0,0x200)" ( identifier , (binary_expression "uVar1 * 0x100" identifier * number_literal) , number_literal , number_literal ))))) ;) (if_statement "if (psVar4 == (short *)0x0) {\n    return 0xffffffff;\n  }" if (parenthesized_expression "(psVar4 == (short *)0x0)" ( (binary_expression "psVar4 == (short *)0x0" identifier == (cast_expression "(short *)0x0" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    return 0xffffffff;\n  }" { (return_statement "return 0xffffffff;" return number_literal ;) })) (if_statement "if (*psVar4 != 2) {\n    return 0;\n  }" if (parenthesized_expression "(*psVar4 != 2)" ( (binary_expression "*psVar4 != 2" (pointer_expression "*psVar4" * identifier) != number_literal) )) (compound_statement "{\n    return 0;\n  }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "uVar5 = *(uint *)(psVar4 + 8);" (assignment_expression "uVar5 = *(uint *)(psVar4 + 8)" identifier = (pointer_expression "*(uint *)(psVar4 + 8)" * (cast_expression "(uint *)(psVar4 + 8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(psVar4 + 8)" ( (binary_expression "psVar4 + 8" identifier + number_literal) ))))) ;) (if_statement "if (uVar5 < uVar1) {\n    return 0;\n  }" if (parenthesized_expression "(uVar5 < uVar1)" ( (binary_expression "uVar5 < uVar1" identifier < identifier) )) (compound_statement "{\n    return 0;\n  }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "iVar2 = *(int *)(psVar4 + 10);" (assignment_expression "iVar2 = *(int *)(psVar4 + 10)" identifier = (pointer_expression "*(int *)(psVar4 + 10)" * (cast_expression "(int *)(psVar4 + 10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(psVar4 + 10)" ( (binary_expression "psVar4 + 10" identifier + number_literal) ))))) ;) (expression_statement "local_2c = iVar2 * uVar1;" (assignment_expression "local_2c = iVar2 * uVar1" identifier = (binary_expression "iVar2 * uVar1" identifier * identifier)) ;) (expression_statement "uVar6 = 0;" (assignment_expression "uVar6 = 0" identifier = number_literal) ;) (while_statement "while( true ) {\n    psVar4 = (short *)FUN_000749ed(param_1,local_2c,0,0x200);\n    if (psVar4 == (short *)0x0) {\n      return 0xffffffff;\n    }\n    if (*psVar4 == 0) {\n      return 0;\n    }\n    if (*(int *)(psVar4 + 6) != uVar6 + iVar2) {\n      return 0;\n    }\n    if (*psVar4 == 1) break;\n    uVar6 = uVar6 + 1;\n    local_2c = local_2c + uVar1;\n    if (uVar5 / uVar1 <= uVar6) {\n      return 0;\n    }\n  }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n    psVar4 = (short *)FUN_000749ed(param_1,local_2c,0,0x200);\n    if (psVar4 == (short *)0x0) {\n      return 0xffffffff;\n    }\n    if (*psVar4 == 0) {\n      return 0;\n    }\n    if (*(int *)(psVar4 + 6) != uVar6 + iVar2) {\n      return 0;\n    }\n    if (*psVar4 == 1) break;\n    uVar6 = uVar6 + 1;\n    local_2c = local_2c + uVar1;\n    if (uVar5 / uVar1 <= uVar6) {\n      return 0;\n    }\n  }" { (expression_statement "psVar4 = (short *)FUN_000749ed(param_1,local_2c,0,0x200);" (assignment_expression "psVar4 = (short *)FUN_000749ed(param_1,local_2c,0,0x200)" identifier = (cast_expression "(short *)FUN_000749ed(param_1,local_2c,0,0x200)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_000749ed(param_1,local_2c,0,0x200)" identifier (argument_list "(param_1,local_2c,0,0x200)" ( identifier , identifier , number_literal , number_literal ))))) ;) (if_statement "if (psVar4 == (short *)0x0) {\n      return 0xffffffff;\n    }" if (parenthesized_expression "(psVar4 == (short *)0x0)" ( (binary_expression "psVar4 == (short *)0x0" identifier == (cast_expression "(short *)0x0" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      return 0xffffffff;\n    }" { (return_statement "return 0xffffffff;" return number_literal ;) })) (if_statement "if (*psVar4 == 0) {\n      return 0;\n    }" if (parenthesized_expression "(*psVar4 == 0)" ( (binary_expression "*psVar4 == 0" (pointer_expression "*psVar4" * identifier) == number_literal) )) (compound_statement "{\n      return 0;\n    }" { (return_statement "return 0;" return number_literal ;) })) (if_statement "if (*(int *)(psVar4 + 6) != uVar6 + iVar2) {\n      return 0;\n    }" if (parenthesized_expression "(*(int *)(psVar4 + 6) != uVar6 + iVar2)" ( (binary_expression "*(int *)(psVar4 + 6) != uVar6 + iVar2" (pointer_expression "*(int *)(psVar4 + 6)" * (cast_expression "(int *)(psVar4 + 6)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(psVar4 + 6)" ( (binary_expression "psVar4 + 6" identifier + number_literal) )))) != (binary_expression "uVar6 + iVar2" identifier + identifier)) )) (compound_statement "{\n      return 0;\n    }" { (return_statement "return 0;" return number_literal ;) })) (if_statement "if (*psVar4 == 1) break;" if (parenthesized_expression "(*psVar4 == 1)" ( (binary_expression "*psVar4 == 1" (pointer_expression "*psVar4" * identifier) == number_literal) )) (break_statement "break;" break ;)) (expression_statement "uVar6 = uVar6 + 1;" (assignment_expression "uVar6 = uVar6 + 1" identifier = (binary_expression "uVar6 + 1" identifier + number_literal)) ;) (expression_statement "local_2c = local_2c + uVar1;" (assignment_expression "local_2c = local_2c + uVar1" identifier = (binary_expression "local_2c + uVar1" identifier + identifier)) ;) (if_statement "if (uVar5 / uVar1 <= uVar6) {\n      return 0;\n    }" if (parenthesized_expression "(uVar5 / uVar1 <= uVar6)" ( (binary_expression "uVar5 / uVar1 <= uVar6" (binary_expression "uVar5 / uVar1" identifier / identifier) <= identifier) )) (compound_statement "{\n      return 0;\n    }" { (return_statement "return 0;" return number_literal ;) })) })) (if_statement "if ((char)psVar4[0xc] == '\b') {\n    FUN_000747a0(param_1,(int)psVar4 + 0x19,0x1f,8);\n    return 0;\n  }" if (parenthesized_expression "((char)psVar4[0xc] == '\b')" ( (binary_expression "(char)psVar4[0xc] == '\b'" (cast_expression "(char)psVar4[0xc]" ( (type_descriptor "char" primitive_type) ) (subscript_expression "psVar4[0xc]" identifier [ number_literal ])) == (char_literal "'\b'" ' escape_sequence ')) )) (compound_statement "{\n    FUN_000747a0(param_1,(int)psVar4 + 0x19,0x1f,8);\n    return 0;\n  }" { (expression_statement "FUN_000747a0(param_1,(int)psVar4 + 0x19,0x1f,8);" (call_expression "FUN_000747a0(param_1,(int)psVar4 + 0x19,0x1f,8)" identifier (argument_list "(param_1,(int)psVar4 + 0x19,0x1f,8)" ( identifier , (binary_expression "(int)psVar4 + 0x19" (cast_expression "(int)psVar4" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) , number_literal , number_literal ))) ;) (return_statement "return 0;" return number_literal ;) })) (if_statement "if ((char)psVar4[0xc] != '\x10') {\n    return 0;\n  }" if (parenthesized_expression "((char)psVar4[0xc] != '\x10')" ( (binary_expression "(char)psVar4[0xc] != '\x10'" (cast_expression "(char)psVar4[0xc]" ( (type_descriptor "char" primitive_type) ) (subscript_expression "psVar4[0xc]" identifier [ number_literal ])) != (char_literal "'\x10'" ' escape_sequence ')) )) (compound_statement "{\n    return 0;\n  }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "FUN_00074819(param_1,(int)psVar4 + 0x19,1,0x1f);" (call_expression "FUN_00074819(param_1,(int)psVar4 + 0x19,1,0x1f)" identifier (argument_list "(param_1,(int)psVar4 + 0x19,1,0x1f)" ( identifier , (binary_expression "(int)psVar4 + 0x19" (cast_expression "(int)psVar4" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) , number_literal , number_literal ))) ;) (return_statement "return 0;" return number_literal ;) })))
(translation_unit (function_definition TYPE (ERROR IDENT) (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration (sized_type_specifier short) (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , LIT , LIT , LIT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (return_statement return LIT ;) })) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == (char_literal ' character ')) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) }))) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == (char_literal ' character ')) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) }))) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == (char_literal ' character ')) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) }))) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == (char_literal ' character ')) )) (goto_statement goto statement_identifier ;)) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != LIT) )) (goto_statement goto statement_identifier ;)) (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 IDENT + LIT) )))) == (char_literal ' character ')) )) (goto_statement goto statement_identifier ;))) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == LIT) )) (goto_statement goto statement_identifier ;)) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;)) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == LIT) )) (goto_statement goto statement_identifier ;)) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != LIT) )) (goto_statement goto statement_identifier ;))) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == (char_literal ' character ')) )) (goto_statement goto statement_identifier ;))) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) }))) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (return_statement return LIT ;) })) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != (char_literal ' character ')) )) (compound_statement { (return_statement return LIT ;) })) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = LIT) ;)) (expression_statement (assignment_expression IDENT = LIT) ;) (while_statement while (parenthesized_expression ( BOOL )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT - LIT)) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT , LIT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (return_statement return LIT ;) })) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != (char_literal ' escape_sequence ')) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (binary_expression LIT < IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT == LIT) && (binary_expression IDENT == LIT)) )) (compound_statement { (return_statement return LIT ;) })) })) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (while_statement while (parenthesized_expression ( BOOL )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , (binary_expression IDENT + LIT) , (binary_expression LIT < IDENT) , LIT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (return_statement return LIT ;) })) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == (char_literal ' escape_sequence ')) )) (compound_statement { (return_statement return LIT ;) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == LIT) )) && (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == (char_literal ' character ')) ))) )) || (parenthesized_expression ( (parenthesized_expression ( (binary_expression (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == LIT) && (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == (char_literal ' character ')) ))) )) ))) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (return_statement return LIT ;) })) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor (sized_type_specifier short) (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( IDENT , (binary_expression IDENT * LIT) , LIT , LIT ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor (sized_type_specifier short) (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (return_statement return LIT ;) })) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) != LIT) )) (compound_statement { (return_statement return LIT ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (return_statement return LIT ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT * IDENT)) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (while_statement while (parenthesized_expression ( BOOL )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor (sized_type_specifier short) (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( IDENT , IDENT , LIT , LIT ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor (sized_type_specifier short) (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (return_statement return LIT ;) })) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) == LIT) )) (compound_statement { (return_statement return LIT ;) })) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != (binary_expression IDENT + IDENT)) )) (compound_statement { (return_statement return LIT ;) })) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) == LIT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT / IDENT) <= IDENT) )) (compound_statement { (return_statement return LIT ;) })) })) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ])) == (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT , (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) , LIT , LIT ))) ;) (return_statement return LIT ;) })) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ])) != (char_literal ' escape_sequence ')) )) (compound_statement { (return_statement return LIT ;) })) (expression_statement (call_expression IDENT (argument_list ( IDENT , (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) , LIT , LIT ))) ;) (return_statement return LIT ;) })))
(function_definition "undefined4 __regparm3 FUN_00074336(undefined4 param_1)\n\n{\n  uint uVar1;\n  int iVar2;\n  int iVar3;\n  short *psVar4;\n  uint uVar5;\n  uint uVar6;\n  bool bVar7;\n  int local_2c;\n  \n  iVar2 = FUN_000749ed(param_1,0x8000,0,0x200);\n  if (iVar2 == 0) {\n    return 0xffffffff;\n  }\n  if (*(int *)(iVar2 + 1) == 0x3052534e) {\n    if (*(char *)(iVar2 + 5) == '2') goto LAB_000743c5;\n    iVar3 = *(int *)(iVar2 + 1);\n  }\n  else {\n    iVar3 = *(int *)(iVar2 + 1);\n  }\n  if (iVar3 == 0x3052534e) {\n    if (*(char *)(iVar2 + 5) == '3') goto LAB_000743c5;\n    iVar3 = *(int *)(iVar2 + 1);\n  }\n  else {\n    iVar3 = *(int *)(iVar2 + 1);\n  }\n  if (iVar3 == 0x30414542) {\n    if (*(char *)(iVar2 + 5) == '1') goto LAB_000743c5;\n    iVar3 = *(int *)(iVar2 + 1);\n  }\n  else {\n    iVar3 = *(int *)(iVar2 + 1);\n  }\n  if (iVar3 == 0x544f4f42) {\n    if (*(char *)(iVar2 + 5) == '2') goto LAB_000743c5;\n    if (*(int *)(iVar2 + 1) != 0x30304443) goto LAB_000743a9;\nLAB_000745d1:\n    if (*(char *)(iVar2 + 5) == '1') goto LAB_000743c5;\n    if (*(int *)(iVar2 + 1) == 0x30574443) goto LAB_000745e8;\nLAB_000743b6:\n    iVar3 = *(int *)(iVar2 + 1);\n  }\n  else {\n    if (*(int *)(iVar2 + 1) == 0x30304443) goto LAB_000745d1;\nLAB_000743a9:\n    if (*(int *)(iVar2 + 1) != 0x30574443) goto LAB_000743b6;\nLAB_000745e8:\n    if (*(char *)(iVar2 + 5) == '2') goto LAB_000743c5;\n    iVar3 = *(int *)(iVar2 + 1);\n  }\n  if (iVar3 != 0x30414554) {\n    return 0xffffffff;\n  }\n  if (*(char *)(iVar2 + 5) != '3') {\n    return 0xffffffff;\n  }\nLAB_000743c5:\n  uVar5 = 0x8800;\n  iVar2 = 0;\n  while( true ) {\n    uVar1 = uVar5 - 0x8000;\n    iVar3 = FUN_000749ed(param_1,uVar5,iVar2,0x800);\n    if (iVar3 == 0) {\n      return 0xffffffff;\n    }\n    if (*(char *)(iVar3 + 1) != '\0') break;\n    bVar7 = 0xfffff7ff < uVar5;\n    uVar5 = uVar5 + 0x800;\n    iVar2 = iVar2 + (uint)bVar7;\n    if (iVar2 == 0 && uVar5 == 0x10000) {\n      return 0xffffffff;\n    }\n  }\n  uVar5 = 0;\n  iVar2 = 0x40;\n  while( true ) {\n    iVar3 = FUN_000749ed(param_1,uVar5 + 0x8000,0xffff7fff < uVar5,0x800);\n    if (iVar3 == 0) {\n      return 0xffffffff;\n    }\n    if (*(char *)(iVar3 + 1) == '\0') {\n      return 0xffffffff;\n    }\n    if (((*(int *)(iVar3 + 1) == 0x3052534e) && (*(char *)(iVar3 + 5) == '2')) ||\n       ((*(int *)(iVar3 + 1) == 0x3052534e && (*(char *)(iVar3 + 5) == '3')))) break;\n    iVar2 = iVar2 + -1;\n    uVar5 = uVar5 + uVar1;\n    if (iVar2 == 0) {\n      return 0xffffffff;\n    }\n  }\n  psVar4 = (short *)FUN_000749ed(param_1,uVar1 * 0x100,0,0x200);\n  if (psVar4 == (short *)0x0) {\n    return 0xffffffff;\n  }\n  if (*psVar4 != 2) {\n    return 0;\n  }\n  uVar5 = *(uint *)(psVar4 + 8);\n  if (uVar5 < uVar1) {\n    return 0;\n  }\n  iVar2 = *(int *)(psVar4 + 10);\n  local_2c = iVar2 * uVar1;\n  uVar6 = 0;\n  while( true ) {\n    psVar4 = (short *)FUN_000749ed(param_1,local_2c,0,0x200);\n    if (psVar4 == (short *)0x0) {\n      return 0xffffffff;\n    }\n    if (*psVar4 == 0) {\n      return 0;\n    }\n    if (*(int *)(psVar4 + 6) != uVar6 + iVar2) {\n      return 0;\n    }\n    if (*psVar4 == 1) break;\n    uVar6 = uVar6 + 1;\n    local_2c = local_2c + uVar1;\n    if (uVar5 / uVar1 <= uVar6) {\n      return 0;\n    }\n  }\n  if ((char)psVar4[0xc] == '\b') {\n    FUN_000747a0(param_1,(int)psVar4 + 0x19,0x1f,8);\n    return 0;\n  }\n  if ((char)psVar4[0xc] != '\x10') {\n    return 0;\n  }\n  FUN_00074819(param_1,(int)psVar4 + 0x19,1,0x1f);\n  return 0;\n}" (type_identifier "undefined4") (ERROR "__regparm3" (identifier "__regparm3")) (function_declarator "FUN_00074336(undefined4 param_1)" (identifier "FUN_00074336") (parameter_list "(undefined4 param_1)" (( "(") (parameter_declaration "undefined4 param_1" (type_identifier "undefined4") (identifier "param_1")) () ")"))) (compound_statement "{\n  uint uVar1;\n  int iVar2;\n  int iVar3;\n  short *psVar4;\n  uint uVar5;\n  uint uVar6;\n  bool bVar7;\n  int local_2c;\n  \n  iVar2 = FUN_000749ed(param_1,0x8000,0,0x200);\n  if (iVar2 == 0) {\n    return 0xffffffff;\n  }\n  if (*(int *)(iVar2 + 1) == 0x3052534e) {\n    if (*(char *)(iVar2 + 5) == '2') goto LAB_000743c5;\n    iVar3 = *(int *)(iVar2 + 1);\n  }\n  else {\n    iVar3 = *(int *)(iVar2 + 1);\n  }\n  if (iVar3 == 0x3052534e) {\n    if (*(char *)(iVar2 + 5) == '3') goto LAB_000743c5;\n    iVar3 = *(int *)(iVar2 + 1);\n  }\n  else {\n    iVar3 = *(int *)(iVar2 + 1);\n  }\n  if (iVar3 == 0x30414542) {\n    if (*(char *)(iVar2 + 5) == '1') goto LAB_000743c5;\n    iVar3 = *(int *)(iVar2 + 1);\n  }\n  else {\n    iVar3 = *(int *)(iVar2 + 1);\n  }\n  if (iVar3 == 0x544f4f42) {\n    if (*(char *)(iVar2 + 5) == '2') goto LAB_000743c5;\n    if (*(int *)(iVar2 + 1) != 0x30304443) goto LAB_000743a9;\nLAB_000745d1:\n    if (*(char *)(iVar2 + 5) == '1') goto LAB_000743c5;\n    if (*(int *)(iVar2 + 1) == 0x30574443) goto LAB_000745e8;\nLAB_000743b6:\n    iVar3 = *(int *)(iVar2 + 1);\n  }\n  else {\n    if (*(int *)(iVar2 + 1) == 0x30304443) goto LAB_000745d1;\nLAB_000743a9:\n    if (*(int *)(iVar2 + 1) != 0x30574443) goto LAB_000743b6;\nLAB_000745e8:\n    if (*(char *)(iVar2 + 5) == '2') goto LAB_000743c5;\n    iVar3 = *(int *)(iVar2 + 1);\n  }\n  if (iVar3 != 0x30414554) {\n    return 0xffffffff;\n  }\n  if (*(char *)(iVar2 + 5) != '3') {\n    return 0xffffffff;\n  }\nLAB_000743c5:\n  uVar5 = 0x8800;\n  iVar2 = 0;\n  while( true ) {\n    uVar1 = uVar5 - 0x8000;\n    iVar3 = FUN_000749ed(param_1,uVar5,iVar2,0x800);\n    if (iVar3 == 0) {\n      return 0xffffffff;\n    }\n    if (*(char *)(iVar3 + 1) != '\0') break;\n    bVar7 = 0xfffff7ff < uVar5;\n    uVar5 = uVar5 + 0x800;\n    iVar2 = iVar2 + (uint)bVar7;\n    if (iVar2 == 0 && uVar5 == 0x10000) {\n      return 0xffffffff;\n    }\n  }\n  uVar5 = 0;\n  iVar2 = 0x40;\n  while( true ) {\n    iVar3 = FUN_000749ed(param_1,uVar5 + 0x8000,0xffff7fff < uVar5,0x800);\n    if (iVar3 == 0) {\n      return 0xffffffff;\n    }\n    if (*(char *)(iVar3 + 1) == '\0') {\n      return 0xffffffff;\n    }\n    if (((*(int *)(iVar3 + 1) == 0x3052534e) && (*(char *)(iVar3 + 5) == '2')) ||\n       ((*(int *)(iVar3 + 1) == 0x3052534e && (*(char *)(iVar3 + 5) == '3')))) break;\n    iVar2 = iVar2 + -1;\n    uVar5 = uVar5 + uVar1;\n    if (iVar2 == 0) {\n      return 0xffffffff;\n    }\n  }\n  psVar4 = (short *)FUN_000749ed(param_1,uVar1 * 0x100,0,0x200);\n  if (psVar4 == (short *)0x0) {\n    return 0xffffffff;\n  }\n  if (*psVar4 != 2) {\n    return 0;\n  }\n  uVar5 = *(uint *)(psVar4 + 8);\n  if (uVar5 < uVar1) {\n    return 0;\n  }\n  iVar2 = *(int *)(psVar4 + 10);\n  local_2c = iVar2 * uVar1;\n  uVar6 = 0;\n  while( true ) {\n    psVar4 = (short *)FUN_000749ed(param_1,local_2c,0,0x200);\n    if (psVar4 == (short *)0x0) {\n      return 0xffffffff;\n    }\n    if (*psVar4 == 0) {\n      return 0;\n    }\n    if (*(int *)(psVar4 + 6) != uVar6 + iVar2) {\n      return 0;\n    }\n    if (*psVar4 == 1) break;\n    uVar6 = uVar6 + 1;\n    local_2c = local_2c + uVar1;\n    if (uVar5 / uVar1 <= uVar6) {\n      return 0;\n    }\n  }\n  if ((char)psVar4[0xc] == '\b') {\n    FUN_000747a0(param_1,(int)psVar4 + 0x19,0x1f,8);\n    return 0;\n  }\n  if ((char)psVar4[0xc] != '\x10') {\n    return 0;\n  }\n  FUN_00074819(param_1,(int)psVar4 + 0x19,1,0x1f);\n  return 0;\n}" ({ "{") (declaration "uint uVar1;" (type_identifier "uint") (identifier "uVar1") (; ";")) (declaration "int iVar2;" (primitive_type "int") (identifier "iVar2") (; ";")) (declaration "int iVar3;" (primitive_type "int") (identifier "iVar3") (; ";")) (declaration "short *psVar4;" (sized_type_specifier "short" (short "short")) (pointer_declarator "*psVar4" (* "*") (identifier "psVar4")) (; ";")) (declaration "uint uVar5;" (type_identifier "uint") (identifier "uVar5") (; ";")) (declaration "uint uVar6;" (type_identifier "uint") (identifier "uVar6") (; ";")) (declaration "bool bVar7;" (primitive_type "bool") (identifier "bVar7") (; ";")) (declaration "int local_2c;" (primitive_type "int") (identifier "local_2c") (; ";")) (expression_statement "iVar2 = FUN_000749ed(param_1,0x8000,0,0x200);" (assignment_expression "iVar2 = FUN_000749ed(param_1,0x8000,0,0x200)" (identifier "iVar2") (= "=") (call_expression "FUN_000749ed(param_1,0x8000,0,0x200)" (identifier "FUN_000749ed") (argument_list "(param_1,0x8000,0,0x200)" (( "(") (identifier "param_1") (, ",") (number_literal "0x8000") (, ",") (number_literal "0") (, ",") (number_literal "0x200") () ")")))) (; ";")) (if_statement "if (iVar2 == 0) {\n    return 0xffffffff;\n  }" (if "if") (parenthesized_expression "(iVar2 == 0)" (( "(") (binary_expression "iVar2 == 0" (identifier "iVar2") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    return 0xffffffff;\n  }" ({ "{") (return_statement "return 0xffffffff;" (return "return") (number_literal "0xffffffff") (; ";")) (} "}"))) (if_statement "if (*(int *)(iVar2 + 1) == 0x3052534e) {\n    if (*(char *)(iVar2 + 5) == '2') goto LAB_000743c5;\n    iVar3 = *(int *)(iVar2 + 1);\n  }\n  else {\n    iVar3 = *(int *)(iVar2 + 1);\n  }" (if "if") (parenthesized_expression "(*(int *)(iVar2 + 1) == 0x3052534e)" (( "(") (binary_expression "*(int *)(iVar2 + 1) == 0x3052534e" (pointer_expression "*(int *)(iVar2 + 1)" (* "*") (cast_expression "(int *)(iVar2 + 1)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar2 + 1)" (( "(") (binary_expression "iVar2 + 1" (identifier "iVar2") (+ "+") (number_literal "1")) () ")")))) (== "==") (number_literal "0x3052534e")) () ")")) (compound_statement "{\n    if (*(char *)(iVar2 + 5) == '2') goto LAB_000743c5;\n    iVar3 = *(int *)(iVar2 + 1);\n  }" ({ "{") (if_statement "if (*(char *)(iVar2 + 5) == '2') goto LAB_000743c5;" (if "if") (parenthesized_expression "(*(char *)(iVar2 + 5) == '2')" (( "(") (binary_expression "*(char *)(iVar2 + 5) == '2'" (pointer_expression "*(char *)(iVar2 + 5)" (* "*") (cast_expression "(char *)(iVar2 + 5)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar2 + 5)" (( "(") (binary_expression "iVar2 + 5" (identifier "iVar2") (+ "+") (number_literal "5")) () ")")))) (== "==") (char_literal "'2'" (' "'") (character "2") (' "'"))) () ")")) (goto_statement "goto LAB_000743c5;" (goto "goto") (statement_identifier "LAB_000743c5") (; ";"))) (expression_statement "iVar3 = *(int *)(iVar2 + 1);" (assignment_expression "iVar3 = *(int *)(iVar2 + 1)" (identifier "iVar3") (= "=") (pointer_expression "*(int *)(iVar2 + 1)" (* "*") (cast_expression "(int *)(iVar2 + 1)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar2 + 1)" (( "(") (binary_expression "iVar2 + 1" (identifier "iVar2") (+ "+") (number_literal "1")) () ")"))))) (; ";")) (} "}")) (else_clause "else {\n    iVar3 = *(int *)(iVar2 + 1);\n  }" (else "else") (compound_statement "{\n    iVar3 = *(int *)(iVar2 + 1);\n  }" ({ "{") (expression_statement "iVar3 = *(int *)(iVar2 + 1);" (assignment_expression "iVar3 = *(int *)(iVar2 + 1)" (identifier "iVar3") (= "=") (pointer_expression "*(int *)(iVar2 + 1)" (* "*") (cast_expression "(int *)(iVar2 + 1)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar2 + 1)" (( "(") (binary_expression "iVar2 + 1" (identifier "iVar2") (+ "+") (number_literal "1")) () ")"))))) (; ";")) (} "}")))) (if_statement "if (iVar3 == 0x3052534e) {\n    if (*(char *)(iVar2 + 5) == '3') goto LAB_000743c5;\n    iVar3 = *(int *)(iVar2 + 1);\n  }\n  else {\n    iVar3 = *(int *)(iVar2 + 1);\n  }" (if "if") (parenthesized_expression "(iVar3 == 0x3052534e)" (( "(") (binary_expression "iVar3 == 0x3052534e" (identifier "iVar3") (== "==") (number_literal "0x3052534e")) () ")")) (compound_statement "{\n    if (*(char *)(iVar2 + 5) == '3') goto LAB_000743c5;\n    iVar3 = *(int *)(iVar2 + 1);\n  }" ({ "{") (if_statement "if (*(char *)(iVar2 + 5) == '3') goto LAB_000743c5;" (if "if") (parenthesized_expression "(*(char *)(iVar2 + 5) == '3')" (( "(") (binary_expression "*(char *)(iVar2 + 5) == '3'" (pointer_expression "*(char *)(iVar2 + 5)" (* "*") (cast_expression "(char *)(iVar2 + 5)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar2 + 5)" (( "(") (binary_expression "iVar2 + 5" (identifier "iVar2") (+ "+") (number_literal "5")) () ")")))) (== "==") (char_literal "'3'" (' "'") (character "3") (' "'"))) () ")")) (goto_statement "goto LAB_000743c5;" (goto "goto") (statement_identifier "LAB_000743c5") (; ";"))) (expression_statement "iVar3 = *(int *)(iVar2 + 1);" (assignment_expression "iVar3 = *(int *)(iVar2 + 1)" (identifier "iVar3") (= "=") (pointer_expression "*(int *)(iVar2 + 1)" (* "*") (cast_expression "(int *)(iVar2 + 1)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar2 + 1)" (( "(") (binary_expression "iVar2 + 1" (identifier "iVar2") (+ "+") (number_literal "1")) () ")"))))) (; ";")) (} "}")) (else_clause "else {\n    iVar3 = *(int *)(iVar2 + 1);\n  }" (else "else") (compound_statement "{\n    iVar3 = *(int *)(iVar2 + 1);\n  }" ({ "{") (expression_statement "iVar3 = *(int *)(iVar2 + 1);" (assignment_expression "iVar3 = *(int *)(iVar2 + 1)" (identifier "iVar3") (= "=") (pointer_expression "*(int *)(iVar2 + 1)" (* "*") (cast_expression "(int *)(iVar2 + 1)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar2 + 1)" (( "(") (binary_expression "iVar2 + 1" (identifier "iVar2") (+ "+") (number_literal "1")) () ")"))))) (; ";")) (} "}")))) (if_statement "if (iVar3 == 0x30414542) {\n    if (*(char *)(iVar2 + 5) == '1') goto LAB_000743c5;\n    iVar3 = *(int *)(iVar2 + 1);\n  }\n  else {\n    iVar3 = *(int *)(iVar2 + 1);\n  }" (if "if") (parenthesized_expression "(iVar3 == 0x30414542)" (( "(") (binary_expression "iVar3 == 0x30414542" (identifier "iVar3") (== "==") (number_literal "0x30414542")) () ")")) (compound_statement "{\n    if (*(char *)(iVar2 + 5) == '1') goto LAB_000743c5;\n    iVar3 = *(int *)(iVar2 + 1);\n  }" ({ "{") (if_statement "if (*(char *)(iVar2 + 5) == '1') goto LAB_000743c5;" (if "if") (parenthesized_expression "(*(char *)(iVar2 + 5) == '1')" (( "(") (binary_expression "*(char *)(iVar2 + 5) == '1'" (pointer_expression "*(char *)(iVar2 + 5)" (* "*") (cast_expression "(char *)(iVar2 + 5)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar2 + 5)" (( "(") (binary_expression "iVar2 + 5" (identifier "iVar2") (+ "+") (number_literal "5")) () ")")))) (== "==") (char_literal "'1'" (' "'") (character "1") (' "'"))) () ")")) (goto_statement "goto LAB_000743c5;" (goto "goto") (statement_identifier "LAB_000743c5") (; ";"))) (expression_statement "iVar3 = *(int *)(iVar2 + 1);" (assignment_expression "iVar3 = *(int *)(iVar2 + 1)" (identifier "iVar3") (= "=") (pointer_expression "*(int *)(iVar2 + 1)" (* "*") (cast_expression "(int *)(iVar2 + 1)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar2 + 1)" (( "(") (binary_expression "iVar2 + 1" (identifier "iVar2") (+ "+") (number_literal "1")) () ")"))))) (; ";")) (} "}")) (else_clause "else {\n    iVar3 = *(int *)(iVar2 + 1);\n  }" (else "else") (compound_statement "{\n    iVar3 = *(int *)(iVar2 + 1);\n  }" ({ "{") (expression_statement "iVar3 = *(int *)(iVar2 + 1);" (assignment_expression "iVar3 = *(int *)(iVar2 + 1)" (identifier "iVar3") (= "=") (pointer_expression "*(int *)(iVar2 + 1)" (* "*") (cast_expression "(int *)(iVar2 + 1)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar2 + 1)" (( "(") (binary_expression "iVar2 + 1" (identifier "iVar2") (+ "+") (number_literal "1")) () ")"))))) (; ";")) (} "}")))) (if_statement "if (iVar3 == 0x544f4f42) {\n    if (*(char *)(iVar2 + 5) == '2') goto LAB_000743c5;\n    if (*(int *)(iVar2 + 1) != 0x30304443) goto LAB_000743a9;\nLAB_000745d1:\n    if (*(char *)(iVar2 + 5) == '1') goto LAB_000743c5;\n    if (*(int *)(iVar2 + 1) == 0x30574443) goto LAB_000745e8;\nLAB_000743b6:\n    iVar3 = *(int *)(iVar2 + 1);\n  }\n  else {\n    if (*(int *)(iVar2 + 1) == 0x30304443) goto LAB_000745d1;\nLAB_000743a9:\n    if (*(int *)(iVar2 + 1) != 0x30574443) goto LAB_000743b6;\nLAB_000745e8:\n    if (*(char *)(iVar2 + 5) == '2') goto LAB_000743c5;\n    iVar3 = *(int *)(iVar2 + 1);\n  }" (if "if") (parenthesized_expression "(iVar3 == 0x544f4f42)" (( "(") (binary_expression "iVar3 == 0x544f4f42" (identifier "iVar3") (== "==") (number_literal "0x544f4f42")) () ")")) (compound_statement "{\n    if (*(char *)(iVar2 + 5) == '2') goto LAB_000743c5;\n    if (*(int *)(iVar2 + 1) != 0x30304443) goto LAB_000743a9;\nLAB_000745d1:\n    if (*(char *)(iVar2 + 5) == '1') goto LAB_000743c5;\n    if (*(int *)(iVar2 + 1) == 0x30574443) goto LAB_000745e8;\nLAB_000743b6:\n    iVar3 = *(int *)(iVar2 + 1);\n  }" ({ "{") (if_statement "if (*(char *)(iVar2 + 5) == '2') goto LAB_000743c5;" (if "if") (parenthesized_expression "(*(char *)(iVar2 + 5) == '2')" (( "(") (binary_expression "*(char *)(iVar2 + 5) == '2'" (pointer_expression "*(char *)(iVar2 + 5)" (* "*") (cast_expression "(char *)(iVar2 + 5)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar2 + 5)" (( "(") (binary_expression "iVar2 + 5" (identifier "iVar2") (+ "+") (number_literal "5")) () ")")))) (== "==") (char_literal "'2'" (' "'") (character "2") (' "'"))) () ")")) (goto_statement "goto LAB_000743c5;" (goto "goto") (statement_identifier "LAB_000743c5") (; ";"))) (if_statement "if (*(int *)(iVar2 + 1) != 0x30304443) goto LAB_000743a9;" (if "if") (parenthesized_expression "(*(int *)(iVar2 + 1) != 0x30304443)" (( "(") (binary_expression "*(int *)(iVar2 + 1) != 0x30304443" (pointer_expression "*(int *)(iVar2 + 1)" (* "*") (cast_expression "(int *)(iVar2 + 1)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar2 + 1)" (( "(") (binary_expression "iVar2 + 1" (identifier "iVar2") (+ "+") (number_literal "1")) () ")")))) (!= "!=") (number_literal "0x30304443")) () ")")) (goto_statement "goto LAB_000743a9;" (goto "goto") (statement_identifier "LAB_000743a9") (; ";"))) (labeled_statement "LAB_000745d1:\n    if (*(char *)(iVar2 + 5) == '1') goto LAB_000743c5;" (statement_identifier "LAB_000745d1") (: ":") (if_statement "if (*(char *)(iVar2 + 5) == '1') goto LAB_000743c5;" (if "if") (parenthesized_expression "(*(char *)(iVar2 + 5) == '1')" (( "(") (binary_expression "*(char *)(iVar2 + 5) == '1'" (pointer_expression "*(char *)(iVar2 + 5)" (* "*") (cast_expression "(char *)(iVar2 + 5)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar2 + 5)" (( "(") (binary_expression "iVar2 + 5" (identifier "iVar2") (+ "+") (number_literal "5")) () ")")))) (== "==") (char_literal "'1'" (' "'") (character "1") (' "'"))) () ")")) (goto_statement "goto LAB_000743c5;" (goto "goto") (statement_identifier "LAB_000743c5") (; ";")))) (if_statement "if (*(int *)(iVar2 + 1) == 0x30574443) goto LAB_000745e8;" (if "if") (parenthesized_expression "(*(int *)(iVar2 + 1) == 0x30574443)" (( "(") (binary_expression "*(int *)(iVar2 + 1) == 0x30574443" (pointer_expression "*(int *)(iVar2 + 1)" (* "*") (cast_expression "(int *)(iVar2 + 1)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar2 + 1)" (( "(") (binary_expression "iVar2 + 1" (identifier "iVar2") (+ "+") (number_literal "1")) () ")")))) (== "==") (number_literal "0x30574443")) () ")")) (goto_statement "goto LAB_000745e8;" (goto "goto") (statement_identifier "LAB_000745e8") (; ";"))) (labeled_statement "LAB_000743b6:\n    iVar3 = *(int *)(iVar2 + 1);" (statement_identifier "LAB_000743b6") (: ":") (expression_statement "iVar3 = *(int *)(iVar2 + 1);" (assignment_expression "iVar3 = *(int *)(iVar2 + 1)" (identifier "iVar3") (= "=") (pointer_expression "*(int *)(iVar2 + 1)" (* "*") (cast_expression "(int *)(iVar2 + 1)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar2 + 1)" (( "(") (binary_expression "iVar2 + 1" (identifier "iVar2") (+ "+") (number_literal "1")) () ")"))))) (; ";"))) (} "}")) (else_clause "else {\n    if (*(int *)(iVar2 + 1) == 0x30304443) goto LAB_000745d1;\nLAB_000743a9:\n    if (*(int *)(iVar2 + 1) != 0x30574443) goto LAB_000743b6;\nLAB_000745e8:\n    if (*(char *)(iVar2 + 5) == '2') goto LAB_000743c5;\n    iVar3 = *(int *)(iVar2 + 1);\n  }" (else "else") (compound_statement "{\n    if (*(int *)(iVar2 + 1) == 0x30304443) goto LAB_000745d1;\nLAB_000743a9:\n    if (*(int *)(iVar2 + 1) != 0x30574443) goto LAB_000743b6;\nLAB_000745e8:\n    if (*(char *)(iVar2 + 5) == '2') goto LAB_000743c5;\n    iVar3 = *(int *)(iVar2 + 1);\n  }" ({ "{") (if_statement "if (*(int *)(iVar2 + 1) == 0x30304443) goto LAB_000745d1;" (if "if") (parenthesized_expression "(*(int *)(iVar2 + 1) == 0x30304443)" (( "(") (binary_expression "*(int *)(iVar2 + 1) == 0x30304443" (pointer_expression "*(int *)(iVar2 + 1)" (* "*") (cast_expression "(int *)(iVar2 + 1)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar2 + 1)" (( "(") (binary_expression "iVar2 + 1" (identifier "iVar2") (+ "+") (number_literal "1")) () ")")))) (== "==") (number_literal "0x30304443")) () ")")) (goto_statement "goto LAB_000745d1;" (goto "goto") (statement_identifier "LAB_000745d1") (; ";"))) (labeled_statement "LAB_000743a9:\n    if (*(int *)(iVar2 + 1) != 0x30574443) goto LAB_000743b6;" (statement_identifier "LAB_000743a9") (: ":") (if_statement "if (*(int *)(iVar2 + 1) != 0x30574443) goto LAB_000743b6;" (if "if") (parenthesized_expression "(*(int *)(iVar2 + 1) != 0x30574443)" (( "(") (binary_expression "*(int *)(iVar2 + 1) != 0x30574443" (pointer_expression "*(int *)(iVar2 + 1)" (* "*") (cast_expression "(int *)(iVar2 + 1)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar2 + 1)" (( "(") (binary_expression "iVar2 + 1" (identifier "iVar2") (+ "+") (number_literal "1")) () ")")))) (!= "!=") (number_literal "0x30574443")) () ")")) (goto_statement "goto LAB_000743b6;" (goto "goto") (statement_identifier "LAB_000743b6") (; ";")))) (labeled_statement "LAB_000745e8:\n    if (*(char *)(iVar2 + 5) == '2') goto LAB_000743c5;" (statement_identifier "LAB_000745e8") (: ":") (if_statement "if (*(char *)(iVar2 + 5) == '2') goto LAB_000743c5;" (if "if") (parenthesized_expression "(*(char *)(iVar2 + 5) == '2')" (( "(") (binary_expression "*(char *)(iVar2 + 5) == '2'" (pointer_expression "*(char *)(iVar2 + 5)" (* "*") (cast_expression "(char *)(iVar2 + 5)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar2 + 5)" (( "(") (binary_expression "iVar2 + 5" (identifier "iVar2") (+ "+") (number_literal "5")) () ")")))) (== "==") (char_literal "'2'" (' "'") (character "2") (' "'"))) () ")")) (goto_statement "goto LAB_000743c5;" (goto "goto") (statement_identifier "LAB_000743c5") (; ";")))) (expression_statement "iVar3 = *(int *)(iVar2 + 1);" (assignment_expression "iVar3 = *(int *)(iVar2 + 1)" (identifier "iVar3") (= "=") (pointer_expression "*(int *)(iVar2 + 1)" (* "*") (cast_expression "(int *)(iVar2 + 1)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar2 + 1)" (( "(") (binary_expression "iVar2 + 1" (identifier "iVar2") (+ "+") (number_literal "1")) () ")"))))) (; ";")) (} "}")))) (if_statement "if (iVar3 != 0x30414554) {\n    return 0xffffffff;\n  }" (if "if") (parenthesized_expression "(iVar3 != 0x30414554)" (( "(") (binary_expression "iVar3 != 0x30414554" (identifier "iVar3") (!= "!=") (number_literal "0x30414554")) () ")")) (compound_statement "{\n    return 0xffffffff;\n  }" ({ "{") (return_statement "return 0xffffffff;" (return "return") (number_literal "0xffffffff") (; ";")) (} "}"))) (if_statement "if (*(char *)(iVar2 + 5) != '3') {\n    return 0xffffffff;\n  }" (if "if") (parenthesized_expression "(*(char *)(iVar2 + 5) != '3')" (( "(") (binary_expression "*(char *)(iVar2 + 5) != '3'" (pointer_expression "*(char *)(iVar2 + 5)" (* "*") (cast_expression "(char *)(iVar2 + 5)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar2 + 5)" (( "(") (binary_expression "iVar2 + 5" (identifier "iVar2") (+ "+") (number_literal "5")) () ")")))) (!= "!=") (char_literal "'3'" (' "'") (character "3") (' "'"))) () ")")) (compound_statement "{\n    return 0xffffffff;\n  }" ({ "{") (return_statement "return 0xffffffff;" (return "return") (number_literal "0xffffffff") (; ";")) (} "}"))) (labeled_statement "LAB_000743c5:\n  uVar5 = 0x8800;" (statement_identifier "LAB_000743c5") (: ":") (expression_statement "uVar5 = 0x8800;" (assignment_expression "uVar5 = 0x8800" (identifier "uVar5") (= "=") (number_literal "0x8800")) (; ";"))) (expression_statement "iVar2 = 0;" (assignment_expression "iVar2 = 0" (identifier "iVar2") (= "=") (number_literal "0")) (; ";")) (while_statement "while( true ) {\n    uVar1 = uVar5 - 0x8000;\n    iVar3 = FUN_000749ed(param_1,uVar5,iVar2,0x800);\n    if (iVar3 == 0) {\n      return 0xffffffff;\n    }\n    if (*(char *)(iVar3 + 1) != '\0') break;\n    bVar7 = 0xfffff7ff < uVar5;\n    uVar5 = uVar5 + 0x800;\n    iVar2 = iVar2 + (uint)bVar7;\n    if (iVar2 == 0 && uVar5 == 0x10000) {\n      return 0xffffffff;\n    }\n  }" (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (compound_statement "{\n    uVar1 = uVar5 - 0x8000;\n    iVar3 = FUN_000749ed(param_1,uVar5,iVar2,0x800);\n    if (iVar3 == 0) {\n      return 0xffffffff;\n    }\n    if (*(char *)(iVar3 + 1) != '\0') break;\n    bVar7 = 0xfffff7ff < uVar5;\n    uVar5 = uVar5 + 0x800;\n    iVar2 = iVar2 + (uint)bVar7;\n    if (iVar2 == 0 && uVar5 == 0x10000) {\n      return 0xffffffff;\n    }\n  }" ({ "{") (expression_statement "uVar1 = uVar5 - 0x8000;" (assignment_expression "uVar1 = uVar5 - 0x8000" (identifier "uVar1") (= "=") (binary_expression "uVar5 - 0x8000" (identifier "uVar5") (- "-") (number_literal "0x8000"))) (; ";")) (expression_statement "iVar3 = FUN_000749ed(param_1,uVar5,iVar2,0x800);" (assignment_expression "iVar3 = FUN_000749ed(param_1,uVar5,iVar2,0x800)" (identifier "iVar3") (= "=") (call_expression "FUN_000749ed(param_1,uVar5,iVar2,0x800)" (identifier "FUN_000749ed") (argument_list "(param_1,uVar5,iVar2,0x800)" (( "(") (identifier "param_1") (, ",") (identifier "uVar5") (, ",") (identifier "iVar2") (, ",") (number_literal "0x800") () ")")))) (; ";")) (if_statement "if (iVar3 == 0) {\n      return 0xffffffff;\n    }" (if "if") (parenthesized_expression "(iVar3 == 0)" (( "(") (binary_expression "iVar3 == 0" (identifier "iVar3") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      return 0xffffffff;\n    }" ({ "{") (return_statement "return 0xffffffff;" (return "return") (number_literal "0xffffffff") (; ";")) (} "}"))) (if_statement "if (*(char *)(iVar3 + 1) != '\0') break;" (if "if") (parenthesized_expression "(*(char *)(iVar3 + 1) != '\0')" (( "(") (binary_expression "*(char *)(iVar3 + 1) != '\0'" (pointer_expression "*(char *)(iVar3 + 1)" (* "*") (cast_expression "(char *)(iVar3 + 1)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar3 + 1)" (( "(") (binary_expression "iVar3 + 1" (identifier "iVar3") (+ "+") (number_literal "1")) () ")")))) (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "bVar7 = 0xfffff7ff < uVar5;" (assignment_expression "bVar7 = 0xfffff7ff < uVar5" (identifier "bVar7") (= "=") (binary_expression "0xfffff7ff < uVar5" (number_literal "0xfffff7ff") (< "<") (identifier "uVar5"))) (; ";")) (expression_statement "uVar5 = uVar5 + 0x800;" (assignment_expression "uVar5 = uVar5 + 0x800" (identifier "uVar5") (= "=") (binary_expression "uVar5 + 0x800" (identifier "uVar5") (+ "+") (number_literal "0x800"))) (; ";")) (expression_statement "iVar2 = iVar2 + (uint)bVar7;" (assignment_expression "iVar2 = iVar2 + (uint)bVar7" (identifier "iVar2") (= "=") (binary_expression "iVar2 + (uint)bVar7" (identifier "iVar2") (+ "+") (cast_expression "(uint)bVar7" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar7")))) (; ";")) (if_statement "if (iVar2 == 0 && uVar5 == 0x10000) {\n      return 0xffffffff;\n    }" (if "if") (parenthesized_expression "(iVar2 == 0 && uVar5 == 0x10000)" (( "(") (binary_expression "iVar2 == 0 && uVar5 == 0x10000" (binary_expression "iVar2 == 0" (identifier "iVar2") (== "==") (number_literal "0")) (&& "&&") (binary_expression "uVar5 == 0x10000" (identifier "uVar5") (== "==") (number_literal "0x10000"))) () ")")) (compound_statement "{\n      return 0xffffffff;\n    }" ({ "{") (return_statement "return 0xffffffff;" (return "return") (number_literal "0xffffffff") (; ";")) (} "}"))) (} "}"))) (expression_statement "uVar5 = 0;" (assignment_expression "uVar5 = 0" (identifier "uVar5") (= "=") (number_literal "0")) (; ";")) (expression_statement "iVar2 = 0x40;" (assignment_expression "iVar2 = 0x40" (identifier "iVar2") (= "=") (number_literal "0x40")) (; ";")) (while_statement "while( true ) {\n    iVar3 = FUN_000749ed(param_1,uVar5 + 0x8000,0xffff7fff < uVar5,0x800);\n    if (iVar3 == 0) {\n      return 0xffffffff;\n    }\n    if (*(char *)(iVar3 + 1) == '\0') {\n      return 0xffffffff;\n    }\n    if (((*(int *)(iVar3 + 1) == 0x3052534e) && (*(char *)(iVar3 + 5) == '2')) ||\n       ((*(int *)(iVar3 + 1) == 0x3052534e && (*(char *)(iVar3 + 5) == '3')))) break;\n    iVar2 = iVar2 + -1;\n    uVar5 = uVar5 + uVar1;\n    if (iVar2 == 0) {\n      return 0xffffffff;\n    }\n  }" (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (compound_statement "{\n    iVar3 = FUN_000749ed(param_1,uVar5 + 0x8000,0xffff7fff < uVar5,0x800);\n    if (iVar3 == 0) {\n      return 0xffffffff;\n    }\n    if (*(char *)(iVar3 + 1) == '\0') {\n      return 0xffffffff;\n    }\n    if (((*(int *)(iVar3 + 1) == 0x3052534e) && (*(char *)(iVar3 + 5) == '2')) ||\n       ((*(int *)(iVar3 + 1) == 0x3052534e && (*(char *)(iVar3 + 5) == '3')))) break;\n    iVar2 = iVar2 + -1;\n    uVar5 = uVar5 + uVar1;\n    if (iVar2 == 0) {\n      return 0xffffffff;\n    }\n  }" ({ "{") (expression_statement "iVar3 = FUN_000749ed(param_1,uVar5 + 0x8000,0xffff7fff < uVar5,0x800);" (assignment_expression "iVar3 = FUN_000749ed(param_1,uVar5 + 0x8000,0xffff7fff < uVar5,0x800)" (identifier "iVar3") (= "=") (call_expression "FUN_000749ed(param_1,uVar5 + 0x8000,0xffff7fff < uVar5,0x800)" (identifier "FUN_000749ed") (argument_list "(param_1,uVar5 + 0x8000,0xffff7fff < uVar5,0x800)" (( "(") (identifier "param_1") (, ",") (binary_expression "uVar5 + 0x8000" (identifier "uVar5") (+ "+") (number_literal "0x8000")) (, ",") (binary_expression "0xffff7fff < uVar5" (number_literal "0xffff7fff") (< "<") (identifier "uVar5")) (, ",") (number_literal "0x800") () ")")))) (; ";")) (if_statement "if (iVar3 == 0) {\n      return 0xffffffff;\n    }" (if "if") (parenthesized_expression "(iVar3 == 0)" (( "(") (binary_expression "iVar3 == 0" (identifier "iVar3") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      return 0xffffffff;\n    }" ({ "{") (return_statement "return 0xffffffff;" (return "return") (number_literal "0xffffffff") (; ";")) (} "}"))) (if_statement "if (*(char *)(iVar3 + 1) == '\0') {\n      return 0xffffffff;\n    }" (if "if") (parenthesized_expression "(*(char *)(iVar3 + 1) == '\0')" (( "(") (binary_expression "*(char *)(iVar3 + 1) == '\0'" (pointer_expression "*(char *)(iVar3 + 1)" (* "*") (cast_expression "(char *)(iVar3 + 1)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar3 + 1)" (( "(") (binary_expression "iVar3 + 1" (identifier "iVar3") (+ "+") (number_literal "1")) () ")")))) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n      return 0xffffffff;\n    }" ({ "{") (return_statement "return 0xffffffff;" (return "return") (number_literal "0xffffffff") (; ";")) (} "}"))) (if_statement "if (((*(int *)(iVar3 + 1) == 0x3052534e) && (*(char *)(iVar3 + 5) == '2')) ||\n       ((*(int *)(iVar3 + 1) == 0x3052534e && (*(char *)(iVar3 + 5) == '3')))) break;" (if "if") (parenthesized_expression "(((*(int *)(iVar3 + 1) == 0x3052534e) && (*(char *)(iVar3 + 5) == '2')) ||\n       ((*(int *)(iVar3 + 1) == 0x3052534e && (*(char *)(iVar3 + 5) == '3'))))" (( "(") (binary_expression "((*(int *)(iVar3 + 1) == 0x3052534e) && (*(char *)(iVar3 + 5) == '2')) ||\n       ((*(int *)(iVar3 + 1) == 0x3052534e && (*(char *)(iVar3 + 5) == '3')))" (parenthesized_expression "((*(int *)(iVar3 + 1) == 0x3052534e) && (*(char *)(iVar3 + 5) == '2'))" (( "(") (binary_expression "(*(int *)(iVar3 + 1) == 0x3052534e) && (*(char *)(iVar3 + 5) == '2')" (parenthesized_expression "(*(int *)(iVar3 + 1) == 0x3052534e)" (( "(") (binary_expression "*(int *)(iVar3 + 1) == 0x3052534e" (pointer_expression "*(int *)(iVar3 + 1)" (* "*") (cast_expression "(int *)(iVar3 + 1)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar3 + 1)" (( "(") (binary_expression "iVar3 + 1" (identifier "iVar3") (+ "+") (number_literal "1")) () ")")))) (== "==") (number_literal "0x3052534e")) () ")")) (&& "&&") (parenthesized_expression "(*(char *)(iVar3 + 5) == '2')" (( "(") (binary_expression "*(char *)(iVar3 + 5) == '2'" (pointer_expression "*(char *)(iVar3 + 5)" (* "*") (cast_expression "(char *)(iVar3 + 5)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar3 + 5)" (( "(") (binary_expression "iVar3 + 5" (identifier "iVar3") (+ "+") (number_literal "5")) () ")")))) (== "==") (char_literal "'2'" (' "'") (character "2") (' "'"))) () ")"))) () ")")) (|| "||") (parenthesized_expression "((*(int *)(iVar3 + 1) == 0x3052534e && (*(char *)(iVar3 + 5) == '3')))" (( "(") (parenthesized_expression "(*(int *)(iVar3 + 1) == 0x3052534e && (*(char *)(iVar3 + 5) == '3'))" (( "(") (binary_expression "*(int *)(iVar3 + 1) == 0x3052534e && (*(char *)(iVar3 + 5) == '3')" (binary_expression "*(int *)(iVar3 + 1) == 0x3052534e" (pointer_expression "*(int *)(iVar3 + 1)" (* "*") (cast_expression "(int *)(iVar3 + 1)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar3 + 1)" (( "(") (binary_expression "iVar3 + 1" (identifier "iVar3") (+ "+") (number_literal "1")) () ")")))) (== "==") (number_literal "0x3052534e")) (&& "&&") (parenthesized_expression "(*(char *)(iVar3 + 5) == '3')" (( "(") (binary_expression "*(char *)(iVar3 + 5) == '3'" (pointer_expression "*(char *)(iVar3 + 5)" (* "*") (cast_expression "(char *)(iVar3 + 5)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar3 + 5)" (( "(") (binary_expression "iVar3 + 5" (identifier "iVar3") (+ "+") (number_literal "5")) () ")")))) (== "==") (char_literal "'3'" (' "'") (character "3") (' "'"))) () ")"))) () ")")) () ")"))) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "iVar2 = iVar2 + -1;" (assignment_expression "iVar2 = iVar2 + -1" (identifier "iVar2") (= "=") (binary_expression "iVar2 + -1" (identifier "iVar2") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "uVar5 = uVar5 + uVar1;" (assignment_expression "uVar5 = uVar5 + uVar1" (identifier "uVar5") (= "=") (binary_expression "uVar5 + uVar1" (identifier "uVar5") (+ "+") (identifier "uVar1"))) (; ";")) (if_statement "if (iVar2 == 0) {\n      return 0xffffffff;\n    }" (if "if") (parenthesized_expression "(iVar2 == 0)" (( "(") (binary_expression "iVar2 == 0" (identifier "iVar2") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      return 0xffffffff;\n    }" ({ "{") (return_statement "return 0xffffffff;" (return "return") (number_literal "0xffffffff") (; ";")) (} "}"))) (} "}"))) (expression_statement "psVar4 = (short *)FUN_000749ed(param_1,uVar1 * 0x100,0,0x200);" (assignment_expression "psVar4 = (short *)FUN_000749ed(param_1,uVar1 * 0x100,0,0x200)" (identifier "psVar4") (= "=") (cast_expression "(short *)FUN_000749ed(param_1,uVar1 * 0x100,0,0x200)" (( "(") (type_descriptor "short *" (sized_type_specifier "short" (short "short")) (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_000749ed(param_1,uVar1 * 0x100,0,0x200)" (identifier "FUN_000749ed") (argument_list "(param_1,uVar1 * 0x100,0,0x200)" (( "(") (identifier "param_1") (, ",") (binary_expression "uVar1 * 0x100" (identifier "uVar1") (* "*") (number_literal "0x100")) (, ",") (number_literal "0") (, ",") (number_literal "0x200") () ")"))))) (; ";")) (if_statement "if (psVar4 == (short *)0x0) {\n    return 0xffffffff;\n  }" (if "if") (parenthesized_expression "(psVar4 == (short *)0x0)" (( "(") (binary_expression "psVar4 == (short *)0x0" (identifier "psVar4") (== "==") (cast_expression "(short *)0x0" (( "(") (type_descriptor "short *" (sized_type_specifier "short" (short "short")) (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n    return 0xffffffff;\n  }" ({ "{") (return_statement "return 0xffffffff;" (return "return") (number_literal "0xffffffff") (; ";")) (} "}"))) (if_statement "if (*psVar4 != 2) {\n    return 0;\n  }" (if "if") (parenthesized_expression "(*psVar4 != 2)" (( "(") (binary_expression "*psVar4 != 2" (pointer_expression "*psVar4" (* "*") (identifier "psVar4")) (!= "!=") (number_literal "2")) () ")")) (compound_statement "{\n    return 0;\n  }" ({ "{") (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (expression_statement "uVar5 = *(uint *)(psVar4 + 8);" (assignment_expression "uVar5 = *(uint *)(psVar4 + 8)" (identifier "uVar5") (= "=") (pointer_expression "*(uint *)(psVar4 + 8)" (* "*") (cast_expression "(uint *)(psVar4 + 8)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(psVar4 + 8)" (( "(") (binary_expression "psVar4 + 8" (identifier "psVar4") (+ "+") (number_literal "8")) () ")"))))) (; ";")) (if_statement "if (uVar5 < uVar1) {\n    return 0;\n  }" (if "if") (parenthesized_expression "(uVar5 < uVar1)" (( "(") (binary_expression "uVar5 < uVar1" (identifier "uVar5") (< "<") (identifier "uVar1")) () ")")) (compound_statement "{\n    return 0;\n  }" ({ "{") (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (expression_statement "iVar2 = *(int *)(psVar4 + 10);" (assignment_expression "iVar2 = *(int *)(psVar4 + 10)" (identifier "iVar2") (= "=") (pointer_expression "*(int *)(psVar4 + 10)" (* "*") (cast_expression "(int *)(psVar4 + 10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(psVar4 + 10)" (( "(") (binary_expression "psVar4 + 10" (identifier "psVar4") (+ "+") (number_literal "10")) () ")"))))) (; ";")) (expression_statement "local_2c = iVar2 * uVar1;" (assignment_expression "local_2c = iVar2 * uVar1" (identifier "local_2c") (= "=") (binary_expression "iVar2 * uVar1" (identifier "iVar2") (* "*") (identifier "uVar1"))) (; ";")) (expression_statement "uVar6 = 0;" (assignment_expression "uVar6 = 0" (identifier "uVar6") (= "=") (number_literal "0")) (; ";")) (while_statement "while( true ) {\n    psVar4 = (short *)FUN_000749ed(param_1,local_2c,0,0x200);\n    if (psVar4 == (short *)0x0) {\n      return 0xffffffff;\n    }\n    if (*psVar4 == 0) {\n      return 0;\n    }\n    if (*(int *)(psVar4 + 6) != uVar6 + iVar2) {\n      return 0;\n    }\n    if (*psVar4 == 1) break;\n    uVar6 = uVar6 + 1;\n    local_2c = local_2c + uVar1;\n    if (uVar5 / uVar1 <= uVar6) {\n      return 0;\n    }\n  }" (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (compound_statement "{\n    psVar4 = (short *)FUN_000749ed(param_1,local_2c,0,0x200);\n    if (psVar4 == (short *)0x0) {\n      return 0xffffffff;\n    }\n    if (*psVar4 == 0) {\n      return 0;\n    }\n    if (*(int *)(psVar4 + 6) != uVar6 + iVar2) {\n      return 0;\n    }\n    if (*psVar4 == 1) break;\n    uVar6 = uVar6 + 1;\n    local_2c = local_2c + uVar1;\n    if (uVar5 / uVar1 <= uVar6) {\n      return 0;\n    }\n  }" ({ "{") (expression_statement "psVar4 = (short *)FUN_000749ed(param_1,local_2c,0,0x200);" (assignment_expression "psVar4 = (short *)FUN_000749ed(param_1,local_2c,0,0x200)" (identifier "psVar4") (= "=") (cast_expression "(short *)FUN_000749ed(param_1,local_2c,0,0x200)" (( "(") (type_descriptor "short *" (sized_type_specifier "short" (short "short")) (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_000749ed(param_1,local_2c,0,0x200)" (identifier "FUN_000749ed") (argument_list "(param_1,local_2c,0,0x200)" (( "(") (identifier "param_1") (, ",") (identifier "local_2c") (, ",") (number_literal "0") (, ",") (number_literal "0x200") () ")"))))) (; ";")) (if_statement "if (psVar4 == (short *)0x0) {\n      return 0xffffffff;\n    }" (if "if") (parenthesized_expression "(psVar4 == (short *)0x0)" (( "(") (binary_expression "psVar4 == (short *)0x0" (identifier "psVar4") (== "==") (cast_expression "(short *)0x0" (( "(") (type_descriptor "short *" (sized_type_specifier "short" (short "short")) (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n      return 0xffffffff;\n    }" ({ "{") (return_statement "return 0xffffffff;" (return "return") (number_literal "0xffffffff") (; ";")) (} "}"))) (if_statement "if (*psVar4 == 0) {\n      return 0;\n    }" (if "if") (parenthesized_expression "(*psVar4 == 0)" (( "(") (binary_expression "*psVar4 == 0" (pointer_expression "*psVar4" (* "*") (identifier "psVar4")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      return 0;\n    }" ({ "{") (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (if_statement "if (*(int *)(psVar4 + 6) != uVar6 + iVar2) {\n      return 0;\n    }" (if "if") (parenthesized_expression "(*(int *)(psVar4 + 6) != uVar6 + iVar2)" (( "(") (binary_expression "*(int *)(psVar4 + 6) != uVar6 + iVar2" (pointer_expression "*(int *)(psVar4 + 6)" (* "*") (cast_expression "(int *)(psVar4 + 6)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(psVar4 + 6)" (( "(") (binary_expression "psVar4 + 6" (identifier "psVar4") (+ "+") (number_literal "6")) () ")")))) (!= "!=") (binary_expression "uVar6 + iVar2" (identifier "uVar6") (+ "+") (identifier "iVar2"))) () ")")) (compound_statement "{\n      return 0;\n    }" ({ "{") (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (if_statement "if (*psVar4 == 1) break;" (if "if") (parenthesized_expression "(*psVar4 == 1)" (( "(") (binary_expression "*psVar4 == 1" (pointer_expression "*psVar4" (* "*") (identifier "psVar4")) (== "==") (number_literal "1")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "uVar6 = uVar6 + 1;" (assignment_expression "uVar6 = uVar6 + 1" (identifier "uVar6") (= "=") (binary_expression "uVar6 + 1" (identifier "uVar6") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "local_2c = local_2c + uVar1;" (assignment_expression "local_2c = local_2c + uVar1" (identifier "local_2c") (= "=") (binary_expression "local_2c + uVar1" (identifier "local_2c") (+ "+") (identifier "uVar1"))) (; ";")) (if_statement "if (uVar5 / uVar1 <= uVar6) {\n      return 0;\n    }" (if "if") (parenthesized_expression "(uVar5 / uVar1 <= uVar6)" (( "(") (binary_expression "uVar5 / uVar1 <= uVar6" (binary_expression "uVar5 / uVar1" (identifier "uVar5") (/ "/") (identifier "uVar1")) (<= "<=") (identifier "uVar6")) () ")")) (compound_statement "{\n      return 0;\n    }" ({ "{") (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (} "}"))) (if_statement "if ((char)psVar4[0xc] == '\b') {\n    FUN_000747a0(param_1,(int)psVar4 + 0x19,0x1f,8);\n    return 0;\n  }" (if "if") (parenthesized_expression "((char)psVar4[0xc] == '\b')" (( "(") (binary_expression "(char)psVar4[0xc] == '\b'" (cast_expression "(char)psVar4[0xc]" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (subscript_expression "psVar4[0xc]" (identifier "psVar4") ([ "[") (number_literal "0xc") (] "]"))) (== "==") (char_literal "'\b'" (' "'") (escape_sequence "\b") (' "'"))) () ")")) (compound_statement "{\n    FUN_000747a0(param_1,(int)psVar4 + 0x19,0x1f,8);\n    return 0;\n  }" ({ "{") (expression_statement "FUN_000747a0(param_1,(int)psVar4 + 0x19,0x1f,8);" (call_expression "FUN_000747a0(param_1,(int)psVar4 + 0x19,0x1f,8)" (identifier "FUN_000747a0") (argument_list "(param_1,(int)psVar4 + 0x19,0x1f,8)" (( "(") (identifier "param_1") (, ",") (binary_expression "(int)psVar4 + 0x19" (cast_expression "(int)psVar4" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "psVar4")) (+ "+") (number_literal "0x19")) (, ",") (number_literal "0x1f") (, ",") (number_literal "8") () ")"))) (; ";")) (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (if_statement "if ((char)psVar4[0xc] != '\x10') {\n    return 0;\n  }" (if "if") (parenthesized_expression "((char)psVar4[0xc] != '\x10')" (( "(") (binary_expression "(char)psVar4[0xc] != '\x10'" (cast_expression "(char)psVar4[0xc]" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (subscript_expression "psVar4[0xc]" (identifier "psVar4") ([ "[") (number_literal "0xc") (] "]"))) (!= "!=") (char_literal "'\x10'" (' "'") (escape_sequence "\x10") (' "'"))) () ")")) (compound_statement "{\n    return 0;\n  }" ({ "{") (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (expression_statement "FUN_00074819(param_1,(int)psVar4 + 0x19,1,0x1f);" (call_expression "FUN_00074819(param_1,(int)psVar4 + 0x19,1,0x1f)" (identifier "FUN_00074819") (argument_list "(param_1,(int)psVar4 + 0x19,1,0x1f)" (( "(") (identifier "param_1") (, ",") (binary_expression "(int)psVar4 + 0x19" (cast_expression "(int)psVar4" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "psVar4")) (+ "+") (number_literal "0x19")) (, ",") (number_literal "1") (, ",") (number_literal "0x1f") () ")"))) (; ";")) (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}")))

/* WARNING: Type propagation algorithm not settling */

int __regparm3 function_1(type_1 *id)

{
  type_2 var_7;
  void *var_2;
  short *var_8;
  type_2 var_4;
  int var_3;
  type_2 var_9;
  bool bVar7;
  type_2 var_10;
  
  var_2 = var_1(id,0x8000,0x200);
  if (var_2 == (void *)0x0) {
    return -1;
  }
  if (*(int *)((int)var_2 + 1) == 0x3052534e) {
    if (*(char *)((int)var_2 + 5) == '2') goto LAB_000743c5;
    var_3 = *(int *)((int)var_2 + 1);
  }
  else {
    var_3 = *(int *)((int)var_2 + 1);
  }
  if (var_3 == 0x3052534e) {
    if (*(char *)((int)var_2 + 5) == '3') goto LAB_000743c5;
    var_3 = *(int *)((int)var_2 + 1);
  }
  else {
    var_3 = *(int *)((int)var_2 + 1);
  }
  if (var_3 == 0x30414542) {
    if (*(char *)((int)var_2 + 5) == '1') goto LAB_000743c5;
    var_3 = *(int *)((int)var_2 + 1);
  }
  else {
    var_3 = *(int *)((int)var_2 + 1);
  }
  if (var_3 == 0x544f4f42) {
    if (*(char *)((int)var_2 + 5) == '2') goto LAB_000743c5;
    if (*(int *)((int)var_2 + 1) != 0x30304443) goto LAB_000743a9;
LAB_000745d1:
    if (*(char *)((int)var_2 + 5) == '1') goto LAB_000743c5;
    if (*(int *)((int)var_2 + 1) == 0x30574443) goto LAB_000745e8;
LAB_000743b6:
    var_3 = *(int *)((int)var_2 + 1);
  }
  else {
    if (*(int *)((int)var_2 + 1) == 0x30304443) goto LAB_000745d1;
LAB_000743a9:
    if (*(int *)((int)var_2 + 1) != 0x30574443) goto LAB_000743b6;
LAB_000745e8:
    if (*(char *)((int)var_2 + 5) == '2') goto LAB_000743c5;
    var_3 = *(int *)((int)var_2 + 1);
  }
  if (var_3 != 0x30414554) {
    return -1;
  }
  if (*(char *)((int)var_2 + 5) != '3') {
    return -1;
  }
LAB_000743c5:
  var_4 = 0x8800;
  var_3 = 0;
  while( true ) {
    var_7 = var_4 - 0x8000;
    var_2 = var_1(id,var_5(var_3,var_4),0x800);
    if (var_2 == (void *)0x0) {
      return -1;
    }
    if (*(char *)((int)var_2 + 1) != '\0') break;
    bVar7 = 0xfffff7ff < var_4;
    var_4 = var_4 + 0x800;
    var_3 = var_3 + (type_2)bVar7;
    if (var_3 == 0 && var_4 == 0x10000) {
      return -1;
    }
  }
  var_4 = 0;
  var_3 = 0x40;
  while( true ) {
    var_2 = var_1(id,(type_3)var_6(0xffff7fff < var_4,var_4 + 0x8000),0x800);
    if (var_2 == (void *)0x0) {
      return -1;
    }
    if (*(char *)((int)var_2 + 1) == '\0') {
      return -1;
    }
    if (((*(int *)((int)var_2 + 1) == 0x3052534e) && (*(char *)((int)var_2 + 5) == '2')) ||
       ((*(int *)((int)var_2 + 1) == 0x3052534e && (*(char *)((int)var_2 + 5) == '3')))) break;
    var_3 = var_3 + -1;
    var_4 = var_4 + var_7;
    if (var_3 == 0) {
      return -1;
    }
  }
  var_8 = (short *)var_1(id,(type_3)(var_7 * 0x100),0x200);
  if (var_8 == (short *)0x0) {
    return -1;
  }
  if (*var_8 != 2) {
    return 0;
  }
  var_4 = *(type_2 *)(var_8 + 8);
  if (var_4 < var_7) {
    return 0;
  }
  var_3 = *(int *)(var_8 + 10);
  var_10 = var_3 * var_7;
  var_9 = 0;
  while( true ) {
    var_8 = (short *)var_1(id,(type_3)var_10,0x200);
    if (var_8 == (short *)0x0) {
      return -1;
    }
    if (*var_8 == 0) {
      return 0;
    }
    if (*(int *)(var_8 + 6) != var_9 + var_3) {
      return 0;
    }
    if (*var_8 == 1) break;
    var_9 = var_9 + 1;
    var_10 = var_10 + var_7;
    if (var_4 / var_7 <= var_9) {
      return 0;
    }
  }
  if ((char)var_8[0xc] == '\b') {
    var_11(id,(uint8_t *)((int)var_8 + 0x19),0x1f);
    return 0;
  }
  if ((char)var_8[0xc] != '\x10') {
    return 0;
  }
  var_12(id,(uint8_t *)((int)var_8 + 0x19),BE,0x1f);
  return 0;
}


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

/* WARNING: Type propagation algorithm not settling */

undefined4 __regparm3 MASKED(undefined4 param_1)

{
  uint uVar1;
  int iVar2;
  int iVar3;
  short *psVar4;
  uint uVar5;
  uint uVar6;
  bool bVar7;
  int local_2c;
  
  iVar2 = FUN_000749ed(param_1,0x8000,0,0x200);
  if (iVar2 == 0) {
    return 0xffffffff;
  }
  if (*(int *)(iVar2 + 1) == 0x3052534e) {
    if (*(char *)(iVar2 + 5) == '2') goto LAB_000743c5;
    iVar3 = *(int *)(iVar2 + 1);
  }
  else {
    iVar3 = *(int *)(iVar2 + 1);
  }
  if (iVar3 == 0x3052534e) {
    if (*(char *)(iVar2 + 5) == '3') goto LAB_000743c5;
    iVar3 = *(int *)(iVar2 + 1);
  }
  else {
    iVar3 = *(int *)(iVar2 + 1);
  }
  if (iVar3 == 0x30414542) {
    if (*(char *)(iVar2 + 5) == '1') goto LAB_000743c5;
    iVar3 = *(int *)(iVar2 + 1);
  }
  else {
    iVar3 = *(int *)(iVar2 + 1);
  }
  if (iVar3 == 0x544f4f42) {
    if (*(char *)(iVar2 + 5) == '2') goto LAB_000743c5;
    if (*(int *)(iVar2 + 1) != 0x30304443) goto LAB_000743a9;
LAB_000745d1:
    if (*(char *)(iVar2 + 5) == '1') goto LAB_000743c5;
    if (*(int *)(iVar2 + 1) == 0x30574443) goto LAB_000745e8;
LAB_000743b6:
    iVar3 = *(int *)(iVar2 + 1);
  }
  else {
    if (*(int *)(iVar2 + 1) == 0x30304443) goto LAB_000745d1;
LAB_000743a9:
    if (*(int *)(iVar2 + 1) != 0x30574443) goto LAB_000743b6;
LAB_000745e8:
    if (*(char *)(iVar2 + 5) == '2') goto LAB_000743c5;
    iVar3 = *(int *)(iVar2 + 1);
  }
  if (iVar3 != 0x30414554) {
    return 0xffffffff;
  }
  if (*(char *)(iVar2 + 5) != '3') {
    return 0xffffffff;
  }
LAB_000743c5:
  uVar5 = 0x8800;
  iVar2 = 0;
  while( true ) {
    uVar1 = uVar5 - 0x8000;
    iVar3 = FUN_000749ed(param_1,uVar5,iVar2,0x800);
    if (iVar3 == 0) {
      return 0xffffffff;
    }
    if (*(char *)(iVar3 + 1) != '\0') break;
    bVar7 = 0xfffff7ff < uVar5;
    uVar5 = uVar5 + 0x800;
    iVar2 = iVar2 + (uint)bVar7;
    if (iVar2 == 0 && uVar5 == 0x10000) {
      return 0xffffffff;
    }
  }
  uVar5 = 0;
  iVar2 = 0x40;
  while( true ) {
    iVar3 = FUN_000749ed(param_1,uVar5 + 0x8000,0xffff7fff < uVar5,0x800);
    if (iVar3 == 0) {
      return 0xffffffff;
    }
    if (*(char *)(iVar3 + 1) == '\0') {
      return 0xffffffff;
    }
    if (((*(int *)(iVar3 + 1) == 0x3052534e) && (*(char *)(iVar3 + 5) == '2')) ||
       ((*(int *)(iVar3 + 1) == 0x3052534e && (*(char *)(iVar3 + 5) == '3')))) break;
    iVar2 = iVar2 + -1;
    uVar5 = uVar5 + uVar1;
    if (iVar2 == 0) {
      return 0xffffffff;
    }
  }
  psVar4 = (short *)FUN_000749ed(param_1,uVar1 * 0x100,0,0x200);
  if (psVar4 == (short *)0x0) {
    return 0xffffffff;
  }
  if (*psVar4 != 2) {
    return 0;
  }
  uVar5 = *(uint *)(psVar4 + 8);
  if (uVar5 < uVar1) {
    return 0;
  }
  iVar2 = *(int *)(psVar4 + 10);
  local_2c = iVar2 * uVar1;
  uVar6 = 0;
  while( true ) {
    psVar4 = (short *)FUN_000749ed(param_1,local_2c,0,0x200);
    if (psVar4 == (short *)0x0) {
      return 0xffffffff;
    }
    if (*psVar4 == 0) {
      return 0;
    }
    if (*(int *)(psVar4 + 6) != uVar6 + iVar2) {
      return 0;
    }
    if (*psVar4 == 1) break;
    uVar6 = uVar6 + 1;
    local_2c = local_2c + uVar1;
    if (uVar5 / uVar1 <= uVar6) {
      return 0;
    }
  }
  if ((char)psVar4[0xc] == '\b') {
    FUN_000747a0(param_1,(int)psVar4 + 0x19,0x1f,8);
    return 0;
  }
  if ((char)psVar4[0xc] != '\x10') {
    return 0;
  }
  FUN_00074819(param_1,(int)psVar4 + 0x19,1,0x1f);
  return 0;
}

