
int snapshot_symbol(symbolS **symbolPP,valueT *valueP,segT *segP,fragS **fragPP)

{
  byte bVar1;
  int iVar2;
  fragS *pfVar3;
  fragS *pfVar4;
  segT paVar5;
  bool bVar6;
  expressionS exp;
  
  pfVar3 = (fragS *)*symbolPP;
  bVar1 = (byte)pfVar3->fr_address;
  pfVar4 = pfVar3;
  if ((bVar1 & 1) != 0) {
    paVar5 = (segT)pfVar3->last_fr_address;
    pfVar4 = (fragS *)pfVar3->fr_var;
    if (paVar5 != reg_section) {
      *valueP = pfVar3->fr_offset;
      *segP = paVar5;
      *fragPP = pfVar4;
      return 1;
    }
    bVar1 = (byte)pfVar4->fr_address;
  }
  exp.X_add_symbol = (symbolS *)pfVar4->fr_fix;
  exp.X_op_symbol = (symbolS *)pfVar4->fr_var;
  exp.X_add_number = pfVar4->fr_offset;
  exp._24_8_ = pfVar4->fr_symbol;
  pfVar3 = pfVar4;
  if (((bVar1 & 4) == 0) && (exp._24_1_ != '\0')) {
    if ((bVar1 & 8) != 0) {
      return 0;
    }
    *(byte *)&pfVar4->fr_address = (byte)pfVar4->fr_address | 8;
    iVar2 = resolve_expression(&exp);
    *(byte *)&pfVar4->fr_address = (byte)pfVar4->fr_address & 0xf7;
    if (iVar2 == 0) {
      return 0;
    }
    if ((byte)exp._24_1_ < 5) {
      if ((byte)exp._24_1_ < 3) {
        if (exp._24_1_ != '\x02') {
          return 0;
        }
        goto LAB_0012a002;
      }
LAB_0012a0ad:
      bVar1 = *(byte *)&(exp.X_add_symbol)->sy_flags;
      pfVar3 = (fragS *)exp.X_add_symbol;
      goto LAB_00129f65;
    }
    if (exp._24_1_ != '\x05') {
      return 0;
    }
LAB_0012a002:
    bVar1 = (byte)pfVar4->fr_address;
    if ((bVar1 & 1) == 0) {
LAB_0012a0a3:
      if (*(char *)&pfVar4->fr_symbol != '\x03') goto LAB_00129f65;
      goto LAB_0012a0ad;
    }
    paVar5 = (segT)pfVar4->last_fr_address;
    if (paVar5 == reg_section) {
      pfVar4 = (fragS *)pfVar4->fr_var;
      goto LAB_0012a0a3;
    }
    *symbolPP = (symbolS *)pfVar4;
LAB_0012a028:
    pfVar3 = (fragS *)pfVar4->fr_var;
    if (paVar5 != reg_section) {
      *valueP = pfVar4->fr_offset;
      *segP = paVar5;
      bVar6 = expr_section != paVar5;
      *fragPP = pfVar3;
      if (bVar6) {
        return 1;
      }
      goto LAB_0012a04f;
    }
    paVar5 = (segT)pfVar3->last_fr_address;
  }
  else {
LAB_00129f65:
    paVar5 = (segT)pfVar3->last_fr_address;
    *symbolPP = (symbolS *)pfVar3;
    pfVar4 = pfVar3;
    if ((bVar1 & 1) != 0) goto LAB_0012a028;
  }
  paVar5 = *(segT *)&paVar5->flags;
  *valueP = exp.X_add_number;
  pfVar3 = (fragS *)pfVar3->fr_file;
  *segP = paVar5;
  bVar6 = expr_section != paVar5;
  *fragPP = pfVar3;
  if (bVar6) {
    return 1;
  }
LAB_0012a04f:
  if (exp._24_1_ == '\x02') {
    *segP = (segT)(_bfd_std_section + 0x230);
  }
  else if (exp._24_1_ == '\x05') {
    *segP = reg_section;
  }
  return 1;
}



undefined8 FUN_00129f00(undefined8 *param_1,undefined8 *param_2,long *param_3,undefined8 *param_4)

{
  undefined8 uVar1;
  byte bVar2;
  int iVar3;
  byte *pbVar4;
  byte *pbVar5;
  long lVar6;
  bool bVar7;
  byte *local_38;
  undefined8 uStack_30;
  undefined8 local_28;
  undefined8 uStack_20;
  
  pbVar4 = (byte *)*param_1;
  bVar2 = *pbVar4;
  pbVar5 = pbVar4;
  if ((bVar2 & 1) != 0) {
    lVar6 = *(long *)(pbVar4 + 8);
    pbVar5 = *(byte **)(pbVar4 + 0x18);
    if (lVar6 != DAT_0019d7d8) {
      *param_2 = *(undefined8 *)(pbVar4 + 0x20);
      *param_3 = lVar6;
      *param_4 = pbVar5;
      return 1;
    }
    bVar2 = *pbVar5;
  }
  local_38 = *(byte **)(pbVar5 + 0x10);
  uStack_30 = *(undefined8 *)(pbVar5 + 0x18);
  local_28 = *(undefined8 *)(pbVar5 + 0x20);
  uStack_20 = *(undefined8 *)(pbVar5 + 0x28);
  pbVar4 = pbVar5;
  if (((bVar2 & 4) == 0) && ((byte)uStack_20 != '\0')) {
    if ((bVar2 & 8) != 0) {
      return 0;
    }
    *pbVar5 = *pbVar5 | 8;
    iVar3 = FUN_001163e0(&local_38);
    *pbVar5 = *pbVar5 & 0xf7;
    if (iVar3 == 0) {
      return 0;
    }
    if ((byte)uStack_20 < 5) {
      if ((byte)uStack_20 < 3) {
        if ((byte)uStack_20 != 2) {
          return 0;
        }
        goto LAB_0012a002;
      }
LAB_0012a0ad:
      bVar2 = *local_38;
      pbVar4 = local_38;
      goto LAB_00129f65;
    }
    if ((byte)uStack_20 != 5) {
      return 0;
    }
LAB_0012a002:
    bVar2 = *pbVar5;
    if ((bVar2 & 1) == 0) {
LAB_0012a0a3:
      if (pbVar5[0x28] != 3) goto LAB_00129f65;
      goto LAB_0012a0ad;
    }
    lVar6 = *(long *)(pbVar5 + 8);
    if (lVar6 == DAT_0019d7d8) {
      pbVar5 = *(byte **)(pbVar5 + 0x18);
      goto LAB_0012a0a3;
    }
    *param_1 = pbVar5;
LAB_0012a028:
    pbVar4 = *(byte **)(pbVar5 + 0x18);
    if (lVar6 != DAT_0019d7d8) {
      *param_2 = *(undefined8 *)(pbVar5 + 0x20);
      *param_3 = lVar6;
      bVar7 = DAT_0019d700 != lVar6;
      *param_4 = pbVar4;
      if (bVar7) {
        return 1;
      }
      goto LAB_0012a04f;
    }
    lVar6 = *(long *)(pbVar4 + 8);
  }
  else {
LAB_00129f65:
    lVar6 = *(long *)(pbVar4 + 8);
    *param_1 = pbVar4;
    pbVar5 = pbVar4;
    if ((bVar2 & 1) != 0) goto LAB_0012a028;
  }
  lVar6 = *(long *)(lVar6 + 0x20);
  *param_2 = local_28;
  uVar1 = *(undefined8 *)(pbVar4 + 0x40);
  *param_3 = lVar6;
  bVar7 = DAT_0019d700 != lVar6;
  *param_4 = uVar1;
  if (bVar7) {
    return 1;
  }
LAB_0012a04f:
  if ((byte)uStack_20 == '\x02') {
    *param_3 = 0x1949f0;
  }
  else if ((byte)uStack_20 == '\x05') {
    *param_3 = DAT_0019d7d8;
  }
  return 1;
}


