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

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

{
  undefined4 uVar1;
  offsetT oVar2;
  byte bVar3;
  int iVar4;
  segT paVar5;
  fragS *pfVar6;
  fragS *pfVar7;
  expressionS exp;
  
  pfVar6 = (fragS *)*symbolPP;
  bVar3 = *(byte *)&pfVar6->fr_address;
  pfVar7 = pfVar6;
  if ((bVar3 & 1) != 0) {
    paVar5 = *(segT *)((symbol_flags *)&pfVar6->fr_address + 1);
    pfVar7 = (fragS *)((expressionS *)&pfVar6->last_fr_address)->X_op_symbol;
    if (paVar5 != reg_section) {
      oVar2 = pfVar6->fr_fix;
      *(undefined4 *)((int)valueP + 4) = *(undefined4 *)((int)&pfVar6->fr_fix + 4);
      *(int *)valueP = (int)oVar2;
      *segP = paVar5;
      *fragPP = pfVar7;
      return 1;
    }
    bVar3 = *(byte *)&pfVar7->fr_address;
  }
  exp.X_add_symbol = ((expressionS *)&pfVar7->last_fr_address)->X_add_symbol;
  exp.X_op_symbol = ((expressionS *)&pfVar7->last_fr_address)->X_op_symbol;
  exp.X_add_number._0_4_ = (undefined4)pfVar7->fr_fix;
  exp.X_add_number._4_4_ = *(undefined4 *)((int)&pfVar7->fr_fix + 4);
  exp._16_4_ = *(undefined4 *)&pfVar7->fr_var;
  if (((bVar3 & 4) == 0) && (exp._16_1_ != '\0')) {
    if ((bVar3 & 8) != 0) {
      return 0;
    }
    *(byte *)&pfVar7->fr_address = *(byte *)&pfVar7->fr_address | 8;
    iVar4 = resolve_expression(&exp);
    *(byte *)&pfVar7->fr_address = *(byte *)&pfVar7->fr_address & 0xf7;
    if (iVar4 == 0) {
      return 0;
    }
    if ((byte)exp._16_1_ < 5) {
      if ((byte)exp._16_1_ < 3) {
        if (exp._16_1_ != '\x02') {
          return 0;
        }
        goto LAB_000385ca;
      }
LAB_0003869c:
      bVar3 = *(byte *)&(exp.X_add_symbol)->sy_flags;
      pfVar7 = (fragS *)exp.X_add_symbol;
      goto LAB_0003852f;
    }
    if (exp._16_1_ != '\x05') {
      return 0;
    }
LAB_000385ca:
    bVar3 = *(byte *)&pfVar7->fr_address;
    pfVar6 = pfVar7;
    if ((bVar3 & 1) == 0) {
LAB_00038692:
      if ((char)pfVar6->fr_var != '\x03') goto LAB_0003852f;
      goto LAB_0003869c;
    }
    paVar5 = *(segT *)((symbol_flags *)&pfVar7->fr_address + 1);
    if (paVar5 == reg_section) {
      pfVar6 = (fragS *)((expressionS *)&pfVar7->last_fr_address)->X_op_symbol;
      goto LAB_00038692;
    }
    *symbolPP = (symbolS *)pfVar7;
LAB_000385f6:
    pfVar7 = (fragS *)((expressionS *)&pfVar6->last_fr_address)->X_op_symbol;
    if (reg_section != paVar5) {
      uVar1 = *(undefined4 *)((int)&pfVar6->fr_fix + 4);
      *(int *)valueP = (int)pfVar6->fr_fix;
      *(undefined4 *)((int)valueP + 4) = uVar1;
      *segP = paVar5;
      *fragPP = pfVar7;
      if (expr_section != paVar5) {
        return 1;
      }
      goto LAB_00038626;
    }
    paVar5 = *(segT *)((symbol_flags *)&pfVar7->fr_address + 1);
  }
  else {
LAB_0003852f:
    paVar5 = *(segT *)((symbol_flags *)&pfVar7->fr_address + 1);
    *symbolPP = (symbolS *)pfVar7;
    pfVar6 = pfVar7;
    if ((bVar3 & 1) != 0) goto LAB_000385f6;
  }
  paVar5 = (segT)paVar5->flags;
  *(undefined4 *)valueP = (undefined4)exp.X_add_number;
  *(undefined4 *)((int)valueP + 4) = exp.X_add_number._4_4_;
  *segP = paVar5;
  *fragPP = *(frag **)((int)&pfVar7->fr_offset + 4);
  if (expr_section != paVar5) {
    return 1;
  }
LAB_00038626:
  if (exp._16_1_ == '\x02') {
    *segP = (segT)(PTR__bfd_std_section_00077f98 + 0x180);
  }
  else if (exp._16_1_ == '\x05') {
    *segP = reg_section;
  }
  return 1;
}



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

undefined4 FUN_000384a0(undefined4 *param_1,undefined4 *param_2,int *param_3,undefined4 *param_4)

{
  undefined4 uVar1;
  byte bVar2;
  int iVar3;
  byte *pbVar4;
  byte *pbVar5;
  byte *local_30;
  undefined4 local_2c;
  undefined4 local_28;
  undefined4 local_24;
  undefined4 local_20;
  undefined4 uStack_14;
  
  uStack_14 = 0x384a9;
  pbVar4 = (byte *)*param_1;
  bVar2 = *pbVar4;
  pbVar5 = pbVar4;
  if ((bVar2 & 1) != 0) {
    iVar3 = *(int *)(pbVar4 + 4);
    pbVar5 = *(byte **)(pbVar4 + 0xc);
    if (iVar3 != DAT_0008185c) {
      uVar1 = *(undefined4 *)(pbVar4 + 0x10);
      param_2[1] = *(undefined4 *)(pbVar4 + 0x14);
      *param_2 = uVar1;
      *param_3 = iVar3;
      *param_4 = pbVar5;
      return 1;
    }
    bVar2 = *pbVar5;
  }
  local_30 = *(byte **)(pbVar5 + 8);
  local_2c = *(undefined4 *)(pbVar5 + 0xc);
  local_28 = *(undefined4 *)(pbVar5 + 0x10);
  local_24 = *(undefined4 *)(pbVar5 + 0x14);
  local_20 = *(undefined4 *)(pbVar5 + 0x18);
  if (((bVar2 & 4) == 0) && ((byte)local_20 != '\0')) {
    if ((bVar2 & 8) != 0) {
      return 0;
    }
    *pbVar5 = *pbVar5 | 8;
    iVar3 = FUN_000228d0(&local_30);
    *pbVar5 = *pbVar5 & 0xf7;
    if (iVar3 == 0) {
      return 0;
    }
    if ((byte)local_20 < 5) {
      if ((byte)local_20 < 3) {
        if ((byte)local_20 != 2) {
          return 0;
        }
        goto LAB_000385ca;
      }
LAB_0003869c:
      bVar2 = *local_30;
      pbVar5 = local_30;
      goto LAB_0003852f;
    }
    if ((byte)local_20 != 5) {
      return 0;
    }
LAB_000385ca:
    bVar2 = *pbVar5;
    pbVar4 = pbVar5;
    if ((bVar2 & 1) == 0) {
LAB_00038692:
      if (pbVar4[0x18] != 3) goto LAB_0003852f;
      goto LAB_0003869c;
    }
    iVar3 = *(int *)(pbVar5 + 4);
    if (iVar3 == DAT_0008185c) {
      pbVar4 = *(byte **)(pbVar5 + 0xc);
      goto LAB_00038692;
    }
    *param_1 = pbVar5;
LAB_000385f6:
    pbVar5 = *(byte **)(pbVar4 + 0xc);
    if (DAT_0008185c != iVar3) {
      uVar1 = *(undefined4 *)(pbVar4 + 0x14);
      *param_2 = *(undefined4 *)(pbVar4 + 0x10);
      param_2[1] = uVar1;
      *param_3 = iVar3;
      *param_4 = pbVar5;
      if (DAT_000817a0 != iVar3) {
        return 1;
      }
      goto LAB_00038626;
    }
    iVar3 = *(int *)(pbVar5 + 4);
  }
  else {
LAB_0003852f:
    iVar3 = *(int *)(pbVar5 + 4);
    *param_1 = pbVar5;
    pbVar4 = pbVar5;
    if ((bVar2 & 1) != 0) goto LAB_000385f6;
  }
  iVar3 = *(int *)(iVar3 + 0x14);
  *param_2 = local_28;
  param_2[1] = local_24;
  *param_3 = iVar3;
  *param_4 = *(undefined4 *)(pbVar5 + 0x24);
  if (DAT_000817a0 != iVar3) {
    return 1;
  }
LAB_00038626:
  if ((byte)local_20 == '\x02') {
    *param_3 = (int)(PTR__bfd_std_section_00077f98 + 0x180);
  }
  else if ((byte)local_20 == '\x05') {
    *param_3 = DAT_0008185c;
  }
  return 1;
}


PUSH EBP
PUSH EDI
PUSH ESI
PUSH EBX
CALL 0x00017140
ADD EBX,0x3fb57
SUB ESP,0x3c
MOV EBP,dword ptr [ESP + 0x50]
MOV EAX,dword ptr [ESP + 0x58]
MOV ESI,dword ptr [EBP]
MOV dword ptr [ESP + 0xc],EAX
MOVZX EAX,byte ptr [ESI]
TEST AL,0x1
JZ 0x00038505
LEA ECX,[EBX + 0x985c]
MOV EAX,dword ptr [ESI + 0x4]
MOV EDX,dword ptr [ESI + 0xc]
CMP EAX,dword ptr [ECX]
JZ 0x00038500
MOV EBX,dword ptr [ESI + 0x14]
MOV EDI,dword ptr [ESP + 0x54]
MOV ECX,dword ptr [ESI + 0x10]
MOV dword ptr [EDI + 0x4],EBX
MOV EBX,dword ptr [ESP + 0xc]
MOV dword ptr [EDI],ECX
MOV dword ptr [EBX],EAX
MOV EAX,dword ptr [ESP + 0x5c]
MOV dword ptr [EAX],EDX
ADD ESP,0x3c
MOV EAX,0x1
POP EBX
POP ESI
POP EDI
POP EBP
RET
MOVZX EAX,byte ptr [EDX]
MOV ESI,EDX
MOV EDX,dword ptr [ESI + 0x8]
MOV dword ptr [ESP + 0x1c],EDX
MOV EDX,dword ptr [ESI + 0xc]
MOV dword ptr [ESP + 0x20],EDX
MOV EDX,dword ptr [ESI + 0x10]
MOV dword ptr [ESP + 0x24],EDX
MOV EDX,dword ptr [ESI + 0x14]
MOV dword ptr [ESP + 0x28],EDX
MOV EDX,dword ptr [ESI + 0x18]
MOV dword ptr [ESP + 0x2c],EDX
TEST AL,0x4
JZ 0x00038580
AND EAX,0x1
MOV EDX,dword ptr [ESI + 0x4]
MOV dword ptr [EBP],ESI
TEST AL,AL
JNZ 0x000385f0
MOV EAX,dword ptr [ESP + 0x54]
MOV EDI,dword ptr [ESP + 0x24]
MOV EBP,dword ptr [ESP + 0x28]
MOV EDX,dword ptr [EDX + 0x14]
MOV dword ptr [EAX],EDI
MOV EDI,dword ptr [ESP + 0x5c]
MOV dword ptr [EAX + 0x4],EBP
MOV EAX,dword ptr [ESP + 0xc]
MOV dword ptr [EAX],EDX
MOV EAX,dword ptr [ESI + 0x24]
MOV dword ptr [EDI],EAX
LEA EAX,[EBX + 0x97a0]
CMP dword ptr [EAX],EDX
JZ 0x00038626
ADD ESP,0x3c
MOV EAX,0x1
POP EBX
POP ESI
POP EDI
POP EBP
RET
CMP byte ptr [ESP + 0x2c],0x0
JZ 0x0003852c
TEST AL,0x8
JNZ 0x00038658
SUB ESP,0xc
OR byte ptr [ESI],0x8
LEA EAX,[ESP + 0x28]
PUSH EAX
CALL 0x000228d0
AND byte ptr [ESI],0xf7
ADD ESP,0x10
TEST EAX,EAX
JZ 0x00038658
MOVZX EAX,byte ptr [ESP + 0x2c]
CMP AL,0x4
JA 0x00038650
CMP AL,0x3
JNC 0x0003869c
CMP AL,0x2
JNZ 0x00038658
MOVZX EAX,byte ptr [ESI]
AND EAX,0x1
JZ 0x00038690
LEA ECX,[EBX + 0x985c]
MOV EDX,dword ptr [ESI + 0x4]
CMP EDX,dword ptr [ECX]
JZ 0x000386a8
MOV dword ptr [EBP],ESI
JMP 0x000385f6
LEA ECX,[EBX + 0x985c]
MOV EAX,dword ptr [ESI + 0xc]
CMP dword ptr [ECX],EDX
JZ 0x00038668
MOV EDI,dword ptr [ESI + 0x10]
MOV EBP,dword ptr [ESI + 0x14]
MOV ECX,dword ptr [ESP + 0x54]
MOV dword ptr [ECX],EDI
MOV dword ptr [ECX + 0x4],EBP
MOV ECX,dword ptr [ESP + 0xc]
MOV dword ptr [ECX],EDX
MOV ECX,dword ptr [ESP + 0x5c]
MOV dword ptr [ECX],EAX
LEA EAX,[EBX + 0x97a0]
CMP dword ptr [EAX],EDX
JNZ 0x0003856e
MOVZX EAX,byte ptr [ESP + 0x2c]
CMP AL,0x2
JZ 0x00038678
CMP AL,0x5
JNZ 0x0003856e
LEA EAX,[EBX + 0x985c]
MOV EBX,dword ptr [ESP + 0xc]
MOV EAX,dword ptr [EAX]
MOV dword ptr [EBX],EAX
JMP 0x0003856e
CMP AL,0x5
JZ 0x000385ca
ADD ESP,0x3c
XOR EAX,EAX
POP EBX
POP ESI
POP EDI
POP EBP
RET
MOV EDX,dword ptr [EAX + 0x4]
MOV ESI,EAX
JMP 0x0003853d
MOV EAX,dword ptr [EBX + 0xffffff98]
MOV EBX,dword ptr [ESP + 0xc]
ADD EAX,0x180
MOV dword ptr [EBX],EAX
JMP 0x0003856e
MOV EDX,ESI
CMP byte ptr [EDX + 0x18],0x3
JNZ 0x0003852f
MOV ESI,dword ptr [ESP + 0x1c]
MOVZX EAX,byte ptr [ESI]
JMP 0x0003852c
MOV EDX,dword ptr [ESI + 0xc]
JMP 0x00038692
(translation_unit "/* WARNING: Function: __i686.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n\nundefined4 FUN_000384a0(undefined4 *param_1,undefined4 *param_2,int *param_3,undefined4 *param_4)\n\n{\n  undefined4 uVar1;\n  byte bVar2;\n  int iVar3;\n  byte *pbVar4;\n  byte *pbVar5;\n  byte *local_30;\n  undefined4 local_2c;\n  undefined4 local_28;\n  undefined4 local_24;\n  undefined4 local_20;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x384a9;\n  pbVar4 = (byte *)*param_1;\n  bVar2 = *pbVar4;\n  pbVar5 = pbVar4;\n  if ((bVar2 & 1) != 0) {\n    iVar3 = *(int *)(pbVar4 + 4);\n    pbVar5 = *(byte **)(pbVar4 + 0xc);\n    if (iVar3 != DAT_0008185c) {\n      uVar1 = *(undefined4 *)(pbVar4 + 0x10);\n      param_2[1] = *(undefined4 *)(pbVar4 + 0x14);\n      *param_2 = uVar1;\n      *param_3 = iVar3;\n      *param_4 = pbVar5;\n      return 1;\n    }\n    bVar2 = *pbVar5;\n  }\n  local_30 = *(byte **)(pbVar5 + 8);\n  local_2c = *(undefined4 *)(pbVar5 + 0xc);\n  local_28 = *(undefined4 *)(pbVar5 + 0x10);\n  local_24 = *(undefined4 *)(pbVar5 + 0x14);\n  local_20 = *(undefined4 *)(pbVar5 + 0x18);\n  if (((bVar2 & 4) == 0) && ((byte)local_20 != '\0')) {\n    if ((bVar2 & 8) != 0) {\n      return 0;\n    }\n    *pbVar5 = *pbVar5 | 8;\n    iVar3 = FUN_000228d0(&local_30);\n    *pbVar5 = *pbVar5 & 0xf7;\n    if (iVar3 == 0) {\n      return 0;\n    }\n    if ((byte)local_20 < 5) {\n      if ((byte)local_20 < 3) {\n        if ((byte)local_20 != 2) {\n          return 0;\n        }\n        goto LAB_000385ca;\n      }\nLAB_0003869c:\n      bVar2 = *local_30;\n      pbVar5 = local_30;\n      goto LAB_0003852f;\n    }\n    if ((byte)local_20 != 5) {\n      return 0;\n    }\nLAB_000385ca:\n    bVar2 = *pbVar5;\n    pbVar4 = pbVar5;\n    if ((bVar2 & 1) == 0) {\nLAB_00038692:\n      if (pbVar4[0x18] != 3) goto LAB_0003852f;\n      goto LAB_0003869c;\n    }\n    iVar3 = *(int *)(pbVar5 + 4);\n    if (iVar3 == DAT_0008185c) {\n      pbVar4 = *(byte **)(pbVar5 + 0xc);\n      goto LAB_00038692;\n    }\n    *param_1 = pbVar5;\nLAB_000385f6:\n    pbVar5 = *(byte **)(pbVar4 + 0xc);\n    if (DAT_0008185c != iVar3) {\n      uVar1 = *(undefined4 *)(pbVar4 + 0x14);\n      *param_2 = *(undefined4 *)(pbVar4 + 0x10);\n      param_2[1] = uVar1;\n      *param_3 = iVar3;\n      *param_4 = pbVar5;\n      if (DAT_000817a0 != iVar3) {\n        return 1;\n      }\n      goto LAB_00038626;\n    }\n    iVar3 = *(int *)(pbVar5 + 4);\n  }\n  else {\nLAB_0003852f:\n    iVar3 = *(int *)(pbVar5 + 4);\n    *param_1 = pbVar5;\n    pbVar4 = pbVar5;\n    if ((bVar2 & 1) != 0) goto LAB_000385f6;\n  }\n  iVar3 = *(int *)(iVar3 + 0x14);\n  *param_2 = local_28;\n  param_2[1] = local_24;\n  *param_3 = iVar3;\n  *param_4 = *(undefined4 *)(pbVar5 + 0x24);\n  if (DAT_000817a0 != iVar3) {\n    return 1;\n  }\nLAB_00038626:\n  if ((byte)local_20 == '\x02') {\n    *param_3 = (int)(PTR__bfd_std_section_00077f98 + 0x180);\n  }\n  else if ((byte)local_20 == '\x05') {\n    *param_3 = DAT_0008185c;\n  }\n  return 1;\n}\n\n" comment (function_definition "undefined4 FUN_000384a0(undefined4 *param_1,undefined4 *param_2,int *param_3,undefined4 *param_4)\n\n{\n  undefined4 uVar1;\n  byte bVar2;\n  int iVar3;\n  byte *pbVar4;\n  byte *pbVar5;\n  byte *local_30;\n  undefined4 local_2c;\n  undefined4 local_28;\n  undefined4 local_24;\n  undefined4 local_20;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x384a9;\n  pbVar4 = (byte *)*param_1;\n  bVar2 = *pbVar4;\n  pbVar5 = pbVar4;\n  if ((bVar2 & 1) != 0) {\n    iVar3 = *(int *)(pbVar4 + 4);\n    pbVar5 = *(byte **)(pbVar4 + 0xc);\n    if (iVar3 != DAT_0008185c) {\n      uVar1 = *(undefined4 *)(pbVar4 + 0x10);\n      param_2[1] = *(undefined4 *)(pbVar4 + 0x14);\n      *param_2 = uVar1;\n      *param_3 = iVar3;\n      *param_4 = pbVar5;\n      return 1;\n    }\n    bVar2 = *pbVar5;\n  }\n  local_30 = *(byte **)(pbVar5 + 8);\n  local_2c = *(undefined4 *)(pbVar5 + 0xc);\n  local_28 = *(undefined4 *)(pbVar5 + 0x10);\n  local_24 = *(undefined4 *)(pbVar5 + 0x14);\n  local_20 = *(undefined4 *)(pbVar5 + 0x18);\n  if (((bVar2 & 4) == 0) && ((byte)local_20 != '\0')) {\n    if ((bVar2 & 8) != 0) {\n      return 0;\n    }\n    *pbVar5 = *pbVar5 | 8;\n    iVar3 = FUN_000228d0(&local_30);\n    *pbVar5 = *pbVar5 & 0xf7;\n    if (iVar3 == 0) {\n      return 0;\n    }\n    if ((byte)local_20 < 5) {\n      if ((byte)local_20 < 3) {\n        if ((byte)local_20 != 2) {\n          return 0;\n        }\n        goto LAB_000385ca;\n      }\nLAB_0003869c:\n      bVar2 = *local_30;\n      pbVar5 = local_30;\n      goto LAB_0003852f;\n    }\n    if ((byte)local_20 != 5) {\n      return 0;\n    }\nLAB_000385ca:\n    bVar2 = *pbVar5;\n    pbVar4 = pbVar5;\n    if ((bVar2 & 1) == 0) {\nLAB_00038692:\n      if (pbVar4[0x18] != 3) goto LAB_0003852f;\n      goto LAB_0003869c;\n    }\n    iVar3 = *(int *)(pbVar5 + 4);\n    if (iVar3 == DAT_0008185c) {\n      pbVar4 = *(byte **)(pbVar5 + 0xc);\n      goto LAB_00038692;\n    }\n    *param_1 = pbVar5;\nLAB_000385f6:\n    pbVar5 = *(byte **)(pbVar4 + 0xc);\n    if (DAT_0008185c != iVar3) {\n      uVar1 = *(undefined4 *)(pbVar4 + 0x14);\n      *param_2 = *(undefined4 *)(pbVar4 + 0x10);\n      param_2[1] = uVar1;\n      *param_3 = iVar3;\n      *param_4 = pbVar5;\n      if (DAT_000817a0 != iVar3) {\n        return 1;\n      }\n      goto LAB_00038626;\n    }\n    iVar3 = *(int *)(pbVar5 + 4);\n  }\n  else {\nLAB_0003852f:\n    iVar3 = *(int *)(pbVar5 + 4);\n    *param_1 = pbVar5;\n    pbVar4 = pbVar5;\n    if ((bVar2 & 1) != 0) goto LAB_000385f6;\n  }\n  iVar3 = *(int *)(iVar3 + 0x14);\n  *param_2 = local_28;\n  param_2[1] = local_24;\n  *param_3 = iVar3;\n  *param_4 = *(undefined4 *)(pbVar5 + 0x24);\n  if (DAT_000817a0 != iVar3) {\n    return 1;\n  }\nLAB_00038626:\n  if ((byte)local_20 == '\x02') {\n    *param_3 = (int)(PTR__bfd_std_section_00077f98 + 0x180);\n  }\n  else if ((byte)local_20 == '\x05') {\n    *param_3 = DAT_0008185c;\n  }\n  return 1;\n}" type_identifier (function_declarator "FUN_000384a0(undefined4 *param_1,undefined4 *param_2,int *param_3,undefined4 *param_4)" identifier (parameter_list "(undefined4 *param_1,undefined4 *param_2,int *param_3,undefined4 *param_4)" ( (parameter_declaration "undefined4 *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "undefined4 *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "int *param_3" primitive_type (pointer_declarator "*param_3" * identifier)) , (parameter_declaration "undefined4 *param_4" type_identifier (pointer_declarator "*param_4" * identifier)) ))) (compound_statement "{\n  undefined4 uVar1;\n  byte bVar2;\n  int iVar3;\n  byte *pbVar4;\n  byte *pbVar5;\n  byte *local_30;\n  undefined4 local_2c;\n  undefined4 local_28;\n  undefined4 local_24;\n  undefined4 local_20;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x384a9;\n  pbVar4 = (byte *)*param_1;\n  bVar2 = *pbVar4;\n  pbVar5 = pbVar4;\n  if ((bVar2 & 1) != 0) {\n    iVar3 = *(int *)(pbVar4 + 4);\n    pbVar5 = *(byte **)(pbVar4 + 0xc);\n    if (iVar3 != DAT_0008185c) {\n      uVar1 = *(undefined4 *)(pbVar4 + 0x10);\n      param_2[1] = *(undefined4 *)(pbVar4 + 0x14);\n      *param_2 = uVar1;\n      *param_3 = iVar3;\n      *param_4 = pbVar5;\n      return 1;\n    }\n    bVar2 = *pbVar5;\n  }\n  local_30 = *(byte **)(pbVar5 + 8);\n  local_2c = *(undefined4 *)(pbVar5 + 0xc);\n  local_28 = *(undefined4 *)(pbVar5 + 0x10);\n  local_24 = *(undefined4 *)(pbVar5 + 0x14);\n  local_20 = *(undefined4 *)(pbVar5 + 0x18);\n  if (((bVar2 & 4) == 0) && ((byte)local_20 != '\0')) {\n    if ((bVar2 & 8) != 0) {\n      return 0;\n    }\n    *pbVar5 = *pbVar5 | 8;\n    iVar3 = FUN_000228d0(&local_30);\n    *pbVar5 = *pbVar5 & 0xf7;\n    if (iVar3 == 0) {\n      return 0;\n    }\n    if ((byte)local_20 < 5) {\n      if ((byte)local_20 < 3) {\n        if ((byte)local_20 != 2) {\n          return 0;\n        }\n        goto LAB_000385ca;\n      }\nLAB_0003869c:\n      bVar2 = *local_30;\n      pbVar5 = local_30;\n      goto LAB_0003852f;\n    }\n    if ((byte)local_20 != 5) {\n      return 0;\n    }\nLAB_000385ca:\n    bVar2 = *pbVar5;\n    pbVar4 = pbVar5;\n    if ((bVar2 & 1) == 0) {\nLAB_00038692:\n      if (pbVar4[0x18] != 3) goto LAB_0003852f;\n      goto LAB_0003869c;\n    }\n    iVar3 = *(int *)(pbVar5 + 4);\n    if (iVar3 == DAT_0008185c) {\n      pbVar4 = *(byte **)(pbVar5 + 0xc);\n      goto LAB_00038692;\n    }\n    *param_1 = pbVar5;\nLAB_000385f6:\n    pbVar5 = *(byte **)(pbVar4 + 0xc);\n    if (DAT_0008185c != iVar3) {\n      uVar1 = *(undefined4 *)(pbVar4 + 0x14);\n      *param_2 = *(undefined4 *)(pbVar4 + 0x10);\n      param_2[1] = uVar1;\n      *param_3 = iVar3;\n      *param_4 = pbVar5;\n      if (DAT_000817a0 != iVar3) {\n        return 1;\n      }\n      goto LAB_00038626;\n    }\n    iVar3 = *(int *)(pbVar5 + 4);\n  }\n  else {\nLAB_0003852f:\n    iVar3 = *(int *)(pbVar5 + 4);\n    *param_1 = pbVar5;\n    pbVar4 = pbVar5;\n    if ((bVar2 & 1) != 0) goto LAB_000385f6;\n  }\n  iVar3 = *(int *)(iVar3 + 0x14);\n  *param_2 = local_28;\n  param_2[1] = local_24;\n  *param_3 = iVar3;\n  *param_4 = *(undefined4 *)(pbVar5 + 0x24);\n  if (DAT_000817a0 != iVar3) {\n    return 1;\n  }\nLAB_00038626:\n  if ((byte)local_20 == '\x02') {\n    *param_3 = (int)(PTR__bfd_std_section_00077f98 + 0x180);\n  }\n  else if ((byte)local_20 == '\x05') {\n    *param_3 = DAT_0008185c;\n  }\n  return 1;\n}" { (declaration "undefined4 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 "byte *local_30;" type_identifier (pointer_declarator "*local_30" * identifier) ;) (declaration "undefined4 local_2c;" type_identifier identifier ;) (declaration "undefined4 local_28;" type_identifier identifier ;) (declaration "undefined4 local_24;" type_identifier identifier ;) (declaration "undefined4 local_20;" type_identifier identifier ;) (declaration "undefined4 uStack_14;" type_identifier identifier ;) (expression_statement "uStack_14 = 0x384a9;" (assignment_expression "uStack_14 = 0x384a9" identifier = number_literal) ;) (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    iVar3 = *(int *)(pbVar4 + 4);\n    pbVar5 = *(byte **)(pbVar4 + 0xc);\n    if (iVar3 != DAT_0008185c) {\n      uVar1 = *(undefined4 *)(pbVar4 + 0x10);\n      param_2[1] = *(undefined4 *)(pbVar4 + 0x14);\n      *param_2 = uVar1;\n      *param_3 = iVar3;\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    iVar3 = *(int *)(pbVar4 + 4);\n    pbVar5 = *(byte **)(pbVar4 + 0xc);\n    if (iVar3 != DAT_0008185c) {\n      uVar1 = *(undefined4 *)(pbVar4 + 0x10);\n      param_2[1] = *(undefined4 *)(pbVar4 + 0x14);\n      *param_2 = uVar1;\n      *param_3 = iVar3;\n      *param_4 = pbVar5;\n      return 1;\n    }\n    bVar2 = *pbVar5;\n  }" { (expression_statement "iVar3 = *(int *)(pbVar4 + 4);" (assignment_expression "iVar3 = *(int *)(pbVar4 + 4)" identifier = (pointer_expression "*(int *)(pbVar4 + 4)" * (cast_expression "(int *)(pbVar4 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pbVar4 + 4)" ( (binary_expression "pbVar4 + 4" identifier + number_literal) ))))) ;) (expression_statement "pbVar5 = *(byte **)(pbVar4 + 0xc);" (assignment_expression "pbVar5 = *(byte **)(pbVar4 + 0xc)" identifier = (pointer_expression "*(byte **)(pbVar4 + 0xc)" * (cast_expression "(byte **)(pbVar4 + 0xc)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pbVar4 + 0xc)" ( (binary_expression "pbVar4 + 0xc" identifier + number_literal) ))))) ;) (if_statement "if (iVar3 != DAT_0008185c) {\n      uVar1 = *(undefined4 *)(pbVar4 + 0x10);\n      param_2[1] = *(undefined4 *)(pbVar4 + 0x14);\n      *param_2 = uVar1;\n      *param_3 = iVar3;\n      *param_4 = pbVar5;\n      return 1;\n    }" if (parenthesized_expression "(iVar3 != DAT_0008185c)" ( (binary_expression "iVar3 != DAT_0008185c" identifier != identifier) )) (compound_statement "{\n      uVar1 = *(undefined4 *)(pbVar4 + 0x10);\n      param_2[1] = *(undefined4 *)(pbVar4 + 0x14);\n      *param_2 = uVar1;\n      *param_3 = iVar3;\n      *param_4 = pbVar5;\n      return 1;\n    }" { (expression_statement "uVar1 = *(undefined4 *)(pbVar4 + 0x10);" (assignment_expression "uVar1 = *(undefined4 *)(pbVar4 + 0x10)" identifier = (pointer_expression "*(undefined4 *)(pbVar4 + 0x10)" * (cast_expression "(undefined4 *)(pbVar4 + 0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pbVar4 + 0x10)" ( (binary_expression "pbVar4 + 0x10" identifier + number_literal) ))))) ;) (expression_statement "param_2[1] = *(undefined4 *)(pbVar4 + 0x14);" (assignment_expression "param_2[1] = *(undefined4 *)(pbVar4 + 0x14)" (subscript_expression "param_2[1]" identifier [ number_literal ]) = (pointer_expression "*(undefined4 *)(pbVar4 + 0x14)" * (cast_expression "(undefined4 *)(pbVar4 + 0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pbVar4 + 0x14)" ( (binary_expression "pbVar4 + 0x14" identifier + number_literal) ))))) ;) (expression_statement "*param_2 = uVar1;" (assignment_expression "*param_2 = uVar1" (pointer_expression "*param_2" * identifier) = identifier) ;) (expression_statement "*param_3 = iVar3;" (assignment_expression "*param_3 = iVar3" (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_30 = *(byte **)(pbVar5 + 8);" (assignment_expression "local_30 = *(byte **)(pbVar5 + 8)" identifier = (pointer_expression "*(byte **)(pbVar5 + 8)" * (cast_expression "(byte **)(pbVar5 + 8)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pbVar5 + 8)" ( (binary_expression "pbVar5 + 8" identifier + number_literal) ))))) ;) (expression_statement "local_2c = *(undefined4 *)(pbVar5 + 0xc);" (assignment_expression "local_2c = *(undefined4 *)(pbVar5 + 0xc)" identifier = (pointer_expression "*(undefined4 *)(pbVar5 + 0xc)" * (cast_expression "(undefined4 *)(pbVar5 + 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pbVar5 + 0xc)" ( (binary_expression "pbVar5 + 0xc" identifier + number_literal) ))))) ;) (expression_statement "local_28 = *(undefined4 *)(pbVar5 + 0x10);" (assignment_expression "local_28 = *(undefined4 *)(pbVar5 + 0x10)" identifier = (pointer_expression "*(undefined4 *)(pbVar5 + 0x10)" * (cast_expression "(undefined4 *)(pbVar5 + 0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pbVar5 + 0x10)" ( (binary_expression "pbVar5 + 0x10" identifier + number_literal) ))))) ;) (expression_statement "local_24 = *(undefined4 *)(pbVar5 + 0x14);" (assignment_expression "local_24 = *(undefined4 *)(pbVar5 + 0x14)" identifier = (pointer_expression "*(undefined4 *)(pbVar5 + 0x14)" * (cast_expression "(undefined4 *)(pbVar5 + 0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pbVar5 + 0x14)" ( (binary_expression "pbVar5 + 0x14" identifier + number_literal) ))))) ;) (expression_statement "local_20 = *(undefined4 *)(pbVar5 + 0x18);" (assignment_expression "local_20 = *(undefined4 *)(pbVar5 + 0x18)" identifier = (pointer_expression "*(undefined4 *)(pbVar5 + 0x18)" * (cast_expression "(undefined4 *)(pbVar5 + 0x18)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pbVar5 + 0x18)" ( (binary_expression "pbVar5 + 0x18" identifier + number_literal) ))))) ;) (if_statement "if (((bVar2 & 4) == 0) && ((byte)local_20 != '\0')) {\n    if ((bVar2 & 8) != 0) {\n      return 0;\n    }\n    *pbVar5 = *pbVar5 | 8;\n    iVar3 = FUN_000228d0(&local_30);\n    *pbVar5 = *pbVar5 & 0xf7;\n    if (iVar3 == 0) {\n      return 0;\n    }\n    if ((byte)local_20 < 5) {\n      if ((byte)local_20 < 3) {\n        if ((byte)local_20 != 2) {\n          return 0;\n        }\n        goto LAB_000385ca;\n      }\nLAB_0003869c:\n      bVar2 = *local_30;\n      pbVar5 = local_30;\n      goto LAB_0003852f;\n    }\n    if ((byte)local_20 != 5) {\n      return 0;\n    }\nLAB_000385ca:\n    bVar2 = *pbVar5;\n    pbVar4 = pbVar5;\n    if ((bVar2 & 1) == 0) {\nLAB_00038692:\n      if (pbVar4[0x18] != 3) goto LAB_0003852f;\n      goto LAB_0003869c;\n    }\n    iVar3 = *(int *)(pbVar5 + 4);\n    if (iVar3 == DAT_0008185c) {\n      pbVar4 = *(byte **)(pbVar5 + 0xc);\n      goto LAB_00038692;\n    }\n    *param_1 = pbVar5;\nLAB_000385f6:\n    pbVar5 = *(byte **)(pbVar4 + 0xc);\n    if (DAT_0008185c != iVar3) {\n      uVar1 = *(undefined4 *)(pbVar4 + 0x14);\n      *param_2 = *(undefined4 *)(pbVar4 + 0x10);\n      param_2[1] = uVar1;\n      *param_3 = iVar3;\n      *param_4 = pbVar5;\n      if (DAT_000817a0 != iVar3) {\n        return 1;\n      }\n      goto LAB_00038626;\n    }\n    iVar3 = *(int *)(pbVar5 + 4);\n  }\n  else {\nLAB_0003852f:\n    iVar3 = *(int *)(pbVar5 + 4);\n    *param_1 = pbVar5;\n    pbVar4 = pbVar5;\n    if ((bVar2 & 1) != 0) goto LAB_000385f6;\n  }" if (parenthesized_expression "(((bVar2 & 4) == 0) && ((byte)local_20 != '\0'))" ( (binary_expression "((bVar2 & 4) == 0) && ((byte)local_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)local_20 != '\0')" ( (binary_expression "(byte)local_20 != '\0'" (cast_expression "(byte)local_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_000228d0(&local_30);\n    *pbVar5 = *pbVar5 & 0xf7;\n    if (iVar3 == 0) {\n      return 0;\n    }\n    if ((byte)local_20 < 5) {\n      if ((byte)local_20 < 3) {\n        if ((byte)local_20 != 2) {\n          return 0;\n        }\n        goto LAB_000385ca;\n      }\nLAB_0003869c:\n      bVar2 = *local_30;\n      pbVar5 = local_30;\n      goto LAB_0003852f;\n    }\n    if ((byte)local_20 != 5) {\n      return 0;\n    }\nLAB_000385ca:\n    bVar2 = *pbVar5;\n    pbVar4 = pbVar5;\n    if ((bVar2 & 1) == 0) {\nLAB_00038692:\n      if (pbVar4[0x18] != 3) goto LAB_0003852f;\n      goto LAB_0003869c;\n    }\n    iVar3 = *(int *)(pbVar5 + 4);\n    if (iVar3 == DAT_0008185c) {\n      pbVar4 = *(byte **)(pbVar5 + 0xc);\n      goto LAB_00038692;\n    }\n    *param_1 = pbVar5;\nLAB_000385f6:\n    pbVar5 = *(byte **)(pbVar4 + 0xc);\n    if (DAT_0008185c != iVar3) {\n      uVar1 = *(undefined4 *)(pbVar4 + 0x14);\n      *param_2 = *(undefined4 *)(pbVar4 + 0x10);\n      param_2[1] = uVar1;\n      *param_3 = iVar3;\n      *param_4 = pbVar5;\n      if (DAT_000817a0 != iVar3) {\n        return 1;\n      }\n      goto LAB_00038626;\n    }\n    iVar3 = *(int *)(pbVar5 + 4);\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_000228d0(&local_30);" (assignment_expression "iVar3 = FUN_000228d0(&local_30)" identifier = (call_expression "FUN_000228d0(&local_30)" identifier (argument_list "(&local_30)" ( (pointer_expression "&local_30" & 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)local_20 < 5) {\n      if ((byte)local_20 < 3) {\n        if ((byte)local_20 != 2) {\n          return 0;\n        }\n        goto LAB_000385ca;\n      }\nLAB_0003869c:\n      bVar2 = *local_30;\n      pbVar5 = local_30;\n      goto LAB_0003852f;\n    }" if (parenthesized_expression "((byte)local_20 < 5)" ( (binary_expression "(byte)local_20 < 5" (cast_expression "(byte)local_20" ( (type_descriptor "byte" type_identifier) ) identifier) < number_literal) )) (compound_statement "{\n      if ((byte)local_20 < 3) {\n        if ((byte)local_20 != 2) {\n          return 0;\n        }\n        goto LAB_000385ca;\n      }\nLAB_0003869c:\n      bVar2 = *local_30;\n      pbVar5 = local_30;\n      goto LAB_0003852f;\n    }" { (if_statement "if ((byte)local_20 < 3) {\n        if ((byte)local_20 != 2) {\n          return 0;\n        }\n        goto LAB_000385ca;\n      }" if (parenthesized_expression "((byte)local_20 < 3)" ( (binary_expression "(byte)local_20 < 3" (cast_expression "(byte)local_20" ( (type_descriptor "byte" type_identifier) ) identifier) < number_literal) )) (compound_statement "{\n        if ((byte)local_20 != 2) {\n          return 0;\n        }\n        goto LAB_000385ca;\n      }" { (if_statement "if ((byte)local_20 != 2) {\n          return 0;\n        }" if (parenthesized_expression "((byte)local_20 != 2)" ( (binary_expression "(byte)local_20 != 2" (cast_expression "(byte)local_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_000385ca;" goto statement_identifier ;) })) (labeled_statement "LAB_0003869c:\n      bVar2 = *local_30;" statement_identifier : (expression_statement "bVar2 = *local_30;" (assignment_expression "bVar2 = *local_30" identifier = (pointer_expression "*local_30" * identifier)) ;)) (expression_statement "pbVar5 = local_30;" (assignment_expression "pbVar5 = local_30" identifier = identifier) ;) (goto_statement "goto LAB_0003852f;" goto statement_identifier ;) })) (if_statement "if ((byte)local_20 != 5) {\n      return 0;\n    }" if (parenthesized_expression "((byte)local_20 != 5)" ( (binary_expression "(byte)local_20 != 5" (cast_expression "(byte)local_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_000385ca:\n    bVar2 = *pbVar5;" statement_identifier : (expression_statement "bVar2 = *pbVar5;" (assignment_expression "bVar2 = *pbVar5" identifier = (pointer_expression "*pbVar5" * identifier)) ;)) (expression_statement "pbVar4 = pbVar5;" (assignment_expression "pbVar4 = pbVar5" identifier = identifier) ;) (if_statement "if ((bVar2 & 1) == 0) {\nLAB_00038692:\n      if (pbVar4[0x18] != 3) goto LAB_0003852f;\n      goto LAB_0003869c;\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_00038692:\n      if (pbVar4[0x18] != 3) goto LAB_0003852f;\n      goto LAB_0003869c;\n    }" { (labeled_statement "LAB_00038692:\n      if (pbVar4[0x18] != 3) goto LAB_0003852f;" statement_identifier : (if_statement "if (pbVar4[0x18] != 3) goto LAB_0003852f;" if (parenthesized_expression "(pbVar4[0x18] != 3)" ( (binary_expression "pbVar4[0x18] != 3" (subscript_expression "pbVar4[0x18]" identifier [ number_literal ]) != number_literal) )) (goto_statement "goto LAB_0003852f;" goto statement_identifier ;))) (goto_statement "goto LAB_0003869c;" goto statement_identifier ;) })) (expression_statement "iVar3 = *(int *)(pbVar5 + 4);" (assignment_expression "iVar3 = *(int *)(pbVar5 + 4)" identifier = (pointer_expression "*(int *)(pbVar5 + 4)" * (cast_expression "(int *)(pbVar5 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pbVar5 + 4)" ( (binary_expression "pbVar5 + 4" identifier + number_literal) ))))) ;) (if_statement "if (iVar3 == DAT_0008185c) {\n      pbVar4 = *(byte **)(pbVar5 + 0xc);\n      goto LAB_00038692;\n    }" if (parenthesized_expression "(iVar3 == DAT_0008185c)" ( (binary_expression "iVar3 == DAT_0008185c" identifier == identifier) )) (compound_statement "{\n      pbVar4 = *(byte **)(pbVar5 + 0xc);\n      goto LAB_00038692;\n    }" { (expression_statement "pbVar4 = *(byte **)(pbVar5 + 0xc);" (assignment_expression "pbVar4 = *(byte **)(pbVar5 + 0xc)" identifier = (pointer_expression "*(byte **)(pbVar5 + 0xc)" * (cast_expression "(byte **)(pbVar5 + 0xc)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pbVar5 + 0xc)" ( (binary_expression "pbVar5 + 0xc" identifier + number_literal) ))))) ;) (goto_statement "goto LAB_00038692;" goto statement_identifier ;) })) (expression_statement "*param_1 = pbVar5;" (assignment_expression "*param_1 = pbVar5" (pointer_expression "*param_1" * identifier) = identifier) ;) (labeled_statement "LAB_000385f6:\n    pbVar5 = *(byte **)(pbVar4 + 0xc);" statement_identifier : (expression_statement "pbVar5 = *(byte **)(pbVar4 + 0xc);" (assignment_expression "pbVar5 = *(byte **)(pbVar4 + 0xc)" identifier = (pointer_expression "*(byte **)(pbVar4 + 0xc)" * (cast_expression "(byte **)(pbVar4 + 0xc)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pbVar4 + 0xc)" ( (binary_expression "pbVar4 + 0xc" identifier + number_literal) ))))) ;)) (if_statement "if (DAT_0008185c != iVar3) {\n      uVar1 = *(undefined4 *)(pbVar4 + 0x14);\n      *param_2 = *(undefined4 *)(pbVar4 + 0x10);\n      param_2[1] = uVar1;\n      *param_3 = iVar3;\n      *param_4 = pbVar5;\n      if (DAT_000817a0 != iVar3) {\n        return 1;\n      }\n      goto LAB_00038626;\n    }" if (parenthesized_expression "(DAT_0008185c != iVar3)" ( (binary_expression "DAT_0008185c != iVar3" identifier != identifier) )) (compound_statement "{\n      uVar1 = *(undefined4 *)(pbVar4 + 0x14);\n      *param_2 = *(undefined4 *)(pbVar4 + 0x10);\n      param_2[1] = uVar1;\n      *param_3 = iVar3;\n      *param_4 = pbVar5;\n      if (DAT_000817a0 != iVar3) {\n        return 1;\n      }\n      goto LAB_00038626;\n    }" { (expression_statement "uVar1 = *(undefined4 *)(pbVar4 + 0x14);" (assignment_expression "uVar1 = *(undefined4 *)(pbVar4 + 0x14)" identifier = (pointer_expression "*(undefined4 *)(pbVar4 + 0x14)" * (cast_expression "(undefined4 *)(pbVar4 + 0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pbVar4 + 0x14)" ( (binary_expression "pbVar4 + 0x14" identifier + number_literal) ))))) ;) (expression_statement "*param_2 = *(undefined4 *)(pbVar4 + 0x10);" (assignment_expression "*param_2 = *(undefined4 *)(pbVar4 + 0x10)" (pointer_expression "*param_2" * identifier) = (pointer_expression "*(undefined4 *)(pbVar4 + 0x10)" * (cast_expression "(undefined4 *)(pbVar4 + 0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pbVar4 + 0x10)" ( (binary_expression "pbVar4 + 0x10" identifier + number_literal) ))))) ;) (expression_statement "param_2[1] = uVar1;" (assignment_expression "param_2[1] = uVar1" (subscript_expression "param_2[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*param_3 = iVar3;" (assignment_expression "*param_3 = iVar3" (pointer_expression "*param_3" * identifier) = identifier) ;) (expression_statement "*param_4 = pbVar5;" (assignment_expression "*param_4 = pbVar5" (pointer_expression "*param_4" * identifier) = identifier) ;) (if_statement "if (DAT_000817a0 != iVar3) {\n        return 1;\n      }" if (parenthesized_expression "(DAT_000817a0 != iVar3)" ( (binary_expression "DAT_000817a0 != iVar3" identifier != identifier) )) (compound_statement "{\n        return 1;\n      }" { (return_statement "return 1;" return number_literal ;) })) (goto_statement "goto LAB_00038626;" goto statement_identifier ;) })) (expression_statement "iVar3 = *(int *)(pbVar5 + 4);" (assignment_expression "iVar3 = *(int *)(pbVar5 + 4)" identifier = (pointer_expression "*(int *)(pbVar5 + 4)" * (cast_expression "(int *)(pbVar5 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pbVar5 + 4)" ( (binary_expression "pbVar5 + 4" identifier + number_literal) ))))) ;) }) (else_clause "else {\nLAB_0003852f:\n    iVar3 = *(int *)(pbVar5 + 4);\n    *param_1 = pbVar5;\n    pbVar4 = pbVar5;\n    if ((bVar2 & 1) != 0) goto LAB_000385f6;\n  }" else (compound_statement "{\nLAB_0003852f:\n    iVar3 = *(int *)(pbVar5 + 4);\n    *param_1 = pbVar5;\n    pbVar4 = pbVar5;\n    if ((bVar2 & 1) != 0) goto LAB_000385f6;\n  }" { (labeled_statement "LAB_0003852f:\n    iVar3 = *(int *)(pbVar5 + 4);" statement_identifier : (expression_statement "iVar3 = *(int *)(pbVar5 + 4);" (assignment_expression "iVar3 = *(int *)(pbVar5 + 4)" identifier = (pointer_expression "*(int *)(pbVar5 + 4)" * (cast_expression "(int *)(pbVar5 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pbVar5 + 4)" ( (binary_expression "pbVar5 + 4" identifier + number_literal) ))))) ;)) (expression_statement "*param_1 = pbVar5;" (assignment_expression "*param_1 = pbVar5" (pointer_expression "*param_1" * identifier) = identifier) ;) (expression_statement "pbVar4 = pbVar5;" (assignment_expression "pbVar4 = pbVar5" identifier = identifier) ;) (if_statement "if ((bVar2 & 1) != 0) goto LAB_000385f6;" 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_000385f6;" goto statement_identifier ;)) }))) (expression_statement "iVar3 = *(int *)(iVar3 + 0x14);" (assignment_expression "iVar3 = *(int *)(iVar3 + 0x14)" identifier = (pointer_expression "*(int *)(iVar3 + 0x14)" * (cast_expression "(int *)(iVar3 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0x14)" ( (binary_expression "iVar3 + 0x14" identifier + number_literal) ))))) ;) (expression_statement "*param_2 = local_28;" (assignment_expression "*param_2 = local_28" (pointer_expression "*param_2" * identifier) = identifier) ;) (expression_statement "param_2[1] = local_24;" (assignment_expression "param_2[1] = local_24" (subscript_expression "param_2[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*param_3 = iVar3;" (assignment_expression "*param_3 = iVar3" (pointer_expression "*param_3" * identifier) = identifier) ;) (expression_statement "*param_4 = *(undefined4 *)(pbVar5 + 0x24);" (assignment_expression "*param_4 = *(undefined4 *)(pbVar5 + 0x24)" (pointer_expression "*param_4" * identifier) = (pointer_expression "*(undefined4 *)(pbVar5 + 0x24)" * (cast_expression "(undefined4 *)(pbVar5 + 0x24)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pbVar5 + 0x24)" ( (binary_expression "pbVar5 + 0x24" identifier + number_literal) ))))) ;) (if_statement "if (DAT_000817a0 != iVar3) {\n    return 1;\n  }" if (parenthesized_expression "(DAT_000817a0 != iVar3)" ( (binary_expression "DAT_000817a0 != iVar3" identifier != identifier) )) (compound_statement "{\n    return 1;\n  }" { (return_statement "return 1;" return number_literal ;) })) (labeled_statement "LAB_00038626:\n  if ((byte)local_20 == '\x02') {\n    *param_3 = (int)(PTR__bfd_std_section_00077f98 + 0x180);\n  }\n  else if ((byte)local_20 == '\x05') {\n    *param_3 = DAT_0008185c;\n  }" statement_identifier : (if_statement "if ((byte)local_20 == '\x02') {\n    *param_3 = (int)(PTR__bfd_std_section_00077f98 + 0x180);\n  }\n  else if ((byte)local_20 == '\x05') {\n    *param_3 = DAT_0008185c;\n  }" if (parenthesized_expression "((byte)local_20 == '\x02')" ( (binary_expression "(byte)local_20 == '\x02'" (cast_expression "(byte)local_20" ( (type_descriptor "byte" type_identifier) ) identifier) == (char_literal "'\x02'" ' escape_sequence ')) )) (compound_statement "{\n    *param_3 = (int)(PTR__bfd_std_section_00077f98 + 0x180);\n  }" { (expression_statement "*param_3 = (int)(PTR__bfd_std_section_00077f98 + 0x180);" (assignment_expression "*param_3 = (int)(PTR__bfd_std_section_00077f98 + 0x180)" (pointer_expression "*param_3" * identifier) = (cast_expression "(int)(PTR__bfd_std_section_00077f98 + 0x180)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(PTR__bfd_std_section_00077f98 + 0x180)" ( (binary_expression "PTR__bfd_std_section_00077f98 + 0x180" identifier + number_literal) )))) ;) }) (else_clause "else if ((byte)local_20 == '\x05') {\n    *param_3 = DAT_0008185c;\n  }" else (if_statement "if ((byte)local_20 == '\x05') {\n    *param_3 = DAT_0008185c;\n  }" if (parenthesized_expression "((byte)local_20 == '\x05')" ( (binary_expression "(byte)local_20 == '\x05'" (cast_expression "(byte)local_20" ( (type_descriptor "byte" type_identifier) ) identifier) == (char_literal "'\x05'" ' escape_sequence ')) )) (compound_statement "{\n    *param_3 = DAT_0008185c;\n  }" { (expression_statement "*param_3 = DAT_0008185c;" (assignment_expression "*param_3 = DAT_0008185c" (pointer_expression "*param_3" * identifier) = identifier) ;) }))))) (return_statement "return 1;" return number_literal ;) })))
(translation_unit "/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n/* WARNING: Unknown calling convention */\n\nint snapshot_symbol(symbolS **symbolPP,valueT *valueP,segT *segP,fragS **fragPP)\n\n{\n  undefined4 uVar1;\n  offsetT oVar2;\n  byte bVar3;\n  int iVar4;\n  segT paVar5;\n  fragS *pfVar6;\n  fragS *pfVar7;\n  expressionS exp;\n  \n  pfVar6 = (fragS *)*symbolPP;\n  bVar3 = *(byte *)&pfVar6->fr_address;\n  pfVar7 = pfVar6;\n  if ((bVar3 & 1) != 0) {\n    paVar5 = *(segT *)((symbol_flags *)&pfVar6->fr_address + 1);\n    pfVar7 = (fragS *)((expressionS *)&pfVar6->last_fr_address)->X_op_symbol;\n    if (paVar5 != reg_section) {\n      oVar2 = pfVar6->fr_fix;\n      *(undefined4 *)((int)valueP + 4) = *(undefined4 *)((int)&pfVar6->fr_fix + 4);\n      *(int *)valueP = (int)oVar2;\n      *segP = paVar5;\n      *fragPP = pfVar7;\n      return 1;\n    }\n    bVar3 = *(byte *)&pfVar7->fr_address;\n  }\n  exp.X_add_symbol = ((expressionS *)&pfVar7->last_fr_address)->X_add_symbol;\n  exp.X_op_symbol = ((expressionS *)&pfVar7->last_fr_address)->X_op_symbol;\n  exp.X_add_number._0_4_ = (undefined4)pfVar7->fr_fix;\n  exp.X_add_number._4_4_ = *(undefined4 *)((int)&pfVar7->fr_fix + 4);\n  exp._16_4_ = *(undefined4 *)&pfVar7->fr_var;\n  if (((bVar3 & 4) == 0) && (exp._16_1_ != '\0')) {\n    if ((bVar3 & 8) != 0) {\n      return 0;\n    }\n    *(byte *)&pfVar7->fr_address = *(byte *)&pfVar7->fr_address | 8;\n    iVar4 = resolve_expression(&exp);\n    *(byte *)&pfVar7->fr_address = *(byte *)&pfVar7->fr_address & 0xf7;\n    if (iVar4 == 0) {\n      return 0;\n    }\n    if ((byte)exp._16_1_ < 5) {\n      if ((byte)exp._16_1_ < 3) {\n        if (exp._16_1_ != '\x02') {\n          return 0;\n        }\n        goto LAB_000385ca;\n      }\nLAB_0003869c:\n      bVar3 = *(byte *)&(exp.X_add_symbol)->sy_flags;\n      pfVar7 = (fragS *)exp.X_add_symbol;\n      goto LAB_0003852f;\n    }\n    if (exp._16_1_ != '\x05') {\n      return 0;\n    }\nLAB_000385ca:\n    bVar3 = *(byte *)&pfVar7->fr_address;\n    pfVar6 = pfVar7;\n    if ((bVar3 & 1) == 0) {\nLAB_00038692:\n      if ((char)pfVar6->fr_var != '\x03') goto LAB_0003852f;\n      goto LAB_0003869c;\n    }\n    paVar5 = *(segT *)((symbol_flags *)&pfVar7->fr_address + 1);\n    if (paVar5 == reg_section) {\n      pfVar6 = (fragS *)((expressionS *)&pfVar7->last_fr_address)->X_op_symbol;\n      goto LAB_00038692;\n    }\n    *symbolPP = (symbolS *)pfVar7;\nLAB_000385f6:\n    pfVar7 = (fragS *)((expressionS *)&pfVar6->last_fr_address)->X_op_symbol;\n    if (reg_section != paVar5) {\n      uVar1 = *(undefined4 *)((int)&pfVar6->fr_fix + 4);\n      *(int *)valueP = (int)pfVar6->fr_fix;\n      *(undefined4 *)((int)valueP + 4) = uVar1;\n      *segP = paVar5;\n      *fragPP = pfVar7;\n      if (expr_section != paVar5) {\n        return 1;\n      }\n      goto LAB_00038626;\n    }\n    paVar5 = *(segT *)((symbol_flags *)&pfVar7->fr_address + 1);\n  }\n  else {\nLAB_0003852f:\n    paVar5 = *(segT *)((symbol_flags *)&pfVar7->fr_address + 1);\n    *symbolPP = (symbolS *)pfVar7;\n    pfVar6 = pfVar7;\n    if ((bVar3 & 1) != 0) goto LAB_000385f6;\n  }\n  paVar5 = (segT)paVar5->flags;\n  *(undefined4 *)valueP = (undefined4)exp.X_add_number;\n  *(undefined4 *)((int)valueP + 4) = exp.X_add_number._4_4_;\n  *segP = paVar5;\n  *fragPP = *(frag **)((int)&pfVar7->fr_offset + 4);\n  if (expr_section != paVar5) {\n    return 1;\n  }\nLAB_00038626:\n  if (exp._16_1_ == '\x02') {\n    *segP = (segT)(PTR__bfd_std_section_00077f98 + 0x180);\n  }\n  else if (exp._16_1_ == '\x05') {\n    *segP = reg_section;\n  }\n  return 1;\n}\n\n" comment comment (function_definition "int snapshot_symbol(symbolS **symbolPP,valueT *valueP,segT *segP,fragS **fragPP)\n\n{\n  undefined4 uVar1;\n  offsetT oVar2;\n  byte bVar3;\n  int iVar4;\n  segT paVar5;\n  fragS *pfVar6;\n  fragS *pfVar7;\n  expressionS exp;\n  \n  pfVar6 = (fragS *)*symbolPP;\n  bVar3 = *(byte *)&pfVar6->fr_address;\n  pfVar7 = pfVar6;\n  if ((bVar3 & 1) != 0) {\n    paVar5 = *(segT *)((symbol_flags *)&pfVar6->fr_address + 1);\n    pfVar7 = (fragS *)((expressionS *)&pfVar6->last_fr_address)->X_op_symbol;\n    if (paVar5 != reg_section) {\n      oVar2 = pfVar6->fr_fix;\n      *(undefined4 *)((int)valueP + 4) = *(undefined4 *)((int)&pfVar6->fr_fix + 4);\n      *(int *)valueP = (int)oVar2;\n      *segP = paVar5;\n      *fragPP = pfVar7;\n      return 1;\n    }\n    bVar3 = *(byte *)&pfVar7->fr_address;\n  }\n  exp.X_add_symbol = ((expressionS *)&pfVar7->last_fr_address)->X_add_symbol;\n  exp.X_op_symbol = ((expressionS *)&pfVar7->last_fr_address)->X_op_symbol;\n  exp.X_add_number._0_4_ = (undefined4)pfVar7->fr_fix;\n  exp.X_add_number._4_4_ = *(undefined4 *)((int)&pfVar7->fr_fix + 4);\n  exp._16_4_ = *(undefined4 *)&pfVar7->fr_var;\n  if (((bVar3 & 4) == 0) && (exp._16_1_ != '\0')) {\n    if ((bVar3 & 8) != 0) {\n      return 0;\n    }\n    *(byte *)&pfVar7->fr_address = *(byte *)&pfVar7->fr_address | 8;\n    iVar4 = resolve_expression(&exp);\n    *(byte *)&pfVar7->fr_address = *(byte *)&pfVar7->fr_address & 0xf7;\n    if (iVar4 == 0) {\n      return 0;\n    }\n    if ((byte)exp._16_1_ < 5) {\n      if ((byte)exp._16_1_ < 3) {\n        if (exp._16_1_ != '\x02') {\n          return 0;\n        }\n        goto LAB_000385ca;\n      }\nLAB_0003869c:\n      bVar3 = *(byte *)&(exp.X_add_symbol)->sy_flags;\n      pfVar7 = (fragS *)exp.X_add_symbol;\n      goto LAB_0003852f;\n    }\n    if (exp._16_1_ != '\x05') {\n      return 0;\n    }\nLAB_000385ca:\n    bVar3 = *(byte *)&pfVar7->fr_address;\n    pfVar6 = pfVar7;\n    if ((bVar3 & 1) == 0) {\nLAB_00038692:\n      if ((char)pfVar6->fr_var != '\x03') goto LAB_0003852f;\n      goto LAB_0003869c;\n    }\n    paVar5 = *(segT *)((symbol_flags *)&pfVar7->fr_address + 1);\n    if (paVar5 == reg_section) {\n      pfVar6 = (fragS *)((expressionS *)&pfVar7->last_fr_address)->X_op_symbol;\n      goto LAB_00038692;\n    }\n    *symbolPP = (symbolS *)pfVar7;\nLAB_000385f6:\n    pfVar7 = (fragS *)((expressionS *)&pfVar6->last_fr_address)->X_op_symbol;\n    if (reg_section != paVar5) {\n      uVar1 = *(undefined4 *)((int)&pfVar6->fr_fix + 4);\n      *(int *)valueP = (int)pfVar6->fr_fix;\n      *(undefined4 *)((int)valueP + 4) = uVar1;\n      *segP = paVar5;\n      *fragPP = pfVar7;\n      if (expr_section != paVar5) {\n        return 1;\n      }\n      goto LAB_00038626;\n    }\n    paVar5 = *(segT *)((symbol_flags *)&pfVar7->fr_address + 1);\n  }\n  else {\nLAB_0003852f:\n    paVar5 = *(segT *)((symbol_flags *)&pfVar7->fr_address + 1);\n    *symbolPP = (symbolS *)pfVar7;\n    pfVar6 = pfVar7;\n    if ((bVar3 & 1) != 0) goto LAB_000385f6;\n  }\n  paVar5 = (segT)paVar5->flags;\n  *(undefined4 *)valueP = (undefined4)exp.X_add_number;\n  *(undefined4 *)((int)valueP + 4) = exp.X_add_number._4_4_;\n  *segP = paVar5;\n  *fragPP = *(frag **)((int)&pfVar7->fr_offset + 4);\n  if (expr_section != paVar5) {\n    return 1;\n  }\nLAB_00038626:\n  if (exp._16_1_ == '\x02') {\n    *segP = (segT)(PTR__bfd_std_section_00077f98 + 0x180);\n  }\n  else if (exp._16_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  undefined4 uVar1;\n  offsetT oVar2;\n  byte bVar3;\n  int iVar4;\n  segT paVar5;\n  fragS *pfVar6;\n  fragS *pfVar7;\n  expressionS exp;\n  \n  pfVar6 = (fragS *)*symbolPP;\n  bVar3 = *(byte *)&pfVar6->fr_address;\n  pfVar7 = pfVar6;\n  if ((bVar3 & 1) != 0) {\n    paVar5 = *(segT *)((symbol_flags *)&pfVar6->fr_address + 1);\n    pfVar7 = (fragS *)((expressionS *)&pfVar6->last_fr_address)->X_op_symbol;\n    if (paVar5 != reg_section) {\n      oVar2 = pfVar6->fr_fix;\n      *(undefined4 *)((int)valueP + 4) = *(undefined4 *)((int)&pfVar6->fr_fix + 4);\n      *(int *)valueP = (int)oVar2;\n      *segP = paVar5;\n      *fragPP = pfVar7;\n      return 1;\n    }\n    bVar3 = *(byte *)&pfVar7->fr_address;\n  }\n  exp.X_add_symbol = ((expressionS *)&pfVar7->last_fr_address)->X_add_symbol;\n  exp.X_op_symbol = ((expressionS *)&pfVar7->last_fr_address)->X_op_symbol;\n  exp.X_add_number._0_4_ = (undefined4)pfVar7->fr_fix;\n  exp.X_add_number._4_4_ = *(undefined4 *)((int)&pfVar7->fr_fix + 4);\n  exp._16_4_ = *(undefined4 *)&pfVar7->fr_var;\n  if (((bVar3 & 4) == 0) && (exp._16_1_ != '\0')) {\n    if ((bVar3 & 8) != 0) {\n      return 0;\n    }\n    *(byte *)&pfVar7->fr_address = *(byte *)&pfVar7->fr_address | 8;\n    iVar4 = resolve_expression(&exp);\n    *(byte *)&pfVar7->fr_address = *(byte *)&pfVar7->fr_address & 0xf7;\n    if (iVar4 == 0) {\n      return 0;\n    }\n    if ((byte)exp._16_1_ < 5) {\n      if ((byte)exp._16_1_ < 3) {\n        if (exp._16_1_ != '\x02') {\n          return 0;\n        }\n        goto LAB_000385ca;\n      }\nLAB_0003869c:\n      bVar3 = *(byte *)&(exp.X_add_symbol)->sy_flags;\n      pfVar7 = (fragS *)exp.X_add_symbol;\n      goto LAB_0003852f;\n    }\n    if (exp._16_1_ != '\x05') {\n      return 0;\n    }\nLAB_000385ca:\n    bVar3 = *(byte *)&pfVar7->fr_address;\n    pfVar6 = pfVar7;\n    if ((bVar3 & 1) == 0) {\nLAB_00038692:\n      if ((char)pfVar6->fr_var != '\x03') goto LAB_0003852f;\n      goto LAB_0003869c;\n    }\n    paVar5 = *(segT *)((symbol_flags *)&pfVar7->fr_address + 1);\n    if (paVar5 == reg_section) {\n      pfVar6 = (fragS *)((expressionS *)&pfVar7->last_fr_address)->X_op_symbol;\n      goto LAB_00038692;\n    }\n    *symbolPP = (symbolS *)pfVar7;\nLAB_000385f6:\n    pfVar7 = (fragS *)((expressionS *)&pfVar6->last_fr_address)->X_op_symbol;\n    if (reg_section != paVar5) {\n      uVar1 = *(undefined4 *)((int)&pfVar6->fr_fix + 4);\n      *(int *)valueP = (int)pfVar6->fr_fix;\n      *(undefined4 *)((int)valueP + 4) = uVar1;\n      *segP = paVar5;\n      *fragPP = pfVar7;\n      if (expr_section != paVar5) {\n        return 1;\n      }\n      goto LAB_00038626;\n    }\n    paVar5 = *(segT *)((symbol_flags *)&pfVar7->fr_address + 1);\n  }\n  else {\nLAB_0003852f:\n    paVar5 = *(segT *)((symbol_flags *)&pfVar7->fr_address + 1);\n    *symbolPP = (symbolS *)pfVar7;\n    pfVar6 = pfVar7;\n    if ((bVar3 & 1) != 0) goto LAB_000385f6;\n  }\n  paVar5 = (segT)paVar5->flags;\n  *(undefined4 *)valueP = (undefined4)exp.X_add_number;\n  *(undefined4 *)((int)valueP + 4) = exp.X_add_number._4_4_;\n  *segP = paVar5;\n  *fragPP = *(frag **)((int)&pfVar7->fr_offset + 4);\n  if (expr_section != paVar5) {\n    return 1;\n  }\nLAB_00038626:\n  if (exp._16_1_ == '\x02') {\n    *segP = (segT)(PTR__bfd_std_section_00077f98 + 0x180);\n  }\n  else if (exp._16_1_ == '\x05') {\n    *segP = reg_section;\n  }\n  return 1;\n}" { (declaration "undefined4 uVar1;" type_identifier identifier ;) (declaration "offsetT oVar2;" type_identifier identifier ;) (declaration "byte bVar3;" type_identifier identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "segT paVar5;" type_identifier identifier ;) (declaration "fragS *pfVar6;" type_identifier (pointer_declarator "*pfVar6" * identifier) ;) (declaration "fragS *pfVar7;" type_identifier (pointer_declarator "*pfVar7" * identifier) ;) (declaration "expressionS exp;" type_identifier identifier ;) (expression_statement "pfVar6 = (fragS *)*symbolPP;" (assignment_expression "pfVar6 = (fragS *)*symbolPP" identifier = (cast_expression "(fragS *)*symbolPP" ( (type_descriptor "fragS *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*symbolPP" * identifier))) ;) (expression_statement "bVar3 = *(byte *)&pfVar6->fr_address;" (assignment_expression "bVar3 = *(byte *)&pfVar6->fr_address" identifier = (pointer_expression "*(byte *)&pfVar6->fr_address" * (cast_expression "(byte *)&pfVar6->fr_address" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&pfVar6->fr_address" & (field_expression "pfVar6->fr_address" identifier -> field_identifier))))) ;) (expression_statement "pfVar7 = pfVar6;" (assignment_expression "pfVar7 = pfVar6" identifier = identifier) ;) (if_statement "if ((bVar3 & 1) != 0) {\n    paVar5 = *(segT *)((symbol_flags *)&pfVar6->fr_address + 1);\n    pfVar7 = (fragS *)((expressionS *)&pfVar6->last_fr_address)->X_op_symbol;\n    if (paVar5 != reg_section) {\n      oVar2 = pfVar6->fr_fix;\n      *(undefined4 *)((int)valueP + 4) = *(undefined4 *)((int)&pfVar6->fr_fix + 4);\n      *(int *)valueP = (int)oVar2;\n      *segP = paVar5;\n      *fragPP = pfVar7;\n      return 1;\n    }\n    bVar3 = *(byte *)&pfVar7->fr_address;\n  }" if (parenthesized_expression "((bVar3 & 1) != 0)" ( (binary_expression "(bVar3 & 1) != 0" (parenthesized_expression "(bVar3 & 1)" ( (binary_expression "bVar3 & 1" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n    paVar5 = *(segT *)((symbol_flags *)&pfVar6->fr_address + 1);\n    pfVar7 = (fragS *)((expressionS *)&pfVar6->last_fr_address)->X_op_symbol;\n    if (paVar5 != reg_section) {\n      oVar2 = pfVar6->fr_fix;\n      *(undefined4 *)((int)valueP + 4) = *(undefined4 *)((int)&pfVar6->fr_fix + 4);\n      *(int *)valueP = (int)oVar2;\n      *segP = paVar5;\n      *fragPP = pfVar7;\n      return 1;\n    }\n    bVar3 = *(byte *)&pfVar7->fr_address;\n  }" { (expression_statement "paVar5 = *(segT *)((symbol_flags *)&pfVar6->fr_address + 1);" (assignment_expression "paVar5 = *(segT *)((symbol_flags *)&pfVar6->fr_address + 1)" identifier = (pointer_expression "*(segT *)((symbol_flags *)&pfVar6->fr_address + 1)" * (cast_expression "(segT *)((symbol_flags *)&pfVar6->fr_address + 1)" ( (type_descriptor "segT *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((symbol_flags *)&pfVar6->fr_address + 1)" ( (binary_expression "(symbol_flags *)&pfVar6->fr_address + 1" (cast_expression "(symbol_flags *)&pfVar6->fr_address" ( (type_descriptor "symbol_flags *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&pfVar6->fr_address" & (field_expression "pfVar6->fr_address" identifier -> field_identifier))) + number_literal) ))))) ;) (expression_statement "pfVar7 = (fragS *)((expressionS *)&pfVar6->last_fr_address)->X_op_symbol;" (assignment_expression "pfVar7 = (fragS *)((expressionS *)&pfVar6->last_fr_address)->X_op_symbol" identifier = (cast_expression "(fragS *)((expressionS *)&pfVar6->last_fr_address)->X_op_symbol" ( (type_descriptor "fragS *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "((expressionS *)&pfVar6->last_fr_address)->X_op_symbol" (parenthesized_expression "((expressionS *)&pfVar6->last_fr_address)" ( (cast_expression "(expressionS *)&pfVar6->last_fr_address" ( (type_descriptor "expressionS *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&pfVar6->last_fr_address" & (field_expression "pfVar6->last_fr_address" identifier -> field_identifier))) )) -> field_identifier))) ;) (if_statement "if (paVar5 != reg_section) {\n      oVar2 = pfVar6->fr_fix;\n      *(undefined4 *)((int)valueP + 4) = *(undefined4 *)((int)&pfVar6->fr_fix + 4);\n      *(int *)valueP = (int)oVar2;\n      *segP = paVar5;\n      *fragPP = pfVar7;\n      return 1;\n    }" if (parenthesized_expression "(paVar5 != reg_section)" ( (binary_expression "paVar5 != reg_section" identifier != identifier) )) (compound_statement "{\n      oVar2 = pfVar6->fr_fix;\n      *(undefined4 *)((int)valueP + 4) = *(undefined4 *)((int)&pfVar6->fr_fix + 4);\n      *(int *)valueP = (int)oVar2;\n      *segP = paVar5;\n      *fragPP = pfVar7;\n      return 1;\n    }" { (expression_statement "oVar2 = pfVar6->fr_fix;" (assignment_expression "oVar2 = pfVar6->fr_fix" identifier = (field_expression "pfVar6->fr_fix" identifier -> field_identifier)) ;) (expression_statement "*(undefined4 *)((int)valueP + 4) = *(undefined4 *)((int)&pfVar6->fr_fix + 4);" (assignment_expression "*(undefined4 *)((int)valueP + 4) = *(undefined4 *)((int)&pfVar6->fr_fix + 4)" (pointer_expression "*(undefined4 *)((int)valueP + 4)" * (cast_expression "(undefined4 *)((int)valueP + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)valueP + 4)" ( (binary_expression "(int)valueP + 4" (cast_expression "(int)valueP" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (pointer_expression "*(undefined4 *)((int)&pfVar6->fr_fix + 4)" * (cast_expression "(undefined4 *)((int)&pfVar6->fr_fix + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&pfVar6->fr_fix + 4)" ( (binary_expression "(int)&pfVar6->fr_fix + 4" (cast_expression "(int)&pfVar6->fr_fix" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&pfVar6->fr_fix" & (field_expression "pfVar6->fr_fix" identifier -> field_identifier))) + number_literal) ))))) ;) (expression_statement "*(int *)valueP = (int)oVar2;" (assignment_expression "*(int *)valueP = (int)oVar2" (pointer_expression "*(int *)valueP" * (cast_expression "(int *)valueP" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) = (cast_expression "(int)oVar2" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "*segP = paVar5;" (assignment_expression "*segP = paVar5" (pointer_expression "*segP" * identifier) = identifier) ;) (expression_statement "*fragPP = pfVar7;" (assignment_expression "*fragPP = pfVar7" (pointer_expression "*fragPP" * identifier) = identifier) ;) (return_statement "return 1;" return number_literal ;) })) (expression_statement "bVar3 = *(byte *)&pfVar7->fr_address;" (assignment_expression "bVar3 = *(byte *)&pfVar7->fr_address" identifier = (pointer_expression "*(byte *)&pfVar7->fr_address" * (cast_expression "(byte *)&pfVar7->fr_address" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&pfVar7->fr_address" & (field_expression "pfVar7->fr_address" identifier -> field_identifier))))) ;) })) (expression_statement "exp.X_add_symbol = ((expressionS *)&pfVar7->last_fr_address)->X_add_symbol;" (assignment_expression "exp.X_add_symbol = ((expressionS *)&pfVar7->last_fr_address)->X_add_symbol" (field_expression "exp.X_add_symbol" identifier . field_identifier) = (field_expression "((expressionS *)&pfVar7->last_fr_address)->X_add_symbol" (parenthesized_expression "((expressionS *)&pfVar7->last_fr_address)" ( (cast_expression "(expressionS *)&pfVar7->last_fr_address" ( (type_descriptor "expressionS *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&pfVar7->last_fr_address" & (field_expression "pfVar7->last_fr_address" identifier -> field_identifier))) )) -> field_identifier)) ;) (expression_statement "exp.X_op_symbol = ((expressionS *)&pfVar7->last_fr_address)->X_op_symbol;" (assignment_expression "exp.X_op_symbol = ((expressionS *)&pfVar7->last_fr_address)->X_op_symbol" (field_expression "exp.X_op_symbol" identifier . field_identifier) = (field_expression "((expressionS *)&pfVar7->last_fr_address)->X_op_symbol" (parenthesized_expression "((expressionS *)&pfVar7->last_fr_address)" ( (cast_expression "(expressionS *)&pfVar7->last_fr_address" ( (type_descriptor "expressionS *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&pfVar7->last_fr_address" & (field_expression "pfVar7->last_fr_address" identifier -> field_identifier))) )) -> field_identifier)) ;) (expression_statement "exp.X_add_number._0_4_ = (undefined4)pfVar7->fr_fix;" (assignment_expression "exp.X_add_number._0_4_ = (undefined4)pfVar7->fr_fix" (field_expression "exp.X_add_number._0_4_" (field_expression "exp.X_add_number" identifier . field_identifier) . field_identifier) = (cast_expression "(undefined4)pfVar7->fr_fix" ( (type_descriptor "undefined4" type_identifier) ) (field_expression "pfVar7->fr_fix" identifier -> field_identifier))) ;) (expression_statement "exp.X_add_number._4_4_ = *(undefined4 *)((int)&pfVar7->fr_fix + 4);" (assignment_expression "exp.X_add_number._4_4_ = *(undefined4 *)((int)&pfVar7->fr_fix + 4)" (field_expression "exp.X_add_number._4_4_" (field_expression "exp.X_add_number" identifier . field_identifier) . field_identifier) = (pointer_expression "*(undefined4 *)((int)&pfVar7->fr_fix + 4)" * (cast_expression "(undefined4 *)((int)&pfVar7->fr_fix + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&pfVar7->fr_fix + 4)" ( (binary_expression "(int)&pfVar7->fr_fix + 4" (cast_expression "(int)&pfVar7->fr_fix" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&pfVar7->fr_fix" & (field_expression "pfVar7->fr_fix" identifier -> field_identifier))) + number_literal) ))))) ;) (expression_statement "exp._16_4_ = *(undefined4 *)&pfVar7->fr_var;" (assignment_expression "exp._16_4_ = *(undefined4 *)&pfVar7->fr_var" (field_expression "exp._16_4_" identifier . field_identifier) = (pointer_expression "*(undefined4 *)&pfVar7->fr_var" * (cast_expression "(undefined4 *)&pfVar7->fr_var" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&pfVar7->fr_var" & (field_expression "pfVar7->fr_var" identifier -> field_identifier))))) ;) (if_statement "if (((bVar3 & 4) == 0) && (exp._16_1_ != '\0')) {\n    if ((bVar3 & 8) != 0) {\n      return 0;\n    }\n    *(byte *)&pfVar7->fr_address = *(byte *)&pfVar7->fr_address | 8;\n    iVar4 = resolve_expression(&exp);\n    *(byte *)&pfVar7->fr_address = *(byte *)&pfVar7->fr_address & 0xf7;\n    if (iVar4 == 0) {\n      return 0;\n    }\n    if ((byte)exp._16_1_ < 5) {\n      if ((byte)exp._16_1_ < 3) {\n        if (exp._16_1_ != '\x02') {\n          return 0;\n        }\n        goto LAB_000385ca;\n      }\nLAB_0003869c:\n      bVar3 = *(byte *)&(exp.X_add_symbol)->sy_flags;\n      pfVar7 = (fragS *)exp.X_add_symbol;\n      goto LAB_0003852f;\n    }\n    if (exp._16_1_ != '\x05') {\n      return 0;\n    }\nLAB_000385ca:\n    bVar3 = *(byte *)&pfVar7->fr_address;\n    pfVar6 = pfVar7;\n    if ((bVar3 & 1) == 0) {\nLAB_00038692:\n      if ((char)pfVar6->fr_var != '\x03') goto LAB_0003852f;\n      goto LAB_0003869c;\n    }\n    paVar5 = *(segT *)((symbol_flags *)&pfVar7->fr_address + 1);\n    if (paVar5 == reg_section) {\n      pfVar6 = (fragS *)((expressionS *)&pfVar7->last_fr_address)->X_op_symbol;\n      goto LAB_00038692;\n    }\n    *symbolPP = (symbolS *)pfVar7;\nLAB_000385f6:\n    pfVar7 = (fragS *)((expressionS *)&pfVar6->last_fr_address)->X_op_symbol;\n    if (reg_section != paVar5) {\n      uVar1 = *(undefined4 *)((int)&pfVar6->fr_fix + 4);\n      *(int *)valueP = (int)pfVar6->fr_fix;\n      *(undefined4 *)((int)valueP + 4) = uVar1;\n      *segP = paVar5;\n      *fragPP = pfVar7;\n      if (expr_section != paVar5) {\n        return 1;\n      }\n      goto LAB_00038626;\n    }\n    paVar5 = *(segT *)((symbol_flags *)&pfVar7->fr_address + 1);\n  }\n  else {\nLAB_0003852f:\n    paVar5 = *(segT *)((symbol_flags *)&pfVar7->fr_address + 1);\n    *symbolPP = (symbolS *)pfVar7;\n    pfVar6 = pfVar7;\n    if ((bVar3 & 1) != 0) goto LAB_000385f6;\n  }" if (parenthesized_expression "(((bVar3 & 4) == 0) && (exp._16_1_ != '\0'))" ( (binary_expression "((bVar3 & 4) == 0) && (exp._16_1_ != '\0')" (parenthesized_expression "((bVar3 & 4) == 0)" ( (binary_expression "(bVar3 & 4) == 0" (parenthesized_expression "(bVar3 & 4)" ( (binary_expression "bVar3 & 4" identifier & number_literal) )) == number_literal) )) && (parenthesized_expression "(exp._16_1_ != '\0')" ( (binary_expression "exp._16_1_ != '\0'" (field_expression "exp._16_1_" identifier . field_identifier) != (char_literal "'\0'" ' escape_sequence ')) ))) )) (compound_statement "{\n    if ((bVar3 & 8) != 0) {\n      return 0;\n    }\n    *(byte *)&pfVar7->fr_address = *(byte *)&pfVar7->fr_address | 8;\n    iVar4 = resolve_expression(&exp);\n    *(byte *)&pfVar7->fr_address = *(byte *)&pfVar7->fr_address & 0xf7;\n    if (iVar4 == 0) {\n      return 0;\n    }\n    if ((byte)exp._16_1_ < 5) {\n      if ((byte)exp._16_1_ < 3) {\n        if (exp._16_1_ != '\x02') {\n          return 0;\n        }\n        goto LAB_000385ca;\n      }\nLAB_0003869c:\n      bVar3 = *(byte *)&(exp.X_add_symbol)->sy_flags;\n      pfVar7 = (fragS *)exp.X_add_symbol;\n      goto LAB_0003852f;\n    }\n    if (exp._16_1_ != '\x05') {\n      return 0;\n    }\nLAB_000385ca:\n    bVar3 = *(byte *)&pfVar7->fr_address;\n    pfVar6 = pfVar7;\n    if ((bVar3 & 1) == 0) {\nLAB_00038692:\n      if ((char)pfVar6->fr_var != '\x03') goto LAB_0003852f;\n      goto LAB_0003869c;\n    }\n    paVar5 = *(segT *)((symbol_flags *)&pfVar7->fr_address + 1);\n    if (paVar5 == reg_section) {\n      pfVar6 = (fragS *)((expressionS *)&pfVar7->last_fr_address)->X_op_symbol;\n      goto LAB_00038692;\n    }\n    *symbolPP = (symbolS *)pfVar7;\nLAB_000385f6:\n    pfVar7 = (fragS *)((expressionS *)&pfVar6->last_fr_address)->X_op_symbol;\n    if (reg_section != paVar5) {\n      uVar1 = *(undefined4 *)((int)&pfVar6->fr_fix + 4);\n      *(int *)valueP = (int)pfVar6->fr_fix;\n      *(undefined4 *)((int)valueP + 4) = uVar1;\n      *segP = paVar5;\n      *fragPP = pfVar7;\n      if (expr_section != paVar5) {\n        return 1;\n      }\n      goto LAB_00038626;\n    }\n    paVar5 = *(segT *)((symbol_flags *)&pfVar7->fr_address + 1);\n  }" { (if_statement "if ((bVar3 & 8) != 0) {\n      return 0;\n    }" if (parenthesized_expression "((bVar3 & 8) != 0)" ( (binary_expression "(bVar3 & 8) != 0" (parenthesized_expression "(bVar3 & 8)" ( (binary_expression "bVar3 & 8" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n      return 0;\n    }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "*(byte *)&pfVar7->fr_address = *(byte *)&pfVar7->fr_address | 8;" (assignment_expression "*(byte *)&pfVar7->fr_address = *(byte *)&pfVar7->fr_address | 8" (pointer_expression "*(byte *)&pfVar7->fr_address" * (cast_expression "(byte *)&pfVar7->fr_address" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&pfVar7->fr_address" & (field_expression "pfVar7->fr_address" identifier -> field_identifier)))) = (binary_expression "*(byte *)&pfVar7->fr_address | 8" (pointer_expression "*(byte *)&pfVar7->fr_address" * (cast_expression "(byte *)&pfVar7->fr_address" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&pfVar7->fr_address" & (field_expression "pfVar7->fr_address" identifier -> field_identifier)))) | number_literal)) ;) (expression_statement "iVar4 = resolve_expression(&exp);" (assignment_expression "iVar4 = resolve_expression(&exp)" identifier = (call_expression "resolve_expression(&exp)" identifier (argument_list "(&exp)" ( (pointer_expression "&exp" & identifier) )))) ;) (expression_statement "*(byte *)&pfVar7->fr_address = *(byte *)&pfVar7->fr_address & 0xf7;" (assignment_expression "*(byte *)&pfVar7->fr_address = *(byte *)&pfVar7->fr_address & 0xf7" (pointer_expression "*(byte *)&pfVar7->fr_address" * (cast_expression "(byte *)&pfVar7->fr_address" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&pfVar7->fr_address" & (field_expression "pfVar7->fr_address" identifier -> field_identifier)))) = (binary_expression "*(byte *)&pfVar7->fr_address & 0xf7" (pointer_expression "*(byte *)&pfVar7->fr_address" * (cast_expression "(byte *)&pfVar7->fr_address" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&pfVar7->fr_address" & (field_expression "pfVar7->fr_address" identifier -> field_identifier)))) & number_literal)) ;) (if_statement "if (iVar4 == 0) {\n      return 0;\n    }" if (parenthesized_expression "(iVar4 == 0)" ( (binary_expression "iVar4 == 0" identifier == number_literal) )) (compound_statement "{\n      return 0;\n    }" { (return_statement "return 0;" return number_literal ;) })) (if_statement "if ((byte)exp._16_1_ < 5) {\n      if ((byte)exp._16_1_ < 3) {\n        if (exp._16_1_ != '\x02') {\n          return 0;\n        }\n        goto LAB_000385ca;\n      }\nLAB_0003869c:\n      bVar3 = *(byte *)&(exp.X_add_symbol)->sy_flags;\n      pfVar7 = (fragS *)exp.X_add_symbol;\n      goto LAB_0003852f;\n    }" if (parenthesized_expression "((byte)exp._16_1_ < 5)" ( (binary_expression "(byte)exp._16_1_ < 5" (cast_expression "(byte)exp._16_1_" ( (type_descriptor "byte" type_identifier) ) (field_expression "exp._16_1_" identifier . field_identifier)) < number_literal) )) (compound_statement "{\n      if ((byte)exp._16_1_ < 3) {\n        if (exp._16_1_ != '\x02') {\n          return 0;\n        }\n        goto LAB_000385ca;\n      }\nLAB_0003869c:\n      bVar3 = *(byte *)&(exp.X_add_symbol)->sy_flags;\n      pfVar7 = (fragS *)exp.X_add_symbol;\n      goto LAB_0003852f;\n    }" { (if_statement "if ((byte)exp._16_1_ < 3) {\n        if (exp._16_1_ != '\x02') {\n          return 0;\n        }\n        goto LAB_000385ca;\n      }" if (parenthesized_expression "((byte)exp._16_1_ < 3)" ( (binary_expression "(byte)exp._16_1_ < 3" (cast_expression "(byte)exp._16_1_" ( (type_descriptor "byte" type_identifier) ) (field_expression "exp._16_1_" identifier . field_identifier)) < number_literal) )) (compound_statement "{\n        if (exp._16_1_ != '\x02') {\n          return 0;\n        }\n        goto LAB_000385ca;\n      }" { (if_statement "if (exp._16_1_ != '\x02') {\n          return 0;\n        }" if (parenthesized_expression "(exp._16_1_ != '\x02')" ( (binary_expression "exp._16_1_ != '\x02'" (field_expression "exp._16_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_000385ca;" goto statement_identifier ;) })) (labeled_statement "LAB_0003869c:\n      bVar3 = *(byte *)&(exp.X_add_symbol)->sy_flags;" statement_identifier : (expression_statement "bVar3 = *(byte *)&(exp.X_add_symbol)->sy_flags;" (assignment_expression "bVar3 = *(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 "pfVar7 = (fragS *)exp.X_add_symbol;" (assignment_expression "pfVar7 = (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_0003852f;" goto statement_identifier ;) })) (if_statement "if (exp._16_1_ != '\x05') {\n      return 0;\n    }" if (parenthesized_expression "(exp._16_1_ != '\x05')" ( (binary_expression "exp._16_1_ != '\x05'" (field_expression "exp._16_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_000385ca:\n    bVar3 = *(byte *)&pfVar7->fr_address;" statement_identifier : (expression_statement "bVar3 = *(byte *)&pfVar7->fr_address;" (assignment_expression "bVar3 = *(byte *)&pfVar7->fr_address" identifier = (pointer_expression "*(byte *)&pfVar7->fr_address" * (cast_expression "(byte *)&pfVar7->fr_address" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&pfVar7->fr_address" & (field_expression "pfVar7->fr_address" identifier -> field_identifier))))) ;)) (expression_statement "pfVar6 = pfVar7;" (assignment_expression "pfVar6 = pfVar7" identifier = identifier) ;) (if_statement "if ((bVar3 & 1) == 0) {\nLAB_00038692:\n      if ((char)pfVar6->fr_var != '\x03') goto LAB_0003852f;\n      goto LAB_0003869c;\n    }" if (parenthesized_expression "((bVar3 & 1) == 0)" ( (binary_expression "(bVar3 & 1) == 0" (parenthesized_expression "(bVar3 & 1)" ( (binary_expression "bVar3 & 1" identifier & number_literal) )) == number_literal) )) (compound_statement "{\nLAB_00038692:\n      if ((char)pfVar6->fr_var != '\x03') goto LAB_0003852f;\n      goto LAB_0003869c;\n    }" { (labeled_statement "LAB_00038692:\n      if ((char)pfVar6->fr_var != '\x03') goto LAB_0003852f;" statement_identifier : (if_statement "if ((char)pfVar6->fr_var != '\x03') goto LAB_0003852f;" if (parenthesized_expression "((char)pfVar6->fr_var != '\x03')" ( (binary_expression "(char)pfVar6->fr_var != '\x03'" (cast_expression "(char)pfVar6->fr_var" ( (type_descriptor "char" primitive_type) ) (field_expression "pfVar6->fr_var" identifier -> field_identifier)) != (char_literal "'\x03'" ' escape_sequence ')) )) (goto_statement "goto LAB_0003852f;" goto statement_identifier ;))) (goto_statement "goto LAB_0003869c;" goto statement_identifier ;) })) (expression_statement "paVar5 = *(segT *)((symbol_flags *)&pfVar7->fr_address + 1);" (assignment_expression "paVar5 = *(segT *)((symbol_flags *)&pfVar7->fr_address + 1)" identifier = (pointer_expression "*(segT *)((symbol_flags *)&pfVar7->fr_address + 1)" * (cast_expression "(segT *)((symbol_flags *)&pfVar7->fr_address + 1)" ( (type_descriptor "segT *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((symbol_flags *)&pfVar7->fr_address + 1)" ( (binary_expression "(symbol_flags *)&pfVar7->fr_address + 1" (cast_expression "(symbol_flags *)&pfVar7->fr_address" ( (type_descriptor "symbol_flags *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&pfVar7->fr_address" & (field_expression "pfVar7->fr_address" identifier -> field_identifier))) + number_literal) ))))) ;) (if_statement "if (paVar5 == reg_section) {\n      pfVar6 = (fragS *)((expressionS *)&pfVar7->last_fr_address)->X_op_symbol;\n      goto LAB_00038692;\n    }" if (parenthesized_expression "(paVar5 == reg_section)" ( (binary_expression "paVar5 == reg_section" identifier == identifier) )) (compound_statement "{\n      pfVar6 = (fragS *)((expressionS *)&pfVar7->last_fr_address)->X_op_symbol;\n      goto LAB_00038692;\n    }" { (expression_statement "pfVar6 = (fragS *)((expressionS *)&pfVar7->last_fr_address)->X_op_symbol;" (assignment_expression "pfVar6 = (fragS *)((expressionS *)&pfVar7->last_fr_address)->X_op_symbol" identifier = (cast_expression "(fragS *)((expressionS *)&pfVar7->last_fr_address)->X_op_symbol" ( (type_descriptor "fragS *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "((expressionS *)&pfVar7->last_fr_address)->X_op_symbol" (parenthesized_expression "((expressionS *)&pfVar7->last_fr_address)" ( (cast_expression "(expressionS *)&pfVar7->last_fr_address" ( (type_descriptor "expressionS *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&pfVar7->last_fr_address" & (field_expression "pfVar7->last_fr_address" identifier -> field_identifier))) )) -> field_identifier))) ;) (goto_statement "goto LAB_00038692;" goto statement_identifier ;) })) (expression_statement "*symbolPP = (symbolS *)pfVar7;" (assignment_expression "*symbolPP = (symbolS *)pfVar7" (pointer_expression "*symbolPP" * identifier) = (cast_expression "(symbolS *)pfVar7" ( (type_descriptor "symbolS *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (labeled_statement "LAB_000385f6:\n    pfVar7 = (fragS *)((expressionS *)&pfVar6->last_fr_address)->X_op_symbol;" statement_identifier : (expression_statement "pfVar7 = (fragS *)((expressionS *)&pfVar6->last_fr_address)->X_op_symbol;" (assignment_expression "pfVar7 = (fragS *)((expressionS *)&pfVar6->last_fr_address)->X_op_symbol" identifier = (cast_expression "(fragS *)((expressionS *)&pfVar6->last_fr_address)->X_op_symbol" ( (type_descriptor "fragS *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "((expressionS *)&pfVar6->last_fr_address)->X_op_symbol" (parenthesized_expression "((expressionS *)&pfVar6->last_fr_address)" ( (cast_expression "(expressionS *)&pfVar6->last_fr_address" ( (type_descriptor "expressionS *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&pfVar6->last_fr_address" & (field_expression "pfVar6->last_fr_address" identifier -> field_identifier))) )) -> field_identifier))) ;)) (if_statement "if (reg_section != paVar5) {\n      uVar1 = *(undefined4 *)((int)&pfVar6->fr_fix + 4);\n      *(int *)valueP = (int)pfVar6->fr_fix;\n      *(undefined4 *)((int)valueP + 4) = uVar1;\n      *segP = paVar5;\n      *fragPP = pfVar7;\n      if (expr_section != paVar5) {\n        return 1;\n      }\n      goto LAB_00038626;\n    }" if (parenthesized_expression "(reg_section != paVar5)" ( (binary_expression "reg_section != paVar5" identifier != identifier) )) (compound_statement "{\n      uVar1 = *(undefined4 *)((int)&pfVar6->fr_fix + 4);\n      *(int *)valueP = (int)pfVar6->fr_fix;\n      *(undefined4 *)((int)valueP + 4) = uVar1;\n      *segP = paVar5;\n      *fragPP = pfVar7;\n      if (expr_section != paVar5) {\n        return 1;\n      }\n      goto LAB_00038626;\n    }" { (expression_statement "uVar1 = *(undefined4 *)((int)&pfVar6->fr_fix + 4);" (assignment_expression "uVar1 = *(undefined4 *)((int)&pfVar6->fr_fix + 4)" identifier = (pointer_expression "*(undefined4 *)((int)&pfVar6->fr_fix + 4)" * (cast_expression "(undefined4 *)((int)&pfVar6->fr_fix + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&pfVar6->fr_fix + 4)" ( (binary_expression "(int)&pfVar6->fr_fix + 4" (cast_expression "(int)&pfVar6->fr_fix" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&pfVar6->fr_fix" & (field_expression "pfVar6->fr_fix" identifier -> field_identifier))) + number_literal) ))))) ;) (expression_statement "*(int *)valueP = (int)pfVar6->fr_fix;" (assignment_expression "*(int *)valueP = (int)pfVar6->fr_fix" (pointer_expression "*(int *)valueP" * (cast_expression "(int *)valueP" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) = (cast_expression "(int)pfVar6->fr_fix" ( (type_descriptor "int" primitive_type) ) (field_expression "pfVar6->fr_fix" identifier -> field_identifier))) ;) (expression_statement "*(undefined4 *)((int)valueP + 4) = uVar1;" (assignment_expression "*(undefined4 *)((int)valueP + 4) = uVar1" (pointer_expression "*(undefined4 *)((int)valueP + 4)" * (cast_expression "(undefined4 *)((int)valueP + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)valueP + 4)" ( (binary_expression "(int)valueP + 4" (cast_expression "(int)valueP" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "*segP = paVar5;" (assignment_expression "*segP = paVar5" (pointer_expression "*segP" * identifier) = identifier) ;) (expression_statement "*fragPP = pfVar7;" (assignment_expression "*fragPP = pfVar7" (pointer_expression "*fragPP" * identifier) = identifier) ;) (if_statement "if (expr_section != paVar5) {\n        return 1;\n      }" if (parenthesized_expression "(expr_section != paVar5)" ( (binary_expression "expr_section != paVar5" identifier != identifier) )) (compound_statement "{\n        return 1;\n      }" { (return_statement "return 1;" return number_literal ;) })) (goto_statement "goto LAB_00038626;" goto statement_identifier ;) })) (expression_statement "paVar5 = *(segT *)((symbol_flags *)&pfVar7->fr_address + 1);" (assignment_expression "paVar5 = *(segT *)((symbol_flags *)&pfVar7->fr_address + 1)" identifier = (pointer_expression "*(segT *)((symbol_flags *)&pfVar7->fr_address + 1)" * (cast_expression "(segT *)((symbol_flags *)&pfVar7->fr_address + 1)" ( (type_descriptor "segT *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((symbol_flags *)&pfVar7->fr_address + 1)" ( (binary_expression "(symbol_flags *)&pfVar7->fr_address + 1" (cast_expression "(symbol_flags *)&pfVar7->fr_address" ( (type_descriptor "symbol_flags *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&pfVar7->fr_address" & (field_expression "pfVar7->fr_address" identifier -> field_identifier))) + number_literal) ))))) ;) }) (else_clause "else {\nLAB_0003852f:\n    paVar5 = *(segT *)((symbol_flags *)&pfVar7->fr_address + 1);\n    *symbolPP = (symbolS *)pfVar7;\n    pfVar6 = pfVar7;\n    if ((bVar3 & 1) != 0) goto LAB_000385f6;\n  }" else (compound_statement "{\nLAB_0003852f:\n    paVar5 = *(segT *)((symbol_flags *)&pfVar7->fr_address + 1);\n    *symbolPP = (symbolS *)pfVar7;\n    pfVar6 = pfVar7;\n    if ((bVar3 & 1) != 0) goto LAB_000385f6;\n  }" { (labeled_statement "LAB_0003852f:\n    paVar5 = *(segT *)((symbol_flags *)&pfVar7->fr_address + 1);" statement_identifier : (expression_statement "paVar5 = *(segT *)((symbol_flags *)&pfVar7->fr_address + 1);" (assignment_expression "paVar5 = *(segT *)((symbol_flags *)&pfVar7->fr_address + 1)" identifier = (pointer_expression "*(segT *)((symbol_flags *)&pfVar7->fr_address + 1)" * (cast_expression "(segT *)((symbol_flags *)&pfVar7->fr_address + 1)" ( (type_descriptor "segT *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((symbol_flags *)&pfVar7->fr_address + 1)" ( (binary_expression "(symbol_flags *)&pfVar7->fr_address + 1" (cast_expression "(symbol_flags *)&pfVar7->fr_address" ( (type_descriptor "symbol_flags *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&pfVar7->fr_address" & (field_expression "pfVar7->fr_address" identifier -> field_identifier))) + number_literal) ))))) ;)) (expression_statement "*symbolPP = (symbolS *)pfVar7;" (assignment_expression "*symbolPP = (symbolS *)pfVar7" (pointer_expression "*symbolPP" * identifier) = (cast_expression "(symbolS *)pfVar7" ( (type_descriptor "symbolS *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "pfVar6 = pfVar7;" (assignment_expression "pfVar6 = pfVar7" identifier = identifier) ;) (if_statement "if ((bVar3 & 1) != 0) goto LAB_000385f6;" if (parenthesized_expression "((bVar3 & 1) != 0)" ( (binary_expression "(bVar3 & 1) != 0" (parenthesized_expression "(bVar3 & 1)" ( (binary_expression "bVar3 & 1" identifier & number_literal) )) != number_literal) )) (goto_statement "goto LAB_000385f6;" goto statement_identifier ;)) }))) (expression_statement "paVar5 = (segT)paVar5->flags;" (assignment_expression "paVar5 = (segT)paVar5->flags" identifier = (cast_expression "(segT)paVar5->flags" ( (type_descriptor "segT" type_identifier) ) (field_expression "paVar5->flags" identifier -> field_identifier))) ;) (expression_statement "*(undefined4 *)valueP = (undefined4)exp.X_add_number;" (assignment_expression "*(undefined4 *)valueP = (undefined4)exp.X_add_number" (pointer_expression "*(undefined4 *)valueP" * (cast_expression "(undefined4 *)valueP" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) = (cast_expression "(undefined4)exp.X_add_number" ( (type_descriptor "undefined4" type_identifier) ) (field_expression "exp.X_add_number" identifier . field_identifier))) ;) (expression_statement "*(undefined4 *)((int)valueP + 4) = exp.X_add_number._4_4_;" (assignment_expression "*(undefined4 *)((int)valueP + 4) = exp.X_add_number._4_4_" (pointer_expression "*(undefined4 *)((int)valueP + 4)" * (cast_expression "(undefined4 *)((int)valueP + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)valueP + 4)" ( (binary_expression "(int)valueP + 4" (cast_expression "(int)valueP" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (field_expression "exp.X_add_number._4_4_" (field_expression "exp.X_add_number" identifier . field_identifier) . field_identifier)) ;) (expression_statement "*segP = paVar5;" (assignment_expression "*segP = paVar5" (pointer_expression "*segP" * identifier) = identifier) ;) (expression_statement "*fragPP = *(frag **)((int)&pfVar7->fr_offset + 4);" (assignment_expression "*fragPP = *(frag **)((int)&pfVar7->fr_offset + 4)" (pointer_expression "*fragPP" * identifier) = (pointer_expression "*(frag **)((int)&pfVar7->fr_offset + 4)" * (cast_expression "(frag **)((int)&pfVar7->fr_offset + 4)" ( (type_descriptor "frag **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)&pfVar7->fr_offset + 4)" ( (binary_expression "(int)&pfVar7->fr_offset + 4" (cast_expression "(int)&pfVar7->fr_offset" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&pfVar7->fr_offset" & (field_expression "pfVar7->fr_offset" identifier -> field_identifier))) + number_literal) ))))) ;) (if_statement "if (expr_section != paVar5) {\n    return 1;\n  }" if (parenthesized_expression "(expr_section != paVar5)" ( (binary_expression "expr_section != paVar5" identifier != identifier) )) (compound_statement "{\n    return 1;\n  }" { (return_statement "return 1;" return number_literal ;) })) (labeled_statement "LAB_00038626:\n  if (exp._16_1_ == '\x02') {\n    *segP = (segT)(PTR__bfd_std_section_00077f98 + 0x180);\n  }\n  else if (exp._16_1_ == '\x05') {\n    *segP = reg_section;\n  }" statement_identifier : (if_statement "if (exp._16_1_ == '\x02') {\n    *segP = (segT)(PTR__bfd_std_section_00077f98 + 0x180);\n  }\n  else if (exp._16_1_ == '\x05') {\n    *segP = reg_section;\n  }" if (parenthesized_expression "(exp._16_1_ == '\x02')" ( (binary_expression "exp._16_1_ == '\x02'" (field_expression "exp._16_1_" identifier . field_identifier) == (char_literal "'\x02'" ' escape_sequence ')) )) (compound_statement "{\n    *segP = (segT)(PTR__bfd_std_section_00077f98 + 0x180);\n  }" { (expression_statement "*segP = (segT)(PTR__bfd_std_section_00077f98 + 0x180);" (assignment_expression "*segP = (segT)(PTR__bfd_std_section_00077f98 + 0x180)" (pointer_expression "*segP" * identifier) = (call_expression "(segT)(PTR__bfd_std_section_00077f98 + 0x180)" (parenthesized_expression "(segT)" ( identifier )) (argument_list "(PTR__bfd_std_section_00077f98 + 0x180)" ( (binary_expression "PTR__bfd_std_section_00077f98 + 0x180" identifier + number_literal) )))) ;) }) (else_clause "else if (exp._16_1_ == '\x05') {\n    *segP = reg_section;\n  }" else (if_statement "if (exp._16_1_ == '\x05') {\n    *segP = reg_section;\n  }" if (parenthesized_expression "(exp._16_1_ == '\x05')" ( (binary_expression "exp._16_1_ == '\x05'" (field_expression "exp._16_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 "undefined4 FUN_000384a0(undefined4 *param_1,undefined4 *param_2,int *param_3,undefined4 *param_4)\n\n{\n  undefined4 uVar1;\n  byte bVar2;\n  int iVar3;\n  byte *pbVar4;\n  byte *pbVar5;\n  byte *local_30;\n  undefined4 local_2c;\n  undefined4 local_28;\n  undefined4 local_24;\n  undefined4 local_20;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x384a9;\n  pbVar4 = (byte *)*param_1;\n  bVar2 = *pbVar4;\n  pbVar5 = pbVar4;\n  if ((bVar2 & 1) != 0) {\n    iVar3 = *(int *)(pbVar4 + 4);\n    pbVar5 = *(byte **)(pbVar4 + 0xc);\n    if (iVar3 != DAT_0008185c) {\n      uVar1 = *(undefined4 *)(pbVar4 + 0x10);\n      param_2[1] = *(undefined4 *)(pbVar4 + 0x14);\n      *param_2 = uVar1;\n      *param_3 = iVar3;\n      *param_4 = pbVar5;\n      return 1;\n    }\n    bVar2 = *pbVar5;\n  }\n  local_30 = *(byte **)(pbVar5 + 8);\n  local_2c = *(undefined4 *)(pbVar5 + 0xc);\n  local_28 = *(undefined4 *)(pbVar5 + 0x10);\n  local_24 = *(undefined4 *)(pbVar5 + 0x14);\n  local_20 = *(undefined4 *)(pbVar5 + 0x18);\n  if (((bVar2 & 4) == 0) && ((byte)local_20 != '\0')) {\n    if ((bVar2 & 8) != 0) {\n      return 0;\n    }\n    *pbVar5 = *pbVar5 | 8;\n    iVar3 = FUN_000228d0(&local_30);\n    *pbVar5 = *pbVar5 & 0xf7;\n    if (iVar3 == 0) {\n      return 0;\n    }\n    if ((byte)local_20 < 5) {\n      if ((byte)local_20 < 3) {\n        if ((byte)local_20 != 2) {\n          return 0;\n        }\n        goto LAB_000385ca;\n      }\nLAB_0003869c:\n      bVar2 = *local_30;\n      pbVar5 = local_30;\n      goto LAB_0003852f;\n    }\n    if ((byte)local_20 != 5) {\n      return 0;\n    }\nLAB_000385ca:\n    bVar2 = *pbVar5;\n    pbVar4 = pbVar5;\n    if ((bVar2 & 1) == 0) {\nLAB_00038692:\n      if (pbVar4[0x18] != 3) goto LAB_0003852f;\n      goto LAB_0003869c;\n    }\n    iVar3 = *(int *)(pbVar5 + 4);\n    if (iVar3 == DAT_0008185c) {\n      pbVar4 = *(byte **)(pbVar5 + 0xc);\n      goto LAB_00038692;\n    }\n    *param_1 = pbVar5;\nLAB_000385f6:\n    pbVar5 = *(byte **)(pbVar4 + 0xc);\n    if (DAT_0008185c != iVar3) {\n      uVar1 = *(undefined4 *)(pbVar4 + 0x14);\n      *param_2 = *(undefined4 *)(pbVar4 + 0x10);\n      param_2[1] = uVar1;\n      *param_3 = iVar3;\n      *param_4 = pbVar5;\n      if (DAT_000817a0 != iVar3) {\n        return 1;\n      }\n      goto LAB_00038626;\n    }\n    iVar3 = *(int *)(pbVar5 + 4);\n  }\n  else {\nLAB_0003852f:\n    iVar3 = *(int *)(pbVar5 + 4);\n    *param_1 = pbVar5;\n    pbVar4 = pbVar5;\n    if ((bVar2 & 1) != 0) goto LAB_000385f6;\n  }\n  iVar3 = *(int *)(iVar3 + 0x14);\n  *param_2 = local_28;\n  param_2[1] = local_24;\n  *param_3 = iVar3;\n  *param_4 = *(undefined4 *)(pbVar5 + 0x24);\n  if (DAT_000817a0 != iVar3) {\n    return 1;\n  }\nLAB_00038626:\n  if ((byte)local_20 == '\x02') {\n    *param_3 = (int)(PTR__bfd_std_section_00077f98 + 0x180);\n  }\n  else if ((byte)local_20 == '\x05') {\n    *param_3 = DAT_0008185c;\n  }\n  return 1;\n}\n\n" (function_definition "undefined4 FUN_000384a0(undefined4 *param_1,undefined4 *param_2,int *param_3,undefined4 *param_4)\n\n{\n  undefined4 uVar1;\n  byte bVar2;\n  int iVar3;\n  byte *pbVar4;\n  byte *pbVar5;\n  byte *local_30;\n  undefined4 local_2c;\n  undefined4 local_28;\n  undefined4 local_24;\n  undefined4 local_20;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x384a9;\n  pbVar4 = (byte *)*param_1;\n  bVar2 = *pbVar4;\n  pbVar5 = pbVar4;\n  if ((bVar2 & 1) != 0) {\n    iVar3 = *(int *)(pbVar4 + 4);\n    pbVar5 = *(byte **)(pbVar4 + 0xc);\n    if (iVar3 != DAT_0008185c) {\n      uVar1 = *(undefined4 *)(pbVar4 + 0x10);\n      param_2[1] = *(undefined4 *)(pbVar4 + 0x14);\n      *param_2 = uVar1;\n      *param_3 = iVar3;\n      *param_4 = pbVar5;\n      return 1;\n    }\n    bVar2 = *pbVar5;\n  }\n  local_30 = *(byte **)(pbVar5 + 8);\n  local_2c = *(undefined4 *)(pbVar5 + 0xc);\n  local_28 = *(undefined4 *)(pbVar5 + 0x10);\n  local_24 = *(undefined4 *)(pbVar5 + 0x14);\n  local_20 = *(undefined4 *)(pbVar5 + 0x18);\n  if (((bVar2 & 4) == 0) && ((byte)local_20 != '\0')) {\n    if ((bVar2 & 8) != 0) {\n      return 0;\n    }\n    *pbVar5 = *pbVar5 | 8;\n    iVar3 = FUN_000228d0(&local_30);\n    *pbVar5 = *pbVar5 & 0xf7;\n    if (iVar3 == 0) {\n      return 0;\n    }\n    if ((byte)local_20 < 5) {\n      if ((byte)local_20 < 3) {\n        if ((byte)local_20 != 2) {\n          return 0;\n        }\n        goto LAB_000385ca;\n      }\nLAB_0003869c:\n      bVar2 = *local_30;\n      pbVar5 = local_30;\n      goto LAB_0003852f;\n    }\n    if ((byte)local_20 != 5) {\n      return 0;\n    }\nLAB_000385ca:\n    bVar2 = *pbVar5;\n    pbVar4 = pbVar5;\n    if ((bVar2 & 1) == 0) {\nLAB_00038692:\n      if (pbVar4[0x18] != 3) goto LAB_0003852f;\n      goto LAB_0003869c;\n    }\n    iVar3 = *(int *)(pbVar5 + 4);\n    if (iVar3 == DAT_0008185c) {\n      pbVar4 = *(byte **)(pbVar5 + 0xc);\n      goto LAB_00038692;\n    }\n    *param_1 = pbVar5;\nLAB_000385f6:\n    pbVar5 = *(byte **)(pbVar4 + 0xc);\n    if (DAT_0008185c != iVar3) {\n      uVar1 = *(undefined4 *)(pbVar4 + 0x14);\n      *param_2 = *(undefined4 *)(pbVar4 + 0x10);\n      param_2[1] = uVar1;\n      *param_3 = iVar3;\n      *param_4 = pbVar5;\n      if (DAT_000817a0 != iVar3) {\n        return 1;\n      }\n      goto LAB_00038626;\n    }\n    iVar3 = *(int *)(pbVar5 + 4);\n  }\n  else {\nLAB_0003852f:\n    iVar3 = *(int *)(pbVar5 + 4);\n    *param_1 = pbVar5;\n    pbVar4 = pbVar5;\n    if ((bVar2 & 1) != 0) goto LAB_000385f6;\n  }\n  iVar3 = *(int *)(iVar3 + 0x14);\n  *param_2 = local_28;\n  param_2[1] = local_24;\n  *param_3 = iVar3;\n  *param_4 = *(undefined4 *)(pbVar5 + 0x24);\n  if (DAT_000817a0 != iVar3) {\n    return 1;\n  }\nLAB_00038626:\n  if ((byte)local_20 == '\x02') {\n    *param_3 = (int)(PTR__bfd_std_section_00077f98 + 0x180);\n  }\n  else if ((byte)local_20 == '\x05') {\n    *param_3 = DAT_0008185c;\n  }\n  return 1;\n}" type_identifier (function_declarator "FUN_000384a0(undefined4 *param_1,undefined4 *param_2,int *param_3,undefined4 *param_4)" identifier (parameter_list "(undefined4 *param_1,undefined4 *param_2,int *param_3,undefined4 *param_4)" ( (parameter_declaration "undefined4 *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "undefined4 *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "int *param_3" primitive_type (pointer_declarator "*param_3" * identifier)) , (parameter_declaration "undefined4 *param_4" type_identifier (pointer_declarator "*param_4" * identifier)) ))) (compound_statement "{\n  undefined4 uVar1;\n  byte bVar2;\n  int iVar3;\n  byte *pbVar4;\n  byte *pbVar5;\n  byte *local_30;\n  undefined4 local_2c;\n  undefined4 local_28;\n  undefined4 local_24;\n  undefined4 local_20;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x384a9;\n  pbVar4 = (byte *)*param_1;\n  bVar2 = *pbVar4;\n  pbVar5 = pbVar4;\n  if ((bVar2 & 1) != 0) {\n    iVar3 = *(int *)(pbVar4 + 4);\n    pbVar5 = *(byte **)(pbVar4 + 0xc);\n    if (iVar3 != DAT_0008185c) {\n      uVar1 = *(undefined4 *)(pbVar4 + 0x10);\n      param_2[1] = *(undefined4 *)(pbVar4 + 0x14);\n      *param_2 = uVar1;\n      *param_3 = iVar3;\n      *param_4 = pbVar5;\n      return 1;\n    }\n    bVar2 = *pbVar5;\n  }\n  local_30 = *(byte **)(pbVar5 + 8);\n  local_2c = *(undefined4 *)(pbVar5 + 0xc);\n  local_28 = *(undefined4 *)(pbVar5 + 0x10);\n  local_24 = *(undefined4 *)(pbVar5 + 0x14);\n  local_20 = *(undefined4 *)(pbVar5 + 0x18);\n  if (((bVar2 & 4) == 0) && ((byte)local_20 != '\0')) {\n    if ((bVar2 & 8) != 0) {\n      return 0;\n    }\n    *pbVar5 = *pbVar5 | 8;\n    iVar3 = FUN_000228d0(&local_30);\n    *pbVar5 = *pbVar5 & 0xf7;\n    if (iVar3 == 0) {\n      return 0;\n    }\n    if ((byte)local_20 < 5) {\n      if ((byte)local_20 < 3) {\n        if ((byte)local_20 != 2) {\n          return 0;\n        }\n        goto LAB_000385ca;\n      }\nLAB_0003869c:\n      bVar2 = *local_30;\n      pbVar5 = local_30;\n      goto LAB_0003852f;\n    }\n    if ((byte)local_20 != 5) {\n      return 0;\n    }\nLAB_000385ca:\n    bVar2 = *pbVar5;\n    pbVar4 = pbVar5;\n    if ((bVar2 & 1) == 0) {\nLAB_00038692:\n      if (pbVar4[0x18] != 3) goto LAB_0003852f;\n      goto LAB_0003869c;\n    }\n    iVar3 = *(int *)(pbVar5 + 4);\n    if (iVar3 == DAT_0008185c) {\n      pbVar4 = *(byte **)(pbVar5 + 0xc);\n      goto LAB_00038692;\n    }\n    *param_1 = pbVar5;\nLAB_000385f6:\n    pbVar5 = *(byte **)(pbVar4 + 0xc);\n    if (DAT_0008185c != iVar3) {\n      uVar1 = *(undefined4 *)(pbVar4 + 0x14);\n      *param_2 = *(undefined4 *)(pbVar4 + 0x10);\n      param_2[1] = uVar1;\n      *param_3 = iVar3;\n      *param_4 = pbVar5;\n      if (DAT_000817a0 != iVar3) {\n        return 1;\n      }\n      goto LAB_00038626;\n    }\n    iVar3 = *(int *)(pbVar5 + 4);\n  }\n  else {\nLAB_0003852f:\n    iVar3 = *(int *)(pbVar5 + 4);\n    *param_1 = pbVar5;\n    pbVar4 = pbVar5;\n    if ((bVar2 & 1) != 0) goto LAB_000385f6;\n  }\n  iVar3 = *(int *)(iVar3 + 0x14);\n  *param_2 = local_28;\n  param_2[1] = local_24;\n  *param_3 = iVar3;\n  *param_4 = *(undefined4 *)(pbVar5 + 0x24);\n  if (DAT_000817a0 != iVar3) {\n    return 1;\n  }\nLAB_00038626:\n  if ((byte)local_20 == '\x02') {\n    *param_3 = (int)(PTR__bfd_std_section_00077f98 + 0x180);\n  }\n  else if ((byte)local_20 == '\x05') {\n    *param_3 = DAT_0008185c;\n  }\n  return 1;\n}" { (declaration "undefined4 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 "byte *local_30;" type_identifier (pointer_declarator "*local_30" * identifier) ;) (declaration "undefined4 local_2c;" type_identifier identifier ;) (declaration "undefined4 local_28;" type_identifier identifier ;) (declaration "undefined4 local_24;" type_identifier identifier ;) (declaration "undefined4 local_20;" type_identifier identifier ;) (declaration "undefined4 uStack_14;" type_identifier identifier ;) (expression_statement "uStack_14 = 0x384a9;" (assignment_expression "uStack_14 = 0x384a9" identifier = number_literal) ;) (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    iVar3 = *(int *)(pbVar4 + 4);\n    pbVar5 = *(byte **)(pbVar4 + 0xc);\n    if (iVar3 != DAT_0008185c) {\n      uVar1 = *(undefined4 *)(pbVar4 + 0x10);\n      param_2[1] = *(undefined4 *)(pbVar4 + 0x14);\n      *param_2 = uVar1;\n      *param_3 = iVar3;\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    iVar3 = *(int *)(pbVar4 + 4);\n    pbVar5 = *(byte **)(pbVar4 + 0xc);\n    if (iVar3 != DAT_0008185c) {\n      uVar1 = *(undefined4 *)(pbVar4 + 0x10);\n      param_2[1] = *(undefined4 *)(pbVar4 + 0x14);\n      *param_2 = uVar1;\n      *param_3 = iVar3;\n      *param_4 = pbVar5;\n      return 1;\n    }\n    bVar2 = *pbVar5;\n  }" { (expression_statement "iVar3 = *(int *)(pbVar4 + 4);" (assignment_expression "iVar3 = *(int *)(pbVar4 + 4)" identifier = (pointer_expression "*(int *)(pbVar4 + 4)" * (cast_expression "(int *)(pbVar4 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pbVar4 + 4)" ( (binary_expression "pbVar4 + 4" identifier + number_literal) ))))) ;) (expression_statement "pbVar5 = *(byte **)(pbVar4 + 0xc);" (assignment_expression "pbVar5 = *(byte **)(pbVar4 + 0xc)" identifier = (pointer_expression "*(byte **)(pbVar4 + 0xc)" * (cast_expression "(byte **)(pbVar4 + 0xc)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pbVar4 + 0xc)" ( (binary_expression "pbVar4 + 0xc" identifier + number_literal) ))))) ;) (if_statement "if (iVar3 != DAT_0008185c) {\n      uVar1 = *(undefined4 *)(pbVar4 + 0x10);\n      param_2[1] = *(undefined4 *)(pbVar4 + 0x14);\n      *param_2 = uVar1;\n      *param_3 = iVar3;\n      *param_4 = pbVar5;\n      return 1;\n    }" if (parenthesized_expression "(iVar3 != DAT_0008185c)" ( (binary_expression "iVar3 != DAT_0008185c" identifier != identifier) )) (compound_statement "{\n      uVar1 = *(undefined4 *)(pbVar4 + 0x10);\n      param_2[1] = *(undefined4 *)(pbVar4 + 0x14);\n      *param_2 = uVar1;\n      *param_3 = iVar3;\n      *param_4 = pbVar5;\n      return 1;\n    }" { (expression_statement "uVar1 = *(undefined4 *)(pbVar4 + 0x10);" (assignment_expression "uVar1 = *(undefined4 *)(pbVar4 + 0x10)" identifier = (pointer_expression "*(undefined4 *)(pbVar4 + 0x10)" * (cast_expression "(undefined4 *)(pbVar4 + 0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pbVar4 + 0x10)" ( (binary_expression "pbVar4 + 0x10" identifier + number_literal) ))))) ;) (expression_statement "param_2[1] = *(undefined4 *)(pbVar4 + 0x14);" (assignment_expression "param_2[1] = *(undefined4 *)(pbVar4 + 0x14)" (subscript_expression "param_2[1]" identifier [ number_literal ]) = (pointer_expression "*(undefined4 *)(pbVar4 + 0x14)" * (cast_expression "(undefined4 *)(pbVar4 + 0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pbVar4 + 0x14)" ( (binary_expression "pbVar4 + 0x14" identifier + number_literal) ))))) ;) (expression_statement "*param_2 = uVar1;" (assignment_expression "*param_2 = uVar1" (pointer_expression "*param_2" * identifier) = identifier) ;) (expression_statement "*param_3 = iVar3;" (assignment_expression "*param_3 = iVar3" (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_30 = *(byte **)(pbVar5 + 8);" (assignment_expression "local_30 = *(byte **)(pbVar5 + 8)" identifier = (pointer_expression "*(byte **)(pbVar5 + 8)" * (cast_expression "(byte **)(pbVar5 + 8)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pbVar5 + 8)" ( (binary_expression "pbVar5 + 8" identifier + number_literal) ))))) ;) (expression_statement "local_2c = *(undefined4 *)(pbVar5 + 0xc);" (assignment_expression "local_2c = *(undefined4 *)(pbVar5 + 0xc)" identifier = (pointer_expression "*(undefined4 *)(pbVar5 + 0xc)" * (cast_expression "(undefined4 *)(pbVar5 + 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pbVar5 + 0xc)" ( (binary_expression "pbVar5 + 0xc" identifier + number_literal) ))))) ;) (expression_statement "local_28 = *(undefined4 *)(pbVar5 + 0x10);" (assignment_expression "local_28 = *(undefined4 *)(pbVar5 + 0x10)" identifier = (pointer_expression "*(undefined4 *)(pbVar5 + 0x10)" * (cast_expression "(undefined4 *)(pbVar5 + 0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pbVar5 + 0x10)" ( (binary_expression "pbVar5 + 0x10" identifier + number_literal) ))))) ;) (expression_statement "local_24 = *(undefined4 *)(pbVar5 + 0x14);" (assignment_expression "local_24 = *(undefined4 *)(pbVar5 + 0x14)" identifier = (pointer_expression "*(undefined4 *)(pbVar5 + 0x14)" * (cast_expression "(undefined4 *)(pbVar5 + 0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pbVar5 + 0x14)" ( (binary_expression "pbVar5 + 0x14" identifier + number_literal) ))))) ;) (expression_statement "local_20 = *(undefined4 *)(pbVar5 + 0x18);" (assignment_expression "local_20 = *(undefined4 *)(pbVar5 + 0x18)" identifier = (pointer_expression "*(undefined4 *)(pbVar5 + 0x18)" * (cast_expression "(undefined4 *)(pbVar5 + 0x18)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pbVar5 + 0x18)" ( (binary_expression "pbVar5 + 0x18" identifier + number_literal) ))))) ;) (if_statement "if (((bVar2 & 4) == 0) && ((byte)local_20 != '\0')) {\n    if ((bVar2 & 8) != 0) {\n      return 0;\n    }\n    *pbVar5 = *pbVar5 | 8;\n    iVar3 = FUN_000228d0(&local_30);\n    *pbVar5 = *pbVar5 & 0xf7;\n    if (iVar3 == 0) {\n      return 0;\n    }\n    if ((byte)local_20 < 5) {\n      if ((byte)local_20 < 3) {\n        if ((byte)local_20 != 2) {\n          return 0;\n        }\n        goto LAB_000385ca;\n      }\nLAB_0003869c:\n      bVar2 = *local_30;\n      pbVar5 = local_30;\n      goto LAB_0003852f;\n    }\n    if ((byte)local_20 != 5) {\n      return 0;\n    }\nLAB_000385ca:\n    bVar2 = *pbVar5;\n    pbVar4 = pbVar5;\n    if ((bVar2 & 1) == 0) {\nLAB_00038692:\n      if (pbVar4[0x18] != 3) goto LAB_0003852f;\n      goto LAB_0003869c;\n    }\n    iVar3 = *(int *)(pbVar5 + 4);\n    if (iVar3 == DAT_0008185c) {\n      pbVar4 = *(byte **)(pbVar5 + 0xc);\n      goto LAB_00038692;\n    }\n    *param_1 = pbVar5;\nLAB_000385f6:\n    pbVar5 = *(byte **)(pbVar4 + 0xc);\n    if (DAT_0008185c != iVar3) {\n      uVar1 = *(undefined4 *)(pbVar4 + 0x14);\n      *param_2 = *(undefined4 *)(pbVar4 + 0x10);\n      param_2[1] = uVar1;\n      *param_3 = iVar3;\n      *param_4 = pbVar5;\n      if (DAT_000817a0 != iVar3) {\n        return 1;\n      }\n      goto LAB_00038626;\n    }\n    iVar3 = *(int *)(pbVar5 + 4);\n  }\n  else {\nLAB_0003852f:\n    iVar3 = *(int *)(pbVar5 + 4);\n    *param_1 = pbVar5;\n    pbVar4 = pbVar5;\n    if ((bVar2 & 1) != 0) goto LAB_000385f6;\n  }" if (parenthesized_expression "(((bVar2 & 4) == 0) && ((byte)local_20 != '\0'))" ( (binary_expression "((bVar2 & 4) == 0) && ((byte)local_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)local_20 != '\0')" ( (binary_expression "(byte)local_20 != '\0'" (cast_expression "(byte)local_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_000228d0(&local_30);\n    *pbVar5 = *pbVar5 & 0xf7;\n    if (iVar3 == 0) {\n      return 0;\n    }\n    if ((byte)local_20 < 5) {\n      if ((byte)local_20 < 3) {\n        if ((byte)local_20 != 2) {\n          return 0;\n        }\n        goto LAB_000385ca;\n      }\nLAB_0003869c:\n      bVar2 = *local_30;\n      pbVar5 = local_30;\n      goto LAB_0003852f;\n    }\n    if ((byte)local_20 != 5) {\n      return 0;\n    }\nLAB_000385ca:\n    bVar2 = *pbVar5;\n    pbVar4 = pbVar5;\n    if ((bVar2 & 1) == 0) {\nLAB_00038692:\n      if (pbVar4[0x18] != 3) goto LAB_0003852f;\n      goto LAB_0003869c;\n    }\n    iVar3 = *(int *)(pbVar5 + 4);\n    if (iVar3 == DAT_0008185c) {\n      pbVar4 = *(byte **)(pbVar5 + 0xc);\n      goto LAB_00038692;\n    }\n    *param_1 = pbVar5;\nLAB_000385f6:\n    pbVar5 = *(byte **)(pbVar4 + 0xc);\n    if (DAT_0008185c != iVar3) {\n      uVar1 = *(undefined4 *)(pbVar4 + 0x14);\n      *param_2 = *(undefined4 *)(pbVar4 + 0x10);\n      param_2[1] = uVar1;\n      *param_3 = iVar3;\n      *param_4 = pbVar5;\n      if (DAT_000817a0 != iVar3) {\n        return 1;\n      }\n      goto LAB_00038626;\n    }\n    iVar3 = *(int *)(pbVar5 + 4);\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_000228d0(&local_30);" (assignment_expression "iVar3 = FUN_000228d0(&local_30)" identifier = (call_expression "FUN_000228d0(&local_30)" identifier (argument_list "(&local_30)" ( (pointer_expression "&local_30" & 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)local_20 < 5) {\n      if ((byte)local_20 < 3) {\n        if ((byte)local_20 != 2) {\n          return 0;\n        }\n        goto LAB_000385ca;\n      }\nLAB_0003869c:\n      bVar2 = *local_30;\n      pbVar5 = local_30;\n      goto LAB_0003852f;\n    }" if (parenthesized_expression "((byte)local_20 < 5)" ( (binary_expression "(byte)local_20 < 5" (cast_expression "(byte)local_20" ( (type_descriptor "byte" type_identifier) ) identifier) < number_literal) )) (compound_statement "{\n      if ((byte)local_20 < 3) {\n        if ((byte)local_20 != 2) {\n          return 0;\n        }\n        goto LAB_000385ca;\n      }\nLAB_0003869c:\n      bVar2 = *local_30;\n      pbVar5 = local_30;\n      goto LAB_0003852f;\n    }" { (if_statement "if ((byte)local_20 < 3) {\n        if ((byte)local_20 != 2) {\n          return 0;\n        }\n        goto LAB_000385ca;\n      }" if (parenthesized_expression "((byte)local_20 < 3)" ( (binary_expression "(byte)local_20 < 3" (cast_expression "(byte)local_20" ( (type_descriptor "byte" type_identifier) ) identifier) < number_literal) )) (compound_statement "{\n        if ((byte)local_20 != 2) {\n          return 0;\n        }\n        goto LAB_000385ca;\n      }" { (if_statement "if ((byte)local_20 != 2) {\n          return 0;\n        }" if (parenthesized_expression "((byte)local_20 != 2)" ( (binary_expression "(byte)local_20 != 2" (cast_expression "(byte)local_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_000385ca;" goto statement_identifier ;) })) (labeled_statement "LAB_0003869c:\n      bVar2 = *local_30;" statement_identifier : (expression_statement "bVar2 = *local_30;" (assignment_expression "bVar2 = *local_30" identifier = (pointer_expression "*local_30" * identifier)) ;)) (expression_statement "pbVar5 = local_30;" (assignment_expression "pbVar5 = local_30" identifier = identifier) ;) (goto_statement "goto LAB_0003852f;" goto statement_identifier ;) })) (if_statement "if ((byte)local_20 != 5) {\n      return 0;\n    }" if (parenthesized_expression "((byte)local_20 != 5)" ( (binary_expression "(byte)local_20 != 5" (cast_expression "(byte)local_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_000385ca:\n    bVar2 = *pbVar5;" statement_identifier : (expression_statement "bVar2 = *pbVar5;" (assignment_expression "bVar2 = *pbVar5" identifier = (pointer_expression "*pbVar5" * identifier)) ;)) (expression_statement "pbVar4 = pbVar5;" (assignment_expression "pbVar4 = pbVar5" identifier = identifier) ;) (if_statement "if ((bVar2 & 1) == 0) {\nLAB_00038692:\n      if (pbVar4[0x18] != 3) goto LAB_0003852f;\n      goto LAB_0003869c;\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_00038692:\n      if (pbVar4[0x18] != 3) goto LAB_0003852f;\n      goto LAB_0003869c;\n    }" { (labeled_statement "LAB_00038692:\n      if (pbVar4[0x18] != 3) goto LAB_0003852f;" statement_identifier : (if_statement "if (pbVar4[0x18] != 3) goto LAB_0003852f;" if (parenthesized_expression "(pbVar4[0x18] != 3)" ( (binary_expression "pbVar4[0x18] != 3" (subscript_expression "pbVar4[0x18]" identifier [ number_literal ]) != number_literal) )) (goto_statement "goto LAB_0003852f;" goto statement_identifier ;))) (goto_statement "goto LAB_0003869c;" goto statement_identifier ;) })) (expression_statement "iVar3 = *(int *)(pbVar5 + 4);" (assignment_expression "iVar3 = *(int *)(pbVar5 + 4)" identifier = (pointer_expression "*(int *)(pbVar5 + 4)" * (cast_expression "(int *)(pbVar5 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pbVar5 + 4)" ( (binary_expression "pbVar5 + 4" identifier + number_literal) ))))) ;) (if_statement "if (iVar3 == DAT_0008185c) {\n      pbVar4 = *(byte **)(pbVar5 + 0xc);\n      goto LAB_00038692;\n    }" if (parenthesized_expression "(iVar3 == DAT_0008185c)" ( (binary_expression "iVar3 == DAT_0008185c" identifier == identifier) )) (compound_statement "{\n      pbVar4 = *(byte **)(pbVar5 + 0xc);\n      goto LAB_00038692;\n    }" { (expression_statement "pbVar4 = *(byte **)(pbVar5 + 0xc);" (assignment_expression "pbVar4 = *(byte **)(pbVar5 + 0xc)" identifier = (pointer_expression "*(byte **)(pbVar5 + 0xc)" * (cast_expression "(byte **)(pbVar5 + 0xc)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pbVar5 + 0xc)" ( (binary_expression "pbVar5 + 0xc" identifier + number_literal) ))))) ;) (goto_statement "goto LAB_00038692;" goto statement_identifier ;) })) (expression_statement "*param_1 = pbVar5;" (assignment_expression "*param_1 = pbVar5" (pointer_expression "*param_1" * identifier) = identifier) ;) (labeled_statement "LAB_000385f6:\n    pbVar5 = *(byte **)(pbVar4 + 0xc);" statement_identifier : (expression_statement "pbVar5 = *(byte **)(pbVar4 + 0xc);" (assignment_expression "pbVar5 = *(byte **)(pbVar4 + 0xc)" identifier = (pointer_expression "*(byte **)(pbVar4 + 0xc)" * (cast_expression "(byte **)(pbVar4 + 0xc)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pbVar4 + 0xc)" ( (binary_expression "pbVar4 + 0xc" identifier + number_literal) ))))) ;)) (if_statement "if (DAT_0008185c != iVar3) {\n      uVar1 = *(undefined4 *)(pbVar4 + 0x14);\n      *param_2 = *(undefined4 *)(pbVar4 + 0x10);\n      param_2[1] = uVar1;\n      *param_3 = iVar3;\n      *param_4 = pbVar5;\n      if (DAT_000817a0 != iVar3) {\n        return 1;\n      }\n      goto LAB_00038626;\n    }" if (parenthesized_expression "(DAT_0008185c != iVar3)" ( (binary_expression "DAT_0008185c != iVar3" identifier != identifier) )) (compound_statement "{\n      uVar1 = *(undefined4 *)(pbVar4 + 0x14);\n      *param_2 = *(undefined4 *)(pbVar4 + 0x10);\n      param_2[1] = uVar1;\n      *param_3 = iVar3;\n      *param_4 = pbVar5;\n      if (DAT_000817a0 != iVar3) {\n        return 1;\n      }\n      goto LAB_00038626;\n    }" { (expression_statement "uVar1 = *(undefined4 *)(pbVar4 + 0x14);" (assignment_expression "uVar1 = *(undefined4 *)(pbVar4 + 0x14)" identifier = (pointer_expression "*(undefined4 *)(pbVar4 + 0x14)" * (cast_expression "(undefined4 *)(pbVar4 + 0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pbVar4 + 0x14)" ( (binary_expression "pbVar4 + 0x14" identifier + number_literal) ))))) ;) (expression_statement "*param_2 = *(undefined4 *)(pbVar4 + 0x10);" (assignment_expression "*param_2 = *(undefined4 *)(pbVar4 + 0x10)" (pointer_expression "*param_2" * identifier) = (pointer_expression "*(undefined4 *)(pbVar4 + 0x10)" * (cast_expression "(undefined4 *)(pbVar4 + 0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pbVar4 + 0x10)" ( (binary_expression "pbVar4 + 0x10" identifier + number_literal) ))))) ;) (expression_statement "param_2[1] = uVar1;" (assignment_expression "param_2[1] = uVar1" (subscript_expression "param_2[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*param_3 = iVar3;" (assignment_expression "*param_3 = iVar3" (pointer_expression "*param_3" * identifier) = identifier) ;) (expression_statement "*param_4 = pbVar5;" (assignment_expression "*param_4 = pbVar5" (pointer_expression "*param_4" * identifier) = identifier) ;) (if_statement "if (DAT_000817a0 != iVar3) {\n        return 1;\n      }" if (parenthesized_expression "(DAT_000817a0 != iVar3)" ( (binary_expression "DAT_000817a0 != iVar3" identifier != identifier) )) (compound_statement "{\n        return 1;\n      }" { (return_statement "return 1;" return number_literal ;) })) (goto_statement "goto LAB_00038626;" goto statement_identifier ;) })) (expression_statement "iVar3 = *(int *)(pbVar5 + 4);" (assignment_expression "iVar3 = *(int *)(pbVar5 + 4)" identifier = (pointer_expression "*(int *)(pbVar5 + 4)" * (cast_expression "(int *)(pbVar5 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pbVar5 + 4)" ( (binary_expression "pbVar5 + 4" identifier + number_literal) ))))) ;) }) (else_clause "else {\nLAB_0003852f:\n    iVar3 = *(int *)(pbVar5 + 4);\n    *param_1 = pbVar5;\n    pbVar4 = pbVar5;\n    if ((bVar2 & 1) != 0) goto LAB_000385f6;\n  }" else (compound_statement "{\nLAB_0003852f:\n    iVar3 = *(int *)(pbVar5 + 4);\n    *param_1 = pbVar5;\n    pbVar4 = pbVar5;\n    if ((bVar2 & 1) != 0) goto LAB_000385f6;\n  }" { (labeled_statement "LAB_0003852f:\n    iVar3 = *(int *)(pbVar5 + 4);" statement_identifier : (expression_statement "iVar3 = *(int *)(pbVar5 + 4);" (assignment_expression "iVar3 = *(int *)(pbVar5 + 4)" identifier = (pointer_expression "*(int *)(pbVar5 + 4)" * (cast_expression "(int *)(pbVar5 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pbVar5 + 4)" ( (binary_expression "pbVar5 + 4" identifier + number_literal) ))))) ;)) (expression_statement "*param_1 = pbVar5;" (assignment_expression "*param_1 = pbVar5" (pointer_expression "*param_1" * identifier) = identifier) ;) (expression_statement "pbVar4 = pbVar5;" (assignment_expression "pbVar4 = pbVar5" identifier = identifier) ;) (if_statement "if ((bVar2 & 1) != 0) goto LAB_000385f6;" 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_000385f6;" goto statement_identifier ;)) }))) (expression_statement "iVar3 = *(int *)(iVar3 + 0x14);" (assignment_expression "iVar3 = *(int *)(iVar3 + 0x14)" identifier = (pointer_expression "*(int *)(iVar3 + 0x14)" * (cast_expression "(int *)(iVar3 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0x14)" ( (binary_expression "iVar3 + 0x14" identifier + number_literal) ))))) ;) (expression_statement "*param_2 = local_28;" (assignment_expression "*param_2 = local_28" (pointer_expression "*param_2" * identifier) = identifier) ;) (expression_statement "param_2[1] = local_24;" (assignment_expression "param_2[1] = local_24" (subscript_expression "param_2[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*param_3 = iVar3;" (assignment_expression "*param_3 = iVar3" (pointer_expression "*param_3" * identifier) = identifier) ;) (expression_statement "*param_4 = *(undefined4 *)(pbVar5 + 0x24);" (assignment_expression "*param_4 = *(undefined4 *)(pbVar5 + 0x24)" (pointer_expression "*param_4" * identifier) = (pointer_expression "*(undefined4 *)(pbVar5 + 0x24)" * (cast_expression "(undefined4 *)(pbVar5 + 0x24)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pbVar5 + 0x24)" ( (binary_expression "pbVar5 + 0x24" identifier + number_literal) ))))) ;) (if_statement "if (DAT_000817a0 != iVar3) {\n    return 1;\n  }" if (parenthesized_expression "(DAT_000817a0 != iVar3)" ( (binary_expression "DAT_000817a0 != iVar3" identifier != identifier) )) (compound_statement "{\n    return 1;\n  }" { (return_statement "return 1;" return number_literal ;) })) (labeled_statement "LAB_00038626:\n  if ((byte)local_20 == '\x02') {\n    *param_3 = (int)(PTR__bfd_std_section_00077f98 + 0x180);\n  }\n  else if ((byte)local_20 == '\x05') {\n    *param_3 = DAT_0008185c;\n  }" statement_identifier : (if_statement "if ((byte)local_20 == '\x02') {\n    *param_3 = (int)(PTR__bfd_std_section_00077f98 + 0x180);\n  }\n  else if ((byte)local_20 == '\x05') {\n    *param_3 = DAT_0008185c;\n  }" if (parenthesized_expression "((byte)local_20 == '\x02')" ( (binary_expression "(byte)local_20 == '\x02'" (cast_expression "(byte)local_20" ( (type_descriptor "byte" type_identifier) ) identifier) == (char_literal "'\x02'" ' escape_sequence ')) )) (compound_statement "{\n    *param_3 = (int)(PTR__bfd_std_section_00077f98 + 0x180);\n  }" { (expression_statement "*param_3 = (int)(PTR__bfd_std_section_00077f98 + 0x180);" (assignment_expression "*param_3 = (int)(PTR__bfd_std_section_00077f98 + 0x180)" (pointer_expression "*param_3" * identifier) = (cast_expression "(int)(PTR__bfd_std_section_00077f98 + 0x180)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(PTR__bfd_std_section_00077f98 + 0x180)" ( (binary_expression "PTR__bfd_std_section_00077f98 + 0x180" identifier + number_literal) )))) ;) }) (else_clause "else if ((byte)local_20 == '\x05') {\n    *param_3 = DAT_0008185c;\n  }" else (if_statement "if ((byte)local_20 == '\x05') {\n    *param_3 = DAT_0008185c;\n  }" if (parenthesized_expression "((byte)local_20 == '\x05')" ( (binary_expression "(byte)local_20 == '\x05'" (cast_expression "(byte)local_20" ( (type_descriptor "byte" type_identifier) ) identifier) == (char_literal "'\x05'" ' escape_sequence ')) )) (compound_statement "{\n    *param_3 = DAT_0008185c;\n  }" { (expression_statement "*param_3 = DAT_0008185c;" (assignment_expression "*param_3 = DAT_0008185c" (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 TYPE (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 TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (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 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 * (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 *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (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) ;) (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 = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (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)) ;)) (expression_statement (assignment_expression IDENT = 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 TYPE (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 IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (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 (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != IDENT) )) (compound_statement { (return_statement return LIT ;) })) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) }) (else_clause else (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;)) (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 TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != IDENT) )) (compound_statement { (return_statement return LIT ;) })) (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) = (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_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 "undefined4 FUN_000384a0(undefined4 *param_1,undefined4 *param_2,int *param_3,undefined4 *param_4)\n\n{\n  undefined4 uVar1;\n  byte bVar2;\n  int iVar3;\n  byte *pbVar4;\n  byte *pbVar5;\n  byte *local_30;\n  undefined4 local_2c;\n  undefined4 local_28;\n  undefined4 local_24;\n  undefined4 local_20;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x384a9;\n  pbVar4 = (byte *)*param_1;\n  bVar2 = *pbVar4;\n  pbVar5 = pbVar4;\n  if ((bVar2 & 1) != 0) {\n    iVar3 = *(int *)(pbVar4 + 4);\n    pbVar5 = *(byte **)(pbVar4 + 0xc);\n    if (iVar3 != DAT_0008185c) {\n      uVar1 = *(undefined4 *)(pbVar4 + 0x10);\n      param_2[1] = *(undefined4 *)(pbVar4 + 0x14);\n      *param_2 = uVar1;\n      *param_3 = iVar3;\n      *param_4 = pbVar5;\n      return 1;\n    }\n    bVar2 = *pbVar5;\n  }\n  local_30 = *(byte **)(pbVar5 + 8);\n  local_2c = *(undefined4 *)(pbVar5 + 0xc);\n  local_28 = *(undefined4 *)(pbVar5 + 0x10);\n  local_24 = *(undefined4 *)(pbVar5 + 0x14);\n  local_20 = *(undefined4 *)(pbVar5 + 0x18);\n  if (((bVar2 & 4) == 0) && ((byte)local_20 != '\0')) {\n    if ((bVar2 & 8) != 0) {\n      return 0;\n    }\n    *pbVar5 = *pbVar5 | 8;\n    iVar3 = FUN_000228d0(&local_30);\n    *pbVar5 = *pbVar5 & 0xf7;\n    if (iVar3 == 0) {\n      return 0;\n    }\n    if ((byte)local_20 < 5) {\n      if ((byte)local_20 < 3) {\n        if ((byte)local_20 != 2) {\n          return 0;\n        }\n        goto LAB_000385ca;\n      }\nLAB_0003869c:\n      bVar2 = *local_30;\n      pbVar5 = local_30;\n      goto LAB_0003852f;\n    }\n    if ((byte)local_20 != 5) {\n      return 0;\n    }\nLAB_000385ca:\n    bVar2 = *pbVar5;\n    pbVar4 = pbVar5;\n    if ((bVar2 & 1) == 0) {\nLAB_00038692:\n      if (pbVar4[0x18] != 3) goto LAB_0003852f;\n      goto LAB_0003869c;\n    }\n    iVar3 = *(int *)(pbVar5 + 4);\n    if (iVar3 == DAT_0008185c) {\n      pbVar4 = *(byte **)(pbVar5 + 0xc);\n      goto LAB_00038692;\n    }\n    *param_1 = pbVar5;\nLAB_000385f6:\n    pbVar5 = *(byte **)(pbVar4 + 0xc);\n    if (DAT_0008185c != iVar3) {\n      uVar1 = *(undefined4 *)(pbVar4 + 0x14);\n      *param_2 = *(undefined4 *)(pbVar4 + 0x10);\n      param_2[1] = uVar1;\n      *param_3 = iVar3;\n      *param_4 = pbVar5;\n      if (DAT_000817a0 != iVar3) {\n        return 1;\n      }\n      goto LAB_00038626;\n    }\n    iVar3 = *(int *)(pbVar5 + 4);\n  }\n  else {\nLAB_0003852f:\n    iVar3 = *(int *)(pbVar5 + 4);\n    *param_1 = pbVar5;\n    pbVar4 = pbVar5;\n    if ((bVar2 & 1) != 0) goto LAB_000385f6;\n  }\n  iVar3 = *(int *)(iVar3 + 0x14);\n  *param_2 = local_28;\n  param_2[1] = local_24;\n  *param_3 = iVar3;\n  *param_4 = *(undefined4 *)(pbVar5 + 0x24);\n  if (DAT_000817a0 != iVar3) {\n    return 1;\n  }\nLAB_00038626:\n  if ((byte)local_20 == '\x02') {\n    *param_3 = (int)(PTR__bfd_std_section_00077f98 + 0x180);\n  }\n  else if ((byte)local_20 == '\x05') {\n    *param_3 = DAT_0008185c;\n  }\n  return 1;\n}" (type_identifier "undefined4") (function_declarator "FUN_000384a0(undefined4 *param_1,undefined4 *param_2,int *param_3,undefined4 *param_4)" (identifier "FUN_000384a0") (parameter_list "(undefined4 *param_1,undefined4 *param_2,int *param_3,undefined4 *param_4)" (( "(") (parameter_declaration "undefined4 *param_1" (type_identifier "undefined4") (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) (, ",") (parameter_declaration "undefined4 *param_2" (type_identifier "undefined4") (pointer_declarator "*param_2" (* "*") (identifier "param_2"))) (, ",") (parameter_declaration "int *param_3" (primitive_type "int") (pointer_declarator "*param_3" (* "*") (identifier "param_3"))) (, ",") (parameter_declaration "undefined4 *param_4" (type_identifier "undefined4") (pointer_declarator "*param_4" (* "*") (identifier "param_4"))) () ")"))) (compound_statement "{\n  undefined4 uVar1;\n  byte bVar2;\n  int iVar3;\n  byte *pbVar4;\n  byte *pbVar5;\n  byte *local_30;\n  undefined4 local_2c;\n  undefined4 local_28;\n  undefined4 local_24;\n  undefined4 local_20;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x384a9;\n  pbVar4 = (byte *)*param_1;\n  bVar2 = *pbVar4;\n  pbVar5 = pbVar4;\n  if ((bVar2 & 1) != 0) {\n    iVar3 = *(int *)(pbVar4 + 4);\n    pbVar5 = *(byte **)(pbVar4 + 0xc);\n    if (iVar3 != DAT_0008185c) {\n      uVar1 = *(undefined4 *)(pbVar4 + 0x10);\n      param_2[1] = *(undefined4 *)(pbVar4 + 0x14);\n      *param_2 = uVar1;\n      *param_3 = iVar3;\n      *param_4 = pbVar5;\n      return 1;\n    }\n    bVar2 = *pbVar5;\n  }\n  local_30 = *(byte **)(pbVar5 + 8);\n  local_2c = *(undefined4 *)(pbVar5 + 0xc);\n  local_28 = *(undefined4 *)(pbVar5 + 0x10);\n  local_24 = *(undefined4 *)(pbVar5 + 0x14);\n  local_20 = *(undefined4 *)(pbVar5 + 0x18);\n  if (((bVar2 & 4) == 0) && ((byte)local_20 != '\0')) {\n    if ((bVar2 & 8) != 0) {\n      return 0;\n    }\n    *pbVar5 = *pbVar5 | 8;\n    iVar3 = FUN_000228d0(&local_30);\n    *pbVar5 = *pbVar5 & 0xf7;\n    if (iVar3 == 0) {\n      return 0;\n    }\n    if ((byte)local_20 < 5) {\n      if ((byte)local_20 < 3) {\n        if ((byte)local_20 != 2) {\n          return 0;\n        }\n        goto LAB_000385ca;\n      }\nLAB_0003869c:\n      bVar2 = *local_30;\n      pbVar5 = local_30;\n      goto LAB_0003852f;\n    }\n    if ((byte)local_20 != 5) {\n      return 0;\n    }\nLAB_000385ca:\n    bVar2 = *pbVar5;\n    pbVar4 = pbVar5;\n    if ((bVar2 & 1) == 0) {\nLAB_00038692:\n      if (pbVar4[0x18] != 3) goto LAB_0003852f;\n      goto LAB_0003869c;\n    }\n    iVar3 = *(int *)(pbVar5 + 4);\n    if (iVar3 == DAT_0008185c) {\n      pbVar4 = *(byte **)(pbVar5 + 0xc);\n      goto LAB_00038692;\n    }\n    *param_1 = pbVar5;\nLAB_000385f6:\n    pbVar5 = *(byte **)(pbVar4 + 0xc);\n    if (DAT_0008185c != iVar3) {\n      uVar1 = *(undefined4 *)(pbVar4 + 0x14);\n      *param_2 = *(undefined4 *)(pbVar4 + 0x10);\n      param_2[1] = uVar1;\n      *param_3 = iVar3;\n      *param_4 = pbVar5;\n      if (DAT_000817a0 != iVar3) {\n        return 1;\n      }\n      goto LAB_00038626;\n    }\n    iVar3 = *(int *)(pbVar5 + 4);\n  }\n  else {\nLAB_0003852f:\n    iVar3 = *(int *)(pbVar5 + 4);\n    *param_1 = pbVar5;\n    pbVar4 = pbVar5;\n    if ((bVar2 & 1) != 0) goto LAB_000385f6;\n  }\n  iVar3 = *(int *)(iVar3 + 0x14);\n  *param_2 = local_28;\n  param_2[1] = local_24;\n  *param_3 = iVar3;\n  *param_4 = *(undefined4 *)(pbVar5 + 0x24);\n  if (DAT_000817a0 != iVar3) {\n    return 1;\n  }\nLAB_00038626:\n  if ((byte)local_20 == '\x02') {\n    *param_3 = (int)(PTR__bfd_std_section_00077f98 + 0x180);\n  }\n  else if ((byte)local_20 == '\x05') {\n    *param_3 = DAT_0008185c;\n  }\n  return 1;\n}" ({ "{") (declaration "undefined4 uVar1;" (type_identifier "undefined4") (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 "byte *local_30;" (type_identifier "byte") (pointer_declarator "*local_30" (* "*") (identifier "local_30")) (; ";")) (declaration "undefined4 local_2c;" (type_identifier "undefined4") (identifier "local_2c") (; ";")) (declaration "undefined4 local_28;" (type_identifier "undefined4") (identifier "local_28") (; ";")) (declaration "undefined4 local_24;" (type_identifier "undefined4") (identifier "local_24") (; ";")) (declaration "undefined4 local_20;" (type_identifier "undefined4") (identifier "local_20") (; ";")) (declaration "undefined4 uStack_14;" (type_identifier "undefined4") (identifier "uStack_14") (; ";")) (expression_statement "uStack_14 = 0x384a9;" (assignment_expression "uStack_14 = 0x384a9" (identifier "uStack_14") (= "=") (number_literal "0x384a9")) (; ";")) (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    iVar3 = *(int *)(pbVar4 + 4);\n    pbVar5 = *(byte **)(pbVar4 + 0xc);\n    if (iVar3 != DAT_0008185c) {\n      uVar1 = *(undefined4 *)(pbVar4 + 0x10);\n      param_2[1] = *(undefined4 *)(pbVar4 + 0x14);\n      *param_2 = uVar1;\n      *param_3 = iVar3;\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    iVar3 = *(int *)(pbVar4 + 4);\n    pbVar5 = *(byte **)(pbVar4 + 0xc);\n    if (iVar3 != DAT_0008185c) {\n      uVar1 = *(undefined4 *)(pbVar4 + 0x10);\n      param_2[1] = *(undefined4 *)(pbVar4 + 0x14);\n      *param_2 = uVar1;\n      *param_3 = iVar3;\n      *param_4 = pbVar5;\n      return 1;\n    }\n    bVar2 = *pbVar5;\n  }" ({ "{") (expression_statement "iVar3 = *(int *)(pbVar4 + 4);" (assignment_expression "iVar3 = *(int *)(pbVar4 + 4)" (identifier "iVar3") (= "=") (pointer_expression "*(int *)(pbVar4 + 4)" (* "*") (cast_expression "(int *)(pbVar4 + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(pbVar4 + 4)" (( "(") (binary_expression "pbVar4 + 4" (identifier "pbVar4") (+ "+") (number_literal "4")) () ")"))))) (; ";")) (expression_statement "pbVar5 = *(byte **)(pbVar4 + 0xc);" (assignment_expression "pbVar5 = *(byte **)(pbVar4 + 0xc)" (identifier "pbVar5") (= "=") (pointer_expression "*(byte **)(pbVar4 + 0xc)" (* "*") (cast_expression "(byte **)(pbVar4 + 0xc)" (( "(") (type_descriptor "byte **" (type_identifier "byte") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(pbVar4 + 0xc)" (( "(") (binary_expression "pbVar4 + 0xc" (identifier "pbVar4") (+ "+") (number_literal "0xc")) () ")"))))) (; ";")) (if_statement "if (iVar3 != DAT_0008185c) {\n      uVar1 = *(undefined4 *)(pbVar4 + 0x10);\n      param_2[1] = *(undefined4 *)(pbVar4 + 0x14);\n      *param_2 = uVar1;\n      *param_3 = iVar3;\n      *param_4 = pbVar5;\n      return 1;\n    }" (if "if") (parenthesized_expression "(iVar3 != DAT_0008185c)" (( "(") (binary_expression "iVar3 != DAT_0008185c" (identifier "iVar3") (!= "!=") (identifier "DAT_0008185c")) () ")")) (compound_statement "{\n      uVar1 = *(undefined4 *)(pbVar4 + 0x10);\n      param_2[1] = *(undefined4 *)(pbVar4 + 0x14);\n      *param_2 = uVar1;\n      *param_3 = iVar3;\n      *param_4 = pbVar5;\n      return 1;\n    }" ({ "{") (expression_statement "uVar1 = *(undefined4 *)(pbVar4 + 0x10);" (assignment_expression "uVar1 = *(undefined4 *)(pbVar4 + 0x10)" (identifier "uVar1") (= "=") (pointer_expression "*(undefined4 *)(pbVar4 + 0x10)" (* "*") (cast_expression "(undefined4 *)(pbVar4 + 0x10)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(pbVar4 + 0x10)" (( "(") (binary_expression "pbVar4 + 0x10" (identifier "pbVar4") (+ "+") (number_literal "0x10")) () ")"))))) (; ";")) (expression_statement "param_2[1] = *(undefined4 *)(pbVar4 + 0x14);" (assignment_expression "param_2[1] = *(undefined4 *)(pbVar4 + 0x14)" (subscript_expression "param_2[1]" (identifier "param_2") ([ "[") (number_literal "1") (] "]")) (= "=") (pointer_expression "*(undefined4 *)(pbVar4 + 0x14)" (* "*") (cast_expression "(undefined4 *)(pbVar4 + 0x14)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(pbVar4 + 0x14)" (( "(") (binary_expression "pbVar4 + 0x14" (identifier "pbVar4") (+ "+") (number_literal "0x14")) () ")"))))) (; ";")) (expression_statement "*param_2 = uVar1;" (assignment_expression "*param_2 = uVar1" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (= "=") (identifier "uVar1")) (; ";")) (expression_statement "*param_3 = iVar3;" (assignment_expression "*param_3 = iVar3" (pointer_expression "*param_3" (* "*") (identifier "param_3")) (= "=") (identifier "iVar3")) (; ";")) (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_30 = *(byte **)(pbVar5 + 8);" (assignment_expression "local_30 = *(byte **)(pbVar5 + 8)" (identifier "local_30") (= "=") (pointer_expression "*(byte **)(pbVar5 + 8)" (* "*") (cast_expression "(byte **)(pbVar5 + 8)" (( "(") (type_descriptor "byte **" (type_identifier "byte") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(pbVar5 + 8)" (( "(") (binary_expression "pbVar5 + 8" (identifier "pbVar5") (+ "+") (number_literal "8")) () ")"))))) (; ";")) (expression_statement "local_2c = *(undefined4 *)(pbVar5 + 0xc);" (assignment_expression "local_2c = *(undefined4 *)(pbVar5 + 0xc)" (identifier "local_2c") (= "=") (pointer_expression "*(undefined4 *)(pbVar5 + 0xc)" (* "*") (cast_expression "(undefined4 *)(pbVar5 + 0xc)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(pbVar5 + 0xc)" (( "(") (binary_expression "pbVar5 + 0xc" (identifier "pbVar5") (+ "+") (number_literal "0xc")) () ")"))))) (; ";")) (expression_statement "local_28 = *(undefined4 *)(pbVar5 + 0x10);" (assignment_expression "local_28 = *(undefined4 *)(pbVar5 + 0x10)" (identifier "local_28") (= "=") (pointer_expression "*(undefined4 *)(pbVar5 + 0x10)" (* "*") (cast_expression "(undefined4 *)(pbVar5 + 0x10)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(pbVar5 + 0x10)" (( "(") (binary_expression "pbVar5 + 0x10" (identifier "pbVar5") (+ "+") (number_literal "0x10")) () ")"))))) (; ";")) (expression_statement "local_24 = *(undefined4 *)(pbVar5 + 0x14);" (assignment_expression "local_24 = *(undefined4 *)(pbVar5 + 0x14)" (identifier "local_24") (= "=") (pointer_expression "*(undefined4 *)(pbVar5 + 0x14)" (* "*") (cast_expression "(undefined4 *)(pbVar5 + 0x14)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(pbVar5 + 0x14)" (( "(") (binary_expression "pbVar5 + 0x14" (identifier "pbVar5") (+ "+") (number_literal "0x14")) () ")"))))) (; ";")) (expression_statement "local_20 = *(undefined4 *)(pbVar5 + 0x18);" (assignment_expression "local_20 = *(undefined4 *)(pbVar5 + 0x18)" (identifier "local_20") (= "=") (pointer_expression "*(undefined4 *)(pbVar5 + 0x18)" (* "*") (cast_expression "(undefined4 *)(pbVar5 + 0x18)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(pbVar5 + 0x18)" (( "(") (binary_expression "pbVar5 + 0x18" (identifier "pbVar5") (+ "+") (number_literal "0x18")) () ")"))))) (; ";")) (if_statement "if (((bVar2 & 4) == 0) && ((byte)local_20 != '\0')) {\n    if ((bVar2 & 8) != 0) {\n      return 0;\n    }\n    *pbVar5 = *pbVar5 | 8;\n    iVar3 = FUN_000228d0(&local_30);\n    *pbVar5 = *pbVar5 & 0xf7;\n    if (iVar3 == 0) {\n      return 0;\n    }\n    if ((byte)local_20 < 5) {\n      if ((byte)local_20 < 3) {\n        if ((byte)local_20 != 2) {\n          return 0;\n        }\n        goto LAB_000385ca;\n      }\nLAB_0003869c:\n      bVar2 = *local_30;\n      pbVar5 = local_30;\n      goto LAB_0003852f;\n    }\n    if ((byte)local_20 != 5) {\n      return 0;\n    }\nLAB_000385ca:\n    bVar2 = *pbVar5;\n    pbVar4 = pbVar5;\n    if ((bVar2 & 1) == 0) {\nLAB_00038692:\n      if (pbVar4[0x18] != 3) goto LAB_0003852f;\n      goto LAB_0003869c;\n    }\n    iVar3 = *(int *)(pbVar5 + 4);\n    if (iVar3 == DAT_0008185c) {\n      pbVar4 = *(byte **)(pbVar5 + 0xc);\n      goto LAB_00038692;\n    }\n    *param_1 = pbVar5;\nLAB_000385f6:\n    pbVar5 = *(byte **)(pbVar4 + 0xc);\n    if (DAT_0008185c != iVar3) {\n      uVar1 = *(undefined4 *)(pbVar4 + 0x14);\n      *param_2 = *(undefined4 *)(pbVar4 + 0x10);\n      param_2[1] = uVar1;\n      *param_3 = iVar3;\n      *param_4 = pbVar5;\n      if (DAT_000817a0 != iVar3) {\n        return 1;\n      }\n      goto LAB_00038626;\n    }\n    iVar3 = *(int *)(pbVar5 + 4);\n  }\n  else {\nLAB_0003852f:\n    iVar3 = *(int *)(pbVar5 + 4);\n    *param_1 = pbVar5;\n    pbVar4 = pbVar5;\n    if ((bVar2 & 1) != 0) goto LAB_000385f6;\n  }" (if "if") (parenthesized_expression "(((bVar2 & 4) == 0) && ((byte)local_20 != '\0'))" (( "(") (binary_expression "((bVar2 & 4) == 0) && ((byte)local_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)local_20 != '\0')" (( "(") (binary_expression "(byte)local_20 != '\0'" (cast_expression "(byte)local_20" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "local_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_000228d0(&local_30);\n    *pbVar5 = *pbVar5 & 0xf7;\n    if (iVar3 == 0) {\n      return 0;\n    }\n    if ((byte)local_20 < 5) {\n      if ((byte)local_20 < 3) {\n        if ((byte)local_20 != 2) {\n          return 0;\n        }\n        goto LAB_000385ca;\n      }\nLAB_0003869c:\n      bVar2 = *local_30;\n      pbVar5 = local_30;\n      goto LAB_0003852f;\n    }\n    if ((byte)local_20 != 5) {\n      return 0;\n    }\nLAB_000385ca:\n    bVar2 = *pbVar5;\n    pbVar4 = pbVar5;\n    if ((bVar2 & 1) == 0) {\nLAB_00038692:\n      if (pbVar4[0x18] != 3) goto LAB_0003852f;\n      goto LAB_0003869c;\n    }\n    iVar3 = *(int *)(pbVar5 + 4);\n    if (iVar3 == DAT_0008185c) {\n      pbVar4 = *(byte **)(pbVar5 + 0xc);\n      goto LAB_00038692;\n    }\n    *param_1 = pbVar5;\nLAB_000385f6:\n    pbVar5 = *(byte **)(pbVar4 + 0xc);\n    if (DAT_0008185c != iVar3) {\n      uVar1 = *(undefined4 *)(pbVar4 + 0x14);\n      *param_2 = *(undefined4 *)(pbVar4 + 0x10);\n      param_2[1] = uVar1;\n      *param_3 = iVar3;\n      *param_4 = pbVar5;\n      if (DAT_000817a0 != iVar3) {\n        return 1;\n      }\n      goto LAB_00038626;\n    }\n    iVar3 = *(int *)(pbVar5 + 4);\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_000228d0(&local_30);" (assignment_expression "iVar3 = FUN_000228d0(&local_30)" (identifier "iVar3") (= "=") (call_expression "FUN_000228d0(&local_30)" (identifier "FUN_000228d0") (argument_list "(&local_30)" (( "(") (pointer_expression "&local_30" (& "&") (identifier "local_30")) () ")")))) (; ";")) (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)local_20 < 5) {\n      if ((byte)local_20 < 3) {\n        if ((byte)local_20 != 2) {\n          return 0;\n        }\n        goto LAB_000385ca;\n      }\nLAB_0003869c:\n      bVar2 = *local_30;\n      pbVar5 = local_30;\n      goto LAB_0003852f;\n    }" (if "if") (parenthesized_expression "((byte)local_20 < 5)" (( "(") (binary_expression "(byte)local_20 < 5" (cast_expression "(byte)local_20" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "local_20")) (< "<") (number_literal "5")) () ")")) (compound_statement "{\n      if ((byte)local_20 < 3) {\n        if ((byte)local_20 != 2) {\n          return 0;\n        }\n        goto LAB_000385ca;\n      }\nLAB_0003869c:\n      bVar2 = *local_30;\n      pbVar5 = local_30;\n      goto LAB_0003852f;\n    }" ({ "{") (if_statement "if ((byte)local_20 < 3) {\n        if ((byte)local_20 != 2) {\n          return 0;\n        }\n        goto LAB_000385ca;\n      }" (if "if") (parenthesized_expression "((byte)local_20 < 3)" (( "(") (binary_expression "(byte)local_20 < 3" (cast_expression "(byte)local_20" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "local_20")) (< "<") (number_literal "3")) () ")")) (compound_statement "{\n        if ((byte)local_20 != 2) {\n          return 0;\n        }\n        goto LAB_000385ca;\n      }" ({ "{") (if_statement "if ((byte)local_20 != 2) {\n          return 0;\n        }" (if "if") (parenthesized_expression "((byte)local_20 != 2)" (( "(") (binary_expression "(byte)local_20 != 2" (cast_expression "(byte)local_20" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "local_20")) (!= "!=") (number_literal "2")) () ")")) (compound_statement "{\n          return 0;\n        }" ({ "{") (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (goto_statement "goto LAB_000385ca;" (goto "goto") (statement_identifier "LAB_000385ca") (; ";")) (} "}"))) (labeled_statement "LAB_0003869c:\n      bVar2 = *local_30;" (statement_identifier "LAB_0003869c") (: ":") (expression_statement "bVar2 = *local_30;" (assignment_expression "bVar2 = *local_30" (identifier "bVar2") (= "=") (pointer_expression "*local_30" (* "*") (identifier "local_30"))) (; ";"))) (expression_statement "pbVar5 = local_30;" (assignment_expression "pbVar5 = local_30" (identifier "pbVar5") (= "=") (identifier "local_30")) (; ";")) (goto_statement "goto LAB_0003852f;" (goto "goto") (statement_identifier "LAB_0003852f") (; ";")) (} "}"))) (if_statement "if ((byte)local_20 != 5) {\n      return 0;\n    }" (if "if") (parenthesized_expression "((byte)local_20 != 5)" (( "(") (binary_expression "(byte)local_20 != 5" (cast_expression "(byte)local_20" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "local_20")) (!= "!=") (number_literal "5")) () ")")) (compound_statement "{\n      return 0;\n    }" ({ "{") (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (labeled_statement "LAB_000385ca:\n    bVar2 = *pbVar5;" (statement_identifier "LAB_000385ca") (: ":") (expression_statement "bVar2 = *pbVar5;" (assignment_expression "bVar2 = *pbVar5" (identifier "bVar2") (= "=") (pointer_expression "*pbVar5" (* "*") (identifier "pbVar5"))) (; ";"))) (expression_statement "pbVar4 = pbVar5;" (assignment_expression "pbVar4 = pbVar5" (identifier "pbVar4") (= "=") (identifier "pbVar5")) (; ";")) (if_statement "if ((bVar2 & 1) == 0) {\nLAB_00038692:\n      if (pbVar4[0x18] != 3) goto LAB_0003852f;\n      goto LAB_0003869c;\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_00038692:\n      if (pbVar4[0x18] != 3) goto LAB_0003852f;\n      goto LAB_0003869c;\n    }" ({ "{") (labeled_statement "LAB_00038692:\n      if (pbVar4[0x18] != 3) goto LAB_0003852f;" (statement_identifier "LAB_00038692") (: ":") (if_statement "if (pbVar4[0x18] != 3) goto LAB_0003852f;" (if "if") (parenthesized_expression "(pbVar4[0x18] != 3)" (( "(") (binary_expression "pbVar4[0x18] != 3" (subscript_expression "pbVar4[0x18]" (identifier "pbVar4") ([ "[") (number_literal "0x18") (] "]")) (!= "!=") (number_literal "3")) () ")")) (goto_statement "goto LAB_0003852f;" (goto "goto") (statement_identifier "LAB_0003852f") (; ";")))) (goto_statement "goto LAB_0003869c;" (goto "goto") (statement_identifier "LAB_0003869c") (; ";")) (} "}"))) (expression_statement "iVar3 = *(int *)(pbVar5 + 4);" (assignment_expression "iVar3 = *(int *)(pbVar5 + 4)" (identifier "iVar3") (= "=") (pointer_expression "*(int *)(pbVar5 + 4)" (* "*") (cast_expression "(int *)(pbVar5 + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(pbVar5 + 4)" (( "(") (binary_expression "pbVar5 + 4" (identifier "pbVar5") (+ "+") (number_literal "4")) () ")"))))) (; ";")) (if_statement "if (iVar3 == DAT_0008185c) {\n      pbVar4 = *(byte **)(pbVar5 + 0xc);\n      goto LAB_00038692;\n    }" (if "if") (parenthesized_expression "(iVar3 == DAT_0008185c)" (( "(") (binary_expression "iVar3 == DAT_0008185c" (identifier "iVar3") (== "==") (identifier "DAT_0008185c")) () ")")) (compound_statement "{\n      pbVar4 = *(byte **)(pbVar5 + 0xc);\n      goto LAB_00038692;\n    }" ({ "{") (expression_statement "pbVar4 = *(byte **)(pbVar5 + 0xc);" (assignment_expression "pbVar4 = *(byte **)(pbVar5 + 0xc)" (identifier "pbVar4") (= "=") (pointer_expression "*(byte **)(pbVar5 + 0xc)" (* "*") (cast_expression "(byte **)(pbVar5 + 0xc)" (( "(") (type_descriptor "byte **" (type_identifier "byte") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(pbVar5 + 0xc)" (( "(") (binary_expression "pbVar5 + 0xc" (identifier "pbVar5") (+ "+") (number_literal "0xc")) () ")"))))) (; ";")) (goto_statement "goto LAB_00038692;" (goto "goto") (statement_identifier "LAB_00038692") (; ";")) (} "}"))) (expression_statement "*param_1 = pbVar5;" (assignment_expression "*param_1 = pbVar5" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (= "=") (identifier "pbVar5")) (; ";")) (labeled_statement "LAB_000385f6:\n    pbVar5 = *(byte **)(pbVar4 + 0xc);" (statement_identifier "LAB_000385f6") (: ":") (expression_statement "pbVar5 = *(byte **)(pbVar4 + 0xc);" (assignment_expression "pbVar5 = *(byte **)(pbVar4 + 0xc)" (identifier "pbVar5") (= "=") (pointer_expression "*(byte **)(pbVar4 + 0xc)" (* "*") (cast_expression "(byte **)(pbVar4 + 0xc)" (( "(") (type_descriptor "byte **" (type_identifier "byte") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(pbVar4 + 0xc)" (( "(") (binary_expression "pbVar4 + 0xc" (identifier "pbVar4") (+ "+") (number_literal "0xc")) () ")"))))) (; ";"))) (if_statement "if (DAT_0008185c != iVar3) {\n      uVar1 = *(undefined4 *)(pbVar4 + 0x14);\n      *param_2 = *(undefined4 *)(pbVar4 + 0x10);\n      param_2[1] = uVar1;\n      *param_3 = iVar3;\n      *param_4 = pbVar5;\n      if (DAT_000817a0 != iVar3) {\n        return 1;\n      }\n      goto LAB_00038626;\n    }" (if "if") (parenthesized_expression "(DAT_0008185c != iVar3)" (( "(") (binary_expression "DAT_0008185c != iVar3" (identifier "DAT_0008185c") (!= "!=") (identifier "iVar3")) () ")")) (compound_statement "{\n      uVar1 = *(undefined4 *)(pbVar4 + 0x14);\n      *param_2 = *(undefined4 *)(pbVar4 + 0x10);\n      param_2[1] = uVar1;\n      *param_3 = iVar3;\n      *param_4 = pbVar5;\n      if (DAT_000817a0 != iVar3) {\n        return 1;\n      }\n      goto LAB_00038626;\n    }" ({ "{") (expression_statement "uVar1 = *(undefined4 *)(pbVar4 + 0x14);" (assignment_expression "uVar1 = *(undefined4 *)(pbVar4 + 0x14)" (identifier "uVar1") (= "=") (pointer_expression "*(undefined4 *)(pbVar4 + 0x14)" (* "*") (cast_expression "(undefined4 *)(pbVar4 + 0x14)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(pbVar4 + 0x14)" (( "(") (binary_expression "pbVar4 + 0x14" (identifier "pbVar4") (+ "+") (number_literal "0x14")) () ")"))))) (; ";")) (expression_statement "*param_2 = *(undefined4 *)(pbVar4 + 0x10);" (assignment_expression "*param_2 = *(undefined4 *)(pbVar4 + 0x10)" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (= "=") (pointer_expression "*(undefined4 *)(pbVar4 + 0x10)" (* "*") (cast_expression "(undefined4 *)(pbVar4 + 0x10)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(pbVar4 + 0x10)" (( "(") (binary_expression "pbVar4 + 0x10" (identifier "pbVar4") (+ "+") (number_literal "0x10")) () ")"))))) (; ";")) (expression_statement "param_2[1] = uVar1;" (assignment_expression "param_2[1] = uVar1" (subscript_expression "param_2[1]" (identifier "param_2") ([ "[") (number_literal "1") (] "]")) (= "=") (identifier "uVar1")) (; ";")) (expression_statement "*param_3 = iVar3;" (assignment_expression "*param_3 = iVar3" (pointer_expression "*param_3" (* "*") (identifier "param_3")) (= "=") (identifier "iVar3")) (; ";")) (expression_statement "*param_4 = pbVar5;" (assignment_expression "*param_4 = pbVar5" (pointer_expression "*param_4" (* "*") (identifier "param_4")) (= "=") (identifier "pbVar5")) (; ";")) (if_statement "if (DAT_000817a0 != iVar3) {\n        return 1;\n      }" (if "if") (parenthesized_expression "(DAT_000817a0 != iVar3)" (( "(") (binary_expression "DAT_000817a0 != iVar3" (identifier "DAT_000817a0") (!= "!=") (identifier "iVar3")) () ")")) (compound_statement "{\n        return 1;\n      }" ({ "{") (return_statement "return 1;" (return "return") (number_literal "1") (; ";")) (} "}"))) (goto_statement "goto LAB_00038626;" (goto "goto") (statement_identifier "LAB_00038626") (; ";")) (} "}"))) (expression_statement "iVar3 = *(int *)(pbVar5 + 4);" (assignment_expression "iVar3 = *(int *)(pbVar5 + 4)" (identifier "iVar3") (= "=") (pointer_expression "*(int *)(pbVar5 + 4)" (* "*") (cast_expression "(int *)(pbVar5 + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(pbVar5 + 4)" (( "(") (binary_expression "pbVar5 + 4" (identifier "pbVar5") (+ "+") (number_literal "4")) () ")"))))) (; ";")) (} "}")) (else_clause "else {\nLAB_0003852f:\n    iVar3 = *(int *)(pbVar5 + 4);\n    *param_1 = pbVar5;\n    pbVar4 = pbVar5;\n    if ((bVar2 & 1) != 0) goto LAB_000385f6;\n  }" (else "else") (compound_statement "{\nLAB_0003852f:\n    iVar3 = *(int *)(pbVar5 + 4);\n    *param_1 = pbVar5;\n    pbVar4 = pbVar5;\n    if ((bVar2 & 1) != 0) goto LAB_000385f6;\n  }" ({ "{") (labeled_statement "LAB_0003852f:\n    iVar3 = *(int *)(pbVar5 + 4);" (statement_identifier "LAB_0003852f") (: ":") (expression_statement "iVar3 = *(int *)(pbVar5 + 4);" (assignment_expression "iVar3 = *(int *)(pbVar5 + 4)" (identifier "iVar3") (= "=") (pointer_expression "*(int *)(pbVar5 + 4)" (* "*") (cast_expression "(int *)(pbVar5 + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(pbVar5 + 4)" (( "(") (binary_expression "pbVar5 + 4" (identifier "pbVar5") (+ "+") (number_literal "4")) () ")"))))) (; ";"))) (expression_statement "*param_1 = pbVar5;" (assignment_expression "*param_1 = pbVar5" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (= "=") (identifier "pbVar5")) (; ";")) (expression_statement "pbVar4 = pbVar5;" (assignment_expression "pbVar4 = pbVar5" (identifier "pbVar4") (= "=") (identifier "pbVar5")) (; ";")) (if_statement "if ((bVar2 & 1) != 0) goto LAB_000385f6;" (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_000385f6;" (goto "goto") (statement_identifier "LAB_000385f6") (; ";"))) (} "}")))) (expression_statement "iVar3 = *(int *)(iVar3 + 0x14);" (assignment_expression "iVar3 = *(int *)(iVar3 + 0x14)" (identifier "iVar3") (= "=") (pointer_expression "*(int *)(iVar3 + 0x14)" (* "*") (cast_expression "(int *)(iVar3 + 0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar3 + 0x14)" (( "(") (binary_expression "iVar3 + 0x14" (identifier "iVar3") (+ "+") (number_literal "0x14")) () ")"))))) (; ";")) (expression_statement "*param_2 = local_28;" (assignment_expression "*param_2 = local_28" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (= "=") (identifier "local_28")) (; ";")) (expression_statement "param_2[1] = local_24;" (assignment_expression "param_2[1] = local_24" (subscript_expression "param_2[1]" (identifier "param_2") ([ "[") (number_literal "1") (] "]")) (= "=") (identifier "local_24")) (; ";")) (expression_statement "*param_3 = iVar3;" (assignment_expression "*param_3 = iVar3" (pointer_expression "*param_3" (* "*") (identifier "param_3")) (= "=") (identifier "iVar3")) (; ";")) (expression_statement "*param_4 = *(undefined4 *)(pbVar5 + 0x24);" (assignment_expression "*param_4 = *(undefined4 *)(pbVar5 + 0x24)" (pointer_expression "*param_4" (* "*") (identifier "param_4")) (= "=") (pointer_expression "*(undefined4 *)(pbVar5 + 0x24)" (* "*") (cast_expression "(undefined4 *)(pbVar5 + 0x24)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(pbVar5 + 0x24)" (( "(") (binary_expression "pbVar5 + 0x24" (identifier "pbVar5") (+ "+") (number_literal "0x24")) () ")"))))) (; ";")) (if_statement "if (DAT_000817a0 != iVar3) {\n    return 1;\n  }" (if "if") (parenthesized_expression "(DAT_000817a0 != iVar3)" (( "(") (binary_expression "DAT_000817a0 != iVar3" (identifier "DAT_000817a0") (!= "!=") (identifier "iVar3")) () ")")) (compound_statement "{\n    return 1;\n  }" ({ "{") (return_statement "return 1;" (return "return") (number_literal "1") (; ";")) (} "}"))) (labeled_statement "LAB_00038626:\n  if ((byte)local_20 == '\x02') {\n    *param_3 = (int)(PTR__bfd_std_section_00077f98 + 0x180);\n  }\n  else if ((byte)local_20 == '\x05') {\n    *param_3 = DAT_0008185c;\n  }" (statement_identifier "LAB_00038626") (: ":") (if_statement "if ((byte)local_20 == '\x02') {\n    *param_3 = (int)(PTR__bfd_std_section_00077f98 + 0x180);\n  }\n  else if ((byte)local_20 == '\x05') {\n    *param_3 = DAT_0008185c;\n  }" (if "if") (parenthesized_expression "((byte)local_20 == '\x02')" (( "(") (binary_expression "(byte)local_20 == '\x02'" (cast_expression "(byte)local_20" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "local_20")) (== "==") (char_literal "'\x02'" (' "'") (escape_sequence "\x02") (' "'"))) () ")")) (compound_statement "{\n    *param_3 = (int)(PTR__bfd_std_section_00077f98 + 0x180);\n  }" ({ "{") (expression_statement "*param_3 = (int)(PTR__bfd_std_section_00077f98 + 0x180);" (assignment_expression "*param_3 = (int)(PTR__bfd_std_section_00077f98 + 0x180)" (pointer_expression "*param_3" (* "*") (identifier "param_3")) (= "=") (cast_expression "(int)(PTR__bfd_std_section_00077f98 + 0x180)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "(PTR__bfd_std_section_00077f98 + 0x180)" (( "(") (binary_expression "PTR__bfd_std_section_00077f98 + 0x180" (identifier "PTR__bfd_std_section_00077f98") (+ "+") (number_literal "0x180")) () ")")))) (; ";")) (} "}")) (else_clause "else if ((byte)local_20 == '\x05') {\n    *param_3 = DAT_0008185c;\n  }" (else "else") (if_statement "if ((byte)local_20 == '\x05') {\n    *param_3 = DAT_0008185c;\n  }" (if "if") (parenthesized_expression "((byte)local_20 == '\x05')" (( "(") (binary_expression "(byte)local_20 == '\x05'" (cast_expression "(byte)local_20" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "local_20")) (== "==") (char_literal "'\x05'" (' "'") (escape_sequence "\x05") (' "'"))) () ")")) (compound_statement "{\n    *param_3 = DAT_0008185c;\n  }" ({ "{") (expression_statement "*param_3 = DAT_0008185c;" (assignment_expression "*param_3 = DAT_0008185c" (pointer_expression "*param_3" (* "*") (identifier "param_3")) (= "=") (identifier "DAT_0008185c")) (; ";")) (} "}")))))) (return_statement "return 1;" (return "return") (number_literal "1") (; ";")) (} "}")))

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

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

{
  type_5 uVar1;
  type_6 oVar2;
  type_7 var_1;
  int var_5;
  type_3 var_2;
  type_4 *pfVar6;
  type_4 *pfVar7;
  type_8 exp;
  
  pfVar6 = (type_4 *)*symbolPP;
  var_1 = *(type_7 *)&pfVar6->fr_address;
  pfVar7 = pfVar6;
  if ((var_1 & 1) != 0) {
    var_2 = *(type_3 *)((type_9 *)&pfVar6->fr_address + 1);
    pfVar7 = (type_4 *)((type_8 *)&pfVar6->last_fr_address)->X_op_symbol;
    if (var_2 != var_3) {
      oVar2 = pfVar6->fr_fix;
      *(type_5 *)((int)valueP + 4) = *(type_5 *)((int)&pfVar6->fr_fix + 4);
      *(int *)valueP = (int)oVar2;
      *segP = var_2;
      *fragPP = pfVar7;
      return 1;
    }
    var_1 = *(type_7 *)&pfVar7->fr_address;
  }
  exp.X_add_symbol = ((type_8 *)&pfVar7->last_fr_address)->X_add_symbol;
  exp.X_op_symbol = ((type_8 *)&pfVar7->last_fr_address)->X_op_symbol;
  exp.X_add_number._0_4_ = (type_5)pfVar7->fr_fix;
  exp.X_add_number._4_4_ = *(type_5 *)((int)&pfVar7->fr_fix + 4);
  exp._16_4_ = *(type_5 *)&pfVar7->fr_var;
  if (((var_1 & 4) == 0) && (exp._16_1_ != '\0')) {
    if ((var_1 & 8) != 0) {
      return 0;
    }
    *(type_7 *)&pfVar7->fr_address = *(type_7 *)&pfVar7->fr_address | 8;
    var_5 = var_4(&exp);
    *(type_7 *)&pfVar7->fr_address = *(type_7 *)&pfVar7->fr_address & 0xf7;
    if (var_5 == 0) {
      return 0;
    }
    if ((type_7)exp._16_1_ < 5) {
      if ((type_7)exp._16_1_ < 3) {
        if (exp._16_1_ != '\x02') {
          return 0;
        }
        goto LAB_000385ca;
      }
LAB_0003869c:
      var_1 = *(type_7 *)&(exp.X_add_symbol)->sy_flags;
      pfVar7 = (type_4 *)exp.X_add_symbol;
      goto LAB_0003852f;
    }
    if (exp._16_1_ != '\x05') {
      return 0;
    }
LAB_000385ca:
    var_1 = *(type_7 *)&pfVar7->fr_address;
    pfVar6 = pfVar7;
    if ((var_1 & 1) == 0) {
LAB_00038692:
      if ((char)pfVar6->fr_var != '\x03') goto LAB_0003852f;
      goto LAB_0003869c;
    }
    var_2 = *(type_3 *)((type_9 *)&pfVar7->fr_address + 1);
    if (var_2 == var_3) {
      pfVar6 = (type_4 *)((type_8 *)&pfVar7->last_fr_address)->X_op_symbol;
      goto LAB_00038692;
    }
    *symbolPP = (type_1 *)pfVar7;
LAB_000385f6:
    pfVar7 = (type_4 *)((type_8 *)&pfVar6->last_fr_address)->X_op_symbol;
    if (var_3 != var_2) {
      uVar1 = *(type_5 *)((int)&pfVar6->fr_fix + 4);
      *(int *)valueP = (int)pfVar6->fr_fix;
      *(type_5 *)((int)valueP + 4) = uVar1;
      *segP = var_2;
      *fragPP = pfVar7;
      if (var_6 != var_2) {
        return 1;
      }
      goto LAB_00038626;
    }
    var_2 = *(type_3 *)((type_9 *)&pfVar7->fr_address + 1);
  }
  else {
LAB_0003852f:
    var_2 = *(type_3 *)((type_9 *)&pfVar7->fr_address + 1);
    *symbolPP = (type_1 *)pfVar7;
    pfVar6 = pfVar7;
    if ((var_1 & 1) != 0) goto LAB_000385f6;
  }
  var_2 = (type_3)var_2->flags;
  *(type_5 *)valueP = (type_5)exp.X_add_number;
  *(type_5 *)((int)valueP + 4) = exp.X_add_number._4_4_;
  *segP = var_2;
  *fragPP = *(type_10 **)((int)&pfVar7->fr_offset + 4);
  if (var_6 != var_2) {
    return 1;
  }
LAB_00038626:
  if (exp._16_1_ == '\x02') {
    *segP = (type_3)(var_7 + 0x180);
  }
  else if (exp._16_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: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (parameter_declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))))) body: (compound_statement (declaration type: (type_identifier) declarator: (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: (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)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (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: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (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: (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: (subscript_expression argument: (identifier) index: (number_literal)) 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))) (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: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (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))))) (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 (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: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (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: (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: (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: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (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: (primitive_type) 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: (primitive_type) 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: (primitive_type) 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: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (identifier))) (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))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (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: (cast_expression type: (type_descriptor type: (primitive_type)) value: (parenthesized_expression (binary_expression left: (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)))))

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

undefined4 MASKED(undefined4 *param_1,undefined4 *param_2,int *param_3,undefined4 *param_4)

{
  undefined4 uVar1;
  byte bVar2;
  int iVar3;
  byte *pbVar4;
  byte *pbVar5;
  byte *local_30;
  undefined4 local_2c;
  undefined4 local_28;
  undefined4 local_24;
  undefined4 local_20;
  undefined4 uStack_14;
  
  uStack_14 = 0x384a9;
  pbVar4 = (byte *)*param_1;
  bVar2 = *pbVar4;
  pbVar5 = pbVar4;
  if ((bVar2 & 1) != 0) {
    iVar3 = *(int *)(pbVar4 + 4);
    pbVar5 = *(byte **)(pbVar4 + 0xc);
    if (iVar3 != DAT_0008185c) {
      uVar1 = *(undefined4 *)(pbVar4 + 0x10);
      param_2[1] = *(undefined4 *)(pbVar4 + 0x14);
      *param_2 = uVar1;
      *param_3 = iVar3;
      *param_4 = pbVar5;
      return 1;
    }
    bVar2 = *pbVar5;
  }
  local_30 = *(byte **)(pbVar5 + 8);
  local_2c = *(undefined4 *)(pbVar5 + 0xc);
  local_28 = *(undefined4 *)(pbVar5 + 0x10);
  local_24 = *(undefined4 *)(pbVar5 + 0x14);
  local_20 = *(undefined4 *)(pbVar5 + 0x18);
  if (((bVar2 & 4) == 0) && ((byte)local_20 != '\0')) {
    if ((bVar2 & 8) != 0) {
      return 0;
    }
    *pbVar5 = *pbVar5 | 8;
    iVar3 = FUN_000228d0(&local_30);
    *pbVar5 = *pbVar5 & 0xf7;
    if (iVar3 == 0) {
      return 0;
    }
    if ((byte)local_20 < 5) {
      if ((byte)local_20 < 3) {
        if ((byte)local_20 != 2) {
          return 0;
        }
        goto LAB_000385ca;
      }
LAB_0003869c:
      bVar2 = *local_30;
      pbVar5 = local_30;
      goto LAB_0003852f;
    }
    if ((byte)local_20 != 5) {
      return 0;
    }
LAB_000385ca:
    bVar2 = *pbVar5;
    pbVar4 = pbVar5;
    if ((bVar2 & 1) == 0) {
LAB_00038692:
      if (pbVar4[0x18] != 3) goto LAB_0003852f;
      goto LAB_0003869c;
    }
    iVar3 = *(int *)(pbVar5 + 4);
    if (iVar3 == DAT_0008185c) {
      pbVar4 = *(byte **)(pbVar5 + 0xc);
      goto LAB_00038692;
    }
    *param_1 = pbVar5;
LAB_000385f6:
    pbVar5 = *(byte **)(pbVar4 + 0xc);
    if (DAT_0008185c != iVar3) {
      uVar1 = *(undefined4 *)(pbVar4 + 0x14);
      *param_2 = *(undefined4 *)(pbVar4 + 0x10);
      param_2[1] = uVar1;
      *param_3 = iVar3;
      *param_4 = pbVar5;
      if (DAT_000817a0 != iVar3) {
        return 1;
      }
      goto LAB_00038626;
    }
    iVar3 = *(int *)(pbVar5 + 4);
  }
  else {
LAB_0003852f:
    iVar3 = *(int *)(pbVar5 + 4);
    *param_1 = pbVar5;
    pbVar4 = pbVar5;
    if ((bVar2 & 1) != 0) goto LAB_000385f6;
  }
  iVar3 = *(int *)(iVar3 + 0x14);
  *param_2 = local_28;
  param_2[1] = local_24;
  *param_3 = iVar3;
  *param_4 = *(undefined4 *)(pbVar5 + 0x24);
  if (DAT_000817a0 != iVar3) {
    return 1;
  }
LAB_00038626:
  if ((byte)local_20 == '\x02') {
    *param_3 = (int)(PTR__bfd_std_section_00077f98 + 0x180);
  }
  else if ((byte)local_20 == '\x05') {
    *param_3 = DAT_0008185c;
  }
  return 1;
}