PUSH RBP
PUSH RBX
SUB RSP,0x48
MOV RBX,qword ptr [RDI]
MOVZX EAX,byte ptr [RBX]
TEST AL,0x1
JZ 0x00129f47
MOV RAX,qword ptr [RBX + 0x8]
CMP RAX,qword ptr [0x0019d7d8]
MOV R8,qword ptr [RBX + 0x18]
JZ 0x00129f40
MOV RDI,qword ptr [RBX + 0x20]
MOV qword ptr [RSI],RDI
MOV qword ptr [RDX],RAX
MOV EAX,0x1
MOV qword ptr [RCX],R8
ADD RSP,0x48
POP RBX
POP RBP
RET
MOVZX EAX,byte ptr [R8]
MOV RBX,R8
MOVDQU XMM0,xmmword ptr [RBX + 0x10]
MOVDQU XMM1,xmmword ptr [RBX + 0x20]
MOV RBP,RDI
MOVAPS xmmword ptr [RSP + 0x20],XMM0
MOVAPS xmmword ptr [RSP + 0x30],XMM1
TEST AL,0x4
JZ 0x00129fa8
AND EAX,0x1
MOV RDI,qword ptr [RBX + 0x8]
MOV qword ptr [RBP],RBX
TEST AL,AL
JNZ 0x0012a028
MOV RAX,qword ptr [RSP + 0x30]
MOV RDI,qword ptr [RDI + 0x20]
MOV qword ptr [RSI],RAX
MOV RAX,qword ptr [RBX + 0x40]
MOV qword ptr [RDX],RDI
CMP qword ptr [0x0019d700],RDI
MOV qword ptr [RCX],RAX
JZ 0x0012a04f
ADD RSP,0x48
MOV EAX,0x1
POP RBX
POP RBP
RET
CMP byte ptr [RSP + 0x38],0x0
JZ 0x00129f62
MOV qword ptr [RSP + 0x18],RCX
MOV qword ptr [RSP + 0x10],RDX
MOV qword ptr [RSP + 0x8],RSI
TEST AL,0x8
JNZ 0x0012a074
OR byte ptr [RBX],0x8
LEA RDI,[RSP + 0x20]
CALL 0x001163e0
AND byte ptr [RBX],0xf7
TEST EAX,EAX
JZ 0x0012a074
MOVZX EAX,byte ptr [RSP + 0x38]
MOV RSI,qword ptr [RSP + 0x8]
MOV RDX,qword ptr [RSP + 0x10]
MOV RCX,qword ptr [RSP + 0x18]
CMP AL,0x4
JA 0x0012a070
CMP AL,0x3
JNC 0x0012a0ad
CMP AL,0x2
JNZ 0x0012a074
MOVZX EAX,byte ptr [RBX]
AND EAX,0x1
JZ 0x0012a0a0
MOV RDI,qword ptr [RBX + 0x8]
CMP RDI,qword ptr [0x0019d7d8]
JZ 0x0012a0ba
MOV qword ptr [RBP],RBX
NOP dword ptr [RAX + RAX*0x1]
CMP RDI,qword ptr [0x0019d7d8]
MOV RAX,qword ptr [RBX + 0x18]
JZ 0x0012a080
MOV R8,qword ptr [RBX + 0x20]
MOV qword ptr [RSI],R8
MOV qword ptr [RDX],RDI
CMP qword ptr [0x0019d700],RDI
MOV qword ptr [RCX],RAX
JNZ 0x00129f98
MOVZX EAX,byte ptr [RSP + 0x38]
CMP AL,0x2
JZ 0x0012a090
CMP AL,0x5
JNZ 0x00129f98
MOV RAX,qword ptr [0x0019d7d8]
MOV qword ptr [RDX],RAX
JMP 0x00129f98
CMP AL,0x5
JZ 0x0012a002
ADD RSP,0x48
XOR EAX,EAX
POP RBX
POP RBP
RET
MOV RDI,qword ptr [RAX + 0x8]
MOV RBX,RAX
JMP 0x00129f75
LEA RAX,[0x1949f0]
MOV qword ptr [RDX],RAX
JMP 0x00129f98
MOV RDI,RBX
CMP byte ptr [RDI + 0x28],0x3
JNZ 0x00129f65
MOV RBX,qword ptr [RSP + 0x20]
MOVZX EAX,byte ptr [RBX]
JMP 0x00129f62
MOV RDI,qword ptr [RBX + 0x18]
JMP 0x0012a0a3
(translation_unit "undefined8 FUN_00129f00(undefined8 *param_1,undefined8 *param_2,long *param_3,undefined8 *param_4)\n\n{\n  undefined8 uVar1;\n  byte bVar2;\n  int iVar3;\n  byte *pbVar4;\n  byte *pbVar5;\n  long lVar6;\n  bool bVar7;\n  byte *local_38;\n  undefined8 uStack_30;\n  undefined8 local_28;\n  undefined8 uStack_20;\n  \n  pbVar4 = (byte *)*param_1;\n  bVar2 = *pbVar4;\n  pbVar5 = pbVar4;\n  if ((bVar2 & 1) != 0) {\n    lVar6 = *(long *)(pbVar4 + 8);\n    pbVar5 = *(byte **)(pbVar4 + 0x18);\n    if (lVar6 != DAT_0019d7d8) {\n      *param_2 = *(undefined8 *)(pbVar4 + 0x20);\n      *param_3 = lVar6;\n      *param_4 = pbVar5;\n      return 1;\n    }\n    bVar2 = *pbVar5;\n  }\n  local_38 = *(byte **)(pbVar5 + 0x10);\n  uStack_30 = *(undefined8 *)(pbVar5 + 0x18);\n  local_28 = *(undefined8 *)(pbVar5 + 0x20);\n  uStack_20 = *(undefined8 *)(pbVar5 + 0x28);\n  pbVar4 = pbVar5;\n  if (((bVar2 & 4) == 0) && ((byte)uStack_20 != '\0')) {\n    if ((bVar2 & 8) != 0) {\n      return 0;\n    }\n    *pbVar5 = *pbVar5 | 8;\n    iVar3 = FUN_001163e0(&local_38);\n    *pbVar5 = *pbVar5 & 0xf7;\n    if (iVar3 == 0) {\n      return 0;\n    }\n    if ((byte)uStack_20 < 5) {\n      if ((byte)uStack_20 < 3) {\n        if ((byte)uStack_20 != 2) {\n          return 0;\n        }\n        goto LAB_0012a002;\n      }\nLAB_0012a0ad:\n      bVar2 = *local_38;\n      pbVar4 = local_38;\n      goto LAB_00129f65;\n    }\n    if ((byte)uStack_20 != 5) {\n      return 0;\n    }\nLAB_0012a002:\n    bVar2 = *pbVar5;\n    if ((bVar2 & 1) == 0) {\nLAB_0012a0a3:\n      if (pbVar5[0x28] != 3) goto LAB_00129f65;\n      goto LAB_0012a0ad;\n    }\n    lVar6 = *(long *)(pbVar5 + 8);\n    if (lVar6 == DAT_0019d7d8) {\n      pbVar5 = *(byte **)(pbVar5 + 0x18);\n      goto LAB_0012a0a3;\n    }\n    *param_1 = pbVar5;\nLAB_0012a028:\n    pbVar4 = *(byte **)(pbVar5 + 0x18);\n    if (lVar6 != DAT_0019d7d8) {\n      *param_2 = *(undefined8 *)(pbVar5 + 0x20);\n      *param_3 = lVar6;\n      bVar7 = DAT_0019d700 != lVar6;\n      *param_4 = pbVar4;\n      if (bVar7) {\n        return 1;\n      }\n      goto LAB_0012a04f;\n    }\n    lVar6 = *(long *)(pbVar4 + 8);\n  }\n  else {\nLAB_00129f65:\n    lVar6 = *(long *)(pbVar4 + 8);\n    *param_1 = pbVar4;\n    pbVar5 = pbVar4;\n    if ((bVar2 & 1) != 0) goto LAB_0012a028;\n  }\n  lVar6 = *(long *)(lVar6 + 0x20);\n  *param_2 = local_28;\n  uVar1 = *(undefined8 *)(pbVar4 + 0x40);\n  *param_3 = lVar6;\n  bVar7 = DAT_0019d700 != lVar6;\n  *param_4 = uVar1;\n  if (bVar7) {\n    return 1;\n  }\nLAB_0012a04f:\n  if ((byte)uStack_20 == '\x02') {\n    *param_3 = 0x1949f0;\n  }\n  else if ((byte)uStack_20 == '\x05') {\n    *param_3 = DAT_0019d7d8;\n  }\n  return 1;\n}\n\n" (function_definition "undefined8 FUN_00129f00(undefined8 *param_1,undefined8 *param_2,long *param_3,undefined8 *param_4)\n\n{\n  undefined8 uVar1;\n  byte bVar2;\n  int iVar3;\n  byte *pbVar4;\n  byte *pbVar5;\n  long lVar6;\n  bool bVar7;\n  byte *local_38;\n  undefined8 uStack_30;\n  undefined8 local_28;\n  undefined8 uStack_20;\n  \n  pbVar4 = (byte *)*param_1;\n  bVar2 = *pbVar4;\n  pbVar5 = pbVar4;\n  if ((bVar2 & 1) != 0) {\n    lVar6 = *(long *)(pbVar4 + 8);\n    pbVar5 = *(byte **)(pbVar4 + 0x18);\n    if (lVar6 != DAT_0019d7d8) {\n      *param_2 = *(undefined8 *)(pbVar4 + 0x20);\n      *param_3 = lVar6;\n      *param_4 = pbVar5;\n      return 1;\n    }\n    bVar2 = *pbVar5;\n  }\n  local_38 = *(byte **)(pbVar5 + 0x10);\n  uStack_30 = *(undefined8 *)(pbVar5 + 0x18);\n  local_28 = *(undefined8 *)(pbVar5 + 0x20);\n  uStack_20 = *(undefined8 *)(pbVar5 + 0x28);\n  pbVar4 = pbVar5;\n  if (((bVar2 & 4) == 0) && ((byte)uStack_20 != '\0')) {\n    if ((bVar2 & 8) != 0) {\n      return 0;\n    }\n    *pbVar5 = *pbVar5 | 8;\n    iVar3 = FUN_001163e0(&local_38);\n    *pbVar5 = *pbVar5 & 0xf7;\n    if (iVar3 == 0) {\n      return 0;\n    }\n    if ((byte)uStack_20 < 5) {\n      if ((byte)uStack_20 < 3) {\n        if ((byte)uStack_20 != 2) {\n          return 0;\n        }\n        goto LAB_0012a002;\n      }\nLAB_0012a0ad:\n      bVar2 = *local_38;\n      pbVar4 = local_38;\n      goto LAB_00129f65;\n    }\n    if ((byte)uStack_20 != 5) {\n      return 0;\n    }\nLAB_0012a002:\n    bVar2 = *pbVar5;\n    if ((bVar2 & 1) == 0) {\nLAB_0012a0a3:\n      if (pbVar5[0x28] != 3) goto LAB_00129f65;\n      goto LAB_0012a0ad;\n    }\n    lVar6 = *(long *)(pbVar5 + 8);\n    if (lVar6 == DAT_0019d7d8) {\n      pbVar5 = *(byte **)(pbVar5 + 0x18);\n      goto LAB_0012a0a3;\n    }\n    *param_1 = pbVar5;\nLAB_0012a028:\n    pbVar4 = *(byte **)(pbVar5 + 0x18);\n    if (lVar6 != DAT_0019d7d8) {\n      *param_2 = *(undefined8 *)(pbVar5 + 0x20);\n      *param_3 = lVar6;\n      bVar7 = DAT_0019d700 != lVar6;\n      *param_4 = pbVar4;\n      if (bVar7) {\n        return 1;\n      }\n      goto LAB_0012a04f;\n    }\n    lVar6 = *(long *)(pbVar4 + 8);\n  }\n  else {\nLAB_00129f65:\n    lVar6 = *(long *)(pbVar4 + 8);\n    *param_1 = pbVar4;\n    pbVar5 = pbVar4;\n    if ((bVar2 & 1) != 0) goto LAB_0012a028;\n  }\n  lVar6 = *(long *)(lVar6 + 0x20);\n  *param_2 = local_28;\n  uVar1 = *(undefined8 *)(pbVar4 + 0x40);\n  *param_3 = lVar6;\n  bVar7 = DAT_0019d700 != lVar6;\n  *param_4 = uVar1;\n  if (bVar7) {\n    return 1;\n  }\nLAB_0012a04f:\n  if ((byte)uStack_20 == '\x02') {\n    *param_3 = 0x1949f0;\n  }\n  else if ((byte)uStack_20 == '\x05') {\n    *param_3 = DAT_0019d7d8;\n  }\n  return 1;\n}" type_identifier (function_declarator "FUN_00129f00(undefined8 *param_1,undefined8 *param_2,long *param_3,undefined8 *param_4)" identifier (parameter_list "(undefined8 *param_1,undefined8 *param_2,long *param_3,undefined8 *param_4)" ( (parameter_declaration "undefined8 *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "undefined8 *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "long *param_3" (sized_type_specifier "long" long) (pointer_declarator "*param_3" * identifier)) , (parameter_declaration "undefined8 *param_4" type_identifier (pointer_declarator "*param_4" * identifier)) ))) (compound_statement "{\n  undefined8 uVar1;\n  byte bVar2;\n  int iVar3;\n  byte *pbVar4;\n  byte *pbVar5;\n  long lVar6;\n  bool bVar7;\n  byte *local_38;\n  undefined8 uStack_30;\n  undefined8 local_28;\n  undefined8 uStack_20;\n  \n  pbVar4 = (byte *)*param_1;\n  bVar2 = *pbVar4;\n  pbVar5 = pbVar4;\n  if ((bVar2 & 1) != 0) {\n    lVar6 = *(long *)(pbVar4 + 8);\n    pbVar5 = *(byte **)(pbVar4 + 0x18);\n    if (lVar6 != DAT_0019d7d8) {\n      *param_2 = *(undefined8 *)(pbVar4 + 0x20);\n      *param_3 = lVar6;\n      *param_4 = pbVar5;\n      return 1;\n    }\n    bVar2 = *pbVar5;\n  }\n  local_38 = *(byte **)(pbVar5 + 0x10);\n  uStack_30 = *(undefined8 *)(pbVar5 + 0x18);\n  local_28 = *(undefined8 *)(pbVar5 + 0x20);\n  uStack_20 = *(undefined8 *)(pbVar5 + 0x28);\n  pbVar4 = pbVar5;\n  if (((bVar2 & 4) == 0) && ((byte)uStack_20 != '\0')) {\n    if ((bVar2 & 8) != 0) {\n      return 0;\n    }\n    *pbVar5 = *pbVar5 | 8;\n    iVar3 = FUN_001163e0(&local_38);\n    *pbVar5 = *pbVar5 & 0xf7;\n    if (iVar3 == 0) {\n      return 0;\n    }\n    if ((byte)uStack_20 < 5) {\n      if ((byte)uStack_20 < 3) {\n        if ((byte)uStack_20 != 2) {\n          return 0;\n        }\n        goto LAB_0012a002;\n      }\nLAB_0012a0ad:\n      bVar2 = *local_38;\n      pbVar4 = local_38;\n      goto LAB_00129f65;\n    }\n    if ((byte)uStack_20 != 5) {\n      return 0;\n    }\nLAB_0012a002:\n    bVar2 = *pbVar5;\n    if ((bVar2 & 1) == 0) {\nLAB_0012a0a3:\n      if (pbVar5[0x28] != 3) goto LAB_00129f65;\n      goto LAB_0012a0ad;\n    }\n    lVar6 = *(long *)(pbVar5 + 8);\n    if (lVar6 == DAT_0019d7d8) {\n      pbVar5 = *(byte **)(pbVar5 + 0x18);\n      goto LAB_0012a0a3;\n    }\n    *param_1 = pbVar5;\nLAB_0012a028:\n    pbVar4 = *(byte **)(pbVar5 + 0x18);\n    if (lVar6 != DAT_0019d7d8) {\n      *param_2 = *(undefined8 *)(pbVar5 + 0x20);\n      *param_3 = lVar6;\n      bVar7 = DAT_0019d700 != lVar6;\n      *param_4 = pbVar4;\n      if (bVar7) {\n        return 1;\n      }\n      goto LAB_0012a04f;\n    }\n    lVar6 = *(long *)(pbVar4 + 8);\n  }\n  else {\nLAB_00129f65:\n    lVar6 = *(long *)(pbVar4 + 8);\n    *param_1 = pbVar4;\n    pbVar5 = pbVar4;\n    if ((bVar2 & 1) != 0) goto LAB_0012a028;\n  }\n  lVar6 = *(long *)(lVar6 + 0x20);\n  *param_2 = local_28;\n  uVar1 = *(undefined8 *)(pbVar4 + 0x40);\n  *param_3 = lVar6;\n  bVar7 = DAT_0019d700 != lVar6;\n  *param_4 = uVar1;\n  if (bVar7) {\n    return 1;\n  }\nLAB_0012a04f:\n  if ((byte)uStack_20 == '\x02') {\n    *param_3 = 0x1949f0;\n  }\n  else if ((byte)uStack_20 == '\x05') {\n    *param_3 = DAT_0019d7d8;\n  }\n  return 1;\n}" { (declaration "undefined8 uVar1;" type_identifier identifier ;) (declaration "byte bVar2;" type_identifier identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "byte *pbVar4;" type_identifier (pointer_declarator "*pbVar4" * identifier) ;) (declaration "byte *pbVar5;" type_identifier (pointer_declarator "*pbVar5" * identifier) ;) (declaration "long lVar6;" (sized_type_specifier "long" long) identifier ;) (declaration "bool bVar7;" primitive_type identifier ;) (declaration "byte *local_38;" type_identifier (pointer_declarator "*local_38" * identifier) ;) (declaration "undefined8 uStack_30;" type_identifier identifier ;) (declaration "undefined8 local_28;" type_identifier identifier ;) (declaration "undefined8 uStack_20;" type_identifier identifier ;) (expression_statement "pbVar4 = (byte *)*param_1;" (assignment_expression "pbVar4 = (byte *)*param_1" identifier = (cast_expression "(byte *)*param_1" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_1" * identifier))) ;) (expression_statement "bVar2 = *pbVar4;" (assignment_expression "bVar2 = *pbVar4" identifier = (pointer_expression "*pbVar4" * identifier)) ;) (expression_statement "pbVar5 = pbVar4;" (assignment_expression "pbVar5 = pbVar4" identifier = identifier) ;) (if_statement "if ((bVar2 & 1) != 0) {\n    lVar6 = *(long *)(pbVar4 + 8);\n    pbVar5 = *(byte **)(pbVar4 + 0x18);\n    if (lVar6 != DAT_0019d7d8) {\n      *param_2 = *(undefined8 *)(pbVar4 + 0x20);\n      *param_3 = lVar6;\n      *param_4 = pbVar5;\n      return 1;\n    }\n    bVar2 = *pbVar5;\n  }" if (parenthesized_expression "((bVar2 & 1) != 0)" ( (binary_expression "(bVar2 & 1) != 0" (parenthesized_expression "(bVar2 & 1)" ( (binary_expression "bVar2 & 1" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n    lVar6 = *(long *)(pbVar4 + 8);\n    pbVar5 = *(byte **)(pbVar4 + 0x18);\n    if (lVar6 != DAT_0019d7d8) {\n      *param_2 = *(undefined8 *)(pbVar4 + 0x20);\n      *param_3 = lVar6;\n      *param_4 = pbVar5;\n      return 1;\n    }\n    bVar2 = *pbVar5;\n  }" { (expression_statement "lVar6 = *(long *)(pbVar4 + 8);" (assignment_expression "lVar6 = *(long *)(pbVar4 + 8)" identifier = (pointer_expression "*(long *)(pbVar4 + 8)" * (cast_expression "(long *)(pbVar4 + 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pbVar4 + 8)" ( (binary_expression "pbVar4 + 8" identifier + number_literal) ))))) ;) (expression_statement "pbVar5 = *(byte **)(pbVar4 + 0x18);" (assignment_expression "pbVar5 = *(byte **)(pbVar4 + 0x18)" identifier = (pointer_expression "*(byte **)(pbVar4 + 0x18)" * (cast_expression "(byte **)(pbVar4 + 0x18)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pbVar4 + 0x18)" ( (binary_expression "pbVar4 + 0x18" identifier + number_literal) ))))) ;) (if_statement "if (lVar6 != DAT_0019d7d8) {\n      *param_2 = *(undefined8 *)(pbVar4 + 0x20);\n      *param_3 = lVar6;\n      *param_4 = pbVar5;\n      return 1;\n    }" if (parenthesized_expression "(lVar6 != DAT_0019d7d8)" ( (binary_expression "lVar6 != DAT_0019d7d8" identifier != identifier) )) (compound_statement "{\n      *param_2 = *(undefined8 *)(pbVar4 + 0x20);\n      *param_3 = lVar6;\n      *param_4 = pbVar5;\n      return 1;\n    }" { (expression_statement "*param_2 = *(undefined8 *)(pbVar4 + 0x20);" (assignment_expression "*param_2 = *(undefined8 *)(pbVar4 + 0x20)" (pointer_expression "*param_2" * identifier) = (pointer_expression "*(undefined8 *)(pbVar4 + 0x20)" * (cast_expression "(undefined8 *)(pbVar4 + 0x20)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pbVar4 + 0x20)" ( (binary_expression "pbVar4 + 0x20" identifier + number_literal) ))))) ;) (expression_statement "*param_3 = lVar6;" (assignment_expression "*param_3 = lVar6" (pointer_expression "*param_3" * identifier) = identifier) ;) (expression_statement "*param_4 = pbVar5;" (assignment_expression "*param_4 = pbVar5" (pointer_expression "*param_4" * identifier) = identifier) ;) (return_statement "return 1;" return number_literal ;) })) (expression_statement "bVar2 = *pbVar5;" (assignment_expression "bVar2 = *pbVar5" identifier = (pointer_expression "*pbVar5" * identifier)) ;) })) (expression_statement "local_38 = *(byte **)(pbVar5 + 0x10);" (assignment_expression "local_38 = *(byte **)(pbVar5 + 0x10)" identifier = (pointer_expression "*(byte **)(pbVar5 + 0x10)" * (cast_expression "(byte **)(pbVar5 + 0x10)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pbVar5 + 0x10)" ( (binary_expression "pbVar5 + 0x10" identifier + number_literal) ))))) ;) (expression_statement "uStack_30 = *(undefined8 *)(pbVar5 + 0x18);" (assignment_expression "uStack_30 = *(undefined8 *)(pbVar5 + 0x18)" identifier = (pointer_expression "*(undefined8 *)(pbVar5 + 0x18)" * (cast_expression "(undefined8 *)(pbVar5 + 0x18)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pbVar5 + 0x18)" ( (binary_expression "pbVar5 + 0x18" identifier + number_literal) ))))) ;) (expression_statement "local_28 = *(undefined8 *)(pbVar5 + 0x20);" (assignment_expression "local_28 = *(undefined8 *)(pbVar5 + 0x20)" identifier = (pointer_expression "*(undefined8 *)(pbVar5 + 0x20)" * (cast_expression "(undefined8 *)(pbVar5 + 0x20)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pbVar5 + 0x20)" ( (binary_expression "pbVar5 + 0x20" identifier + number_literal) ))))) ;) (expression_statement "uStack_20 = *(undefined8 *)(pbVar5 + 0x28);" (assignment_expression "uStack_20 = *(undefined8 *)(pbVar5 + 0x28)" identifier = (pointer_expression "*(undefined8 *)(pbVar5 + 0x28)" * (cast_expression "(undefined8 *)(pbVar5 + 0x28)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pbVar5 + 0x28)" ( (binary_expression "pbVar5 + 0x28" identifier + number_literal) ))))) ;) (expression_statement "pbVar4 = pbVar5;" (assignment_expression "pbVar4 = pbVar5" identifier = identifier) ;) (if_statement "if (((bVar2 & 4) == 0) && ((byte)uStack_20 != '\0')) {\n    if ((bVar2 & 8) != 0) {\n      return 0;\n    }\n    *pbVar5 = *pbVar5 | 8;\n    iVar3 = FUN_001163e0(&local_38);\n    *pbVar5 = *pbVar5 & 0xf7;\n    if (iVar3 == 0) {\n      return 0;\n    }\n    if ((byte)uStack_20 < 5) {\n      if ((byte)uStack_20 < 3) {\n        if ((byte)uStack_20 != 2) {\n          return 0;\n        }\n        goto LAB_0012a002;\n      }\nLAB_0012a0ad:\n      bVar2 = *local_38;\n      pbVar4 = local_38;\n      goto LAB_00129f65;\n    }\n    if ((byte)uStack_20 != 5) {\n      return 0;\n    }\nLAB_0012a002:\n    bVar2 = *pbVar5;\n    if ((bVar2 & 1) == 0) {\nLAB_0012a0a3:\n      if (pbVar5[0x28] != 3) goto LAB_00129f65;\n      goto LAB_0012a0ad;\n    }\n    lVar6 = *(long *)(pbVar5 + 8);\n    if (lVar6 == DAT_0019d7d8) {\n      pbVar5 = *(byte **)(pbVar5 + 0x18);\n      goto LAB_0012a0a3;\n    }\n    *param_1 = pbVar5;\nLAB_0012a028:\n    pbVar4 = *(byte **)(pbVar5 + 0x18);\n    if (lVar6 != DAT_0019d7d8) {\n      *param_2 = *(undefined8 *)(pbVar5 + 0x20);\n      *param_3 = lVar6;\n      bVar7 = DAT_0019d700 != lVar6;\n      *param_4 = pbVar4;\n      if (bVar7) {\n        return 1;\n      }\n      goto LAB_0012a04f;\n    }\n    lVar6 = *(long *)(pbVar4 + 8);\n  }\n  else {\nLAB_00129f65:\n    lVar6 = *(long *)(pbVar4 + 8);\n    *param_1 = pbVar4;\n    pbVar5 = pbVar4;\n    if ((bVar2 & 1) != 0) goto LAB_0012a028;\n  }" if (parenthesized_expression "(((bVar2 & 4) == 0) && ((byte)uStack_20 != '\0'))" ( (binary_expression "((bVar2 & 4) == 0) && ((byte)uStack_20 != '\0')" (parenthesized_expression "((bVar2 & 4) == 0)" ( (binary_expression "(bVar2 & 4) == 0" (parenthesized_expression "(bVar2 & 4)" ( (binary_expression "bVar2 & 4" identifier & number_literal) )) == number_literal) )) && (parenthesized_expression "((byte)uStack_20 != '\0')" ( (binary_expression "(byte)uStack_20 != '\0'" (cast_expression "(byte)uStack_20" ( (type_descriptor "byte" type_identifier) ) identifier) != (char_literal "'\0'" ' escape_sequence ')) ))) )) (compound_statement "{\n    if ((bVar2 & 8) != 0) {\n      return 0;\n    }\n    *pbVar5 = *pbVar5 | 8;\n    iVar3 = FUN_001163e0(&local_38);\n    *pbVar5 = *pbVar5 & 0xf7;\n    if (iVar3 == 0) {\n      return 0;\n    }\n    if ((byte)uStack_20 < 5) {\n      if ((byte)uStack_20 < 3) {\n        if ((byte)uStack_20 != 2) {\n          return 0;\n        }\n        goto LAB_0012a002;\n      }\nLAB_0012a0ad:\n      bVar2 = *local_38;\n      pbVar4 = local_38;\n      goto LAB_00129f65;\n    }\n    if ((byte)uStack_20 != 5) {\n      return 0;\n    }\nLAB_0012a002:\n    bVar2 = *pbVar5;\n    if ((bVar2 & 1) == 0) {\nLAB_0012a0a3:\n      if (pbVar5[0x28] != 3) goto LAB_00129f65;\n      goto LAB_0012a0ad;\n    }\n    lVar6 = *(long *)(pbVar5 + 8);\n    if (lVar6 == DAT_0019d7d8) {\n      pbVar5 = *(byte **)(pbVar5 + 0x18);\n      goto LAB_0012a0a3;\n    }\n    *param_1 = pbVar5;\nLAB_0012a028:\n    pbVar4 = *(byte **)(pbVar5 + 0x18);\n    if (lVar6 != DAT_0019d7d8) {\n      *param_2 = *(undefined8 *)(pbVar5 + 0x20);\n      *param_3 = lVar6;\n      bVar7 = DAT_0019d700 != lVar6;\n      *param_4 = pbVar4;\n      if (bVar7) {\n        return 1;\n      }\n      goto LAB_0012a04f;\n    }\n    lVar6 = *(long *)(pbVar4 + 8);\n  }" { (if_statement "if ((bVar2 & 8) != 0) {\n      return 0;\n    }" if (parenthesized_expression "((bVar2 & 8) != 0)" ( (binary_expression "(bVar2 & 8) != 0" (parenthesized_expression "(bVar2 & 8)" ( (binary_expression "bVar2 & 8" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n      return 0;\n    }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "*pbVar5 = *pbVar5 | 8;" (assignment_expression "*pbVar5 = *pbVar5 | 8" (pointer_expression "*pbVar5" * identifier) = (binary_expression "*pbVar5 | 8" (pointer_expression "*pbVar5" * identifier) | number_literal)) ;) (expression_statement "iVar3 = FUN_001163e0(&local_38);" (assignment_expression "iVar3 = FUN_001163e0(&local_38)" identifier = (call_expression "FUN_001163e0(&local_38)" identifier (argument_list "(&local_38)" ( (pointer_expression "&local_38" & identifier) )))) ;) (expression_statement "*pbVar5 = *pbVar5 & 0xf7;" (assignment_expression "*pbVar5 = *pbVar5 & 0xf7" (pointer_expression "*pbVar5" * identifier) = (binary_expression "*pbVar5 & 0xf7" (pointer_expression "*pbVar5" * identifier) & number_literal)) ;) (if_statement "if (iVar3 == 0) {\n      return 0;\n    }" if (parenthesized_expression "(iVar3 == 0)" ( (binary_expression "iVar3 == 0" identifier == number_literal) )) (compound_statement "{\n      return 0;\n    }" { (return_statement "return 0;" return number_literal ;) })) (if_statement "if ((byte)uStack_20 < 5) {\n      if ((byte)uStack_20 < 3) {\n        if ((byte)uStack_20 != 2) {\n          return 0;\n        }\n        goto LAB_0012a002;\n      }\nLAB_0012a0ad:\n      bVar2 = *local_38;\n      pbVar4 = local_38;\n      goto LAB_00129f65;\n    }" if (parenthesized_expression "((byte)uStack_20 < 5)" ( (binary_expression "(byte)uStack_20 < 5" (cast_expression "(byte)uStack_20" ( (type_descriptor "byte" type_identifier) ) identifier) < number_literal) )) (compound_statement "{\n      if ((byte)uStack_20 < 3) {\n        if ((byte)uStack_20 != 2) {\n          return 0;\n        }\n        goto LAB_0012a002;\n      }\nLAB_0012a0ad:\n      bVar2 = *local_38;\n      pbVar4 = local_38;\n      goto LAB_00129f65;\n    }" { (if_statement "if ((byte)uStack_20 < 3) {\n        if ((byte)uStack_20 != 2) {\n          return 0;\n        }\n        goto LAB_0012a002;\n      }" if (parenthesized_expression "((byte)uStack_20 < 3)" ( (binary_expression "(byte)uStack_20 < 3" (cast_expression "(byte)uStack_20" ( (type_descriptor "byte" type_identifier) ) identifier) < number_literal) )) (compound_statement "{\n        if ((byte)uStack_20 != 2) {\n          return 0;\n        }\n        goto LAB_0012a002;\n      }" { (if_statement "if ((byte)uStack_20 != 2) {\n          return 0;\n        }" if (parenthesized_expression "((byte)uStack_20 != 2)" ( (binary_expression "(byte)uStack_20 != 2" (cast_expression "(byte)uStack_20" ( (type_descriptor "byte" type_identifier) ) identifier) != number_literal) )) (compound_statement "{\n          return 0;\n        }" { (return_statement "return 0;" return number_literal ;) })) (goto_statement "goto LAB_0012a002;" goto statement_identifier ;) })) (labeled_statement "LAB_0012a0ad:\n      bVar2 = *local_38;" statement_identifier : (expression_statement "bVar2 = *local_38;" (assignment_expression "bVar2 = *local_38" identifier = (pointer_expression "*local_38" * identifier)) ;)) (expression_statement "pbVar4 = local_38;" (assignment_expression "pbVar4 = local_38" identifier = identifier) ;) (goto_statement "goto LAB_00129f65;" goto statement_identifier ;) })) (if_statement "if ((byte)uStack_20 != 5) {\n      return 0;\n    }" if (parenthesized_expression "((byte)uStack_20 != 5)" ( (binary_expression "(byte)uStack_20 != 5" (cast_expression "(byte)uStack_20" ( (type_descriptor "byte" type_identifier) ) identifier) != number_literal) )) (compound_statement "{\n      return 0;\n    }" { (return_statement "return 0;" return number_literal ;) })) (labeled_statement "LAB_0012a002:\n    bVar2 = *pbVar5;" statement_identifier : (expression_statement "bVar2 = *pbVar5;" (assignment_expression "bVar2 = *pbVar5" identifier = (pointer_expression "*pbVar5" * identifier)) ;)) (if_statement "if ((bVar2 & 1) == 0) {\nLAB_0012a0a3:\n      if (pbVar5[0x28] != 3) goto LAB_00129f65;\n      goto LAB_0012a0ad;\n    }" if (parenthesized_expression "((bVar2 & 1) == 0)" ( (binary_expression "(bVar2 & 1) == 0" (parenthesized_expression "(bVar2 & 1)" ( (binary_expression "bVar2 & 1" identifier & number_literal) )) == number_literal) )) (compound_statement "{\nLAB_0012a0a3:\n      if (pbVar5[0x28] != 3) goto LAB_00129f65;\n      goto LAB_0012a0ad;\n    }" { (labeled_statement "LAB_0012a0a3:\n      if (pbVar5[0x28] != 3) goto LAB_00129f65;" statement_identifier : (if_statement "if (pbVar5[0x28] != 3) goto LAB_00129f65;" if (parenthesized_expression "(pbVar5[0x28] != 3)" ( (binary_expression "pbVar5[0x28] != 3" (subscript_expression "pbVar5[0x28]" identifier [ number_literal ]) != number_literal) )) (goto_statement "goto LAB_00129f65;" goto statement_identifier ;))) (goto_statement "goto LAB_0012a0ad;" goto statement_identifier ;) })) (expression_statement "lVar6 = *(long *)(pbVar5 + 8);" (assignment_expression "lVar6 = *(long *)(pbVar5 + 8)" identifier = (pointer_expression "*(long *)(pbVar5 + 8)" * (cast_expression "(long *)(pbVar5 + 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pbVar5 + 8)" ( (binary_expression "pbVar5 + 8" identifier + number_literal) ))))) ;) (if_statement "if (lVar6 == DAT_0019d7d8) {\n      pbVar5 = *(byte **)(pbVar5 + 0x18);\n      goto LAB_0012a0a3;\n    }" if (parenthesized_expression "(lVar6 == DAT_0019d7d8)" ( (binary_expression "lVar6 == DAT_0019d7d8" identifier == identifier) )) (compound_statement "{\n      pbVar5 = *(byte **)(pbVar5 + 0x18);\n      goto LAB_0012a0a3;\n    }" { (expression_statement "pbVar5 = *(byte **)(pbVar5 + 0x18);" (assignment_expression "pbVar5 = *(byte **)(pbVar5 + 0x18)" identifier = (pointer_expression "*(byte **)(pbVar5 + 0x18)" * (cast_expression "(byte **)(pbVar5 + 0x18)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pbVar5 + 0x18)" ( (binary_expression "pbVar5 + 0x18" identifier + number_literal) ))))) ;) (goto_statement "goto LAB_0012a0a3;" goto statement_identifier ;) })) (expression_statement "*param_1 = pbVar5;" (assignment_expression "*param_1 = pbVar5" (pointer_expression "*param_1" * identifier) = identifier) ;) (labeled_statement "LAB_0012a028:\n    pbVar4 = *(byte **)(pbVar5 + 0x18);" statement_identifier : (expression_statement "pbVar4 = *(byte **)(pbVar5 + 0x18);" (assignment_expression "pbVar4 = *(byte **)(pbVar5 + 0x18)" identifier = (pointer_expression "*(byte **)(pbVar5 + 0x18)" * (cast_expression "(byte **)(pbVar5 + 0x18)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pbVar5 + 0x18)" ( (binary_expression "pbVar5 + 0x18" identifier + number_literal) ))))) ;)) (if_statement "if (lVar6 != DAT_0019d7d8) {\n      *param_2 = *(undefined8 *)(pbVar5 + 0x20);\n      *param_3 = lVar6;\n      bVar7 = DAT_0019d700 != lVar6;\n      *param_4 = pbVar4;\n      if (bVar7) {\n        return 1;\n      }\n      goto LAB_0012a04f;\n    }" if (parenthesized_expression "(lVar6 != DAT_0019d7d8)" ( (binary_expression "lVar6 != DAT_0019d7d8" identifier != identifier) )) (compound_statement "{\n      *param_2 = *(undefined8 *)(pbVar5 + 0x20);\n      *param_3 = lVar6;\n      bVar7 = DAT_0019d700 != lVar6;\n      *param_4 = pbVar4;\n      if (bVar7) {\n        return 1;\n      }\n      goto LAB_0012a04f;\n    }" { (expression_statement "*param_2 = *(undefined8 *)(pbVar5 + 0x20);" (assignment_expression "*param_2 = *(undefined8 *)(pbVar5 + 0x20)" (pointer_expression "*param_2" * identifier) = (pointer_expression "*(undefined8 *)(pbVar5 + 0x20)" * (cast_expression "(undefined8 *)(pbVar5 + 0x20)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pbVar5 + 0x20)" ( (binary_expression "pbVar5 + 0x20" identifier + number_literal) ))))) ;) (expression_statement "*param_3 = lVar6;" (assignment_expression "*param_3 = lVar6" (pointer_expression "*param_3" * identifier) = identifier) ;) (expression_statement "bVar7 = DAT_0019d700 != lVar6;" (assignment_expression "bVar7 = DAT_0019d700 != lVar6" identifier = (binary_expression "DAT_0019d700 != lVar6" identifier != identifier)) ;) (expression_statement "*param_4 = pbVar4;" (assignment_expression "*param_4 = pbVar4" (pointer_expression "*param_4" * identifier) = identifier) ;) (if_statement "if (bVar7) {\n        return 1;\n      }" if (parenthesized_expression "(bVar7)" ( identifier )) (compound_statement "{\n        return 1;\n      }" { (return_statement "return 1;" return number_literal ;) })) (goto_statement "goto LAB_0012a04f;" goto statement_identifier ;) })) (expression_statement "lVar6 = *(long *)(pbVar4 + 8);" (assignment_expression "lVar6 = *(long *)(pbVar4 + 8)" identifier = (pointer_expression "*(long *)(pbVar4 + 8)" * (cast_expression "(long *)(pbVar4 + 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pbVar4 + 8)" ( (binary_expression "pbVar4 + 8" identifier + number_literal) ))))) ;) }) (else_clause "else {\nLAB_00129f65:\n    lVar6 = *(long *)(pbVar4 + 8);\n    *param_1 = pbVar4;\n    pbVar5 = pbVar4;\n    if ((bVar2 & 1) != 0) goto LAB_0012a028;\n  }" else (compound_statement "{\nLAB_00129f65:\n    lVar6 = *(long *)(pbVar4 + 8);\n    *param_1 = pbVar4;\n    pbVar5 = pbVar4;\n    if ((bVar2 & 1) != 0) goto LAB_0012a028;\n  }" { (labeled_statement "LAB_00129f65:\n    lVar6 = *(long *)(pbVar4 + 8);" statement_identifier : (expression_statement "lVar6 = *(long *)(pbVar4 + 8);" (assignment_expression "lVar6 = *(long *)(pbVar4 + 8)" identifier = (pointer_expression "*(long *)(pbVar4 + 8)" * (cast_expression "(long *)(pbVar4 + 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pbVar4 + 8)" ( (binary_expression "pbVar4 + 8" identifier + number_literal) ))))) ;)) (expression_statement "*param_1 = pbVar4;" (assignment_expression "*param_1 = pbVar4" (pointer_expression "*param_1" * identifier) = identifier) ;) (expression_statement "pbVar5 = pbVar4;" (assignment_expression "pbVar5 = pbVar4" identifier = identifier) ;) (if_statement "if ((bVar2 & 1) != 0) goto LAB_0012a028;" if (parenthesized_expression "((bVar2 & 1) != 0)" ( (binary_expression "(bVar2 & 1) != 0" (parenthesized_expression "(bVar2 & 1)" ( (binary_expression "bVar2 & 1" identifier & number_literal) )) != number_literal) )) (goto_statement "goto LAB_0012a028;" goto statement_identifier ;)) }))) (expression_statement "lVar6 = *(long *)(lVar6 + 0x20);" (assignment_expression "lVar6 = *(long *)(lVar6 + 0x20)" identifier = (pointer_expression "*(long *)(lVar6 + 0x20)" * (cast_expression "(long *)(lVar6 + 0x20)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar6 + 0x20)" ( (binary_expression "lVar6 + 0x20" identifier + number_literal) ))))) ;) (expression_statement "*param_2 = local_28;" (assignment_expression "*param_2 = local_28" (pointer_expression "*param_2" * identifier) = identifier) ;) (expression_statement "uVar1 = *(undefined8 *)(pbVar4 + 0x40);" (assignment_expression "uVar1 = *(undefined8 *)(pbVar4 + 0x40)" identifier = (pointer_expression "*(undefined8 *)(pbVar4 + 0x40)" * (cast_expression "(undefined8 *)(pbVar4 + 0x40)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pbVar4 + 0x40)" ( (binary_expression "pbVar4 + 0x40" identifier + number_literal) ))))) ;) (expression_statement "*param_3 = lVar6;" (assignment_expression "*param_3 = lVar6" (pointer_expression "*param_3" * identifier) = identifier) ;) (expression_statement "bVar7 = DAT_0019d700 != lVar6;" (assignment_expression "bVar7 = DAT_0019d700 != lVar6" identifier = (binary_expression "DAT_0019d700 != lVar6" identifier != identifier)) ;) (expression_statement "*param_4 = uVar1;" (assignment_expression "*param_4 = uVar1" (pointer_expression "*param_4" * identifier) = identifier) ;) (if_statement "if (bVar7) {\n    return 1;\n  }" if (parenthesized_expression "(bVar7)" ( identifier )) (compound_statement "{\n    return 1;\n  }" { (return_statement "return 1;" return number_literal ;) })) (labeled_statement "LAB_0012a04f:\n  if ((byte)uStack_20 == '\x02') {\n    *param_3 = 0x1949f0;\n  }\n  else if ((byte)uStack_20 == '\x05') {\n    *param_3 = DAT_0019d7d8;\n  }" statement_identifier : (if_statement "if ((byte)uStack_20 == '\x02') {\n    *param_3 = 0x1949f0;\n  }\n  else if ((byte)uStack_20 == '\x05') {\n    *param_3 = DAT_0019d7d8;\n  }" if (parenthesized_expression "((byte)uStack_20 == '\x02')" ( (binary_expression "(byte)uStack_20 == '\x02'" (cast_expression "(byte)uStack_20" ( (type_descriptor "byte" type_identifier) ) identifier) == (char_literal "'\x02'" ' escape_sequence ')) )) (compound_statement "{\n    *param_3 = 0x1949f0;\n  }" { (expression_statement "*param_3 = 0x1949f0;" (assignment_expression "*param_3 = 0x1949f0" (pointer_expression "*param_3" * identifier) = number_literal) ;) }) (else_clause "else if ((byte)uStack_20 == '\x05') {\n    *param_3 = DAT_0019d7d8;\n  }" else (if_statement "if ((byte)uStack_20 == '\x05') {\n    *param_3 = DAT_0019d7d8;\n  }" if (parenthesized_expression "((byte)uStack_20 == '\x05')" ( (binary_expression "(byte)uStack_20 == '\x05'" (cast_expression "(byte)uStack_20" ( (type_descriptor "byte" type_identifier) ) identifier) == (char_literal "'\x05'" ' escape_sequence ')) )) (compound_statement "{\n    *param_3 = DAT_0019d7d8;\n  }" { (expression_statement "*param_3 = DAT_0019d7d8;" (assignment_expression "*param_3 = DAT_0019d7d8" (pointer_expression "*param_3" * identifier) = identifier) ;) }))))) (return_statement "return 1;" return number_literal ;) })))
(translation_unit "int snapshot_symbol(symbolS **symbolPP,valueT *valueP,segT *segP,fragS **fragPP)\n\n{\n  byte bVar1;\n  int iVar2;\n  fragS *pfVar3;\n  fragS *pfVar4;\n  segT paVar5;\n  bool bVar6;\n  expressionS exp;\n  \n  pfVar3 = (fragS *)*symbolPP;\n  bVar1 = (byte)pfVar3->fr_address;\n  pfVar4 = pfVar3;\n  if ((bVar1 & 1) != 0) {\n    paVar5 = (segT)pfVar3->last_fr_address;\n    pfVar4 = (fragS *)pfVar3->fr_var;\n    if (paVar5 != reg_section) {\n      *valueP = pfVar3->fr_offset;\n      *segP = paVar5;\n      *fragPP = pfVar4;\n      return 1;\n    }\n    bVar1 = (byte)pfVar4->fr_address;\n  }\n  exp.X_add_symbol = (symbolS *)pfVar4->fr_fix;\n  exp.X_op_symbol = (symbolS *)pfVar4->fr_var;\n  exp.X_add_number = pfVar4->fr_offset;\n  exp._24_8_ = pfVar4->fr_symbol;\n  pfVar3 = pfVar4;\n  if (((bVar1 & 4) == 0) && (exp._24_1_ != '\0')) {\n    if ((bVar1 & 8) != 0) {\n      return 0;\n    }\n    *(byte *)&pfVar4->fr_address = (byte)pfVar4->fr_address | 8;\n    iVar2 = resolve_expression(&exp);\n    *(byte *)&pfVar4->fr_address = (byte)pfVar4->fr_address & 0xf7;\n    if (iVar2 == 0) {\n      return 0;\n    }\n    if ((byte)exp._24_1_ < 5) {\n      if ((byte)exp._24_1_ < 3) {\n        if (exp._24_1_ != '\x02') {\n          return 0;\n        }\n        goto LAB_0012a002;\n      }\nLAB_0012a0ad:\n      bVar1 = *(byte *)&(exp.X_add_symbol)->sy_flags;\n      pfVar3 = (fragS *)exp.X_add_symbol;\n      goto LAB_00129f65;\n    }\n    if (exp._24_1_ != '\x05') {\n      return 0;\n    }\nLAB_0012a002:\n    bVar1 = (byte)pfVar4->fr_address;\n    if ((bVar1 & 1) == 0) {\nLAB_0012a0a3:\n      if (*(char *)&pfVar4->fr_symbol != '\x03') goto LAB_00129f65;\n      goto LAB_0012a0ad;\n    }\n    paVar5 = (segT)pfVar4->last_fr_address;\n    if (paVar5 == reg_section) {\n      pfVar4 = (fragS *)pfVar4->fr_var;\n      goto LAB_0012a0a3;\n    }\n    *symbolPP = (symbolS *)pfVar4;\nLAB_0012a028:\n    pfVar3 = (fragS *)pfVar4->fr_var;\n    if (paVar5 != reg_section) {\n      *valueP = pfVar4->fr_offset;\n      *segP = paVar5;\n      bVar6 = expr_section != paVar5;\n      *fragPP = pfVar3;\n      if (bVar6) {\n        return 1;\n      }\n      goto LAB_0012a04f;\n    }\n    paVar5 = (segT)pfVar3->last_fr_address;\n  }\n  else {\nLAB_00129f65:\n    paVar5 = (segT)pfVar3->last_fr_address;\n    *symbolPP = (symbolS *)pfVar3;\n    pfVar4 = pfVar3;\n    if ((bVar1 & 1) != 0) goto LAB_0012a028;\n  }\n  paVar5 = *(segT *)&paVar5->flags;\n  *valueP = exp.X_add_number;\n  pfVar3 = (fragS *)pfVar3->fr_file;\n  *segP = paVar5;\n  bVar6 = expr_section != paVar5;\n  *fragPP = pfVar3;\n  if (bVar6) {\n    return 1;\n  }\nLAB_0012a04f:\n  if (exp._24_1_ == '\x02') {\n    *segP = (segT)(_bfd_std_section + 0x230);\n  }\n  else if (exp._24_1_ == '\x05') {\n    *segP = reg_section;\n  }\n  return 1;\n}\n\n" (function_definition "int snapshot_symbol(symbolS **symbolPP,valueT *valueP,segT *segP,fragS **fragPP)\n\n{\n  byte bVar1;\n  int iVar2;\n  fragS *pfVar3;\n  fragS *pfVar4;\n  segT paVar5;\n  bool bVar6;\n  expressionS exp;\n  \n  pfVar3 = (fragS *)*symbolPP;\n  bVar1 = (byte)pfVar3->fr_address;\n  pfVar4 = pfVar3;\n  if ((bVar1 & 1) != 0) {\n    paVar5 = (segT)pfVar3->last_fr_address;\n    pfVar4 = (fragS *)pfVar3->fr_var;\n    if (paVar5 != reg_section) {\n      *valueP = pfVar3->fr_offset;\n      *segP = paVar5;\n      *fragPP = pfVar4;\n      return 1;\n    }\n    bVar1 = (byte)pfVar4->fr_address;\n  }\n  exp.X_add_symbol = (symbolS *)pfVar4->fr_fix;\n  exp.X_op_symbol = (symbolS *)pfVar4->fr_var;\n  exp.X_add_number = pfVar4->fr_offset;\n  exp._24_8_ = pfVar4->fr_symbol;\n  pfVar3 = pfVar4;\n  if (((bVar1 & 4) == 0) && (exp._24_1_ != '\0')) {\n    if ((bVar1 & 8) != 0) {\n      return 0;\n    }\n    *(byte *)&pfVar4->fr_address = (byte)pfVar4->fr_address | 8;\n    iVar2 = resolve_expression(&exp);\n    *(byte *)&pfVar4->fr_address = (byte)pfVar4->fr_address & 0xf7;\n    if (iVar2 == 0) {\n      return 0;\n    }\n    if ((byte)exp._24_1_ < 5) {\n      if ((byte)exp._24_1_ < 3) {\n        if (exp._24_1_ != '\x02') {\n          return 0;\n        }\n        goto LAB_0012a002;\n      }\nLAB_0012a0ad:\n      bVar1 = *(byte *)&(exp.X_add_symbol)->sy_flags;\n      pfVar3 = (fragS *)exp.X_add_symbol;\n      goto LAB_00129f65;\n    }\n    if (exp._24_1_ != '\x05') {\n      return 0;\n    }\nLAB_0012a002:\n    bVar1 = (byte)pfVar4->fr_address;\n    if ((bVar1 & 1) == 0) {\nLAB_0012a0a3:\n      if (*(char *)&pfVar4->fr_symbol != '\x03') goto LAB_00129f65;\n      goto LAB_0012a0ad;\n    }\n    paVar5 = (segT)pfVar4->last_fr_address;\n    if (paVar5 == reg_section) {\n      pfVar4 = (fragS *)pfVar4->fr_var;\n      goto LAB_0012a0a3;\n    }\n    *symbolPP = (symbolS *)pfVar4;\nLAB_0012a028:\n    pfVar3 = (fragS *)pfVar4->fr_var;\n    if (paVar5 != reg_section) {\n      *valueP = pfVar4->fr_offset;\n      *segP = paVar5;\n      bVar6 = expr_section != paVar5;\n      *fragPP = pfVar3;\n      if (bVar6) {\n        return 1;\n      }\n      goto LAB_0012a04f;\n    }\n    paVar5 = (segT)pfVar3->last_fr_address;\n  }\n  else {\nLAB_00129f65:\n    paVar5 = (segT)pfVar3->last_fr_address;\n    *symbolPP = (symbolS *)pfVar3;\n    pfVar4 = pfVar3;\n    if ((bVar1 & 1) != 0) goto LAB_0012a028;\n  }\n  paVar5 = *(segT *)&paVar5->flags;\n  *valueP = exp.X_add_number;\n  pfVar3 = (fragS *)pfVar3->fr_file;\n  *segP = paVar5;\n  bVar6 = expr_section != paVar5;\n  *fragPP = pfVar3;\n  if (bVar6) {\n    return 1;\n  }\nLAB_0012a04f:\n  if (exp._24_1_ == '\x02') {\n    *segP = (segT)(_bfd_std_section + 0x230);\n  }\n  else if (exp._24_1_ == '\x05') {\n    *segP = reg_section;\n  }\n  return 1;\n}" primitive_type (function_declarator "snapshot_symbol(symbolS **symbolPP,valueT *valueP,segT *segP,fragS **fragPP)" identifier (parameter_list "(symbolS **symbolPP,valueT *valueP,segT *segP,fragS **fragPP)" ( (parameter_declaration "symbolS **symbolPP" type_identifier (pointer_declarator "**symbolPP" * (pointer_declarator "*symbolPP" * identifier))) , (parameter_declaration "valueT *valueP" type_identifier (pointer_declarator "*valueP" * identifier)) , (parameter_declaration "segT *segP" type_identifier (pointer_declarator "*segP" * identifier)) , (parameter_declaration "fragS **fragPP" type_identifier (pointer_declarator "**fragPP" * (pointer_declarator "*fragPP" * identifier))) ))) (compound_statement "{\n  byte bVar1;\n  int iVar2;\n  fragS *pfVar3;\n  fragS *pfVar4;\n  segT paVar5;\n  bool bVar6;\n  expressionS exp;\n  \n  pfVar3 = (fragS *)*symbolPP;\n  bVar1 = (byte)pfVar3->fr_address;\n  pfVar4 = pfVar3;\n  if ((bVar1 & 1) != 0) {\n    paVar5 = (segT)pfVar3->last_fr_address;\n    pfVar4 = (fragS *)pfVar3->fr_var;\n    if (paVar5 != reg_section) {\n      *valueP = pfVar3->fr_offset;\n      *segP = paVar5;\n      *fragPP = pfVar4;\n      return 1;\n    }\n    bVar1 = (byte)pfVar4->fr_address;\n  }\n  exp.X_add_symbol = (symbolS *)pfVar4->fr_fix;\n  exp.X_op_symbol = (symbolS *)pfVar4->fr_var;\n  exp.X_add_number = pfVar4->fr_offset;\n  exp._24_8_ = pfVar4->fr_symbol;\n  pfVar3 = pfVar4;\n  if (((bVar1 & 4) == 0) && (exp._24_1_ != '\0')) {\n    if ((bVar1 & 8) != 0) {\n      return 0;\n    }\n    *(byte *)&pfVar4->fr_address = (byte)pfVar4->fr_address | 8;\n    iVar2 = resolve_expression(&exp);\n    *(byte *)&pfVar4->fr_address = (byte)pfVar4->fr_address & 0xf7;\n    if (iVar2 == 0) {\n      return 0;\n    }\n    if ((byte)exp._24_1_ < 5) {\n      if ((byte)exp._24_1_ < 3) {\n        if (exp._24_1_ != '\x02') {\n          return 0;\n        }\n        goto LAB_0012a002;\n      }\nLAB_0012a0ad:\n      bVar1 = *(byte *)&(exp.X_add_symbol)->sy_flags;\n      pfVar3 = (fragS *)exp.X_add_symbol;\n      goto LAB_00129f65;\n    }\n    if (exp._24_1_ != '\x05') {\n      return 0;\n    }\nLAB_0012a002:\n    bVar1 = (byte)pfVar4->fr_address;\n    if ((bVar1 & 1) == 0) {\nLAB_0012a0a3:\n      if (*(char *)&pfVar4->fr_symbol != '\x03') goto LAB_00129f65;\n      goto LAB_0012a0ad;\n    }\n    paVar5 = (segT)pfVar4->last_fr_address;\n    if (paVar5 == reg_section) {\n      pfVar4 = (fragS *)pfVar4->fr_var;\n      goto LAB_0012a0a3;\n    }\n    *symbolPP = (symbolS *)pfVar4;\nLAB_0012a028:\n    pfVar3 = (fragS *)pfVar4->fr_var;\n    if (paVar5 != reg_section) {\n      *valueP = pfVar4->fr_offset;\n      *segP = paVar5;\n      bVar6 = expr_section != paVar5;\n      *fragPP = pfVar3;\n      if (bVar6) {\n        return 1;\n      }\n      goto LAB_0012a04f;\n    }\n    paVar5 = (segT)pfVar3->last_fr_address;\n  }\n  else {\nLAB_00129f65:\n    paVar5 = (segT)pfVar3->last_fr_address;\n    *symbolPP = (symbolS *)pfVar3;\n    pfVar4 = pfVar3;\n    if ((bVar1 & 1) != 0) goto LAB_0012a028;\n  }\n  paVar5 = *(segT *)&paVar5->flags;\n  *valueP = exp.X_add_number;\n  pfVar3 = (fragS *)pfVar3->fr_file;\n  *segP = paVar5;\n  bVar6 = expr_section != paVar5;\n  *fragPP = pfVar3;\n  if (bVar6) {\n    return 1;\n  }\nLAB_0012a04f:\n  if (exp._24_1_ == '\x02') {\n    *segP = (segT)(_bfd_std_section + 0x230);\n  }\n  else if (exp._24_1_ == '\x05') {\n    *segP = reg_section;\n  }\n  return 1;\n}" { (declaration "byte bVar1;" type_identifier identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "fragS *pfVar3;" type_identifier (pointer_declarator "*pfVar3" * identifier) ;) (declaration "fragS *pfVar4;" type_identifier (pointer_declarator "*pfVar4" * identifier) ;) (declaration "segT paVar5;" type_identifier identifier ;) (declaration "bool bVar6;" primitive_type identifier ;) (declaration "expressionS exp;" type_identifier identifier ;) (expression_statement "pfVar3 = (fragS *)*symbolPP;" (assignment_expression "pfVar3 = (fragS *)*symbolPP" identifier = (cast_expression "(fragS *)*symbolPP" ( (type_descriptor "fragS *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*symbolPP" * identifier))) ;) (expression_statement "bVar1 = (byte)pfVar3->fr_address;" (assignment_expression "bVar1 = (byte)pfVar3->fr_address" identifier = (cast_expression "(byte)pfVar3->fr_address" ( (type_descriptor "byte" type_identifier) ) (field_expression "pfVar3->fr_address" identifier -> field_identifier))) ;) (expression_statement "pfVar4 = pfVar3;" (assignment_expression "pfVar4 = pfVar3" identifier = identifier) ;) (if_statement "if ((bVar1 & 1) != 0) {\n    paVar5 = (segT)pfVar3->last_fr_address;\n    pfVar4 = (fragS *)pfVar3->fr_var;\n    if (paVar5 != reg_section) {\n      *valueP = pfVar3->fr_offset;\n      *segP = paVar5;\n      *fragPP = pfVar4;\n      return 1;\n    }\n    bVar1 = (byte)pfVar4->fr_address;\n  }" if (parenthesized_expression "((bVar1 & 1) != 0)" ( (binary_expression "(bVar1 & 1) != 0" (parenthesized_expression "(bVar1 & 1)" ( (binary_expression "bVar1 & 1" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n    paVar5 = (segT)pfVar3->last_fr_address;\n    pfVar4 = (fragS *)pfVar3->fr_var;\n    if (paVar5 != reg_section) {\n      *valueP = pfVar3->fr_offset;\n      *segP = paVar5;\n      *fragPP = pfVar4;\n      return 1;\n    }\n    bVar1 = (byte)pfVar4->fr_address;\n  }" { (expression_statement "paVar5 = (segT)pfVar3->last_fr_address;" (assignment_expression "paVar5 = (segT)pfVar3->last_fr_address" identifier = (cast_expression "(segT)pfVar3->last_fr_address" ( (type_descriptor "segT" type_identifier) ) (field_expression "pfVar3->last_fr_address" identifier -> field_identifier))) ;) (expression_statement "pfVar4 = (fragS *)pfVar3->fr_var;" (assignment_expression "pfVar4 = (fragS *)pfVar3->fr_var" identifier = (cast_expression "(fragS *)pfVar3->fr_var" ( (type_descriptor "fragS *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "pfVar3->fr_var" identifier -> field_identifier))) ;) (if_statement "if (paVar5 != reg_section) {\n      *valueP = pfVar3->fr_offset;\n      *segP = paVar5;\n      *fragPP = pfVar4;\n      return 1;\n    }" if (parenthesized_expression "(paVar5 != reg_section)" ( (binary_expression "paVar5 != reg_section" identifier != identifier) )) (compound_statement "{\n      *valueP = pfVar3->fr_offset;\n      *segP = paVar5;\n      *fragPP = pfVar4;\n      return 1;\n    }" { (expression_statement "*valueP = pfVar3->fr_offset;" (assignment_expression "*valueP = pfVar3->fr_offset" (pointer_expression "*valueP" * identifier) = (field_expression "pfVar3->fr_offset" identifier -> field_identifier)) ;) (expression_statement "*segP = paVar5;" (assignment_expression "*segP = paVar5" (pointer_expression "*segP" * identifier) = identifier) ;) (expression_statement "*fragPP = pfVar4;" (assignment_expression "*fragPP = pfVar4" (pointer_expression "*fragPP" * identifier) = identifier) ;) (return_statement "return 1;" return number_literal ;) })) (expression_statement "bVar1 = (byte)pfVar4->fr_address;" (assignment_expression "bVar1 = (byte)pfVar4->fr_address" identifier = (cast_expression "(byte)pfVar4->fr_address" ( (type_descriptor "byte" type_identifier) ) (field_expression "pfVar4->fr_address" identifier -> field_identifier))) ;) })) (expression_statement "exp.X_add_symbol = (symbolS *)pfVar4->fr_fix;" (assignment_expression "exp.X_add_symbol = (symbolS *)pfVar4->fr_fix" (field_expression "exp.X_add_symbol" identifier . field_identifier) = (cast_expression "(symbolS *)pfVar4->fr_fix" ( (type_descriptor "symbolS *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "pfVar4->fr_fix" identifier -> field_identifier))) ;) (expression_statement "exp.X_op_symbol = (symbolS *)pfVar4->fr_var;" (assignment_expression "exp.X_op_symbol = (symbolS *)pfVar4->fr_var" (field_expression "exp.X_op_symbol" identifier . field_identifier) = (cast_expression "(symbolS *)pfVar4->fr_var" ( (type_descriptor "symbolS *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "pfVar4->fr_var" identifier -> field_identifier))) ;) (expression_statement "exp.X_add_number = pfVar4->fr_offset;" (assignment_expression "exp.X_add_number = pfVar4->fr_offset" (field_expression "exp.X_add_number" identifier . field_identifier) = (field_expression "pfVar4->fr_offset" identifier -> field_identifier)) ;) (expression_statement "exp._24_8_ = pfVar4->fr_symbol;" (assignment_expression "exp._24_8_ = pfVar4->fr_symbol" (field_expression "exp._24_8_" identifier . field_identifier) = (field_expression "pfVar4->fr_symbol" identifier -> field_identifier)) ;) (expression_statement "pfVar3 = pfVar4;" (assignment_expression "pfVar3 = pfVar4" identifier = identifier) ;) (if_statement "if (((bVar1 & 4) == 0) && (exp._24_1_ != '\0')) {\n    if ((bVar1 & 8) != 0) {\n      return 0;\n    }\n    *(byte *)&pfVar4->fr_address = (byte)pfVar4->fr_address | 8;\n    iVar2 = resolve_expression(&exp);\n    *(byte *)&pfVar4->fr_address = (byte)pfVar4->fr_address & 0xf7;\n    if (iVar2 == 0) {\n      return 0;\n    }\n    if ((byte)exp._24_1_ < 5) {\n      if ((byte)exp._24_1_ < 3) {\n        if (exp._24_1_ != '\x02') {\n          return 0;\n        }\n        goto LAB_0012a002;\n      }\nLAB_0012a0ad:\n      bVar1 = *(byte *)&(exp.X_add_symbol)->sy_flags;\n      pfVar3 = (fragS *)exp.X_add_symbol;\n      goto LAB_00129f65;\n    }\n    if (exp._24_1_ != '\x05') {\n      return 0;\n    }\nLAB_0012a002:\n    bVar1 = (byte)pfVar4->fr_address;\n    if ((bVar1 & 1) == 0) {\nLAB_0012a0a3:\n      if (*(char *)&pfVar4->fr_symbol != '\x03') goto LAB_00129f65;\n      goto LAB_0012a0ad;\n    }\n    paVar5 = (segT)pfVar4->last_fr_address;\n    if (paVar5 == reg_section) {\n      pfVar4 = (fragS *)pfVar4->fr_var;\n      goto LAB_0012a0a3;\n    }\n    *symbolPP = (symbolS *)pfVar4;\nLAB_0012a028:\n    pfVar3 = (fragS *)pfVar4->fr_var;\n    if (paVar5 != reg_section) {\n      *valueP = pfVar4->fr_offset;\n      *segP = paVar5;\n      bVar6 = expr_section != paVar5;\n      *fragPP = pfVar3;\n      if (bVar6) {\n        return 1;\n      }\n      goto LAB_0012a04f;\n    }\n    paVar5 = (segT)pfVar3->last_fr_address;\n  }\n  else {\nLAB_00129f65:\n    paVar5 = (segT)pfVar3->last_fr_address;\n    *symbolPP = (symbolS *)pfVar3;\n    pfVar4 = pfVar3;\n    if ((bVar1 & 1) != 0) goto LAB_0012a028;\n  }" if (parenthesized_expression "(((bVar1 & 4) == 0) && (exp._24_1_ != '\0'))" ( (binary_expression "((bVar1 & 4) == 0) && (exp._24_1_ != '\0')" (parenthesized_expression "((bVar1 & 4) == 0)" ( (binary_expression "(bVar1 & 4) == 0" (parenthesized_expression "(bVar1 & 4)" ( (binary_expression "bVar1 & 4" identifier & number_literal) )) == number_literal) )) && (parenthesized_expression "(exp._24_1_ != '\0')" ( (binary_expression "exp._24_1_ != '\0'" (field_expression "exp._24_1_" identifier . field_identifier) != (char_literal "'\0'" ' escape_sequence ')) ))) )) (compound_statement "{\n    if ((bVar1 & 8) != 0) {\n      return 0;\n    }\n    *(byte *)&pfVar4->fr_address = (byte)pfVar4->fr_address | 8;\n    iVar2 = resolve_expression(&exp);\n    *(byte *)&pfVar4->fr_address = (byte)pfVar4->fr_address & 0xf7;\n    if (iVar2 == 0) {\n      return 0;\n    }\n    if ((byte)exp._24_1_ < 5) {\n      if ((byte)exp._24_1_ < 3) {\n        if (exp._24_1_ != '\x02') {\n          return 0;\n        }\n        goto LAB_0012a002;\n      }\nLAB_0012a0ad:\n      bVar1 = *(byte *)&(exp.X_add_symbol)->sy_flags;\n      pfVar3 = (fragS *)exp.X_add_symbol;\n      goto LAB_00129f65;\n    }\n    if (exp._24_1_ != '\x05') {\n      return 0;\n    }\nLAB_0012a002:\n    bVar1 = (byte)pfVar4->fr_address;\n    if ((bVar1 & 1) == 0) {\nLAB_0012a0a3:\n      if (*(char *)&pfVar4->fr_symbol != '\x03') goto LAB_00129f65;\n      goto LAB_0012a0ad;\n    }\n    paVar5 = (segT)pfVar4->last_fr_address;\n    if (paVar5 == reg_section) {\n      pfVar4 = (fragS *)pfVar4->fr_var;\n      goto LAB_0012a0a3;\n    }\n    *symbolPP = (symbolS *)pfVar4;\nLAB_0012a028:\n    pfVar3 = (fragS *)pfVar4->fr_var;\n    if (paVar5 != reg_section) {\n      *valueP = pfVar4->fr_offset;\n      *segP = paVar5;\n      bVar6 = expr_section != paVar5;\n      *fragPP = pfVar3;\n      if (bVar6) {\n        return 1;\n      }\n      goto LAB_0012a04f;\n    }\n    paVar5 = (segT)pfVar3->last_fr_address;\n  }" { (if_statement "if ((bVar1 & 8) != 0) {\n      return 0;\n    }" if (parenthesized_expression "((bVar1 & 8) != 0)" ( (binary_expression "(bVar1 & 8) != 0" (parenthesized_expression "(bVar1 & 8)" ( (binary_expression "bVar1 & 8" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n      return 0;\n    }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "*(byte *)&pfVar4->fr_address = (byte)pfVar4->fr_address | 8;" (assignment_expression "*(byte *)&pfVar4->fr_address = (byte)pfVar4->fr_address | 8" (pointer_expression "*(byte *)&pfVar4->fr_address" * (cast_expression "(byte *)&pfVar4->fr_address" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&pfVar4->fr_address" & (field_expression "pfVar4->fr_address" identifier -> field_identifier)))) = (binary_expression "(byte)pfVar4->fr_address | 8" (cast_expression "(byte)pfVar4->fr_address" ( (type_descriptor "byte" type_identifier) ) (field_expression "pfVar4->fr_address" identifier -> field_identifier)) | number_literal)) ;) (expression_statement "iVar2 = resolve_expression(&exp);" (assignment_expression "iVar2 = resolve_expression(&exp)" identifier = (call_expression "resolve_expression(&exp)" identifier (argument_list "(&exp)" ( (pointer_expression "&exp" & identifier) )))) ;) (expression_statement "*(byte *)&pfVar4->fr_address = (byte)pfVar4->fr_address & 0xf7;" (assignment_expression "*(byte *)&pfVar4->fr_address = (byte)pfVar4->fr_address & 0xf7" (pointer_expression "*(byte *)&pfVar4->fr_address" * (cast_expression "(byte *)&pfVar4->fr_address" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&pfVar4->fr_address" & (field_expression "pfVar4->fr_address" identifier -> field_identifier)))) = (binary_expression "(byte)pfVar4->fr_address & 0xf7" (cast_expression "(byte)pfVar4->fr_address" ( (type_descriptor "byte" type_identifier) ) (field_expression "pfVar4->fr_address" identifier -> field_identifier)) & number_literal)) ;) (if_statement "if (iVar2 == 0) {\n      return 0;\n    }" if (parenthesized_expression "(iVar2 == 0)" ( (binary_expression "iVar2 == 0" identifier == number_literal) )) (compound_statement "{\n      return 0;\n    }" { (return_statement "return 0;" return number_literal ;) })) (if_statement "if ((byte)exp._24_1_ < 5) {\n      if ((byte)exp._24_1_ < 3) {\n        if (exp._24_1_ != '\x02') {\n          return 0;\n        }\n        goto LAB_0012a002;\n      }\nLAB_0012a0ad:\n      bVar1 = *(byte *)&(exp.X_add_symbol)->sy_flags;\n      pfVar3 = (fragS *)exp.X_add_symbol;\n      goto LAB_00129f65;\n    }" if (parenthesized_expression "((byte)exp._24_1_ < 5)" ( (binary_expression "(byte)exp._24_1_ < 5" (cast_expression "(byte)exp._24_1_" ( (type_descriptor "byte" type_identifier) ) (field_expression "exp._24_1_" identifier . field_identifier)) < number_literal) )) (compound_statement "{\n      if ((byte)exp._24_1_ < 3) {\n        if (exp._24_1_ != '\x02') {\n          return 0;\n        }\n        goto LAB_0012a002;\n      }\nLAB_0012a0ad:\n      bVar1 = *(byte *)&(exp.X_add_symbol)->sy_flags;\n      pfVar3 = (fragS *)exp.X_add_symbol;\n      goto LAB_00129f65;\n    }" { (if_statement "if ((byte)exp._24_1_ < 3) {\n        if (exp._24_1_ != '\x02') {\n          return 0;\n        }\n        goto LAB_0012a002;\n      }" if (parenthesized_expression "((byte)exp._24_1_ < 3)" ( (binary_expression "(byte)exp._24_1_ < 3" (cast_expression "(byte)exp._24_1_" ( (type_descriptor "byte" type_identifier) ) (field_expression "exp._24_1_" identifier . field_identifier)) < number_literal) )) (compound_statement "{\n        if (exp._24_1_ != '\x02') {\n          return 0;\n        }\n        goto LAB_0012a002;\n      }" { (if_statement "if (exp._24_1_ != '\x02') {\n          return 0;\n        }" if (parenthesized_expression "(exp._24_1_ != '\x02')" ( (binary_expression "exp._24_1_ != '\x02'" (field_expression "exp._24_1_" identifier . field_identifier) != (char_literal "'\x02'" ' escape_sequence ')) )) (compound_statement "{\n          return 0;\n        }" { (return_statement "return 0;" return number_literal ;) })) (goto_statement "goto LAB_0012a002;" goto statement_identifier ;) })) (labeled_statement "LAB_0012a0ad:\n      bVar1 = *(byte *)&(exp.X_add_symbol)->sy_flags;" statement_identifier : (expression_statement "bVar1 = *(byte *)&(exp.X_add_symbol)->sy_flags;" (assignment_expression "bVar1 = *(byte *)&(exp.X_add_symbol)->sy_flags" identifier = (pointer_expression "*(byte *)&(exp.X_add_symbol)->sy_flags" * (cast_expression "(byte *)&(exp.X_add_symbol)->sy_flags" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&(exp.X_add_symbol)->sy_flags" & (field_expression "(exp.X_add_symbol)->sy_flags" (parenthesized_expression "(exp.X_add_symbol)" ( (field_expression "exp.X_add_symbol" identifier . field_identifier) )) -> field_identifier))))) ;)) (expression_statement "pfVar3 = (fragS *)exp.X_add_symbol;" (assignment_expression "pfVar3 = (fragS *)exp.X_add_symbol" identifier = (cast_expression "(fragS *)exp.X_add_symbol" ( (type_descriptor "fragS *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "exp.X_add_symbol" identifier . field_identifier))) ;) (goto_statement "goto LAB_00129f65;" goto statement_identifier ;) })) (if_statement "if (exp._24_1_ != '\x05') {\n      return 0;\n    }" if (parenthesized_expression "(exp._24_1_ != '\x05')" ( (binary_expression "exp._24_1_ != '\x05'" (field_expression "exp._24_1_" identifier . field_identifier) != (char_literal "'\x05'" ' escape_sequence ')) )) (compound_statement "{\n      return 0;\n    }" { (return_statement "return 0;" return number_literal ;) })) (labeled_statement "LAB_0012a002:\n    bVar1 = (byte)pfVar4->fr_address;" statement_identifier : (expression_statement "bVar1 = (byte)pfVar4->fr_address;" (assignment_expression "bVar1 = (byte)pfVar4->fr_address" identifier = (cast_expression "(byte)pfVar4->fr_address" ( (type_descriptor "byte" type_identifier) ) (field_expression "pfVar4->fr_address" identifier -> field_identifier))) ;)) (if_statement "if ((bVar1 & 1) == 0) {\nLAB_0012a0a3:\n      if (*(char *)&pfVar4->fr_symbol != '\x03') goto LAB_00129f65;\n      goto LAB_0012a0ad;\n    }" if (parenthesized_expression "((bVar1 & 1) == 0)" ( (binary_expression "(bVar1 & 1) == 0" (parenthesized_expression "(bVar1 & 1)" ( (binary_expression "bVar1 & 1" identifier & number_literal) )) == number_literal) )) (compound_statement "{\nLAB_0012a0a3:\n      if (*(char *)&pfVar4->fr_symbol != '\x03') goto LAB_00129f65;\n      goto LAB_0012a0ad;\n    }" { (labeled_statement "LAB_0012a0a3:\n      if (*(char *)&pfVar4->fr_symbol != '\x03') goto LAB_00129f65;" statement_identifier : (if_statement "if (*(char *)&pfVar4->fr_symbol != '\x03') goto LAB_00129f65;" if (parenthesized_expression "(*(char *)&pfVar4->fr_symbol != '\x03')" ( (binary_expression "*(char *)&pfVar4->fr_symbol != '\x03'" (pointer_expression "*(char *)&pfVar4->fr_symbol" * (cast_expression "(char *)&pfVar4->fr_symbol" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "&pfVar4->fr_symbol" & (field_expression "pfVar4->fr_symbol" identifier -> field_identifier)))) != (char_literal "'\x03'" ' escape_sequence ')) )) (goto_statement "goto LAB_00129f65;" goto statement_identifier ;))) (goto_statement "goto LAB_0012a0ad;" goto statement_identifier ;) })) (expression_statement "paVar5 = (segT)pfVar4->last_fr_address;" (assignment_expression "paVar5 = (segT)pfVar4->last_fr_address" identifier = (cast_expression "(segT)pfVar4->last_fr_address" ( (type_descriptor "segT" type_identifier) ) (field_expression "pfVar4->last_fr_address" identifier -> field_identifier))) ;) (if_statement "if (paVar5 == reg_section) {\n      pfVar4 = (fragS *)pfVar4->fr_var;\n      goto LAB_0012a0a3;\n    }" if (parenthesized_expression "(paVar5 == reg_section)" ( (binary_expression "paVar5 == reg_section" identifier == identifier) )) (compound_statement "{\n      pfVar4 = (fragS *)pfVar4->fr_var;\n      goto LAB_0012a0a3;\n    }" { (expression_statement "pfVar4 = (fragS *)pfVar4->fr_var;" (assignment_expression "pfVar4 = (fragS *)pfVar4->fr_var" identifier = (cast_expression "(fragS *)pfVar4->fr_var" ( (type_descriptor "fragS *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "pfVar4->fr_var" identifier -> field_identifier))) ;) (goto_statement "goto LAB_0012a0a3;" goto statement_identifier ;) })) (expression_statement "*symbolPP = (symbolS *)pfVar4;" (assignment_expression "*symbolPP = (symbolS *)pfVar4" (pointer_expression "*symbolPP" * identifier) = (cast_expression "(symbolS *)pfVar4" ( (type_descriptor "symbolS *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (labeled_statement "LAB_0012a028:\n    pfVar3 = (fragS *)pfVar4->fr_var;" statement_identifier : (expression_statement "pfVar3 = (fragS *)pfVar4->fr_var;" (assignment_expression "pfVar3 = (fragS *)pfVar4->fr_var" identifier = (cast_expression "(fragS *)pfVar4->fr_var" ( (type_descriptor "fragS *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "pfVar4->fr_var" identifier -> field_identifier))) ;)) (if_statement "if (paVar5 != reg_section) {\n      *valueP = pfVar4->fr_offset;\n      *segP = paVar5;\n      bVar6 = expr_section != paVar5;\n      *fragPP = pfVar3;\n      if (bVar6) {\n        return 1;\n      }\n      goto LAB_0012a04f;\n    }" if (parenthesized_expression "(paVar5 != reg_section)" ( (binary_expression "paVar5 != reg_section" identifier != identifier) )) (compound_statement "{\n      *valueP = pfVar4->fr_offset;\n      *segP = paVar5;\n      bVar6 = expr_section != paVar5;\n      *fragPP = pfVar3;\n      if (bVar6) {\n        return 1;\n      }\n      goto LAB_0012a04f;\n    }" { (expression_statement "*valueP = pfVar4->fr_offset;" (assignment_expression "*valueP = pfVar4->fr_offset" (pointer_expression "*valueP" * identifier) = (field_expression "pfVar4->fr_offset" identifier -> field_identifier)) ;) (expression_statement "*segP = paVar5;" (assignment_expression "*segP = paVar5" (pointer_expression "*segP" * identifier) = identifier) ;) (expression_statement "bVar6 = expr_section != paVar5;" (assignment_expression "bVar6 = expr_section != paVar5" identifier = (binary_expression "expr_section != paVar5" identifier != identifier)) ;) (expression_statement "*fragPP = pfVar3;" (assignment_expression "*fragPP = pfVar3" (pointer_expression "*fragPP" * identifier) = identifier) ;) (if_statement "if (bVar6) {\n        return 1;\n      }" if (parenthesized_expression "(bVar6)" ( identifier )) (compound_statement "{\n        return 1;\n      }" { (return_statement "return 1;" return number_literal ;) })) (goto_statement "goto LAB_0012a04f;" goto statement_identifier ;) })) (expression_statement "paVar5 = (segT)pfVar3->last_fr_address;" (assignment_expression "paVar5 = (segT)pfVar3->last_fr_address" identifier = (cast_expression "(segT)pfVar3->last_fr_address" ( (type_descriptor "segT" type_identifier) ) (field_expression "pfVar3->last_fr_address" identifier -> field_identifier))) ;) }) (else_clause "else {\nLAB_00129f65:\n    paVar5 = (segT)pfVar3->last_fr_address;\n    *symbolPP = (symbolS *)pfVar3;\n    pfVar4 = pfVar3;\n    if ((bVar1 & 1) != 0) goto LAB_0012a028;\n  }" else (compound_statement "{\nLAB_00129f65:\n    paVar5 = (segT)pfVar3->last_fr_address;\n    *symbolPP = (symbolS *)pfVar3;\n    pfVar4 = pfVar3;\n    if ((bVar1 & 1) != 0) goto LAB_0012a028;\n  }" { (labeled_statement "LAB_00129f65:\n    paVar5 = (segT)pfVar3->last_fr_address;" statement_identifier : (expression_statement "paVar5 = (segT)pfVar3->last_fr_address;" (assignment_expression "paVar5 = (segT)pfVar3->last_fr_address" identifier = (cast_expression "(segT)pfVar3->last_fr_address" ( (type_descriptor "segT" type_identifier) ) (field_expression "pfVar3->last_fr_address" identifier -> field_identifier))) ;)) (expression_statement "*symbolPP = (symbolS *)pfVar3;" (assignment_expression "*symbolPP = (symbolS *)pfVar3" (pointer_expression "*symbolPP" * identifier) = (cast_expression "(symbolS *)pfVar3" ( (type_descriptor "symbolS *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "pfVar4 = pfVar3;" (assignment_expression "pfVar4 = pfVar3" identifier = identifier) ;) (if_statement "if ((bVar1 & 1) != 0) goto LAB_0012a028;" if (parenthesized_expression "((bVar1 & 1) != 0)" ( (binary_expression "(bVar1 & 1) != 0" (parenthesized_expression "(bVar1 & 1)" ( (binary_expression "bVar1 & 1" identifier & number_literal) )) != number_literal) )) (goto_statement "goto LAB_0012a028;" goto statement_identifier ;)) }))) (expression_statement "paVar5 = *(segT *)&paVar5->flags;" (assignment_expression "paVar5 = *(segT *)&paVar5->flags" identifier = (pointer_expression "*(segT *)&paVar5->flags" * (cast_expression "(segT *)&paVar5->flags" ( (type_descriptor "segT *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&paVar5->flags" & (field_expression "paVar5->flags" identifier -> field_identifier))))) ;) (expression_statement "*valueP = exp.X_add_number;" (assignment_expression "*valueP = exp.X_add_number" (pointer_expression "*valueP" * identifier) = (field_expression "exp.X_add_number" identifier . field_identifier)) ;) (expression_statement "pfVar3 = (fragS *)pfVar3->fr_file;" (assignment_expression "pfVar3 = (fragS *)pfVar3->fr_file" identifier = (cast_expression "(fragS *)pfVar3->fr_file" ( (type_descriptor "fragS *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "pfVar3->fr_file" identifier -> field_identifier))) ;) (expression_statement "*segP = paVar5;" (assignment_expression "*segP = paVar5" (pointer_expression "*segP" * identifier) = identifier) ;) (expression_statement "bVar6 = expr_section != paVar5;" (assignment_expression "bVar6 = expr_section != paVar5" identifier = (binary_expression "expr_section != paVar5" identifier != identifier)) ;) (expression_statement "*fragPP = pfVar3;" (assignment_expression "*fragPP = pfVar3" (pointer_expression "*fragPP" * identifier) = identifier) ;) (if_statement "if (bVar6) {\n    return 1;\n  }" if (parenthesized_expression "(bVar6)" ( identifier )) (compound_statement "{\n    return 1;\n  }" { (return_statement "return 1;" return number_literal ;) })) (labeled_statement "LAB_0012a04f:\n  if (exp._24_1_ == '\x02') {\n    *segP = (segT)(_bfd_std_section + 0x230);\n  }\n  else if (exp._24_1_ == '\x05') {\n    *segP = reg_section;\n  }" statement_identifier : (if_statement "if (exp._24_1_ == '\x02') {\n    *segP = (segT)(_bfd_std_section + 0x230);\n  }\n  else if (exp._24_1_ == '\x05') {\n    *segP = reg_section;\n  }" if (parenthesized_expression "(exp._24_1_ == '\x02')" ( (binary_expression "exp._24_1_ == '\x02'" (field_expression "exp._24_1_" identifier . field_identifier) == (char_literal "'\x02'" ' escape_sequence ')) )) (compound_statement "{\n    *segP = (segT)(_bfd_std_section + 0x230);\n  }" { (expression_statement "*segP = (segT)(_bfd_std_section + 0x230);" (assignment_expression "*segP = (segT)(_bfd_std_section + 0x230)" (pointer_expression "*segP" * identifier) = (call_expression "(segT)(_bfd_std_section + 0x230)" (parenthesized_expression "(segT)" ( identifier )) (argument_list "(_bfd_std_section + 0x230)" ( (binary_expression "_bfd_std_section + 0x230" identifier + number_literal) )))) ;) }) (else_clause "else if (exp._24_1_ == '\x05') {\n    *segP = reg_section;\n  }" else (if_statement "if (exp._24_1_ == '\x05') {\n    *segP = reg_section;\n  }" if (parenthesized_expression "(exp._24_1_ == '\x05')" ( (binary_expression "exp._24_1_ == '\x05'" (field_expression "exp._24_1_" identifier . field_identifier) == (char_literal "'\x05'" ' escape_sequence ')) )) (compound_statement "{\n    *segP = reg_section;\n  }" { (expression_statement "*segP = reg_section;" (assignment_expression "*segP = reg_section" (pointer_expression "*segP" * identifier) = identifier) ;) }))))) (return_statement "return 1;" return number_literal ;) })))
(translation_unit "undefined8 FUN_00129f00(undefined8 *param_1,undefined8 *param_2,long *param_3,undefined8 *param_4)\n\n{\n  undefined8 uVar1;\n  byte bVar2;\n  int iVar3;\n  byte *pbVar4;\n  byte *pbVar5;\n  long lVar6;\n  bool bVar7;\n  byte *local_38;\n  undefined8 uStack_30;\n  undefined8 local_28;\n  undefined8 uStack_20;\n  \n  pbVar4 = (byte *)*param_1;\n  bVar2 = *pbVar4;\n  pbVar5 = pbVar4;\n  if ((bVar2 & 1) != 0) {\n    lVar6 = *(long *)(pbVar4 + 8);\n    pbVar5 = *(byte **)(pbVar4 + 0x18);\n    if (lVar6 != DAT_0019d7d8) {\n      *param_2 = *(undefined8 *)(pbVar4 + 0x20);\n      *param_3 = lVar6;\n      *param_4 = pbVar5;\n      return 1;\n    }\n    bVar2 = *pbVar5;\n  }\n  local_38 = *(byte **)(pbVar5 + 0x10);\n  uStack_30 = *(undefined8 *)(pbVar5 + 0x18);\n  local_28 = *(undefined8 *)(pbVar5 + 0x20);\n  uStack_20 = *(undefined8 *)(pbVar5 + 0x28);\n  pbVar4 = pbVar5;\n  if (((bVar2 & 4) == 0) && ((byte)uStack_20 != '\0')) {\n    if ((bVar2 & 8) != 0) {\n      return 0;\n    }\n    *pbVar5 = *pbVar5 | 8;\n    iVar3 = FUN_001163e0(&local_38);\n    *pbVar5 = *pbVar5 & 0xf7;\n    if (iVar3 == 0) {\n      return 0;\n    }\n    if ((byte)uStack_20 < 5) {\n      if ((byte)uStack_20 < 3) {\n        if ((byte)uStack_20 != 2) {\n          return 0;\n        }\n        goto LAB_0012a002;\n      }\nLAB_0012a0ad:\n      bVar2 = *local_38;\n      pbVar4 = local_38;\n      goto LAB_00129f65;\n    }\n    if ((byte)uStack_20 != 5) {\n      return 0;\n    }\nLAB_0012a002:\n    bVar2 = *pbVar5;\n    if ((bVar2 & 1) == 0) {\nLAB_0012a0a3:\n      if (pbVar5[0x28] != 3) goto LAB_00129f65;\n      goto LAB_0012a0ad;\n    }\n    lVar6 = *(long *)(pbVar5 + 8);\n    if (lVar6 == DAT_0019d7d8) {\n      pbVar5 = *(byte **)(pbVar5 + 0x18);\n      goto LAB_0012a0a3;\n    }\n    *param_1 = pbVar5;\nLAB_0012a028:\n    pbVar4 = *(byte **)(pbVar5 + 0x18);\n    if (lVar6 != DAT_0019d7d8) {\n      *param_2 = *(undefined8 *)(pbVar5 + 0x20);\n      *param_3 = lVar6;\n      bVar7 = DAT_0019d700 != lVar6;\n      *param_4 = pbVar4;\n      if (bVar7) {\n        return 1;\n      }\n      goto LAB_0012a04f;\n    }\n    lVar6 = *(long *)(pbVar4 + 8);\n  }\n  else {\nLAB_00129f65:\n    lVar6 = *(long *)(pbVar4 + 8);\n    *param_1 = pbVar4;\n    pbVar5 = pbVar4;\n    if ((bVar2 & 1) != 0) goto LAB_0012a028;\n  }\n  lVar6 = *(long *)(lVar6 + 0x20);\n  *param_2 = local_28;\n  uVar1 = *(undefined8 *)(pbVar4 + 0x40);\n  *param_3 = lVar6;\n  bVar7 = DAT_0019d700 != lVar6;\n  *param_4 = uVar1;\n  if (bVar7) {\n    return 1;\n  }\nLAB_0012a04f:\n  if ((byte)uStack_20 == '\x02') {\n    *param_3 = 0x1949f0;\n  }\n  else if ((byte)uStack_20 == '\x05') {\n    *param_3 = DAT_0019d7d8;\n  }\n  return 1;\n}\n\n" (function_definition "undefined8 FUN_00129f00(undefined8 *param_1,undefined8 *param_2,long *param_3,undefined8 *param_4)\n\n{\n  undefined8 uVar1;\n  byte bVar2;\n  int iVar3;\n  byte *pbVar4;\n  byte *pbVar5;\n  long lVar6;\n  bool bVar7;\n  byte *local_38;\n  undefined8 uStack_30;\n  undefined8 local_28;\n  undefined8 uStack_20;\n  \n  pbVar4 = (byte *)*param_1;\n  bVar2 = *pbVar4;\n  pbVar5 = pbVar4;\n  if ((bVar2 & 1) != 0) {\n    lVar6 = *(long *)(pbVar4 + 8);\n    pbVar5 = *(byte **)(pbVar4 + 0x18);\n    if (lVar6 != DAT_0019d7d8) {\n      *param_2 = *(undefined8 *)(pbVar4 + 0x20);\n      *param_3 = lVar6;\n      *param_4 = pbVar5;\n      return 1;\n    }\n    bVar2 = *pbVar5;\n  }\n  local_38 = *(byte **)(pbVar5 + 0x10);\n  uStack_30 = *(undefined8 *)(pbVar5 + 0x18);\n  local_28 = *(undefined8 *)(pbVar5 + 0x20);\n  uStack_20 = *(undefined8 *)(pbVar5 + 0x28);\n  pbVar4 = pbVar5;\n  if (((bVar2 & 4) == 0) && ((byte)uStack_20 != '\0')) {\n    if ((bVar2 & 8) != 0) {\n      return 0;\n    }\n    *pbVar5 = *pbVar5 | 8;\n    iVar3 = FUN_001163e0(&local_38);\n    *pbVar5 = *pbVar5 & 0xf7;\n    if (iVar3 == 0) {\n      return 0;\n    }\n    if ((byte)uStack_20 < 5) {\n      if ((byte)uStack_20 < 3) {\n        if ((byte)uStack_20 != 2) {\n          return 0;\n        }\n        goto LAB_0012a002;\n      }\nLAB_0012a0ad:\n      bVar2 = *local_38;\n      pbVar4 = local_38;\n      goto LAB_00129f65;\n    }\n    if ((byte)uStack_20 != 5) {\n      return 0;\n    }\nLAB_0012a002:\n    bVar2 = *pbVar5;\n    if ((bVar2 & 1) == 0) {\nLAB_0012a0a3:\n      if (pbVar5[0x28] != 3) goto LAB_00129f65;\n      goto LAB_0012a0ad;\n    }\n    lVar6 = *(long *)(pbVar5 + 8);\n    if (lVar6 == DAT_0019d7d8) {\n      pbVar5 = *(byte **)(pbVar5 + 0x18);\n      goto LAB_0012a0a3;\n    }\n    *param_1 = pbVar5;\nLAB_0012a028:\n    pbVar4 = *(byte **)(pbVar5 + 0x18);\n    if (lVar6 != DAT_0019d7d8) {\n      *param_2 = *(undefined8 *)(pbVar5 + 0x20);\n      *param_3 = lVar6;\n      bVar7 = DAT_0019d700 != lVar6;\n      *param_4 = pbVar4;\n      if (bVar7) {\n        return 1;\n      }\n      goto LAB_0012a04f;\n    }\n    lVar6 = *(long *)(pbVar4 + 8);\n  }\n  else {\nLAB_00129f65:\n    lVar6 = *(long *)(pbVar4 + 8);\n    *param_1 = pbVar4;\n    pbVar5 = pbVar4;\n    if ((bVar2 & 1) != 0) goto LAB_0012a028;\n  }\n  lVar6 = *(long *)(lVar6 + 0x20);\n  *param_2 = local_28;\n  uVar1 = *(undefined8 *)(pbVar4 + 0x40);\n  *param_3 = lVar6;\n  bVar7 = DAT_0019d700 != lVar6;\n  *param_4 = uVar1;\n  if (bVar7) {\n    return 1;\n  }\nLAB_0012a04f:\n  if ((byte)uStack_20 == '\x02') {\n    *param_3 = 0x1949f0;\n  }\n  else if ((byte)uStack_20 == '\x05') {\n    *param_3 = DAT_0019d7d8;\n  }\n  return 1;\n}" type_identifier (function_declarator "FUN_00129f00(undefined8 *param_1,undefined8 *param_2,long *param_3,undefined8 *param_4)" identifier (parameter_list "(undefined8 *param_1,undefined8 *param_2,long *param_3,undefined8 *param_4)" ( (parameter_declaration "undefined8 *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "undefined8 *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "long *param_3" (sized_type_specifier "long" long) (pointer_declarator "*param_3" * identifier)) , (parameter_declaration "undefined8 *param_4" type_identifier (pointer_declarator "*param_4" * identifier)) ))) (compound_statement "{\n  undefined8 uVar1;\n  byte bVar2;\n  int iVar3;\n  byte *pbVar4;\n  byte *pbVar5;\n  long lVar6;\n  bool bVar7;\n  byte *local_38;\n  undefined8 uStack_30;\n  undefined8 local_28;\n  undefined8 uStack_20;\n  \n  pbVar4 = (byte *)*param_1;\n  bVar2 = *pbVar4;\n  pbVar5 = pbVar4;\n  if ((bVar2 & 1) != 0) {\n    lVar6 = *(long *)(pbVar4 + 8);\n    pbVar5 = *(byte **)(pbVar4 + 0x18);\n    if (lVar6 != DAT_0019d7d8) {\n      *param_2 = *(undefined8 *)(pbVar4 + 0x20);\n      *param_3 = lVar6;\n      *param_4 = pbVar5;\n      return 1;\n    }\n    bVar2 = *pbVar5;\n  }\n  local_38 = *(byte **)(pbVar5 + 0x10);\n  uStack_30 = *(undefined8 *)(pbVar5 + 0x18);\n  local_28 = *(undefined8 *)(pbVar5 + 0x20);\n  uStack_20 = *(undefined8 *)(pbVar5 + 0x28);\n  pbVar4 = pbVar5;\n  if (((bVar2 & 4) == 0) && ((byte)uStack_20 != '\0')) {\n    if ((bVar2 & 8) != 0) {\n      return 0;\n    }\n    *pbVar5 = *pbVar5 | 8;\n    iVar3 = FUN_001163e0(&local_38);\n    *pbVar5 = *pbVar5 & 0xf7;\n    if (iVar3 == 0) {\n      return 0;\n    }\n    if ((byte)uStack_20 < 5) {\n      if ((byte)uStack_20 < 3) {\n        if ((byte)uStack_20 != 2) {\n          return 0;\n        }\n        goto LAB_0012a002;\n      }\nLAB_0012a0ad:\n      bVar2 = *local_38;\n      pbVar4 = local_38;\n      goto LAB_00129f65;\n    }\n    if ((byte)uStack_20 != 5) {\n      return 0;\n    }\nLAB_0012a002:\n    bVar2 = *pbVar5;\n    if ((bVar2 & 1) == 0) {\nLAB_0012a0a3:\n      if (pbVar5[0x28] != 3) goto LAB_00129f65;\n      goto LAB_0012a0ad;\n    }\n    lVar6 = *(long *)(pbVar5 + 8);\n    if (lVar6 == DAT_0019d7d8) {\n      pbVar5 = *(byte **)(pbVar5 + 0x18);\n      goto LAB_0012a0a3;\n    }\n    *param_1 = pbVar5;\nLAB_0012a028:\n    pbVar4 = *(byte **)(pbVar5 + 0x18);\n    if (lVar6 != DAT_0019d7d8) {\n      *param_2 = *(undefined8 *)(pbVar5 + 0x20);\n      *param_3 = lVar6;\n      bVar7 = DAT_0019d700 != lVar6;\n      *param_4 = pbVar4;\n      if (bVar7) {\n        return 1;\n      }\n      goto LAB_0012a04f;\n    }\n    lVar6 = *(long *)(pbVar4 + 8);\n  }\n  else {\nLAB_00129f65:\n    lVar6 = *(long *)(pbVar4 + 8);\n    *param_1 = pbVar4;\n    pbVar5 = pbVar4;\n    if ((bVar2 & 1) != 0) goto LAB_0012a028;\n  }\n  lVar6 = *(long *)(lVar6 + 0x20);\n  *param_2 = local_28;\n  uVar1 = *(undefined8 *)(pbVar4 + 0x40);\n  *param_3 = lVar6;\n  bVar7 = DAT_0019d700 != lVar6;\n  *param_4 = uVar1;\n  if (bVar7) {\n    return 1;\n  }\nLAB_0012a04f:\n  if ((byte)uStack_20 == '\x02') {\n    *param_3 = 0x1949f0;\n  }\n  else if ((byte)uStack_20 == '\x05') {\n    *param_3 = DAT_0019d7d8;\n  }\n  return 1;\n}" { (declaration "undefined8 uVar1;" type_identifier identifier ;) (declaration "byte bVar2;" type_identifier identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "byte *pbVar4;" type_identifier (pointer_declarator "*pbVar4" * identifier) ;) (declaration "byte *pbVar5;" type_identifier (pointer_declarator "*pbVar5" * identifier) ;) (declaration "long lVar6;" (sized_type_specifier "long" long) identifier ;) (declaration "bool bVar7;" primitive_type identifier ;) (declaration "byte *local_38;" type_identifier (pointer_declarator "*local_38" * identifier) ;) (declaration "undefined8 uStack_30;" type_identifier identifier ;) (declaration "undefined8 local_28;" type_identifier identifier ;) (declaration "undefined8 uStack_20;" type_identifier identifier ;) (expression_statement "pbVar4 = (byte *)*param_1;" (assignment_expression "pbVar4 = (byte *)*param_1" identifier = (cast_expression "(byte *)*param_1" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_1" * identifier))) ;) (expression_statement "bVar2 = *pbVar4;" (assignment_expression "bVar2 = *pbVar4" identifier = (pointer_expression "*pbVar4" * identifier)) ;) (expression_statement "pbVar5 = pbVar4;" (assignment_expression "pbVar5 = pbVar4" identifier = identifier) ;) (if_statement "if ((bVar2 & 1) != 0) {\n    lVar6 = *(long *)(pbVar4 + 8);\n    pbVar5 = *(byte **)(pbVar4 + 0x18);\n    if (lVar6 != DAT_0019d7d8) {\n      *param_2 = *(undefined8 *)(pbVar4 + 0x20);\n      *param_3 = lVar6;\n      *param_4 = pbVar5;\n      return 1;\n    }\n    bVar2 = *pbVar5;\n  }" if (parenthesized_expression "((bVar2 & 1) != 0)" ( (binary_expression "(bVar2 & 1) != 0" (parenthesized_expression "(bVar2 & 1)" ( (binary_expression "bVar2 & 1" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n    lVar6 = *(long *)(pbVar4 + 8);\n    pbVar5 = *(byte **)(pbVar4 + 0x18);\n    if (lVar6 != DAT_0019d7d8) {\n      *param_2 = *(undefined8 *)(pbVar4 + 0x20);\n      *param_3 = lVar6;\n      *param_4 = pbVar5;\n      return 1;\n    }\n    bVar2 = *pbVar5;\n  }" { (expression_statement "lVar6 = *(long *)(pbVar4 + 8);" (assignment_expression "lVar6 = *(long *)(pbVar4 + 8)" identifier = (pointer_expression "*(long *)(pbVar4 + 8)" * (cast_expression "(long *)(pbVar4 + 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pbVar4 + 8)" ( (binary_expression "pbVar4 + 8" identifier + number_literal) ))))) ;) (expression_statement "pbVar5 = *(byte **)(pbVar4 + 0x18);" (assignment_expression "pbVar5 = *(byte **)(pbVar4 + 0x18)" identifier = (pointer_expression "*(byte **)(pbVar4 + 0x18)" * (cast_expression "(byte **)(pbVar4 + 0x18)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pbVar4 + 0x18)" ( (binary_expression "pbVar4 + 0x18" identifier + number_literal) ))))) ;) (if_statement "if (lVar6 != DAT_0019d7d8) {\n      *param_2 = *(undefined8 *)(pbVar4 + 0x20);\n      *param_3 = lVar6;\n      *param_4 = pbVar5;\n      return 1;\n    }" if (parenthesized_expression "(lVar6 != DAT_0019d7d8)" ( (binary_expression "lVar6 != DAT_0019d7d8" identifier != identifier) )) (compound_statement "{\n      *param_2 = *(undefined8 *)(pbVar4 + 0x20);\n      *param_3 = lVar6;\n      *param_4 = pbVar5;\n      return 1;\n    }" { (expression_statement "*param_2 = *(undefined8 *)(pbVar4 + 0x20);" (assignment_expression "*param_2 = *(undefined8 *)(pbVar4 + 0x20)" (pointer_expression "*param_2" * identifier) = (pointer_expression "*(undefined8 *)(pbVar4 + 0x20)" * (cast_expression "(undefined8 *)(pbVar4 + 0x20)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pbVar4 + 0x20)" ( (binary_expression "pbVar4 + 0x20" identifier + number_literal) ))))) ;) (expression_statement "*param_3 = lVar6;" (assignment_expression "*param_3 = lVar6" (pointer_expression "*param_3" * identifier) = identifier) ;) (expression_statement "*param_4 = pbVar5;" (assignment_expression "*param_4 = pbVar5" (pointer_expression "*param_4" * identifier) = identifier) ;) (return_statement "return 1;" return number_literal ;) })) (expression_statement "bVar2 = *pbVar5;" (assignment_expression "bVar2 = *pbVar5" identifier = (pointer_expression "*pbVar5" * identifier)) ;) })) (expression_statement "local_38 = *(byte **)(pbVar5 + 0x10);" (assignment_expression "local_38 = *(byte **)(pbVar5 + 0x10)" identifier = (pointer_expression "*(byte **)(pbVar5 + 0x10)" * (cast_expression "(byte **)(pbVar5 + 0x10)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pbVar5 + 0x10)" ( (binary_expression "pbVar5 + 0x10" identifier + number_literal) ))))) ;) (expression_statement "uStack_30 = *(undefined8 *)(pbVar5 + 0x18);" (assignment_expression "uStack_30 = *(undefined8 *)(pbVar5 + 0x18)" identifier = (pointer_expression "*(undefined8 *)(pbVar5 + 0x18)" * (cast_expression "(undefined8 *)(pbVar5 + 0x18)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pbVar5 + 0x18)" ( (binary_expression "pbVar5 + 0x18" identifier + number_literal) ))))) ;) (expression_statement "local_28 = *(undefined8 *)(pbVar5 + 0x20);" (assignment_expression "local_28 = *(undefined8 *)(pbVar5 + 0x20)" identifier = (pointer_expression "*(undefined8 *)(pbVar5 + 0x20)" * (cast_expression "(undefined8 *)(pbVar5 + 0x20)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pbVar5 + 0x20)" ( (binary_expression "pbVar5 + 0x20" identifier + number_literal) ))))) ;) (expression_statement "uStack_20 = *(undefined8 *)(pbVar5 + 0x28);" (assignment_expression "uStack_20 = *(undefined8 *)(pbVar5 + 0x28)" identifier = (pointer_expression "*(undefined8 *)(pbVar5 + 0x28)" * (cast_expression "(undefined8 *)(pbVar5 + 0x28)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pbVar5 + 0x28)" ( (binary_expression "pbVar5 + 0x28" identifier + number_literal) ))))) ;) (expression_statement "pbVar4 = pbVar5;" (assignment_expression "pbVar4 = pbVar5" identifier = identifier) ;) (if_statement "if (((bVar2 & 4) == 0) && ((byte)uStack_20 != '\0')) {\n    if ((bVar2 & 8) != 0) {\n      return 0;\n    }\n    *pbVar5 = *pbVar5 | 8;\n    iVar3 = FUN_001163e0(&local_38);\n    *pbVar5 = *pbVar5 & 0xf7;\n    if (iVar3 == 0) {\n      return 0;\n    }\n    if ((byte)uStack_20 < 5) {\n      if ((byte)uStack_20 < 3) {\n        if ((byte)uStack_20 != 2) {\n          return 0;\n        }\n        goto LAB_0012a002;\n      }\nLAB_0012a0ad:\n      bVar2 = *local_38;\n      pbVar4 = local_38;\n      goto LAB_00129f65;\n    }\n    if ((byte)uStack_20 != 5) {\n      return 0;\n    }\nLAB_0012a002:\n    bVar2 = *pbVar5;\n    if ((bVar2 & 1) == 0) {\nLAB_0012a0a3:\n      if (pbVar5[0x28] != 3) goto LAB_00129f65;\n      goto LAB_0012a0ad;\n    }\n    lVar6 = *(long *)(pbVar5 + 8);\n    if (lVar6 == DAT_0019d7d8) {\n      pbVar5 = *(byte **)(pbVar5 + 0x18);\n      goto LAB_0012a0a3;\n    }\n    *param_1 = pbVar5;\nLAB_0012a028:\n    pbVar4 = *(byte **)(pbVar5 + 0x18);\n    if (lVar6 != DAT_0019d7d8) {\n      *param_2 = *(undefined8 *)(pbVar5 + 0x20);\n      *param_3 = lVar6;\n      bVar7 = DAT_0019d700 != lVar6;\n      *param_4 = pbVar4;\n      if (bVar7) {\n        return 1;\n      }\n      goto LAB_0012a04f;\n    }\n    lVar6 = *(long *)(pbVar4 + 8);\n  }\n  else {\nLAB_00129f65:\n    lVar6 = *(long *)(pbVar4 + 8);\n    *param_1 = pbVar4;\n    pbVar5 = pbVar4;\n    if ((bVar2 & 1) != 0) goto LAB_0012a028;\n  }" if (parenthesized_expression "(((bVar2 & 4) == 0) && ((byte)uStack_20 != '\0'))" ( (binary_expression "((bVar2 & 4) == 0) && ((byte)uStack_20 != '\0')" (parenthesized_expression "((bVar2 & 4) == 0)" ( (binary_expression "(bVar2 & 4) == 0" (parenthesized_expression "(bVar2 & 4)" ( (binary_expression "bVar2 & 4" identifier & number_literal) )) == number_literal) )) && (parenthesized_expression "((byte)uStack_20 != '\0')" ( (binary_expression "(byte)uStack_20 != '\0'" (cast_expression "(byte)uStack_20" ( (type_descriptor "byte" type_identifier) ) identifier) != (char_literal "'\0'" ' escape_sequence ')) ))) )) (compound_statement "{\n    if ((bVar2 & 8) != 0) {\n      return 0;\n    }\n    *pbVar5 = *pbVar5 | 8;\n    iVar3 = FUN_001163e0(&local_38);\n    *pbVar5 = *pbVar5 & 0xf7;\n    if (iVar3 == 0) {\n      return 0;\n    }\n    if ((byte)uStack_20 < 5) {\n      if ((byte)uStack_20 < 3) {\n        if ((byte)uStack_20 != 2) {\n          return 0;\n        }\n        goto LAB_0012a002;\n      }\nLAB_0012a0ad:\n      bVar2 = *local_38;\n      pbVar4 = local_38;\n      goto LAB_00129f65;\n    }\n    if ((byte)uStack_20 != 5) {\n      return 0;\n    }\nLAB_0012a002:\n    bVar2 = *pbVar5;\n    if ((bVar2 & 1) == 0) {\nLAB_0012a0a3:\n      if (pbVar5[0x28] != 3) goto LAB_00129f65;\n      goto LAB_0012a0ad;\n    }\n    lVar6 = *(long *)(pbVar5 + 8);\n    if (lVar6 == DAT_0019d7d8) {\n      pbVar5 = *(byte **)(pbVar5 + 0x18);\n      goto LAB_0012a0a3;\n    }\n    *param_1 = pbVar5;\nLAB_0012a028:\n    pbVar4 = *(byte **)(pbVar5 + 0x18);\n    if (lVar6 != DAT_0019d7d8) {\n      *param_2 = *(undefined8 *)(pbVar5 + 0x20);\n      *param_3 = lVar6;\n      bVar7 = DAT_0019d700 != lVar6;\n      *param_4 = pbVar4;\n      if (bVar7) {\n        return 1;\n      }\n      goto LAB_0012a04f;\n    }\n    lVar6 = *(long *)(pbVar4 + 8);\n  }" { (if_statement "if ((bVar2 & 8) != 0) {\n      return 0;\n    }" if (parenthesized_expression "((bVar2 & 8) != 0)" ( (binary_expression "(bVar2 & 8) != 0" (parenthesized_expression "(bVar2 & 8)" ( (binary_expression "bVar2 & 8" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n      return 0;\n    }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "*pbVar5 = *pbVar5 | 8;" (assignment_expression "*pbVar5 = *pbVar5 | 8" (pointer_expression "*pbVar5" * identifier) = (binary_expression "*pbVar5 | 8" (pointer_expression "*pbVar5" * identifier) | number_literal)) ;) (expression_statement "iVar3 = FUN_001163e0(&local_38);" (assignment_expression "iVar3 = FUN_001163e0(&local_38)" identifier = (call_expression "FUN_001163e0(&local_38)" identifier (argument_list "(&local_38)" ( (pointer_expression "&local_38" & identifier) )))) ;) (expression_statement "*pbVar5 = *pbVar5 & 0xf7;" (assignment_expression "*pbVar5 = *pbVar5 & 0xf7" (pointer_expression "*pbVar5" * identifier) = (binary_expression "*pbVar5 & 0xf7" (pointer_expression "*pbVar5" * identifier) & number_literal)) ;) (if_statement "if (iVar3 == 0) {\n      return 0;\n    }" if (parenthesized_expression "(iVar3 == 0)" ( (binary_expression "iVar3 == 0" identifier == number_literal) )) (compound_statement "{\n      return 0;\n    }" { (return_statement "return 0;" return number_literal ;) })) (if_statement "if ((byte)uStack_20 < 5) {\n      if ((byte)uStack_20 < 3) {\n        if ((byte)uStack_20 != 2) {\n          return 0;\n        }\n        goto LAB_0012a002;\n      }\nLAB_0012a0ad:\n      bVar2 = *local_38;\n      pbVar4 = local_38;\n      goto LAB_00129f65;\n    }" if (parenthesized_expression "((byte)uStack_20 < 5)" ( (binary_expression "(byte)uStack_20 < 5" (cast_expression "(byte)uStack_20" ( (type_descriptor "byte" type_identifier) ) identifier) < number_literal) )) (compound_statement "{\n      if ((byte)uStack_20 < 3) {\n        if ((byte)uStack_20 != 2) {\n          return 0;\n        }\n        goto LAB_0012a002;\n      }\nLAB_0012a0ad:\n      bVar2 = *local_38;\n      pbVar4 = local_38;\n      goto LAB_00129f65;\n    }" { (if_statement "if ((byte)uStack_20 < 3) {\n        if ((byte)uStack_20 != 2) {\n          return 0;\n        }\n        goto LAB_0012a002;\n      }" if (parenthesized_expression "((byte)uStack_20 < 3)" ( (binary_expression "(byte)uStack_20 < 3" (cast_expression "(byte)uStack_20" ( (type_descriptor "byte" type_identifier) ) identifier) < number_literal) )) (compound_statement "{\n        if ((byte)uStack_20 != 2) {\n          return 0;\n        }\n        goto LAB_0012a002;\n      }" { (if_statement "if ((byte)uStack_20 != 2) {\n          return 0;\n        }" if (parenthesized_expression "((byte)uStack_20 != 2)" ( (binary_expression "(byte)uStack_20 != 2" (cast_expression "(byte)uStack_20" ( (type_descriptor "byte" type_identifier) ) identifier) != number_literal) )) (compound_statement "{\n          return 0;\n        }" { (return_statement "return 0;" return number_literal ;) })) (goto_statement "goto LAB_0012a002;" goto statement_identifier ;) })) (labeled_statement "LAB_0012a0ad:\n      bVar2 = *local_38;" statement_identifier : (expression_statement "bVar2 = *local_38;" (assignment_expression "bVar2 = *local_38" identifier = (pointer_expression "*local_38" * identifier)) ;)) (expression_statement "pbVar4 = local_38;" (assignment_expression "pbVar4 = local_38" identifier = identifier) ;) (goto_statement "goto LAB_00129f65;" goto statement_identifier ;) })) (if_statement "if ((byte)uStack_20 != 5) {\n      return 0;\n    }" if (parenthesized_expression "((byte)uStack_20 != 5)" ( (binary_expression "(byte)uStack_20 != 5" (cast_expression "(byte)uStack_20" ( (type_descriptor "byte" type_identifier) ) identifier) != number_literal) )) (compound_statement "{\n      return 0;\n    }" { (return_statement "return 0;" return number_literal ;) })) (labeled_statement "LAB_0012a002:\n    bVar2 = *pbVar5;" statement_identifier : (expression_statement "bVar2 = *pbVar5;" (assignment_expression "bVar2 = *pbVar5" identifier = (pointer_expression "*pbVar5" * identifier)) ;)) (if_statement "if ((bVar2 & 1) == 0) {\nLAB_0012a0a3:\n      if (pbVar5[0x28] != 3) goto LAB_00129f65;\n      goto LAB_0012a0ad;\n    }" if (parenthesized_expression "((bVar2 & 1) == 0)" ( (binary_expression "(bVar2 & 1) == 0" (parenthesized_expression "(bVar2 & 1)" ( (binary_expression "bVar2 & 1" identifier & number_literal) )) == number_literal) )) (compound_statement "{\nLAB_0012a0a3:\n      if (pbVar5[0x28] != 3) goto LAB_00129f65;\n      goto LAB_0012a0ad;\n    }" { (labeled_statement "LAB_0012a0a3:\n      if (pbVar5[0x28] != 3) goto LAB_00129f65;" statement_identifier : (if_statement "if (pbVar5[0x28] != 3) goto LAB_00129f65;" if (parenthesized_expression "(pbVar5[0x28] != 3)" ( (binary_expression "pbVar5[0x28] != 3" (subscript_expression "pbVar5[0x28]" identifier [ number_literal ]) != number_literal) )) (goto_statement "goto LAB_00129f65;" goto statement_identifier ;))) (goto_statement "goto LAB_0012a0ad;" goto statement_identifier ;) })) (expression_statement "lVar6 = *(long *)(pbVar5 + 8);" (assignment_expression "lVar6 = *(long *)(pbVar5 + 8)" identifier = (pointer_expression "*(long *)(pbVar5 + 8)" * (cast_expression "(long *)(pbVar5 + 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pbVar5 + 8)" ( (binary_expression "pbVar5 + 8" identifier + number_literal) ))))) ;) (if_statement "if (lVar6 == DAT_0019d7d8) {\n      pbVar5 = *(byte **)(pbVar5 + 0x18);\n      goto LAB_0012a0a3;\n    }" if (parenthesized_expression "(lVar6 == DAT_0019d7d8)" ( (binary_expression "lVar6 == DAT_0019d7d8" identifier == identifier) )) (compound_statement "{\n      pbVar5 = *(byte **)(pbVar5 + 0x18);\n      goto LAB_0012a0a3;\n    }" { (expression_statement "pbVar5 = *(byte **)(pbVar5 + 0x18);" (assignment_expression "pbVar5 = *(byte **)(pbVar5 + 0x18)" identifier = (pointer_expression "*(byte **)(pbVar5 + 0x18)" * (cast_expression "(byte **)(pbVar5 + 0x18)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pbVar5 + 0x18)" ( (binary_expression "pbVar5 + 0x18" identifier + number_literal) ))))) ;) (goto_statement "goto LAB_0012a0a3;" goto statement_identifier ;) })) (expression_statement "*param_1 = pbVar5;" (assignment_expression "*param_1 = pbVar5" (pointer_expression "*param_1" * identifier) = identifier) ;) (labeled_statement "LAB_0012a028:\n    pbVar4 = *(byte **)(pbVar5 + 0x18);" statement_identifier : (expression_statement "pbVar4 = *(byte **)(pbVar5 + 0x18);" (assignment_expression "pbVar4 = *(byte **)(pbVar5 + 0x18)" identifier = (pointer_expression "*(byte **)(pbVar5 + 0x18)" * (cast_expression "(byte **)(pbVar5 + 0x18)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pbVar5 + 0x18)" ( (binary_expression "pbVar5 + 0x18" identifier + number_literal) ))))) ;)) (if_statement "if (lVar6 != DAT_0019d7d8) {\n      *param_2 = *(undefined8 *)(pbVar5 + 0x20);\n      *param_3 = lVar6;\n      bVar7 = DAT_0019d700 != lVar6;\n      *param_4 = pbVar4;\n      if (bVar7) {\n        return 1;\n      }\n      goto LAB_0012a04f;\n    }" if (parenthesized_expression "(lVar6 != DAT_0019d7d8)" ( (binary_expression "lVar6 != DAT_0019d7d8" identifier != identifier) )) (compound_statement "{\n      *param_2 = *(undefined8 *)(pbVar5 + 0x20);\n      *param_3 = lVar6;\n      bVar7 = DAT_0019d700 != lVar6;\n      *param_4 = pbVar4;\n      if (bVar7) {\n        return 1;\n      }\n      goto LAB_0012a04f;\n    }" { (expression_statement "*param_2 = *(undefined8 *)(pbVar5 + 0x20);" (assignment_expression "*param_2 = *(undefined8 *)(pbVar5 + 0x20)" (pointer_expression "*param_2" * identifier) = (pointer_expression "*(undefined8 *)(pbVar5 + 0x20)" * (cast_expression "(undefined8 *)(pbVar5 + 0x20)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pbVar5 + 0x20)" ( (binary_expression "pbVar5 + 0x20" identifier + number_literal) ))))) ;) (expression_statement "*param_3 = lVar6;" (assignment_expression "*param_3 = lVar6" (pointer_expression "*param_3" * identifier) = identifier) ;) (expression_statement "bVar7 = DAT_0019d700 != lVar6;" (assignment_expression "bVar7 = DAT_0019d700 != lVar6" identifier = (binary_expression "DAT_0019d700 != lVar6" identifier != identifier)) ;) (expression_statement "*param_4 = pbVar4;" (assignment_expression "*param_4 = pbVar4" (pointer_expression "*param_4" * identifier) = identifier) ;) (if_statement "if (bVar7) {\n        return 1;\n      }" if (parenthesized_expression "(bVar7)" ( identifier )) (compound_statement "{\n        return 1;\n      }" { (return_statement "return 1;" return number_literal ;) })) (goto_statement "goto LAB_0012a04f;" goto statement_identifier ;) })) (expression_statement "lVar6 = *(long *)(pbVar4 + 8);" (assignment_expression "lVar6 = *(long *)(pbVar4 + 8)" identifier = (pointer_expression "*(long *)(pbVar4 + 8)" * (cast_expression "(long *)(pbVar4 + 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pbVar4 + 8)" ( (binary_expression "pbVar4 + 8" identifier + number_literal) ))))) ;) }) (else_clause "else {\nLAB_00129f65:\n    lVar6 = *(long *)(pbVar4 + 8);\n    *param_1 = pbVar4;\n    pbVar5 = pbVar4;\n    if ((bVar2 & 1) != 0) goto LAB_0012a028;\n  }" else (compound_statement "{\nLAB_00129f65:\n    lVar6 = *(long *)(pbVar4 + 8);\n    *param_1 = pbVar4;\n    pbVar5 = pbVar4;\n    if ((bVar2 & 1) != 0) goto LAB_0012a028;\n  }" { (labeled_statement "LAB_00129f65:\n    lVar6 = *(long *)(pbVar4 + 8);" statement_identifier : (expression_statement "lVar6 = *(long *)(pbVar4 + 8);" (assignment_expression "lVar6 = *(long *)(pbVar4 + 8)" identifier = (pointer_expression "*(long *)(pbVar4 + 8)" * (cast_expression "(long *)(pbVar4 + 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pbVar4 + 8)" ( (binary_expression "pbVar4 + 8" identifier + number_literal) ))))) ;)) (expression_statement "*param_1 = pbVar4;" (assignment_expression "*param_1 = pbVar4" (pointer_expression "*param_1" * identifier) = identifier) ;) (expression_statement "pbVar5 = pbVar4;" (assignment_expression "pbVar5 = pbVar4" identifier = identifier) ;) (if_statement "if ((bVar2 & 1) != 0) goto LAB_0012a028;" if (parenthesized_expression "((bVar2 & 1) != 0)" ( (binary_expression "(bVar2 & 1) != 0" (parenthesized_expression "(bVar2 & 1)" ( (binary_expression "bVar2 & 1" identifier & number_literal) )) != number_literal) )) (goto_statement "goto LAB_0012a028;" goto statement_identifier ;)) }))) (expression_statement "lVar6 = *(long *)(lVar6 + 0x20);" (assignment_expression "lVar6 = *(long *)(lVar6 + 0x20)" identifier = (pointer_expression "*(long *)(lVar6 + 0x20)" * (cast_expression "(long *)(lVar6 + 0x20)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar6 + 0x20)" ( (binary_expression "lVar6 + 0x20" identifier + number_literal) ))))) ;) (expression_statement "*param_2 = local_28;" (assignment_expression "*param_2 = local_28" (pointer_expression "*param_2" * identifier) = identifier) ;) (expression_statement "uVar1 = *(undefined8 *)(pbVar4 + 0x40);" (assignment_expression "uVar1 = *(undefined8 *)(pbVar4 + 0x40)" identifier = (pointer_expression "*(undefined8 *)(pbVar4 + 0x40)" * (cast_expression "(undefined8 *)(pbVar4 + 0x40)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pbVar4 + 0x40)" ( (binary_expression "pbVar4 + 0x40" identifier + number_literal) ))))) ;) (expression_statement "*param_3 = lVar6;" (assignment_expression "*param_3 = lVar6" (pointer_expression "*param_3" * identifier) = identifier) ;) (expression_statement "bVar7 = DAT_0019d700 != lVar6;" (assignment_expression "bVar7 = DAT_0019d700 != lVar6" identifier = (binary_expression "DAT_0019d700 != lVar6" identifier != identifier)) ;) (expression_statement "*param_4 = uVar1;" (assignment_expression "*param_4 = uVar1" (pointer_expression "*param_4" * identifier) = identifier) ;) (if_statement "if (bVar7) {\n    return 1;\n  }" if (parenthesized_expression "(bVar7)" ( identifier )) (compound_statement "{\n    return 1;\n  }" { (return_statement "return 1;" return number_literal ;) })) (labeled_statement "LAB_0012a04f:\n  if ((byte)uStack_20 == '\x02') {\n    *param_3 = 0x1949f0;\n  }\n  else if ((byte)uStack_20 == '\x05') {\n    *param_3 = DAT_0019d7d8;\n  }" statement_identifier : (if_statement "if ((byte)uStack_20 == '\x02') {\n    *param_3 = 0x1949f0;\n  }\n  else if ((byte)uStack_20 == '\x05') {\n    *param_3 = DAT_0019d7d8;\n  }" if (parenthesized_expression "((byte)uStack_20 == '\x02')" ( (binary_expression "(byte)uStack_20 == '\x02'" (cast_expression "(byte)uStack_20" ( (type_descriptor "byte" type_identifier) ) identifier) == (char_literal "'\x02'" ' escape_sequence ')) )) (compound_statement "{\n    *param_3 = 0x1949f0;\n  }" { (expression_statement "*param_3 = 0x1949f0;" (assignment_expression "*param_3 = 0x1949f0" (pointer_expression "*param_3" * identifier) = number_literal) ;) }) (else_clause "else if ((byte)uStack_20 == '\x05') {\n    *param_3 = DAT_0019d7d8;\n  }" else (if_statement "if ((byte)uStack_20 == '\x05') {\n    *param_3 = DAT_0019d7d8;\n  }" if (parenthesized_expression "((byte)uStack_20 == '\x05')" ( (binary_expression "(byte)uStack_20 == '\x05'" (cast_expression "(byte)uStack_20" ( (type_descriptor "byte" type_identifier) ) identifier) == (char_literal "'\x05'" ' escape_sequence ')) )) (compound_statement "{\n    *param_3 = DAT_0019d7d8;\n  }" { (expression_statement "*param_3 = DAT_0019d7d8;" (assignment_expression "*param_3 = DAT_0019d7d8" (pointer_expression "*param_3" * identifier) = identifier) ;) }))))) (return_statement "return 1;" return number_literal ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration (sized_type_specifier long) (pointer_declarator * IDENT)) , (parameter_declaration TYPE (pointer_declarator * IDENT)) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration (sized_type_specifier long) IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != IDENT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (return_statement return LIT ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) == LIT) )) && (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) != (char_literal ' escape_sequence ')) ))) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) != LIT) )) (compound_statement { (return_statement return LIT ;) })) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression (pointer_expression * IDENT) | LIT)) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (pointer_expression & IDENT) )))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression (pointer_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 (cast_expression ( (type_descriptor TYPE) ) IDENT) < LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) != LIT) )) (compound_statement { (return_statement return LIT ;) })) (goto_statement goto statement_identifier ;) })) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;)) (expression_statement (assignment_expression IDENT = IDENT) ;) (goto_statement goto statement_identifier ;) })) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) != LIT) )) (compound_statement { (return_statement return LIT ;) })) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;)) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) == LIT) )) (compound_statement { (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) != LIT) )) (goto_statement goto statement_identifier ;))) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT != IDENT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT != IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (if_statement if (parenthesized_expression ( IDENT )) (compound_statement { (return_statement return LIT ;) })) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) }) (else_clause else (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;)) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) != LIT) )) (goto_statement goto statement_identifier ;)) }))) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT != IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (if_statement if (parenthesized_expression ( IDENT )) (compound_statement { (return_statement return LIT ;) })) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) == (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) }) (else_clause else (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) == (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) }))))) (return_statement return LIT ;) })))
(function_definition "undefined8 FUN_00129f00(undefined8 *param_1,undefined8 *param_2,long *param_3,undefined8 *param_4)\n\n{\n  undefined8 uVar1;\n  byte bVar2;\n  int iVar3;\n  byte *pbVar4;\n  byte *pbVar5;\n  long lVar6;\n  bool bVar7;\n  byte *local_38;\n  undefined8 uStack_30;\n  undefined8 local_28;\n  undefined8 uStack_20;\n  \n  pbVar4 = (byte *)*param_1;\n  bVar2 = *pbVar4;\n  pbVar5 = pbVar4;\n  if ((bVar2 & 1) != 0) {\n    lVar6 = *(long *)(pbVar4 + 8);\n    pbVar5 = *(byte **)(pbVar4 + 0x18);\n    if (lVar6 != DAT_0019d7d8) {\n      *param_2 = *(undefined8 *)(pbVar4 + 0x20);\n      *param_3 = lVar6;\n      *param_4 = pbVar5;\n      return 1;\n    }\n    bVar2 = *pbVar5;\n  }\n  local_38 = *(byte **)(pbVar5 + 0x10);\n  uStack_30 = *(undefined8 *)(pbVar5 + 0x18);\n  local_28 = *(undefined8 *)(pbVar5 + 0x20);\n  uStack_20 = *(undefined8 *)(pbVar5 + 0x28);\n  pbVar4 = pbVar5;\n  if (((bVar2 & 4) == 0) && ((byte)uStack_20 != '\0')) {\n    if ((bVar2 & 8) != 0) {\n      return 0;\n    }\n    *pbVar5 = *pbVar5 | 8;\n    iVar3 = FUN_001163e0(&local_38);\n    *pbVar5 = *pbVar5 & 0xf7;\n    if (iVar3 == 0) {\n      return 0;\n    }\n    if ((byte)uStack_20 < 5) {\n      if ((byte)uStack_20 < 3) {\n        if ((byte)uStack_20 != 2) {\n          return 0;\n        }\n        goto LAB_0012a002;\n      }\nLAB_0012a0ad:\n      bVar2 = *local_38;\n      pbVar4 = local_38;\n      goto LAB_00129f65;\n    }\n    if ((byte)uStack_20 != 5) {\n      return 0;\n    }\nLAB_0012a002:\n    bVar2 = *pbVar5;\n    if ((bVar2 & 1) == 0) {\nLAB_0012a0a3:\n      if (pbVar5[0x28] != 3) goto LAB_00129f65;\n      goto LAB_0012a0ad;\n    }\n    lVar6 = *(long *)(pbVar5 + 8);\n    if (lVar6 == DAT_0019d7d8) {\n      pbVar5 = *(byte **)(pbVar5 + 0x18);\n      goto LAB_0012a0a3;\n    }\n    *param_1 = pbVar5;\nLAB_0012a028:\n    pbVar4 = *(byte **)(pbVar5 + 0x18);\n    if (lVar6 != DAT_0019d7d8) {\n      *param_2 = *(undefined8 *)(pbVar5 + 0x20);\n      *param_3 = lVar6;\n      bVar7 = DAT_0019d700 != lVar6;\n      *param_4 = pbVar4;\n      if (bVar7) {\n        return 1;\n      }\n      goto LAB_0012a04f;\n    }\n    lVar6 = *(long *)(pbVar4 + 8);\n  }\n  else {\nLAB_00129f65:\n    lVar6 = *(long *)(pbVar4 + 8);\n    *param_1 = pbVar4;\n    pbVar5 = pbVar4;\n    if ((bVar2 & 1) != 0) goto LAB_0012a028;\n  }\n  lVar6 = *(long *)(lVar6 + 0x20);\n  *param_2 = local_28;\n  uVar1 = *(undefined8 *)(pbVar4 + 0x40);\n  *param_3 = lVar6;\n  bVar7 = DAT_0019d700 != lVar6;\n  *param_4 = uVar1;\n  if (bVar7) {\n    return 1;\n  }\nLAB_0012a04f:\n  if ((byte)uStack_20 == '\x02') {\n    *param_3 = 0x1949f0;\n  }\n  else if ((byte)uStack_20 == '\x05') {\n    *param_3 = DAT_0019d7d8;\n  }\n  return 1;\n}" (type_identifier "undefined8") (function_declarator "FUN_00129f00(undefined8 *param_1,undefined8 *param_2,long *param_3,undefined8 *param_4)" (identifier "FUN_00129f00") (parameter_list "(undefined8 *param_1,undefined8 *param_2,long *param_3,undefined8 *param_4)" (( "(") (parameter_declaration "undefined8 *param_1" (type_identifier "undefined8") (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) (, ",") (parameter_declaration "undefined8 *param_2" (type_identifier "undefined8") (pointer_declarator "*param_2" (* "*") (identifier "param_2"))) (, ",") (parameter_declaration "long *param_3" (sized_type_specifier "long" (long "long")) (pointer_declarator "*param_3" (* "*") (identifier "param_3"))) (, ",") (parameter_declaration "undefined8 *param_4" (type_identifier "undefined8") (pointer_declarator "*param_4" (* "*") (identifier "param_4"))) () ")"))) (compound_statement "{\n  undefined8 uVar1;\n  byte bVar2;\n  int iVar3;\n  byte *pbVar4;\n  byte *pbVar5;\n  long lVar6;\n  bool bVar7;\n  byte *local_38;\n  undefined8 uStack_30;\n  undefined8 local_28;\n  undefined8 uStack_20;\n  \n  pbVar4 = (byte *)*param_1;\n  bVar2 = *pbVar4;\n  pbVar5 = pbVar4;\n  if ((bVar2 & 1) != 0) {\n    lVar6 = *(long *)(pbVar4 + 8);\n    pbVar5 = *(byte **)(pbVar4 + 0x18);\n    if (lVar6 != DAT_0019d7d8) {\n      *param_2 = *(undefined8 *)(pbVar4 + 0x20);\n      *param_3 = lVar6;\n      *param_4 = pbVar5;\n      return 1;\n    }\n    bVar2 = *pbVar5;\n  }\n  local_38 = *(byte **)(pbVar5 + 0x10);\n  uStack_30 = *(undefined8 *)(pbVar5 + 0x18);\n  local_28 = *(undefined8 *)(pbVar5 + 0x20);\n  uStack_20 = *(undefined8 *)(pbVar5 + 0x28);\n  pbVar4 = pbVar5;\n  if (((bVar2 & 4) == 0) && ((byte)uStack_20 != '\0')) {\n    if ((bVar2 & 8) != 0) {\n      return 0;\n    }\n    *pbVar5 = *pbVar5 | 8;\n    iVar3 = FUN_001163e0(&local_38);\n    *pbVar5 = *pbVar5 & 0xf7;\n    if (iVar3 == 0) {\n      return 0;\n    }\n    if ((byte)uStack_20 < 5) {\n      if ((byte)uStack_20 < 3) {\n        if ((byte)uStack_20 != 2) {\n          return 0;\n        }\n        goto LAB_0012a002;\n      }\nLAB_0012a0ad:\n      bVar2 = *local_38;\n      pbVar4 = local_38;\n      goto LAB_00129f65;\n    }\n    if ((byte)uStack_20 != 5) {\n      return 0;\n    }\nLAB_0012a002:\n    bVar2 = *pbVar5;\n    if ((bVar2 & 1) == 0) {\nLAB_0012a0a3:\n      if (pbVar5[0x28] != 3) goto LAB_00129f65;\n      goto LAB_0012a0ad;\n    }\n    lVar6 = *(long *)(pbVar5 + 8);\n    if (lVar6 == DAT_0019d7d8) {\n      pbVar5 = *(byte **)(pbVar5 + 0x18);\n      goto LAB_0012a0a3;\n    }\n    *param_1 = pbVar5;\nLAB_0012a028:\n    pbVar4 = *(byte **)(pbVar5 + 0x18);\n    if (lVar6 != DAT_0019d7d8) {\n      *param_2 = *(undefined8 *)(pbVar5 + 0x20);\n      *param_3 = lVar6;\n      bVar7 = DAT_0019d700 != lVar6;\n      *param_4 = pbVar4;\n      if (bVar7) {\n        return 1;\n      }\n      goto LAB_0012a04f;\n    }\n    lVar6 = *(long *)(pbVar4 + 8);\n  }\n  else {\nLAB_00129f65:\n    lVar6 = *(long *)(pbVar4 + 8);\n    *param_1 = pbVar4;\n    pbVar5 = pbVar4;\n    if ((bVar2 & 1) != 0) goto LAB_0012a028;\n  }\n  lVar6 = *(long *)(lVar6 + 0x20);\n  *param_2 = local_28;\n  uVar1 = *(undefined8 *)(pbVar4 + 0x40);\n  *param_3 = lVar6;\n  bVar7 = DAT_0019d700 != lVar6;\n  *param_4 = uVar1;\n  if (bVar7) {\n    return 1;\n  }\nLAB_0012a04f:\n  if ((byte)uStack_20 == '\x02') {\n    *param_3 = 0x1949f0;\n  }\n  else if ((byte)uStack_20 == '\x05') {\n    *param_3 = DAT_0019d7d8;\n  }\n  return 1;\n}" ({ "{") (declaration "undefined8 uVar1;" (type_identifier "undefined8") (identifier "uVar1") (; ";")) (declaration "byte bVar2;" (type_identifier "byte") (identifier "bVar2") (; ";")) (declaration "int iVar3;" (primitive_type "int") (identifier "iVar3") (; ";")) (declaration "byte *pbVar4;" (type_identifier "byte") (pointer_declarator "*pbVar4" (* "*") (identifier "pbVar4")) (; ";")) (declaration "byte *pbVar5;" (type_identifier "byte") (pointer_declarator "*pbVar5" (* "*") (identifier "pbVar5")) (; ";")) (declaration "long lVar6;" (sized_type_specifier "long" (long "long")) (identifier "lVar6") (; ";")) (declaration "bool bVar7;" (primitive_type "bool") (identifier "bVar7") (; ";")) (declaration "byte *local_38;" (type_identifier "byte") (pointer_declarator "*local_38" (* "*") (identifier "local_38")) (; ";")) (declaration "undefined8 uStack_30;" (type_identifier "undefined8") (identifier "uStack_30") (; ";")) (declaration "undefined8 local_28;" (type_identifier "undefined8") (identifier "local_28") (; ";")) (declaration "undefined8 uStack_20;" (type_identifier "undefined8") (identifier "uStack_20") (; ";")) (expression_statement "pbVar4 = (byte *)*param_1;" (assignment_expression "pbVar4 = (byte *)*param_1" (identifier "pbVar4") (= "=") (cast_expression "(byte *)*param_1" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*param_1" (* "*") (identifier "param_1")))) (; ";")) (expression_statement "bVar2 = *pbVar4;" (assignment_expression "bVar2 = *pbVar4" (identifier "bVar2") (= "=") (pointer_expression "*pbVar4" (* "*") (identifier "pbVar4"))) (; ";")) (expression_statement "pbVar5 = pbVar4;" (assignment_expression "pbVar5 = pbVar4" (identifier "pbVar5") (= "=") (identifier "pbVar4")) (; ";")) (if_statement "if ((bVar2 & 1) != 0) {\n    lVar6 = *(long *)(pbVar4 + 8);\n    pbVar5 = *(byte **)(pbVar4 + 0x18);\n    if (lVar6 != DAT_0019d7d8) {\n      *param_2 = *(undefined8 *)(pbVar4 + 0x20);\n      *param_3 = lVar6;\n      *param_4 = pbVar5;\n      return 1;\n    }\n    bVar2 = *pbVar5;\n  }" (if "if") (parenthesized_expression "((bVar2 & 1) != 0)" (( "(") (binary_expression "(bVar2 & 1) != 0" (parenthesized_expression "(bVar2 & 1)" (( "(") (binary_expression "bVar2 & 1" (identifier "bVar2") (& "&") (number_literal "1")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    lVar6 = *(long *)(pbVar4 + 8);\n    pbVar5 = *(byte **)(pbVar4 + 0x18);\n    if (lVar6 != DAT_0019d7d8) {\n      *param_2 = *(undefined8 *)(pbVar4 + 0x20);\n      *param_3 = lVar6;\n      *param_4 = pbVar5;\n      return 1;\n    }\n    bVar2 = *pbVar5;\n  }" ({ "{") (expression_statement "lVar6 = *(long *)(pbVar4 + 8);" (assignment_expression "lVar6 = *(long *)(pbVar4 + 8)" (identifier "lVar6") (= "=") (pointer_expression "*(long *)(pbVar4 + 8)" (* "*") (cast_expression "(long *)(pbVar4 + 8)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(pbVar4 + 8)" (( "(") (binary_expression "pbVar4 + 8" (identifier "pbVar4") (+ "+") (number_literal "8")) () ")"))))) (; ";")) (expression_statement "pbVar5 = *(byte **)(pbVar4 + 0x18);" (assignment_expression "pbVar5 = *(byte **)(pbVar4 + 0x18)" (identifier "pbVar5") (= "=") (pointer_expression "*(byte **)(pbVar4 + 0x18)" (* "*") (cast_expression "(byte **)(pbVar4 + 0x18)" (( "(") (type_descriptor "byte **" (type_identifier "byte") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(pbVar4 + 0x18)" (( "(") (binary_expression "pbVar4 + 0x18" (identifier "pbVar4") (+ "+") (number_literal "0x18")) () ")"))))) (; ";")) (if_statement "if (lVar6 != DAT_0019d7d8) {\n      *param_2 = *(undefined8 *)(pbVar4 + 0x20);\n      *param_3 = lVar6;\n      *param_4 = pbVar5;\n      return 1;\n    }" (if "if") (parenthesized_expression "(lVar6 != DAT_0019d7d8)" (( "(") (binary_expression "lVar6 != DAT_0019d7d8" (identifier "lVar6") (!= "!=") (identifier "DAT_0019d7d8")) () ")")) (compound_statement "{\n      *param_2 = *(undefined8 *)(pbVar4 + 0x20);\n      *param_3 = lVar6;\n      *param_4 = pbVar5;\n      return 1;\n    }" ({ "{") (expression_statement "*param_2 = *(undefined8 *)(pbVar4 + 0x20);" (assignment_expression "*param_2 = *(undefined8 *)(pbVar4 + 0x20)" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (= "=") (pointer_expression "*(undefined8 *)(pbVar4 + 0x20)" (* "*") (cast_expression "(undefined8 *)(pbVar4 + 0x20)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(pbVar4 + 0x20)" (( "(") (binary_expression "pbVar4 + 0x20" (identifier "pbVar4") (+ "+") (number_literal "0x20")) () ")"))))) (; ";")) (expression_statement "*param_3 = lVar6;" (assignment_expression "*param_3 = lVar6" (pointer_expression "*param_3" (* "*") (identifier "param_3")) (= "=") (identifier "lVar6")) (; ";")) (expression_statement "*param_4 = pbVar5;" (assignment_expression "*param_4 = pbVar5" (pointer_expression "*param_4" (* "*") (identifier "param_4")) (= "=") (identifier "pbVar5")) (; ";")) (return_statement "return 1;" (return "return") (number_literal "1") (; ";")) (} "}"))) (expression_statement "bVar2 = *pbVar5;" (assignment_expression "bVar2 = *pbVar5" (identifier "bVar2") (= "=") (pointer_expression "*pbVar5" (* "*") (identifier "pbVar5"))) (; ";")) (} "}"))) (expression_statement "local_38 = *(byte **)(pbVar5 + 0x10);" (assignment_expression "local_38 = *(byte **)(pbVar5 + 0x10)" (identifier "local_38") (= "=") (pointer_expression "*(byte **)(pbVar5 + 0x10)" (* "*") (cast_expression "(byte **)(pbVar5 + 0x10)" (( "(") (type_descriptor "byte **" (type_identifier "byte") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(pbVar5 + 0x10)" (( "(") (binary_expression "pbVar5 + 0x10" (identifier "pbVar5") (+ "+") (number_literal "0x10")) () ")"))))) (; ";")) (expression_statement "uStack_30 = *(undefined8 *)(pbVar5 + 0x18);" (assignment_expression "uStack_30 = *(undefined8 *)(pbVar5 + 0x18)" (identifier "uStack_30") (= "=") (pointer_expression "*(undefined8 *)(pbVar5 + 0x18)" (* "*") (cast_expression "(undefined8 *)(pbVar5 + 0x18)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(pbVar5 + 0x18)" (( "(") (binary_expression "pbVar5 + 0x18" (identifier "pbVar5") (+ "+") (number_literal "0x18")) () ")"))))) (; ";")) (expression_statement "local_28 = *(undefined8 *)(pbVar5 + 0x20);" (assignment_expression "local_28 = *(undefined8 *)(pbVar5 + 0x20)" (identifier "local_28") (= "=") (pointer_expression "*(undefined8 *)(pbVar5 + 0x20)" (* "*") (cast_expression "(undefined8 *)(pbVar5 + 0x20)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(pbVar5 + 0x20)" (( "(") (binary_expression "pbVar5 + 0x20" (identifier "pbVar5") (+ "+") (number_literal "0x20")) () ")"))))) (; ";")) (expression_statement "uStack_20 = *(undefined8 *)(pbVar5 + 0x28);" (assignment_expression "uStack_20 = *(undefined8 *)(pbVar5 + 0x28)" (identifier "uStack_20") (= "=") (pointer_expression "*(undefined8 *)(pbVar5 + 0x28)" (* "*") (cast_expression "(undefined8 *)(pbVar5 + 0x28)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(pbVar5 + 0x28)" (( "(") (binary_expression "pbVar5 + 0x28" (identifier "pbVar5") (+ "+") (number_literal "0x28")) () ")"))))) (; ";")) (expression_statement "pbVar4 = pbVar5;" (assignment_expression "pbVar4 = pbVar5" (identifier "pbVar4") (= "=") (identifier "pbVar5")) (; ";")) (if_statement "if (((bVar2 & 4) == 0) && ((byte)uStack_20 != '\0')) {\n    if ((bVar2 & 8) != 0) {\n      return 0;\n    }\n    *pbVar5 = *pbVar5 | 8;\n    iVar3 = FUN_001163e0(&local_38);\n    *pbVar5 = *pbVar5 & 0xf7;\n    if (iVar3 == 0) {\n      return 0;\n    }\n    if ((byte)uStack_20 < 5) {\n      if ((byte)uStack_20 < 3) {\n        if ((byte)uStack_20 != 2) {\n          return 0;\n        }\n        goto LAB_0012a002;\n      }\nLAB_0012a0ad:\n      bVar2 = *local_38;\n      pbVar4 = local_38;\n      goto LAB_00129f65;\n    }\n    if ((byte)uStack_20 != 5) {\n      return 0;\n    }\nLAB_0012a002:\n    bVar2 = *pbVar5;\n    if ((bVar2 & 1) == 0) {\nLAB_0012a0a3:\n      if (pbVar5[0x28] != 3) goto LAB_00129f65;\n      goto LAB_0012a0ad;\n    }\n    lVar6 = *(long *)(pbVar5 + 8);\n    if (lVar6 == DAT_0019d7d8) {\n      pbVar5 = *(byte **)(pbVar5 + 0x18);\n      goto LAB_0012a0a3;\n    }\n    *param_1 = pbVar5;\nLAB_0012a028:\n    pbVar4 = *(byte **)(pbVar5 + 0x18);\n    if (lVar6 != DAT_0019d7d8) {\n      *param_2 = *(undefined8 *)(pbVar5 + 0x20);\n      *param_3 = lVar6;\n      bVar7 = DAT_0019d700 != lVar6;\n      *param_4 = pbVar4;\n      if (bVar7) {\n        return 1;\n      }\n      goto LAB_0012a04f;\n    }\n    lVar6 = *(long *)(pbVar4 + 8);\n  }\n  else {\nLAB_00129f65:\n    lVar6 = *(long *)(pbVar4 + 8);\n    *param_1 = pbVar4;\n    pbVar5 = pbVar4;\n    if ((bVar2 & 1) != 0) goto LAB_0012a028;\n  }" (if "if") (parenthesized_expression "(((bVar2 & 4) == 0) && ((byte)uStack_20 != '\0'))" (( "(") (binary_expression "((bVar2 & 4) == 0) && ((byte)uStack_20 != '\0')" (parenthesized_expression "((bVar2 & 4) == 0)" (( "(") (binary_expression "(bVar2 & 4) == 0" (parenthesized_expression "(bVar2 & 4)" (( "(") (binary_expression "bVar2 & 4" (identifier "bVar2") (& "&") (number_literal "4")) () ")")) (== "==") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "((byte)uStack_20 != '\0')" (( "(") (binary_expression "(byte)uStack_20 != '\0'" (cast_expression "(byte)uStack_20" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "uStack_20")) (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")"))) () ")")) (compound_statement "{\n    if ((bVar2 & 8) != 0) {\n      return 0;\n    }\n    *pbVar5 = *pbVar5 | 8;\n    iVar3 = FUN_001163e0(&local_38);\n    *pbVar5 = *pbVar5 & 0xf7;\n    if (iVar3 == 0) {\n      return 0;\n    }\n    if ((byte)uStack_20 < 5) {\n      if ((byte)uStack_20 < 3) {\n        if ((byte)uStack_20 != 2) {\n          return 0;\n        }\n        goto LAB_0012a002;\n      }\nLAB_0012a0ad:\n      bVar2 = *local_38;\n      pbVar4 = local_38;\n      goto LAB_00129f65;\n    }\n    if ((byte)uStack_20 != 5) {\n      return 0;\n    }\nLAB_0012a002:\n    bVar2 = *pbVar5;\n    if ((bVar2 & 1) == 0) {\nLAB_0012a0a3:\n      if (pbVar5[0x28] != 3) goto LAB_00129f65;\n      goto LAB_0012a0ad;\n    }\n    lVar6 = *(long *)(pbVar5 + 8);\n    if (lVar6 == DAT_0019d7d8) {\n      pbVar5 = *(byte **)(pbVar5 + 0x18);\n      goto LAB_0012a0a3;\n    }\n    *param_1 = pbVar5;\nLAB_0012a028:\n    pbVar4 = *(byte **)(pbVar5 + 0x18);\n    if (lVar6 != DAT_0019d7d8) {\n      *param_2 = *(undefined8 *)(pbVar5 + 0x20);\n      *param_3 = lVar6;\n      bVar7 = DAT_0019d700 != lVar6;\n      *param_4 = pbVar4;\n      if (bVar7) {\n        return 1;\n      }\n      goto LAB_0012a04f;\n    }\n    lVar6 = *(long *)(pbVar4 + 8);\n  }" ({ "{") (if_statement "if ((bVar2 & 8) != 0) {\n      return 0;\n    }" (if "if") (parenthesized_expression "((bVar2 & 8) != 0)" (( "(") (binary_expression "(bVar2 & 8) != 0" (parenthesized_expression "(bVar2 & 8)" (( "(") (binary_expression "bVar2 & 8" (identifier "bVar2") (& "&") (number_literal "8")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      return 0;\n    }" ({ "{") (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (expression_statement "*pbVar5 = *pbVar5 | 8;" (assignment_expression "*pbVar5 = *pbVar5 | 8" (pointer_expression "*pbVar5" (* "*") (identifier "pbVar5")) (= "=") (binary_expression "*pbVar5 | 8" (pointer_expression "*pbVar5" (* "*") (identifier "pbVar5")) (| "|") (number_literal "8"))) (; ";")) (expression_statement "iVar3 = FUN_001163e0(&local_38);" (assignment_expression "iVar3 = FUN_001163e0(&local_38)" (identifier "iVar3") (= "=") (call_expression "FUN_001163e0(&local_38)" (identifier "FUN_001163e0") (argument_list "(&local_38)" (( "(") (pointer_expression "&local_38" (& "&") (identifier "local_38")) () ")")))) (; ";")) (expression_statement "*pbVar5 = *pbVar5 & 0xf7;" (assignment_expression "*pbVar5 = *pbVar5 & 0xf7" (pointer_expression "*pbVar5" (* "*") (identifier "pbVar5")) (= "=") (binary_expression "*pbVar5 & 0xf7" (pointer_expression "*pbVar5" (* "*") (identifier "pbVar5")) (& "&") (number_literal "0xf7"))) (; ";")) (if_statement "if (iVar3 == 0) {\n      return 0;\n    }" (if "if") (parenthesized_expression "(iVar3 == 0)" (( "(") (binary_expression "iVar3 == 0" (identifier "iVar3") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      return 0;\n    }" ({ "{") (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (if_statement "if ((byte)uStack_20 < 5) {\n      if ((byte)uStack_20 < 3) {\n        if ((byte)uStack_20 != 2) {\n          return 0;\n        }\n        goto LAB_0012a002;\n      }\nLAB_0012a0ad:\n      bVar2 = *local_38;\n      pbVar4 = local_38;\n      goto LAB_00129f65;\n    }" (if "if") (parenthesized_expression "((byte)uStack_20 < 5)" (( "(") (binary_expression "(byte)uStack_20 < 5" (cast_expression "(byte)uStack_20" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "uStack_20")) (< "<") (number_literal "5")) () ")")) (compound_statement "{\n      if ((byte)uStack_20 < 3) {\n        if ((byte)uStack_20 != 2) {\n          return 0;\n        }\n        goto LAB_0012a002;\n      }\nLAB_0012a0ad:\n      bVar2 = *local_38;\n      pbVar4 = local_38;\n      goto LAB_00129f65;\n    }" ({ "{") (if_statement "if ((byte)uStack_20 < 3) {\n        if ((byte)uStack_20 != 2) {\n          return 0;\n        }\n        goto LAB_0012a002;\n      }" (if "if") (parenthesized_expression "((byte)uStack_20 < 3)" (( "(") (binary_expression "(byte)uStack_20 < 3" (cast_expression "(byte)uStack_20" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "uStack_20")) (< "<") (number_literal "3")) () ")")) (compound_statement "{\n        if ((byte)uStack_20 != 2) {\n          return 0;\n        }\n        goto LAB_0012a002;\n      }" ({ "{") (if_statement "if ((byte)uStack_20 != 2) {\n          return 0;\n        }" (if "if") (parenthesized_expression "((byte)uStack_20 != 2)" (( "(") (binary_expression "(byte)uStack_20 != 2" (cast_expression "(byte)uStack_20" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "uStack_20")) (!= "!=") (number_literal "2")) () ")")) (compound_statement "{\n          return 0;\n        }" ({ "{") (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (goto_statement "goto LAB_0012a002;" (goto "goto") (statement_identifier "LAB_0012a002") (; ";")) (} "}"))) (labeled_statement "LAB_0012a0ad:\n      bVar2 = *local_38;" (statement_identifier "LAB_0012a0ad") (: ":") (expression_statement "bVar2 = *local_38;" (assignment_expression "bVar2 = *local_38" (identifier "bVar2") (= "=") (pointer_expression "*local_38" (* "*") (identifier "local_38"))) (; ";"))) (expression_statement "pbVar4 = local_38;" (assignment_expression "pbVar4 = local_38" (identifier "pbVar4") (= "=") (identifier "local_38")) (; ";")) (goto_statement "goto LAB_00129f65;" (goto "goto") (statement_identifier "LAB_00129f65") (; ";")) (} "}"))) (if_statement "if ((byte)uStack_20 != 5) {\n      return 0;\n    }" (if "if") (parenthesized_expression "((byte)uStack_20 != 5)" (( "(") (binary_expression "(byte)uStack_20 != 5" (cast_expression "(byte)uStack_20" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "uStack_20")) (!= "!=") (number_literal "5")) () ")")) (compound_statement "{\n      return 0;\n    }" ({ "{") (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (labeled_statement "LAB_0012a002:\n    bVar2 = *pbVar5;" (statement_identifier "LAB_0012a002") (: ":") (expression_statement "bVar2 = *pbVar5;" (assignment_expression "bVar2 = *pbVar5" (identifier "bVar2") (= "=") (pointer_expression "*pbVar5" (* "*") (identifier "pbVar5"))) (; ";"))) (if_statement "if ((bVar2 & 1) == 0) {\nLAB_0012a0a3:\n      if (pbVar5[0x28] != 3) goto LAB_00129f65;\n      goto LAB_0012a0ad;\n    }" (if "if") (parenthesized_expression "((bVar2 & 1) == 0)" (( "(") (binary_expression "(bVar2 & 1) == 0" (parenthesized_expression "(bVar2 & 1)" (( "(") (binary_expression "bVar2 & 1" (identifier "bVar2") (& "&") (number_literal "1")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\nLAB_0012a0a3:\n      if (pbVar5[0x28] != 3) goto LAB_00129f65;\n      goto LAB_0012a0ad;\n    }" ({ "{") (labeled_statement "LAB_0012a0a3:\n      if (pbVar5[0x28] != 3) goto LAB_00129f65;" (statement_identifier "LAB_0012a0a3") (: ":") (if_statement "if (pbVar5[0x28] != 3) goto LAB_00129f65;" (if "if") (parenthesized_expression "(pbVar5[0x28] != 3)" (( "(") (binary_expression "pbVar5[0x28] != 3" (subscript_expression "pbVar5[0x28]" (identifier "pbVar5") ([ "[") (number_literal "0x28") (] "]")) (!= "!=") (number_literal "3")) () ")")) (goto_statement "goto LAB_00129f65;" (goto "goto") (statement_identifier "LAB_00129f65") (; ";")))) (goto_statement "goto LAB_0012a0ad;" (goto "goto") (statement_identifier "LAB_0012a0ad") (; ";")) (} "}"))) (expression_statement "lVar6 = *(long *)(pbVar5 + 8);" (assignment_expression "lVar6 = *(long *)(pbVar5 + 8)" (identifier "lVar6") (= "=") (pointer_expression "*(long *)(pbVar5 + 8)" (* "*") (cast_expression "(long *)(pbVar5 + 8)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(pbVar5 + 8)" (( "(") (binary_expression "pbVar5 + 8" (identifier "pbVar5") (+ "+") (number_literal "8")) () ")"))))) (; ";")) (if_statement "if (lVar6 == DAT_0019d7d8) {\n      pbVar5 = *(byte **)(pbVar5 + 0x18);\n      goto LAB_0012a0a3;\n    }" (if "if") (parenthesized_expression "(lVar6 == DAT_0019d7d8)" (( "(") (binary_expression "lVar6 == DAT_0019d7d8" (identifier "lVar6") (== "==") (identifier "DAT_0019d7d8")) () ")")) (compound_statement "{\n      pbVar5 = *(byte **)(pbVar5 + 0x18);\n      goto LAB_0012a0a3;\n    }" ({ "{") (expression_statement "pbVar5 = *(byte **)(pbVar5 + 0x18);" (assignment_expression "pbVar5 = *(byte **)(pbVar5 + 0x18)" (identifier "pbVar5") (= "=") (pointer_expression "*(byte **)(pbVar5 + 0x18)" (* "*") (cast_expression "(byte **)(pbVar5 + 0x18)" (( "(") (type_descriptor "byte **" (type_identifier "byte") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(pbVar5 + 0x18)" (( "(") (binary_expression "pbVar5 + 0x18" (identifier "pbVar5") (+ "+") (number_literal "0x18")) () ")"))))) (; ";")) (goto_statement "goto LAB_0012a0a3;" (goto "goto") (statement_identifier "LAB_0012a0a3") (; ";")) (} "}"))) (expression_statement "*param_1 = pbVar5;" (assignment_expression "*param_1 = pbVar5" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (= "=") (identifier "pbVar5")) (; ";")) (labeled_statement "LAB_0012a028:\n    pbVar4 = *(byte **)(pbVar5 + 0x18);" (statement_identifier "LAB_0012a028") (: ":") (expression_statement "pbVar4 = *(byte **)(pbVar5 + 0x18);" (assignment_expression "pbVar4 = *(byte **)(pbVar5 + 0x18)" (identifier "pbVar4") (= "=") (pointer_expression "*(byte **)(pbVar5 + 0x18)" (* "*") (cast_expression "(byte **)(pbVar5 + 0x18)" (( "(") (type_descriptor "byte **" (type_identifier "byte") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(pbVar5 + 0x18)" (( "(") (binary_expression "pbVar5 + 0x18" (identifier "pbVar5") (+ "+") (number_literal "0x18")) () ")"))))) (; ";"))) (if_statement "if (lVar6 != DAT_0019d7d8) {\n      *param_2 = *(undefined8 *)(pbVar5 + 0x20);\n      *param_3 = lVar6;\n      bVar7 = DAT_0019d700 != lVar6;\n      *param_4 = pbVar4;\n      if (bVar7) {\n        return 1;\n      }\n      goto LAB_0012a04f;\n    }" (if "if") (parenthesized_expression "(lVar6 != DAT_0019d7d8)" (( "(") (binary_expression "lVar6 != DAT_0019d7d8" (identifier "lVar6") (!= "!=") (identifier "DAT_0019d7d8")) () ")")) (compound_statement "{\n      *param_2 = *(undefined8 *)(pbVar5 + 0x20);\n      *param_3 = lVar6;\n      bVar7 = DAT_0019d700 != lVar6;\n      *param_4 = pbVar4;\n      if (bVar7) {\n        return 1;\n      }\n      goto LAB_0012a04f;\n    }" ({ "{") (expression_statement "*param_2 = *(undefined8 *)(pbVar5 + 0x20);" (assignment_expression "*param_2 = *(undefined8 *)(pbVar5 + 0x20)" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (= "=") (pointer_expression "*(undefined8 *)(pbVar5 + 0x20)" (* "*") (cast_expression "(undefined8 *)(pbVar5 + 0x20)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(pbVar5 + 0x20)" (( "(") (binary_expression "pbVar5 + 0x20" (identifier "pbVar5") (+ "+") (number_literal "0x20")) () ")"))))) (; ";")) (expression_statement "*param_3 = lVar6;" (assignment_expression "*param_3 = lVar6" (pointer_expression "*param_3" (* "*") (identifier "param_3")) (= "=") (identifier "lVar6")) (; ";")) (expression_statement "bVar7 = DAT_0019d700 != lVar6;" (assignment_expression "bVar7 = DAT_0019d700 != lVar6" (identifier "bVar7") (= "=") (binary_expression "DAT_0019d700 != lVar6" (identifier "DAT_0019d700") (!= "!=") (identifier "lVar6"))) (; ";")) (expression_statement "*param_4 = pbVar4;" (assignment_expression "*param_4 = pbVar4" (pointer_expression "*param_4" (* "*") (identifier "param_4")) (= "=") (identifier "pbVar4")) (; ";")) (if_statement "if (bVar7) {\n        return 1;\n      }" (if "if") (parenthesized_expression "(bVar7)" (( "(") (identifier "bVar7") () ")")) (compound_statement "{\n        return 1;\n      }" ({ "{") (return_statement "return 1;" (return "return") (number_literal "1") (; ";")) (} "}"))) (goto_statement "goto LAB_0012a04f;" (goto "goto") (statement_identifier "LAB_0012a04f") (; ";")) (} "}"))) (expression_statement "lVar6 = *(long *)(pbVar4 + 8);" (assignment_expression "lVar6 = *(long *)(pbVar4 + 8)" (identifier "lVar6") (= "=") (pointer_expression "*(long *)(pbVar4 + 8)" (* "*") (cast_expression "(long *)(pbVar4 + 8)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(pbVar4 + 8)" (( "(") (binary_expression "pbVar4 + 8" (identifier "pbVar4") (+ "+") (number_literal "8")) () ")"))))) (; ";")) (} "}")) (else_clause "else {\nLAB_00129f65:\n    lVar6 = *(long *)(pbVar4 + 8);\n    *param_1 = pbVar4;\n    pbVar5 = pbVar4;\n    if ((bVar2 & 1) != 0) goto LAB_0012a028;\n  }" (else "else") (compound_statement "{\nLAB_00129f65:\n    lVar6 = *(long *)(pbVar4 + 8);\n    *param_1 = pbVar4;\n    pbVar5 = pbVar4;\n    if ((bVar2 & 1) != 0) goto LAB_0012a028;\n  }" ({ "{") (labeled_statement "LAB_00129f65:\n    lVar6 = *(long *)(pbVar4 + 8);" (statement_identifier "LAB_00129f65") (: ":") (expression_statement "lVar6 = *(long *)(pbVar4 + 8);" (assignment_expression "lVar6 = *(long *)(pbVar4 + 8)" (identifier "lVar6") (= "=") (pointer_expression "*(long *)(pbVar4 + 8)" (* "*") (cast_expression "(long *)(pbVar4 + 8)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(pbVar4 + 8)" (( "(") (binary_expression "pbVar4 + 8" (identifier "pbVar4") (+ "+") (number_literal "8")) () ")"))))) (; ";"))) (expression_statement "*param_1 = pbVar4;" (assignment_expression "*param_1 = pbVar4" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (= "=") (identifier "pbVar4")) (; ";")) (expression_statement "pbVar5 = pbVar4;" (assignment_expression "pbVar5 = pbVar4" (identifier "pbVar5") (= "=") (identifier "pbVar4")) (; ";")) (if_statement "if ((bVar2 & 1) != 0) goto LAB_0012a028;" (if "if") (parenthesized_expression "((bVar2 & 1) != 0)" (( "(") (binary_expression "(bVar2 & 1) != 0" (parenthesized_expression "(bVar2 & 1)" (( "(") (binary_expression "bVar2 & 1" (identifier "bVar2") (& "&") (number_literal "1")) () ")")) (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_0012a028;" (goto "goto") (statement_identifier "LAB_0012a028") (; ";"))) (} "}")))) (expression_statement "lVar6 = *(long *)(lVar6 + 0x20);" (assignment_expression "lVar6 = *(long *)(lVar6 + 0x20)" (identifier "lVar6") (= "=") (pointer_expression "*(long *)(lVar6 + 0x20)" (* "*") (cast_expression "(long *)(lVar6 + 0x20)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar6 + 0x20)" (( "(") (binary_expression "lVar6 + 0x20" (identifier "lVar6") (+ "+") (number_literal "0x20")) () ")"))))) (; ";")) (expression_statement "*param_2 = local_28;" (assignment_expression "*param_2 = local_28" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (= "=") (identifier "local_28")) (; ";")) (expression_statement "uVar1 = *(undefined8 *)(pbVar4 + 0x40);" (assignment_expression "uVar1 = *(undefined8 *)(pbVar4 + 0x40)" (identifier "uVar1") (= "=") (pointer_expression "*(undefined8 *)(pbVar4 + 0x40)" (* "*") (cast_expression "(undefined8 *)(pbVar4 + 0x40)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(pbVar4 + 0x40)" (( "(") (binary_expression "pbVar4 + 0x40" (identifier "pbVar4") (+ "+") (number_literal "0x40")) () ")"))))) (; ";")) (expression_statement "*param_3 = lVar6;" (assignment_expression "*param_3 = lVar6" (pointer_expression "*param_3" (* "*") (identifier "param_3")) (= "=") (identifier "lVar6")) (; ";")) (expression_statement "bVar7 = DAT_0019d700 != lVar6;" (assignment_expression "bVar7 = DAT_0019d700 != lVar6" (identifier "bVar7") (= "=") (binary_expression "DAT_0019d700 != lVar6" (identifier "DAT_0019d700") (!= "!=") (identifier "lVar6"))) (; ";")) (expression_statement "*param_4 = uVar1;" (assignment_expression "*param_4 = uVar1" (pointer_expression "*param_4" (* "*") (identifier "param_4")) (= "=") (identifier "uVar1")) (; ";")) (if_statement "if (bVar7) {\n    return 1;\n  }" (if "if") (parenthesized_expression "(bVar7)" (( "(") (identifier "bVar7") () ")")) (compound_statement "{\n    return 1;\n  }" ({ "{") (return_statement "return 1;" (return "return") (number_literal "1") (; ";")) (} "}"))) (labeled_statement "LAB_0012a04f:\n  if ((byte)uStack_20 == '\x02') {\n    *param_3 = 0x1949f0;\n  }\n  else if ((byte)uStack_20 == '\x05') {\n    *param_3 = DAT_0019d7d8;\n  }" (statement_identifier "LAB_0012a04f") (: ":") (if_statement "if ((byte)uStack_20 == '\x02') {\n    *param_3 = 0x1949f0;\n  }\n  else if ((byte)uStack_20 == '\x05') {\n    *param_3 = DAT_0019d7d8;\n  }" (if "if") (parenthesized_expression "((byte)uStack_20 == '\x02')" (( "(") (binary_expression "(byte)uStack_20 == '\x02'" (cast_expression "(byte)uStack_20" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "uStack_20")) (== "==") (char_literal "'\x02'" (' "'") (escape_sequence "\x02") (' "'"))) () ")")) (compound_statement "{\n    *param_3 = 0x1949f0;\n  }" ({ "{") (expression_statement "*param_3 = 0x1949f0;" (assignment_expression "*param_3 = 0x1949f0" (pointer_expression "*param_3" (* "*") (identifier "param_3")) (= "=") (number_literal "0x1949f0")) (; ";")) (} "}")) (else_clause "else if ((byte)uStack_20 == '\x05') {\n    *param_3 = DAT_0019d7d8;\n  }" (else "else") (if_statement "if ((byte)uStack_20 == '\x05') {\n    *param_3 = DAT_0019d7d8;\n  }" (if "if") (parenthesized_expression "((byte)uStack_20 == '\x05')" (( "(") (binary_expression "(byte)uStack_20 == '\x05'" (cast_expression "(byte)uStack_20" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "uStack_20")) (== "==") (char_literal "'\x05'" (' "'") (escape_sequence "\x05") (' "'"))) () ")")) (compound_statement "{\n    *param_3 = DAT_0019d7d8;\n  }" ({ "{") (expression_statement "*param_3 = DAT_0019d7d8;" (assignment_expression "*param_3 = DAT_0019d7d8" (pointer_expression "*param_3" (* "*") (identifier "param_3")) (= "=") (identifier "DAT_0019d7d8")) (; ";")) (} "}")))))) (return_statement "return 1;" (return "return") (number_literal "1") (; ";")) (} "}")))

int function_1(type_1 **symbolPP,type_2 *valueP,type_3 *segP,type_4 **fragPP)

{
  type_5 var_1;
  int var_5;
  type_4 *pfVar3;
  type_4 *pfVar4;
  type_3 var_2;
  bool bVar6;
  type_6 exp;
  
  pfVar3 = (type_4 *)*symbolPP;
  var_1 = (type_5)pfVar3->fr_address;
  pfVar4 = pfVar3;
  if ((var_1 & 1) != 0) {
    var_2 = (type_3)pfVar3->last_fr_address;
    pfVar4 = (type_4 *)pfVar3->fr_var;
    if (var_2 != var_3) {
      *valueP = pfVar3->fr_offset;
      *segP = var_2;
      *fragPP = pfVar4;
      return 1;
    }
    var_1 = (type_5)pfVar4->fr_address;
  }
  exp.X_add_symbol = (type_1 *)pfVar4->fr_fix;
  exp.X_op_symbol = (type_1 *)pfVar4->fr_var;
  exp.X_add_number = pfVar4->fr_offset;
  exp._24_8_ = pfVar4->fr_symbol;
  pfVar3 = pfVar4;
  if (((var_1 & 4) == 0) && (exp._24_1_ != '\0')) {
    if ((var_1 & 8) != 0) {
      return 0;
    }
    *(type_5 *)&pfVar4->fr_address = (type_5)pfVar4->fr_address | 8;
    var_5 = var_4(&exp);
    *(type_5 *)&pfVar4->fr_address = (type_5)pfVar4->fr_address & 0xf7;
    if (var_5 == 0) {
      return 0;
    }
    if ((type_5)exp._24_1_ < 5) {
      if ((type_5)exp._24_1_ < 3) {
        if (exp._24_1_ != '\x02') {
          return 0;
        }
        goto LAB_0012a002;
      }
LAB_0012a0ad:
      var_1 = *(type_5 *)&(exp.X_add_symbol)->sy_flags;
      pfVar3 = (type_4 *)exp.X_add_symbol;
      goto LAB_00129f65;
    }
    if (exp._24_1_ != '\x05') {
      return 0;
    }
LAB_0012a002:
    var_1 = (type_5)pfVar4->fr_address;
    if ((var_1 & 1) == 0) {
LAB_0012a0a3:
      if (*(char *)&pfVar4->fr_symbol != '\x03') goto LAB_00129f65;
      goto LAB_0012a0ad;
    }
    var_2 = (type_3)pfVar4->last_fr_address;
    if (var_2 == var_3) {
      pfVar4 = (type_4 *)pfVar4->fr_var;
      goto LAB_0012a0a3;
    }
    *symbolPP = (type_1 *)pfVar4;
LAB_0012a028:
    pfVar3 = (type_4 *)pfVar4->fr_var;
    if (var_2 != var_3) {
      *valueP = pfVar4->fr_offset;
      *segP = var_2;
      bVar6 = var_6 != var_2;
      *fragPP = pfVar3;
      if (bVar6) {
        return 1;
      }
      goto LAB_0012a04f;
    }
    var_2 = (type_3)pfVar3->last_fr_address;
  }
  else {
LAB_00129f65:
    var_2 = (type_3)pfVar3->last_fr_address;
    *symbolPP = (type_1 *)pfVar3;
    pfVar4 = pfVar3;
    if ((var_1 & 1) != 0) goto LAB_0012a028;
  }
  var_2 = *(type_3 *)&var_2->flags;
  *valueP = exp.X_add_number;
  pfVar3 = (type_4 *)pfVar3->fr_file;
  *segP = var_2;
  bVar6 = var_6 != var_2;
  *fragPP = pfVar3;
  if (bVar6) {
    return 1;
  }
LAB_0012a04f:
  if (exp._24_1_ == '\x02') {
    *segP = (type_3)(var_7 + 0x230);
  }
  else if (exp._24_1_ == '\x05') {
    *segP = var_3;
  }
  return 1;
}


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

undefined8 MASKED(undefined8 *param_1,undefined8 *param_2,long *param_3,undefined8 *param_4)

{
  undefined8 uVar1;
  byte bVar2;
  int iVar3;
  byte *pbVar4;
  byte *pbVar5;
  long lVar6;
  bool bVar7;
  byte *local_38;
  undefined8 uStack_30;
  undefined8 local_28;
  undefined8 uStack_20;
  
  pbVar4 = (byte *)*param_1;
  bVar2 = *pbVar4;
  pbVar5 = pbVar4;
  if ((bVar2 & 1) != 0) {
    lVar6 = *(long *)(pbVar4 + 8);
    pbVar5 = *(byte **)(pbVar4 + 0x18);
    if (lVar6 != DAT_0019d7d8) {
      *param_2 = *(undefined8 *)(pbVar4 + 0x20);
      *param_3 = lVar6;
      *param_4 = pbVar5;
      return 1;
    }
    bVar2 = *pbVar5;
  }
  local_38 = *(byte **)(pbVar5 + 0x10);
  uStack_30 = *(undefined8 *)(pbVar5 + 0x18);
  local_28 = *(undefined8 *)(pbVar5 + 0x20);
  uStack_20 = *(undefined8 *)(pbVar5 + 0x28);
  pbVar4 = pbVar5;
  if (((bVar2 & 4) == 0) && ((byte)uStack_20 != '\0')) {
    if ((bVar2 & 8) != 0) {
      return 0;
    }
    *pbVar5 = *pbVar5 | 8;
    iVar3 = FUN_001163e0(&local_38);
    *pbVar5 = *pbVar5 & 0xf7;
    if (iVar3 == 0) {
      return 0;
    }
    if ((byte)uStack_20 < 5) {
      if ((byte)uStack_20 < 3) {
        if ((byte)uStack_20 != 2) {
          return 0;
        }
        goto LAB_0012a002;
      }
LAB_0012a0ad:
      bVar2 = *local_38;
      pbVar4 = local_38;
      goto LAB_00129f65;
    }
    if ((byte)uStack_20 != 5) {
      return 0;
    }
LAB_0012a002:
    bVar2 = *pbVar5;
    if ((bVar2 & 1) == 0) {
LAB_0012a0a3:
      if (pbVar5[0x28] != 3) goto LAB_00129f65;
      goto LAB_0012a0ad;
    }
    lVar6 = *(long *)(pbVar5 + 8);
    if (lVar6 == DAT_0019d7d8) {
      pbVar5 = *(byte **)(pbVar5 + 0x18);
      goto LAB_0012a0a3;
    }
    *param_1 = pbVar5;
LAB_0012a028:
    pbVar4 = *(byte **)(pbVar5 + 0x18);
    if (lVar6 != DAT_0019d7d8) {
      *param_2 = *(undefined8 *)(pbVar5 + 0x20);
      *param_3 = lVar6;
      bVar7 = DAT_0019d700 != lVar6;
      *param_4 = pbVar4;
      if (bVar7) {
        return 1;
      }
      goto LAB_0012a04f;
    }
    lVar6 = *(long *)(pbVar4 + 8);
  }
  else {
LAB_00129f65:
    lVar6 = *(long *)(pbVar4 + 8);
    *param_1 = pbVar4;
    pbVar5 = pbVar4;
    if ((bVar2 & 1) != 0) goto LAB_0012a028;
  }
  lVar6 = *(long *)(lVar6 + 0x20);
  *param_2 = local_28;
  uVar1 = *(undefined8 *)(pbVar4 + 0x40);
  *param_3 = lVar6;
  bVar7 = DAT_0019d700 != lVar6;
  *param_4 = uVar1;
  if (bVar7) {
    return 1;
  }
LAB_0012a04f:
  if ((byte)uStack_20 == '\x02') {
    *param_3 = 0x1949f0;
  }
  else if ((byte)uStack_20 == '\x05') {
    *param_3 = DAT_0019d7d8;
  }
  return 1;
}

