
/* WARNING: Function: __x86.get_pc_thunk.ax replaced with injection: get_pc_thunk_ax */
/* WARNING: Unknown calling convention */

void vax_find_call(Sym *parent,bfd_vma p_lowpc,bfd_vma p_highpc)

{
  bfd_vma bVar1;
  longlong lVar2;
  operandenum oVar3;
  long lVar4;
  operandenum mode;
  uint uVar5;
  Sym *child;
  char *pcVar6;
  int iVar7;
  int iVar8;
  bool bVar9;
  bfd_signed_vma bVar10;
  uint local_50;
  uint local_4c;
  byte *local_38;
  int local_34;
  int local_2c;
  int local_28;
  
  if (vax_find_call::inited == 0) {
    vax_find_call::inited = 1;
    sym_init(&indirectchild);
    indirectchild.cg.prop.fract = 1.0;
    indirectchild.cg.cyc.head = &indirectchild;
  }
  local_50 = (uint)p_highpc;
  if ((debug_level & 0x100U) != 0) {
    printf("[findcall] %s: 0x%lx to 0x%lx\n",parent->name,(uint)p_lowpc,local_50);
  }
  local_4c = (uint)(p_highpc >> 0x20);
  if (p_lowpc._4_4_ < local_4c || p_lowpc._4_4_ - local_4c < (uint)((uint)p_lowpc < local_50)) {
    do {
      local_2c = (int)p_lowpc;
      pcVar6 = (char *)((local_2c - (int)core_text_sect->vma) + (int)core_text_space);
      if (*pcVar6 == -5) {
        if ((debug_level & 0x100U) != 0) {
          printf("[findcall]\t0x%lx:calls",local_2c);
          oVar3 = vax_operandmode((uchar *)(uint)(byte)pcVar6[1]);
          if ((oVar3 == literal) || (oVar3 == immediate)) {
            lVar4 = vax_operandlength((uchar *)(pcVar6 + 1));
            local_34 = lVar4 + 1;
            local_38 = (byte *)(pcVar6 + local_34);
            mode = vax_operandmode((uchar *)(uint)*local_38);
            if ((debug_level & 0x100U) == 0) goto LAB_0001ec6e;
            pcVar6 = vax_operandname(oVar3);
            printf("\tfirst operand is %s",pcVar6);
            pcVar6 = vax_operandname(mode);
            printf("\tsecond operand is %s\n",pcVar6);
            if (longreldef < mode) goto LAB_0001edd0;
            uVar5 = 1 << ((byte)mode & 0x1f);
            if ((uVar5 & 0x151508) == 0) goto LAB_0001ec89;
LAB_0001eee4:
            child = &indirectchild;
            goto LAB_0001eef8;
          }
LAB_0001edd0:
          if ((debug_level & 0x100U) != 0) {
            puts("[findcall]\tbut it\'s a botch");
          }
          goto LAB_0001ebe0;
        }
        oVar3 = vax_operandmode((uchar *)(uint)(byte)pcVar6[1]);
        if (oVar3 == literal) {
LAB_0001ec47:
          lVar4 = vax_operandlength((uchar *)(pcVar6 + 1));
          local_34 = lVar4 + 1;
          local_38 = (byte *)(pcVar6 + local_34);
          mode = vax_operandmode((uchar *)(uint)*local_38);
LAB_0001ec6e:
          if (longreldef < mode) goto LAB_0001ebe0;
          uVar5 = 1 << ((byte)mode & 0x1f);
          if ((uVar5 & 0x151508) != 0) goto LAB_0001eee4;
LAB_0001ec89:
          if ((uVar5 & 0xa8000) == 0) goto LAB_0001edd0;
          oVar3 = vax_operandmode((uchar *)(uint)*local_38);
          if (oVar3 == wordrel) {
            bVar10 = (*core_bfd->xvec->bfd_getx_signed_16)(local_38 + 1);
            iVar7 = (int)((ulonglong)bVar10 >> 0x20);
            bVar9 = 0xfffffffd < (uint)bVar10;
            iVar8 = (uint)bVar10 + 2;
LAB_0001efc9:
            lVar2 = CONCAT44(iVar7 + (uint)bVar9,iVar8);
            local_2c = (int)(p_lowpc + lVar2);
            bVar1 = p_lowpc + lVar2;
          }
          else {
            if (oVar3 == longrel) {
              bVar10 = (*core_bfd->xvec->bfd_getx_signed_32)(local_38 + 1);
              iVar7 = (int)((ulonglong)bVar10 >> 0x20);
              bVar9 = 0xfffffffb < (uint)bVar10;
              iVar8 = (uint)bVar10 + 4;
              goto LAB_0001efc9;
            }
            if (oVar3 == byterel) {
              bVar1 = p_lowpc + (longlong)(int)((byte)(local_38[1] + 0x80) - 0x7f);
              local_2c = (int)bVar1;
            }
            else {
              fwrite("[reladdr] not relative address\n",1,0x1f,*(FILE **)PTR_stderr_0002cfcc);
              bVar1 = p_lowpc;
            }
          }
          local_28 = (int)(bVar1 >> 0x20);
          iVar8 = hist_check_address((uint)bVar1);
          if ((iVar8 == 0) ||
             (child = sym_lookup(&symtab,CONCAT44(local_28,local_2c)), child == (Sym *)0x0))
          goto LAB_0001edd0;
          if ((debug_level & 0x100U) == 0) {
            if (*(int *)((int)&child->addr + 4) != local_28 || (int)child->addr != local_2c)
            goto LAB_0001ebe0;
          }
          else {
            printf("[findcall]\tdestpc 0x%lx",(uint)bVar1);
            printf(" child->name %s",child->name);
            printf(" child->addr 0x%lx\n",(int)child->addr);
            if (*(int *)((int)&child->addr + 4) != local_28 || local_2c != (int)child->addr)
            goto LAB_0001edd0;
          }
LAB_0001eef8:
          arc_add(parent,child,0);
          lVar4 = vax_operandlength(local_38);
          local_34 = local_34 + lVar4;
          iVar8 = local_34 >> 0x1f;
        }
        else {
          local_34 = 1;
          iVar8 = 0;
          if (oVar3 == immediate) goto LAB_0001ec47;
        }
      }
      else {
LAB_0001ebe0:
        local_34 = 1;
        iVar8 = 0;
      }
      lVar2 = p_lowpc + CONCAT44(iVar8,local_34);
      uVar5 = (uint)((ulonglong)lVar2 >> 0x20);
      p_lowpc = p_lowpc + CONCAT44(iVar8,local_34);
    } while (uVar5 < local_4c || uVar5 - local_4c < (uint)((uint)lVar2 < local_50));
  }
  return;
}



/* WARNING: Function: __i686.get_pc_thunk.ax replaced with injection: get_pc_thunk_ax */

int FUN_0001eb40(int param_1,uint param_2,uint param_3,uint param_4,uint param_5)

{
  int iVar1;
  uint *puVar2;
  undefined4 uVar3;
  uint uVar4;
  int iVar5;
  bool bVar6;
  undefined8 uVar7;
  char *local_38;
  int local_34;
  uint local_2c;
  uint local_28;
  
  if (DAT_0002e2a0 == 0) {
    DAT_0002e2a0 = 1;
    FUN_0001ce40(&DAT_0002e2c0);
    DAT_0002e390 = 0x3ff0000000000000;
    DAT_0002e3ac = &DAT_0002e2c0;
  }
  if ((DAT_0002e158 & 0x100) != 0) {
    printf("[findcall] %s: 0x%lx to 0x%lx\n",*(undefined4 *)(param_1 + 0x10),param_2,param_4);
  }
  iVar1 = (param_3 - param_5) - (uint)(param_2 < param_4);
  if (param_3 < param_5 || param_3 - param_5 < (uint)(param_2 < param_4)) {
    do {
      local_38 = (char *)((param_2 - *(int *)(DAT_0002e4fc + 0x1c)) + DAT_0002e4f0);
      if (*local_38 == -5) {
        if ((DAT_0002e158 & 0x100) != 0) {
          printf("[findcall]\t0x%lx:calls",param_2);
          iVar1 = FUN_0001e9c0();
          if ((iVar1 == 0) || (iVar1 == 0xd)) {
            local_34 = FUN_0001eac0();
            local_34 = local_34 + 1;
            local_38 = local_38 + local_34;
            uVar4 = FUN_0001e9c0();
            if ((DAT_0002e158 & 0x100) == 0) goto LAB_0001ec6e;
            uVar3 = FUN_0001e850();
            printf("\tfirst operand is %s",uVar3);
            uVar3 = FUN_0001e850();
            printf("\tsecond operand is %s\n",uVar3);
            if (0x14 < uVar4) goto LAB_0001edd0;
            uVar4 = 1 << ((byte)uVar4 & 0x1f);
            if ((uVar4 & 0x151508) == 0) goto LAB_0001ec89;
LAB_0001eee4:
            puVar2 = (uint *)&DAT_0002e2c0;
            goto LAB_0001eef8;
          }
LAB_0001edd0:
          if ((DAT_0002e158 & 0x100) != 0) {
            puts("[findcall]\tbut it\'s a botch");
          }
          goto LAB_0001ebe0;
        }
        iVar1 = FUN_0001e9c0();
        if (iVar1 == 0) {
LAB_0001ec47:
          local_34 = FUN_0001eac0();
          local_34 = local_34 + 1;
          local_38 = local_38 + local_34;
          uVar4 = FUN_0001e9c0();
LAB_0001ec6e:
          if (0x14 < uVar4) goto LAB_0001ebe0;
          uVar4 = 1 << ((byte)uVar4 & 0x1f);
          if ((uVar4 & 0x151508) != 0) goto LAB_0001eee4;
LAB_0001ec89:
          if ((uVar4 & 0xa8000) == 0) goto LAB_0001edd0;
          iVar1 = FUN_0001e9c0();
          if (iVar1 == 0x11) {
            uVar7 = (**(code **)(*(int *)(DAT_0002e4ec + 4) + 0x38))(local_38 + 1);
            iVar1 = (int)((ulonglong)uVar7 >> 0x20);
            bVar6 = 0xfffffffd < (uint)uVar7;
            uVar4 = (uint)uVar7 + 2;
LAB_0001efc9:
            local_2c = uVar4 + param_2;
            local_28 = iVar1 + (uint)bVar6 + param_3 + (uint)CARRY4(uVar4,param_2);
          }
          else {
            if (iVar1 == 0x13) {
              uVar7 = (**(code **)(*(int *)(DAT_0002e4ec + 4) + 0x2c))(local_38 + 1);
              iVar1 = (int)((ulonglong)uVar7 >> 0x20);
              bVar6 = 0xfffffffb < (uint)uVar7;
              uVar4 = (uint)uVar7 + 4;
              goto LAB_0001efc9;
            }
            if (iVar1 == 0xf) {
              uVar4 = (byte)(local_38[1] + 0x80) - 0x7f;
              local_2c = uVar4 + param_2;
              local_28 = ((int)uVar4 >> 0x1f) + param_3 + (uint)CARRY4(uVar4,param_2);
            }
            else {
              fwrite("[reladdr] not relative address\n",1,0x1f,*(FILE **)PTR_stderr_0002cfcc);
              local_2c = param_2;
              local_28 = param_3;
            }
          }
          iVar1 = FUN_0001c070(local_2c);
          if ((iVar1 == 0) ||
             (puVar2 = (uint *)FUN_0001d480(&DAT_0002e520,local_2c,local_28), puVar2 == (uint *)0x0)
             ) goto LAB_0001edd0;
          if ((DAT_0002e158 & 0x100) == 0) {
            if (puVar2[1] != local_28 || *puVar2 != local_2c) goto LAB_0001ebe0;
          }
          else {
            printf("[findcall]\tdestpc 0x%lx",local_2c);
            printf(" child->name %s",puVar2[4]);
            printf(" child->addr 0x%lx\n",*puVar2);
            if (puVar2[1] != local_28 || local_2c != *puVar2) goto LAB_0001edd0;
          }
LAB_0001eef8:
          FUN_00014870(param_1,puVar2,0);
          iVar1 = FUN_0001eac0();
          uVar4 = local_34 + iVar1;
          iVar5 = (int)uVar4 >> 0x1f;
        }
        else {
          uVar4 = 1;
          iVar5 = 0;
          if (iVar1 == 0xd) goto LAB_0001ec47;
        }
      }
      else {
LAB_0001ebe0:
        uVar4 = 1;
        iVar5 = 0;
      }
      bVar6 = CARRY4(param_2,uVar4);
      param_2 = param_2 + uVar4;
      param_3 = param_3 + iVar5 + (uint)bVar6;
      iVar1 = (param_3 - param_5) - (uint)(param_2 < param_4);
    } while (param_3 < param_5 || param_3 - param_5 < (uint)(param_2 < param_4));
  }
  return iVar1;
}


CALL 0x0001c809
ADD EAX,0xe4bb
PUSH EBP
PUSH EDI
PUSH ESI
PUSH EBX
SUB ESP,0x4c
MOV EBX,dword ptr [EAX + 0x12a0]
MOV ESI,dword ptr [ESP + 0x6c]
MOV EDI,dword ptr [ESP + 0x64]
MOV dword ptr [ESP + 0x14],EAX
MOV EBP,dword ptr [ESP + 0x68]
MOV dword ptr [ESP + 0xc],ESI
MOV ESI,dword ptr [ESP + 0x70]
MOV dword ptr [ESP + 0x10],ESI
TEST EBX,EBX
JZ 0x0001ef48
MOV EAX,dword ptr [ESP + 0x14]
LEA EAX,[EAX + 0x1158]
MOV dword ptr [ESP + 0x20],EAX
MOV EAX,dword ptr [EAX]
MOV dword ptr [ESP + 0x18],EAX
TEST AH,0x1
JNZ 0x0001ef20
CMP EDI,dword ptr [ESP + 0xc]
MOV EAX,EBP
SBB EAX,dword ptr [ESP + 0x10]
JNC 0x0001ee00
MOV EAX,dword ptr [ESP + 0x14]
LEA ESI,[EAX + 0x14f0]
LEA ECX,[EAX + 0x14fc]
MOV dword ptr [ESP + 0x1c],ESI
LEA ESI,[EAX + 0x1520]
LEA EAX,[EAX + 0x14ec]
MOV dword ptr [ESP + 0x18],ECX
MOV dword ptr [ESP + 0x2c],ESI
MOV dword ptr [ESP + 0x38],EAX
JMP 0x0001ebfb
MOV ECX,0x1
XOR EBX,EBX
ADD EDI,ECX
ADC EBP,EBX
CMP EDI,dword ptr [ESP + 0xc]
MOV EAX,EBP
SBB EAX,dword ptr [ESP + 0x10]
JNC 0x0001ee00
MOV EAX,dword ptr [ESP + 0x18]
MOV EDX,EDI
MOV ESI,EDI
MOV EAX,dword ptr [EAX]
SUB EDX,dword ptr [EAX + 0x1c]
MOV EAX,dword ptr [ESP + 0x1c]
ADD EDX,dword ptr [EAX]
CMP byte ptr [EDX],0xfb
JNZ 0x0001ebe0
MOV EAX,dword ptr [ESP + 0x20]
MOV EAX,dword ptr [EAX]
MOV dword ptr [ESP + 0x24],EAX
TEST AH,0x1
JNZ 0x0001ee10
MOVZX EAX,byte ptr [EDX + 0x1]
MOV dword ptr [ESP + 0x24],EDX
CALL 0x0001e9c0
MOV EDX,dword ptr [ESP + 0x24]
TEST EAX,EAX
JZ 0x0001ec47
MOV ECX,0x1
XOR EBX,EBX
CMP EAX,0xd
JNZ 0x0001ebe7
LEA EAX,[EDX + 0x1]
MOV dword ptr [ESP + 0x24],EDX
CALL 0x0001eac0
MOV EDX,dword ptr [ESP + 0x24]
ADD EAX,0x1
ADD EDX,EAX
MOV dword ptr [ESP + 0x28],EAX
MOVZX EAX,byte ptr [EDX]
MOV dword ptr [ESP + 0x24],EDX
CALL 0x0001e9c0
MOV ECX,EAX
CMP ECX,0x14
JA 0x0001ebe0
MOV EAX,0x1
SHL EAX,CL
TEST EAX,0x151508
JNZ 0x0001eee4
TEST EAX,0xa8000
JZ 0x0001edd0
MOV EBX,dword ptr [ESP + 0x24]
MOVZX EAX,byte ptr [EBX]
CALL 0x0001e9c0
LEA EDX,[EBX + 0x1]
CMP EAX,0x11
JZ 0x0001efe8
CMP EAX,0x13
JZ 0x0001efb0
CMP EAX,0xf
JZ 0x0001ef88
MOV EBX,dword ptr [ESP + 0x14]
MOV EAX,dword ptr [EBX + 0xffffffcc]
PUSH dword ptr [EAX]
LEA EAX,[EBX + 0xffff7538]
PUSH 0x1f
PUSH 0x1
PUSH EAX
CALL 0x000121c0
ADD ESP,0x10
MOV dword ptr [ESP + 0x30],EDI
MOV dword ptr [ESP + 0x34],EBP
SUB ESP,0xc
PUSH ESI
MOV EBX,dword ptr [ESP + 0x24]
CALL 0x0001c070
ADD ESP,0x10
TEST EAX,EAX
JZ 0x0001edd0
SUB ESP,0x4
PUSH dword ptr [ESP + 0x38]
PUSH dword ptr [ESP + 0x38]
PUSH dword ptr [ESP + 0x38]
MOV EBX,dword ptr [ESP + 0x24]
CALL 0x0001d480
ADD ESP,0x10
MOV EDX,EAX
TEST EAX,EAX
JZ 0x0001edd0
MOV EAX,dword ptr [ESP + 0x20]
MOV EAX,dword ptr [EAX]
MOV dword ptr [ESP + 0x3c],EAX
TEST AH,0x1
JNZ 0x0001ed60
MOV EBX,dword ptr [ESP + 0x30]
MOV ESI,dword ptr [ESP + 0x34]
MOV EAX,dword ptr [EDX]
MOV ECX,dword ptr [EDX + 0x4]
XOR EAX,EBX
XOR ECX,ESI
OR ECX,EAX
JNZ 0x0001ebe0
SUB ESP,0x4
PUSH 0x0
PUSH EDX
PUSH dword ptr [ESP + 0x6c]
MOV EBX,dword ptr [ESP + 0x24]
JMP 0x0001eef8
MOV dword ptr [ESP + 0x3c],EDX
SUB ESP,0x8
PUSH ESI
MOV ESI,dword ptr [ESP + 0x20]
LEA EAX,[ESI + 0xffff7405]
MOV EBX,ESI
PUSH EAX
CALL 0x00012070
POP EAX
POP EDX
LEA EAX,[ESI + 0xffff741d]
MOV EDX,dword ptr [ESP + 0x44]
PUSH dword ptr [EDX + 0x10]
MOV dword ptr [ESP + 0x48],EDX
PUSH EAX
CALL 0x00012070
POP ECX
POP EAX
LEA EAX,[ESI + 0xffff742d]
MOV EDX,dword ptr [ESP + 0x44]
PUSH dword ptr [EDX]
MOV dword ptr [ESP + 0x48],EDX
PUSH EAX
CALL 0x00012070
ADD ESP,0x10
MOV EDX,dword ptr [ESP + 0x3c]
MOV EBX,dword ptr [ESP + 0x30]
MOV ESI,dword ptr [ESP + 0x34]
MOV ECX,dword ptr [EDX + 0x4]
MOV EAX,EBX
XOR EAX,dword ptr [EDX]
XOR ECX,ESI
OR ECX,EAX
JZ 0x0001ed4a
LEA ESI,[ESI]
NOP
MOV EAX,dword ptr [ESP + 0x20]
MOV EAX,dword ptr [EAX]
MOV dword ptr [ESP + 0x24],EAX
TEST AH,0x1
JZ 0x0001ebe0
SUB ESP,0xc
MOV EBX,dword ptr [ESP + 0x20]
LEA EAX,[EBX + 0xffff7441]
PUSH EAX
CALL 0x00012270
ADD ESP,0x10
JMP 0x0001ebe0
ADD ESP,0x4c
POP EBX
POP ESI
POP EDI
POP EBP
RET
MOV dword ptr [ESP + 0x24],EDX
SUB ESP,0x8
PUSH EDI
MOV EBX,dword ptr [ESP + 0x20]
LEA EAX,[EBX + 0xffff73c2]
PUSH EAX
CALL 0x00012070
MOV EDX,dword ptr [ESP + 0x34]
MOVZX EAX,byte ptr [EDX + 0x1]
CALL 0x0001e9c0
ADD ESP,0x10
MOV EDX,dword ptr [ESP + 0x24]
TEST EAX,EAX
MOV EBX,EAX
JZ 0x0001ee47
CMP EAX,0xd
JNZ 0x0001edd0
LEA EAX,[EDX + 0x1]
MOV dword ptr [ESP + 0x24],EDX
CALL 0x0001eac0
MOV EDX,dword ptr [ESP + 0x24]
ADD EAX,0x1
ADD EDX,EAX
MOV dword ptr [ESP + 0x28],EAX
MOVZX EAX,byte ptr [EDX]
MOV dword ptr [ESP + 0x24],EDX
CALL 0x0001e9c0
MOV ECX,EAX
MOV EAX,dword ptr [ESP + 0x20]
MOV EAX,dword ptr [EAX]
MOV dword ptr [ESP + 0x30],EAX
TEST AH,0x1
JZ 0x0001ec6e
MOV EAX,EBX
MOV dword ptr [ESP + 0x30],ECX
CALL 0x0001e850
SUB ESP,0x8
PUSH EAX
MOV EBX,dword ptr [ESP + 0x20]
LEA EAX,[EBX + 0xffff73d9]
PUSH EAX
MOV dword ptr [ESP + 0x24],EBX
CALL 0x00012070
MOV ECX,dword ptr [ESP + 0x40]
MOV EAX,ECX
CALL 0x0001e850
POP EDX
POP ECX
PUSH EAX
MOV EBX,dword ptr [ESP + 0x20]
LEA EAX,[EBX + 0xffff73ee]
PUSH EAX
CALL 0x00012070
ADD ESP,0x10
MOV ECX,dword ptr [ESP + 0x30]
CMP ECX,0x14
JA 0x0001edd0
MOV EAX,0x1
SHL EAX,CL
TEST EAX,0x151508
JZ 0x0001ec89
SUB ESP,0x4
PUSH 0x0
MOV EBX,dword ptr [ESP + 0x1c]
LEA EAX,[EBX + 0x12c0]
PUSH EAX
PUSH dword ptr [ESP + 0x6c]
CALL 0x00014870
MOV EAX,dword ptr [ESP + 0x34]
CALL 0x0001eac0
MOV ECX,dword ptr [ESP + 0x38]
ADD ESP,0x10
ADD ECX,EAX
MOV EBX,ECX
SAR EBX,0x1f
JMP 0x0001ebe7
PUSH dword ptr [ESP + 0xc]
PUSH EDI
MOV EAX,dword ptr [ESP + 0x68]
PUSH dword ptr [EAX + 0x10]
MOV EBX,dword ptr [ESP + 0x20]
LEA EAX,[EBX + 0xffff7174]
PUSH EAX
CALL 0x00012070
ADD ESP,0x10
JMP 0x0001eb98
SUB ESP,0xc
LEA ESI,[EAX + 0x12c0]
MOV EBX,EAX
MOV dword ptr [EAX + 0x12a0],0x1
PUSH ESI
MOV dword ptr [ESP + 0x24],EAX
CALL 0x0001ce40
MOV EAX,dword ptr [ESP + 0x24]
ADD ESP,0x10
FLD1
FSTP qword ptr [EAX + 0x1390]
MOV dword ptr [EAX + 0x13ac],ESI
JMP 0x0001eb7b
MOV EAX,dword ptr [ESP + 0x24]
MOVZX EAX,byte ptr [EAX + 0x1]
ADD EAX,-0x80
MOVZX EAX,AL
SUB EAX,0x7f
CDQ
ADD EAX,EDI
ADC EDX,EBP
MOV dword ptr [ESP + 0x30],EAX
MOV ESI,EAX
MOV dword ptr [ESP + 0x34],EDX
JMP 0x0001ece5
SUB ESP,0xc
MOV EAX,dword ptr [ESP + 0x20]
LEA EAX,[EAX + 0x14ec]
MOV EAX,dword ptr [EAX]
MOV EAX,dword ptr [EAX + 0x4]
PUSH EDX
CALL dword ptr [EAX + 0x2c]
ADD EAX,0x4
ADC EDX,0x0
ADD EAX,EDI
ADC EDX,EBP
MOV dword ptr [ESP + 0x40],EAX
MOV ESI,EAX
MOV dword ptr [ESP + 0x44],EDX
ADD ESP,0x10
JMP 0x0001ece5
SUB ESP,0xc
MOV EAX,dword ptr [ESP + 0x44]
MOV EAX,dword ptr [EAX]
MOV EAX,dword ptr [EAX + 0x4]
PUSH EDX
CALL dword ptr [EAX + 0x38]
ADD EAX,0x2
JMP 0x0001efc9
(translation_unit "/* WARNING: Function: __i686.get_pc_thunk.ax replaced with injection: get_pc_thunk_ax */\n\nint FUN_0001eb40(int param_1,uint param_2,uint param_3,uint param_4,uint param_5)\n\n{\n  int iVar1;\n  uint *puVar2;\n  undefined4 uVar3;\n  uint uVar4;\n  int iVar5;\n  bool bVar6;\n  undefined8 uVar7;\n  char *local_38;\n  int local_34;\n  uint local_2c;\n  uint local_28;\n  \n  if (DAT_0002e2a0 == 0) {\n    DAT_0002e2a0 = 1;\n    FUN_0001ce40(&DAT_0002e2c0);\n    DAT_0002e390 = 0x3ff0000000000000;\n    DAT_0002e3ac = &DAT_0002e2c0;\n  }\n  if ((DAT_0002e158 & 0x100) != 0) {\n    printf("[findcall] %s: 0x%lx to 0x%lx\n",*(undefined4 *)(param_1 + 0x10),param_2,param_4);\n  }\n  iVar1 = (param_3 - param_5) - (uint)(param_2 < param_4);\n  if (param_3 < param_5 || param_3 - param_5 < (uint)(param_2 < param_4)) {\n    do {\n      local_38 = (char *)((param_2 - *(int *)(DAT_0002e4fc + 0x1c)) + DAT_0002e4f0);\n      if (*local_38 == -5) {\n        if ((DAT_0002e158 & 0x100) != 0) {\n          printf("[findcall]\t0x%lx:calls",param_2);\n          iVar1 = FUN_0001e9c0();\n          if ((iVar1 == 0) || (iVar1 == 0xd)) {\n            local_34 = FUN_0001eac0();\n            local_34 = local_34 + 1;\n            local_38 = local_38 + local_34;\n            uVar4 = FUN_0001e9c0();\n            if ((DAT_0002e158 & 0x100) == 0) goto LAB_0001ec6e;\n            uVar3 = FUN_0001e850();\n            printf("\tfirst operand is %s",uVar3);\n            uVar3 = FUN_0001e850();\n            printf("\tsecond operand is %s\n",uVar3);\n            if (0x14 < uVar4) goto LAB_0001edd0;\n            uVar4 = 1 << ((byte)uVar4 & 0x1f);\n            if ((uVar4 & 0x151508) == 0) goto LAB_0001ec89;\nLAB_0001eee4:\n            puVar2 = (uint *)&DAT_0002e2c0;\n            goto LAB_0001eef8;\n          }\nLAB_0001edd0:\n          if ((DAT_0002e158 & 0x100) != 0) {\n            puts("[findcall]\tbut it\'s a botch");\n          }\n          goto LAB_0001ebe0;\n        }\n        iVar1 = FUN_0001e9c0();\n        if (iVar1 == 0) {\nLAB_0001ec47:\n          local_34 = FUN_0001eac0();\n          local_34 = local_34 + 1;\n          local_38 = local_38 + local_34;\n          uVar4 = FUN_0001e9c0();\nLAB_0001ec6e:\n          if (0x14 < uVar4) goto LAB_0001ebe0;\n          uVar4 = 1 << ((byte)uVar4 & 0x1f);\n          if ((uVar4 & 0x151508) != 0) goto LAB_0001eee4;\nLAB_0001ec89:\n          if ((uVar4 & 0xa8000) == 0) goto LAB_0001edd0;\n          iVar1 = FUN_0001e9c0();\n          if (iVar1 == 0x11) {\n            uVar7 = (**(code **)(*(int *)(DAT_0002e4ec + 4) + 0x38))(local_38 + 1);\n            iVar1 = (int)((ulonglong)uVar7 >> 0x20);\n            bVar6 = 0xfffffffd < (uint)uVar7;\n            uVar4 = (uint)uVar7 + 2;\nLAB_0001efc9:\n            local_2c = uVar4 + param_2;\n            local_28 = iVar1 + (uint)bVar6 + param_3 + (uint)CARRY4(uVar4,param_2);\n          }\n          else {\n            if (iVar1 == 0x13) {\n              uVar7 = (**(code **)(*(int *)(DAT_0002e4ec + 4) + 0x2c))(local_38 + 1);\n              iVar1 = (int)((ulonglong)uVar7 >> 0x20);\n              bVar6 = 0xfffffffb < (uint)uVar7;\n              uVar4 = (uint)uVar7 + 4;\n              goto LAB_0001efc9;\n            }\n            if (iVar1 == 0xf) {\n              uVar4 = (byte)(local_38[1] + 0x80) - 0x7f;\n              local_2c = uVar4 + param_2;\n              local_28 = ((int)uVar4 >> 0x1f) + param_3 + (uint)CARRY4(uVar4,param_2);\n            }\n            else {\n              fwrite("[reladdr] not relative address\n",1,0x1f,*(FILE **)PTR_stderr_0002cfcc);\n              local_2c = param_2;\n              local_28 = param_3;\n            }\n          }\n          iVar1 = FUN_0001c070(local_2c);\n          if ((iVar1 == 0) ||\n             (puVar2 = (uint *)FUN_0001d480(&DAT_0002e520,local_2c,local_28), puVar2 == (uint *)0x0)\n             ) goto LAB_0001edd0;\n          if ((DAT_0002e158 & 0x100) == 0) {\n            if (puVar2[1] != local_28 || *puVar2 != local_2c) goto LAB_0001ebe0;\n          }\n          else {\n            printf("[findcall]\tdestpc 0x%lx",local_2c);\n            printf(" child->name %s",puVar2[4]);\n            printf(" child->addr 0x%lx\n",*puVar2);\n            if (puVar2[1] != local_28 || local_2c != *puVar2) goto LAB_0001edd0;\n          }\nLAB_0001eef8:\n          FUN_00014870(param_1,puVar2,0);\n          iVar1 = FUN_0001eac0();\n          uVar4 = local_34 + iVar1;\n          iVar5 = (int)uVar4 >> 0x1f;\n        }\n        else {\n          uVar4 = 1;\n          iVar5 = 0;\n          if (iVar1 == 0xd) goto LAB_0001ec47;\n        }\n      }\n      else {\nLAB_0001ebe0:\n        uVar4 = 1;\n        iVar5 = 0;\n      }\n      bVar6 = CARRY4(param_2,uVar4);\n      param_2 = param_2 + uVar4;\n      param_3 = param_3 + iVar5 + (uint)bVar6;\n      iVar1 = (param_3 - param_5) - (uint)(param_2 < param_4);\n    } while (param_3 < param_5 || param_3 - param_5 < (uint)(param_2 < param_4));\n  }\n  return iVar1;\n}\n\n" comment (function_definition "int FUN_0001eb40(int param_1,uint param_2,uint param_3,uint param_4,uint param_5)\n\n{\n  int iVar1;\n  uint *puVar2;\n  undefined4 uVar3;\n  uint uVar4;\n  int iVar5;\n  bool bVar6;\n  undefined8 uVar7;\n  char *local_38;\n  int local_34;\n  uint local_2c;\n  uint local_28;\n  \n  if (DAT_0002e2a0 == 0) {\n    DAT_0002e2a0 = 1;\n    FUN_0001ce40(&DAT_0002e2c0);\n    DAT_0002e390 = 0x3ff0000000000000;\n    DAT_0002e3ac = &DAT_0002e2c0;\n  }\n  if ((DAT_0002e158 & 0x100) != 0) {\n    printf("[findcall] %s: 0x%lx to 0x%lx\n",*(undefined4 *)(param_1 + 0x10),param_2,param_4);\n  }\n  iVar1 = (param_3 - param_5) - (uint)(param_2 < param_4);\n  if (param_3 < param_5 || param_3 - param_5 < (uint)(param_2 < param_4)) {\n    do {\n      local_38 = (char *)((param_2 - *(int *)(DAT_0002e4fc + 0x1c)) + DAT_0002e4f0);\n      if (*local_38 == -5) {\n        if ((DAT_0002e158 & 0x100) != 0) {\n          printf("[findcall]\t0x%lx:calls",param_2);\n          iVar1 = FUN_0001e9c0();\n          if ((iVar1 == 0) || (iVar1 == 0xd)) {\n            local_34 = FUN_0001eac0();\n            local_34 = local_34 + 1;\n            local_38 = local_38 + local_34;\n            uVar4 = FUN_0001e9c0();\n            if ((DAT_0002e158 & 0x100) == 0) goto LAB_0001ec6e;\n            uVar3 = FUN_0001e850();\n            printf("\tfirst operand is %s",uVar3);\n            uVar3 = FUN_0001e850();\n            printf("\tsecond operand is %s\n",uVar3);\n            if (0x14 < uVar4) goto LAB_0001edd0;\n            uVar4 = 1 << ((byte)uVar4 & 0x1f);\n            if ((uVar4 & 0x151508) == 0) goto LAB_0001ec89;\nLAB_0001eee4:\n            puVar2 = (uint *)&DAT_0002e2c0;\n            goto LAB_0001eef8;\n          }\nLAB_0001edd0:\n          if ((DAT_0002e158 & 0x100) != 0) {\n            puts("[findcall]\tbut it\'s a botch");\n          }\n          goto LAB_0001ebe0;\n        }\n        iVar1 = FUN_0001e9c0();\n        if (iVar1 == 0) {\nLAB_0001ec47:\n          local_34 = FUN_0001eac0();\n          local_34 = local_34 + 1;\n          local_38 = local_38 + local_34;\n          uVar4 = FUN_0001e9c0();\nLAB_0001ec6e:\n          if (0x14 < uVar4) goto LAB_0001ebe0;\n          uVar4 = 1 << ((byte)uVar4 & 0x1f);\n          if ((uVar4 & 0x151508) != 0) goto LAB_0001eee4;\nLAB_0001ec89:\n          if ((uVar4 & 0xa8000) == 0) goto LAB_0001edd0;\n          iVar1 = FUN_0001e9c0();\n          if (iVar1 == 0x11) {\n            uVar7 = (**(code **)(*(int *)(DAT_0002e4ec + 4) + 0x38))(local_38 + 1);\n            iVar1 = (int)((ulonglong)uVar7 >> 0x20);\n            bVar6 = 0xfffffffd < (uint)uVar7;\n            uVar4 = (uint)uVar7 + 2;\nLAB_0001efc9:\n            local_2c = uVar4 + param_2;\n            local_28 = iVar1 + (uint)bVar6 + param_3 + (uint)CARRY4(uVar4,param_2);\n          }\n          else {\n            if (iVar1 == 0x13) {\n              uVar7 = (**(code **)(*(int *)(DAT_0002e4ec + 4) + 0x2c))(local_38 + 1);\n              iVar1 = (int)((ulonglong)uVar7 >> 0x20);\n              bVar6 = 0xfffffffb < (uint)uVar7;\n              uVar4 = (uint)uVar7 + 4;\n              goto LAB_0001efc9;\n            }\n            if (iVar1 == 0xf) {\n              uVar4 = (byte)(local_38[1] + 0x80) - 0x7f;\n              local_2c = uVar4 + param_2;\n              local_28 = ((int)uVar4 >> 0x1f) + param_3 + (uint)CARRY4(uVar4,param_2);\n            }\n            else {\n              fwrite("[reladdr] not relative address\n",1,0x1f,*(FILE **)PTR_stderr_0002cfcc);\n              local_2c = param_2;\n              local_28 = param_3;\n            }\n          }\n          iVar1 = FUN_0001c070(local_2c);\n          if ((iVar1 == 0) ||\n             (puVar2 = (uint *)FUN_0001d480(&DAT_0002e520,local_2c,local_28), puVar2 == (uint *)0x0)\n             ) goto LAB_0001edd0;\n          if ((DAT_0002e158 & 0x100) == 0) {\n            if (puVar2[1] != local_28 || *puVar2 != local_2c) goto LAB_0001ebe0;\n          }\n          else {\n            printf("[findcall]\tdestpc 0x%lx",local_2c);\n            printf(" child->name %s",puVar2[4]);\n            printf(" child->addr 0x%lx\n",*puVar2);\n            if (puVar2[1] != local_28 || local_2c != *puVar2) goto LAB_0001edd0;\n          }\nLAB_0001eef8:\n          FUN_00014870(param_1,puVar2,0);\n          iVar1 = FUN_0001eac0();\n          uVar4 = local_34 + iVar1;\n          iVar5 = (int)uVar4 >> 0x1f;\n        }\n        else {\n          uVar4 = 1;\n          iVar5 = 0;\n          if (iVar1 == 0xd) goto LAB_0001ec47;\n        }\n      }\n      else {\nLAB_0001ebe0:\n        uVar4 = 1;\n        iVar5 = 0;\n      }\n      bVar6 = CARRY4(param_2,uVar4);\n      param_2 = param_2 + uVar4;\n      param_3 = param_3 + iVar5 + (uint)bVar6;\n      iVar1 = (param_3 - param_5) - (uint)(param_2 < param_4);\n    } while (param_3 < param_5 || param_3 - param_5 < (uint)(param_2 < param_4));\n  }\n  return iVar1;\n}" primitive_type (function_declarator "FUN_0001eb40(int param_1,uint param_2,uint param_3,uint param_4,uint param_5)" identifier (parameter_list "(int param_1,uint param_2,uint param_3,uint param_4,uint param_5)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "uint param_2" type_identifier identifier) , (parameter_declaration "uint param_3" type_identifier identifier) , (parameter_declaration "uint param_4" type_identifier identifier) , (parameter_declaration "uint param_5" type_identifier identifier) ))) (compound_statement "{\n  int iVar1;\n  uint *puVar2;\n  undefined4 uVar3;\n  uint uVar4;\n  int iVar5;\n  bool bVar6;\n  undefined8 uVar7;\n  char *local_38;\n  int local_34;\n  uint local_2c;\n  uint local_28;\n  \n  if (DAT_0002e2a0 == 0) {\n    DAT_0002e2a0 = 1;\n    FUN_0001ce40(&DAT_0002e2c0);\n    DAT_0002e390 = 0x3ff0000000000000;\n    DAT_0002e3ac = &DAT_0002e2c0;\n  }\n  if ((DAT_0002e158 & 0x100) != 0) {\n    printf("[findcall] %s: 0x%lx to 0x%lx\n",*(undefined4 *)(param_1 + 0x10),param_2,param_4);\n  }\n  iVar1 = (param_3 - param_5) - (uint)(param_2 < param_4);\n  if (param_3 < param_5 || param_3 - param_5 < (uint)(param_2 < param_4)) {\n    do {\n      local_38 = (char *)((param_2 - *(int *)(DAT_0002e4fc + 0x1c)) + DAT_0002e4f0);\n      if (*local_38 == -5) {\n        if ((DAT_0002e158 & 0x100) != 0) {\n          printf("[findcall]\t0x%lx:calls",param_2);\n          iVar1 = FUN_0001e9c0();\n          if ((iVar1 == 0) || (iVar1 == 0xd)) {\n            local_34 = FUN_0001eac0();\n            local_34 = local_34 + 1;\n            local_38 = local_38 + local_34;\n            uVar4 = FUN_0001e9c0();\n            if ((DAT_0002e158 & 0x100) == 0) goto LAB_0001ec6e;\n            uVar3 = FUN_0001e850();\n            printf("\tfirst operand is %s",uVar3);\n            uVar3 = FUN_0001e850();\n            printf("\tsecond operand is %s\n",uVar3);\n            if (0x14 < uVar4) goto LAB_0001edd0;\n            uVar4 = 1 << ((byte)uVar4 & 0x1f);\n            if ((uVar4 & 0x151508) == 0) goto LAB_0001ec89;\nLAB_0001eee4:\n            puVar2 = (uint *)&DAT_0002e2c0;\n            goto LAB_0001eef8;\n          }\nLAB_0001edd0:\n          if ((DAT_0002e158 & 0x100) != 0) {\n            puts("[findcall]\tbut it\'s a botch");\n          }\n          goto LAB_0001ebe0;\n        }\n        iVar1 = FUN_0001e9c0();\n        if (iVar1 == 0) {\nLAB_0001ec47:\n          local_34 = FUN_0001eac0();\n          local_34 = local_34 + 1;\n          local_38 = local_38 + local_34;\n          uVar4 = FUN_0001e9c0();\nLAB_0001ec6e:\n          if (0x14 < uVar4) goto LAB_0001ebe0;\n          uVar4 = 1 << ((byte)uVar4 & 0x1f);\n          if ((uVar4 & 0x151508) != 0) goto LAB_0001eee4;\nLAB_0001ec89:\n          if ((uVar4 & 0xa8000) == 0) goto LAB_0001edd0;\n          iVar1 = FUN_0001e9c0();\n          if (iVar1 == 0x11) {\n            uVar7 = (**(code **)(*(int *)(DAT_0002e4ec + 4) + 0x38))(local_38 + 1);\n            iVar1 = (int)((ulonglong)uVar7 >> 0x20);\n            bVar6 = 0xfffffffd < (uint)uVar7;\n            uVar4 = (uint)uVar7 + 2;\nLAB_0001efc9:\n            local_2c = uVar4 + param_2;\n            local_28 = iVar1 + (uint)bVar6 + param_3 + (uint)CARRY4(uVar4,param_2);\n          }\n          else {\n            if (iVar1 == 0x13) {\n              uVar7 = (**(code **)(*(int *)(DAT_0002e4ec + 4) + 0x2c))(local_38 + 1);\n              iVar1 = (int)((ulonglong)uVar7 >> 0x20);\n              bVar6 = 0xfffffffb < (uint)uVar7;\n              uVar4 = (uint)uVar7 + 4;\n              goto LAB_0001efc9;\n            }\n            if (iVar1 == 0xf) {\n              uVar4 = (byte)(local_38[1] + 0x80) - 0x7f;\n              local_2c = uVar4 + param_2;\n              local_28 = ((int)uVar4 >> 0x1f) + param_3 + (uint)CARRY4(uVar4,param_2);\n            }\n            else {\n              fwrite("[reladdr] not relative address\n",1,0x1f,*(FILE **)PTR_stderr_0002cfcc);\n              local_2c = param_2;\n              local_28 = param_3;\n            }\n          }\n          iVar1 = FUN_0001c070(local_2c);\n          if ((iVar1 == 0) ||\n             (puVar2 = (uint *)FUN_0001d480(&DAT_0002e520,local_2c,local_28), puVar2 == (uint *)0x0)\n             ) goto LAB_0001edd0;\n          if ((DAT_0002e158 & 0x100) == 0) {\n            if (puVar2[1] != local_28 || *puVar2 != local_2c) goto LAB_0001ebe0;\n          }\n          else {\n            printf("[findcall]\tdestpc 0x%lx",local_2c);\n            printf(" child->name %s",puVar2[4]);\n            printf(" child->addr 0x%lx\n",*puVar2);\n            if (puVar2[1] != local_28 || local_2c != *puVar2) goto LAB_0001edd0;\n          }\nLAB_0001eef8:\n          FUN_00014870(param_1,puVar2,0);\n          iVar1 = FUN_0001eac0();\n          uVar4 = local_34 + iVar1;\n          iVar5 = (int)uVar4 >> 0x1f;\n        }\n        else {\n          uVar4 = 1;\n          iVar5 = 0;\n          if (iVar1 == 0xd) goto LAB_0001ec47;\n        }\n      }\n      else {\nLAB_0001ebe0:\n        uVar4 = 1;\n        iVar5 = 0;\n      }\n      bVar6 = CARRY4(param_2,uVar4);\n      param_2 = param_2 + uVar4;\n      param_3 = param_3 + iVar5 + (uint)bVar6;\n      iVar1 = (param_3 - param_5) - (uint)(param_2 < param_4);\n    } while (param_3 < param_5 || param_3 - param_5 < (uint)(param_2 < param_4));\n  }\n  return iVar1;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "uint *puVar2;" type_identifier (pointer_declarator "*puVar2" * identifier) ;) (declaration "undefined4 uVar3;" type_identifier identifier ;) (declaration "uint uVar4;" type_identifier identifier ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "bool bVar6;" primitive_type identifier ;) (declaration "undefined8 uVar7;" type_identifier identifier ;) (declaration "char *local_38;" primitive_type (pointer_declarator "*local_38" * identifier) ;) (declaration "int local_34;" primitive_type identifier ;) (declaration "uint local_2c;" type_identifier identifier ;) (declaration "uint local_28;" type_identifier identifier ;) (if_statement "if (DAT_0002e2a0 == 0) {\n    DAT_0002e2a0 = 1;\n    FUN_0001ce40(&DAT_0002e2c0);\n    DAT_0002e390 = 0x3ff0000000000000;\n    DAT_0002e3ac = &DAT_0002e2c0;\n  }" if (parenthesized_expression "(DAT_0002e2a0 == 0)" ( (binary_expression "DAT_0002e2a0 == 0" identifier == number_literal) )) (compound_statement "{\n    DAT_0002e2a0 = 1;\n    FUN_0001ce40(&DAT_0002e2c0);\n    DAT_0002e390 = 0x3ff0000000000000;\n    DAT_0002e3ac = &DAT_0002e2c0;\n  }" { (expression_statement "DAT_0002e2a0 = 1;" (assignment_expression "DAT_0002e2a0 = 1" identifier = number_literal) ;) (expression_statement "FUN_0001ce40(&DAT_0002e2c0);" (call_expression "FUN_0001ce40(&DAT_0002e2c0)" identifier (argument_list "(&DAT_0002e2c0)" ( (pointer_expression "&DAT_0002e2c0" & identifier) ))) ;) (expression_statement "DAT_0002e390 = 0x3ff0000000000000;" (assignment_expression "DAT_0002e390 = 0x3ff0000000000000" identifier = number_literal) ;) (expression_statement "DAT_0002e3ac = &DAT_0002e2c0;" (assignment_expression "DAT_0002e3ac = &DAT_0002e2c0" identifier = (pointer_expression "&DAT_0002e2c0" & identifier)) ;) })) (if_statement "if ((DAT_0002e158 & 0x100) != 0) {\n    printf("[findcall] %s: 0x%lx to 0x%lx\n",*(undefined4 *)(param_1 + 0x10),param_2,param_4);\n  }" if (parenthesized_expression "((DAT_0002e158 & 0x100) != 0)" ( (binary_expression "(DAT_0002e158 & 0x100) != 0" (parenthesized_expression "(DAT_0002e158 & 0x100)" ( (binary_expression "DAT_0002e158 & 0x100" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n    printf("[findcall] %s: 0x%lx to 0x%lx\n",*(undefined4 *)(param_1 + 0x10),param_2,param_4);\n  }" { (expression_statement "printf("[findcall] %s: 0x%lx to 0x%lx\n",*(undefined4 *)(param_1 + 0x10),param_2,param_4);" (call_expression "printf("[findcall] %s: 0x%lx to 0x%lx\n",*(undefined4 *)(param_1 + 0x10),param_2,param_4)" identifier (argument_list "("[findcall] %s: 0x%lx to 0x%lx\n",*(undefined4 *)(param_1 + 0x10),param_2,param_4)" ( (string_literal ""[findcall] %s: 0x%lx to 0x%lx\n"" " string_content escape_sequence ") , (pointer_expression "*(undefined4 *)(param_1 + 0x10)" * (cast_expression "(undefined4 *)(param_1 + 0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x10)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) )))) , identifier , identifier ))) ;) })) (expression_statement "iVar1 = (param_3 - param_5) - (uint)(param_2 < param_4);" (assignment_expression "iVar1 = (param_3 - param_5) - (uint)(param_2 < param_4)" identifier = (binary_expression "(param_3 - param_5) - (uint)(param_2 < param_4)" (parenthesized_expression "(param_3 - param_5)" ( (binary_expression "param_3 - param_5" identifier - identifier) )) - (call_expression "(uint)(param_2 < param_4)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(param_2 < param_4)" ( (binary_expression "param_2 < param_4" identifier < identifier) ))))) ;) (if_statement "if (param_3 < param_5 || param_3 - param_5 < (uint)(param_2 < param_4)) {\n    do {\n      local_38 = (char *)((param_2 - *(int *)(DAT_0002e4fc + 0x1c)) + DAT_0002e4f0);\n      if (*local_38 == -5) {\n        if ((DAT_0002e158 & 0x100) != 0) {\n          printf("[findcall]\t0x%lx:calls",param_2);\n          iVar1 = FUN_0001e9c0();\n          if ((iVar1 == 0) || (iVar1 == 0xd)) {\n            local_34 = FUN_0001eac0();\n            local_34 = local_34 + 1;\n            local_38 = local_38 + local_34;\n            uVar4 = FUN_0001e9c0();\n            if ((DAT_0002e158 & 0x100) == 0) goto LAB_0001ec6e;\n            uVar3 = FUN_0001e850();\n            printf("\tfirst operand is %s",uVar3);\n            uVar3 = FUN_0001e850();\n            printf("\tsecond operand is %s\n",uVar3);\n            if (0x14 < uVar4) goto LAB_0001edd0;\n            uVar4 = 1 << ((byte)uVar4 & 0x1f);\n            if ((uVar4 & 0x151508) == 0) goto LAB_0001ec89;\nLAB_0001eee4:\n            puVar2 = (uint *)&DAT_0002e2c0;\n            goto LAB_0001eef8;\n          }\nLAB_0001edd0:\n          if ((DAT_0002e158 & 0x100) != 0) {\n            puts("[findcall]\tbut it\'s a botch");\n          }\n          goto LAB_0001ebe0;\n        }\n        iVar1 = FUN_0001e9c0();\n        if (iVar1 == 0) {\nLAB_0001ec47:\n          local_34 = FUN_0001eac0();\n          local_34 = local_34 + 1;\n          local_38 = local_38 + local_34;\n          uVar4 = FUN_0001e9c0();\nLAB_0001ec6e:\n          if (0x14 < uVar4) goto LAB_0001ebe0;\n          uVar4 = 1 << ((byte)uVar4 & 0x1f);\n          if ((uVar4 & 0x151508) != 0) goto LAB_0001eee4;\nLAB_0001ec89:\n          if ((uVar4 & 0xa8000) == 0) goto LAB_0001edd0;\n          iVar1 = FUN_0001e9c0();\n          if (iVar1 == 0x11) {\n            uVar7 = (**(code **)(*(int *)(DAT_0002e4ec + 4) + 0x38))(local_38 + 1);\n            iVar1 = (int)((ulonglong)uVar7 >> 0x20);\n            bVar6 = 0xfffffffd < (uint)uVar7;\n            uVar4 = (uint)uVar7 + 2;\nLAB_0001efc9:\n            local_2c = uVar4 + param_2;\n            local_28 = iVar1 + (uint)bVar6 + param_3 + (uint)CARRY4(uVar4,param_2);\n          }\n          else {\n            if (iVar1 == 0x13) {\n              uVar7 = (**(code **)(*(int *)(DAT_0002e4ec + 4) + 0x2c))(local_38 + 1);\n              iVar1 = (int)((ulonglong)uVar7 >> 0x20);\n              bVar6 = 0xfffffffb < (uint)uVar7;\n              uVar4 = (uint)uVar7 + 4;\n              goto LAB_0001efc9;\n            }\n            if (iVar1 == 0xf) {\n              uVar4 = (byte)(local_38[1] + 0x80) - 0x7f;\n              local_2c = uVar4 + param_2;\n              local_28 = ((int)uVar4 >> 0x1f) + param_3 + (uint)CARRY4(uVar4,param_2);\n            }\n            else {\n              fwrite("[reladdr] not relative address\n",1,0x1f,*(FILE **)PTR_stderr_0002cfcc);\n              local_2c = param_2;\n              local_28 = param_3;\n            }\n          }\n          iVar1 = FUN_0001c070(local_2c);\n          if ((iVar1 == 0) ||\n             (puVar2 = (uint *)FUN_0001d480(&DAT_0002e520,local_2c,local_28), puVar2 == (uint *)0x0)\n             ) goto LAB_0001edd0;\n          if ((DAT_0002e158 & 0x100) == 0) {\n            if (puVar2[1] != local_28 || *puVar2 != local_2c) goto LAB_0001ebe0;\n          }\n          else {\n            printf("[findcall]\tdestpc 0x%lx",local_2c);\n            printf(" child->name %s",puVar2[4]);\n            printf(" child->addr 0x%lx\n",*puVar2);\n            if (puVar2[1] != local_28 || local_2c != *puVar2) goto LAB_0001edd0;\n          }\nLAB_0001eef8:\n          FUN_00014870(param_1,puVar2,0);\n          iVar1 = FUN_0001eac0();\n          uVar4 = local_34 + iVar1;\n          iVar5 = (int)uVar4 >> 0x1f;\n        }\n        else {\n          uVar4 = 1;\n          iVar5 = 0;\n          if (iVar1 == 0xd) goto LAB_0001ec47;\n        }\n      }\n      else {\nLAB_0001ebe0:\n        uVar4 = 1;\n        iVar5 = 0;\n      }\n      bVar6 = CARRY4(param_2,uVar4);\n      param_2 = param_2 + uVar4;\n      param_3 = param_3 + iVar5 + (uint)bVar6;\n      iVar1 = (param_3 - param_5) - (uint)(param_2 < param_4);\n    } while (param_3 < param_5 || param_3 - param_5 < (uint)(param_2 < param_4));\n  }" if (parenthesized_expression "(param_3 < param_5 || param_3 - param_5 < (uint)(param_2 < param_4))" ( (binary_expression "param_3 < param_5 || param_3 - param_5 < (uint)(param_2 < param_4)" (binary_expression "param_3 < param_5" identifier < identifier) || (binary_expression "param_3 - param_5 < (uint)(param_2 < param_4)" (binary_expression "param_3 - param_5" identifier - identifier) < (call_expression "(uint)(param_2 < param_4)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(param_2 < param_4)" ( (binary_expression "param_2 < param_4" identifier < identifier) ))))) )) (compound_statement "{\n    do {\n      local_38 = (char *)((param_2 - *(int *)(DAT_0002e4fc + 0x1c)) + DAT_0002e4f0);\n      if (*local_38 == -5) {\n        if ((DAT_0002e158 & 0x100) != 0) {\n          printf("[findcall]\t0x%lx:calls",param_2);\n          iVar1 = FUN_0001e9c0();\n          if ((iVar1 == 0) || (iVar1 == 0xd)) {\n            local_34 = FUN_0001eac0();\n            local_34 = local_34 + 1;\n            local_38 = local_38 + local_34;\n            uVar4 = FUN_0001e9c0();\n            if ((DAT_0002e158 & 0x100) == 0) goto LAB_0001ec6e;\n            uVar3 = FUN_0001e850();\n            printf("\tfirst operand is %s",uVar3);\n            uVar3 = FUN_0001e850();\n            printf("\tsecond operand is %s\n",uVar3);\n            if (0x14 < uVar4) goto LAB_0001edd0;\n            uVar4 = 1 << ((byte)uVar4 & 0x1f);\n            if ((uVar4 & 0x151508) == 0) goto LAB_0001ec89;\nLAB_0001eee4:\n            puVar2 = (uint *)&DAT_0002e2c0;\n            goto LAB_0001eef8;\n          }\nLAB_0001edd0:\n          if ((DAT_0002e158 & 0x100) != 0) {\n            puts("[findcall]\tbut it\'s a botch");\n          }\n          goto LAB_0001ebe0;\n        }\n        iVar1 = FUN_0001e9c0();\n        if (iVar1 == 0) {\nLAB_0001ec47:\n          local_34 = FUN_0001eac0();\n          local_34 = local_34 + 1;\n          local_38 = local_38 + local_34;\n          uVar4 = FUN_0001e9c0();\nLAB_0001ec6e:\n          if (0x14 < uVar4) goto LAB_0001ebe0;\n          uVar4 = 1 << ((byte)uVar4 & 0x1f);\n          if ((uVar4 & 0x151508) != 0) goto LAB_0001eee4;\nLAB_0001ec89:\n          if ((uVar4 & 0xa8000) == 0) goto LAB_0001edd0;\n          iVar1 = FUN_0001e9c0();\n          if (iVar1 == 0x11) {\n            uVar7 = (**(code **)(*(int *)(DAT_0002e4ec + 4) + 0x38))(local_38 + 1);\n            iVar1 = (int)((ulonglong)uVar7 >> 0x20);\n            bVar6 = 0xfffffffd < (uint)uVar7;\n            uVar4 = (uint)uVar7 + 2;\nLAB_0001efc9:\n            local_2c = uVar4 + param_2;\n            local_28 = iVar1 + (uint)bVar6 + param_3 + (uint)CARRY4(uVar4,param_2);\n          }\n          else {\n            if (iVar1 == 0x13) {\n              uVar7 = (**(code **)(*(int *)(DAT_0002e4ec + 4) + 0x2c))(local_38 + 1);\n              iVar1 = (int)((ulonglong)uVar7 >> 0x20);\n              bVar6 = 0xfffffffb < (uint)uVar7;\n              uVar4 = (uint)uVar7 + 4;\n              goto LAB_0001efc9;\n            }\n            if (iVar1 == 0xf) {\n              uVar4 = (byte)(local_38[1] + 0x80) - 0x7f;\n              local_2c = uVar4 + param_2;\n              local_28 = ((int)uVar4 >> 0x1f) + param_3 + (uint)CARRY4(uVar4,param_2);\n            }\n            else {\n              fwrite("[reladdr] not relative address\n",1,0x1f,*(FILE **)PTR_stderr_0002cfcc);\n              local_2c = param_2;\n              local_28 = param_3;\n            }\n          }\n          iVar1 = FUN_0001c070(local_2c);\n          if ((iVar1 == 0) ||\n             (puVar2 = (uint *)FUN_0001d480(&DAT_0002e520,local_2c,local_28), puVar2 == (uint *)0x0)\n             ) goto LAB_0001edd0;\n          if ((DAT_0002e158 & 0x100) == 0) {\n            if (puVar2[1] != local_28 || *puVar2 != local_2c) goto LAB_0001ebe0;\n          }\n          else {\n            printf("[findcall]\tdestpc 0x%lx",local_2c);\n            printf(" child->name %s",puVar2[4]);\n            printf(" child->addr 0x%lx\n",*puVar2);\n            if (puVar2[1] != local_28 || local_2c != *puVar2) goto LAB_0001edd0;\n          }\nLAB_0001eef8:\n          FUN_00014870(param_1,puVar2,0);\n          iVar1 = FUN_0001eac0();\n          uVar4 = local_34 + iVar1;\n          iVar5 = (int)uVar4 >> 0x1f;\n        }\n        else {\n          uVar4 = 1;\n          iVar5 = 0;\n          if (iVar1 == 0xd) goto LAB_0001ec47;\n        }\n      }\n      else {\nLAB_0001ebe0:\n        uVar4 = 1;\n        iVar5 = 0;\n      }\n      bVar6 = CARRY4(param_2,uVar4);\n      param_2 = param_2 + uVar4;\n      param_3 = param_3 + iVar5 + (uint)bVar6;\n      iVar1 = (param_3 - param_5) - (uint)(param_2 < param_4);\n    } while (param_3 < param_5 || param_3 - param_5 < (uint)(param_2 < param_4));\n  }" { (do_statement "do {\n      local_38 = (char *)((param_2 - *(int *)(DAT_0002e4fc + 0x1c)) + DAT_0002e4f0);\n      if (*local_38 == -5) {\n        if ((DAT_0002e158 & 0x100) != 0) {\n          printf("[findcall]\t0x%lx:calls",param_2);\n          iVar1 = FUN_0001e9c0();\n          if ((iVar1 == 0) || (iVar1 == 0xd)) {\n            local_34 = FUN_0001eac0();\n            local_34 = local_34 + 1;\n            local_38 = local_38 + local_34;\n            uVar4 = FUN_0001e9c0();\n            if ((DAT_0002e158 & 0x100) == 0) goto LAB_0001ec6e;\n            uVar3 = FUN_0001e850();\n            printf("\tfirst operand is %s",uVar3);\n            uVar3 = FUN_0001e850();\n            printf("\tsecond operand is %s\n",uVar3);\n            if (0x14 < uVar4) goto LAB_0001edd0;\n            uVar4 = 1 << ((byte)uVar4 & 0x1f);\n            if ((uVar4 & 0x151508) == 0) goto LAB_0001ec89;\nLAB_0001eee4:\n            puVar2 = (uint *)&DAT_0002e2c0;\n            goto LAB_0001eef8;\n          }\nLAB_0001edd0:\n          if ((DAT_0002e158 & 0x100) != 0) {\n            puts("[findcall]\tbut it\'s a botch");\n          }\n          goto LAB_0001ebe0;\n        }\n        iVar1 = FUN_0001e9c0();\n        if (iVar1 == 0) {\nLAB_0001ec47:\n          local_34 = FUN_0001eac0();\n          local_34 = local_34 + 1;\n          local_38 = local_38 + local_34;\n          uVar4 = FUN_0001e9c0();\nLAB_0001ec6e:\n          if (0x14 < uVar4) goto LAB_0001ebe0;\n          uVar4 = 1 << ((byte)uVar4 & 0x1f);\n          if ((uVar4 & 0x151508) != 0) goto LAB_0001eee4;\nLAB_0001ec89:\n          if ((uVar4 & 0xa8000) == 0) goto LAB_0001edd0;\n          iVar1 = FUN_0001e9c0();\n          if (iVar1 == 0x11) {\n            uVar7 = (**(code **)(*(int *)(DAT_0002e4ec + 4) + 0x38))(local_38 + 1);\n            iVar1 = (int)((ulonglong)uVar7 >> 0x20);\n            bVar6 = 0xfffffffd < (uint)uVar7;\n            uVar4 = (uint)uVar7 + 2;\nLAB_0001efc9:\n            local_2c = uVar4 + param_2;\n            local_28 = iVar1 + (uint)bVar6 + param_3 + (uint)CARRY4(uVar4,param_2);\n          }\n          else {\n            if (iVar1 == 0x13) {\n              uVar7 = (**(code **)(*(int *)(DAT_0002e4ec + 4) + 0x2c))(local_38 + 1);\n              iVar1 = (int)((ulonglong)uVar7 >> 0x20);\n              bVar6 = 0xfffffffb < (uint)uVar7;\n              uVar4 = (uint)uVar7 + 4;\n              goto LAB_0001efc9;\n            }\n            if (iVar1 == 0xf) {\n              uVar4 = (byte)(local_38[1] + 0x80) - 0x7f;\n              local_2c = uVar4 + param_2;\n              local_28 = ((int)uVar4 >> 0x1f) + param_3 + (uint)CARRY4(uVar4,param_2);\n            }\n            else {\n              fwrite("[reladdr] not relative address\n",1,0x1f,*(FILE **)PTR_stderr_0002cfcc);\n              local_2c = param_2;\n              local_28 = param_3;\n            }\n          }\n          iVar1 = FUN_0001c070(local_2c);\n          if ((iVar1 == 0) ||\n             (puVar2 = (uint *)FUN_0001d480(&DAT_0002e520,local_2c,local_28), puVar2 == (uint *)0x0)\n             ) goto LAB_0001edd0;\n          if ((DAT_0002e158 & 0x100) == 0) {\n            if (puVar2[1] != local_28 || *puVar2 != local_2c) goto LAB_0001ebe0;\n          }\n          else {\n            printf("[findcall]\tdestpc 0x%lx",local_2c);\n            printf(" child->name %s",puVar2[4]);\n            printf(" child->addr 0x%lx\n",*puVar2);\n            if (puVar2[1] != local_28 || local_2c != *puVar2) goto LAB_0001edd0;\n          }\nLAB_0001eef8:\n          FUN_00014870(param_1,puVar2,0);\n          iVar1 = FUN_0001eac0();\n          uVar4 = local_34 + iVar1;\n          iVar5 = (int)uVar4 >> 0x1f;\n        }\n        else {\n          uVar4 = 1;\n          iVar5 = 0;\n          if (iVar1 == 0xd) goto LAB_0001ec47;\n        }\n      }\n      else {\nLAB_0001ebe0:\n        uVar4 = 1;\n        iVar5 = 0;\n      }\n      bVar6 = CARRY4(param_2,uVar4);\n      param_2 = param_2 + uVar4;\n      param_3 = param_3 + iVar5 + (uint)bVar6;\n      iVar1 = (param_3 - param_5) - (uint)(param_2 < param_4);\n    } while (param_3 < param_5 || param_3 - param_5 < (uint)(param_2 < param_4));" do (compound_statement "{\n      local_38 = (char *)((param_2 - *(int *)(DAT_0002e4fc + 0x1c)) + DAT_0002e4f0);\n      if (*local_38 == -5) {\n        if ((DAT_0002e158 & 0x100) != 0) {\n          printf("[findcall]\t0x%lx:calls",param_2);\n          iVar1 = FUN_0001e9c0();\n          if ((iVar1 == 0) || (iVar1 == 0xd)) {\n            local_34 = FUN_0001eac0();\n            local_34 = local_34 + 1;\n            local_38 = local_38 + local_34;\n            uVar4 = FUN_0001e9c0();\n            if ((DAT_0002e158 & 0x100) == 0) goto LAB_0001ec6e;\n            uVar3 = FUN_0001e850();\n            printf("\tfirst operand is %s",uVar3);\n            uVar3 = FUN_0001e850();\n            printf("\tsecond operand is %s\n",uVar3);\n            if (0x14 < uVar4) goto LAB_0001edd0;\n            uVar4 = 1 << ((byte)uVar4 & 0x1f);\n            if ((uVar4 & 0x151508) == 0) goto LAB_0001ec89;\nLAB_0001eee4:\n            puVar2 = (uint *)&DAT_0002e2c0;\n            goto LAB_0001eef8;\n          }\nLAB_0001edd0:\n          if ((DAT_0002e158 & 0x100) != 0) {\n            puts("[findcall]\tbut it\'s a botch");\n          }\n          goto LAB_0001ebe0;\n        }\n        iVar1 = FUN_0001e9c0();\n        if (iVar1 == 0) {\nLAB_0001ec47:\n          local_34 = FUN_0001eac0();\n          local_34 = local_34 + 1;\n          local_38 = local_38 + local_34;\n          uVar4 = FUN_0001e9c0();\nLAB_0001ec6e:\n          if (0x14 < uVar4) goto LAB_0001ebe0;\n          uVar4 = 1 << ((byte)uVar4 & 0x1f);\n          if ((uVar4 & 0x151508) != 0) goto LAB_0001eee4;\nLAB_0001ec89:\n          if ((uVar4 & 0xa8000) == 0) goto LAB_0001edd0;\n          iVar1 = FUN_0001e9c0();\n          if (iVar1 == 0x11) {\n            uVar7 = (**(code **)(*(int *)(DAT_0002e4ec + 4) + 0x38))(local_38 + 1);\n            iVar1 = (int)((ulonglong)uVar7 >> 0x20);\n            bVar6 = 0xfffffffd < (uint)uVar7;\n            uVar4 = (uint)uVar7 + 2;\nLAB_0001efc9:\n            local_2c = uVar4 + param_2;\n            local_28 = iVar1 + (uint)bVar6 + param_3 + (uint)CARRY4(uVar4,param_2);\n          }\n          else {\n            if (iVar1 == 0x13) {\n              uVar7 = (**(code **)(*(int *)(DAT_0002e4ec + 4) + 0x2c))(local_38 + 1);\n              iVar1 = (int)((ulonglong)uVar7 >> 0x20);\n              bVar6 = 0xfffffffb < (uint)uVar7;\n              uVar4 = (uint)uVar7 + 4;\n              goto LAB_0001efc9;\n            }\n            if (iVar1 == 0xf) {\n              uVar4 = (byte)(local_38[1] + 0x80) - 0x7f;\n              local_2c = uVar4 + param_2;\n              local_28 = ((int)uVar4 >> 0x1f) + param_3 + (uint)CARRY4(uVar4,param_2);\n            }\n            else {\n              fwrite("[reladdr] not relative address\n",1,0x1f,*(FILE **)PTR_stderr_0002cfcc);\n              local_2c = param_2;\n              local_28 = param_3;\n            }\n          }\n          iVar1 = FUN_0001c070(local_2c);\n          if ((iVar1 == 0) ||\n             (puVar2 = (uint *)FUN_0001d480(&DAT_0002e520,local_2c,local_28), puVar2 == (uint *)0x0)\n             ) goto LAB_0001edd0;\n          if ((DAT_0002e158 & 0x100) == 0) {\n            if (puVar2[1] != local_28 || *puVar2 != local_2c) goto LAB_0001ebe0;\n          }\n          else {\n            printf("[findcall]\tdestpc 0x%lx",local_2c);\n            printf(" child->name %s",puVar2[4]);\n            printf(" child->addr 0x%lx\n",*puVar2);\n            if (puVar2[1] != local_28 || local_2c != *puVar2) goto LAB_0001edd0;\n          }\nLAB_0001eef8:\n          FUN_00014870(param_1,puVar2,0);\n          iVar1 = FUN_0001eac0();\n          uVar4 = local_34 + iVar1;\n          iVar5 = (int)uVar4 >> 0x1f;\n        }\n        else {\n          uVar4 = 1;\n          iVar5 = 0;\n          if (iVar1 == 0xd) goto LAB_0001ec47;\n        }\n      }\n      else {\nLAB_0001ebe0:\n        uVar4 = 1;\n        iVar5 = 0;\n      }\n      bVar6 = CARRY4(param_2,uVar4);\n      param_2 = param_2 + uVar4;\n      param_3 = param_3 + iVar5 + (uint)bVar6;\n      iVar1 = (param_3 - param_5) - (uint)(param_2 < param_4);\n    }" { (expression_statement "local_38 = (char *)((param_2 - *(int *)(DAT_0002e4fc + 0x1c)) + DAT_0002e4f0);" (assignment_expression "local_38 = (char *)((param_2 - *(int *)(DAT_0002e4fc + 0x1c)) + DAT_0002e4f0)" identifier = (cast_expression "(char *)((param_2 - *(int *)(DAT_0002e4fc + 0x1c)) + DAT_0002e4f0)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((param_2 - *(int *)(DAT_0002e4fc + 0x1c)) + DAT_0002e4f0)" ( (binary_expression "(param_2 - *(int *)(DAT_0002e4fc + 0x1c)) + DAT_0002e4f0" (parenthesized_expression "(param_2 - *(int *)(DAT_0002e4fc + 0x1c))" ( (binary_expression "param_2 - *(int *)(DAT_0002e4fc + 0x1c)" identifier - (pointer_expression "*(int *)(DAT_0002e4fc + 0x1c)" * (cast_expression "(int *)(DAT_0002e4fc + 0x1c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(DAT_0002e4fc + 0x1c)" ( (binary_expression "DAT_0002e4fc + 0x1c" identifier + number_literal) ))))) )) + identifier) )))) ;) (if_statement "if (*local_38 == -5) {\n        if ((DAT_0002e158 & 0x100) != 0) {\n          printf("[findcall]\t0x%lx:calls",param_2);\n          iVar1 = FUN_0001e9c0();\n          if ((iVar1 == 0) || (iVar1 == 0xd)) {\n            local_34 = FUN_0001eac0();\n            local_34 = local_34 + 1;\n            local_38 = local_38 + local_34;\n            uVar4 = FUN_0001e9c0();\n            if ((DAT_0002e158 & 0x100) == 0) goto LAB_0001ec6e;\n            uVar3 = FUN_0001e850();\n            printf("\tfirst operand is %s",uVar3);\n            uVar3 = FUN_0001e850();\n            printf("\tsecond operand is %s\n",uVar3);\n            if (0x14 < uVar4) goto LAB_0001edd0;\n            uVar4 = 1 << ((byte)uVar4 & 0x1f);\n            if ((uVar4 & 0x151508) == 0) goto LAB_0001ec89;\nLAB_0001eee4:\n            puVar2 = (uint *)&DAT_0002e2c0;\n            goto LAB_0001eef8;\n          }\nLAB_0001edd0:\n          if ((DAT_0002e158 & 0x100) != 0) {\n            puts("[findcall]\tbut it\'s a botch");\n          }\n          goto LAB_0001ebe0;\n        }\n        iVar1 = FUN_0001e9c0();\n        if (iVar1 == 0) {\nLAB_0001ec47:\n          local_34 = FUN_0001eac0();\n          local_34 = local_34 + 1;\n          local_38 = local_38 + local_34;\n          uVar4 = FUN_0001e9c0();\nLAB_0001ec6e:\n          if (0x14 < uVar4) goto LAB_0001ebe0;\n          uVar4 = 1 << ((byte)uVar4 & 0x1f);\n          if ((uVar4 & 0x151508) != 0) goto LAB_0001eee4;\nLAB_0001ec89:\n          if ((uVar4 & 0xa8000) == 0) goto LAB_0001edd0;\n          iVar1 = FUN_0001e9c0();\n          if (iVar1 == 0x11) {\n            uVar7 = (**(code **)(*(int *)(DAT_0002e4ec + 4) + 0x38))(local_38 + 1);\n            iVar1 = (int)((ulonglong)uVar7 >> 0x20);\n            bVar6 = 0xfffffffd < (uint)uVar7;\n            uVar4 = (uint)uVar7 + 2;\nLAB_0001efc9:\n            local_2c = uVar4 + param_2;\n            local_28 = iVar1 + (uint)bVar6 + param_3 + (uint)CARRY4(uVar4,param_2);\n          }\n          else {\n            if (iVar1 == 0x13) {\n              uVar7 = (**(code **)(*(int *)(DAT_0002e4ec + 4) + 0x2c))(local_38 + 1);\n              iVar1 = (int)((ulonglong)uVar7 >> 0x20);\n              bVar6 = 0xfffffffb < (uint)uVar7;\n              uVar4 = (uint)uVar7 + 4;\n              goto LAB_0001efc9;\n            }\n            if (iVar1 == 0xf) {\n              uVar4 = (byte)(local_38[1] + 0x80) - 0x7f;\n              local_2c = uVar4 + param_2;\n              local_28 = ((int)uVar4 >> 0x1f) + param_3 + (uint)CARRY4(uVar4,param_2);\n            }\n            else {\n              fwrite("[reladdr] not relative address\n",1,0x1f,*(FILE **)PTR_stderr_0002cfcc);\n              local_2c = param_2;\n              local_28 = param_3;\n            }\n          }\n          iVar1 = FUN_0001c070(local_2c);\n          if ((iVar1 == 0) ||\n             (puVar2 = (uint *)FUN_0001d480(&DAT_0002e520,local_2c,local_28), puVar2 == (uint *)0x0)\n             ) goto LAB_0001edd0;\n          if ((DAT_0002e158 & 0x100) == 0) {\n            if (puVar2[1] != local_28 || *puVar2 != local_2c) goto LAB_0001ebe0;\n          }\n          else {\n            printf("[findcall]\tdestpc 0x%lx",local_2c);\n            printf(" child->name %s",puVar2[4]);\n            printf(" child->addr 0x%lx\n",*puVar2);\n            if (puVar2[1] != local_28 || local_2c != *puVar2) goto LAB_0001edd0;\n          }\nLAB_0001eef8:\n          FUN_00014870(param_1,puVar2,0);\n          iVar1 = FUN_0001eac0();\n          uVar4 = local_34 + iVar1;\n          iVar5 = (int)uVar4 >> 0x1f;\n        }\n        else {\n          uVar4 = 1;\n          iVar5 = 0;\n          if (iVar1 == 0xd) goto LAB_0001ec47;\n        }\n      }\n      else {\nLAB_0001ebe0:\n        uVar4 = 1;\n        iVar5 = 0;\n      }" if (parenthesized_expression "(*local_38 == -5)" ( (binary_expression "*local_38 == -5" (pointer_expression "*local_38" * identifier) == number_literal) )) (compound_statement "{\n        if ((DAT_0002e158 & 0x100) != 0) {\n          printf("[findcall]\t0x%lx:calls",param_2);\n          iVar1 = FUN_0001e9c0();\n          if ((iVar1 == 0) || (iVar1 == 0xd)) {\n            local_34 = FUN_0001eac0();\n            local_34 = local_34 + 1;\n            local_38 = local_38 + local_34;\n            uVar4 = FUN_0001e9c0();\n            if ((DAT_0002e158 & 0x100) == 0) goto LAB_0001ec6e;\n            uVar3 = FUN_0001e850();\n            printf("\tfirst operand is %s",uVar3);\n            uVar3 = FUN_0001e850();\n            printf("\tsecond operand is %s\n",uVar3);\n            if (0x14 < uVar4) goto LAB_0001edd0;\n            uVar4 = 1 << ((byte)uVar4 & 0x1f);\n            if ((uVar4 & 0x151508) == 0) goto LAB_0001ec89;\nLAB_0001eee4:\n            puVar2 = (uint *)&DAT_0002e2c0;\n            goto LAB_0001eef8;\n          }\nLAB_0001edd0:\n          if ((DAT_0002e158 & 0x100) != 0) {\n            puts("[findcall]\tbut it\'s a botch");\n          }\n          goto LAB_0001ebe0;\n        }\n        iVar1 = FUN_0001e9c0();\n        if (iVar1 == 0) {\nLAB_0001ec47:\n          local_34 = FUN_0001eac0();\n          local_34 = local_34 + 1;\n          local_38 = local_38 + local_34;\n          uVar4 = FUN_0001e9c0();\nLAB_0001ec6e:\n          if (0x14 < uVar4) goto LAB_0001ebe0;\n          uVar4 = 1 << ((byte)uVar4 & 0x1f);\n          if ((uVar4 & 0x151508) != 0) goto LAB_0001eee4;\nLAB_0001ec89:\n          if ((uVar4 & 0xa8000) == 0) goto LAB_0001edd0;\n          iVar1 = FUN_0001e9c0();\n          if (iVar1 == 0x11) {\n            uVar7 = (**(code **)(*(int *)(DAT_0002e4ec + 4) + 0x38))(local_38 + 1);\n            iVar1 = (int)((ulonglong)uVar7 >> 0x20);\n            bVar6 = 0xfffffffd < (uint)uVar7;\n            uVar4 = (uint)uVar7 + 2;\nLAB_0001efc9:\n            local_2c = uVar4 + param_2;\n            local_28 = iVar1 + (uint)bVar6 + param_3 + (uint)CARRY4(uVar4,param_2);\n          }\n          else {\n            if (iVar1 == 0x13) {\n              uVar7 = (**(code **)(*(int *)(DAT_0002e4ec + 4) + 0x2c))(local_38 + 1);\n              iVar1 = (int)((ulonglong)uVar7 >> 0x20);\n              bVar6 = 0xfffffffb < (uint)uVar7;\n              uVar4 = (uint)uVar7 + 4;\n              goto LAB_0001efc9;\n            }\n            if (iVar1 == 0xf) {\n              uVar4 = (byte)(local_38[1] + 0x80) - 0x7f;\n              local_2c = uVar4 + param_2;\n              local_28 = ((int)uVar4 >> 0x1f) + param_3 + (uint)CARRY4(uVar4,param_2);\n            }\n            else {\n              fwrite("[reladdr] not relative address\n",1,0x1f,*(FILE **)PTR_stderr_0002cfcc);\n              local_2c = param_2;\n              local_28 = param_3;\n            }\n          }\n          iVar1 = FUN_0001c070(local_2c);\n          if ((iVar1 == 0) ||\n             (puVar2 = (uint *)FUN_0001d480(&DAT_0002e520,local_2c,local_28), puVar2 == (uint *)0x0)\n             ) goto LAB_0001edd0;\n          if ((DAT_0002e158 & 0x100) == 0) {\n            if (puVar2[1] != local_28 || *puVar2 != local_2c) goto LAB_0001ebe0;\n          }\n          else {\n            printf("[findcall]\tdestpc 0x%lx",local_2c);\n            printf(" child->name %s",puVar2[4]);\n            printf(" child->addr 0x%lx\n",*puVar2);\n            if (puVar2[1] != local_28 || local_2c != *puVar2) goto LAB_0001edd0;\n          }\nLAB_0001eef8:\n          FUN_00014870(param_1,puVar2,0);\n          iVar1 = FUN_0001eac0();\n          uVar4 = local_34 + iVar1;\n          iVar5 = (int)uVar4 >> 0x1f;\n        }\n        else {\n          uVar4 = 1;\n          iVar5 = 0;\n          if (iVar1 == 0xd) goto LAB_0001ec47;\n        }\n      }" { (if_statement "if ((DAT_0002e158 & 0x100) != 0) {\n          printf("[findcall]\t0x%lx:calls",param_2);\n          iVar1 = FUN_0001e9c0();\n          if ((iVar1 == 0) || (iVar1 == 0xd)) {\n            local_34 = FUN_0001eac0();\n            local_34 = local_34 + 1;\n            local_38 = local_38 + local_34;\n            uVar4 = FUN_0001e9c0();\n            if ((DAT_0002e158 & 0x100) == 0) goto LAB_0001ec6e;\n            uVar3 = FUN_0001e850();\n            printf("\tfirst operand is %s",uVar3);\n            uVar3 = FUN_0001e850();\n            printf("\tsecond operand is %s\n",uVar3);\n            if (0x14 < uVar4) goto LAB_0001edd0;\n            uVar4 = 1 << ((byte)uVar4 & 0x1f);\n            if ((uVar4 & 0x151508) == 0) goto LAB_0001ec89;\nLAB_0001eee4:\n            puVar2 = (uint *)&DAT_0002e2c0;\n            goto LAB_0001eef8;\n          }\nLAB_0001edd0:\n          if ((DAT_0002e158 & 0x100) != 0) {\n            puts("[findcall]\tbut it\'s a botch");\n          }\n          goto LAB_0001ebe0;\n        }" if (parenthesized_expression "((DAT_0002e158 & 0x100) != 0)" ( (binary_expression "(DAT_0002e158 & 0x100) != 0" (parenthesized_expression "(DAT_0002e158 & 0x100)" ( (binary_expression "DAT_0002e158 & 0x100" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n          printf("[findcall]\t0x%lx:calls",param_2);\n          iVar1 = FUN_0001e9c0();\n          if ((iVar1 == 0) || (iVar1 == 0xd)) {\n            local_34 = FUN_0001eac0();\n            local_34 = local_34 + 1;\n            local_38 = local_38 + local_34;\n            uVar4 = FUN_0001e9c0();\n            if ((DAT_0002e158 & 0x100) == 0) goto LAB_0001ec6e;\n            uVar3 = FUN_0001e850();\n            printf("\tfirst operand is %s",uVar3);\n            uVar3 = FUN_0001e850();\n            printf("\tsecond operand is %s\n",uVar3);\n            if (0x14 < uVar4) goto LAB_0001edd0;\n            uVar4 = 1 << ((byte)uVar4 & 0x1f);\n            if ((uVar4 & 0x151508) == 0) goto LAB_0001ec89;\nLAB_0001eee4:\n            puVar2 = (uint *)&DAT_0002e2c0;\n            goto LAB_0001eef8;\n          }\nLAB_0001edd0:\n          if ((DAT_0002e158 & 0x100) != 0) {\n            puts("[findcall]\tbut it\'s a botch");\n          }\n          goto LAB_0001ebe0;\n        }" { (expression_statement "printf("[findcall]\t0x%lx:calls",param_2);" (call_expression "printf("[findcall]\t0x%lx:calls",param_2)" identifier (argument_list "("[findcall]\t0x%lx:calls",param_2)" ( (string_literal ""[findcall]\t0x%lx:calls"" " string_content escape_sequence string_content ") , identifier ))) ;) (expression_statement "iVar1 = FUN_0001e9c0();" (assignment_expression "iVar1 = FUN_0001e9c0()" identifier = (call_expression "FUN_0001e9c0()" identifier (argument_list "()" ( )))) ;) (if_statement "if ((iVar1 == 0) || (iVar1 == 0xd)) {\n            local_34 = FUN_0001eac0();\n            local_34 = local_34 + 1;\n            local_38 = local_38 + local_34;\n            uVar4 = FUN_0001e9c0();\n            if ((DAT_0002e158 & 0x100) == 0) goto LAB_0001ec6e;\n            uVar3 = FUN_0001e850();\n            printf("\tfirst operand is %s",uVar3);\n            uVar3 = FUN_0001e850();\n            printf("\tsecond operand is %s\n",uVar3);\n            if (0x14 < uVar4) goto LAB_0001edd0;\n            uVar4 = 1 << ((byte)uVar4 & 0x1f);\n            if ((uVar4 & 0x151508) == 0) goto LAB_0001ec89;\nLAB_0001eee4:\n            puVar2 = (uint *)&DAT_0002e2c0;\n            goto LAB_0001eef8;\n          }" if (parenthesized_expression "((iVar1 == 0) || (iVar1 == 0xd))" ( (binary_expression "(iVar1 == 0) || (iVar1 == 0xd)" (parenthesized_expression "(iVar1 == 0)" ( (binary_expression "iVar1 == 0" identifier == number_literal) )) || (parenthesized_expression "(iVar1 == 0xd)" ( (binary_expression "iVar1 == 0xd" identifier == number_literal) ))) )) (compound_statement "{\n            local_34 = FUN_0001eac0();\n            local_34 = local_34 + 1;\n            local_38 = local_38 + local_34;\n            uVar4 = FUN_0001e9c0();\n            if ((DAT_0002e158 & 0x100) == 0) goto LAB_0001ec6e;\n            uVar3 = FUN_0001e850();\n            printf("\tfirst operand is %s",uVar3);\n            uVar3 = FUN_0001e850();\n            printf("\tsecond operand is %s\n",uVar3);\n            if (0x14 < uVar4) goto LAB_0001edd0;\n            uVar4 = 1 << ((byte)uVar4 & 0x1f);\n            if ((uVar4 & 0x151508) == 0) goto LAB_0001ec89;\nLAB_0001eee4:\n            puVar2 = (uint *)&DAT_0002e2c0;\n            goto LAB_0001eef8;\n          }" { (expression_statement "local_34 = FUN_0001eac0();" (assignment_expression "local_34 = FUN_0001eac0()" identifier = (call_expression "FUN_0001eac0()" identifier (argument_list "()" ( )))) ;) (expression_statement "local_34 = local_34 + 1;" (assignment_expression "local_34 = local_34 + 1" identifier = (binary_expression "local_34 + 1" identifier + number_literal)) ;) (expression_statement "local_38 = local_38 + local_34;" (assignment_expression "local_38 = local_38 + local_34" identifier = (binary_expression "local_38 + local_34" identifier + identifier)) ;) (expression_statement "uVar4 = FUN_0001e9c0();" (assignment_expression "uVar4 = FUN_0001e9c0()" identifier = (call_expression "FUN_0001e9c0()" identifier (argument_list "()" ( )))) ;) (if_statement "if ((DAT_0002e158 & 0x100) == 0) goto LAB_0001ec6e;" if (parenthesized_expression "((DAT_0002e158 & 0x100) == 0)" ( (binary_expression "(DAT_0002e158 & 0x100) == 0" (parenthesized_expression "(DAT_0002e158 & 0x100)" ( (binary_expression "DAT_0002e158 & 0x100" identifier & number_literal) )) == number_literal) )) (goto_statement "goto LAB_0001ec6e;" goto statement_identifier ;)) (expression_statement "uVar3 = FUN_0001e850();" (assignment_expression "uVar3 = FUN_0001e850()" identifier = (call_expression "FUN_0001e850()" identifier (argument_list "()" ( )))) ;) (expression_statement "printf("\tfirst operand is %s",uVar3);" (call_expression "printf("\tfirst operand is %s",uVar3)" identifier (argument_list "("\tfirst operand is %s",uVar3)" ( (string_literal ""\tfirst operand is %s"" " escape_sequence string_content ") , identifier ))) ;) (expression_statement "uVar3 = FUN_0001e850();" (assignment_expression "uVar3 = FUN_0001e850()" identifier = (call_expression "FUN_0001e850()" identifier (argument_list "()" ( )))) ;) (expression_statement "printf("\tsecond operand is %s\n",uVar3);" (call_expression "printf("\tsecond operand is %s\n",uVar3)" identifier (argument_list "("\tsecond operand is %s\n",uVar3)" ( (string_literal ""\tsecond operand is %s\n"" " escape_sequence string_content escape_sequence ") , identifier ))) ;) (if_statement "if (0x14 < uVar4) goto LAB_0001edd0;" if (parenthesized_expression "(0x14 < uVar4)" ( (binary_expression "0x14 < uVar4" number_literal < identifier) )) (goto_statement "goto LAB_0001edd0;" goto statement_identifier ;)) (expression_statement "uVar4 = 1 << ((byte)uVar4 & 0x1f);" (assignment_expression "uVar4 = 1 << ((byte)uVar4 & 0x1f)" identifier = (binary_expression "1 << ((byte)uVar4 & 0x1f)" number_literal << (parenthesized_expression "((byte)uVar4 & 0x1f)" ( (binary_expression "(byte)uVar4 & 0x1f" (cast_expression "(byte)uVar4" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) )))) ;) (if_statement "if ((uVar4 & 0x151508) == 0) goto LAB_0001ec89;" if (parenthesized_expression "((uVar4 & 0x151508) == 0)" ( (binary_expression "(uVar4 & 0x151508) == 0" (parenthesized_expression "(uVar4 & 0x151508)" ( (binary_expression "uVar4 & 0x151508" identifier & number_literal) )) == number_literal) )) (goto_statement "goto LAB_0001ec89;" goto statement_identifier ;)) (labeled_statement "LAB_0001eee4:\n            puVar2 = (uint *)&DAT_0002e2c0;" statement_identifier : (expression_statement "puVar2 = (uint *)&DAT_0002e2c0;" (assignment_expression "puVar2 = (uint *)&DAT_0002e2c0" identifier = (cast_expression "(uint *)&DAT_0002e2c0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&DAT_0002e2c0" & identifier))) ;)) (goto_statement "goto LAB_0001eef8;" goto statement_identifier ;) })) (labeled_statement "LAB_0001edd0:\n          if ((DAT_0002e158 & 0x100) != 0) {\n            puts("[findcall]\tbut it\'s a botch");\n          }" statement_identifier : (if_statement "if ((DAT_0002e158 & 0x100) != 0) {\n            puts("[findcall]\tbut it\'s a botch");\n          }" if (parenthesized_expression "((DAT_0002e158 & 0x100) != 0)" ( (binary_expression "(DAT_0002e158 & 0x100) != 0" (parenthesized_expression "(DAT_0002e158 & 0x100)" ( (binary_expression "DAT_0002e158 & 0x100" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n            puts("[findcall]\tbut it\'s a botch");\n          }" { (expression_statement "puts("[findcall]\tbut it\'s a botch");" (call_expression "puts("[findcall]\tbut it\'s a botch")" identifier (argument_list "("[findcall]\tbut it\'s a botch")" ( (string_literal ""[findcall]\tbut it\'s a botch"" " string_content escape_sequence string_content escape_sequence string_content ") ))) ;) }))) (goto_statement "goto LAB_0001ebe0;" goto statement_identifier ;) })) (expression_statement "iVar1 = FUN_0001e9c0();" (assignment_expression "iVar1 = FUN_0001e9c0()" identifier = (call_expression "FUN_0001e9c0()" identifier (argument_list "()" ( )))) ;) (if_statement "if (iVar1 == 0) {\nLAB_0001ec47:\n          local_34 = FUN_0001eac0();\n          local_34 = local_34 + 1;\n          local_38 = local_38 + local_34;\n          uVar4 = FUN_0001e9c0();\nLAB_0001ec6e:\n          if (0x14 < uVar4) goto LAB_0001ebe0;\n          uVar4 = 1 << ((byte)uVar4 & 0x1f);\n          if ((uVar4 & 0x151508) != 0) goto LAB_0001eee4;\nLAB_0001ec89:\n          if ((uVar4 & 0xa8000) == 0) goto LAB_0001edd0;\n          iVar1 = FUN_0001e9c0();\n          if (iVar1 == 0x11) {\n            uVar7 = (**(code **)(*(int *)(DAT_0002e4ec + 4) + 0x38))(local_38 + 1);\n            iVar1 = (int)((ulonglong)uVar7 >> 0x20);\n            bVar6 = 0xfffffffd < (uint)uVar7;\n            uVar4 = (uint)uVar7 + 2;\nLAB_0001efc9:\n            local_2c = uVar4 + param_2;\n            local_28 = iVar1 + (uint)bVar6 + param_3 + (uint)CARRY4(uVar4,param_2);\n          }\n          else {\n            if (iVar1 == 0x13) {\n              uVar7 = (**(code **)(*(int *)(DAT_0002e4ec + 4) + 0x2c))(local_38 + 1);\n              iVar1 = (int)((ulonglong)uVar7 >> 0x20);\n              bVar6 = 0xfffffffb < (uint)uVar7;\n              uVar4 = (uint)uVar7 + 4;\n              goto LAB_0001efc9;\n            }\n            if (iVar1 == 0xf) {\n              uVar4 = (byte)(local_38[1] + 0x80) - 0x7f;\n              local_2c = uVar4 + param_2;\n              local_28 = ((int)uVar4 >> 0x1f) + param_3 + (uint)CARRY4(uVar4,param_2);\n            }\n            else {\n              fwrite("[reladdr] not relative address\n",1,0x1f,*(FILE **)PTR_stderr_0002cfcc);\n              local_2c = param_2;\n              local_28 = param_3;\n            }\n          }\n          iVar1 = FUN_0001c070(local_2c);\n          if ((iVar1 == 0) ||\n             (puVar2 = (uint *)FUN_0001d480(&DAT_0002e520,local_2c,local_28), puVar2 == (uint *)0x0)\n             ) goto LAB_0001edd0;\n          if ((DAT_0002e158 & 0x100) == 0) {\n            if (puVar2[1] != local_28 || *puVar2 != local_2c) goto LAB_0001ebe0;\n          }\n          else {\n            printf("[findcall]\tdestpc 0x%lx",local_2c);\n            printf(" child->name %s",puVar2[4]);\n            printf(" child->addr 0x%lx\n",*puVar2);\n            if (puVar2[1] != local_28 || local_2c != *puVar2) goto LAB_0001edd0;\n          }\nLAB_0001eef8:\n          FUN_00014870(param_1,puVar2,0);\n          iVar1 = FUN_0001eac0();\n          uVar4 = local_34 + iVar1;\n          iVar5 = (int)uVar4 >> 0x1f;\n        }\n        else {\n          uVar4 = 1;\n          iVar5 = 0;\n          if (iVar1 == 0xd) goto LAB_0001ec47;\n        }" if (parenthesized_expression "(iVar1 == 0)" ( (binary_expression "iVar1 == 0" identifier == number_literal) )) (compound_statement "{\nLAB_0001ec47:\n          local_34 = FUN_0001eac0();\n          local_34 = local_34 + 1;\n          local_38 = local_38 + local_34;\n          uVar4 = FUN_0001e9c0();\nLAB_0001ec6e:\n          if (0x14 < uVar4) goto LAB_0001ebe0;\n          uVar4 = 1 << ((byte)uVar4 & 0x1f);\n          if ((uVar4 & 0x151508) != 0) goto LAB_0001eee4;\nLAB_0001ec89:\n          if ((uVar4 & 0xa8000) == 0) goto LAB_0001edd0;\n          iVar1 = FUN_0001e9c0();\n          if (iVar1 == 0x11) {\n            uVar7 = (**(code **)(*(int *)(DAT_0002e4ec + 4) + 0x38))(local_38 + 1);\n            iVar1 = (int)((ulonglong)uVar7 >> 0x20);\n            bVar6 = 0xfffffffd < (uint)uVar7;\n            uVar4 = (uint)uVar7 + 2;\nLAB_0001efc9:\n            local_2c = uVar4 + param_2;\n            local_28 = iVar1 + (uint)bVar6 + param_3 + (uint)CARRY4(uVar4,param_2);\n          }\n          else {\n            if (iVar1 == 0x13) {\n              uVar7 = (**(code **)(*(int *)(DAT_0002e4ec + 4) + 0x2c))(local_38 + 1);\n              iVar1 = (int)((ulonglong)uVar7 >> 0x20);\n              bVar6 = 0xfffffffb < (uint)uVar7;\n              uVar4 = (uint)uVar7 + 4;\n              goto LAB_0001efc9;\n            }\n            if (iVar1 == 0xf) {\n              uVar4 = (byte)(local_38[1] + 0x80) - 0x7f;\n              local_2c = uVar4 + param_2;\n              local_28 = ((int)uVar4 >> 0x1f) + param_3 + (uint)CARRY4(uVar4,param_2);\n            }\n            else {\n              fwrite("[reladdr] not relative address\n",1,0x1f,*(FILE **)PTR_stderr_0002cfcc);\n              local_2c = param_2;\n              local_28 = param_3;\n            }\n          }\n          iVar1 = FUN_0001c070(local_2c);\n          if ((iVar1 == 0) ||\n             (puVar2 = (uint *)FUN_0001d480(&DAT_0002e520,local_2c,local_28), puVar2 == (uint *)0x0)\n             ) goto LAB_0001edd0;\n          if ((DAT_0002e158 & 0x100) == 0) {\n            if (puVar2[1] != local_28 || *puVar2 != local_2c) goto LAB_0001ebe0;\n          }\n          else {\n            printf("[findcall]\tdestpc 0x%lx",local_2c);\n            printf(" child->name %s",puVar2[4]);\n            printf(" child->addr 0x%lx\n",*puVar2);\n            if (puVar2[1] != local_28 || local_2c != *puVar2) goto LAB_0001edd0;\n          }\nLAB_0001eef8:\n          FUN_00014870(param_1,puVar2,0);\n          iVar1 = FUN_0001eac0();\n          uVar4 = local_34 + iVar1;\n          iVar5 = (int)uVar4 >> 0x1f;\n        }" { (labeled_statement "LAB_0001ec47:\n          local_34 = FUN_0001eac0();" statement_identifier : (expression_statement "local_34 = FUN_0001eac0();" (assignment_expression "local_34 = FUN_0001eac0()" identifier = (call_expression "FUN_0001eac0()" identifier (argument_list "()" ( )))) ;)) (expression_statement "local_34 = local_34 + 1;" (assignment_expression "local_34 = local_34 + 1" identifier = (binary_expression "local_34 + 1" identifier + number_literal)) ;) (expression_statement "local_38 = local_38 + local_34;" (assignment_expression "local_38 = local_38 + local_34" identifier = (binary_expression "local_38 + local_34" identifier + identifier)) ;) (expression_statement "uVar4 = FUN_0001e9c0();" (assignment_expression "uVar4 = FUN_0001e9c0()" identifier = (call_expression "FUN_0001e9c0()" identifier (argument_list "()" ( )))) ;) (labeled_statement "LAB_0001ec6e:\n          if (0x14 < uVar4) goto LAB_0001ebe0;" statement_identifier : (if_statement "if (0x14 < uVar4) goto LAB_0001ebe0;" if (parenthesized_expression "(0x14 < uVar4)" ( (binary_expression "0x14 < uVar4" number_literal < identifier) )) (goto_statement "goto LAB_0001ebe0;" goto statement_identifier ;))) (expression_statement "uVar4 = 1 << ((byte)uVar4 & 0x1f);" (assignment_expression "uVar4 = 1 << ((byte)uVar4 & 0x1f)" identifier = (binary_expression "1 << ((byte)uVar4 & 0x1f)" number_literal << (parenthesized_expression "((byte)uVar4 & 0x1f)" ( (binary_expression "(byte)uVar4 & 0x1f" (cast_expression "(byte)uVar4" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) )))) ;) (if_statement "if ((uVar4 & 0x151508) != 0) goto LAB_0001eee4;" if (parenthesized_expression "((uVar4 & 0x151508) != 0)" ( (binary_expression "(uVar4 & 0x151508) != 0" (parenthesized_expression "(uVar4 & 0x151508)" ( (binary_expression "uVar4 & 0x151508" identifier & number_literal) )) != number_literal) )) (goto_statement "goto LAB_0001eee4;" goto statement_identifier ;)) (labeled_statement "LAB_0001ec89:\n          if ((uVar4 & 0xa8000) == 0) goto LAB_0001edd0;" statement_identifier : (if_statement "if ((uVar4 & 0xa8000) == 0) goto LAB_0001edd0;" if (parenthesized_expression "((uVar4 & 0xa8000) == 0)" ( (binary_expression "(uVar4 & 0xa8000) == 0" (parenthesized_expression "(uVar4 & 0xa8000)" ( (binary_expression "uVar4 & 0xa8000" identifier & number_literal) )) == number_literal) )) (goto_statement "goto LAB_0001edd0;" goto statement_identifier ;))) (expression_statement "iVar1 = FUN_0001e9c0();" (assignment_expression "iVar1 = FUN_0001e9c0()" identifier = (call_expression "FUN_0001e9c0()" identifier (argument_list "()" ( )))) ;) (if_statement "if (iVar1 == 0x11) {\n            uVar7 = (**(code **)(*(int *)(DAT_0002e4ec + 4) + 0x38))(local_38 + 1);\n            iVar1 = (int)((ulonglong)uVar7 >> 0x20);\n            bVar6 = 0xfffffffd < (uint)uVar7;\n            uVar4 = (uint)uVar7 + 2;\nLAB_0001efc9:\n            local_2c = uVar4 + param_2;\n            local_28 = iVar1 + (uint)bVar6 + param_3 + (uint)CARRY4(uVar4,param_2);\n          }\n          else {\n            if (iVar1 == 0x13) {\n              uVar7 = (**(code **)(*(int *)(DAT_0002e4ec + 4) + 0x2c))(local_38 + 1);\n              iVar1 = (int)((ulonglong)uVar7 >> 0x20);\n              bVar6 = 0xfffffffb < (uint)uVar7;\n              uVar4 = (uint)uVar7 + 4;\n              goto LAB_0001efc9;\n            }\n            if (iVar1 == 0xf) {\n              uVar4 = (byte)(local_38[1] + 0x80) - 0x7f;\n              local_2c = uVar4 + param_2;\n              local_28 = ((int)uVar4 >> 0x1f) + param_3 + (uint)CARRY4(uVar4,param_2);\n            }\n            else {\n              fwrite("[reladdr] not relative address\n",1,0x1f,*(FILE **)PTR_stderr_0002cfcc);\n              local_2c = param_2;\n              local_28 = param_3;\n            }\n          }" if (parenthesized_expression "(iVar1 == 0x11)" ( (binary_expression "iVar1 == 0x11" identifier == number_literal) )) (compound_statement "{\n            uVar7 = (**(code **)(*(int *)(DAT_0002e4ec + 4) + 0x38))(local_38 + 1);\n            iVar1 = (int)((ulonglong)uVar7 >> 0x20);\n            bVar6 = 0xfffffffd < (uint)uVar7;\n            uVar4 = (uint)uVar7 + 2;\nLAB_0001efc9:\n            local_2c = uVar4 + param_2;\n            local_28 = iVar1 + (uint)bVar6 + param_3 + (uint)CARRY4(uVar4,param_2);\n          }" { (expression_statement "uVar7 = (**(code **)(*(int *)(DAT_0002e4ec + 4) + 0x38))(local_38 + 1);" (assignment_expression "uVar7 = (**(code **)(*(int *)(DAT_0002e4ec + 4) + 0x38))(local_38 + 1)" identifier = (call_expression "(**(code **)(*(int *)(DAT_0002e4ec + 4) + 0x38))(local_38 + 1)" (parenthesized_expression "(**(code **)(*(int *)(DAT_0002e4ec + 4) + 0x38))" ( (pointer_expression "**(code **)(*(int *)(DAT_0002e4ec + 4) + 0x38)" * (pointer_expression "*(code **)(*(int *)(DAT_0002e4ec + 4) + 0x38)" * (cast_expression "(code **)(*(int *)(DAT_0002e4ec + 4) + 0x38)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)(DAT_0002e4ec + 4) + 0x38)" ( (binary_expression "*(int *)(DAT_0002e4ec + 4) + 0x38" (pointer_expression "*(int *)(DAT_0002e4ec + 4)" * (cast_expression "(int *)(DAT_0002e4ec + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(DAT_0002e4ec + 4)" ( (binary_expression "DAT_0002e4ec + 4" identifier + number_literal) )))) + number_literal) ))))) )) (argument_list "(local_38 + 1)" ( (binary_expression "local_38 + 1" identifier + number_literal) )))) ;) (expression_statement "iVar1 = (int)((ulonglong)uVar7 >> 0x20);" (assignment_expression "iVar1 = (int)((ulonglong)uVar7 >> 0x20)" identifier = (cast_expression "(int)((ulonglong)uVar7 >> 0x20)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((ulonglong)uVar7 >> 0x20)" ( (binary_expression "(ulonglong)uVar7 >> 0x20" (cast_expression "(ulonglong)uVar7" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "bVar6 = 0xfffffffd < (uint)uVar7;" (assignment_expression "bVar6 = 0xfffffffd < (uint)uVar7" identifier = (binary_expression "0xfffffffd < (uint)uVar7" number_literal < (cast_expression "(uint)uVar7" ( (type_descriptor "uint" type_identifier) ) identifier))) ;) (expression_statement "uVar4 = (uint)uVar7 + 2;" (assignment_expression "uVar4 = (uint)uVar7 + 2" identifier = (binary_expression "(uint)uVar7 + 2" (cast_expression "(uint)uVar7" ( (type_descriptor "uint" type_identifier) ) identifier) + number_literal)) ;) (labeled_statement "LAB_0001efc9:\n            local_2c = uVar4 + param_2;" statement_identifier : (expression_statement "local_2c = uVar4 + param_2;" (assignment_expression "local_2c = uVar4 + param_2" identifier = (binary_expression "uVar4 + param_2" identifier + identifier)) ;)) (expression_statement "local_28 = iVar1 + (uint)bVar6 + param_3 + (uint)CARRY4(uVar4,param_2);" (assignment_expression "local_28 = iVar1 + (uint)bVar6 + param_3 + (uint)CARRY4(uVar4,param_2)" identifier = (binary_expression "iVar1 + (uint)bVar6 + param_3 + (uint)CARRY4(uVar4,param_2)" (binary_expression "iVar1 + (uint)bVar6 + param_3" (binary_expression "iVar1 + (uint)bVar6" identifier + (cast_expression "(uint)bVar6" ( (type_descriptor "uint" type_identifier) ) identifier)) + identifier) + (cast_expression "(uint)CARRY4(uVar4,param_2)" ( (type_descriptor "uint" type_identifier) ) (call_expression "CARRY4(uVar4,param_2)" identifier (argument_list "(uVar4,param_2)" ( identifier , identifier )))))) ;) }) (else_clause "else {\n            if (iVar1 == 0x13) {\n              uVar7 = (**(code **)(*(int *)(DAT_0002e4ec + 4) + 0x2c))(local_38 + 1);\n              iVar1 = (int)((ulonglong)uVar7 >> 0x20);\n              bVar6 = 0xfffffffb < (uint)uVar7;\n              uVar4 = (uint)uVar7 + 4;\n              goto LAB_0001efc9;\n            }\n            if (iVar1 == 0xf) {\n              uVar4 = (byte)(local_38[1] + 0x80) - 0x7f;\n              local_2c = uVar4 + param_2;\n              local_28 = ((int)uVar4 >> 0x1f) + param_3 + (uint)CARRY4(uVar4,param_2);\n            }\n            else {\n              fwrite("[reladdr] not relative address\n",1,0x1f,*(FILE **)PTR_stderr_0002cfcc);\n              local_2c = param_2;\n              local_28 = param_3;\n            }\n          }" else (compound_statement "{\n            if (iVar1 == 0x13) {\n              uVar7 = (**(code **)(*(int *)(DAT_0002e4ec + 4) + 0x2c))(local_38 + 1);\n              iVar1 = (int)((ulonglong)uVar7 >> 0x20);\n              bVar6 = 0xfffffffb < (uint)uVar7;\n              uVar4 = (uint)uVar7 + 4;\n              goto LAB_0001efc9;\n            }\n            if (iVar1 == 0xf) {\n              uVar4 = (byte)(local_38[1] + 0x80) - 0x7f;\n              local_2c = uVar4 + param_2;\n              local_28 = ((int)uVar4 >> 0x1f) + param_3 + (uint)CARRY4(uVar4,param_2);\n            }\n            else {\n              fwrite("[reladdr] not relative address\n",1,0x1f,*(FILE **)PTR_stderr_0002cfcc);\n              local_2c = param_2;\n              local_28 = param_3;\n            }\n          }" { (if_statement "if (iVar1 == 0x13) {\n              uVar7 = (**(code **)(*(int *)(DAT_0002e4ec + 4) + 0x2c))(local_38 + 1);\n              iVar1 = (int)((ulonglong)uVar7 >> 0x20);\n              bVar6 = 0xfffffffb < (uint)uVar7;\n              uVar4 = (uint)uVar7 + 4;\n              goto LAB_0001efc9;\n            }" if (parenthesized_expression "(iVar1 == 0x13)" ( (binary_expression "iVar1 == 0x13" identifier == number_literal) )) (compound_statement "{\n              uVar7 = (**(code **)(*(int *)(DAT_0002e4ec + 4) + 0x2c))(local_38 + 1);\n              iVar1 = (int)((ulonglong)uVar7 >> 0x20);\n              bVar6 = 0xfffffffb < (uint)uVar7;\n              uVar4 = (uint)uVar7 + 4;\n              goto LAB_0001efc9;\n            }" { (expression_statement "uVar7 = (**(code **)(*(int *)(DAT_0002e4ec + 4) + 0x2c))(local_38 + 1);" (assignment_expression "uVar7 = (**(code **)(*(int *)(DAT_0002e4ec + 4) + 0x2c))(local_38 + 1)" identifier = (call_expression "(**(code **)(*(int *)(DAT_0002e4ec + 4) + 0x2c))(local_38 + 1)" (parenthesized_expression "(**(code **)(*(int *)(DAT_0002e4ec + 4) + 0x2c))" ( (pointer_expression "**(code **)(*(int *)(DAT_0002e4ec + 4) + 0x2c)" * (pointer_expression "*(code **)(*(int *)(DAT_0002e4ec + 4) + 0x2c)" * (cast_expression "(code **)(*(int *)(DAT_0002e4ec + 4) + 0x2c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)(DAT_0002e4ec + 4) + 0x2c)" ( (binary_expression "*(int *)(DAT_0002e4ec + 4) + 0x2c" (pointer_expression "*(int *)(DAT_0002e4ec + 4)" * (cast_expression "(int *)(DAT_0002e4ec + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(DAT_0002e4ec + 4)" ( (binary_expression "DAT_0002e4ec + 4" identifier + number_literal) )))) + number_literal) ))))) )) (argument_list "(local_38 + 1)" ( (binary_expression "local_38 + 1" identifier + number_literal) )))) ;) (expression_statement "iVar1 = (int)((ulonglong)uVar7 >> 0x20);" (assignment_expression "iVar1 = (int)((ulonglong)uVar7 >> 0x20)" identifier = (cast_expression "(int)((ulonglong)uVar7 >> 0x20)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((ulonglong)uVar7 >> 0x20)" ( (binary_expression "(ulonglong)uVar7 >> 0x20" (cast_expression "(ulonglong)uVar7" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "bVar6 = 0xfffffffb < (uint)uVar7;" (assignment_expression "bVar6 = 0xfffffffb < (uint)uVar7" identifier = (binary_expression "0xfffffffb < (uint)uVar7" number_literal < (cast_expression "(uint)uVar7" ( (type_descriptor "uint" type_identifier) ) identifier))) ;) (expression_statement "uVar4 = (uint)uVar7 + 4;" (assignment_expression "uVar4 = (uint)uVar7 + 4" identifier = (binary_expression "(uint)uVar7 + 4" (cast_expression "(uint)uVar7" ( (type_descriptor "uint" type_identifier) ) identifier) + number_literal)) ;) (goto_statement "goto LAB_0001efc9;" goto statement_identifier ;) })) (if_statement "if (iVar1 == 0xf) {\n              uVar4 = (byte)(local_38[1] + 0x80) - 0x7f;\n              local_2c = uVar4 + param_2;\n              local_28 = ((int)uVar4 >> 0x1f) + param_3 + (uint)CARRY4(uVar4,param_2);\n            }\n            else {\n              fwrite("[reladdr] not relative address\n",1,0x1f,*(FILE **)PTR_stderr_0002cfcc);\n              local_2c = param_2;\n              local_28 = param_3;\n            }" if (parenthesized_expression "(iVar1 == 0xf)" ( (binary_expression "iVar1 == 0xf" identifier == number_literal) )) (compound_statement "{\n              uVar4 = (byte)(local_38[1] + 0x80) - 0x7f;\n              local_2c = uVar4 + param_2;\n              local_28 = ((int)uVar4 >> 0x1f) + param_3 + (uint)CARRY4(uVar4,param_2);\n            }" { (expression_statement "uVar4 = (byte)(local_38[1] + 0x80) - 0x7f;" (assignment_expression "uVar4 = (byte)(local_38[1] + 0x80) - 0x7f" identifier = (binary_expression "(byte)(local_38[1] + 0x80) - 0x7f" (call_expression "(byte)(local_38[1] + 0x80)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(local_38[1] + 0x80)" ( (binary_expression "local_38[1] + 0x80" (subscript_expression "local_38[1]" identifier [ number_literal ]) + number_literal) ))) - number_literal)) ;) (expression_statement "local_2c = uVar4 + param_2;" (assignment_expression "local_2c = uVar4 + param_2" identifier = (binary_expression "uVar4 + param_2" identifier + identifier)) ;) (expression_statement "local_28 = ((int)uVar4 >> 0x1f) + param_3 + (uint)CARRY4(uVar4,param_2);" (assignment_expression "local_28 = ((int)uVar4 >> 0x1f) + param_3 + (uint)CARRY4(uVar4,param_2)" identifier = (binary_expression "((int)uVar4 >> 0x1f) + param_3 + (uint)CARRY4(uVar4,param_2)" (binary_expression "((int)uVar4 >> 0x1f) + param_3" (parenthesized_expression "((int)uVar4 >> 0x1f)" ( (binary_expression "(int)uVar4 >> 0x1f" (cast_expression "(int)uVar4" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal) )) + identifier) + (cast_expression "(uint)CARRY4(uVar4,param_2)" ( (type_descriptor "uint" type_identifier) ) (call_expression "CARRY4(uVar4,param_2)" identifier (argument_list "(uVar4,param_2)" ( identifier , identifier )))))) ;) }) (else_clause "else {\n              fwrite("[reladdr] not relative address\n",1,0x1f,*(FILE **)PTR_stderr_0002cfcc);\n              local_2c = param_2;\n              local_28 = param_3;\n            }" else (compound_statement "{\n              fwrite("[reladdr] not relative address\n",1,0x1f,*(FILE **)PTR_stderr_0002cfcc);\n              local_2c = param_2;\n              local_28 = param_3;\n            }" { (expression_statement "fwrite("[reladdr] not relative address\n",1,0x1f,*(FILE **)PTR_stderr_0002cfcc);" (call_expression "fwrite("[reladdr] not relative address\n",1,0x1f,*(FILE **)PTR_stderr_0002cfcc)" identifier (argument_list "("[reladdr] not relative address\n",1,0x1f,*(FILE **)PTR_stderr_0002cfcc)" ( (string_literal ""[reladdr] not relative address\n"" " string_content escape_sequence ") , number_literal , number_literal , (pointer_expression "*(FILE **)PTR_stderr_0002cfcc" * (cast_expression "(FILE **)PTR_stderr_0002cfcc" ( (type_descriptor "FILE **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier)) ))) ;) (expression_statement "local_2c = param_2;" (assignment_expression "local_2c = param_2" identifier = identifier) ;) (expression_statement "local_28 = param_3;" (assignment_expression "local_28 = param_3" identifier = identifier) ;) }))) }))) (expression_statement "iVar1 = FUN_0001c070(local_2c);" (assignment_expression "iVar1 = FUN_0001c070(local_2c)" identifier = (call_expression "FUN_0001c070(local_2c)" identifier (argument_list "(local_2c)" ( identifier )))) ;) (if_statement "if ((iVar1 == 0) ||\n             (puVar2 = (uint *)FUN_0001d480(&DAT_0002e520,local_2c,local_28), puVar2 == (uint *)0x0)\n             ) goto LAB_0001edd0;" if (parenthesized_expression "((iVar1 == 0) ||\n             (puVar2 = (uint *)FUN_0001d480(&DAT_0002e520,local_2c,local_28), puVar2 == (uint *)0x0)\n             )" ( (binary_expression "(iVar1 == 0) ||\n             (puVar2 = (uint *)FUN_0001d480(&DAT_0002e520,local_2c,local_28), puVar2 == (uint *)0x0)" (parenthesized_expression "(iVar1 == 0)" ( (binary_expression "iVar1 == 0" identifier == number_literal) )) || (parenthesized_expression "(puVar2 = (uint *)FUN_0001d480(&DAT_0002e520,local_2c,local_28), puVar2 == (uint *)0x0)" ( (comma_expression "puVar2 = (uint *)FUN_0001d480(&DAT_0002e520,local_2c,local_28), puVar2 == (uint *)0x0" (assignment_expression "puVar2 = (uint *)FUN_0001d480(&DAT_0002e520,local_2c,local_28)" identifier = (cast_expression "(uint *)FUN_0001d480(&DAT_0002e520,local_2c,local_28)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_0001d480(&DAT_0002e520,local_2c,local_28)" identifier (argument_list "(&DAT_0002e520,local_2c,local_28)" ( (pointer_expression "&DAT_0002e520" & identifier) , identifier , identifier ))))) , (binary_expression "puVar2 == (uint *)0x0" identifier == (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) ))) )) (goto_statement "goto LAB_0001edd0;" goto statement_identifier ;)) (if_statement "if ((DAT_0002e158 & 0x100) == 0) {\n            if (puVar2[1] != local_28 || *puVar2 != local_2c) goto LAB_0001ebe0;\n          }\n          else {\n            printf("[findcall]\tdestpc 0x%lx",local_2c);\n            printf(" child->name %s",puVar2[4]);\n            printf(" child->addr 0x%lx\n",*puVar2);\n            if (puVar2[1] != local_28 || local_2c != *puVar2) goto LAB_0001edd0;\n          }" if (parenthesized_expression "((DAT_0002e158 & 0x100) == 0)" ( (binary_expression "(DAT_0002e158 & 0x100) == 0" (parenthesized_expression "(DAT_0002e158 & 0x100)" ( (binary_expression "DAT_0002e158 & 0x100" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n            if (puVar2[1] != local_28 || *puVar2 != local_2c) goto LAB_0001ebe0;\n          }" { (if_statement "if (puVar2[1] != local_28 || *puVar2 != local_2c) goto LAB_0001ebe0;" if (parenthesized_expression "(puVar2[1] != local_28 || *puVar2 != local_2c)" ( (binary_expression "puVar2[1] != local_28 || *puVar2 != local_2c" (binary_expression "puVar2[1] != local_28" (subscript_expression "puVar2[1]" identifier [ number_literal ]) != identifier) || (binary_expression "*puVar2 != local_2c" (pointer_expression "*puVar2" * identifier) != identifier)) )) (goto_statement "goto LAB_0001ebe0;" goto statement_identifier ;)) }) (else_clause "else {\n            printf("[findcall]\tdestpc 0x%lx",local_2c);\n            printf(" child->name %s",puVar2[4]);\n            printf(" child->addr 0x%lx\n",*puVar2);\n            if (puVar2[1] != local_28 || local_2c != *puVar2) goto LAB_0001edd0;\n          }" else (compound_statement "{\n            printf("[findcall]\tdestpc 0x%lx",local_2c);\n            printf(" child->name %s",puVar2[4]);\n            printf(" child->addr 0x%lx\n",*puVar2);\n            if (puVar2[1] != local_28 || local_2c != *puVar2) goto LAB_0001edd0;\n          }" { (expression_statement "printf("[findcall]\tdestpc 0x%lx",local_2c);" (call_expression "printf("[findcall]\tdestpc 0x%lx",local_2c)" identifier (argument_list "("[findcall]\tdestpc 0x%lx",local_2c)" ( (string_literal ""[findcall]\tdestpc 0x%lx"" " string_content escape_sequence string_content ") , identifier ))) ;) (expression_statement "printf(" child->name %s",puVar2[4]);" (call_expression "printf(" child->name %s",puVar2[4])" identifier (argument_list "(" child->name %s",puVar2[4])" ( (string_literal "" child->name %s"" " string_content ") , (subscript_expression "puVar2[4]" identifier [ number_literal ]) ))) ;) (expression_statement "printf(" child->addr 0x%lx\n",*puVar2);" (call_expression "printf(" child->addr 0x%lx\n",*puVar2)" identifier (argument_list "(" child->addr 0x%lx\n",*puVar2)" ( (string_literal "" child->addr 0x%lx\n"" " string_content escape_sequence ") , (pointer_expression "*puVar2" * identifier) ))) ;) (if_statement "if (puVar2[1] != local_28 || local_2c != *puVar2) goto LAB_0001edd0;" if (parenthesized_expression "(puVar2[1] != local_28 || local_2c != *puVar2)" ( (binary_expression "puVar2[1] != local_28 || local_2c != *puVar2" (binary_expression "puVar2[1] != local_28" (subscript_expression "puVar2[1]" identifier [ number_literal ]) != identifier) || (binary_expression "local_2c != *puVar2" identifier != (pointer_expression "*puVar2" * identifier))) )) (goto_statement "goto LAB_0001edd0;" goto statement_identifier ;)) }))) (labeled_statement "LAB_0001eef8:\n          FUN_00014870(param_1,puVar2,0);" statement_identifier : (expression_statement "FUN_00014870(param_1,puVar2,0);" (call_expression "FUN_00014870(param_1,puVar2,0)" identifier (argument_list "(param_1,puVar2,0)" ( identifier , identifier , number_literal ))) ;)) (expression_statement "iVar1 = FUN_0001eac0();" (assignment_expression "iVar1 = FUN_0001eac0()" identifier = (call_expression "FUN_0001eac0()" identifier (argument_list "()" ( )))) ;) (expression_statement "uVar4 = local_34 + iVar1;" (assignment_expression "uVar4 = local_34 + iVar1" identifier = (binary_expression "local_34 + iVar1" identifier + identifier)) ;) (expression_statement "iVar5 = (int)uVar4 >> 0x1f;" (assignment_expression "iVar5 = (int)uVar4 >> 0x1f" identifier = (binary_expression "(int)uVar4 >> 0x1f" (cast_expression "(int)uVar4" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal)) ;) }) (else_clause "else {\n          uVar4 = 1;\n          iVar5 = 0;\n          if (iVar1 == 0xd) goto LAB_0001ec47;\n        }" else (compound_statement "{\n          uVar4 = 1;\n          iVar5 = 0;\n          if (iVar1 == 0xd) goto LAB_0001ec47;\n        }" { (expression_statement "uVar4 = 1;" (assignment_expression "uVar4 = 1" identifier = number_literal) ;) (expression_statement "iVar5 = 0;" (assignment_expression "iVar5 = 0" identifier = number_literal) ;) (if_statement "if (iVar1 == 0xd) goto LAB_0001ec47;" if (parenthesized_expression "(iVar1 == 0xd)" ( (binary_expression "iVar1 == 0xd" identifier == number_literal) )) (goto_statement "goto LAB_0001ec47;" goto statement_identifier ;)) }))) }) (else_clause "else {\nLAB_0001ebe0:\n        uVar4 = 1;\n        iVar5 = 0;\n      }" else (compound_statement "{\nLAB_0001ebe0:\n        uVar4 = 1;\n        iVar5 = 0;\n      }" { (labeled_statement "LAB_0001ebe0:\n        uVar4 = 1;" statement_identifier : (expression_statement "uVar4 = 1;" (assignment_expression "uVar4 = 1" identifier = number_literal) ;)) (expression_statement "iVar5 = 0;" (assignment_expression "iVar5 = 0" identifier = number_literal) ;) }))) (expression_statement "bVar6 = CARRY4(param_2,uVar4);" (assignment_expression "bVar6 = CARRY4(param_2,uVar4)" identifier = (call_expression "CARRY4(param_2,uVar4)" identifier (argument_list "(param_2,uVar4)" ( identifier , identifier )))) ;) (expression_statement "param_2 = param_2 + uVar4;" (assignment_expression "param_2 = param_2 + uVar4" identifier = (binary_expression "param_2 + uVar4" identifier + identifier)) ;) (expression_statement "param_3 = param_3 + iVar5 + (uint)bVar6;" (assignment_expression "param_3 = param_3 + iVar5 + (uint)bVar6" identifier = (binary_expression "param_3 + iVar5 + (uint)bVar6" (binary_expression "param_3 + iVar5" identifier + identifier) + (cast_expression "(uint)bVar6" ( (type_descriptor "uint" type_identifier) ) identifier))) ;) (expression_statement "iVar1 = (param_3 - param_5) - (uint)(param_2 < param_4);" (assignment_expression "iVar1 = (param_3 - param_5) - (uint)(param_2 < param_4)" identifier = (binary_expression "(param_3 - param_5) - (uint)(param_2 < param_4)" (parenthesized_expression "(param_3 - param_5)" ( (binary_expression "param_3 - param_5" identifier - identifier) )) - (call_expression "(uint)(param_2 < param_4)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(param_2 < param_4)" ( (binary_expression "param_2 < param_4" identifier < identifier) ))))) ;) }) while (parenthesized_expression "(param_3 < param_5 || param_3 - param_5 < (uint)(param_2 < param_4))" ( (binary_expression "param_3 < param_5 || param_3 - param_5 < (uint)(param_2 < param_4)" (binary_expression "param_3 < param_5" identifier < identifier) || (binary_expression "param_3 - param_5 < (uint)(param_2 < param_4)" (binary_expression "param_3 - param_5" identifier - identifier) < (call_expression "(uint)(param_2 < param_4)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(param_2 < param_4)" ( (binary_expression "param_2 < param_4" identifier < identifier) ))))) )) ;) })) (return_statement "return iVar1;" return identifier ;) })))
(translation_unit "/* WARNING: Function: __x86.get_pc_thunk.ax replaced with injection: get_pc_thunk_ax */\n/* WARNING: Unknown calling convention */\n\nvoid vax_find_call(Sym *parent,bfd_vma p_lowpc,bfd_vma p_highpc)\n\n{\n  bfd_vma bVar1;\n  longlong lVar2;\n  operandenum oVar3;\n  long lVar4;\n  operandenum mode;\n  uint uVar5;\n  Sym *child;\n  char *pcVar6;\n  int iVar7;\n  int iVar8;\n  bool bVar9;\n  bfd_signed_vma bVar10;\n  uint local_50;\n  uint local_4c;\n  byte *local_38;\n  int local_34;\n  int local_2c;\n  int local_28;\n  \n  if (vax_find_call::inited == 0) {\n    vax_find_call::inited = 1;\n    sym_init(&indirectchild);\n    indirectchild.cg.prop.fract = 1.0;\n    indirectchild.cg.cyc.head = &indirectchild;\n  }\n  local_50 = (uint)p_highpc;\n  if ((debug_level & 0x100U) != 0) {\n    printf("[findcall] %s: 0x%lx to 0x%lx\n",parent->name,(uint)p_lowpc,local_50);\n  }\n  local_4c = (uint)(p_highpc >> 0x20);\n  if (p_lowpc._4_4_ < local_4c || p_lowpc._4_4_ - local_4c < (uint)((uint)p_lowpc < local_50)) {\n    do {\n      local_2c = (int)p_lowpc;\n      pcVar6 = (char *)((local_2c - (int)core_text_sect->vma) + (int)core_text_space);\n      if (*pcVar6 == -5) {\n        if ((debug_level & 0x100U) != 0) {\n          printf("[findcall]\t0x%lx:calls",local_2c);\n          oVar3 = vax_operandmode((uchar *)(uint)(byte)pcVar6[1]);\n          if ((oVar3 == literal) || (oVar3 == immediate)) {\n            lVar4 = vax_operandlength((uchar *)(pcVar6 + 1));\n            local_34 = lVar4 + 1;\n            local_38 = (byte *)(pcVar6 + local_34);\n            mode = vax_operandmode((uchar *)(uint)*local_38);\n            if ((debug_level & 0x100U) == 0) goto LAB_0001ec6e;\n            pcVar6 = vax_operandname(oVar3);\n            printf("\tfirst operand is %s",pcVar6);\n            pcVar6 = vax_operandname(mode);\n            printf("\tsecond operand is %s\n",pcVar6);\n            if (longreldef < mode) goto LAB_0001edd0;\n            uVar5 = 1 << ((byte)mode & 0x1f);\n            if ((uVar5 & 0x151508) == 0) goto LAB_0001ec89;\nLAB_0001eee4:\n            child = &indirectchild;\n            goto LAB_0001eef8;\n          }\nLAB_0001edd0:\n          if ((debug_level & 0x100U) != 0) {\n            puts("[findcall]\tbut it\'s a botch");\n          }\n          goto LAB_0001ebe0;\n        }\n        oVar3 = vax_operandmode((uchar *)(uint)(byte)pcVar6[1]);\n        if (oVar3 == literal) {\nLAB_0001ec47:\n          lVar4 = vax_operandlength((uchar *)(pcVar6 + 1));\n          local_34 = lVar4 + 1;\n          local_38 = (byte *)(pcVar6 + local_34);\n          mode = vax_operandmode((uchar *)(uint)*local_38);\nLAB_0001ec6e:\n          if (longreldef < mode) goto LAB_0001ebe0;\n          uVar5 = 1 << ((byte)mode & 0x1f);\n          if ((uVar5 & 0x151508) != 0) goto LAB_0001eee4;\nLAB_0001ec89:\n          if ((uVar5 & 0xa8000) == 0) goto LAB_0001edd0;\n          oVar3 = vax_operandmode((uchar *)(uint)*local_38);\n          if (oVar3 == wordrel) {\n            bVar10 = (*core_bfd->xvec->bfd_getx_signed_16)(local_38 + 1);\n            iVar7 = (int)((ulonglong)bVar10 >> 0x20);\n            bVar9 = 0xfffffffd < (uint)bVar10;\n            iVar8 = (uint)bVar10 + 2;\nLAB_0001efc9:\n            lVar2 = CONCAT44(iVar7 + (uint)bVar9,iVar8);\n            local_2c = (int)(p_lowpc + lVar2);\n            bVar1 = p_lowpc + lVar2;\n          }\n          else {\n            if (oVar3 == longrel) {\n              bVar10 = (*core_bfd->xvec->bfd_getx_signed_32)(local_38 + 1);\n              iVar7 = (int)((ulonglong)bVar10 >> 0x20);\n              bVar9 = 0xfffffffb < (uint)bVar10;\n              iVar8 = (uint)bVar10 + 4;\n              goto LAB_0001efc9;\n            }\n            if (oVar3 == byterel) {\n              bVar1 = p_lowpc + (longlong)(int)((byte)(local_38[1] + 0x80) - 0x7f);\n              local_2c = (int)bVar1;\n            }\n            else {\n              fwrite("[reladdr] not relative address\n",1,0x1f,*(FILE **)PTR_stderr_0002cfcc);\n              bVar1 = p_lowpc;\n            }\n          }\n          local_28 = (int)(bVar1 >> 0x20);\n          iVar8 = hist_check_address((uint)bVar1);\n          if ((iVar8 == 0) ||\n             (child = sym_lookup(&symtab,CONCAT44(local_28,local_2c)), child == (Sym *)0x0))\n          goto LAB_0001edd0;\n          if ((debug_level & 0x100U) == 0) {\n            if (*(int *)((int)&child->addr + 4) != local_28 || (int)child->addr != local_2c)\n            goto LAB_0001ebe0;\n          }\n          else {\n            printf("[findcall]\tdestpc 0x%lx",(uint)bVar1);\n            printf(" child->name %s",child->name);\n            printf(" child->addr 0x%lx\n",(int)child->addr);\n            if (*(int *)((int)&child->addr + 4) != local_28 || local_2c != (int)child->addr)\n            goto LAB_0001edd0;\n          }\nLAB_0001eef8:\n          arc_add(parent,child,0);\n          lVar4 = vax_operandlength(local_38);\n          local_34 = local_34 + lVar4;\n          iVar8 = local_34 >> 0x1f;\n        }\n        else {\n          local_34 = 1;\n          iVar8 = 0;\n          if (oVar3 == immediate) goto LAB_0001ec47;\n        }\n      }\n      else {\nLAB_0001ebe0:\n        local_34 = 1;\n        iVar8 = 0;\n      }\n      lVar2 = p_lowpc + CONCAT44(iVar8,local_34);\n      uVar5 = (uint)((ulonglong)lVar2 >> 0x20);\n      p_lowpc = p_lowpc + CONCAT44(iVar8,local_34);\n    } while (uVar5 < local_4c || uVar5 - local_4c < (uint)((uint)lVar2 < local_50));\n  }\n  return;\n}\n\n" comment comment (function_definition "void vax_find_call(Sym *parent,bfd_vma p_lowpc,bfd_vma p_highpc)\n\n{\n  bfd_vma bVar1;\n  longlong lVar2;\n  operandenum oVar3;\n  long lVar4;\n  operandenum mode;\n  uint uVar5;\n  Sym *child;\n  char *pcVar6;\n  int iVar7;\n  int iVar8;\n  bool bVar9;\n  bfd_signed_vma bVar10;\n  uint local_50;\n  uint local_4c;\n  byte *local_38;\n  int local_34;\n  int local_2c;\n  int local_28;\n  \n  if (vax_find_call::inited == 0) {\n    vax_find_call::inited = 1;\n    sym_init(&indirectchild);\n    indirectchild.cg.prop.fract = 1.0;\n    indirectchild.cg.cyc.head = &indirectchild;\n  }\n  local_50 = (uint)p_highpc;\n  if ((debug_level & 0x100U) != 0) {\n    printf("[findcall] %s: 0x%lx to 0x%lx\n",parent->name,(uint)p_lowpc,local_50);\n  }\n  local_4c = (uint)(p_highpc >> 0x20);\n  if (p_lowpc._4_4_ < local_4c || p_lowpc._4_4_ - local_4c < (uint)((uint)p_lowpc < local_50)) {\n    do {\n      local_2c = (int)p_lowpc;\n      pcVar6 = (char *)((local_2c - (int)core_text_sect->vma) + (int)core_text_space);\n      if (*pcVar6 == -5) {\n        if ((debug_level & 0x100U) != 0) {\n          printf("[findcall]\t0x%lx:calls",local_2c);\n          oVar3 = vax_operandmode((uchar *)(uint)(byte)pcVar6[1]);\n          if ((oVar3 == literal) || (oVar3 == immediate)) {\n            lVar4 = vax_operandlength((uchar *)(pcVar6 + 1));\n            local_34 = lVar4 + 1;\n            local_38 = (byte *)(pcVar6 + local_34);\n            mode = vax_operandmode((uchar *)(uint)*local_38);\n            if ((debug_level & 0x100U) == 0) goto LAB_0001ec6e;\n            pcVar6 = vax_operandname(oVar3);\n            printf("\tfirst operand is %s",pcVar6);\n            pcVar6 = vax_operandname(mode);\n            printf("\tsecond operand is %s\n",pcVar6);\n            if (longreldef < mode) goto LAB_0001edd0;\n            uVar5 = 1 << ((byte)mode & 0x1f);\n            if ((uVar5 & 0x151508) == 0) goto LAB_0001ec89;\nLAB_0001eee4:\n            child = &indirectchild;\n            goto LAB_0001eef8;\n          }\nLAB_0001edd0:\n          if ((debug_level & 0x100U) != 0) {\n            puts("[findcall]\tbut it\'s a botch");\n          }\n          goto LAB_0001ebe0;\n        }\n        oVar3 = vax_operandmode((uchar *)(uint)(byte)pcVar6[1]);\n        if (oVar3 == literal) {\nLAB_0001ec47:\n          lVar4 = vax_operandlength((uchar *)(pcVar6 + 1));\n          local_34 = lVar4 + 1;\n          local_38 = (byte *)(pcVar6 + local_34);\n          mode = vax_operandmode((uchar *)(uint)*local_38);\nLAB_0001ec6e:\n          if (longreldef < mode) goto LAB_0001ebe0;\n          uVar5 = 1 << ((byte)mode & 0x1f);\n          if ((uVar5 & 0x151508) != 0) goto LAB_0001eee4;\nLAB_0001ec89:\n          if ((uVar5 & 0xa8000) == 0) goto LAB_0001edd0;\n          oVar3 = vax_operandmode((uchar *)(uint)*local_38);\n          if (oVar3 == wordrel) {\n            bVar10 = (*core_bfd->xvec->bfd_getx_signed_16)(local_38 + 1);\n            iVar7 = (int)((ulonglong)bVar10 >> 0x20);\n            bVar9 = 0xfffffffd < (uint)bVar10;\n            iVar8 = (uint)bVar10 + 2;\nLAB_0001efc9:\n            lVar2 = CONCAT44(iVar7 + (uint)bVar9,iVar8);\n            local_2c = (int)(p_lowpc + lVar2);\n            bVar1 = p_lowpc + lVar2;\n          }\n          else {\n            if (oVar3 == longrel) {\n              bVar10 = (*core_bfd->xvec->bfd_getx_signed_32)(local_38 + 1);\n              iVar7 = (int)((ulonglong)bVar10 >> 0x20);\n              bVar9 = 0xfffffffb < (uint)bVar10;\n              iVar8 = (uint)bVar10 + 4;\n              goto LAB_0001efc9;\n            }\n            if (oVar3 == byterel) {\n              bVar1 = p_lowpc + (longlong)(int)((byte)(local_38[1] + 0x80) - 0x7f);\n              local_2c = (int)bVar1;\n            }\n            else {\n              fwrite("[reladdr] not relative address\n",1,0x1f,*(FILE **)PTR_stderr_0002cfcc);\n              bVar1 = p_lowpc;\n            }\n          }\n          local_28 = (int)(bVar1 >> 0x20);\n          iVar8 = hist_check_address((uint)bVar1);\n          if ((iVar8 == 0) ||\n             (child = sym_lookup(&symtab,CONCAT44(local_28,local_2c)), child == (Sym *)0x0))\n          goto LAB_0001edd0;\n          if ((debug_level & 0x100U) == 0) {\n            if (*(int *)((int)&child->addr + 4) != local_28 || (int)child->addr != local_2c)\n            goto LAB_0001ebe0;\n          }\n          else {\n            printf("[findcall]\tdestpc 0x%lx",(uint)bVar1);\n            printf(" child->name %s",child->name);\n            printf(" child->addr 0x%lx\n",(int)child->addr);\n            if (*(int *)((int)&child->addr + 4) != local_28 || local_2c != (int)child->addr)\n            goto LAB_0001edd0;\n          }\nLAB_0001eef8:\n          arc_add(parent,child,0);\n          lVar4 = vax_operandlength(local_38);\n          local_34 = local_34 + lVar4;\n          iVar8 = local_34 >> 0x1f;\n        }\n        else {\n          local_34 = 1;\n          iVar8 = 0;\n          if (oVar3 == immediate) goto LAB_0001ec47;\n        }\n      }\n      else {\nLAB_0001ebe0:\n        local_34 = 1;\n        iVar8 = 0;\n      }\n      lVar2 = p_lowpc + CONCAT44(iVar8,local_34);\n      uVar5 = (uint)((ulonglong)lVar2 >> 0x20);\n      p_lowpc = p_lowpc + CONCAT44(iVar8,local_34);\n    } while (uVar5 < local_4c || uVar5 - local_4c < (uint)((uint)lVar2 < local_50));\n  }\n  return;\n}" primitive_type (function_declarator "vax_find_call(Sym *parent,bfd_vma p_lowpc,bfd_vma p_highpc)" identifier (parameter_list "(Sym *parent,bfd_vma p_lowpc,bfd_vma p_highpc)" ( (parameter_declaration "Sym *parent" type_identifier (pointer_declarator "*parent" * identifier)) , (parameter_declaration "bfd_vma p_lowpc" type_identifier identifier) , (parameter_declaration "bfd_vma p_highpc" type_identifier identifier) ))) (compound_statement "{\n  bfd_vma bVar1;\n  longlong lVar2;\n  operandenum oVar3;\n  long lVar4;\n  operandenum mode;\n  uint uVar5;\n  Sym *child;\n  char *pcVar6;\n  int iVar7;\n  int iVar8;\n  bool bVar9;\n  bfd_signed_vma bVar10;\n  uint local_50;\n  uint local_4c;\n  byte *local_38;\n  int local_34;\n  int local_2c;\n  int local_28;\n  \n  if (vax_find_call::inited == 0) {\n    vax_find_call::inited = 1;\n    sym_init(&indirectchild);\n    indirectchild.cg.prop.fract = 1.0;\n    indirectchild.cg.cyc.head = &indirectchild;\n  }\n  local_50 = (uint)p_highpc;\n  if ((debug_level & 0x100U) != 0) {\n    printf("[findcall] %s: 0x%lx to 0x%lx\n",parent->name,(uint)p_lowpc,local_50);\n  }\n  local_4c = (uint)(p_highpc >> 0x20);\n  if (p_lowpc._4_4_ < local_4c || p_lowpc._4_4_ - local_4c < (uint)((uint)p_lowpc < local_50)) {\n    do {\n      local_2c = (int)p_lowpc;\n      pcVar6 = (char *)((local_2c - (int)core_text_sect->vma) + (int)core_text_space);\n      if (*pcVar6 == -5) {\n        if ((debug_level & 0x100U) != 0) {\n          printf("[findcall]\t0x%lx:calls",local_2c);\n          oVar3 = vax_operandmode((uchar *)(uint)(byte)pcVar6[1]);\n          if ((oVar3 == literal) || (oVar3 == immediate)) {\n            lVar4 = vax_operandlength((uchar *)(pcVar6 + 1));\n            local_34 = lVar4 + 1;\n            local_38 = (byte *)(pcVar6 + local_34);\n            mode = vax_operandmode((uchar *)(uint)*local_38);\n            if ((debug_level & 0x100U) == 0) goto LAB_0001ec6e;\n            pcVar6 = vax_operandname(oVar3);\n            printf("\tfirst operand is %s",pcVar6);\n            pcVar6 = vax_operandname(mode);\n            printf("\tsecond operand is %s\n",pcVar6);\n            if (longreldef < mode) goto LAB_0001edd0;\n            uVar5 = 1 << ((byte)mode & 0x1f);\n            if ((uVar5 & 0x151508) == 0) goto LAB_0001ec89;\nLAB_0001eee4:\n            child = &indirectchild;\n            goto LAB_0001eef8;\n          }\nLAB_0001edd0:\n          if ((debug_level & 0x100U) != 0) {\n            puts("[findcall]\tbut it\'s a botch");\n          }\n          goto LAB_0001ebe0;\n        }\n        oVar3 = vax_operandmode((uchar *)(uint)(byte)pcVar6[1]);\n        if (oVar3 == literal) {\nLAB_0001ec47:\n          lVar4 = vax_operandlength((uchar *)(pcVar6 + 1));\n          local_34 = lVar4 + 1;\n          local_38 = (byte *)(pcVar6 + local_34);\n          mode = vax_operandmode((uchar *)(uint)*local_38);\nLAB_0001ec6e:\n          if (longreldef < mode) goto LAB_0001ebe0;\n          uVar5 = 1 << ((byte)mode & 0x1f);\n          if ((uVar5 & 0x151508) != 0) goto LAB_0001eee4;\nLAB_0001ec89:\n          if ((uVar5 & 0xa8000) == 0) goto LAB_0001edd0;\n          oVar3 = vax_operandmode((uchar *)(uint)*local_38);\n          if (oVar3 == wordrel) {\n            bVar10 = (*core_bfd->xvec->bfd_getx_signed_16)(local_38 + 1);\n            iVar7 = (int)((ulonglong)bVar10 >> 0x20);\n            bVar9 = 0xfffffffd < (uint)bVar10;\n            iVar8 = (uint)bVar10 + 2;\nLAB_0001efc9:\n            lVar2 = CONCAT44(iVar7 + (uint)bVar9,iVar8);\n            local_2c = (int)(p_lowpc + lVar2);\n            bVar1 = p_lowpc + lVar2;\n          }\n          else {\n            if (oVar3 == longrel) {\n              bVar10 = (*core_bfd->xvec->bfd_getx_signed_32)(local_38 + 1);\n              iVar7 = (int)((ulonglong)bVar10 >> 0x20);\n              bVar9 = 0xfffffffb < (uint)bVar10;\n              iVar8 = (uint)bVar10 + 4;\n              goto LAB_0001efc9;\n            }\n            if (oVar3 == byterel) {\n              bVar1 = p_lowpc + (longlong)(int)((byte)(local_38[1] + 0x80) - 0x7f);\n              local_2c = (int)bVar1;\n            }\n            else {\n              fwrite("[reladdr] not relative address\n",1,0x1f,*(FILE **)PTR_stderr_0002cfcc);\n              bVar1 = p_lowpc;\n            }\n          }\n          local_28 = (int)(bVar1 >> 0x20);\n          iVar8 = hist_check_address((uint)bVar1);\n          if ((iVar8 == 0) ||\n             (child = sym_lookup(&symtab,CONCAT44(local_28,local_2c)), child == (Sym *)0x0))\n          goto LAB_0001edd0;\n          if ((debug_level & 0x100U) == 0) {\n            if (*(int *)((int)&child->addr + 4) != local_28 || (int)child->addr != local_2c)\n            goto LAB_0001ebe0;\n          }\n          else {\n            printf("[findcall]\tdestpc 0x%lx",(uint)bVar1);\n            printf(" child->name %s",child->name);\n            printf(" child->addr 0x%lx\n",(int)child->addr);\n            if (*(int *)((int)&child->addr + 4) != local_28 || local_2c != (int)child->addr)\n            goto LAB_0001edd0;\n          }\nLAB_0001eef8:\n          arc_add(parent,child,0);\n          lVar4 = vax_operandlength(local_38);\n          local_34 = local_34 + lVar4;\n          iVar8 = local_34 >> 0x1f;\n        }\n        else {\n          local_34 = 1;\n          iVar8 = 0;\n          if (oVar3 == immediate) goto LAB_0001ec47;\n        }\n      }\n      else {\nLAB_0001ebe0:\n        local_34 = 1;\n        iVar8 = 0;\n      }\n      lVar2 = p_lowpc + CONCAT44(iVar8,local_34);\n      uVar5 = (uint)((ulonglong)lVar2 >> 0x20);\n      p_lowpc = p_lowpc + CONCAT44(iVar8,local_34);\n    } while (uVar5 < local_4c || uVar5 - local_4c < (uint)((uint)lVar2 < local_50));\n  }\n  return;\n}" { (declaration "bfd_vma bVar1;" type_identifier identifier ;) (declaration "longlong lVar2;" type_identifier identifier ;) (declaration "operandenum oVar3;" type_identifier identifier ;) (declaration "long lVar4;" (sized_type_specifier "long" long) identifier ;) (declaration "operandenum mode;" type_identifier identifier ;) (declaration "uint uVar5;" type_identifier identifier ;) (declaration "Sym *child;" type_identifier (pointer_declarator "*child" * identifier) ;) (declaration "char *pcVar6;" primitive_type (pointer_declarator "*pcVar6" * identifier) ;) (declaration "int iVar7;" primitive_type identifier ;) (declaration "int iVar8;" primitive_type identifier ;) (declaration "bool bVar9;" primitive_type identifier ;) (declaration "bfd_signed_vma bVar10;" type_identifier identifier ;) (declaration "uint local_50;" type_identifier identifier ;) (declaration "uint local_4c;" type_identifier identifier ;) (declaration "byte *local_38;" type_identifier (pointer_declarator "*local_38" * identifier) ;) (declaration "int local_34;" primitive_type identifier ;) (declaration "int local_2c;" primitive_type identifier ;) (declaration "int local_28;" primitive_type identifier ;) (if_statement "if (vax_find_call::inited == 0) {\n    vax_find_call::inited = 1;\n    sym_init(&indirectchild);\n    indirectchild.cg.prop.fract = 1.0;\n    indirectchild.cg.cyc.head = &indirectchild;\n  }" if (parenthesized_expression "(vax_find_call::inited == 0)" ( (binary_expression "vax_find_call::inited == 0" identifier (ERROR "::inited" : : identifier) == number_literal) )) (compound_statement "{\n    vax_find_call::inited = 1;\n    sym_init(&indirectchild);\n    indirectchild.cg.prop.fract = 1.0;\n    indirectchild.cg.cyc.head = &indirectchild;\n  }" { (labeled_statement "vax_find_call::inited = 1;" statement_identifier : (ERROR ":" :) (expression_statement "inited = 1;" (assignment_expression "inited = 1" identifier = number_literal) ;)) (expression_statement "sym_init(&indirectchild);" (call_expression "sym_init(&indirectchild)" identifier (argument_list "(&indirectchild)" ( (pointer_expression "&indirectchild" & identifier) ))) ;) (expression_statement "indirectchild.cg.prop.fract = 1.0;" (assignment_expression "indirectchild.cg.prop.fract = 1.0" (field_expression "indirectchild.cg.prop.fract" (field_expression "indirectchild.cg.prop" (field_expression "indirectchild.cg" identifier . field_identifier) . field_identifier) . field_identifier) = number_literal) ;) (expression_statement "indirectchild.cg.cyc.head = &indirectchild;" (assignment_expression "indirectchild.cg.cyc.head = &indirectchild" (field_expression "indirectchild.cg.cyc.head" (field_expression "indirectchild.cg.cyc" (field_expression "indirectchild.cg" identifier . field_identifier) . field_identifier) . field_identifier) = (pointer_expression "&indirectchild" & identifier)) ;) })) (expression_statement "local_50 = (uint)p_highpc;" (assignment_expression "local_50 = (uint)p_highpc" identifier = (cast_expression "(uint)p_highpc" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (if_statement "if ((debug_level & 0x100U) != 0) {\n    printf("[findcall] %s: 0x%lx to 0x%lx\n",parent->name,(uint)p_lowpc,local_50);\n  }" if (parenthesized_expression "((debug_level & 0x100U) != 0)" ( (binary_expression "(debug_level & 0x100U) != 0" (parenthesized_expression "(debug_level & 0x100U)" ( (binary_expression "debug_level & 0x100U" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n    printf("[findcall] %s: 0x%lx to 0x%lx\n",parent->name,(uint)p_lowpc,local_50);\n  }" { (expression_statement "printf("[findcall] %s: 0x%lx to 0x%lx\n",parent->name,(uint)p_lowpc,local_50);" (call_expression "printf("[findcall] %s: 0x%lx to 0x%lx\n",parent->name,(uint)p_lowpc,local_50)" identifier (argument_list "("[findcall] %s: 0x%lx to 0x%lx\n",parent->name,(uint)p_lowpc,local_50)" ( (string_literal ""[findcall] %s: 0x%lx to 0x%lx\n"" " string_content escape_sequence ") , (field_expression "parent->name" identifier -> field_identifier) , (cast_expression "(uint)p_lowpc" ( (type_descriptor "uint" type_identifier) ) identifier) , identifier ))) ;) })) (expression_statement "local_4c = (uint)(p_highpc >> 0x20);" (assignment_expression "local_4c = (uint)(p_highpc >> 0x20)" identifier = (call_expression "(uint)(p_highpc >> 0x20)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(p_highpc >> 0x20)" ( (binary_expression "p_highpc >> 0x20" identifier >> number_literal) )))) ;) (if_statement "if (p_lowpc._4_4_ < local_4c || p_lowpc._4_4_ - local_4c < (uint)((uint)p_lowpc < local_50)) {\n    do {\n      local_2c = (int)p_lowpc;\n      pcVar6 = (char *)((local_2c - (int)core_text_sect->vma) + (int)core_text_space);\n      if (*pcVar6 == -5) {\n        if ((debug_level & 0x100U) != 0) {\n          printf("[findcall]\t0x%lx:calls",local_2c);\n          oVar3 = vax_operandmode((uchar *)(uint)(byte)pcVar6[1]);\n          if ((oVar3 == literal) || (oVar3 == immediate)) {\n            lVar4 = vax_operandlength((uchar *)(pcVar6 + 1));\n            local_34 = lVar4 + 1;\n            local_38 = (byte *)(pcVar6 + local_34);\n            mode = vax_operandmode((uchar *)(uint)*local_38);\n            if ((debug_level & 0x100U) == 0) goto LAB_0001ec6e;\n            pcVar6 = vax_operandname(oVar3);\n            printf("\tfirst operand is %s",pcVar6);\n            pcVar6 = vax_operandname(mode);\n            printf("\tsecond operand is %s\n",pcVar6);\n            if (longreldef < mode) goto LAB_0001edd0;\n            uVar5 = 1 << ((byte)mode & 0x1f);\n            if ((uVar5 & 0x151508) == 0) goto LAB_0001ec89;\nLAB_0001eee4:\n            child = &indirectchild;\n            goto LAB_0001eef8;\n          }\nLAB_0001edd0:\n          if ((debug_level & 0x100U) != 0) {\n            puts("[findcall]\tbut it\'s a botch");\n          }\n          goto LAB_0001ebe0;\n        }\n        oVar3 = vax_operandmode((uchar *)(uint)(byte)pcVar6[1]);\n        if (oVar3 == literal) {\nLAB_0001ec47:\n          lVar4 = vax_operandlength((uchar *)(pcVar6 + 1));\n          local_34 = lVar4 + 1;\n          local_38 = (byte *)(pcVar6 + local_34);\n          mode = vax_operandmode((uchar *)(uint)*local_38);\nLAB_0001ec6e:\n          if (longreldef < mode) goto LAB_0001ebe0;\n          uVar5 = 1 << ((byte)mode & 0x1f);\n          if ((uVar5 & 0x151508) != 0) goto LAB_0001eee4;\nLAB_0001ec89:\n          if ((uVar5 & 0xa8000) == 0) goto LAB_0001edd0;\n          oVar3 = vax_operandmode((uchar *)(uint)*local_38);\n          if (oVar3 == wordrel) {\n            bVar10 = (*core_bfd->xvec->bfd_getx_signed_16)(local_38 + 1);\n            iVar7 = (int)((ulonglong)bVar10 >> 0x20);\n            bVar9 = 0xfffffffd < (uint)bVar10;\n            iVar8 = (uint)bVar10 + 2;\nLAB_0001efc9:\n            lVar2 = CONCAT44(iVar7 + (uint)bVar9,iVar8);\n            local_2c = (int)(p_lowpc + lVar2);\n            bVar1 = p_lowpc + lVar2;\n          }\n          else {\n            if (oVar3 == longrel) {\n              bVar10 = (*core_bfd->xvec->bfd_getx_signed_32)(local_38 + 1);\n              iVar7 = (int)((ulonglong)bVar10 >> 0x20);\n              bVar9 = 0xfffffffb < (uint)bVar10;\n              iVar8 = (uint)bVar10 + 4;\n              goto LAB_0001efc9;\n            }\n            if (oVar3 == byterel) {\n              bVar1 = p_lowpc + (longlong)(int)((byte)(local_38[1] + 0x80) - 0x7f);\n              local_2c = (int)bVar1;\n            }\n            else {\n              fwrite("[reladdr] not relative address\n",1,0x1f,*(FILE **)PTR_stderr_0002cfcc);\n              bVar1 = p_lowpc;\n            }\n          }\n          local_28 = (int)(bVar1 >> 0x20);\n          iVar8 = hist_check_address((uint)bVar1);\n          if ((iVar8 == 0) ||\n             (child = sym_lookup(&symtab,CONCAT44(local_28,local_2c)), child == (Sym *)0x0))\n          goto LAB_0001edd0;\n          if ((debug_level & 0x100U) == 0) {\n            if (*(int *)((int)&child->addr + 4) != local_28 || (int)child->addr != local_2c)\n            goto LAB_0001ebe0;\n          }\n          else {\n            printf("[findcall]\tdestpc 0x%lx",(uint)bVar1);\n            printf(" child->name %s",child->name);\n            printf(" child->addr 0x%lx\n",(int)child->addr);\n            if (*(int *)((int)&child->addr + 4) != local_28 || local_2c != (int)child->addr)\n            goto LAB_0001edd0;\n          }\nLAB_0001eef8:\n          arc_add(parent,child,0);\n          lVar4 = vax_operandlength(local_38);\n          local_34 = local_34 + lVar4;\n          iVar8 = local_34 >> 0x1f;\n        }\n        else {\n          local_34 = 1;\n          iVar8 = 0;\n          if (oVar3 == immediate) goto LAB_0001ec47;\n        }\n      }\n      else {\nLAB_0001ebe0:\n        local_34 = 1;\n        iVar8 = 0;\n      }\n      lVar2 = p_lowpc + CONCAT44(iVar8,local_34);\n      uVar5 = (uint)((ulonglong)lVar2 >> 0x20);\n      p_lowpc = p_lowpc + CONCAT44(iVar8,local_34);\n    } while (uVar5 < local_4c || uVar5 - local_4c < (uint)((uint)lVar2 < local_50));\n  }" if (parenthesized_expression "(p_lowpc._4_4_ < local_4c || p_lowpc._4_4_ - local_4c < (uint)((uint)p_lowpc < local_50))" ( (binary_expression "p_lowpc._4_4_ < local_4c || p_lowpc._4_4_ - local_4c < (uint)((uint)p_lowpc < local_50)" (binary_expression "p_lowpc._4_4_ < local_4c" (field_expression "p_lowpc._4_4_" identifier . field_identifier) < identifier) || (binary_expression "p_lowpc._4_4_ - local_4c < (uint)((uint)p_lowpc < local_50)" (binary_expression "p_lowpc._4_4_ - local_4c" (field_expression "p_lowpc._4_4_" identifier . field_identifier) - identifier) < (call_expression "(uint)((uint)p_lowpc < local_50)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((uint)p_lowpc < local_50)" ( (binary_expression "(uint)p_lowpc < local_50" (cast_expression "(uint)p_lowpc" ( (type_descriptor "uint" type_identifier) ) identifier) < identifier) ))))) )) (compound_statement "{\n    do {\n      local_2c = (int)p_lowpc;\n      pcVar6 = (char *)((local_2c - (int)core_text_sect->vma) + (int)core_text_space);\n      if (*pcVar6 == -5) {\n        if ((debug_level & 0x100U) != 0) {\n          printf("[findcall]\t0x%lx:calls",local_2c);\n          oVar3 = vax_operandmode((uchar *)(uint)(byte)pcVar6[1]);\n          if ((oVar3 == literal) || (oVar3 == immediate)) {\n            lVar4 = vax_operandlength((uchar *)(pcVar6 + 1));\n            local_34 = lVar4 + 1;\n            local_38 = (byte *)(pcVar6 + local_34);\n            mode = vax_operandmode((uchar *)(uint)*local_38);\n            if ((debug_level & 0x100U) == 0) goto LAB_0001ec6e;\n            pcVar6 = vax_operandname(oVar3);\n            printf("\tfirst operand is %s",pcVar6);\n            pcVar6 = vax_operandname(mode);\n            printf("\tsecond operand is %s\n",pcVar6);\n            if (longreldef < mode) goto LAB_0001edd0;\n            uVar5 = 1 << ((byte)mode & 0x1f);\n            if ((uVar5 & 0x151508) == 0) goto LAB_0001ec89;\nLAB_0001eee4:\n            child = &indirectchild;\n            goto LAB_0001eef8;\n          }\nLAB_0001edd0:\n          if ((debug_level & 0x100U) != 0) {\n            puts("[findcall]\tbut it\'s a botch");\n          }\n          goto LAB_0001ebe0;\n        }\n        oVar3 = vax_operandmode((uchar *)(uint)(byte)pcVar6[1]);\n        if (oVar3 == literal) {\nLAB_0001ec47:\n          lVar4 = vax_operandlength((uchar *)(pcVar6 + 1));\n          local_34 = lVar4 + 1;\n          local_38 = (byte *)(pcVar6 + local_34);\n          mode = vax_operandmode((uchar *)(uint)*local_38);\nLAB_0001ec6e:\n          if (longreldef < mode) goto LAB_0001ebe0;\n          uVar5 = 1 << ((byte)mode & 0x1f);\n          if ((uVar5 & 0x151508) != 0) goto LAB_0001eee4;\nLAB_0001ec89:\n          if ((uVar5 & 0xa8000) == 0) goto LAB_0001edd0;\n          oVar3 = vax_operandmode((uchar *)(uint)*local_38);\n          if (oVar3 == wordrel) {\n            bVar10 = (*core_bfd->xvec->bfd_getx_signed_16)(local_38 + 1);\n            iVar7 = (int)((ulonglong)bVar10 >> 0x20);\n            bVar9 = 0xfffffffd < (uint)bVar10;\n            iVar8 = (uint)bVar10 + 2;\nLAB_0001efc9:\n            lVar2 = CONCAT44(iVar7 + (uint)bVar9,iVar8);\n            local_2c = (int)(p_lowpc + lVar2);\n            bVar1 = p_lowpc + lVar2;\n          }\n          else {\n            if (oVar3 == longrel) {\n              bVar10 = (*core_bfd->xvec->bfd_getx_signed_32)(local_38 + 1);\n              iVar7 = (int)((ulonglong)bVar10 >> 0x20);\n              bVar9 = 0xfffffffb < (uint)bVar10;\n              iVar8 = (uint)bVar10 + 4;\n              goto LAB_0001efc9;\n            }\n            if (oVar3 == byterel) {\n              bVar1 = p_lowpc + (longlong)(int)((byte)(local_38[1] + 0x80) - 0x7f);\n              local_2c = (int)bVar1;\n            }\n            else {\n              fwrite("[reladdr] not relative address\n",1,0x1f,*(FILE **)PTR_stderr_0002cfcc);\n              bVar1 = p_lowpc;\n            }\n          }\n          local_28 = (int)(bVar1 >> 0x20);\n          iVar8 = hist_check_address((uint)bVar1);\n          if ((iVar8 == 0) ||\n             (child = sym_lookup(&symtab,CONCAT44(local_28,local_2c)), child == (Sym *)0x0))\n          goto LAB_0001edd0;\n          if ((debug_level & 0x100U) == 0) {\n            if (*(int *)((int)&child->addr + 4) != local_28 || (int)child->addr != local_2c)\n            goto LAB_0001ebe0;\n          }\n          else {\n            printf("[findcall]\tdestpc 0x%lx",(uint)bVar1);\n            printf(" child->name %s",child->name);\n            printf(" child->addr 0x%lx\n",(int)child->addr);\n            if (*(int *)((int)&child->addr + 4) != local_28 || local_2c != (int)child->addr)\n            goto LAB_0001edd0;\n          }\nLAB_0001eef8:\n          arc_add(parent,child,0);\n          lVar4 = vax_operandlength(local_38);\n          local_34 = local_34 + lVar4;\n          iVar8 = local_34 >> 0x1f;\n        }\n        else {\n          local_34 = 1;\n          iVar8 = 0;\n          if (oVar3 == immediate) goto LAB_0001ec47;\n        }\n      }\n      else {\nLAB_0001ebe0:\n        local_34 = 1;\n        iVar8 = 0;\n      }\n      lVar2 = p_lowpc + CONCAT44(iVar8,local_34);\n      uVar5 = (uint)((ulonglong)lVar2 >> 0x20);\n      p_lowpc = p_lowpc + CONCAT44(iVar8,local_34);\n    } while (uVar5 < local_4c || uVar5 - local_4c < (uint)((uint)lVar2 < local_50));\n  }" { (do_statement "do {\n      local_2c = (int)p_lowpc;\n      pcVar6 = (char *)((local_2c - (int)core_text_sect->vma) + (int)core_text_space);\n      if (*pcVar6 == -5) {\n        if ((debug_level & 0x100U) != 0) {\n          printf("[findcall]\t0x%lx:calls",local_2c);\n          oVar3 = vax_operandmode((uchar *)(uint)(byte)pcVar6[1]);\n          if ((oVar3 == literal) || (oVar3 == immediate)) {\n            lVar4 = vax_operandlength((uchar *)(pcVar6 + 1));\n            local_34 = lVar4 + 1;\n            local_38 = (byte *)(pcVar6 + local_34);\n            mode = vax_operandmode((uchar *)(uint)*local_38);\n            if ((debug_level & 0x100U) == 0) goto LAB_0001ec6e;\n            pcVar6 = vax_operandname(oVar3);\n            printf("\tfirst operand is %s",pcVar6);\n            pcVar6 = vax_operandname(mode);\n            printf("\tsecond operand is %s\n",pcVar6);\n            if (longreldef < mode) goto LAB_0001edd0;\n            uVar5 = 1 << ((byte)mode & 0x1f);\n            if ((uVar5 & 0x151508) == 0) goto LAB_0001ec89;\nLAB_0001eee4:\n            child = &indirectchild;\n            goto LAB_0001eef8;\n          }\nLAB_0001edd0:\n          if ((debug_level & 0x100U) != 0) {\n            puts("[findcall]\tbut it\'s a botch");\n          }\n          goto LAB_0001ebe0;\n        }\n        oVar3 = vax_operandmode((uchar *)(uint)(byte)pcVar6[1]);\n        if (oVar3 == literal) {\nLAB_0001ec47:\n          lVar4 = vax_operandlength((uchar *)(pcVar6 + 1));\n          local_34 = lVar4 + 1;\n          local_38 = (byte *)(pcVar6 + local_34);\n          mode = vax_operandmode((uchar *)(uint)*local_38);\nLAB_0001ec6e:\n          if (longreldef < mode) goto LAB_0001ebe0;\n          uVar5 = 1 << ((byte)mode & 0x1f);\n          if ((uVar5 & 0x151508) != 0) goto LAB_0001eee4;\nLAB_0001ec89:\n          if ((uVar5 & 0xa8000) == 0) goto LAB_0001edd0;\n          oVar3 = vax_operandmode((uchar *)(uint)*local_38);\n          if (oVar3 == wordrel) {\n            bVar10 = (*core_bfd->xvec->bfd_getx_signed_16)(local_38 + 1);\n            iVar7 = (int)((ulonglong)bVar10 >> 0x20);\n            bVar9 = 0xfffffffd < (uint)bVar10;\n            iVar8 = (uint)bVar10 + 2;\nLAB_0001efc9:\n            lVar2 = CONCAT44(iVar7 + (uint)bVar9,iVar8);\n            local_2c = (int)(p_lowpc + lVar2);\n            bVar1 = p_lowpc + lVar2;\n          }\n          else {\n            if (oVar3 == longrel) {\n              bVar10 = (*core_bfd->xvec->bfd_getx_signed_32)(local_38 + 1);\n              iVar7 = (int)((ulonglong)bVar10 >> 0x20);\n              bVar9 = 0xfffffffb < (uint)bVar10;\n              iVar8 = (uint)bVar10 + 4;\n              goto LAB_0001efc9;\n            }\n            if (oVar3 == byterel) {\n              bVar1 = p_lowpc + (longlong)(int)((byte)(local_38[1] + 0x80) - 0x7f);\n              local_2c = (int)bVar1;\n            }\n            else {\n              fwrite("[reladdr] not relative address\n",1,0x1f,*(FILE **)PTR_stderr_0002cfcc);\n              bVar1 = p_lowpc;\n            }\n          }\n          local_28 = (int)(bVar1 >> 0x20);\n          iVar8 = hist_check_address((uint)bVar1);\n          if ((iVar8 == 0) ||\n             (child = sym_lookup(&symtab,CONCAT44(local_28,local_2c)), child == (Sym *)0x0))\n          goto LAB_0001edd0;\n          if ((debug_level & 0x100U) == 0) {\n            if (*(int *)((int)&child->addr + 4) != local_28 || (int)child->addr != local_2c)\n            goto LAB_0001ebe0;\n          }\n          else {\n            printf("[findcall]\tdestpc 0x%lx",(uint)bVar1);\n            printf(" child->name %s",child->name);\n            printf(" child->addr 0x%lx\n",(int)child->addr);\n            if (*(int *)((int)&child->addr + 4) != local_28 || local_2c != (int)child->addr)\n            goto LAB_0001edd0;\n          }\nLAB_0001eef8:\n          arc_add(parent,child,0);\n          lVar4 = vax_operandlength(local_38);\n          local_34 = local_34 + lVar4;\n          iVar8 = local_34 >> 0x1f;\n        }\n        else {\n          local_34 = 1;\n          iVar8 = 0;\n          if (oVar3 == immediate) goto LAB_0001ec47;\n        }\n      }\n      else {\nLAB_0001ebe0:\n        local_34 = 1;\n        iVar8 = 0;\n      }\n      lVar2 = p_lowpc + CONCAT44(iVar8,local_34);\n      uVar5 = (uint)((ulonglong)lVar2 >> 0x20);\n      p_lowpc = p_lowpc + CONCAT44(iVar8,local_34);\n    } while (uVar5 < local_4c || uVar5 - local_4c < (uint)((uint)lVar2 < local_50));" do (compound_statement "{\n      local_2c = (int)p_lowpc;\n      pcVar6 = (char *)((local_2c - (int)core_text_sect->vma) + (int)core_text_space);\n      if (*pcVar6 == -5) {\n        if ((debug_level & 0x100U) != 0) {\n          printf("[findcall]\t0x%lx:calls",local_2c);\n          oVar3 = vax_operandmode((uchar *)(uint)(byte)pcVar6[1]);\n          if ((oVar3 == literal) || (oVar3 == immediate)) {\n            lVar4 = vax_operandlength((uchar *)(pcVar6 + 1));\n            local_34 = lVar4 + 1;\n            local_38 = (byte *)(pcVar6 + local_34);\n            mode = vax_operandmode((uchar *)(uint)*local_38);\n            if ((debug_level & 0x100U) == 0) goto LAB_0001ec6e;\n            pcVar6 = vax_operandname(oVar3);\n            printf("\tfirst operand is %s",pcVar6);\n            pcVar6 = vax_operandname(mode);\n            printf("\tsecond operand is %s\n",pcVar6);\n            if (longreldef < mode) goto LAB_0001edd0;\n            uVar5 = 1 << ((byte)mode & 0x1f);\n            if ((uVar5 & 0x151508) == 0) goto LAB_0001ec89;\nLAB_0001eee4:\n            child = &indirectchild;\n            goto LAB_0001eef8;\n          }\nLAB_0001edd0:\n          if ((debug_level & 0x100U) != 0) {\n            puts("[findcall]\tbut it\'s a botch");\n          }\n          goto LAB_0001ebe0;\n        }\n        oVar3 = vax_operandmode((uchar *)(uint)(byte)pcVar6[1]);\n        if (oVar3 == literal) {\nLAB_0001ec47:\n          lVar4 = vax_operandlength((uchar *)(pcVar6 + 1));\n          local_34 = lVar4 + 1;\n          local_38 = (byte *)(pcVar6 + local_34);\n          mode = vax_operandmode((uchar *)(uint)*local_38);\nLAB_0001ec6e:\n          if (longreldef < mode) goto LAB_0001ebe0;\n          uVar5 = 1 << ((byte)mode & 0x1f);\n          if ((uVar5 & 0x151508) != 0) goto LAB_0001eee4;\nLAB_0001ec89:\n          if ((uVar5 & 0xa8000) == 0) goto LAB_0001edd0;\n          oVar3 = vax_operandmode((uchar *)(uint)*local_38);\n          if (oVar3 == wordrel) {\n            bVar10 = (*core_bfd->xvec->bfd_getx_signed_16)(local_38 + 1);\n            iVar7 = (int)((ulonglong)bVar10 >> 0x20);\n            bVar9 = 0xfffffffd < (uint)bVar10;\n            iVar8 = (uint)bVar10 + 2;\nLAB_0001efc9:\n            lVar2 = CONCAT44(iVar7 + (uint)bVar9,iVar8);\n            local_2c = (int)(p_lowpc + lVar2);\n            bVar1 = p_lowpc + lVar2;\n          }\n          else {\n            if (oVar3 == longrel) {\n              bVar10 = (*core_bfd->xvec->bfd_getx_signed_32)(local_38 + 1);\n              iVar7 = (int)((ulonglong)bVar10 >> 0x20);\n              bVar9 = 0xfffffffb < (uint)bVar10;\n              iVar8 = (uint)bVar10 + 4;\n              goto LAB_0001efc9;\n            }\n            if (oVar3 == byterel) {\n              bVar1 = p_lowpc + (longlong)(int)((byte)(local_38[1] + 0x80) - 0x7f);\n              local_2c = (int)bVar1;\n            }\n            else {\n              fwrite("[reladdr] not relative address\n",1,0x1f,*(FILE **)PTR_stderr_0002cfcc);\n              bVar1 = p_lowpc;\n            }\n          }\n          local_28 = (int)(bVar1 >> 0x20);\n          iVar8 = hist_check_address((uint)bVar1);\n          if ((iVar8 == 0) ||\n             (child = sym_lookup(&symtab,CONCAT44(local_28,local_2c)), child == (Sym *)0x0))\n          goto LAB_0001edd0;\n          if ((debug_level & 0x100U) == 0) {\n            if (*(int *)((int)&child->addr + 4) != local_28 || (int)child->addr != local_2c)\n            goto LAB_0001ebe0;\n          }\n          else {\n            printf("[findcall]\tdestpc 0x%lx",(uint)bVar1);\n            printf(" child->name %s",child->name);\n            printf(" child->addr 0x%lx\n",(int)child->addr);\n            if (*(int *)((int)&child->addr + 4) != local_28 || local_2c != (int)child->addr)\n            goto LAB_0001edd0;\n          }\nLAB_0001eef8:\n          arc_add(parent,child,0);\n          lVar4 = vax_operandlength(local_38);\n          local_34 = local_34 + lVar4;\n          iVar8 = local_34 >> 0x1f;\n        }\n        else {\n          local_34 = 1;\n          iVar8 = 0;\n          if (oVar3 == immediate) goto LAB_0001ec47;\n        }\n      }\n      else {\nLAB_0001ebe0:\n        local_34 = 1;\n        iVar8 = 0;\n      }\n      lVar2 = p_lowpc + CONCAT44(iVar8,local_34);\n      uVar5 = (uint)((ulonglong)lVar2 >> 0x20);\n      p_lowpc = p_lowpc + CONCAT44(iVar8,local_34);\n    }" { (expression_statement "local_2c = (int)p_lowpc;" (assignment_expression "local_2c = (int)p_lowpc" identifier = (cast_expression "(int)p_lowpc" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "pcVar6 = (char *)((local_2c - (int)core_text_sect->vma) + (int)core_text_space);" (assignment_expression "pcVar6 = (char *)((local_2c - (int)core_text_sect->vma) + (int)core_text_space)" identifier = (cast_expression "(char *)((local_2c - (int)core_text_sect->vma) + (int)core_text_space)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((local_2c - (int)core_text_sect->vma) + (int)core_text_space)" ( (binary_expression "(local_2c - (int)core_text_sect->vma) + (int)core_text_space" (parenthesized_expression "(local_2c - (int)core_text_sect->vma)" ( (binary_expression "local_2c - (int)core_text_sect->vma" identifier - (cast_expression "(int)core_text_sect->vma" ( (type_descriptor "int" primitive_type) ) (field_expression "core_text_sect->vma" identifier -> field_identifier))) )) + (cast_expression "(int)core_text_space" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;) (if_statement "if (*pcVar6 == -5) {\n        if ((debug_level & 0x100U) != 0) {\n          printf("[findcall]\t0x%lx:calls",local_2c);\n          oVar3 = vax_operandmode((uchar *)(uint)(byte)pcVar6[1]);\n          if ((oVar3 == literal) || (oVar3 == immediate)) {\n            lVar4 = vax_operandlength((uchar *)(pcVar6 + 1));\n            local_34 = lVar4 + 1;\n            local_38 = (byte *)(pcVar6 + local_34);\n            mode = vax_operandmode((uchar *)(uint)*local_38);\n            if ((debug_level & 0x100U) == 0) goto LAB_0001ec6e;\n            pcVar6 = vax_operandname(oVar3);\n            printf("\tfirst operand is %s",pcVar6);\n            pcVar6 = vax_operandname(mode);\n            printf("\tsecond operand is %s\n",pcVar6);\n            if (longreldef < mode) goto LAB_0001edd0;\n            uVar5 = 1 << ((byte)mode & 0x1f);\n            if ((uVar5 & 0x151508) == 0) goto LAB_0001ec89;\nLAB_0001eee4:\n            child = &indirectchild;\n            goto LAB_0001eef8;\n          }\nLAB_0001edd0:\n          if ((debug_level & 0x100U) != 0) {\n            puts("[findcall]\tbut it\'s a botch");\n          }\n          goto LAB_0001ebe0;\n        }\n        oVar3 = vax_operandmode((uchar *)(uint)(byte)pcVar6[1]);\n        if (oVar3 == literal) {\nLAB_0001ec47:\n          lVar4 = vax_operandlength((uchar *)(pcVar6 + 1));\n          local_34 = lVar4 + 1;\n          local_38 = (byte *)(pcVar6 + local_34);\n          mode = vax_operandmode((uchar *)(uint)*local_38);\nLAB_0001ec6e:\n          if (longreldef < mode) goto LAB_0001ebe0;\n          uVar5 = 1 << ((byte)mode & 0x1f);\n          if ((uVar5 & 0x151508) != 0) goto LAB_0001eee4;\nLAB_0001ec89:\n          if ((uVar5 & 0xa8000) == 0) goto LAB_0001edd0;\n          oVar3 = vax_operandmode((uchar *)(uint)*local_38);\n          if (oVar3 == wordrel) {\n            bVar10 = (*core_bfd->xvec->bfd_getx_signed_16)(local_38 + 1);\n            iVar7 = (int)((ulonglong)bVar10 >> 0x20);\n            bVar9 = 0xfffffffd < (uint)bVar10;\n            iVar8 = (uint)bVar10 + 2;\nLAB_0001efc9:\n            lVar2 = CONCAT44(iVar7 + (uint)bVar9,iVar8);\n            local_2c = (int)(p_lowpc + lVar2);\n            bVar1 = p_lowpc + lVar2;\n          }\n          else {\n            if (oVar3 == longrel) {\n              bVar10 = (*core_bfd->xvec->bfd_getx_signed_32)(local_38 + 1);\n              iVar7 = (int)((ulonglong)bVar10 >> 0x20);\n              bVar9 = 0xfffffffb < (uint)bVar10;\n              iVar8 = (uint)bVar10 + 4;\n              goto LAB_0001efc9;\n            }\n            if (oVar3 == byterel) {\n              bVar1 = p_lowpc + (longlong)(int)((byte)(local_38[1] + 0x80) - 0x7f);\n              local_2c = (int)bVar1;\n            }\n            else {\n              fwrite("[reladdr] not relative address\n",1,0x1f,*(FILE **)PTR_stderr_0002cfcc);\n              bVar1 = p_lowpc;\n            }\n          }\n          local_28 = (int)(bVar1 >> 0x20);\n          iVar8 = hist_check_address((uint)bVar1);\n          if ((iVar8 == 0) ||\n             (child = sym_lookup(&symtab,CONCAT44(local_28,local_2c)), child == (Sym *)0x0))\n          goto LAB_0001edd0;\n          if ((debug_level & 0x100U) == 0) {\n            if (*(int *)((int)&child->addr + 4) != local_28 || (int)child->addr != local_2c)\n            goto LAB_0001ebe0;\n          }\n          else {\n            printf("[findcall]\tdestpc 0x%lx",(uint)bVar1);\n            printf(" child->name %s",child->name);\n            printf(" child->addr 0x%lx\n",(int)child->addr);\n            if (*(int *)((int)&child->addr + 4) != local_28 || local_2c != (int)child->addr)\n            goto LAB_0001edd0;\n          }\nLAB_0001eef8:\n          arc_add(parent,child,0);\n          lVar4 = vax_operandlength(local_38);\n          local_34 = local_34 + lVar4;\n          iVar8 = local_34 >> 0x1f;\n        }\n        else {\n          local_34 = 1;\n          iVar8 = 0;\n          if (oVar3 == immediate) goto LAB_0001ec47;\n        }\n      }\n      else {\nLAB_0001ebe0:\n        local_34 = 1;\n        iVar8 = 0;\n      }" if (parenthesized_expression "(*pcVar6 == -5)" ( (binary_expression "*pcVar6 == -5" (pointer_expression "*pcVar6" * identifier) == number_literal) )) (compound_statement "{\n        if ((debug_level & 0x100U) != 0) {\n          printf("[findcall]\t0x%lx:calls",local_2c);\n          oVar3 = vax_operandmode((uchar *)(uint)(byte)pcVar6[1]);\n          if ((oVar3 == literal) || (oVar3 == immediate)) {\n            lVar4 = vax_operandlength((uchar *)(pcVar6 + 1));\n            local_34 = lVar4 + 1;\n            local_38 = (byte *)(pcVar6 + local_34);\n            mode = vax_operandmode((uchar *)(uint)*local_38);\n            if ((debug_level & 0x100U) == 0) goto LAB_0001ec6e;\n            pcVar6 = vax_operandname(oVar3);\n            printf("\tfirst operand is %s",pcVar6);\n            pcVar6 = vax_operandname(mode);\n            printf("\tsecond operand is %s\n",pcVar6);\n            if (longreldef < mode) goto LAB_0001edd0;\n            uVar5 = 1 << ((byte)mode & 0x1f);\n            if ((uVar5 & 0x151508) == 0) goto LAB_0001ec89;\nLAB_0001eee4:\n            child = &indirectchild;\n            goto LAB_0001eef8;\n          }\nLAB_0001edd0:\n          if ((debug_level & 0x100U) != 0) {\n            puts("[findcall]\tbut it\'s a botch");\n          }\n          goto LAB_0001ebe0;\n        }\n        oVar3 = vax_operandmode((uchar *)(uint)(byte)pcVar6[1]);\n        if (oVar3 == literal) {\nLAB_0001ec47:\n          lVar4 = vax_operandlength((uchar *)(pcVar6 + 1));\n          local_34 = lVar4 + 1;\n          local_38 = (byte *)(pcVar6 + local_34);\n          mode = vax_operandmode((uchar *)(uint)*local_38);\nLAB_0001ec6e:\n          if (longreldef < mode) goto LAB_0001ebe0;\n          uVar5 = 1 << ((byte)mode & 0x1f);\n          if ((uVar5 & 0x151508) != 0) goto LAB_0001eee4;\nLAB_0001ec89:\n          if ((uVar5 & 0xa8000) == 0) goto LAB_0001edd0;\n          oVar3 = vax_operandmode((uchar *)(uint)*local_38);\n          if (oVar3 == wordrel) {\n            bVar10 = (*core_bfd->xvec->bfd_getx_signed_16)(local_38 + 1);\n            iVar7 = (int)((ulonglong)bVar10 >> 0x20);\n            bVar9 = 0xfffffffd < (uint)bVar10;\n            iVar8 = (uint)bVar10 + 2;\nLAB_0001efc9:\n            lVar2 = CONCAT44(iVar7 + (uint)bVar9,iVar8);\n            local_2c = (int)(p_lowpc + lVar2);\n            bVar1 = p_lowpc + lVar2;\n          }\n          else {\n            if (oVar3 == longrel) {\n              bVar10 = (*core_bfd->xvec->bfd_getx_signed_32)(local_38 + 1);\n              iVar7 = (int)((ulonglong)bVar10 >> 0x20);\n              bVar9 = 0xfffffffb < (uint)bVar10;\n              iVar8 = (uint)bVar10 + 4;\n              goto LAB_0001efc9;\n            }\n            if (oVar3 == byterel) {\n              bVar1 = p_lowpc + (longlong)(int)((byte)(local_38[1] + 0x80) - 0x7f);\n              local_2c = (int)bVar1;\n            }\n            else {\n              fwrite("[reladdr] not relative address\n",1,0x1f,*(FILE **)PTR_stderr_0002cfcc);\n              bVar1 = p_lowpc;\n            }\n          }\n          local_28 = (int)(bVar1 >> 0x20);\n          iVar8 = hist_check_address((uint)bVar1);\n          if ((iVar8 == 0) ||\n             (child = sym_lookup(&symtab,CONCAT44(local_28,local_2c)), child == (Sym *)0x0))\n          goto LAB_0001edd0;\n          if ((debug_level & 0x100U) == 0) {\n            if (*(int *)((int)&child->addr + 4) != local_28 || (int)child->addr != local_2c)\n            goto LAB_0001ebe0;\n          }\n          else {\n            printf("[findcall]\tdestpc 0x%lx",(uint)bVar1);\n            printf(" child->name %s",child->name);\n            printf(" child->addr 0x%lx\n",(int)child->addr);\n            if (*(int *)((int)&child->addr + 4) != local_28 || local_2c != (int)child->addr)\n            goto LAB_0001edd0;\n          }\nLAB_0001eef8:\n          arc_add(parent,child,0);\n          lVar4 = vax_operandlength(local_38);\n          local_34 = local_34 + lVar4;\n          iVar8 = local_34 >> 0x1f;\n        }\n        else {\n          local_34 = 1;\n          iVar8 = 0;\n          if (oVar3 == immediate) goto LAB_0001ec47;\n        }\n      }" { (if_statement "if ((debug_level & 0x100U) != 0) {\n          printf("[findcall]\t0x%lx:calls",local_2c);\n          oVar3 = vax_operandmode((uchar *)(uint)(byte)pcVar6[1]);\n          if ((oVar3 == literal) || (oVar3 == immediate)) {\n            lVar4 = vax_operandlength((uchar *)(pcVar6 + 1));\n            local_34 = lVar4 + 1;\n            local_38 = (byte *)(pcVar6 + local_34);\n            mode = vax_operandmode((uchar *)(uint)*local_38);\n            if ((debug_level & 0x100U) == 0) goto LAB_0001ec6e;\n            pcVar6 = vax_operandname(oVar3);\n            printf("\tfirst operand is %s",pcVar6);\n            pcVar6 = vax_operandname(mode);\n            printf("\tsecond operand is %s\n",pcVar6);\n            if (longreldef < mode) goto LAB_0001edd0;\n            uVar5 = 1 << ((byte)mode & 0x1f);\n            if ((uVar5 & 0x151508) == 0) goto LAB_0001ec89;\nLAB_0001eee4:\n            child = &indirectchild;\n            goto LAB_0001eef8;\n          }\nLAB_0001edd0:\n          if ((debug_level & 0x100U) != 0) {\n            puts("[findcall]\tbut it\'s a botch");\n          }\n          goto LAB_0001ebe0;\n        }" if (parenthesized_expression "((debug_level & 0x100U) != 0)" ( (binary_expression "(debug_level & 0x100U) != 0" (parenthesized_expression "(debug_level & 0x100U)" ( (binary_expression "debug_level & 0x100U" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n          printf("[findcall]\t0x%lx:calls",local_2c);\n          oVar3 = vax_operandmode((uchar *)(uint)(byte)pcVar6[1]);\n          if ((oVar3 == literal) || (oVar3 == immediate)) {\n            lVar4 = vax_operandlength((uchar *)(pcVar6 + 1));\n            local_34 = lVar4 + 1;\n            local_38 = (byte *)(pcVar6 + local_34);\n            mode = vax_operandmode((uchar *)(uint)*local_38);\n            if ((debug_level & 0x100U) == 0) goto LAB_0001ec6e;\n            pcVar6 = vax_operandname(oVar3);\n            printf("\tfirst operand is %s",pcVar6);\n            pcVar6 = vax_operandname(mode);\n            printf("\tsecond operand is %s\n",pcVar6);\n            if (longreldef < mode) goto LAB_0001edd0;\n            uVar5 = 1 << ((byte)mode & 0x1f);\n            if ((uVar5 & 0x151508) == 0) goto LAB_0001ec89;\nLAB_0001eee4:\n            child = &indirectchild;\n            goto LAB_0001eef8;\n          }\nLAB_0001edd0:\n          if ((debug_level & 0x100U) != 0) {\n            puts("[findcall]\tbut it\'s a botch");\n          }\n          goto LAB_0001ebe0;\n        }" { (expression_statement "printf("[findcall]\t0x%lx:calls",local_2c);" (call_expression "printf("[findcall]\t0x%lx:calls",local_2c)" identifier (argument_list "("[findcall]\t0x%lx:calls",local_2c)" ( (string_literal ""[findcall]\t0x%lx:calls"" " string_content escape_sequence string_content ") , identifier ))) ;) (expression_statement "oVar3 = vax_operandmode((uchar *)(uint)(byte)pcVar6[1]);" (assignment_expression "oVar3 = vax_operandmode((uchar *)(uint)(byte)pcVar6[1])" identifier = (call_expression "vax_operandmode((uchar *)(uint)(byte)pcVar6[1])" identifier (argument_list "((uchar *)(uint)(byte)pcVar6[1])" ( (cast_expression "(uchar *)(uint)(byte)pcVar6[1]" ( (type_descriptor "uchar *" type_identifier (abstract_pointer_declarator "*" *)) ) (cast_expression "(uint)(byte)pcVar6[1]" ( (type_descriptor "uint" type_identifier) ) (cast_expression "(byte)pcVar6[1]" ( (type_descriptor "byte" type_identifier) ) (subscript_expression "pcVar6[1]" identifier [ number_literal ])))) )))) ;) (if_statement "if ((oVar3 == literal) || (oVar3 == immediate)) {\n            lVar4 = vax_operandlength((uchar *)(pcVar6 + 1));\n            local_34 = lVar4 + 1;\n            local_38 = (byte *)(pcVar6 + local_34);\n            mode = vax_operandmode((uchar *)(uint)*local_38);\n            if ((debug_level & 0x100U) == 0) goto LAB_0001ec6e;\n            pcVar6 = vax_operandname(oVar3);\n            printf("\tfirst operand is %s",pcVar6);\n            pcVar6 = vax_operandname(mode);\n            printf("\tsecond operand is %s\n",pcVar6);\n            if (longreldef < mode) goto LAB_0001edd0;\n            uVar5 = 1 << ((byte)mode & 0x1f);\n            if ((uVar5 & 0x151508) == 0) goto LAB_0001ec89;\nLAB_0001eee4:\n            child = &indirectchild;\n            goto LAB_0001eef8;\n          }" if (parenthesized_expression "((oVar3 == literal) || (oVar3 == immediate))" ( (binary_expression "(oVar3 == literal) || (oVar3 == immediate)" (parenthesized_expression "(oVar3 == literal)" ( (binary_expression "oVar3 == literal" identifier == identifier) )) || (parenthesized_expression "(oVar3 == immediate)" ( (binary_expression "oVar3 == immediate" identifier == identifier) ))) )) (compound_statement "{\n            lVar4 = vax_operandlength((uchar *)(pcVar6 + 1));\n            local_34 = lVar4 + 1;\n            local_38 = (byte *)(pcVar6 + local_34);\n            mode = vax_operandmode((uchar *)(uint)*local_38);\n            if ((debug_level & 0x100U) == 0) goto LAB_0001ec6e;\n            pcVar6 = vax_operandname(oVar3);\n            printf("\tfirst operand is %s",pcVar6);\n            pcVar6 = vax_operandname(mode);\n            printf("\tsecond operand is %s\n",pcVar6);\n            if (longreldef < mode) goto LAB_0001edd0;\n            uVar5 = 1 << ((byte)mode & 0x1f);\n            if ((uVar5 & 0x151508) == 0) goto LAB_0001ec89;\nLAB_0001eee4:\n            child = &indirectchild;\n            goto LAB_0001eef8;\n          }" { (expression_statement "lVar4 = vax_operandlength((uchar *)(pcVar6 + 1));" (assignment_expression "lVar4 = vax_operandlength((uchar *)(pcVar6 + 1))" identifier = (call_expression "vax_operandlength((uchar *)(pcVar6 + 1))" identifier (argument_list "((uchar *)(pcVar6 + 1))" ( (cast_expression "(uchar *)(pcVar6 + 1)" ( (type_descriptor "uchar *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar6 + 1)" ( (binary_expression "pcVar6 + 1" identifier + number_literal) ))) )))) ;) (expression_statement "local_34 = lVar4 + 1;" (assignment_expression "local_34 = lVar4 + 1" identifier = (binary_expression "lVar4 + 1" identifier + number_literal)) ;) (expression_statement "local_38 = (byte *)(pcVar6 + local_34);" (assignment_expression "local_38 = (byte *)(pcVar6 + local_34)" identifier = (cast_expression "(byte *)(pcVar6 + local_34)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar6 + local_34)" ( (binary_expression "pcVar6 + local_34" identifier + identifier) )))) ;) (expression_statement "mode = vax_operandmode((uchar *)(uint)*local_38);" (assignment_expression "mode = vax_operandmode((uchar *)(uint)*local_38)" identifier = (call_expression "vax_operandmode((uchar *)(uint)*local_38)" identifier (argument_list "((uchar *)(uint)*local_38)" ( (binary_expression "(uchar *)(uint)*local_38" (cast_expression "(uchar *)(uint)" ( (type_descriptor "uchar *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uint)" ( identifier ))) * identifier) )))) ;) (if_statement "if ((debug_level & 0x100U) == 0) goto LAB_0001ec6e;" if (parenthesized_expression "((debug_level & 0x100U) == 0)" ( (binary_expression "(debug_level & 0x100U) == 0" (parenthesized_expression "(debug_level & 0x100U)" ( (binary_expression "debug_level & 0x100U" identifier & number_literal) )) == number_literal) )) (goto_statement "goto LAB_0001ec6e;" goto statement_identifier ;)) (expression_statement "pcVar6 = vax_operandname(oVar3);" (assignment_expression "pcVar6 = vax_operandname(oVar3)" identifier = (call_expression "vax_operandname(oVar3)" identifier (argument_list "(oVar3)" ( identifier )))) ;) (expression_statement "printf("\tfirst operand is %s",pcVar6);" (call_expression "printf("\tfirst operand is %s",pcVar6)" identifier (argument_list "("\tfirst operand is %s",pcVar6)" ( (string_literal ""\tfirst operand is %s"" " escape_sequence string_content ") , identifier ))) ;) (expression_statement "pcVar6 = vax_operandname(mode);" (assignment_expression "pcVar6 = vax_operandname(mode)" identifier = (call_expression "vax_operandname(mode)" identifier (argument_list "(mode)" ( identifier )))) ;) (expression_statement "printf("\tsecond operand is %s\n",pcVar6);" (call_expression "printf("\tsecond operand is %s\n",pcVar6)" identifier (argument_list "("\tsecond operand is %s\n",pcVar6)" ( (string_literal ""\tsecond operand is %s\n"" " escape_sequence string_content escape_sequence ") , identifier ))) ;) (if_statement "if (longreldef < mode) goto LAB_0001edd0;" if (parenthesized_expression "(longreldef < mode)" ( (binary_expression "longreldef < mode" identifier < identifier) )) (goto_statement "goto LAB_0001edd0;" goto statement_identifier ;)) (expression_statement "uVar5 = 1 << ((byte)mode & 0x1f);" (assignment_expression "uVar5 = 1 << ((byte)mode & 0x1f)" identifier = (binary_expression "1 << ((byte)mode & 0x1f)" number_literal << (parenthesized_expression "((byte)mode & 0x1f)" ( (binary_expression "(byte)mode & 0x1f" (cast_expression "(byte)mode" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) )))) ;) (if_statement "if ((uVar5 & 0x151508) == 0) goto LAB_0001ec89;" if (parenthesized_expression "((uVar5 & 0x151508) == 0)" ( (binary_expression "(uVar5 & 0x151508) == 0" (parenthesized_expression "(uVar5 & 0x151508)" ( (binary_expression "uVar5 & 0x151508" identifier & number_literal) )) == number_literal) )) (goto_statement "goto LAB_0001ec89;" goto statement_identifier ;)) (labeled_statement "LAB_0001eee4:\n            child = &indirectchild;" statement_identifier : (expression_statement "child = &indirectchild;" (assignment_expression "child = &indirectchild" identifier = (pointer_expression "&indirectchild" & identifier)) ;)) (goto_statement "goto LAB_0001eef8;" goto statement_identifier ;) })) (labeled_statement "LAB_0001edd0:\n          if ((debug_level & 0x100U) != 0) {\n            puts("[findcall]\tbut it\'s a botch");\n          }" statement_identifier : (if_statement "if ((debug_level & 0x100U) != 0) {\n            puts("[findcall]\tbut it\'s a botch");\n          }" if (parenthesized_expression "((debug_level & 0x100U) != 0)" ( (binary_expression "(debug_level & 0x100U) != 0" (parenthesized_expression "(debug_level & 0x100U)" ( (binary_expression "debug_level & 0x100U" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n            puts("[findcall]\tbut it\'s a botch");\n          }" { (expression_statement "puts("[findcall]\tbut it\'s a botch");" (call_expression "puts("[findcall]\tbut it\'s a botch")" identifier (argument_list "("[findcall]\tbut it\'s a botch")" ( (string_literal ""[findcall]\tbut it\'s a botch"" " string_content escape_sequence string_content escape_sequence string_content ") ))) ;) }))) (goto_statement "goto LAB_0001ebe0;" goto statement_identifier ;) })) (expression_statement "oVar3 = vax_operandmode((uchar *)(uint)(byte)pcVar6[1]);" (assignment_expression "oVar3 = vax_operandmode((uchar *)(uint)(byte)pcVar6[1])" identifier = (call_expression "vax_operandmode((uchar *)(uint)(byte)pcVar6[1])" identifier (argument_list "((uchar *)(uint)(byte)pcVar6[1])" ( (cast_expression "(uchar *)(uint)(byte)pcVar6[1]" ( (type_descriptor "uchar *" type_identifier (abstract_pointer_declarator "*" *)) ) (cast_expression "(uint)(byte)pcVar6[1]" ( (type_descriptor "uint" type_identifier) ) (cast_expression "(byte)pcVar6[1]" ( (type_descriptor "byte" type_identifier) ) (subscript_expression "pcVar6[1]" identifier [ number_literal ])))) )))) ;) (if_statement "if (oVar3 == literal) {\nLAB_0001ec47:\n          lVar4 = vax_operandlength((uchar *)(pcVar6 + 1));\n          local_34 = lVar4 + 1;\n          local_38 = (byte *)(pcVar6 + local_34);\n          mode = vax_operandmode((uchar *)(uint)*local_38);\nLAB_0001ec6e:\n          if (longreldef < mode) goto LAB_0001ebe0;\n          uVar5 = 1 << ((byte)mode & 0x1f);\n          if ((uVar5 & 0x151508) != 0) goto LAB_0001eee4;\nLAB_0001ec89:\n          if ((uVar5 & 0xa8000) == 0) goto LAB_0001edd0;\n          oVar3 = vax_operandmode((uchar *)(uint)*local_38);\n          if (oVar3 == wordrel) {\n            bVar10 = (*core_bfd->xvec->bfd_getx_signed_16)(local_38 + 1);\n            iVar7 = (int)((ulonglong)bVar10 >> 0x20);\n            bVar9 = 0xfffffffd < (uint)bVar10;\n            iVar8 = (uint)bVar10 + 2;\nLAB_0001efc9:\n            lVar2 = CONCAT44(iVar7 + (uint)bVar9,iVar8);\n            local_2c = (int)(p_lowpc + lVar2);\n            bVar1 = p_lowpc + lVar2;\n          }\n          else {\n            if (oVar3 == longrel) {\n              bVar10 = (*core_bfd->xvec->bfd_getx_signed_32)(local_38 + 1);\n              iVar7 = (int)((ulonglong)bVar10 >> 0x20);\n              bVar9 = 0xfffffffb < (uint)bVar10;\n              iVar8 = (uint)bVar10 + 4;\n              goto LAB_0001efc9;\n            }\n            if (oVar3 == byterel) {\n              bVar1 = p_lowpc + (longlong)(int)((byte)(local_38[1] + 0x80) - 0x7f);\n              local_2c = (int)bVar1;\n            }\n            else {\n              fwrite("[reladdr] not relative address\n",1,0x1f,*(FILE **)PTR_stderr_0002cfcc);\n              bVar1 = p_lowpc;\n            }\n          }\n          local_28 = (int)(bVar1 >> 0x20);\n          iVar8 = hist_check_address((uint)bVar1);\n          if ((iVar8 == 0) ||\n             (child = sym_lookup(&symtab,CONCAT44(local_28,local_2c)), child == (Sym *)0x0))\n          goto LAB_0001edd0;\n          if ((debug_level & 0x100U) == 0) {\n            if (*(int *)((int)&child->addr + 4) != local_28 || (int)child->addr != local_2c)\n            goto LAB_0001ebe0;\n          }\n          else {\n            printf("[findcall]\tdestpc 0x%lx",(uint)bVar1);\n            printf(" child->name %s",child->name);\n            printf(" child->addr 0x%lx\n",(int)child->addr);\n            if (*(int *)((int)&child->addr + 4) != local_28 || local_2c != (int)child->addr)\n            goto LAB_0001edd0;\n          }\nLAB_0001eef8:\n          arc_add(parent,child,0);\n          lVar4 = vax_operandlength(local_38);\n          local_34 = local_34 + lVar4;\n          iVar8 = local_34 >> 0x1f;\n        }\n        else {\n          local_34 = 1;\n          iVar8 = 0;\n          if (oVar3 == immediate) goto LAB_0001ec47;\n        }" if (parenthesized_expression "(oVar3 == literal)" ( (binary_expression "oVar3 == literal" identifier == identifier) )) (compound_statement "{\nLAB_0001ec47:\n          lVar4 = vax_operandlength((uchar *)(pcVar6 + 1));\n          local_34 = lVar4 + 1;\n          local_38 = (byte *)(pcVar6 + local_34);\n          mode = vax_operandmode((uchar *)(uint)*local_38);\nLAB_0001ec6e:\n          if (longreldef < mode) goto LAB_0001ebe0;\n          uVar5 = 1 << ((byte)mode & 0x1f);\n          if ((uVar5 & 0x151508) != 0) goto LAB_0001eee4;\nLAB_0001ec89:\n          if ((uVar5 & 0xa8000) == 0) goto LAB_0001edd0;\n          oVar3 = vax_operandmode((uchar *)(uint)*local_38);\n          if (oVar3 == wordrel) {\n            bVar10 = (*core_bfd->xvec->bfd_getx_signed_16)(local_38 + 1);\n            iVar7 = (int)((ulonglong)bVar10 >> 0x20);\n            bVar9 = 0xfffffffd < (uint)bVar10;\n            iVar8 = (uint)bVar10 + 2;\nLAB_0001efc9:\n            lVar2 = CONCAT44(iVar7 + (uint)bVar9,iVar8);\n            local_2c = (int)(p_lowpc + lVar2);\n            bVar1 = p_lowpc + lVar2;\n          }\n          else {\n            if (oVar3 == longrel) {\n              bVar10 = (*core_bfd->xvec->bfd_getx_signed_32)(local_38 + 1);\n              iVar7 = (int)((ulonglong)bVar10 >> 0x20);\n              bVar9 = 0xfffffffb < (uint)bVar10;\n              iVar8 = (uint)bVar10 + 4;\n              goto LAB_0001efc9;\n            }\n            if (oVar3 == byterel) {\n              bVar1 = p_lowpc + (longlong)(int)((byte)(local_38[1] + 0x80) - 0x7f);\n              local_2c = (int)bVar1;\n            }\n            else {\n              fwrite("[reladdr] not relative address\n",1,0x1f,*(FILE **)PTR_stderr_0002cfcc);\n              bVar1 = p_lowpc;\n            }\n          }\n          local_28 = (int)(bVar1 >> 0x20);\n          iVar8 = hist_check_address((uint)bVar1);\n          if ((iVar8 == 0) ||\n             (child = sym_lookup(&symtab,CONCAT44(local_28,local_2c)), child == (Sym *)0x0))\n          goto LAB_0001edd0;\n          if ((debug_level & 0x100U) == 0) {\n            if (*(int *)((int)&child->addr + 4) != local_28 || (int)child->addr != local_2c)\n            goto LAB_0001ebe0;\n          }\n          else {\n            printf("[findcall]\tdestpc 0x%lx",(uint)bVar1);\n            printf(" child->name %s",child->name);\n            printf(" child->addr 0x%lx\n",(int)child->addr);\n            if (*(int *)((int)&child->addr + 4) != local_28 || local_2c != (int)child->addr)\n            goto LAB_0001edd0;\n          }\nLAB_0001eef8:\n          arc_add(parent,child,0);\n          lVar4 = vax_operandlength(local_38);\n          local_34 = local_34 + lVar4;\n          iVar8 = local_34 >> 0x1f;\n        }" { (labeled_statement "LAB_0001ec47:\n          lVar4 = vax_operandlength((uchar *)(pcVar6 + 1));" statement_identifier : (expression_statement "lVar4 = vax_operandlength((uchar *)(pcVar6 + 1));" (assignment_expression "lVar4 = vax_operandlength((uchar *)(pcVar6 + 1))" identifier = (call_expression "vax_operandlength((uchar *)(pcVar6 + 1))" identifier (argument_list "((uchar *)(pcVar6 + 1))" ( (cast_expression "(uchar *)(pcVar6 + 1)" ( (type_descriptor "uchar *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar6 + 1)" ( (binary_expression "pcVar6 + 1" identifier + number_literal) ))) )))) ;)) (expression_statement "local_34 = lVar4 + 1;" (assignment_expression "local_34 = lVar4 + 1" identifier = (binary_expression "lVar4 + 1" identifier + number_literal)) ;) (expression_statement "local_38 = (byte *)(pcVar6 + local_34);" (assignment_expression "local_38 = (byte *)(pcVar6 + local_34)" identifier = (cast_expression "(byte *)(pcVar6 + local_34)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar6 + local_34)" ( (binary_expression "pcVar6 + local_34" identifier + identifier) )))) ;) (expression_statement "mode = vax_operandmode((uchar *)(uint)*local_38);" (assignment_expression "mode = vax_operandmode((uchar *)(uint)*local_38)" identifier = (call_expression "vax_operandmode((uchar *)(uint)*local_38)" identifier (argument_list "((uchar *)(uint)*local_38)" ( (binary_expression "(uchar *)(uint)*local_38" (cast_expression "(uchar *)(uint)" ( (type_descriptor "uchar *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uint)" ( identifier ))) * identifier) )))) ;) (labeled_statement "LAB_0001ec6e:\n          if (longreldef < mode) goto LAB_0001ebe0;" statement_identifier : (if_statement "if (longreldef < mode) goto LAB_0001ebe0;" if (parenthesized_expression "(longreldef < mode)" ( (binary_expression "longreldef < mode" identifier < identifier) )) (goto_statement "goto LAB_0001ebe0;" goto statement_identifier ;))) (expression_statement "uVar5 = 1 << ((byte)mode & 0x1f);" (assignment_expression "uVar5 = 1 << ((byte)mode & 0x1f)" identifier = (binary_expression "1 << ((byte)mode & 0x1f)" number_literal << (parenthesized_expression "((byte)mode & 0x1f)" ( (binary_expression "(byte)mode & 0x1f" (cast_expression "(byte)mode" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) )))) ;) (if_statement "if ((uVar5 & 0x151508) != 0) goto LAB_0001eee4;" if (parenthesized_expression "((uVar5 & 0x151508) != 0)" ( (binary_expression "(uVar5 & 0x151508) != 0" (parenthesized_expression "(uVar5 & 0x151508)" ( (binary_expression "uVar5 & 0x151508" identifier & number_literal) )) != number_literal) )) (goto_statement "goto LAB_0001eee4;" goto statement_identifier ;)) (labeled_statement "LAB_0001ec89:\n          if ((uVar5 & 0xa8000) == 0) goto LAB_0001edd0;" statement_identifier : (if_statement "if ((uVar5 & 0xa8000) == 0) goto LAB_0001edd0;" if (parenthesized_expression "((uVar5 & 0xa8000) == 0)" ( (binary_expression "(uVar5 & 0xa8000) == 0" (parenthesized_expression "(uVar5 & 0xa8000)" ( (binary_expression "uVar5 & 0xa8000" identifier & number_literal) )) == number_literal) )) (goto_statement "goto LAB_0001edd0;" goto statement_identifier ;))) (expression_statement "oVar3 = vax_operandmode((uchar *)(uint)*local_38);" (assignment_expression "oVar3 = vax_operandmode((uchar *)(uint)*local_38)" identifier = (call_expression "vax_operandmode((uchar *)(uint)*local_38)" identifier (argument_list "((uchar *)(uint)*local_38)" ( (binary_expression "(uchar *)(uint)*local_38" (cast_expression "(uchar *)(uint)" ( (type_descriptor "uchar *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uint)" ( identifier ))) * identifier) )))) ;) (if_statement "if (oVar3 == wordrel) {\n            bVar10 = (*core_bfd->xvec->bfd_getx_signed_16)(local_38 + 1);\n            iVar7 = (int)((ulonglong)bVar10 >> 0x20);\n            bVar9 = 0xfffffffd < (uint)bVar10;\n            iVar8 = (uint)bVar10 + 2;\nLAB_0001efc9:\n            lVar2 = CONCAT44(iVar7 + (uint)bVar9,iVar8);\n            local_2c = (int)(p_lowpc + lVar2);\n            bVar1 = p_lowpc + lVar2;\n          }\n          else {\n            if (oVar3 == longrel) {\n              bVar10 = (*core_bfd->xvec->bfd_getx_signed_32)(local_38 + 1);\n              iVar7 = (int)((ulonglong)bVar10 >> 0x20);\n              bVar9 = 0xfffffffb < (uint)bVar10;\n              iVar8 = (uint)bVar10 + 4;\n              goto LAB_0001efc9;\n            }\n            if (oVar3 == byterel) {\n              bVar1 = p_lowpc + (longlong)(int)((byte)(local_38[1] + 0x80) - 0x7f);\n              local_2c = (int)bVar1;\n            }\n            else {\n              fwrite("[reladdr] not relative address\n",1,0x1f,*(FILE **)PTR_stderr_0002cfcc);\n              bVar1 = p_lowpc;\n            }\n          }" if (parenthesized_expression "(oVar3 == wordrel)" ( (binary_expression "oVar3 == wordrel" identifier == identifier) )) (compound_statement "{\n            bVar10 = (*core_bfd->xvec->bfd_getx_signed_16)(local_38 + 1);\n            iVar7 = (int)((ulonglong)bVar10 >> 0x20);\n            bVar9 = 0xfffffffd < (uint)bVar10;\n            iVar8 = (uint)bVar10 + 2;\nLAB_0001efc9:\n            lVar2 = CONCAT44(iVar7 + (uint)bVar9,iVar8);\n            local_2c = (int)(p_lowpc + lVar2);\n            bVar1 = p_lowpc + lVar2;\n          }" { (expression_statement "bVar10 = (*core_bfd->xvec->bfd_getx_signed_16)(local_38 + 1);" (assignment_expression "bVar10 = (*core_bfd->xvec->bfd_getx_signed_16)(local_38 + 1)" identifier = (call_expression "(*core_bfd->xvec->bfd_getx_signed_16)(local_38 + 1)" (parenthesized_expression "(*core_bfd->xvec->bfd_getx_signed_16)" ( (pointer_expression "*core_bfd->xvec->bfd_getx_signed_16" * (field_expression "core_bfd->xvec->bfd_getx_signed_16" (field_expression "core_bfd->xvec" identifier -> field_identifier) -> field_identifier)) )) (argument_list "(local_38 + 1)" ( (binary_expression "local_38 + 1" identifier + number_literal) )))) ;) (expression_statement "iVar7 = (int)((ulonglong)bVar10 >> 0x20);" (assignment_expression "iVar7 = (int)((ulonglong)bVar10 >> 0x20)" identifier = (cast_expression "(int)((ulonglong)bVar10 >> 0x20)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((ulonglong)bVar10 >> 0x20)" ( (binary_expression "(ulonglong)bVar10 >> 0x20" (cast_expression "(ulonglong)bVar10" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "bVar9 = 0xfffffffd < (uint)bVar10;" (assignment_expression "bVar9 = 0xfffffffd < (uint)bVar10" identifier = (binary_expression "0xfffffffd < (uint)bVar10" number_literal < (cast_expression "(uint)bVar10" ( (type_descriptor "uint" type_identifier) ) identifier))) ;) (expression_statement "iVar8 = (uint)bVar10 + 2;" (assignment_expression "iVar8 = (uint)bVar10 + 2" identifier = (binary_expression "(uint)bVar10 + 2" (cast_expression "(uint)bVar10" ( (type_descriptor "uint" type_identifier) ) identifier) + number_literal)) ;) (labeled_statement "LAB_0001efc9:\n            lVar2 = CONCAT44(iVar7 + (uint)bVar9,iVar8);" statement_identifier : (expression_statement "lVar2 = CONCAT44(iVar7 + (uint)bVar9,iVar8);" (assignment_expression "lVar2 = CONCAT44(iVar7 + (uint)bVar9,iVar8)" identifier = (call_expression "CONCAT44(iVar7 + (uint)bVar9,iVar8)" identifier (argument_list "(iVar7 + (uint)bVar9,iVar8)" ( (binary_expression "iVar7 + (uint)bVar9" identifier + (cast_expression "(uint)bVar9" ( (type_descriptor "uint" type_identifier) ) identifier)) , identifier )))) ;)) (expression_statement "local_2c = (int)(p_lowpc + lVar2);" (assignment_expression "local_2c = (int)(p_lowpc + lVar2)" identifier = (cast_expression "(int)(p_lowpc + lVar2)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(p_lowpc + lVar2)" ( (binary_expression "p_lowpc + lVar2" identifier + identifier) )))) ;) (expression_statement "bVar1 = p_lowpc + lVar2;" (assignment_expression "bVar1 = p_lowpc + lVar2" identifier = (binary_expression "p_lowpc + lVar2" identifier + identifier)) ;) }) (else_clause "else {\n            if (oVar3 == longrel) {\n              bVar10 = (*core_bfd->xvec->bfd_getx_signed_32)(local_38 + 1);\n              iVar7 = (int)((ulonglong)bVar10 >> 0x20);\n              bVar9 = 0xfffffffb < (uint)bVar10;\n              iVar8 = (uint)bVar10 + 4;\n              goto LAB_0001efc9;\n            }\n            if (oVar3 == byterel) {\n              bVar1 = p_lowpc + (longlong)(int)((byte)(local_38[1] + 0x80) - 0x7f);\n              local_2c = (int)bVar1;\n            }\n            else {\n              fwrite("[reladdr] not relative address\n",1,0x1f,*(FILE **)PTR_stderr_0002cfcc);\n              bVar1 = p_lowpc;\n            }\n          }" else (compound_statement "{\n            if (oVar3 == longrel) {\n              bVar10 = (*core_bfd->xvec->bfd_getx_signed_32)(local_38 + 1);\n              iVar7 = (int)((ulonglong)bVar10 >> 0x20);\n              bVar9 = 0xfffffffb < (uint)bVar10;\n              iVar8 = (uint)bVar10 + 4;\n              goto LAB_0001efc9;\n            }\n            if (oVar3 == byterel) {\n              bVar1 = p_lowpc + (longlong)(int)((byte)(local_38[1] + 0x80) - 0x7f);\n              local_2c = (int)bVar1;\n            }\n            else {\n              fwrite("[reladdr] not relative address\n",1,0x1f,*(FILE **)PTR_stderr_0002cfcc);\n              bVar1 = p_lowpc;\n            }\n          }" { (if_statement "if (oVar3 == longrel) {\n              bVar10 = (*core_bfd->xvec->bfd_getx_signed_32)(local_38 + 1);\n              iVar7 = (int)((ulonglong)bVar10 >> 0x20);\n              bVar9 = 0xfffffffb < (uint)bVar10;\n              iVar8 = (uint)bVar10 + 4;\n              goto LAB_0001efc9;\n            }" if (parenthesized_expression "(oVar3 == longrel)" ( (binary_expression "oVar3 == longrel" identifier == identifier) )) (compound_statement "{\n              bVar10 = (*core_bfd->xvec->bfd_getx_signed_32)(local_38 + 1);\n              iVar7 = (int)((ulonglong)bVar10 >> 0x20);\n              bVar9 = 0xfffffffb < (uint)bVar10;\n              iVar8 = (uint)bVar10 + 4;\n              goto LAB_0001efc9;\n            }" { (expression_statement "bVar10 = (*core_bfd->xvec->bfd_getx_signed_32)(local_38 + 1);" (assignment_expression "bVar10 = (*core_bfd->xvec->bfd_getx_signed_32)(local_38 + 1)" identifier = (call_expression "(*core_bfd->xvec->bfd_getx_signed_32)(local_38 + 1)" (parenthesized_expression "(*core_bfd->xvec->bfd_getx_signed_32)" ( (pointer_expression "*core_bfd->xvec->bfd_getx_signed_32" * (field_expression "core_bfd->xvec->bfd_getx_signed_32" (field_expression "core_bfd->xvec" identifier -> field_identifier) -> field_identifier)) )) (argument_list "(local_38 + 1)" ( (binary_expression "local_38 + 1" identifier + number_literal) )))) ;) (expression_statement "iVar7 = (int)((ulonglong)bVar10 >> 0x20);" (assignment_expression "iVar7 = (int)((ulonglong)bVar10 >> 0x20)" identifier = (cast_expression "(int)((ulonglong)bVar10 >> 0x20)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((ulonglong)bVar10 >> 0x20)" ( (binary_expression "(ulonglong)bVar10 >> 0x20" (cast_expression "(ulonglong)bVar10" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "bVar9 = 0xfffffffb < (uint)bVar10;" (assignment_expression "bVar9 = 0xfffffffb < (uint)bVar10" identifier = (binary_expression "0xfffffffb < (uint)bVar10" number_literal < (cast_expression "(uint)bVar10" ( (type_descriptor "uint" type_identifier) ) identifier))) ;) (expression_statement "iVar8 = (uint)bVar10 + 4;" (assignment_expression "iVar8 = (uint)bVar10 + 4" identifier = (binary_expression "(uint)bVar10 + 4" (cast_expression "(uint)bVar10" ( (type_descriptor "uint" type_identifier) ) identifier) + number_literal)) ;) (goto_statement "goto LAB_0001efc9;" goto statement_identifier ;) })) (if_statement "if (oVar3 == byterel) {\n              bVar1 = p_lowpc + (longlong)(int)((byte)(local_38[1] + 0x80) - 0x7f);\n              local_2c = (int)bVar1;\n            }\n            else {\n              fwrite("[reladdr] not relative address\n",1,0x1f,*(FILE **)PTR_stderr_0002cfcc);\n              bVar1 = p_lowpc;\n            }" if (parenthesized_expression "(oVar3 == byterel)" ( (binary_expression "oVar3 == byterel" identifier == identifier) )) (compound_statement "{\n              bVar1 = p_lowpc + (longlong)(int)((byte)(local_38[1] + 0x80) - 0x7f);\n              local_2c = (int)bVar1;\n            }" { (expression_statement "bVar1 = p_lowpc + (longlong)(int)((byte)(local_38[1] + 0x80) - 0x7f);" (assignment_expression "bVar1 = p_lowpc + (longlong)(int)((byte)(local_38[1] + 0x80) - 0x7f)" identifier = (binary_expression "p_lowpc + (longlong)(int)((byte)(local_38[1] + 0x80) - 0x7f)" identifier + (call_expression "(longlong)(int)((byte)(local_38[1] + 0x80) - 0x7f)" (call_expression "(longlong)(int)" (parenthesized_expression "(longlong)" ( identifier )) (argument_list "(int)" ( identifier ))) (argument_list "((byte)(local_38[1] + 0x80) - 0x7f)" ( (binary_expression "(byte)(local_38[1] + 0x80) - 0x7f" (call_expression "(byte)(local_38[1] + 0x80)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(local_38[1] + 0x80)" ( (binary_expression "local_38[1] + 0x80" (subscript_expression "local_38[1]" identifier [ number_literal ]) + number_literal) ))) - number_literal) ))))) ;) (expression_statement "local_2c = (int)bVar1;" (assignment_expression "local_2c = (int)bVar1" identifier = (cast_expression "(int)bVar1" ( (type_descriptor "int" primitive_type) ) identifier)) ;) }) (else_clause "else {\n              fwrite("[reladdr] not relative address\n",1,0x1f,*(FILE **)PTR_stderr_0002cfcc);\n              bVar1 = p_lowpc;\n            }" else (compound_statement "{\n              fwrite("[reladdr] not relative address\n",1,0x1f,*(FILE **)PTR_stderr_0002cfcc);\n              bVar1 = p_lowpc;\n            }" { (expression_statement "fwrite("[reladdr] not relative address\n",1,0x1f,*(FILE **)PTR_stderr_0002cfcc);" (call_expression "fwrite("[reladdr] not relative address\n",1,0x1f,*(FILE **)PTR_stderr_0002cfcc)" identifier (argument_list "("[reladdr] not relative address\n",1,0x1f,*(FILE **)PTR_stderr_0002cfcc)" ( (string_literal ""[reladdr] not relative address\n"" " string_content escape_sequence ") , number_literal , number_literal , (pointer_expression "*(FILE **)PTR_stderr_0002cfcc" * (cast_expression "(FILE **)PTR_stderr_0002cfcc" ( (type_descriptor "FILE **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier)) ))) ;) (expression_statement "bVar1 = p_lowpc;" (assignment_expression "bVar1 = p_lowpc" identifier = identifier) ;) }))) }))) (expression_statement "local_28 = (int)(bVar1 >> 0x20);" (assignment_expression "local_28 = (int)(bVar1 >> 0x20)" identifier = (cast_expression "(int)(bVar1 >> 0x20)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(bVar1 >> 0x20)" ( (binary_expression "bVar1 >> 0x20" identifier >> number_literal) )))) ;) (expression_statement "iVar8 = hist_check_address((uint)bVar1);" (assignment_expression "iVar8 = hist_check_address((uint)bVar1)" identifier = (call_expression "hist_check_address((uint)bVar1)" identifier (argument_list "((uint)bVar1)" ( (cast_expression "(uint)bVar1" ( (type_descriptor "uint" type_identifier) ) identifier) )))) ;) (if_statement "if ((iVar8 == 0) ||\n             (child = sym_lookup(&symtab,CONCAT44(local_28,local_2c)), child == (Sym *)0x0))\n          goto LAB_0001edd0;" if (parenthesized_expression "((iVar8 == 0) ||\n             (child = sym_lookup(&symtab,CONCAT44(local_28,local_2c)), child == (Sym *)0x0))" ( (binary_expression "(iVar8 == 0) ||\n             (child = sym_lookup(&symtab,CONCAT44(local_28,local_2c)), child == (Sym *)0x0)" (parenthesized_expression "(iVar8 == 0)" ( (binary_expression "iVar8 == 0" identifier == number_literal) )) || (parenthesized_expression "(child = sym_lookup(&symtab,CONCAT44(local_28,local_2c)), child == (Sym *)0x0)" ( (comma_expression "child = sym_lookup(&symtab,CONCAT44(local_28,local_2c)), child == (Sym *)0x0" (assignment_expression "child = sym_lookup(&symtab,CONCAT44(local_28,local_2c))" identifier = (call_expression "sym_lookup(&symtab,CONCAT44(local_28,local_2c))" identifier (argument_list "(&symtab,CONCAT44(local_28,local_2c))" ( (pointer_expression "&symtab" & identifier) , (call_expression "CONCAT44(local_28,local_2c)" identifier (argument_list "(local_28,local_2c)" ( identifier , identifier ))) )))) , (binary_expression "child == (Sym *)0x0" identifier == (cast_expression "(Sym *)0x0" ( (type_descriptor "Sym *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) ))) )) (goto_statement "goto LAB_0001edd0;" goto statement_identifier ;)) (if_statement "if ((debug_level & 0x100U) == 0) {\n            if (*(int *)((int)&child->addr + 4) != local_28 || (int)child->addr != local_2c)\n            goto LAB_0001ebe0;\n          }\n          else {\n            printf("[findcall]\tdestpc 0x%lx",(uint)bVar1);\n            printf(" child->name %s",child->name);\n            printf(" child->addr 0x%lx\n",(int)child->addr);\n            if (*(int *)((int)&child->addr + 4) != local_28 || local_2c != (int)child->addr)\n            goto LAB_0001edd0;\n          }" if (parenthesized_expression "((debug_level & 0x100U) == 0)" ( (binary_expression "(debug_level & 0x100U) == 0" (parenthesized_expression "(debug_level & 0x100U)" ( (binary_expression "debug_level & 0x100U" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n            if (*(int *)((int)&child->addr + 4) != local_28 || (int)child->addr != local_2c)\n            goto LAB_0001ebe0;\n          }" { (if_statement "if (*(int *)((int)&child->addr + 4) != local_28 || (int)child->addr != local_2c)\n            goto LAB_0001ebe0;" if (parenthesized_expression "(*(int *)((int)&child->addr + 4) != local_28 || (int)child->addr != local_2c)" ( (binary_expression "*(int *)((int)&child->addr + 4) != local_28 || (int)child->addr != local_2c" (binary_expression "*(int *)((int)&child->addr + 4) != local_28" (pointer_expression "*(int *)((int)&child->addr + 4)" * (cast_expression "(int *)((int)&child->addr + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&child->addr + 4)" ( (binary_expression "(int)&child->addr + 4" (cast_expression "(int)&child->addr" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&child->addr" & (field_expression "child->addr" identifier -> field_identifier))) + number_literal) )))) != identifier) || (binary_expression "(int)child->addr != local_2c" (cast_expression "(int)child->addr" ( (type_descriptor "int" primitive_type) ) (field_expression "child->addr" identifier -> field_identifier)) != identifier)) )) (goto_statement "goto LAB_0001ebe0;" goto statement_identifier ;)) }) (else_clause "else {\n            printf("[findcall]\tdestpc 0x%lx",(uint)bVar1);\n            printf(" child->name %s",child->name);\n            printf(" child->addr 0x%lx\n",(int)child->addr);\n            if (*(int *)((int)&child->addr + 4) != local_28 || local_2c != (int)child->addr)\n            goto LAB_0001edd0;\n          }" else (compound_statement "{\n            printf("[findcall]\tdestpc 0x%lx",(uint)bVar1);\n            printf(" child->name %s",child->name);\n            printf(" child->addr 0x%lx\n",(int)child->addr);\n            if (*(int *)((int)&child->addr + 4) != local_28 || local_2c != (int)child->addr)\n            goto LAB_0001edd0;\n          }" { (expression_statement "printf("[findcall]\tdestpc 0x%lx",(uint)bVar1);" (call_expression "printf("[findcall]\tdestpc 0x%lx",(uint)bVar1)" identifier (argument_list "("[findcall]\tdestpc 0x%lx",(uint)bVar1)" ( (string_literal ""[findcall]\tdestpc 0x%lx"" " string_content escape_sequence string_content ") , (cast_expression "(uint)bVar1" ( (type_descriptor "uint" type_identifier) ) identifier) ))) ;) (expression_statement "printf(" child->name %s",child->name);" (call_expression "printf(" child->name %s",child->name)" identifier (argument_list "(" child->name %s",child->name)" ( (string_literal "" child->name %s"" " string_content ") , (field_expression "child->name" identifier -> field_identifier) ))) ;) (expression_statement "printf(" child->addr 0x%lx\n",(int)child->addr);" (call_expression "printf(" child->addr 0x%lx\n",(int)child->addr)" identifier (argument_list "(" child->addr 0x%lx\n",(int)child->addr)" ( (string_literal "" child->addr 0x%lx\n"" " string_content escape_sequence ") , (cast_expression "(int)child->addr" ( (type_descriptor "int" primitive_type) ) (field_expression "child->addr" identifier -> field_identifier)) ))) ;) (if_statement "if (*(int *)((int)&child->addr + 4) != local_28 || local_2c != (int)child->addr)\n            goto LAB_0001edd0;" if (parenthesized_expression "(*(int *)((int)&child->addr + 4) != local_28 || local_2c != (int)child->addr)" ( (binary_expression "*(int *)((int)&child->addr + 4) != local_28 || local_2c != (int)child->addr" (binary_expression "*(int *)((int)&child->addr + 4) != local_28" (pointer_expression "*(int *)((int)&child->addr + 4)" * (cast_expression "(int *)((int)&child->addr + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&child->addr + 4)" ( (binary_expression "(int)&child->addr + 4" (cast_expression "(int)&child->addr" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&child->addr" & (field_expression "child->addr" identifier -> field_identifier))) + number_literal) )))) != identifier) || (binary_expression "local_2c != (int)child->addr" identifier != (cast_expression "(int)child->addr" ( (type_descriptor "int" primitive_type) ) (field_expression "child->addr" identifier -> field_identifier)))) )) (goto_statement "goto LAB_0001edd0;" goto statement_identifier ;)) }))) (labeled_statement "LAB_0001eef8:\n          arc_add(parent,child,0);" statement_identifier : (expression_statement "arc_add(parent,child,0);" (call_expression "arc_add(parent,child,0)" identifier (argument_list "(parent,child,0)" ( identifier , identifier , number_literal ))) ;)) (expression_statement "lVar4 = vax_operandlength(local_38);" (assignment_expression "lVar4 = vax_operandlength(local_38)" identifier = (call_expression "vax_operandlength(local_38)" identifier (argument_list "(local_38)" ( identifier )))) ;) (expression_statement "local_34 = local_34 + lVar4;" (assignment_expression "local_34 = local_34 + lVar4" identifier = (binary_expression "local_34 + lVar4" identifier + identifier)) ;) (expression_statement "iVar8 = local_34 >> 0x1f;" (assignment_expression "iVar8 = local_34 >> 0x1f" identifier = (binary_expression "local_34 >> 0x1f" identifier >> number_literal)) ;) }) (else_clause "else {\n          local_34 = 1;\n          iVar8 = 0;\n          if (oVar3 == immediate) goto LAB_0001ec47;\n        }" else (compound_statement "{\n          local_34 = 1;\n          iVar8 = 0;\n          if (oVar3 == immediate) goto LAB_0001ec47;\n        }" { (expression_statement "local_34 = 1;" (assignment_expression "local_34 = 1" identifier = number_literal) ;) (expression_statement "iVar8 = 0;" (assignment_expression "iVar8 = 0" identifier = number_literal) ;) (if_statement "if (oVar3 == immediate) goto LAB_0001ec47;" if (parenthesized_expression "(oVar3 == immediate)" ( (binary_expression "oVar3 == immediate" identifier == identifier) )) (goto_statement "goto LAB_0001ec47;" goto statement_identifier ;)) }))) }) (else_clause "else {\nLAB_0001ebe0:\n        local_34 = 1;\n        iVar8 = 0;\n      }" else (compound_statement "{\nLAB_0001ebe0:\n        local_34 = 1;\n        iVar8 = 0;\n      }" { (labeled_statement "LAB_0001ebe0:\n        local_34 = 1;" statement_identifier : (expression_statement "local_34 = 1;" (assignment_expression "local_34 = 1" identifier = number_literal) ;)) (expression_statement "iVar8 = 0;" (assignment_expression "iVar8 = 0" identifier = number_literal) ;) }))) (expression_statement "lVar2 = p_lowpc + CONCAT44(iVar8,local_34);" (assignment_expression "lVar2 = p_lowpc + CONCAT44(iVar8,local_34)" identifier = (binary_expression "p_lowpc + CONCAT44(iVar8,local_34)" identifier + (call_expression "CONCAT44(iVar8,local_34)" identifier (argument_list "(iVar8,local_34)" ( identifier , identifier ))))) ;) (expression_statement "uVar5 = (uint)((ulonglong)lVar2 >> 0x20);" (assignment_expression "uVar5 = (uint)((ulonglong)lVar2 >> 0x20)" identifier = (call_expression "(uint)((ulonglong)lVar2 >> 0x20)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((ulonglong)lVar2 >> 0x20)" ( (binary_expression "(ulonglong)lVar2 >> 0x20" (cast_expression "(ulonglong)lVar2" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "p_lowpc = p_lowpc + CONCAT44(iVar8,local_34);" (assignment_expression "p_lowpc = p_lowpc + CONCAT44(iVar8,local_34)" identifier = (binary_expression "p_lowpc + CONCAT44(iVar8,local_34)" identifier + (call_expression "CONCAT44(iVar8,local_34)" identifier (argument_list "(iVar8,local_34)" ( identifier , identifier ))))) ;) }) while (parenthesized_expression "(uVar5 < local_4c || uVar5 - local_4c < (uint)((uint)lVar2 < local_50))" ( (binary_expression "uVar5 < local_4c || uVar5 - local_4c < (uint)((uint)lVar2 < local_50)" (binary_expression "uVar5 < local_4c" identifier < identifier) || (binary_expression "uVar5 - local_4c < (uint)((uint)lVar2 < local_50)" (binary_expression "uVar5 - local_4c" identifier - identifier) < (call_expression "(uint)((uint)lVar2 < local_50)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((uint)lVar2 < local_50)" ( (binary_expression "(uint)lVar2 < local_50" (cast_expression "(uint)lVar2" ( (type_descriptor "uint" type_identifier) ) identifier) < identifier) ))))) )) ;) })) (return_statement "return;" return ;) })))
(translation_unit "int FUN_0001eb40(int param_1,uint param_2,uint param_3,uint param_4,uint param_5)\n\n{\n  int iVar1;\n  uint *puVar2;\n  undefined4 uVar3;\n  uint uVar4;\n  int iVar5;\n  bool bVar6;\n  undefined8 uVar7;\n  char *local_38;\n  int local_34;\n  uint local_2c;\n  uint local_28;\n  \n  if (DAT_0002e2a0 == 0) {\n    DAT_0002e2a0 = 1;\n    FUN_0001ce40(&DAT_0002e2c0);\n    DAT_0002e390 = 0x3ff0000000000000;\n    DAT_0002e3ac = &DAT_0002e2c0;\n  }\n  if ((DAT_0002e158 & 0x100) != 0) {\n    printf("[findcall] %s: 0x%lx to 0x%lx\n",*(undefined4 *)(param_1 + 0x10),param_2,param_4);\n  }\n  iVar1 = (param_3 - param_5) - (uint)(param_2 < param_4);\n  if (param_3 < param_5 || param_3 - param_5 < (uint)(param_2 < param_4)) {\n    do {\n      local_38 = (char *)((param_2 - *(int *)(DAT_0002e4fc + 0x1c)) + DAT_0002e4f0);\n      if (*local_38 == -5) {\n        if ((DAT_0002e158 & 0x100) != 0) {\n          printf("[findcall]\t0x%lx:calls",param_2);\n          iVar1 = FUN_0001e9c0();\n          if ((iVar1 == 0) || (iVar1 == 0xd)) {\n            local_34 = FUN_0001eac0();\n            local_34 = local_34 + 1;\n            local_38 = local_38 + local_34;\n            uVar4 = FUN_0001e9c0();\n            if ((DAT_0002e158 & 0x100) == 0) goto LAB_0001ec6e;\n            uVar3 = FUN_0001e850();\n            printf("\tfirst operand is %s",uVar3);\n            uVar3 = FUN_0001e850();\n            printf("\tsecond operand is %s\n",uVar3);\n            if (0x14 < uVar4) goto LAB_0001edd0;\n            uVar4 = 1 << ((byte)uVar4 & 0x1f);\n            if ((uVar4 & 0x151508) == 0) goto LAB_0001ec89;\nLAB_0001eee4:\n            puVar2 = (uint *)&DAT_0002e2c0;\n            goto LAB_0001eef8;\n          }\nLAB_0001edd0:\n          if ((DAT_0002e158 & 0x100) != 0) {\n            puts("[findcall]\tbut it\'s a botch");\n          }\n          goto LAB_0001ebe0;\n        }\n        iVar1 = FUN_0001e9c0();\n        if (iVar1 == 0) {\nLAB_0001ec47:\n          local_34 = FUN_0001eac0();\n          local_34 = local_34 + 1;\n          local_38 = local_38 + local_34;\n          uVar4 = FUN_0001e9c0();\nLAB_0001ec6e:\n          if (0x14 < uVar4) goto LAB_0001ebe0;\n          uVar4 = 1 << ((byte)uVar4 & 0x1f);\n          if ((uVar4 & 0x151508) != 0) goto LAB_0001eee4;\nLAB_0001ec89:\n          if ((uVar4 & 0xa8000) == 0) goto LAB_0001edd0;\n          iVar1 = FUN_0001e9c0();\n          if (iVar1 == 0x11) {\n            uVar7 = (**(code **)(*(int *)(DAT_0002e4ec + 4) + 0x38))(local_38 + 1);\n            iVar1 = (int)((ulonglong)uVar7 >> 0x20);\n            bVar6 = 0xfffffffd < (uint)uVar7;\n            uVar4 = (uint)uVar7 + 2;\nLAB_0001efc9:\n            local_2c = uVar4 + param_2;\n            local_28 = iVar1 + (uint)bVar6 + param_3 + (uint)CARRY4(uVar4,param_2);\n          }\n          else {\n            if (iVar1 == 0x13) {\n              uVar7 = (**(code **)(*(int *)(DAT_0002e4ec + 4) + 0x2c))(local_38 + 1);\n              iVar1 = (int)((ulonglong)uVar7 >> 0x20);\n              bVar6 = 0xfffffffb < (uint)uVar7;\n              uVar4 = (uint)uVar7 + 4;\n              goto LAB_0001efc9;\n            }\n            if (iVar1 == 0xf) {\n              uVar4 = (byte)(local_38[1] + 0x80) - 0x7f;\n              local_2c = uVar4 + param_2;\n              local_28 = ((int)uVar4 >> 0x1f) + param_3 + (uint)CARRY4(uVar4,param_2);\n            }\n            else {\n              fwrite("[reladdr] not relative address\n",1,0x1f,*(FILE **)PTR_stderr_0002cfcc);\n              local_2c = param_2;\n              local_28 = param_3;\n            }\n          }\n          iVar1 = FUN_0001c070(local_2c);\n          if ((iVar1 == 0) ||\n             (puVar2 = (uint *)FUN_0001d480(&DAT_0002e520,local_2c,local_28), puVar2 == (uint *)0x0)\n             ) goto LAB_0001edd0;\n          if ((DAT_0002e158 & 0x100) == 0) {\n            if (puVar2[1] != local_28 || *puVar2 != local_2c) goto LAB_0001ebe0;\n          }\n          else {\n            printf("[findcall]\tdestpc 0x%lx",local_2c);\n            printf(" child->name %s",puVar2[4]);\n            printf(" child->addr 0x%lx\n",*puVar2);\n            if (puVar2[1] != local_28 || local_2c != *puVar2) goto LAB_0001edd0;\n          }\nLAB_0001eef8:\n          FUN_00014870(param_1,puVar2,0);\n          iVar1 = FUN_0001eac0();\n          uVar4 = local_34 + iVar1;\n          iVar5 = (int)uVar4 >> 0x1f;\n        }\n        else {\n          uVar4 = 1;\n          iVar5 = 0;\n          if (iVar1 == 0xd) goto LAB_0001ec47;\n        }\n      }\n      else {\nLAB_0001ebe0:\n        uVar4 = 1;\n        iVar5 = 0;\n      }\n      bVar6 = CARRY4(param_2,uVar4);\n      param_2 = param_2 + uVar4;\n      param_3 = param_3 + iVar5 + (uint)bVar6;\n      iVar1 = (param_3 - param_5) - (uint)(param_2 < param_4);\n    } while (param_3 < param_5 || param_3 - param_5 < (uint)(param_2 < param_4));\n  }\n  return iVar1;\n}\n\n" (function_definition "int FUN_0001eb40(int param_1,uint param_2,uint param_3,uint param_4,uint param_5)\n\n{\n  int iVar1;\n  uint *puVar2;\n  undefined4 uVar3;\n  uint uVar4;\n  int iVar5;\n  bool bVar6;\n  undefined8 uVar7;\n  char *local_38;\n  int local_34;\n  uint local_2c;\n  uint local_28;\n  \n  if (DAT_0002e2a0 == 0) {\n    DAT_0002e2a0 = 1;\n    FUN_0001ce40(&DAT_0002e2c0);\n    DAT_0002e390 = 0x3ff0000000000000;\n    DAT_0002e3ac = &DAT_0002e2c0;\n  }\n  if ((DAT_0002e158 & 0x100) != 0) {\n    printf("[findcall] %s: 0x%lx to 0x%lx\n",*(undefined4 *)(param_1 + 0x10),param_2,param_4);\n  }\n  iVar1 = (param_3 - param_5) - (uint)(param_2 < param_4);\n  if (param_3 < param_5 || param_3 - param_5 < (uint)(param_2 < param_4)) {\n    do {\n      local_38 = (char *)((param_2 - *(int *)(DAT_0002e4fc + 0x1c)) + DAT_0002e4f0);\n      if (*local_38 == -5) {\n        if ((DAT_0002e158 & 0x100) != 0) {\n          printf("[findcall]\t0x%lx:calls",param_2);\n          iVar1 = FUN_0001e9c0();\n          if ((iVar1 == 0) || (iVar1 == 0xd)) {\n            local_34 = FUN_0001eac0();\n            local_34 = local_34 + 1;\n            local_38 = local_38 + local_34;\n            uVar4 = FUN_0001e9c0();\n            if ((DAT_0002e158 & 0x100) == 0) goto LAB_0001ec6e;\n            uVar3 = FUN_0001e850();\n            printf("\tfirst operand is %s",uVar3);\n            uVar3 = FUN_0001e850();\n            printf("\tsecond operand is %s\n",uVar3);\n            if (0x14 < uVar4) goto LAB_0001edd0;\n            uVar4 = 1 << ((byte)uVar4 & 0x1f);\n            if ((uVar4 & 0x151508) == 0) goto LAB_0001ec89;\nLAB_0001eee4:\n            puVar2 = (uint *)&DAT_0002e2c0;\n            goto LAB_0001eef8;\n          }\nLAB_0001edd0:\n          if ((DAT_0002e158 & 0x100) != 0) {\n            puts("[findcall]\tbut it\'s a botch");\n          }\n          goto LAB_0001ebe0;\n        }\n        iVar1 = FUN_0001e9c0();\n        if (iVar1 == 0) {\nLAB_0001ec47:\n          local_34 = FUN_0001eac0();\n          local_34 = local_34 + 1;\n          local_38 = local_38 + local_34;\n          uVar4 = FUN_0001e9c0();\nLAB_0001ec6e:\n          if (0x14 < uVar4) goto LAB_0001ebe0;\n          uVar4 = 1 << ((byte)uVar4 & 0x1f);\n          if ((uVar4 & 0x151508) != 0) goto LAB_0001eee4;\nLAB_0001ec89:\n          if ((uVar4 & 0xa8000) == 0) goto LAB_0001edd0;\n          iVar1 = FUN_0001e9c0();\n          if (iVar1 == 0x11) {\n            uVar7 = (**(code **)(*(int *)(DAT_0002e4ec + 4) + 0x38))(local_38 + 1);\n            iVar1 = (int)((ulonglong)uVar7 >> 0x20);\n            bVar6 = 0xfffffffd < (uint)uVar7;\n            uVar4 = (uint)uVar7 + 2;\nLAB_0001efc9:\n            local_2c = uVar4 + param_2;\n            local_28 = iVar1 + (uint)bVar6 + param_3 + (uint)CARRY4(uVar4,param_2);\n          }\n          else {\n            if (iVar1 == 0x13) {\n              uVar7 = (**(code **)(*(int *)(DAT_0002e4ec + 4) + 0x2c))(local_38 + 1);\n              iVar1 = (int)((ulonglong)uVar7 >> 0x20);\n              bVar6 = 0xfffffffb < (uint)uVar7;\n              uVar4 = (uint)uVar7 + 4;\n              goto LAB_0001efc9;\n            }\n            if (iVar1 == 0xf) {\n              uVar4 = (byte)(local_38[1] + 0x80) - 0x7f;\n              local_2c = uVar4 + param_2;\n              local_28 = ((int)uVar4 >> 0x1f) + param_3 + (uint)CARRY4(uVar4,param_2);\n            }\n            else {\n              fwrite("[reladdr] not relative address\n",1,0x1f,*(FILE **)PTR_stderr_0002cfcc);\n              local_2c = param_2;\n              local_28 = param_3;\n            }\n          }\n          iVar1 = FUN_0001c070(local_2c);\n          if ((iVar1 == 0) ||\n             (puVar2 = (uint *)FUN_0001d480(&DAT_0002e520,local_2c,local_28), puVar2 == (uint *)0x0)\n             ) goto LAB_0001edd0;\n          if ((DAT_0002e158 & 0x100) == 0) {\n            if (puVar2[1] != local_28 || *puVar2 != local_2c) goto LAB_0001ebe0;\n          }\n          else {\n            printf("[findcall]\tdestpc 0x%lx",local_2c);\n            printf(" child->name %s",puVar2[4]);\n            printf(" child->addr 0x%lx\n",*puVar2);\n            if (puVar2[1] != local_28 || local_2c != *puVar2) goto LAB_0001edd0;\n          }\nLAB_0001eef8:\n          FUN_00014870(param_1,puVar2,0);\n          iVar1 = FUN_0001eac0();\n          uVar4 = local_34 + iVar1;\n          iVar5 = (int)uVar4 >> 0x1f;\n        }\n        else {\n          uVar4 = 1;\n          iVar5 = 0;\n          if (iVar1 == 0xd) goto LAB_0001ec47;\n        }\n      }\n      else {\nLAB_0001ebe0:\n        uVar4 = 1;\n        iVar5 = 0;\n      }\n      bVar6 = CARRY4(param_2,uVar4);\n      param_2 = param_2 + uVar4;\n      param_3 = param_3 + iVar5 + (uint)bVar6;\n      iVar1 = (param_3 - param_5) - (uint)(param_2 < param_4);\n    } while (param_3 < param_5 || param_3 - param_5 < (uint)(param_2 < param_4));\n  }\n  return iVar1;\n}" primitive_type (function_declarator "FUN_0001eb40(int param_1,uint param_2,uint param_3,uint param_4,uint param_5)" identifier (parameter_list "(int param_1,uint param_2,uint param_3,uint param_4,uint param_5)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "uint param_2" type_identifier identifier) , (parameter_declaration "uint param_3" type_identifier identifier) , (parameter_declaration "uint param_4" type_identifier identifier) , (parameter_declaration "uint param_5" type_identifier identifier) ))) (compound_statement "{\n  int iVar1;\n  uint *puVar2;\n  undefined4 uVar3;\n  uint uVar4;\n  int iVar5;\n  bool bVar6;\n  undefined8 uVar7;\n  char *local_38;\n  int local_34;\n  uint local_2c;\n  uint local_28;\n  \n  if (DAT_0002e2a0 == 0) {\n    DAT_0002e2a0 = 1;\n    FUN_0001ce40(&DAT_0002e2c0);\n    DAT_0002e390 = 0x3ff0000000000000;\n    DAT_0002e3ac = &DAT_0002e2c0;\n  }\n  if ((DAT_0002e158 & 0x100) != 0) {\n    printf("[findcall] %s: 0x%lx to 0x%lx\n",*(undefined4 *)(param_1 + 0x10),param_2,param_4);\n  }\n  iVar1 = (param_3 - param_5) - (uint)(param_2 < param_4);\n  if (param_3 < param_5 || param_3 - param_5 < (uint)(param_2 < param_4)) {\n    do {\n      local_38 = (char *)((param_2 - *(int *)(DAT_0002e4fc + 0x1c)) + DAT_0002e4f0);\n      if (*local_38 == -5) {\n        if ((DAT_0002e158 & 0x100) != 0) {\n          printf("[findcall]\t0x%lx:calls",param_2);\n          iVar1 = FUN_0001e9c0();\n          if ((iVar1 == 0) || (iVar1 == 0xd)) {\n            local_34 = FUN_0001eac0();\n            local_34 = local_34 + 1;\n            local_38 = local_38 + local_34;\n            uVar4 = FUN_0001e9c0();\n            if ((DAT_0002e158 & 0x100) == 0) goto LAB_0001ec6e;\n            uVar3 = FUN_0001e850();\n            printf("\tfirst operand is %s",uVar3);\n            uVar3 = FUN_0001e850();\n            printf("\tsecond operand is %s\n",uVar3);\n            if (0x14 < uVar4) goto LAB_0001edd0;\n            uVar4 = 1 << ((byte)uVar4 & 0x1f);\n            if ((uVar4 & 0x151508) == 0) goto LAB_0001ec89;\nLAB_0001eee4:\n            puVar2 = (uint *)&DAT_0002e2c0;\n            goto LAB_0001eef8;\n          }\nLAB_0001edd0:\n          if ((DAT_0002e158 & 0x100) != 0) {\n            puts("[findcall]\tbut it\'s a botch");\n          }\n          goto LAB_0001ebe0;\n        }\n        iVar1 = FUN_0001e9c0();\n        if (iVar1 == 0) {\nLAB_0001ec47:\n          local_34 = FUN_0001eac0();\n          local_34 = local_34 + 1;\n          local_38 = local_38 + local_34;\n          uVar4 = FUN_0001e9c0();\nLAB_0001ec6e:\n          if (0x14 < uVar4) goto LAB_0001ebe0;\n          uVar4 = 1 << ((byte)uVar4 & 0x1f);\n          if ((uVar4 & 0x151508) != 0) goto LAB_0001eee4;\nLAB_0001ec89:\n          if ((uVar4 & 0xa8000) == 0) goto LAB_0001edd0;\n          iVar1 = FUN_0001e9c0();\n          if (iVar1 == 0x11) {\n            uVar7 = (**(code **)(*(int *)(DAT_0002e4ec + 4) + 0x38))(local_38 + 1);\n            iVar1 = (int)((ulonglong)uVar7 >> 0x20);\n            bVar6 = 0xfffffffd < (uint)uVar7;\n            uVar4 = (uint)uVar7 + 2;\nLAB_0001efc9:\n            local_2c = uVar4 + param_2;\n            local_28 = iVar1 + (uint)bVar6 + param_3 + (uint)CARRY4(uVar4,param_2);\n          }\n          else {\n            if (iVar1 == 0x13) {\n              uVar7 = (**(code **)(*(int *)(DAT_0002e4ec + 4) + 0x2c))(local_38 + 1);\n              iVar1 = (int)((ulonglong)uVar7 >> 0x20);\n              bVar6 = 0xfffffffb < (uint)uVar7;\n              uVar4 = (uint)uVar7 + 4;\n              goto LAB_0001efc9;\n            }\n            if (iVar1 == 0xf) {\n              uVar4 = (byte)(local_38[1] + 0x80) - 0x7f;\n              local_2c = uVar4 + param_2;\n              local_28 = ((int)uVar4 >> 0x1f) + param_3 + (uint)CARRY4(uVar4,param_2);\n            }\n            else {\n              fwrite("[reladdr] not relative address\n",1,0x1f,*(FILE **)PTR_stderr_0002cfcc);\n              local_2c = param_2;\n              local_28 = param_3;\n            }\n          }\n          iVar1 = FUN_0001c070(local_2c);\n          if ((iVar1 == 0) ||\n             (puVar2 = (uint *)FUN_0001d480(&DAT_0002e520,local_2c,local_28), puVar2 == (uint *)0x0)\n             ) goto LAB_0001edd0;\n          if ((DAT_0002e158 & 0x100) == 0) {\n            if (puVar2[1] != local_28 || *puVar2 != local_2c) goto LAB_0001ebe0;\n          }\n          else {\n            printf("[findcall]\tdestpc 0x%lx",local_2c);\n            printf(" child->name %s",puVar2[4]);\n            printf(" child->addr 0x%lx\n",*puVar2);\n            if (puVar2[1] != local_28 || local_2c != *puVar2) goto LAB_0001edd0;\n          }\nLAB_0001eef8:\n          FUN_00014870(param_1,puVar2,0);\n          iVar1 = FUN_0001eac0();\n          uVar4 = local_34 + iVar1;\n          iVar5 = (int)uVar4 >> 0x1f;\n        }\n        else {\n          uVar4 = 1;\n          iVar5 = 0;\n          if (iVar1 == 0xd) goto LAB_0001ec47;\n        }\n      }\n      else {\nLAB_0001ebe0:\n        uVar4 = 1;\n        iVar5 = 0;\n      }\n      bVar6 = CARRY4(param_2,uVar4);\n      param_2 = param_2 + uVar4;\n      param_3 = param_3 + iVar5 + (uint)bVar6;\n      iVar1 = (param_3 - param_5) - (uint)(param_2 < param_4);\n    } while (param_3 < param_5 || param_3 - param_5 < (uint)(param_2 < param_4));\n  }\n  return iVar1;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "uint *puVar2;" type_identifier (pointer_declarator "*puVar2" * identifier) ;) (declaration "undefined4 uVar3;" type_identifier identifier ;) (declaration "uint uVar4;" type_identifier identifier ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "bool bVar6;" primitive_type identifier ;) (declaration "undefined8 uVar7;" type_identifier identifier ;) (declaration "char *local_38;" primitive_type (pointer_declarator "*local_38" * identifier) ;) (declaration "int local_34;" primitive_type identifier ;) (declaration "uint local_2c;" type_identifier identifier ;) (declaration "uint local_28;" type_identifier identifier ;) (if_statement "if (DAT_0002e2a0 == 0) {\n    DAT_0002e2a0 = 1;\n    FUN_0001ce40(&DAT_0002e2c0);\n    DAT_0002e390 = 0x3ff0000000000000;\n    DAT_0002e3ac = &DAT_0002e2c0;\n  }" if (parenthesized_expression "(DAT_0002e2a0 == 0)" ( (binary_expression "DAT_0002e2a0 == 0" identifier == number_literal) )) (compound_statement "{\n    DAT_0002e2a0 = 1;\n    FUN_0001ce40(&DAT_0002e2c0);\n    DAT_0002e390 = 0x3ff0000000000000;\n    DAT_0002e3ac = &DAT_0002e2c0;\n  }" { (expression_statement "DAT_0002e2a0 = 1;" (assignment_expression "DAT_0002e2a0 = 1" identifier = number_literal) ;) (expression_statement "FUN_0001ce40(&DAT_0002e2c0);" (call_expression "FUN_0001ce40(&DAT_0002e2c0)" identifier (argument_list "(&DAT_0002e2c0)" ( (pointer_expression "&DAT_0002e2c0" & identifier) ))) ;) (expression_statement "DAT_0002e390 = 0x3ff0000000000000;" (assignment_expression "DAT_0002e390 = 0x3ff0000000000000" identifier = number_literal) ;) (expression_statement "DAT_0002e3ac = &DAT_0002e2c0;" (assignment_expression "DAT_0002e3ac = &DAT_0002e2c0" identifier = (pointer_expression "&DAT_0002e2c0" & identifier)) ;) })) (if_statement "if ((DAT_0002e158 & 0x100) != 0) {\n    printf("[findcall] %s: 0x%lx to 0x%lx\n",*(undefined4 *)(param_1 + 0x10),param_2,param_4);\n  }" if (parenthesized_expression "((DAT_0002e158 & 0x100) != 0)" ( (binary_expression "(DAT_0002e158 & 0x100) != 0" (parenthesized_expression "(DAT_0002e158 & 0x100)" ( (binary_expression "DAT_0002e158 & 0x100" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n    printf("[findcall] %s: 0x%lx to 0x%lx\n",*(undefined4 *)(param_1 + 0x10),param_2,param_4);\n  }" { (expression_statement "printf("[findcall] %s: 0x%lx to 0x%lx\n",*(undefined4 *)(param_1 + 0x10),param_2,param_4);" (call_expression "printf("[findcall] %s: 0x%lx to 0x%lx\n",*(undefined4 *)(param_1 + 0x10),param_2,param_4)" identifier (argument_list "("[findcall] %s: 0x%lx to 0x%lx\n",*(undefined4 *)(param_1 + 0x10),param_2,param_4)" ( (string_literal ""[findcall] %s: 0x%lx to 0x%lx\n"" " string_content escape_sequence ") , (pointer_expression "*(undefined4 *)(param_1 + 0x10)" * (cast_expression "(undefined4 *)(param_1 + 0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x10)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) )))) , identifier , identifier ))) ;) })) (expression_statement "iVar1 = (param_3 - param_5) - (uint)(param_2 < param_4);" (assignment_expression "iVar1 = (param_3 - param_5) - (uint)(param_2 < param_4)" identifier = (binary_expression "(param_3 - param_5) - (uint)(param_2 < param_4)" (parenthesized_expression "(param_3 - param_5)" ( (binary_expression "param_3 - param_5" identifier - identifier) )) - (call_expression "(uint)(param_2 < param_4)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(param_2 < param_4)" ( (binary_expression "param_2 < param_4" identifier < identifier) ))))) ;) (if_statement "if (param_3 < param_5 || param_3 - param_5 < (uint)(param_2 < param_4)) {\n    do {\n      local_38 = (char *)((param_2 - *(int *)(DAT_0002e4fc + 0x1c)) + DAT_0002e4f0);\n      if (*local_38 == -5) {\n        if ((DAT_0002e158 & 0x100) != 0) {\n          printf("[findcall]\t0x%lx:calls",param_2);\n          iVar1 = FUN_0001e9c0();\n          if ((iVar1 == 0) || (iVar1 == 0xd)) {\n            local_34 = FUN_0001eac0();\n            local_34 = local_34 + 1;\n            local_38 = local_38 + local_34;\n            uVar4 = FUN_0001e9c0();\n            if ((DAT_0002e158 & 0x100) == 0) goto LAB_0001ec6e;\n            uVar3 = FUN_0001e850();\n            printf("\tfirst operand is %s",uVar3);\n            uVar3 = FUN_0001e850();\n            printf("\tsecond operand is %s\n",uVar3);\n            if (0x14 < uVar4) goto LAB_0001edd0;\n            uVar4 = 1 << ((byte)uVar4 & 0x1f);\n            if ((uVar4 & 0x151508) == 0) goto LAB_0001ec89;\nLAB_0001eee4:\n            puVar2 = (uint *)&DAT_0002e2c0;\n            goto LAB_0001eef8;\n          }\nLAB_0001edd0:\n          if ((DAT_0002e158 & 0x100) != 0) {\n            puts("[findcall]\tbut it\'s a botch");\n          }\n          goto LAB_0001ebe0;\n        }\n        iVar1 = FUN_0001e9c0();\n        if (iVar1 == 0) {\nLAB_0001ec47:\n          local_34 = FUN_0001eac0();\n          local_34 = local_34 + 1;\n          local_38 = local_38 + local_34;\n          uVar4 = FUN_0001e9c0();\nLAB_0001ec6e:\n          if (0x14 < uVar4) goto LAB_0001ebe0;\n          uVar4 = 1 << ((byte)uVar4 & 0x1f);\n          if ((uVar4 & 0x151508) != 0) goto LAB_0001eee4;\nLAB_0001ec89:\n          if ((uVar4 & 0xa8000) == 0) goto LAB_0001edd0;\n          iVar1 = FUN_0001e9c0();\n          if (iVar1 == 0x11) {\n            uVar7 = (**(code **)(*(int *)(DAT_0002e4ec + 4) + 0x38))(local_38 + 1);\n            iVar1 = (int)((ulonglong)uVar7 >> 0x20);\n            bVar6 = 0xfffffffd < (uint)uVar7;\n            uVar4 = (uint)uVar7 + 2;\nLAB_0001efc9:\n            local_2c = uVar4 + param_2;\n            local_28 = iVar1 + (uint)bVar6 + param_3 + (uint)CARRY4(uVar4,param_2);\n          }\n          else {\n            if (iVar1 == 0x13) {\n              uVar7 = (**(code **)(*(int *)(DAT_0002e4ec + 4) + 0x2c))(local_38 + 1);\n              iVar1 = (int)((ulonglong)uVar7 >> 0x20);\n              bVar6 = 0xfffffffb < (uint)uVar7;\n              uVar4 = (uint)uVar7 + 4;\n              goto LAB_0001efc9;\n            }\n            if (iVar1 == 0xf) {\n              uVar4 = (byte)(local_38[1] + 0x80) - 0x7f;\n              local_2c = uVar4 + param_2;\n              local_28 = ((int)uVar4 >> 0x1f) + param_3 + (uint)CARRY4(uVar4,param_2);\n            }\n            else {\n              fwrite("[reladdr] not relative address\n",1,0x1f,*(FILE **)PTR_stderr_0002cfcc);\n              local_2c = param_2;\n              local_28 = param_3;\n            }\n          }\n          iVar1 = FUN_0001c070(local_2c);\n          if ((iVar1 == 0) ||\n             (puVar2 = (uint *)FUN_0001d480(&DAT_0002e520,local_2c,local_28), puVar2 == (uint *)0x0)\n             ) goto LAB_0001edd0;\n          if ((DAT_0002e158 & 0x100) == 0) {\n            if (puVar2[1] != local_28 || *puVar2 != local_2c) goto LAB_0001ebe0;\n          }\n          else {\n            printf("[findcall]\tdestpc 0x%lx",local_2c);\n            printf(" child->name %s",puVar2[4]);\n            printf(" child->addr 0x%lx\n",*puVar2);\n            if (puVar2[1] != local_28 || local_2c != *puVar2) goto LAB_0001edd0;\n          }\nLAB_0001eef8:\n          FUN_00014870(param_1,puVar2,0);\n          iVar1 = FUN_0001eac0();\n          uVar4 = local_34 + iVar1;\n          iVar5 = (int)uVar4 >> 0x1f;\n        }\n        else {\n          uVar4 = 1;\n          iVar5 = 0;\n          if (iVar1 == 0xd) goto LAB_0001ec47;\n        }\n      }\n      else {\nLAB_0001ebe0:\n        uVar4 = 1;\n        iVar5 = 0;\n      }\n      bVar6 = CARRY4(param_2,uVar4);\n      param_2 = param_2 + uVar4;\n      param_3 = param_3 + iVar5 + (uint)bVar6;\n      iVar1 = (param_3 - param_5) - (uint)(param_2 < param_4);\n    } while (param_3 < param_5 || param_3 - param_5 < (uint)(param_2 < param_4));\n  }" if (parenthesized_expression "(param_3 < param_5 || param_3 - param_5 < (uint)(param_2 < param_4))" ( (binary_expression "param_3 < param_5 || param_3 - param_5 < (uint)(param_2 < param_4)" (binary_expression "param_3 < param_5" identifier < identifier) || (binary_expression "param_3 - param_5 < (uint)(param_2 < param_4)" (binary_expression "param_3 - param_5" identifier - identifier) < (call_expression "(uint)(param_2 < param_4)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(param_2 < param_4)" ( (binary_expression "param_2 < param_4" identifier < identifier) ))))) )) (compound_statement "{\n    do {\n      local_38 = (char *)((param_2 - *(int *)(DAT_0002e4fc + 0x1c)) + DAT_0002e4f0);\n      if (*local_38 == -5) {\n        if ((DAT_0002e158 & 0x100) != 0) {\n          printf("[findcall]\t0x%lx:calls",param_2);\n          iVar1 = FUN_0001e9c0();\n          if ((iVar1 == 0) || (iVar1 == 0xd)) {\n            local_34 = FUN_0001eac0();\n            local_34 = local_34 + 1;\n            local_38 = local_38 + local_34;\n            uVar4 = FUN_0001e9c0();\n            if ((DAT_0002e158 & 0x100) == 0) goto LAB_0001ec6e;\n            uVar3 = FUN_0001e850();\n            printf("\tfirst operand is %s",uVar3);\n            uVar3 = FUN_0001e850();\n            printf("\tsecond operand is %s\n",uVar3);\n            if (0x14 < uVar4) goto LAB_0001edd0;\n            uVar4 = 1 << ((byte)uVar4 & 0x1f);\n            if ((uVar4 & 0x151508) == 0) goto LAB_0001ec89;\nLAB_0001eee4:\n            puVar2 = (uint *)&DAT_0002e2c0;\n            goto LAB_0001eef8;\n          }\nLAB_0001edd0:\n          if ((DAT_0002e158 & 0x100) != 0) {\n            puts("[findcall]\tbut it\'s a botch");\n          }\n          goto LAB_0001ebe0;\n        }\n        iVar1 = FUN_0001e9c0();\n        if (iVar1 == 0) {\nLAB_0001ec47:\n          local_34 = FUN_0001eac0();\n          local_34 = local_34 + 1;\n          local_38 = local_38 + local_34;\n          uVar4 = FUN_0001e9c0();\nLAB_0001ec6e:\n          if (0x14 < uVar4) goto LAB_0001ebe0;\n          uVar4 = 1 << ((byte)uVar4 & 0x1f);\n          if ((uVar4 & 0x151508) != 0) goto LAB_0001eee4;\nLAB_0001ec89:\n          if ((uVar4 & 0xa8000) == 0) goto LAB_0001edd0;\n          iVar1 = FUN_0001e9c0();\n          if (iVar1 == 0x11) {\n            uVar7 = (**(code **)(*(int *)(DAT_0002e4ec + 4) + 0x38))(local_38 + 1);\n            iVar1 = (int)((ulonglong)uVar7 >> 0x20);\n            bVar6 = 0xfffffffd < (uint)uVar7;\n            uVar4 = (uint)uVar7 + 2;\nLAB_0001efc9:\n            local_2c = uVar4 + param_2;\n            local_28 = iVar1 + (uint)bVar6 + param_3 + (uint)CARRY4(uVar4,param_2);\n          }\n          else {\n            if (iVar1 == 0x13) {\n              uVar7 = (**(code **)(*(int *)(DAT_0002e4ec + 4) + 0x2c))(local_38 + 1);\n              iVar1 = (int)((ulonglong)uVar7 >> 0x20);\n              bVar6 = 0xfffffffb < (uint)uVar7;\n              uVar4 = (uint)uVar7 + 4;\n              goto LAB_0001efc9;\n            }\n            if (iVar1 == 0xf) {\n              uVar4 = (byte)(local_38[1] + 0x80) - 0x7f;\n              local_2c = uVar4 + param_2;\n              local_28 = ((int)uVar4 >> 0x1f) + param_3 + (uint)CARRY4(uVar4,param_2);\n            }\n            else {\n              fwrite("[reladdr] not relative address\n",1,0x1f,*(FILE **)PTR_stderr_0002cfcc);\n              local_2c = param_2;\n              local_28 = param_3;\n            }\n          }\n          iVar1 = FUN_0001c070(local_2c);\n          if ((iVar1 == 0) ||\n             (puVar2 = (uint *)FUN_0001d480(&DAT_0002e520,local_2c,local_28), puVar2 == (uint *)0x0)\n             ) goto LAB_0001edd0;\n          if ((DAT_0002e158 & 0x100) == 0) {\n            if (puVar2[1] != local_28 || *puVar2 != local_2c) goto LAB_0001ebe0;\n          }\n          else {\n            printf("[findcall]\tdestpc 0x%lx",local_2c);\n            printf(" child->name %s",puVar2[4]);\n            printf(" child->addr 0x%lx\n",*puVar2);\n            if (puVar2[1] != local_28 || local_2c != *puVar2) goto LAB_0001edd0;\n          }\nLAB_0001eef8:\n          FUN_00014870(param_1,puVar2,0);\n          iVar1 = FUN_0001eac0();\n          uVar4 = local_34 + iVar1;\n          iVar5 = (int)uVar4 >> 0x1f;\n        }\n        else {\n          uVar4 = 1;\n          iVar5 = 0;\n          if (iVar1 == 0xd) goto LAB_0001ec47;\n        }\n      }\n      else {\nLAB_0001ebe0:\n        uVar4 = 1;\n        iVar5 = 0;\n      }\n      bVar6 = CARRY4(param_2,uVar4);\n      param_2 = param_2 + uVar4;\n      param_3 = param_3 + iVar5 + (uint)bVar6;\n      iVar1 = (param_3 - param_5) - (uint)(param_2 < param_4);\n    } while (param_3 < param_5 || param_3 - param_5 < (uint)(param_2 < param_4));\n  }" { (do_statement "do {\n      local_38 = (char *)((param_2 - *(int *)(DAT_0002e4fc + 0x1c)) + DAT_0002e4f0);\n      if (*local_38 == -5) {\n        if ((DAT_0002e158 & 0x100) != 0) {\n          printf("[findcall]\t0x%lx:calls",param_2);\n          iVar1 = FUN_0001e9c0();\n          if ((iVar1 == 0) || (iVar1 == 0xd)) {\n            local_34 = FUN_0001eac0();\n            local_34 = local_34 + 1;\n            local_38 = local_38 + local_34;\n            uVar4 = FUN_0001e9c0();\n            if ((DAT_0002e158 & 0x100) == 0) goto LAB_0001ec6e;\n            uVar3 = FUN_0001e850();\n            printf("\tfirst operand is %s",uVar3);\n            uVar3 = FUN_0001e850();\n            printf("\tsecond operand is %s\n",uVar3);\n            if (0x14 < uVar4) goto LAB_0001edd0;\n            uVar4 = 1 << ((byte)uVar4 & 0x1f);\n            if ((uVar4 & 0x151508) == 0) goto LAB_0001ec89;\nLAB_0001eee4:\n            puVar2 = (uint *)&DAT_0002e2c0;\n            goto LAB_0001eef8;\n          }\nLAB_0001edd0:\n          if ((DAT_0002e158 & 0x100) != 0) {\n            puts("[findcall]\tbut it\'s a botch");\n          }\n          goto LAB_0001ebe0;\n        }\n        iVar1 = FUN_0001e9c0();\n        if (iVar1 == 0) {\nLAB_0001ec47:\n          local_34 = FUN_0001eac0();\n          local_34 = local_34 + 1;\n          local_38 = local_38 + local_34;\n          uVar4 = FUN_0001e9c0();\nLAB_0001ec6e:\n          if (0x14 < uVar4) goto LAB_0001ebe0;\n          uVar4 = 1 << ((byte)uVar4 & 0x1f);\n          if ((uVar4 & 0x151508) != 0) goto LAB_0001eee4;\nLAB_0001ec89:\n          if ((uVar4 & 0xa8000) == 0) goto LAB_0001edd0;\n          iVar1 = FUN_0001e9c0();\n          if (iVar1 == 0x11) {\n            uVar7 = (**(code **)(*(int *)(DAT_0002e4ec + 4) + 0x38))(local_38 + 1);\n            iVar1 = (int)((ulonglong)uVar7 >> 0x20);\n            bVar6 = 0xfffffffd < (uint)uVar7;\n            uVar4 = (uint)uVar7 + 2;\nLAB_0001efc9:\n            local_2c = uVar4 + param_2;\n            local_28 = iVar1 + (uint)bVar6 + param_3 + (uint)CARRY4(uVar4,param_2);\n          }\n          else {\n            if (iVar1 == 0x13) {\n              uVar7 = (**(code **)(*(int *)(DAT_0002e4ec + 4) + 0x2c))(local_38 + 1);\n              iVar1 = (int)((ulonglong)uVar7 >> 0x20);\n              bVar6 = 0xfffffffb < (uint)uVar7;\n              uVar4 = (uint)uVar7 + 4;\n              goto LAB_0001efc9;\n            }\n            if (iVar1 == 0xf) {\n              uVar4 = (byte)(local_38[1] + 0x80) - 0x7f;\n              local_2c = uVar4 + param_2;\n              local_28 = ((int)uVar4 >> 0x1f) + param_3 + (uint)CARRY4(uVar4,param_2);\n            }\n            else {\n              fwrite("[reladdr] not relative address\n",1,0x1f,*(FILE **)PTR_stderr_0002cfcc);\n              local_2c = param_2;\n              local_28 = param_3;\n            }\n          }\n          iVar1 = FUN_0001c070(local_2c);\n          if ((iVar1 == 0) ||\n             (puVar2 = (uint *)FUN_0001d480(&DAT_0002e520,local_2c,local_28), puVar2 == (uint *)0x0)\n             ) goto LAB_0001edd0;\n          if ((DAT_0002e158 & 0x100) == 0) {\n            if (puVar2[1] != local_28 || *puVar2 != local_2c) goto LAB_0001ebe0;\n          }\n          else {\n            printf("[findcall]\tdestpc 0x%lx",local_2c);\n            printf(" child->name %s",puVar2[4]);\n            printf(" child->addr 0x%lx\n",*puVar2);\n            if (puVar2[1] != local_28 || local_2c != *puVar2) goto LAB_0001edd0;\n          }\nLAB_0001eef8:\n          FUN_00014870(param_1,puVar2,0);\n          iVar1 = FUN_0001eac0();\n          uVar4 = local_34 + iVar1;\n          iVar5 = (int)uVar4 >> 0x1f;\n        }\n        else {\n          uVar4 = 1;\n          iVar5 = 0;\n          if (iVar1 == 0xd) goto LAB_0001ec47;\n        }\n      }\n      else {\nLAB_0001ebe0:\n        uVar4 = 1;\n        iVar5 = 0;\n      }\n      bVar6 = CARRY4(param_2,uVar4);\n      param_2 = param_2 + uVar4;\n      param_3 = param_3 + iVar5 + (uint)bVar6;\n      iVar1 = (param_3 - param_5) - (uint)(param_2 < param_4);\n    } while (param_3 < param_5 || param_3 - param_5 < (uint)(param_2 < param_4));" do (compound_statement "{\n      local_38 = (char *)((param_2 - *(int *)(DAT_0002e4fc + 0x1c)) + DAT_0002e4f0);\n      if (*local_38 == -5) {\n        if ((DAT_0002e158 & 0x100) != 0) {\n          printf("[findcall]\t0x%lx:calls",param_2);\n          iVar1 = FUN_0001e9c0();\n          if ((iVar1 == 0) || (iVar1 == 0xd)) {\n            local_34 = FUN_0001eac0();\n            local_34 = local_34 + 1;\n            local_38 = local_38 + local_34;\n            uVar4 = FUN_0001e9c0();\n            if ((DAT_0002e158 & 0x100) == 0) goto LAB_0001ec6e;\n            uVar3 = FUN_0001e850();\n            printf("\tfirst operand is %s",uVar3);\n            uVar3 = FUN_0001e850();\n            printf("\tsecond operand is %s\n",uVar3);\n            if (0x14 < uVar4) goto LAB_0001edd0;\n            uVar4 = 1 << ((byte)uVar4 & 0x1f);\n            if ((uVar4 & 0x151508) == 0) goto LAB_0001ec89;\nLAB_0001eee4:\n            puVar2 = (uint *)&DAT_0002e2c0;\n            goto LAB_0001eef8;\n          }\nLAB_0001edd0:\n          if ((DAT_0002e158 & 0x100) != 0) {\n            puts("[findcall]\tbut it\'s a botch");\n          }\n          goto LAB_0001ebe0;\n        }\n        iVar1 = FUN_0001e9c0();\n        if (iVar1 == 0) {\nLAB_0001ec47:\n          local_34 = FUN_0001eac0();\n          local_34 = local_34 + 1;\n          local_38 = local_38 + local_34;\n          uVar4 = FUN_0001e9c0();\nLAB_0001ec6e:\n          if (0x14 < uVar4) goto LAB_0001ebe0;\n          uVar4 = 1 << ((byte)uVar4 & 0x1f);\n          if ((uVar4 & 0x151508) != 0) goto LAB_0001eee4;\nLAB_0001ec89:\n          if ((uVar4 & 0xa8000) == 0) goto LAB_0001edd0;\n          iVar1 = FUN_0001e9c0();\n          if (iVar1 == 0x11) {\n            uVar7 = (**(code **)(*(int *)(DAT_0002e4ec + 4) + 0x38))(local_38 + 1);\n            iVar1 = (int)((ulonglong)uVar7 >> 0x20);\n            bVar6 = 0xfffffffd < (uint)uVar7;\n            uVar4 = (uint)uVar7 + 2;\nLAB_0001efc9:\n            local_2c = uVar4 + param_2;\n            local_28 = iVar1 + (uint)bVar6 + param_3 + (uint)CARRY4(uVar4,param_2);\n          }\n          else {\n            if (iVar1 == 0x13) {\n              uVar7 = (**(code **)(*(int *)(DAT_0002e4ec + 4) + 0x2c))(local_38 + 1);\n              iVar1 = (int)((ulonglong)uVar7 >> 0x20);\n              bVar6 = 0xfffffffb < (uint)uVar7;\n              uVar4 = (uint)uVar7 + 4;\n              goto LAB_0001efc9;\n            }\n            if (iVar1 == 0xf) {\n              uVar4 = (byte)(local_38[1] + 0x80) - 0x7f;\n              local_2c = uVar4 + param_2;\n              local_28 = ((int)uVar4 >> 0x1f) + param_3 + (uint)CARRY4(uVar4,param_2);\n            }\n            else {\n              fwrite("[reladdr] not relative address\n",1,0x1f,*(FILE **)PTR_stderr_0002cfcc);\n              local_2c = param_2;\n              local_28 = param_3;\n            }\n          }\n          iVar1 = FUN_0001c070(local_2c);\n          if ((iVar1 == 0) ||\n             (puVar2 = (uint *)FUN_0001d480(&DAT_0002e520,local_2c,local_28), puVar2 == (uint *)0x0)\n             ) goto LAB_0001edd0;\n          if ((DAT_0002e158 & 0x100) == 0) {\n            if (puVar2[1] != local_28 || *puVar2 != local_2c) goto LAB_0001ebe0;\n          }\n          else {\n            printf("[findcall]\tdestpc 0x%lx",local_2c);\n            printf(" child->name %s",puVar2[4]);\n            printf(" child->addr 0x%lx\n",*puVar2);\n            if (puVar2[1] != local_28 || local_2c != *puVar2) goto LAB_0001edd0;\n          }\nLAB_0001eef8:\n          FUN_00014870(param_1,puVar2,0);\n          iVar1 = FUN_0001eac0();\n          uVar4 = local_34 + iVar1;\n          iVar5 = (int)uVar4 >> 0x1f;\n        }\n        else {\n          uVar4 = 1;\n          iVar5 = 0;\n          if (iVar1 == 0xd) goto LAB_0001ec47;\n        }\n      }\n      else {\nLAB_0001ebe0:\n        uVar4 = 1;\n        iVar5 = 0;\n      }\n      bVar6 = CARRY4(param_2,uVar4);\n      param_2 = param_2 + uVar4;\n      param_3 = param_3 + iVar5 + (uint)bVar6;\n      iVar1 = (param_3 - param_5) - (uint)(param_2 < param_4);\n    }" { (expression_statement "local_38 = (char *)((param_2 - *(int *)(DAT_0002e4fc + 0x1c)) + DAT_0002e4f0);" (assignment_expression "local_38 = (char *)((param_2 - *(int *)(DAT_0002e4fc + 0x1c)) + DAT_0002e4f0)" identifier = (cast_expression "(char *)((param_2 - *(int *)(DAT_0002e4fc + 0x1c)) + DAT_0002e4f0)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((param_2 - *(int *)(DAT_0002e4fc + 0x1c)) + DAT_0002e4f0)" ( (binary_expression "(param_2 - *(int *)(DAT_0002e4fc + 0x1c)) + DAT_0002e4f0" (parenthesized_expression "(param_2 - *(int *)(DAT_0002e4fc + 0x1c))" ( (binary_expression "param_2 - *(int *)(DAT_0002e4fc + 0x1c)" identifier - (pointer_expression "*(int *)(DAT_0002e4fc + 0x1c)" * (cast_expression "(int *)(DAT_0002e4fc + 0x1c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(DAT_0002e4fc + 0x1c)" ( (binary_expression "DAT_0002e4fc + 0x1c" identifier + number_literal) ))))) )) + identifier) )))) ;) (if_statement "if (*local_38 == -5) {\n        if ((DAT_0002e158 & 0x100) != 0) {\n          printf("[findcall]\t0x%lx:calls",param_2);\n          iVar1 = FUN_0001e9c0();\n          if ((iVar1 == 0) || (iVar1 == 0xd)) {\n            local_34 = FUN_0001eac0();\n            local_34 = local_34 + 1;\n            local_38 = local_38 + local_34;\n            uVar4 = FUN_0001e9c0();\n            if ((DAT_0002e158 & 0x100) == 0) goto LAB_0001ec6e;\n            uVar3 = FUN_0001e850();\n            printf("\tfirst operand is %s",uVar3);\n            uVar3 = FUN_0001e850();\n            printf("\tsecond operand is %s\n",uVar3);\n            if (0x14 < uVar4) goto LAB_0001edd0;\n            uVar4 = 1 << ((byte)uVar4 & 0x1f);\n            if ((uVar4 & 0x151508) == 0) goto LAB_0001ec89;\nLAB_0001eee4:\n            puVar2 = (uint *)&DAT_0002e2c0;\n            goto LAB_0001eef8;\n          }\nLAB_0001edd0:\n          if ((DAT_0002e158 & 0x100) != 0) {\n            puts("[findcall]\tbut it\'s a botch");\n          }\n          goto LAB_0001ebe0;\n        }\n        iVar1 = FUN_0001e9c0();\n        if (iVar1 == 0) {\nLAB_0001ec47:\n          local_34 = FUN_0001eac0();\n          local_34 = local_34 + 1;\n          local_38 = local_38 + local_34;\n          uVar4 = FUN_0001e9c0();\nLAB_0001ec6e:\n          if (0x14 < uVar4) goto LAB_0001ebe0;\n          uVar4 = 1 << ((byte)uVar4 & 0x1f);\n          if ((uVar4 & 0x151508) != 0) goto LAB_0001eee4;\nLAB_0001ec89:\n          if ((uVar4 & 0xa8000) == 0) goto LAB_0001edd0;\n          iVar1 = FUN_0001e9c0();\n          if (iVar1 == 0x11) {\n            uVar7 = (**(code **)(*(int *)(DAT_0002e4ec + 4) + 0x38))(local_38 + 1);\n            iVar1 = (int)((ulonglong)uVar7 >> 0x20);\n            bVar6 = 0xfffffffd < (uint)uVar7;\n            uVar4 = (uint)uVar7 + 2;\nLAB_0001efc9:\n            local_2c = uVar4 + param_2;\n            local_28 = iVar1 + (uint)bVar6 + param_3 + (uint)CARRY4(uVar4,param_2);\n          }\n          else {\n            if (iVar1 == 0x13) {\n              uVar7 = (**(code **)(*(int *)(DAT_0002e4ec + 4) + 0x2c))(local_38 + 1);\n              iVar1 = (int)((ulonglong)uVar7 >> 0x20);\n              bVar6 = 0xfffffffb < (uint)uVar7;\n              uVar4 = (uint)uVar7 + 4;\n              goto LAB_0001efc9;\n            }\n            if (iVar1 == 0xf) {\n              uVar4 = (byte)(local_38[1] + 0x80) - 0x7f;\n              local_2c = uVar4 + param_2;\n              local_28 = ((int)uVar4 >> 0x1f) + param_3 + (uint)CARRY4(uVar4,param_2);\n            }\n            else {\n              fwrite("[reladdr] not relative address\n",1,0x1f,*(FILE **)PTR_stderr_0002cfcc);\n              local_2c = param_2;\n              local_28 = param_3;\n            }\n          }\n          iVar1 = FUN_0001c070(local_2c);\n          if ((iVar1 == 0) ||\n             (puVar2 = (uint *)FUN_0001d480(&DAT_0002e520,local_2c,local_28), puVar2 == (uint *)0x0)\n             ) goto LAB_0001edd0;\n          if ((DAT_0002e158 & 0x100) == 0) {\n            if (puVar2[1] != local_28 || *puVar2 != local_2c) goto LAB_0001ebe0;\n          }\n          else {\n            printf("[findcall]\tdestpc 0x%lx",local_2c);\n            printf(" child->name %s",puVar2[4]);\n            printf(" child->addr 0x%lx\n",*puVar2);\n            if (puVar2[1] != local_28 || local_2c != *puVar2) goto LAB_0001edd0;\n          }\nLAB_0001eef8:\n          FUN_00014870(param_1,puVar2,0);\n          iVar1 = FUN_0001eac0();\n          uVar4 = local_34 + iVar1;\n          iVar5 = (int)uVar4 >> 0x1f;\n        }\n        else {\n          uVar4 = 1;\n          iVar5 = 0;\n          if (iVar1 == 0xd) goto LAB_0001ec47;\n        }\n      }\n      else {\nLAB_0001ebe0:\n        uVar4 = 1;\n        iVar5 = 0;\n      }" if (parenthesized_expression "(*local_38 == -5)" ( (binary_expression "*local_38 == -5" (pointer_expression "*local_38" * identifier) == number_literal) )) (compound_statement "{\n        if ((DAT_0002e158 & 0x100) != 0) {\n          printf("[findcall]\t0x%lx:calls",param_2);\n          iVar1 = FUN_0001e9c0();\n          if ((iVar1 == 0) || (iVar1 == 0xd)) {\n            local_34 = FUN_0001eac0();\n            local_34 = local_34 + 1;\n            local_38 = local_38 + local_34;\n            uVar4 = FUN_0001e9c0();\n            if ((DAT_0002e158 & 0x100) == 0) goto LAB_0001ec6e;\n            uVar3 = FUN_0001e850();\n            printf("\tfirst operand is %s",uVar3);\n            uVar3 = FUN_0001e850();\n            printf("\tsecond operand is %s\n",uVar3);\n            if (0x14 < uVar4) goto LAB_0001edd0;\n            uVar4 = 1 << ((byte)uVar4 & 0x1f);\n            if ((uVar4 & 0x151508) == 0) goto LAB_0001ec89;\nLAB_0001eee4:\n            puVar2 = (uint *)&DAT_0002e2c0;\n            goto LAB_0001eef8;\n          }\nLAB_0001edd0:\n          if ((DAT_0002e158 & 0x100) != 0) {\n            puts("[findcall]\tbut it\'s a botch");\n          }\n          goto LAB_0001ebe0;\n        }\n        iVar1 = FUN_0001e9c0();\n        if (iVar1 == 0) {\nLAB_0001ec47:\n          local_34 = FUN_0001eac0();\n          local_34 = local_34 + 1;\n          local_38 = local_38 + local_34;\n          uVar4 = FUN_0001e9c0();\nLAB_0001ec6e:\n          if (0x14 < uVar4) goto LAB_0001ebe0;\n          uVar4 = 1 << ((byte)uVar4 & 0x1f);\n          if ((uVar4 & 0x151508) != 0) goto LAB_0001eee4;\nLAB_0001ec89:\n          if ((uVar4 & 0xa8000) == 0) goto LAB_0001edd0;\n          iVar1 = FUN_0001e9c0();\n          if (iVar1 == 0x11) {\n            uVar7 = (**(code **)(*(int *)(DAT_0002e4ec + 4) + 0x38))(local_38 + 1);\n            iVar1 = (int)((ulonglong)uVar7 >> 0x20);\n            bVar6 = 0xfffffffd < (uint)uVar7;\n            uVar4 = (uint)uVar7 + 2;\nLAB_0001efc9:\n            local_2c = uVar4 + param_2;\n            local_28 = iVar1 + (uint)bVar6 + param_3 + (uint)CARRY4(uVar4,param_2);\n          }\n          else {\n            if (iVar1 == 0x13) {\n              uVar7 = (**(code **)(*(int *)(DAT_0002e4ec + 4) + 0x2c))(local_38 + 1);\n              iVar1 = (int)((ulonglong)uVar7 >> 0x20);\n              bVar6 = 0xfffffffb < (uint)uVar7;\n              uVar4 = (uint)uVar7 + 4;\n              goto LAB_0001efc9;\n            }\n            if (iVar1 == 0xf) {\n              uVar4 = (byte)(local_38[1] + 0x80) - 0x7f;\n              local_2c = uVar4 + param_2;\n              local_28 = ((int)uVar4 >> 0x1f) + param_3 + (uint)CARRY4(uVar4,param_2);\n            }\n            else {\n              fwrite("[reladdr] not relative address\n",1,0x1f,*(FILE **)PTR_stderr_0002cfcc);\n              local_2c = param_2;\n              local_28 = param_3;\n            }\n          }\n          iVar1 = FUN_0001c070(local_2c);\n          if ((iVar1 == 0) ||\n             (puVar2 = (uint *)FUN_0001d480(&DAT_0002e520,local_2c,local_28), puVar2 == (uint *)0x0)\n             ) goto LAB_0001edd0;\n          if ((DAT_0002e158 & 0x100) == 0) {\n            if (puVar2[1] != local_28 || *puVar2 != local_2c) goto LAB_0001ebe0;\n          }\n          else {\n            printf("[findcall]\tdestpc 0x%lx",local_2c);\n            printf(" child->name %s",puVar2[4]);\n            printf(" child->addr 0x%lx\n",*puVar2);\n            if (puVar2[1] != local_28 || local_2c != *puVar2) goto LAB_0001edd0;\n          }\nLAB_0001eef8:\n          FUN_00014870(param_1,puVar2,0);\n          iVar1 = FUN_0001eac0();\n          uVar4 = local_34 + iVar1;\n          iVar5 = (int)uVar4 >> 0x1f;\n        }\n        else {\n          uVar4 = 1;\n          iVar5 = 0;\n          if (iVar1 == 0xd) goto LAB_0001ec47;\n        }\n      }" { (if_statement "if ((DAT_0002e158 & 0x100) != 0) {\n          printf("[findcall]\t0x%lx:calls",param_2);\n          iVar1 = FUN_0001e9c0();\n          if ((iVar1 == 0) || (iVar1 == 0xd)) {\n            local_34 = FUN_0001eac0();\n            local_34 = local_34 + 1;\n            local_38 = local_38 + local_34;\n            uVar4 = FUN_0001e9c0();\n            if ((DAT_0002e158 & 0x100) == 0) goto LAB_0001ec6e;\n            uVar3 = FUN_0001e850();\n            printf("\tfirst operand is %s",uVar3);\n            uVar3 = FUN_0001e850();\n            printf("\tsecond operand is %s\n",uVar3);\n            if (0x14 < uVar4) goto LAB_0001edd0;\n            uVar4 = 1 << ((byte)uVar4 & 0x1f);\n            if ((uVar4 & 0x151508) == 0) goto LAB_0001ec89;\nLAB_0001eee4:\n            puVar2 = (uint *)&DAT_0002e2c0;\n            goto LAB_0001eef8;\n          }\nLAB_0001edd0:\n          if ((DAT_0002e158 & 0x100) != 0) {\n            puts("[findcall]\tbut it\'s a botch");\n          }\n          goto LAB_0001ebe0;\n        }" if (parenthesized_expression "((DAT_0002e158 & 0x100) != 0)" ( (binary_expression "(DAT_0002e158 & 0x100) != 0" (parenthesized_expression "(DAT_0002e158 & 0x100)" ( (binary_expression "DAT_0002e158 & 0x100" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n          printf("[findcall]\t0x%lx:calls",param_2);\n          iVar1 = FUN_0001e9c0();\n          if ((iVar1 == 0) || (iVar1 == 0xd)) {\n            local_34 = FUN_0001eac0();\n            local_34 = local_34 + 1;\n            local_38 = local_38 + local_34;\n            uVar4 = FUN_0001e9c0();\n            if ((DAT_0002e158 & 0x100) == 0) goto LAB_0001ec6e;\n            uVar3 = FUN_0001e850();\n            printf("\tfirst operand is %s",uVar3);\n            uVar3 = FUN_0001e850();\n            printf("\tsecond operand is %s\n",uVar3);\n            if (0x14 < uVar4) goto LAB_0001edd0;\n            uVar4 = 1 << ((byte)uVar4 & 0x1f);\n            if ((uVar4 & 0x151508) == 0) goto LAB_0001ec89;\nLAB_0001eee4:\n            puVar2 = (uint *)&DAT_0002e2c0;\n            goto LAB_0001eef8;\n          }\nLAB_0001edd0:\n          if ((DAT_0002e158 & 0x100) != 0) {\n            puts("[findcall]\tbut it\'s a botch");\n          }\n          goto LAB_0001ebe0;\n        }" { (expression_statement "printf("[findcall]\t0x%lx:calls",param_2);" (call_expression "printf("[findcall]\t0x%lx:calls",param_2)" identifier (argument_list "("[findcall]\t0x%lx:calls",param_2)" ( (string_literal ""[findcall]\t0x%lx:calls"" " string_content escape_sequence string_content ") , identifier ))) ;) (expression_statement "iVar1 = FUN_0001e9c0();" (assignment_expression "iVar1 = FUN_0001e9c0()" identifier = (call_expression "FUN_0001e9c0()" identifier (argument_list "()" ( )))) ;) (if_statement "if ((iVar1 == 0) || (iVar1 == 0xd)) {\n            local_34 = FUN_0001eac0();\n            local_34 = local_34 + 1;\n            local_38 = local_38 + local_34;\n            uVar4 = FUN_0001e9c0();\n            if ((DAT_0002e158 & 0x100) == 0) goto LAB_0001ec6e;\n            uVar3 = FUN_0001e850();\n            printf("\tfirst operand is %s",uVar3);\n            uVar3 = FUN_0001e850();\n            printf("\tsecond operand is %s\n",uVar3);\n            if (0x14 < uVar4) goto LAB_0001edd0;\n            uVar4 = 1 << ((byte)uVar4 & 0x1f);\n            if ((uVar4 & 0x151508) == 0) goto LAB_0001ec89;\nLAB_0001eee4:\n            puVar2 = (uint *)&DAT_0002e2c0;\n            goto LAB_0001eef8;\n          }" if (parenthesized_expression "((iVar1 == 0) || (iVar1 == 0xd))" ( (binary_expression "(iVar1 == 0) || (iVar1 == 0xd)" (parenthesized_expression "(iVar1 == 0)" ( (binary_expression "iVar1 == 0" identifier == number_literal) )) || (parenthesized_expression "(iVar1 == 0xd)" ( (binary_expression "iVar1 == 0xd" identifier == number_literal) ))) )) (compound_statement "{\n            local_34 = FUN_0001eac0();\n            local_34 = local_34 + 1;\n            local_38 = local_38 + local_34;\n            uVar4 = FUN_0001e9c0();\n            if ((DAT_0002e158 & 0x100) == 0) goto LAB_0001ec6e;\n            uVar3 = FUN_0001e850();\n            printf("\tfirst operand is %s",uVar3);\n            uVar3 = FUN_0001e850();\n            printf("\tsecond operand is %s\n",uVar3);\n            if (0x14 < uVar4) goto LAB_0001edd0;\n            uVar4 = 1 << ((byte)uVar4 & 0x1f);\n            if ((uVar4 & 0x151508) == 0) goto LAB_0001ec89;\nLAB_0001eee4:\n            puVar2 = (uint *)&DAT_0002e2c0;\n            goto LAB_0001eef8;\n          }" { (expression_statement "local_34 = FUN_0001eac0();" (assignment_expression "local_34 = FUN_0001eac0()" identifier = (call_expression "FUN_0001eac0()" identifier (argument_list "()" ( )))) ;) (expression_statement "local_34 = local_34 + 1;" (assignment_expression "local_34 = local_34 + 1" identifier = (binary_expression "local_34 + 1" identifier + number_literal)) ;) (expression_statement "local_38 = local_38 + local_34;" (assignment_expression "local_38 = local_38 + local_34" identifier = (binary_expression "local_38 + local_34" identifier + identifier)) ;) (expression_statement "uVar4 = FUN_0001e9c0();" (assignment_expression "uVar4 = FUN_0001e9c0()" identifier = (call_expression "FUN_0001e9c0()" identifier (argument_list "()" ( )))) ;) (if_statement "if ((DAT_0002e158 & 0x100) == 0) goto LAB_0001ec6e;" if (parenthesized_expression "((DAT_0002e158 & 0x100) == 0)" ( (binary_expression "(DAT_0002e158 & 0x100) == 0" (parenthesized_expression "(DAT_0002e158 & 0x100)" ( (binary_expression "DAT_0002e158 & 0x100" identifier & number_literal) )) == number_literal) )) (goto_statement "goto LAB_0001ec6e;" goto statement_identifier ;)) (expression_statement "uVar3 = FUN_0001e850();" (assignment_expression "uVar3 = FUN_0001e850()" identifier = (call_expression "FUN_0001e850()" identifier (argument_list "()" ( )))) ;) (expression_statement "printf("\tfirst operand is %s",uVar3);" (call_expression "printf("\tfirst operand is %s",uVar3)" identifier (argument_list "("\tfirst operand is %s",uVar3)" ( (string_literal ""\tfirst operand is %s"" " escape_sequence string_content ") , identifier ))) ;) (expression_statement "uVar3 = FUN_0001e850();" (assignment_expression "uVar3 = FUN_0001e850()" identifier = (call_expression "FUN_0001e850()" identifier (argument_list "()" ( )))) ;) (expression_statement "printf("\tsecond operand is %s\n",uVar3);" (call_expression "printf("\tsecond operand is %s\n",uVar3)" identifier (argument_list "("\tsecond operand is %s\n",uVar3)" ( (string_literal ""\tsecond operand is %s\n"" " escape_sequence string_content escape_sequence ") , identifier ))) ;) (if_statement "if (0x14 < uVar4) goto LAB_0001edd0;" if (parenthesized_expression "(0x14 < uVar4)" ( (binary_expression "0x14 < uVar4" number_literal < identifier) )) (goto_statement "goto LAB_0001edd0;" goto statement_identifier ;)) (expression_statement "uVar4 = 1 << ((byte)uVar4 & 0x1f);" (assignment_expression "uVar4 = 1 << ((byte)uVar4 & 0x1f)" identifier = (binary_expression "1 << ((byte)uVar4 & 0x1f)" number_literal << (parenthesized_expression "((byte)uVar4 & 0x1f)" ( (binary_expression "(byte)uVar4 & 0x1f" (cast_expression "(byte)uVar4" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) )))) ;) (if_statement "if ((uVar4 & 0x151508) == 0) goto LAB_0001ec89;" if (parenthesized_expression "((uVar4 & 0x151508) == 0)" ( (binary_expression "(uVar4 & 0x151508) == 0" (parenthesized_expression "(uVar4 & 0x151508)" ( (binary_expression "uVar4 & 0x151508" identifier & number_literal) )) == number_literal) )) (goto_statement "goto LAB_0001ec89;" goto statement_identifier ;)) (labeled_statement "LAB_0001eee4:\n            puVar2 = (uint *)&DAT_0002e2c0;" statement_identifier : (expression_statement "puVar2 = (uint *)&DAT_0002e2c0;" (assignment_expression "puVar2 = (uint *)&DAT_0002e2c0" identifier = (cast_expression "(uint *)&DAT_0002e2c0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&DAT_0002e2c0" & identifier))) ;)) (goto_statement "goto LAB_0001eef8;" goto statement_identifier ;) })) (labeled_statement "LAB_0001edd0:\n          if ((DAT_0002e158 & 0x100) != 0) {\n            puts("[findcall]\tbut it\'s a botch");\n          }" statement_identifier : (if_statement "if ((DAT_0002e158 & 0x100) != 0) {\n            puts("[findcall]\tbut it\'s a botch");\n          }" if (parenthesized_expression "((DAT_0002e158 & 0x100) != 0)" ( (binary_expression "(DAT_0002e158 & 0x100) != 0" (parenthesized_expression "(DAT_0002e158 & 0x100)" ( (binary_expression "DAT_0002e158 & 0x100" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n            puts("[findcall]\tbut it\'s a botch");\n          }" { (expression_statement "puts("[findcall]\tbut it\'s a botch");" (call_expression "puts("[findcall]\tbut it\'s a botch")" identifier (argument_list "("[findcall]\tbut it\'s a botch")" ( (string_literal ""[findcall]\tbut it\'s a botch"" " string_content escape_sequence string_content escape_sequence string_content ") ))) ;) }))) (goto_statement "goto LAB_0001ebe0;" goto statement_identifier ;) })) (expression_statement "iVar1 = FUN_0001e9c0();" (assignment_expression "iVar1 = FUN_0001e9c0()" identifier = (call_expression "FUN_0001e9c0()" identifier (argument_list "()" ( )))) ;) (if_statement "if (iVar1 == 0) {\nLAB_0001ec47:\n          local_34 = FUN_0001eac0();\n          local_34 = local_34 + 1;\n          local_38 = local_38 + local_34;\n          uVar4 = FUN_0001e9c0();\nLAB_0001ec6e:\n          if (0x14 < uVar4) goto LAB_0001ebe0;\n          uVar4 = 1 << ((byte)uVar4 & 0x1f);\n          if ((uVar4 & 0x151508) != 0) goto LAB_0001eee4;\nLAB_0001ec89:\n          if ((uVar4 & 0xa8000) == 0) goto LAB_0001edd0;\n          iVar1 = FUN_0001e9c0();\n          if (iVar1 == 0x11) {\n            uVar7 = (**(code **)(*(int *)(DAT_0002e4ec + 4) + 0x38))(local_38 + 1);\n            iVar1 = (int)((ulonglong)uVar7 >> 0x20);\n            bVar6 = 0xfffffffd < (uint)uVar7;\n            uVar4 = (uint)uVar7 + 2;\nLAB_0001efc9:\n            local_2c = uVar4 + param_2;\n            local_28 = iVar1 + (uint)bVar6 + param_3 + (uint)CARRY4(uVar4,param_2);\n          }\n          else {\n            if (iVar1 == 0x13) {\n              uVar7 = (**(code **)(*(int *)(DAT_0002e4ec + 4) + 0x2c))(local_38 + 1);\n              iVar1 = (int)((ulonglong)uVar7 >> 0x20);\n              bVar6 = 0xfffffffb < (uint)uVar7;\n              uVar4 = (uint)uVar7 + 4;\n              goto LAB_0001efc9;\n            }\n            if (iVar1 == 0xf) {\n              uVar4 = (byte)(local_38[1] + 0x80) - 0x7f;\n              local_2c = uVar4 + param_2;\n              local_28 = ((int)uVar4 >> 0x1f) + param_3 + (uint)CARRY4(uVar4,param_2);\n            }\n            else {\n              fwrite("[reladdr] not relative address\n",1,0x1f,*(FILE **)PTR_stderr_0002cfcc);\n              local_2c = param_2;\n              local_28 = param_3;\n            }\n          }\n          iVar1 = FUN_0001c070(local_2c);\n          if ((iVar1 == 0) ||\n             (puVar2 = (uint *)FUN_0001d480(&DAT_0002e520,local_2c,local_28), puVar2 == (uint *)0x0)\n             ) goto LAB_0001edd0;\n          if ((DAT_0002e158 & 0x100) == 0) {\n            if (puVar2[1] != local_28 || *puVar2 != local_2c) goto LAB_0001ebe0;\n          }\n          else {\n            printf("[findcall]\tdestpc 0x%lx",local_2c);\n            printf(" child->name %s",puVar2[4]);\n            printf(" child->addr 0x%lx\n",*puVar2);\n            if (puVar2[1] != local_28 || local_2c != *puVar2) goto LAB_0001edd0;\n          }\nLAB_0001eef8:\n          FUN_00014870(param_1,puVar2,0);\n          iVar1 = FUN_0001eac0();\n          uVar4 = local_34 + iVar1;\n          iVar5 = (int)uVar4 >> 0x1f;\n        }\n        else {\n          uVar4 = 1;\n          iVar5 = 0;\n          if (iVar1 == 0xd) goto LAB_0001ec47;\n        }" if (parenthesized_expression "(iVar1 == 0)" ( (binary_expression "iVar1 == 0" identifier == number_literal) )) (compound_statement "{\nLAB_0001ec47:\n          local_34 = FUN_0001eac0();\n          local_34 = local_34 + 1;\n          local_38 = local_38 + local_34;\n          uVar4 = FUN_0001e9c0();\nLAB_0001ec6e:\n          if (0x14 < uVar4) goto LAB_0001ebe0;\n          uVar4 = 1 << ((byte)uVar4 & 0x1f);\n          if ((uVar4 & 0x151508) != 0) goto LAB_0001eee4;\nLAB_0001ec89:\n          if ((uVar4 & 0xa8000) == 0) goto LAB_0001edd0;\n          iVar1 = FUN_0001e9c0();\n          if (iVar1 == 0x11) {\n            uVar7 = (**(code **)(*(int *)(DAT_0002e4ec + 4) + 0x38))(local_38 + 1);\n            iVar1 = (int)((ulonglong)uVar7 >> 0x20);\n            bVar6 = 0xfffffffd < (uint)uVar7;\n            uVar4 = (uint)uVar7 + 2;\nLAB_0001efc9:\n            local_2c = uVar4 + param_2;\n            local_28 = iVar1 + (uint)bVar6 + param_3 + (uint)CARRY4(uVar4,param_2);\n          }\n          else {\n            if (iVar1 == 0x13) {\n              uVar7 = (**(code **)(*(int *)(DAT_0002e4ec + 4) + 0x2c))(local_38 + 1);\n              iVar1 = (int)((ulonglong)uVar7 >> 0x20);\n              bVar6 = 0xfffffffb < (uint)uVar7;\n              uVar4 = (uint)uVar7 + 4;\n              goto LAB_0001efc9;\n            }\n            if (iVar1 == 0xf) {\n              uVar4 = (byte)(local_38[1] + 0x80) - 0x7f;\n              local_2c = uVar4 + param_2;\n              local_28 = ((int)uVar4 >> 0x1f) + param_3 + (uint)CARRY4(uVar4,param_2);\n            }\n            else {\n              fwrite("[reladdr] not relative address\n",1,0x1f,*(FILE **)PTR_stderr_0002cfcc);\n              local_2c = param_2;\n              local_28 = param_3;\n            }\n          }\n          iVar1 = FUN_0001c070(local_2c);\n          if ((iVar1 == 0) ||\n             (puVar2 = (uint *)FUN_0001d480(&DAT_0002e520,local_2c,local_28), puVar2 == (uint *)0x0)\n             ) goto LAB_0001edd0;\n          if ((DAT_0002e158 & 0x100) == 0) {\n            if (puVar2[1] != local_28 || *puVar2 != local_2c) goto LAB_0001ebe0;\n          }\n          else {\n            printf("[findcall]\tdestpc 0x%lx",local_2c);\n            printf(" child->name %s",puVar2[4]);\n            printf(" child->addr 0x%lx\n",*puVar2);\n            if (puVar2[1] != local_28 || local_2c != *puVar2) goto LAB_0001edd0;\n          }\nLAB_0001eef8:\n          FUN_00014870(param_1,puVar2,0);\n          iVar1 = FUN_0001eac0();\n          uVar4 = local_34 + iVar1;\n          iVar5 = (int)uVar4 >> 0x1f;\n        }" { (labeled_statement "LAB_0001ec47:\n          local_34 = FUN_0001eac0();" statement_identifier : (expression_statement "local_34 = FUN_0001eac0();" (assignment_expression "local_34 = FUN_0001eac0()" identifier = (call_expression "FUN_0001eac0()" identifier (argument_list "()" ( )))) ;)) (expression_statement "local_34 = local_34 + 1;" (assignment_expression "local_34 = local_34 + 1" identifier = (binary_expression "local_34 + 1" identifier + number_literal)) ;) (expression_statement "local_38 = local_38 + local_34;" (assignment_expression "local_38 = local_38 + local_34" identifier = (binary_expression "local_38 + local_34" identifier + identifier)) ;) (expression_statement "uVar4 = FUN_0001e9c0();" (assignment_expression "uVar4 = FUN_0001e9c0()" identifier = (call_expression "FUN_0001e9c0()" identifier (argument_list "()" ( )))) ;) (labeled_statement "LAB_0001ec6e:\n          if (0x14 < uVar4) goto LAB_0001ebe0;" statement_identifier : (if_statement "if (0x14 < uVar4) goto LAB_0001ebe0;" if (parenthesized_expression "(0x14 < uVar4)" ( (binary_expression "0x14 < uVar4" number_literal < identifier) )) (goto_statement "goto LAB_0001ebe0;" goto statement_identifier ;))) (expression_statement "uVar4 = 1 << ((byte)uVar4 & 0x1f);" (assignment_expression "uVar4 = 1 << ((byte)uVar4 & 0x1f)" identifier = (binary_expression "1 << ((byte)uVar4 & 0x1f)" number_literal << (parenthesized_expression "((byte)uVar4 & 0x1f)" ( (binary_expression "(byte)uVar4 & 0x1f" (cast_expression "(byte)uVar4" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) )))) ;) (if_statement "if ((uVar4 & 0x151508) != 0) goto LAB_0001eee4;" if (parenthesized_expression "((uVar4 & 0x151508) != 0)" ( (binary_expression "(uVar4 & 0x151508) != 0" (parenthesized_expression "(uVar4 & 0x151508)" ( (binary_expression "uVar4 & 0x151508" identifier & number_literal) )) != number_literal) )) (goto_statement "goto LAB_0001eee4;" goto statement_identifier ;)) (labeled_statement "LAB_0001ec89:\n          if ((uVar4 & 0xa8000) == 0) goto LAB_0001edd0;" statement_identifier : (if_statement "if ((uVar4 & 0xa8000) == 0) goto LAB_0001edd0;" if (parenthesized_expression "((uVar4 & 0xa8000) == 0)" ( (binary_expression "(uVar4 & 0xa8000) == 0" (parenthesized_expression "(uVar4 & 0xa8000)" ( (binary_expression "uVar4 & 0xa8000" identifier & number_literal) )) == number_literal) )) (goto_statement "goto LAB_0001edd0;" goto statement_identifier ;))) (expression_statement "iVar1 = FUN_0001e9c0();" (assignment_expression "iVar1 = FUN_0001e9c0()" identifier = (call_expression "FUN_0001e9c0()" identifier (argument_list "()" ( )))) ;) (if_statement "if (iVar1 == 0x11) {\n            uVar7 = (**(code **)(*(int *)(DAT_0002e4ec + 4) + 0x38))(local_38 + 1);\n            iVar1 = (int)((ulonglong)uVar7 >> 0x20);\n            bVar6 = 0xfffffffd < (uint)uVar7;\n            uVar4 = (uint)uVar7 + 2;\nLAB_0001efc9:\n            local_2c = uVar4 + param_2;\n            local_28 = iVar1 + (uint)bVar6 + param_3 + (uint)CARRY4(uVar4,param_2);\n          }\n          else {\n            if (iVar1 == 0x13) {\n              uVar7 = (**(code **)(*(int *)(DAT_0002e4ec + 4) + 0x2c))(local_38 + 1);\n              iVar1 = (int)((ulonglong)uVar7 >> 0x20);\n              bVar6 = 0xfffffffb < (uint)uVar7;\n              uVar4 = (uint)uVar7 + 4;\n              goto LAB_0001efc9;\n            }\n            if (iVar1 == 0xf) {\n              uVar4 = (byte)(local_38[1] + 0x80) - 0x7f;\n              local_2c = uVar4 + param_2;\n              local_28 = ((int)uVar4 >> 0x1f) + param_3 + (uint)CARRY4(uVar4,param_2);\n            }\n            else {\n              fwrite("[reladdr] not relative address\n",1,0x1f,*(FILE **)PTR_stderr_0002cfcc);\n              local_2c = param_2;\n              local_28 = param_3;\n            }\n          }" if (parenthesized_expression "(iVar1 == 0x11)" ( (binary_expression "iVar1 == 0x11" identifier == number_literal) )) (compound_statement "{\n            uVar7 = (**(code **)(*(int *)(DAT_0002e4ec + 4) + 0x38))(local_38 + 1);\n            iVar1 = (int)((ulonglong)uVar7 >> 0x20);\n            bVar6 = 0xfffffffd < (uint)uVar7;\n            uVar4 = (uint)uVar7 + 2;\nLAB_0001efc9:\n            local_2c = uVar4 + param_2;\n            local_28 = iVar1 + (uint)bVar6 + param_3 + (uint)CARRY4(uVar4,param_2);\n          }" { (expression_statement "uVar7 = (**(code **)(*(int *)(DAT_0002e4ec + 4) + 0x38))(local_38 + 1);" (assignment_expression "uVar7 = (**(code **)(*(int *)(DAT_0002e4ec + 4) + 0x38))(local_38 + 1)" identifier = (call_expression "(**(code **)(*(int *)(DAT_0002e4ec + 4) + 0x38))(local_38 + 1)" (parenthesized_expression "(**(code **)(*(int *)(DAT_0002e4ec + 4) + 0x38))" ( (pointer_expression "**(code **)(*(int *)(DAT_0002e4ec + 4) + 0x38)" * (pointer_expression "*(code **)(*(int *)(DAT_0002e4ec + 4) + 0x38)" * (cast_expression "(code **)(*(int *)(DAT_0002e4ec + 4) + 0x38)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)(DAT_0002e4ec + 4) + 0x38)" ( (binary_expression "*(int *)(DAT_0002e4ec + 4) + 0x38" (pointer_expression "*(int *)(DAT_0002e4ec + 4)" * (cast_expression "(int *)(DAT_0002e4ec + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(DAT_0002e4ec + 4)" ( (binary_expression "DAT_0002e4ec + 4" identifier + number_literal) )))) + number_literal) ))))) )) (argument_list "(local_38 + 1)" ( (binary_expression "local_38 + 1" identifier + number_literal) )))) ;) (expression_statement "iVar1 = (int)((ulonglong)uVar7 >> 0x20);" (assignment_expression "iVar1 = (int)((ulonglong)uVar7 >> 0x20)" identifier = (cast_expression "(int)((ulonglong)uVar7 >> 0x20)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((ulonglong)uVar7 >> 0x20)" ( (binary_expression "(ulonglong)uVar7 >> 0x20" (cast_expression "(ulonglong)uVar7" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "bVar6 = 0xfffffffd < (uint)uVar7;" (assignment_expression "bVar6 = 0xfffffffd < (uint)uVar7" identifier = (binary_expression "0xfffffffd < (uint)uVar7" number_literal < (cast_expression "(uint)uVar7" ( (type_descriptor "uint" type_identifier) ) identifier))) ;) (expression_statement "uVar4 = (uint)uVar7 + 2;" (assignment_expression "uVar4 = (uint)uVar7 + 2" identifier = (binary_expression "(uint)uVar7 + 2" (cast_expression "(uint)uVar7" ( (type_descriptor "uint" type_identifier) ) identifier) + number_literal)) ;) (labeled_statement "LAB_0001efc9:\n            local_2c = uVar4 + param_2;" statement_identifier : (expression_statement "local_2c = uVar4 + param_2;" (assignment_expression "local_2c = uVar4 + param_2" identifier = (binary_expression "uVar4 + param_2" identifier + identifier)) ;)) (expression_statement "local_28 = iVar1 + (uint)bVar6 + param_3 + (uint)CARRY4(uVar4,param_2);" (assignment_expression "local_28 = iVar1 + (uint)bVar6 + param_3 + (uint)CARRY4(uVar4,param_2)" identifier = (binary_expression "iVar1 + (uint)bVar6 + param_3 + (uint)CARRY4(uVar4,param_2)" (binary_expression "iVar1 + (uint)bVar6 + param_3" (binary_expression "iVar1 + (uint)bVar6" identifier + (cast_expression "(uint)bVar6" ( (type_descriptor "uint" type_identifier) ) identifier)) + identifier) + (cast_expression "(uint)CARRY4(uVar4,param_2)" ( (type_descriptor "uint" type_identifier) ) (call_expression "CARRY4(uVar4,param_2)" identifier (argument_list "(uVar4,param_2)" ( identifier , identifier )))))) ;) }) (else_clause "else {\n            if (iVar1 == 0x13) {\n              uVar7 = (**(code **)(*(int *)(DAT_0002e4ec + 4) + 0x2c))(local_38 + 1);\n              iVar1 = (int)((ulonglong)uVar7 >> 0x20);\n              bVar6 = 0xfffffffb < (uint)uVar7;\n              uVar4 = (uint)uVar7 + 4;\n              goto LAB_0001efc9;\n            }\n            if (iVar1 == 0xf) {\n              uVar4 = (byte)(local_38[1] + 0x80) - 0x7f;\n              local_2c = uVar4 + param_2;\n              local_28 = ((int)uVar4 >> 0x1f) + param_3 + (uint)CARRY4(uVar4,param_2);\n            }\n            else {\n              fwrite("[reladdr] not relative address\n",1,0x1f,*(FILE **)PTR_stderr_0002cfcc);\n              local_2c = param_2;\n              local_28 = param_3;\n            }\n          }" else (compound_statement "{\n            if (iVar1 == 0x13) {\n              uVar7 = (**(code **)(*(int *)(DAT_0002e4ec + 4) + 0x2c))(local_38 + 1);\n              iVar1 = (int)((ulonglong)uVar7 >> 0x20);\n              bVar6 = 0xfffffffb < (uint)uVar7;\n              uVar4 = (uint)uVar7 + 4;\n              goto LAB_0001efc9;\n            }\n            if (iVar1 == 0xf) {\n              uVar4 = (byte)(local_38[1] + 0x80) - 0x7f;\n              local_2c = uVar4 + param_2;\n              local_28 = ((int)uVar4 >> 0x1f) + param_3 + (uint)CARRY4(uVar4,param_2);\n            }\n            else {\n              fwrite("[reladdr] not relative address\n",1,0x1f,*(FILE **)PTR_stderr_0002cfcc);\n              local_2c = param_2;\n              local_28 = param_3;\n            }\n          }" { (if_statement "if (iVar1 == 0x13) {\n              uVar7 = (**(code **)(*(int *)(DAT_0002e4ec + 4) + 0x2c))(local_38 + 1);\n              iVar1 = (int)((ulonglong)uVar7 >> 0x20);\n              bVar6 = 0xfffffffb < (uint)uVar7;\n              uVar4 = (uint)uVar7 + 4;\n              goto LAB_0001efc9;\n            }" if (parenthesized_expression "(iVar1 == 0x13)" ( (binary_expression "iVar1 == 0x13" identifier == number_literal) )) (compound_statement "{\n              uVar7 = (**(code **)(*(int *)(DAT_0002e4ec + 4) + 0x2c))(local_38 + 1);\n              iVar1 = (int)((ulonglong)uVar7 >> 0x20);\n              bVar6 = 0xfffffffb < (uint)uVar7;\n              uVar4 = (uint)uVar7 + 4;\n              goto LAB_0001efc9;\n            }" { (expression_statement "uVar7 = (**(code **)(*(int *)(DAT_0002e4ec + 4) + 0x2c))(local_38 + 1);" (assignment_expression "uVar7 = (**(code **)(*(int *)(DAT_0002e4ec + 4) + 0x2c))(local_38 + 1)" identifier = (call_expression "(**(code **)(*(int *)(DAT_0002e4ec + 4) + 0x2c))(local_38 + 1)" (parenthesized_expression "(**(code **)(*(int *)(DAT_0002e4ec + 4) + 0x2c))" ( (pointer_expression "**(code **)(*(int *)(DAT_0002e4ec + 4) + 0x2c)" * (pointer_expression "*(code **)(*(int *)(DAT_0002e4ec + 4) + 0x2c)" * (cast_expression "(code **)(*(int *)(DAT_0002e4ec + 4) + 0x2c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)(DAT_0002e4ec + 4) + 0x2c)" ( (binary_expression "*(int *)(DAT_0002e4ec + 4) + 0x2c" (pointer_expression "*(int *)(DAT_0002e4ec + 4)" * (cast_expression "(int *)(DAT_0002e4ec + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(DAT_0002e4ec + 4)" ( (binary_expression "DAT_0002e4ec + 4" identifier + number_literal) )))) + number_literal) ))))) )) (argument_list "(local_38 + 1)" ( (binary_expression "local_38 + 1" identifier + number_literal) )))) ;) (expression_statement "iVar1 = (int)((ulonglong)uVar7 >> 0x20);" (assignment_expression "iVar1 = (int)((ulonglong)uVar7 >> 0x20)" identifier = (cast_expression "(int)((ulonglong)uVar7 >> 0x20)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((ulonglong)uVar7 >> 0x20)" ( (binary_expression "(ulonglong)uVar7 >> 0x20" (cast_expression "(ulonglong)uVar7" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "bVar6 = 0xfffffffb < (uint)uVar7;" (assignment_expression "bVar6 = 0xfffffffb < (uint)uVar7" identifier = (binary_expression "0xfffffffb < (uint)uVar7" number_literal < (cast_expression "(uint)uVar7" ( (type_descriptor "uint" type_identifier) ) identifier))) ;) (expression_statement "uVar4 = (uint)uVar7 + 4;" (assignment_expression "uVar4 = (uint)uVar7 + 4" identifier = (binary_expression "(uint)uVar7 + 4" (cast_expression "(uint)uVar7" ( (type_descriptor "uint" type_identifier) ) identifier) + number_literal)) ;) (goto_statement "goto LAB_0001efc9;" goto statement_identifier ;) })) (if_statement "if (iVar1 == 0xf) {\n              uVar4 = (byte)(local_38[1] + 0x80) - 0x7f;\n              local_2c = uVar4 + param_2;\n              local_28 = ((int)uVar4 >> 0x1f) + param_3 + (uint)CARRY4(uVar4,param_2);\n            }\n            else {\n              fwrite("[reladdr] not relative address\n",1,0x1f,*(FILE **)PTR_stderr_0002cfcc);\n              local_2c = param_2;\n              local_28 = param_3;\n            }" if (parenthesized_expression "(iVar1 == 0xf)" ( (binary_expression "iVar1 == 0xf" identifier == number_literal) )) (compound_statement "{\n              uVar4 = (byte)(local_38[1] + 0x80) - 0x7f;\n              local_2c = uVar4 + param_2;\n              local_28 = ((int)uVar4 >> 0x1f) + param_3 + (uint)CARRY4(uVar4,param_2);\n            }" { (expression_statement "uVar4 = (byte)(local_38[1] + 0x80) - 0x7f;" (assignment_expression "uVar4 = (byte)(local_38[1] + 0x80) - 0x7f" identifier = (binary_expression "(byte)(local_38[1] + 0x80) - 0x7f" (call_expression "(byte)(local_38[1] + 0x80)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(local_38[1] + 0x80)" ( (binary_expression "local_38[1] + 0x80" (subscript_expression "local_38[1]" identifier [ number_literal ]) + number_literal) ))) - number_literal)) ;) (expression_statement "local_2c = uVar4 + param_2;" (assignment_expression "local_2c = uVar4 + param_2" identifier = (binary_expression "uVar4 + param_2" identifier + identifier)) ;) (expression_statement "local_28 = ((int)uVar4 >> 0x1f) + param_3 + (uint)CARRY4(uVar4,param_2);" (assignment_expression "local_28 = ((int)uVar4 >> 0x1f) + param_3 + (uint)CARRY4(uVar4,param_2)" identifier = (binary_expression "((int)uVar4 >> 0x1f) + param_3 + (uint)CARRY4(uVar4,param_2)" (binary_expression "((int)uVar4 >> 0x1f) + param_3" (parenthesized_expression "((int)uVar4 >> 0x1f)" ( (binary_expression "(int)uVar4 >> 0x1f" (cast_expression "(int)uVar4" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal) )) + identifier) + (cast_expression "(uint)CARRY4(uVar4,param_2)" ( (type_descriptor "uint" type_identifier) ) (call_expression "CARRY4(uVar4,param_2)" identifier (argument_list "(uVar4,param_2)" ( identifier , identifier )))))) ;) }) (else_clause "else {\n              fwrite("[reladdr] not relative address\n",1,0x1f,*(FILE **)PTR_stderr_0002cfcc);\n              local_2c = param_2;\n              local_28 = param_3;\n            }" else (compound_statement "{\n              fwrite("[reladdr] not relative address\n",1,0x1f,*(FILE **)PTR_stderr_0002cfcc);\n              local_2c = param_2;\n              local_28 = param_3;\n            }" { (expression_statement "fwrite("[reladdr] not relative address\n",1,0x1f,*(FILE **)PTR_stderr_0002cfcc);" (call_expression "fwrite("[reladdr] not relative address\n",1,0x1f,*(FILE **)PTR_stderr_0002cfcc)" identifier (argument_list "("[reladdr] not relative address\n",1,0x1f,*(FILE **)PTR_stderr_0002cfcc)" ( (string_literal ""[reladdr] not relative address\n"" " string_content escape_sequence ") , number_literal , number_literal , (pointer_expression "*(FILE **)PTR_stderr_0002cfcc" * (cast_expression "(FILE **)PTR_stderr_0002cfcc" ( (type_descriptor "FILE **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier)) ))) ;) (expression_statement "local_2c = param_2;" (assignment_expression "local_2c = param_2" identifier = identifier) ;) (expression_statement "local_28 = param_3;" (assignment_expression "local_28 = param_3" identifier = identifier) ;) }))) }))) (expression_statement "iVar1 = FUN_0001c070(local_2c);" (assignment_expression "iVar1 = FUN_0001c070(local_2c)" identifier = (call_expression "FUN_0001c070(local_2c)" identifier (argument_list "(local_2c)" ( identifier )))) ;) (if_statement "if ((iVar1 == 0) ||\n             (puVar2 = (uint *)FUN_0001d480(&DAT_0002e520,local_2c,local_28), puVar2 == (uint *)0x0)\n             ) goto LAB_0001edd0;" if (parenthesized_expression "((iVar1 == 0) ||\n             (puVar2 = (uint *)FUN_0001d480(&DAT_0002e520,local_2c,local_28), puVar2 == (uint *)0x0)\n             )" ( (binary_expression "(iVar1 == 0) ||\n             (puVar2 = (uint *)FUN_0001d480(&DAT_0002e520,local_2c,local_28), puVar2 == (uint *)0x0)" (parenthesized_expression "(iVar1 == 0)" ( (binary_expression "iVar1 == 0" identifier == number_literal) )) || (parenthesized_expression "(puVar2 = (uint *)FUN_0001d480(&DAT_0002e520,local_2c,local_28), puVar2 == (uint *)0x0)" ( (comma_expression "puVar2 = (uint *)FUN_0001d480(&DAT_0002e520,local_2c,local_28), puVar2 == (uint *)0x0" (assignment_expression "puVar2 = (uint *)FUN_0001d480(&DAT_0002e520,local_2c,local_28)" identifier = (cast_expression "(uint *)FUN_0001d480(&DAT_0002e520,local_2c,local_28)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_0001d480(&DAT_0002e520,local_2c,local_28)" identifier (argument_list "(&DAT_0002e520,local_2c,local_28)" ( (pointer_expression "&DAT_0002e520" & identifier) , identifier , identifier ))))) , (binary_expression "puVar2 == (uint *)0x0" identifier == (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) ))) )) (goto_statement "goto LAB_0001edd0;" goto statement_identifier ;)) (if_statement "if ((DAT_0002e158 & 0x100) == 0) {\n            if (puVar2[1] != local_28 || *puVar2 != local_2c) goto LAB_0001ebe0;\n          }\n          else {\n            printf("[findcall]\tdestpc 0x%lx",local_2c);\n            printf(" child->name %s",puVar2[4]);\n            printf(" child->addr 0x%lx\n",*puVar2);\n            if (puVar2[1] != local_28 || local_2c != *puVar2) goto LAB_0001edd0;\n          }" if (parenthesized_expression "((DAT_0002e158 & 0x100) == 0)" ( (binary_expression "(DAT_0002e158 & 0x100) == 0" (parenthesized_expression "(DAT_0002e158 & 0x100)" ( (binary_expression "DAT_0002e158 & 0x100" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n            if (puVar2[1] != local_28 || *puVar2 != local_2c) goto LAB_0001ebe0;\n          }" { (if_statement "if (puVar2[1] != local_28 || *puVar2 != local_2c) goto LAB_0001ebe0;" if (parenthesized_expression "(puVar2[1] != local_28 || *puVar2 != local_2c)" ( (binary_expression "puVar2[1] != local_28 || *puVar2 != local_2c" (binary_expression "puVar2[1] != local_28" (subscript_expression "puVar2[1]" identifier [ number_literal ]) != identifier) || (binary_expression "*puVar2 != local_2c" (pointer_expression "*puVar2" * identifier) != identifier)) )) (goto_statement "goto LAB_0001ebe0;" goto statement_identifier ;)) }) (else_clause "else {\n            printf("[findcall]\tdestpc 0x%lx",local_2c);\n            printf(" child->name %s",puVar2[4]);\n            printf(" child->addr 0x%lx\n",*puVar2);\n            if (puVar2[1] != local_28 || local_2c != *puVar2) goto LAB_0001edd0;\n          }" else (compound_statement "{\n            printf("[findcall]\tdestpc 0x%lx",local_2c);\n            printf(" child->name %s",puVar2[4]);\n            printf(" child->addr 0x%lx\n",*puVar2);\n            if (puVar2[1] != local_28 || local_2c != *puVar2) goto LAB_0001edd0;\n          }" { (expression_statement "printf("[findcall]\tdestpc 0x%lx",local_2c);" (call_expression "printf("[findcall]\tdestpc 0x%lx",local_2c)" identifier (argument_list "("[findcall]\tdestpc 0x%lx",local_2c)" ( (string_literal ""[findcall]\tdestpc 0x%lx"" " string_content escape_sequence string_content ") , identifier ))) ;) (expression_statement "printf(" child->name %s",puVar2[4]);" (call_expression "printf(" child->name %s",puVar2[4])" identifier (argument_list "(" child->name %s",puVar2[4])" ( (string_literal "" child->name %s"" " string_content ") , (subscript_expression "puVar2[4]" identifier [ number_literal ]) ))) ;) (expression_statement "printf(" child->addr 0x%lx\n",*puVar2);" (call_expression "printf(" child->addr 0x%lx\n",*puVar2)" identifier (argument_list "(" child->addr 0x%lx\n",*puVar2)" ( (string_literal "" child->addr 0x%lx\n"" " string_content escape_sequence ") , (pointer_expression "*puVar2" * identifier) ))) ;) (if_statement "if (puVar2[1] != local_28 || local_2c != *puVar2) goto LAB_0001edd0;" if (parenthesized_expression "(puVar2[1] != local_28 || local_2c != *puVar2)" ( (binary_expression "puVar2[1] != local_28 || local_2c != *puVar2" (binary_expression "puVar2[1] != local_28" (subscript_expression "puVar2[1]" identifier [ number_literal ]) != identifier) || (binary_expression "local_2c != *puVar2" identifier != (pointer_expression "*puVar2" * identifier))) )) (goto_statement "goto LAB_0001edd0;" goto statement_identifier ;)) }))) (labeled_statement "LAB_0001eef8:\n          FUN_00014870(param_1,puVar2,0);" statement_identifier : (expression_statement "FUN_00014870(param_1,puVar2,0);" (call_expression "FUN_00014870(param_1,puVar2,0)" identifier (argument_list "(param_1,puVar2,0)" ( identifier , identifier , number_literal ))) ;)) (expression_statement "iVar1 = FUN_0001eac0();" (assignment_expression "iVar1 = FUN_0001eac0()" identifier = (call_expression "FUN_0001eac0()" identifier (argument_list "()" ( )))) ;) (expression_statement "uVar4 = local_34 + iVar1;" (assignment_expression "uVar4 = local_34 + iVar1" identifier = (binary_expression "local_34 + iVar1" identifier + identifier)) ;) (expression_statement "iVar5 = (int)uVar4 >> 0x1f;" (assignment_expression "iVar5 = (int)uVar4 >> 0x1f" identifier = (binary_expression "(int)uVar4 >> 0x1f" (cast_expression "(int)uVar4" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal)) ;) }) (else_clause "else {\n          uVar4 = 1;\n          iVar5 = 0;\n          if (iVar1 == 0xd) goto LAB_0001ec47;\n        }" else (compound_statement "{\n          uVar4 = 1;\n          iVar5 = 0;\n          if (iVar1 == 0xd) goto LAB_0001ec47;\n        }" { (expression_statement "uVar4 = 1;" (assignment_expression "uVar4 = 1" identifier = number_literal) ;) (expression_statement "iVar5 = 0;" (assignment_expression "iVar5 = 0" identifier = number_literal) ;) (if_statement "if (iVar1 == 0xd) goto LAB_0001ec47;" if (parenthesized_expression "(iVar1 == 0xd)" ( (binary_expression "iVar1 == 0xd" identifier == number_literal) )) (goto_statement "goto LAB_0001ec47;" goto statement_identifier ;)) }))) }) (else_clause "else {\nLAB_0001ebe0:\n        uVar4 = 1;\n        iVar5 = 0;\n      }" else (compound_statement "{\nLAB_0001ebe0:\n        uVar4 = 1;\n        iVar5 = 0;\n      }" { (labeled_statement "LAB_0001ebe0:\n        uVar4 = 1;" statement_identifier : (expression_statement "uVar4 = 1;" (assignment_expression "uVar4 = 1" identifier = number_literal) ;)) (expression_statement "iVar5 = 0;" (assignment_expression "iVar5 = 0" identifier = number_literal) ;) }))) (expression_statement "bVar6 = CARRY4(param_2,uVar4);" (assignment_expression "bVar6 = CARRY4(param_2,uVar4)" identifier = (call_expression "CARRY4(param_2,uVar4)" identifier (argument_list "(param_2,uVar4)" ( identifier , identifier )))) ;) (expression_statement "param_2 = param_2 + uVar4;" (assignment_expression "param_2 = param_2 + uVar4" identifier = (binary_expression "param_2 + uVar4" identifier + identifier)) ;) (expression_statement "param_3 = param_3 + iVar5 + (uint)bVar6;" (assignment_expression "param_3 = param_3 + iVar5 + (uint)bVar6" identifier = (binary_expression "param_3 + iVar5 + (uint)bVar6" (binary_expression "param_3 + iVar5" identifier + identifier) + (cast_expression "(uint)bVar6" ( (type_descriptor "uint" type_identifier) ) identifier))) ;) (expression_statement "iVar1 = (param_3 - param_5) - (uint)(param_2 < param_4);" (assignment_expression "iVar1 = (param_3 - param_5) - (uint)(param_2 < param_4)" identifier = (binary_expression "(param_3 - param_5) - (uint)(param_2 < param_4)" (parenthesized_expression "(param_3 - param_5)" ( (binary_expression "param_3 - param_5" identifier - identifier) )) - (call_expression "(uint)(param_2 < param_4)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(param_2 < param_4)" ( (binary_expression "param_2 < param_4" identifier < identifier) ))))) ;) }) while (parenthesized_expression "(param_3 < param_5 || param_3 - param_5 < (uint)(param_2 < param_4))" ( (binary_expression "param_3 < param_5 || param_3 - param_5 < (uint)(param_2 < param_4)" (binary_expression "param_3 < param_5" identifier < identifier) || (binary_expression "param_3 - param_5 < (uint)(param_2 < param_4)" (binary_expression "param_3 - param_5" identifier - identifier) < (call_expression "(uint)(param_2 < param_4)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(param_2 < param_4)" ( (binary_expression "param_2 < param_4" identifier < identifier) ))))) )) ;) })) (return_statement "return iVar1;" return identifier ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (call_expression IDENT (argument_list ( (pointer_expression & IDENT) ))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression & IDENT)) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) != LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content escape_sequence ") , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , IDENT , IDENT ))) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression IDENT - IDENT) )) - (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT < IDENT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT < IDENT) || (binary_expression (binary_expression IDENT - IDENT) < (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT < IDENT) ))))) )) (compound_statement { (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT - (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) + IDENT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) != LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content escape_sequence string_content ") , IDENT ))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == LIT) )) || (parenthesized_expression ( (binary_expression IDENT == LIT) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) == LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (expression_statement (call_expression IDENT (argument_list ( (string_literal " escape_sequence string_content ") , IDENT ))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (expression_statement (call_expression IDENT (argument_list ( (string_literal " escape_sequence string_content escape_sequence ") , IDENT ))) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (binary_expression LIT << (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) & LIT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) == LIT) )) (goto_statement goto statement_identifier ;)) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression & IDENT))) ;)) (goto_statement goto statement_identifier ;) })) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) != LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content escape_sequence string_content escape_sequence string_content ") ))) ;) }))) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (goto_statement goto statement_identifier ;))) (expression_statement (assignment_expression IDENT = (binary_expression LIT << (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) & LIT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) != LIT) )) (goto_statement goto statement_identifier ;)) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) == LIT) )) (goto_statement goto statement_identifier ;))) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) ))))) )) (argument_list ( (binary_expression IDENT + LIT) )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression LIT < (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT)) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;)) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (binary_expression IDENT + (cast_expression ( (type_descriptor TYPE) ) IDENT)) + IDENT) + (cast_expression ( (type_descriptor TYPE) ) (call_expression IDENT (argument_list ( IDENT , IDENT )))))) ;) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) ))))) )) (argument_list ( (binary_expression IDENT + LIT) )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression LIT < (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT)) ;) (goto_statement goto statement_identifier ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (subscript_expression IDENT [ LIT ]) + LIT) ))) - LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) )) + IDENT) + (cast_expression ( (type_descriptor TYPE) ) (call_expression IDENT (argument_list ( IDENT , IDENT )))))) ;) }) (else_clause else (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content escape_sequence ") , LIT , LIT , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) IDENT)) ))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }))) }))) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == LIT) )) || (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( (pointer_expression & IDENT) , IDENT , IDENT ))))) , (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT))) ))) )) (goto_statement goto statement_identifier ;)) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (binary_expression (subscript_expression IDENT [ LIT ]) != IDENT) || (binary_expression (pointer_expression * IDENT) != IDENT)) )) (goto_statement goto statement_identifier ;)) }) (else_clause else (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content escape_sequence string_content ") , IDENT ))) ;) (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") , (subscript_expression IDENT [ LIT ]) ))) ;) (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content escape_sequence ") , (pointer_expression * IDENT) ))) ;) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression (subscript_expression IDENT [ LIT ]) != IDENT) || (binary_expression IDENT != (pointer_expression * IDENT))) )) (goto_statement goto statement_identifier ;)) }))) (labeled_statement statement_identifier : (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , LIT ))) ;)) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT)) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (goto_statement goto statement_identifier ;)) }))) }) (else_clause else (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = LIT) ;)) (expression_statement (assignment_expression IDENT = LIT) ;) }))) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + IDENT) + (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression IDENT - IDENT) )) - (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT < IDENT) ))))) ;) }) while (parenthesized_expression ( (binary_expression (binary_expression IDENT < IDENT) || (binary_expression (binary_expression IDENT - IDENT) < (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT < IDENT) ))))) )) ;) })) (return_statement return IDENT ;) })))
(function_definition "int FUN_0001eb40(int param_1,uint param_2,uint param_3,uint param_4,uint param_5)\n\n{\n  int iVar1;\n  uint *puVar2;\n  undefined4 uVar3;\n  uint uVar4;\n  int iVar5;\n  bool bVar6;\n  undefined8 uVar7;\n  char *local_38;\n  int local_34;\n  uint local_2c;\n  uint local_28;\n  \n  if (DAT_0002e2a0 == 0) {\n    DAT_0002e2a0 = 1;\n    FUN_0001ce40(&DAT_0002e2c0);\n    DAT_0002e390 = 0x3ff0000000000000;\n    DAT_0002e3ac = &DAT_0002e2c0;\n  }\n  if ((DAT_0002e158 & 0x100) != 0) {\n    printf("[findcall] %s: 0x%lx to 0x%lx\n",*(undefined4 *)(param_1 + 0x10),param_2,param_4);\n  }\n  iVar1 = (param_3 - param_5) - (uint)(param_2 < param_4);\n  if (param_3 < param_5 || param_3 - param_5 < (uint)(param_2 < param_4)) {\n    do {\n      local_38 = (char *)((param_2 - *(int *)(DAT_0002e4fc + 0x1c)) + DAT_0002e4f0);\n      if (*local_38 == -5) {\n        if ((DAT_0002e158 & 0x100) != 0) {\n          printf("[findcall]\t0x%lx:calls",param_2);\n          iVar1 = FUN_0001e9c0();\n          if ((iVar1 == 0) || (iVar1 == 0xd)) {\n            local_34 = FUN_0001eac0();\n            local_34 = local_34 + 1;\n            local_38 = local_38 + local_34;\n            uVar4 = FUN_0001e9c0();\n            if ((DAT_0002e158 & 0x100) == 0) goto LAB_0001ec6e;\n            uVar3 = FUN_0001e850();\n            printf("\tfirst operand is %s",uVar3);\n            uVar3 = FUN_0001e850();\n            printf("\tsecond operand is %s\n",uVar3);\n            if (0x14 < uVar4) goto LAB_0001edd0;\n            uVar4 = 1 << ((byte)uVar4 & 0x1f);\n            if ((uVar4 & 0x151508) == 0) goto LAB_0001ec89;\nLAB_0001eee4:\n            puVar2 = (uint *)&DAT_0002e2c0;\n            goto LAB_0001eef8;\n          }\nLAB_0001edd0:\n          if ((DAT_0002e158 & 0x100) != 0) {\n            puts("[findcall]\tbut it\'s a botch");\n          }\n          goto LAB_0001ebe0;\n        }\n        iVar1 = FUN_0001e9c0();\n        if (iVar1 == 0) {\nLAB_0001ec47:\n          local_34 = FUN_0001eac0();\n          local_34 = local_34 + 1;\n          local_38 = local_38 + local_34;\n          uVar4 = FUN_0001e9c0();\nLAB_0001ec6e:\n          if (0x14 < uVar4) goto LAB_0001ebe0;\n          uVar4 = 1 << ((byte)uVar4 & 0x1f);\n          if ((uVar4 & 0x151508) != 0) goto LAB_0001eee4;\nLAB_0001ec89:\n          if ((uVar4 & 0xa8000) == 0) goto LAB_0001edd0;\n          iVar1 = FUN_0001e9c0();\n          if (iVar1 == 0x11) {\n            uVar7 = (**(code **)(*(int *)(DAT_0002e4ec + 4) + 0x38))(local_38 + 1);\n            iVar1 = (int)((ulonglong)uVar7 >> 0x20);\n            bVar6 = 0xfffffffd < (uint)uVar7;\n            uVar4 = (uint)uVar7 + 2;\nLAB_0001efc9:\n            local_2c = uVar4 + param_2;\n            local_28 = iVar1 + (uint)bVar6 + param_3 + (uint)CARRY4(uVar4,param_2);\n          }\n          else {\n            if (iVar1 == 0x13) {\n              uVar7 = (**(code **)(*(int *)(DAT_0002e4ec + 4) + 0x2c))(local_38 + 1);\n              iVar1 = (int)((ulonglong)uVar7 >> 0x20);\n              bVar6 = 0xfffffffb < (uint)uVar7;\n              uVar4 = (uint)uVar7 + 4;\n              goto LAB_0001efc9;\n            }\n            if (iVar1 == 0xf) {\n              uVar4 = (byte)(local_38[1] + 0x80) - 0x7f;\n              local_2c = uVar4 + param_2;\n              local_28 = ((int)uVar4 >> 0x1f) + param_3 + (uint)CARRY4(uVar4,param_2);\n            }\n            else {\n              fwrite("[reladdr] not relative address\n",1,0x1f,*(FILE **)PTR_stderr_0002cfcc);\n              local_2c = param_2;\n              local_28 = param_3;\n            }\n          }\n          iVar1 = FUN_0001c070(local_2c);\n          if ((iVar1 == 0) ||\n             (puVar2 = (uint *)FUN_0001d480(&DAT_0002e520,local_2c,local_28), puVar2 == (uint *)0x0)\n             ) goto LAB_0001edd0;\n          if ((DAT_0002e158 & 0x100) == 0) {\n            if (puVar2[1] != local_28 || *puVar2 != local_2c) goto LAB_0001ebe0;\n          }\n          else {\n            printf("[findcall]\tdestpc 0x%lx",local_2c);\n            printf(" child->name %s",puVar2[4]);\n            printf(" child->addr 0x%lx\n",*puVar2);\n            if (puVar2[1] != local_28 || local_2c != *puVar2) goto LAB_0001edd0;\n          }\nLAB_0001eef8:\n          FUN_00014870(param_1,puVar2,0);\n          iVar1 = FUN_0001eac0();\n          uVar4 = local_34 + iVar1;\n          iVar5 = (int)uVar4 >> 0x1f;\n        }\n        else {\n          uVar4 = 1;\n          iVar5 = 0;\n          if (iVar1 == 0xd) goto LAB_0001ec47;\n        }\n      }\n      else {\nLAB_0001ebe0:\n        uVar4 = 1;\n        iVar5 = 0;\n      }\n      bVar6 = CARRY4(param_2,uVar4);\n      param_2 = param_2 + uVar4;\n      param_3 = param_3 + iVar5 + (uint)bVar6;\n      iVar1 = (param_3 - param_5) - (uint)(param_2 < param_4);\n    } while (param_3 < param_5 || param_3 - param_5 < (uint)(param_2 < param_4));\n  }\n  return iVar1;\n}" (primitive_type "int") (function_declarator "FUN_0001eb40(int param_1,uint param_2,uint param_3,uint param_4,uint param_5)" (identifier "FUN_0001eb40") (parameter_list "(int param_1,uint param_2,uint param_3,uint param_4,uint param_5)" (( "(") (parameter_declaration "int param_1" (primitive_type "int") (identifier "param_1")) (, ",") (parameter_declaration "uint param_2" (type_identifier "uint") (identifier "param_2")) (, ",") (parameter_declaration "uint param_3" (type_identifier "uint") (identifier "param_3")) (, ",") (parameter_declaration "uint param_4" (type_identifier "uint") (identifier "param_4")) (, ",") (parameter_declaration "uint param_5" (type_identifier "uint") (identifier "param_5")) () ")"))) (compound_statement "{\n  int iVar1;\n  uint *puVar2;\n  undefined4 uVar3;\n  uint uVar4;\n  int iVar5;\n  bool bVar6;\n  undefined8 uVar7;\n  char *local_38;\n  int local_34;\n  uint local_2c;\n  uint local_28;\n  \n  if (DAT_0002e2a0 == 0) {\n    DAT_0002e2a0 = 1;\n    FUN_0001ce40(&DAT_0002e2c0);\n    DAT_0002e390 = 0x3ff0000000000000;\n    DAT_0002e3ac = &DAT_0002e2c0;\n  }\n  if ((DAT_0002e158 & 0x100) != 0) {\n    printf("[findcall] %s: 0x%lx to 0x%lx\n",*(undefined4 *)(param_1 + 0x10),param_2,param_4);\n  }\n  iVar1 = (param_3 - param_5) - (uint)(param_2 < param_4);\n  if (param_3 < param_5 || param_3 - param_5 < (uint)(param_2 < param_4)) {\n    do {\n      local_38 = (char *)((param_2 - *(int *)(DAT_0002e4fc + 0x1c)) + DAT_0002e4f0);\n      if (*local_38 == -5) {\n        if ((DAT_0002e158 & 0x100) != 0) {\n          printf("[findcall]\t0x%lx:calls",param_2);\n          iVar1 = FUN_0001e9c0();\n          if ((iVar1 == 0) || (iVar1 == 0xd)) {\n            local_34 = FUN_0001eac0();\n            local_34 = local_34 + 1;\n            local_38 = local_38 + local_34;\n            uVar4 = FUN_0001e9c0();\n            if ((DAT_0002e158 & 0x100) == 0) goto LAB_0001ec6e;\n            uVar3 = FUN_0001e850();\n            printf("\tfirst operand is %s",uVar3);\n            uVar3 = FUN_0001e850();\n            printf("\tsecond operand is %s\n",uVar3);\n            if (0x14 < uVar4) goto LAB_0001edd0;\n            uVar4 = 1 << ((byte)uVar4 & 0x1f);\n            if ((uVar4 & 0x151508) == 0) goto LAB_0001ec89;\nLAB_0001eee4:\n            puVar2 = (uint *)&DAT_0002e2c0;\n            goto LAB_0001eef8;\n          }\nLAB_0001edd0:\n          if ((DAT_0002e158 & 0x100) != 0) {\n            puts("[findcall]\tbut it\'s a botch");\n          }\n          goto LAB_0001ebe0;\n        }\n        iVar1 = FUN_0001e9c0();\n        if (iVar1 == 0) {\nLAB_0001ec47:\n          local_34 = FUN_0001eac0();\n          local_34 = local_34 + 1;\n          local_38 = local_38 + local_34;\n          uVar4 = FUN_0001e9c0();\nLAB_0001ec6e:\n          if (0x14 < uVar4) goto LAB_0001ebe0;\n          uVar4 = 1 << ((byte)uVar4 & 0x1f);\n          if ((uVar4 & 0x151508) != 0) goto LAB_0001eee4;\nLAB_0001ec89:\n          if ((uVar4 & 0xa8000) == 0) goto LAB_0001edd0;\n          iVar1 = FUN_0001e9c0();\n          if (iVar1 == 0x11) {\n            uVar7 = (**(code **)(*(int *)(DAT_0002e4ec + 4) + 0x38))(local_38 + 1);\n            iVar1 = (int)((ulonglong)uVar7 >> 0x20);\n            bVar6 = 0xfffffffd < (uint)uVar7;\n            uVar4 = (uint)uVar7 + 2;\nLAB_0001efc9:\n            local_2c = uVar4 + param_2;\n            local_28 = iVar1 + (uint)bVar6 + param_3 + (uint)CARRY4(uVar4,param_2);\n          }\n          else {\n            if (iVar1 == 0x13) {\n              uVar7 = (**(code **)(*(int *)(DAT_0002e4ec + 4) + 0x2c))(local_38 + 1);\n              iVar1 = (int)((ulonglong)uVar7 >> 0x20);\n              bVar6 = 0xfffffffb < (uint)uVar7;\n              uVar4 = (uint)uVar7 + 4;\n              goto LAB_0001efc9;\n            }\n            if (iVar1 == 0xf) {\n              uVar4 = (byte)(local_38[1] + 0x80) - 0x7f;\n              local_2c = uVar4 + param_2;\n              local_28 = ((int)uVar4 >> 0x1f) + param_3 + (uint)CARRY4(uVar4,param_2);\n            }\n            else {\n              fwrite("[reladdr] not relative address\n",1,0x1f,*(FILE **)PTR_stderr_0002cfcc);\n              local_2c = param_2;\n              local_28 = param_3;\n            }\n          }\n          iVar1 = FUN_0001c070(local_2c);\n          if ((iVar1 == 0) ||\n             (puVar2 = (uint *)FUN_0001d480(&DAT_0002e520,local_2c,local_28), puVar2 == (uint *)0x0)\n             ) goto LAB_0001edd0;\n          if ((DAT_0002e158 & 0x100) == 0) {\n            if (puVar2[1] != local_28 || *puVar2 != local_2c) goto LAB_0001ebe0;\n          }\n          else {\n            printf("[findcall]\tdestpc 0x%lx",local_2c);\n            printf(" child->name %s",puVar2[4]);\n            printf(" child->addr 0x%lx\n",*puVar2);\n            if (puVar2[1] != local_28 || local_2c != *puVar2) goto LAB_0001edd0;\n          }\nLAB_0001eef8:\n          FUN_00014870(param_1,puVar2,0);\n          iVar1 = FUN_0001eac0();\n          uVar4 = local_34 + iVar1;\n          iVar5 = (int)uVar4 >> 0x1f;\n        }\n        else {\n          uVar4 = 1;\n          iVar5 = 0;\n          if (iVar1 == 0xd) goto LAB_0001ec47;\n        }\n      }\n      else {\nLAB_0001ebe0:\n        uVar4 = 1;\n        iVar5 = 0;\n      }\n      bVar6 = CARRY4(param_2,uVar4);\n      param_2 = param_2 + uVar4;\n      param_3 = param_3 + iVar5 + (uint)bVar6;\n      iVar1 = (param_3 - param_5) - (uint)(param_2 < param_4);\n    } while (param_3 < param_5 || param_3 - param_5 < (uint)(param_2 < param_4));\n  }\n  return iVar1;\n}" ({ "{") (declaration "int iVar1;" (primitive_type "int") (identifier "iVar1") (; ";")) (declaration "uint *puVar2;" (type_identifier "uint") (pointer_declarator "*puVar2" (* "*") (identifier "puVar2")) (; ";")) (declaration "undefined4 uVar3;" (type_identifier "undefined4") (identifier "uVar3") (; ";")) (declaration "uint uVar4;" (type_identifier "uint") (identifier "uVar4") (; ";")) (declaration "int iVar5;" (primitive_type "int") (identifier "iVar5") (; ";")) (declaration "bool bVar6;" (primitive_type "bool") (identifier "bVar6") (; ";")) (declaration "undefined8 uVar7;" (type_identifier "undefined8") (identifier "uVar7") (; ";")) (declaration "char *local_38;" (primitive_type "char") (pointer_declarator "*local_38" (* "*") (identifier "local_38")) (; ";")) (declaration "int local_34;" (primitive_type "int") (identifier "local_34") (; ";")) (declaration "uint local_2c;" (type_identifier "uint") (identifier "local_2c") (; ";")) (declaration "uint local_28;" (type_identifier "uint") (identifier "local_28") (; ";")) (if_statement "if (DAT_0002e2a0 == 0) {\n    DAT_0002e2a0 = 1;\n    FUN_0001ce40(&DAT_0002e2c0);\n    DAT_0002e390 = 0x3ff0000000000000;\n    DAT_0002e3ac = &DAT_0002e2c0;\n  }" (if "if") (parenthesized_expression "(DAT_0002e2a0 == 0)" (( "(") (binary_expression "DAT_0002e2a0 == 0" (identifier "DAT_0002e2a0") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    DAT_0002e2a0 = 1;\n    FUN_0001ce40(&DAT_0002e2c0);\n    DAT_0002e390 = 0x3ff0000000000000;\n    DAT_0002e3ac = &DAT_0002e2c0;\n  }" ({ "{") (expression_statement "DAT_0002e2a0 = 1;" (assignment_expression "DAT_0002e2a0 = 1" (identifier "DAT_0002e2a0") (= "=") (number_literal "1")) (; ";")) (expression_statement "FUN_0001ce40(&DAT_0002e2c0);" (call_expression "FUN_0001ce40(&DAT_0002e2c0)" (identifier "FUN_0001ce40") (argument_list "(&DAT_0002e2c0)" (( "(") (pointer_expression "&DAT_0002e2c0" (& "&") (identifier "DAT_0002e2c0")) () ")"))) (; ";")) (expression_statement "DAT_0002e390 = 0x3ff0000000000000;" (assignment_expression "DAT_0002e390 = 0x3ff0000000000000" (identifier "DAT_0002e390") (= "=") (number_literal "0x3ff0000000000000")) (; ";")) (expression_statement "DAT_0002e3ac = &DAT_0002e2c0;" (assignment_expression "DAT_0002e3ac = &DAT_0002e2c0" (identifier "DAT_0002e3ac") (= "=") (pointer_expression "&DAT_0002e2c0" (& "&") (identifier "DAT_0002e2c0"))) (; ";")) (} "}"))) (if_statement "if ((DAT_0002e158 & 0x100) != 0) {\n    printf("[findcall] %s: 0x%lx to 0x%lx\n",*(undefined4 *)(param_1 + 0x10),param_2,param_4);\n  }" (if "if") (parenthesized_expression "((DAT_0002e158 & 0x100) != 0)" (( "(") (binary_expression "(DAT_0002e158 & 0x100) != 0" (parenthesized_expression "(DAT_0002e158 & 0x100)" (( "(") (binary_expression "DAT_0002e158 & 0x100" (identifier "DAT_0002e158") (& "&") (number_literal "0x100")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    printf("[findcall] %s: 0x%lx to 0x%lx\n",*(undefined4 *)(param_1 + 0x10),param_2,param_4);\n  }" ({ "{") (expression_statement "printf("[findcall] %s: 0x%lx to 0x%lx\n",*(undefined4 *)(param_1 + 0x10),param_2,param_4);" (call_expression "printf("[findcall] %s: 0x%lx to 0x%lx\n",*(undefined4 *)(param_1 + 0x10),param_2,param_4)" (identifier "printf") (argument_list "("[findcall] %s: 0x%lx to 0x%lx\n",*(undefined4 *)(param_1 + 0x10),param_2,param_4)" (( "(") (string_literal ""[findcall] %s: 0x%lx to 0x%lx\n"" (" """) (string_content "[findcall] %s: 0x%lx to 0x%lx") (escape_sequence "\n") (" """)) (, ",") (pointer_expression "*(undefined4 *)(param_1 + 0x10)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0x10)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x10)" (( "(") (binary_expression "param_1 + 0x10" (identifier "param_1") (+ "+") (number_literal "0x10")) () ")")))) (, ",") (identifier "param_2") (, ",") (identifier "param_4") () ")"))) (; ";")) (} "}"))) (expression_statement "iVar1 = (param_3 - param_5) - (uint)(param_2 < param_4);" (assignment_expression "iVar1 = (param_3 - param_5) - (uint)(param_2 < param_4)" (identifier "iVar1") (= "=") (binary_expression "(param_3 - param_5) - (uint)(param_2 < param_4)" (parenthesized_expression "(param_3 - param_5)" (( "(") (binary_expression "param_3 - param_5" (identifier "param_3") (- "-") (identifier "param_5")) () ")")) (- "-") (call_expression "(uint)(param_2 < param_4)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(param_2 < param_4)" (( "(") (binary_expression "param_2 < param_4" (identifier "param_2") (< "<") (identifier "param_4")) () ")"))))) (; ";")) (if_statement "if (param_3 < param_5 || param_3 - param_5 < (uint)(param_2 < param_4)) {\n    do {\n      local_38 = (char *)((param_2 - *(int *)(DAT_0002e4fc + 0x1c)) + DAT_0002e4f0);\n      if (*local_38 == -5) {\n        if ((DAT_0002e158 & 0x100) != 0) {\n          printf("[findcall]\t0x%lx:calls",param_2);\n          iVar1 = FUN_0001e9c0();\n          if ((iVar1 == 0) || (iVar1 == 0xd)) {\n            local_34 = FUN_0001eac0();\n            local_34 = local_34 + 1;\n            local_38 = local_38 + local_34;\n            uVar4 = FUN_0001e9c0();\n            if ((DAT_0002e158 & 0x100) == 0) goto LAB_0001ec6e;\n            uVar3 = FUN_0001e850();\n            printf("\tfirst operand is %s",uVar3);\n            uVar3 = FUN_0001e850();\n            printf("\tsecond operand is %s\n",uVar3);\n            if (0x14 < uVar4) goto LAB_0001edd0;\n            uVar4 = 1 << ((byte)uVar4 & 0x1f);\n            if ((uVar4 & 0x151508) == 0) goto LAB_0001ec89;\nLAB_0001eee4:\n            puVar2 = (uint *)&DAT_0002e2c0;\n            goto LAB_0001eef8;\n          }\nLAB_0001edd0:\n          if ((DAT_0002e158 & 0x100) != 0) {\n            puts("[findcall]\tbut it\'s a botch");\n          }\n          goto LAB_0001ebe0;\n        }\n        iVar1 = FUN_0001e9c0();\n        if (iVar1 == 0) {\nLAB_0001ec47:\n          local_34 = FUN_0001eac0();\n          local_34 = local_34 + 1;\n          local_38 = local_38 + local_34;\n          uVar4 = FUN_0001e9c0();\nLAB_0001ec6e:\n          if (0x14 < uVar4) goto LAB_0001ebe0;\n          uVar4 = 1 << ((byte)uVar4 & 0x1f);\n          if ((uVar4 & 0x151508) != 0) goto LAB_0001eee4;\nLAB_0001ec89:\n          if ((uVar4 & 0xa8000) == 0) goto LAB_0001edd0;\n          iVar1 = FUN_0001e9c0();\n          if (iVar1 == 0x11) {\n            uVar7 = (**(code **)(*(int *)(DAT_0002e4ec + 4) + 0x38))(local_38 + 1);\n            iVar1 = (int)((ulonglong)uVar7 >> 0x20);\n            bVar6 = 0xfffffffd < (uint)uVar7;\n            uVar4 = (uint)uVar7 + 2;\nLAB_0001efc9:\n            local_2c = uVar4 + param_2;\n            local_28 = iVar1 + (uint)bVar6 + param_3 + (uint)CARRY4(uVar4,param_2);\n          }\n          else {\n            if (iVar1 == 0x13) {\n              uVar7 = (**(code **)(*(int *)(DAT_0002e4ec + 4) + 0x2c))(local_38 + 1);\n              iVar1 = (int)((ulonglong)uVar7 >> 0x20);\n              bVar6 = 0xfffffffb < (uint)uVar7;\n              uVar4 = (uint)uVar7 + 4;\n              goto LAB_0001efc9;\n            }\n            if (iVar1 == 0xf) {\n              uVar4 = (byte)(local_38[1] + 0x80) - 0x7f;\n              local_2c = uVar4 + param_2;\n              local_28 = ((int)uVar4 >> 0x1f) + param_3 + (uint)CARRY4(uVar4,param_2);\n            }\n            else {\n              fwrite("[reladdr] not relative address\n",1,0x1f,*(FILE **)PTR_stderr_0002cfcc);\n              local_2c = param_2;\n              local_28 = param_3;\n            }\n          }\n          iVar1 = FUN_0001c070(local_2c);\n          if ((iVar1 == 0) ||\n             (puVar2 = (uint *)FUN_0001d480(&DAT_0002e520,local_2c,local_28), puVar2 == (uint *)0x0)\n             ) goto LAB_0001edd0;\n          if ((DAT_0002e158 & 0x100) == 0) {\n            if (puVar2[1] != local_28 || *puVar2 != local_2c) goto LAB_0001ebe0;\n          }\n          else {\n            printf("[findcall]\tdestpc 0x%lx",local_2c);\n            printf(" child->name %s",puVar2[4]);\n            printf(" child->addr 0x%lx\n",*puVar2);\n            if (puVar2[1] != local_28 || local_2c != *puVar2) goto LAB_0001edd0;\n          }\nLAB_0001eef8:\n          FUN_00014870(param_1,puVar2,0);\n          iVar1 = FUN_0001eac0();\n          uVar4 = local_34 + iVar1;\n          iVar5 = (int)uVar4 >> 0x1f;\n        }\n        else {\n          uVar4 = 1;\n          iVar5 = 0;\n          if (iVar1 == 0xd) goto LAB_0001ec47;\n        }\n      }\n      else {\nLAB_0001ebe0:\n        uVar4 = 1;\n        iVar5 = 0;\n      }\n      bVar6 = CARRY4(param_2,uVar4);\n      param_2 = param_2 + uVar4;\n      param_3 = param_3 + iVar5 + (uint)bVar6;\n      iVar1 = (param_3 - param_5) - (uint)(param_2 < param_4);\n    } while (param_3 < param_5 || param_3 - param_5 < (uint)(param_2 < param_4));\n  }" (if "if") (parenthesized_expression "(param_3 < param_5 || param_3 - param_5 < (uint)(param_2 < param_4))" (( "(") (binary_expression "param_3 < param_5 || param_3 - param_5 < (uint)(param_2 < param_4)" (binary_expression "param_3 < param_5" (identifier "param_3") (< "<") (identifier "param_5")) (|| "||") (binary_expression "param_3 - param_5 < (uint)(param_2 < param_4)" (binary_expression "param_3 - param_5" (identifier "param_3") (- "-") (identifier "param_5")) (< "<") (call_expression "(uint)(param_2 < param_4)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(param_2 < param_4)" (( "(") (binary_expression "param_2 < param_4" (identifier "param_2") (< "<") (identifier "param_4")) () ")"))))) () ")")) (compound_statement "{\n    do {\n      local_38 = (char *)((param_2 - *(int *)(DAT_0002e4fc + 0x1c)) + DAT_0002e4f0);\n      if (*local_38 == -5) {\n        if ((DAT_0002e158 & 0x100) != 0) {\n          printf("[findcall]\t0x%lx:calls",param_2);\n          iVar1 = FUN_0001e9c0();\n          if ((iVar1 == 0) || (iVar1 == 0xd)) {\n            local_34 = FUN_0001eac0();\n            local_34 = local_34 + 1;\n            local_38 = local_38 + local_34;\n            uVar4 = FUN_0001e9c0();\n            if ((DAT_0002e158 & 0x100) == 0) goto LAB_0001ec6e;\n            uVar3 = FUN_0001e850();\n            printf("\tfirst operand is %s",uVar3);\n            uVar3 = FUN_0001e850();\n            printf("\tsecond operand is %s\n",uVar3);\n            if (0x14 < uVar4) goto LAB_0001edd0;\n            uVar4 = 1 << ((byte)uVar4 & 0x1f);\n            if ((uVar4 & 0x151508) == 0) goto LAB_0001ec89;\nLAB_0001eee4:\n            puVar2 = (uint *)&DAT_0002e2c0;\n            goto LAB_0001eef8;\n          }\nLAB_0001edd0:\n          if ((DAT_0002e158 & 0x100) != 0) {\n            puts("[findcall]\tbut it\'s a botch");\n          }\n          goto LAB_0001ebe0;\n        }\n        iVar1 = FUN_0001e9c0();\n        if (iVar1 == 0) {\nLAB_0001ec47:\n          local_34 = FUN_0001eac0();\n          local_34 = local_34 + 1;\n          local_38 = local_38 + local_34;\n          uVar4 = FUN_0001e9c0();\nLAB_0001ec6e:\n          if (0x14 < uVar4) goto LAB_0001ebe0;\n          uVar4 = 1 << ((byte)uVar4 & 0x1f);\n          if ((uVar4 & 0x151508) != 0) goto LAB_0001eee4;\nLAB_0001ec89:\n          if ((uVar4 & 0xa8000) == 0) goto LAB_0001edd0;\n          iVar1 = FUN_0001e9c0();\n          if (iVar1 == 0x11) {\n            uVar7 = (**(code **)(*(int *)(DAT_0002e4ec + 4) + 0x38))(local_38 + 1);\n            iVar1 = (int)((ulonglong)uVar7 >> 0x20);\n            bVar6 = 0xfffffffd < (uint)uVar7;\n            uVar4 = (uint)uVar7 + 2;\nLAB_0001efc9:\n            local_2c = uVar4 + param_2;\n            local_28 = iVar1 + (uint)bVar6 + param_3 + (uint)CARRY4(uVar4,param_2);\n          }\n          else {\n            if (iVar1 == 0x13) {\n              uVar7 = (**(code **)(*(int *)(DAT_0002e4ec + 4) + 0x2c))(local_38 + 1);\n              iVar1 = (int)((ulonglong)uVar7 >> 0x20);\n              bVar6 = 0xfffffffb < (uint)uVar7;\n              uVar4 = (uint)uVar7 + 4;\n              goto LAB_0001efc9;\n            }\n            if (iVar1 == 0xf) {\n              uVar4 = (byte)(local_38[1] + 0x80) - 0x7f;\n              local_2c = uVar4 + param_2;\n              local_28 = ((int)uVar4 >> 0x1f) + param_3 + (uint)CARRY4(uVar4,param_2);\n            }\n            else {\n              fwrite("[reladdr] not relative address\n",1,0x1f,*(FILE **)PTR_stderr_0002cfcc);\n              local_2c = param_2;\n              local_28 = param_3;\n            }\n          }\n          iVar1 = FUN_0001c070(local_2c);\n          if ((iVar1 == 0) ||\n             (puVar2 = (uint *)FUN_0001d480(&DAT_0002e520,local_2c,local_28), puVar2 == (uint *)0x0)\n             ) goto LAB_0001edd0;\n          if ((DAT_0002e158 & 0x100) == 0) {\n            if (puVar2[1] != local_28 || *puVar2 != local_2c) goto LAB_0001ebe0;\n          }\n          else {\n            printf("[findcall]\tdestpc 0x%lx",local_2c);\n            printf(" child->name %s",puVar2[4]);\n            printf(" child->addr 0x%lx\n",*puVar2);\n            if (puVar2[1] != local_28 || local_2c != *puVar2) goto LAB_0001edd0;\n          }\nLAB_0001eef8:\n          FUN_00014870(param_1,puVar2,0);\n          iVar1 = FUN_0001eac0();\n          uVar4 = local_34 + iVar1;\n          iVar5 = (int)uVar4 >> 0x1f;\n        }\n        else {\n          uVar4 = 1;\n          iVar5 = 0;\n          if (iVar1 == 0xd) goto LAB_0001ec47;\n        }\n      }\n      else {\nLAB_0001ebe0:\n        uVar4 = 1;\n        iVar5 = 0;\n      }\n      bVar6 = CARRY4(param_2,uVar4);\n      param_2 = param_2 + uVar4;\n      param_3 = param_3 + iVar5 + (uint)bVar6;\n      iVar1 = (param_3 - param_5) - (uint)(param_2 < param_4);\n    } while (param_3 < param_5 || param_3 - param_5 < (uint)(param_2 < param_4));\n  }" ({ "{") (do_statement "do {\n      local_38 = (char *)((param_2 - *(int *)(DAT_0002e4fc + 0x1c)) + DAT_0002e4f0);\n      if (*local_38 == -5) {\n        if ((DAT_0002e158 & 0x100) != 0) {\n          printf("[findcall]\t0x%lx:calls",param_2);\n          iVar1 = FUN_0001e9c0();\n          if ((iVar1 == 0) || (iVar1 == 0xd)) {\n            local_34 = FUN_0001eac0();\n            local_34 = local_34 + 1;\n            local_38 = local_38 + local_34;\n            uVar4 = FUN_0001e9c0();\n            if ((DAT_0002e158 & 0x100) == 0) goto LAB_0001ec6e;\n            uVar3 = FUN_0001e850();\n            printf("\tfirst operand is %s",uVar3);\n            uVar3 = FUN_0001e850();\n            printf("\tsecond operand is %s\n",uVar3);\n            if (0x14 < uVar4) goto LAB_0001edd0;\n            uVar4 = 1 << ((byte)uVar4 & 0x1f);\n            if ((uVar4 & 0x151508) == 0) goto LAB_0001ec89;\nLAB_0001eee4:\n            puVar2 = (uint *)&DAT_0002e2c0;\n            goto LAB_0001eef8;\n          }\nLAB_0001edd0:\n          if ((DAT_0002e158 & 0x100) != 0) {\n            puts("[findcall]\tbut it\'s a botch");\n          }\n          goto LAB_0001ebe0;\n        }\n        iVar1 = FUN_0001e9c0();\n        if (iVar1 == 0) {\nLAB_0001ec47:\n          local_34 = FUN_0001eac0();\n          local_34 = local_34 + 1;\n          local_38 = local_38 + local_34;\n          uVar4 = FUN_0001e9c0();\nLAB_0001ec6e:\n          if (0x14 < uVar4) goto LAB_0001ebe0;\n          uVar4 = 1 << ((byte)uVar4 & 0x1f);\n          if ((uVar4 & 0x151508) != 0) goto LAB_0001eee4;\nLAB_0001ec89:\n          if ((uVar4 & 0xa8000) == 0) goto LAB_0001edd0;\n          iVar1 = FUN_0001e9c0();\n          if (iVar1 == 0x11) {\n            uVar7 = (**(code **)(*(int *)(DAT_0002e4ec + 4) + 0x38))(local_38 + 1);\n            iVar1 = (int)((ulonglong)uVar7 >> 0x20);\n            bVar6 = 0xfffffffd < (uint)uVar7;\n            uVar4 = (uint)uVar7 + 2;\nLAB_0001efc9:\n            local_2c = uVar4 + param_2;\n            local_28 = iVar1 + (uint)bVar6 + param_3 + (uint)CARRY4(uVar4,param_2);\n          }\n          else {\n            if (iVar1 == 0x13) {\n              uVar7 = (**(code **)(*(int *)(DAT_0002e4ec + 4) + 0x2c))(local_38 + 1);\n              iVar1 = (int)((ulonglong)uVar7 >> 0x20);\n              bVar6 = 0xfffffffb < (uint)uVar7;\n              uVar4 = (uint)uVar7 + 4;\n              goto LAB_0001efc9;\n            }\n            if (iVar1 == 0xf) {\n              uVar4 = (byte)(local_38[1] + 0x80) - 0x7f;\n              local_2c = uVar4 + param_2;\n              local_28 = ((int)uVar4 >> 0x1f) + param_3 + (uint)CARRY4(uVar4,param_2);\n            }\n            else {\n              fwrite("[reladdr] not relative address\n",1,0x1f,*(FILE **)PTR_stderr_0002cfcc);\n              local_2c = param_2;\n              local_28 = param_3;\n            }\n          }\n          iVar1 = FUN_0001c070(local_2c);\n          if ((iVar1 == 0) ||\n             (puVar2 = (uint *)FUN_0001d480(&DAT_0002e520,local_2c,local_28), puVar2 == (uint *)0x0)\n             ) goto LAB_0001edd0;\n          if ((DAT_0002e158 & 0x100) == 0) {\n            if (puVar2[1] != local_28 || *puVar2 != local_2c) goto LAB_0001ebe0;\n          }\n          else {\n            printf("[findcall]\tdestpc 0x%lx",local_2c);\n            printf(" child->name %s",puVar2[4]);\n            printf(" child->addr 0x%lx\n",*puVar2);\n            if (puVar2[1] != local_28 || local_2c != *puVar2) goto LAB_0001edd0;\n          }\nLAB_0001eef8:\n          FUN_00014870(param_1,puVar2,0);\n          iVar1 = FUN_0001eac0();\n          uVar4 = local_34 + iVar1;\n          iVar5 = (int)uVar4 >> 0x1f;\n        }\n        else {\n          uVar4 = 1;\n          iVar5 = 0;\n          if (iVar1 == 0xd) goto LAB_0001ec47;\n        }\n      }\n      else {\nLAB_0001ebe0:\n        uVar4 = 1;\n        iVar5 = 0;\n      }\n      bVar6 = CARRY4(param_2,uVar4);\n      param_2 = param_2 + uVar4;\n      param_3 = param_3 + iVar5 + (uint)bVar6;\n      iVar1 = (param_3 - param_5) - (uint)(param_2 < param_4);\n    } while (param_3 < param_5 || param_3 - param_5 < (uint)(param_2 < param_4));" (do "do") (compound_statement "{\n      local_38 = (char *)((param_2 - *(int *)(DAT_0002e4fc + 0x1c)) + DAT_0002e4f0);\n      if (*local_38 == -5) {\n        if ((DAT_0002e158 & 0x100) != 0) {\n          printf("[findcall]\t0x%lx:calls",param_2);\n          iVar1 = FUN_0001e9c0();\n          if ((iVar1 == 0) || (iVar1 == 0xd)) {\n            local_34 = FUN_0001eac0();\n            local_34 = local_34 + 1;\n            local_38 = local_38 + local_34;\n            uVar4 = FUN_0001e9c0();\n            if ((DAT_0002e158 & 0x100) == 0) goto LAB_0001ec6e;\n            uVar3 = FUN_0001e850();\n            printf("\tfirst operand is %s",uVar3);\n            uVar3 = FUN_0001e850();\n            printf("\tsecond operand is %s\n",uVar3);\n            if (0x14 < uVar4) goto LAB_0001edd0;\n            uVar4 = 1 << ((byte)uVar4 & 0x1f);\n            if ((uVar4 & 0x151508) == 0) goto LAB_0001ec89;\nLAB_0001eee4:\n            puVar2 = (uint *)&DAT_0002e2c0;\n            goto LAB_0001eef8;\n          }\nLAB_0001edd0:\n          if ((DAT_0002e158 & 0x100) != 0) {\n            puts("[findcall]\tbut it\'s a botch");\n          }\n          goto LAB_0001ebe0;\n        }\n        iVar1 = FUN_0001e9c0();\n        if (iVar1 == 0) {\nLAB_0001ec47:\n          local_34 = FUN_0001eac0();\n          local_34 = local_34 + 1;\n          local_38 = local_38 + local_34;\n          uVar4 = FUN_0001e9c0();\nLAB_0001ec6e:\n          if (0x14 < uVar4) goto LAB_0001ebe0;\n          uVar4 = 1 << ((byte)uVar4 & 0x1f);\n          if ((uVar4 & 0x151508) != 0) goto LAB_0001eee4;\nLAB_0001ec89:\n          if ((uVar4 & 0xa8000) == 0) goto LAB_0001edd0;\n          iVar1 = FUN_0001e9c0();\n          if (iVar1 == 0x11) {\n            uVar7 = (**(code **)(*(int *)(DAT_0002e4ec + 4) + 0x38))(local_38 + 1);\n            iVar1 = (int)((ulonglong)uVar7 >> 0x20);\n            bVar6 = 0xfffffffd < (uint)uVar7;\n            uVar4 = (uint)uVar7 + 2;\nLAB_0001efc9:\n            local_2c = uVar4 + param_2;\n            local_28 = iVar1 + (uint)bVar6 + param_3 + (uint)CARRY4(uVar4,param_2);\n          }\n          else {\n            if (iVar1 == 0x13) {\n              uVar7 = (**(code **)(*(int *)(DAT_0002e4ec + 4) + 0x2c))(local_38 + 1);\n              iVar1 = (int)((ulonglong)uVar7 >> 0x20);\n              bVar6 = 0xfffffffb < (uint)uVar7;\n              uVar4 = (uint)uVar7 + 4;\n              goto LAB_0001efc9;\n            }\n            if (iVar1 == 0xf) {\n              uVar4 = (byte)(local_38[1] + 0x80) - 0x7f;\n              local_2c = uVar4 + param_2;\n              local_28 = ((int)uVar4 >> 0x1f) + param_3 + (uint)CARRY4(uVar4,param_2);\n            }\n            else {\n              fwrite("[reladdr] not relative address\n",1,0x1f,*(FILE **)PTR_stderr_0002cfcc);\n              local_2c = param_2;\n              local_28 = param_3;\n            }\n          }\n          iVar1 = FUN_0001c070(local_2c);\n          if ((iVar1 == 0) ||\n             (puVar2 = (uint *)FUN_0001d480(&DAT_0002e520,local_2c,local_28), puVar2 == (uint *)0x0)\n             ) goto LAB_0001edd0;\n          if ((DAT_0002e158 & 0x100) == 0) {\n            if (puVar2[1] != local_28 || *puVar2 != local_2c) goto LAB_0001ebe0;\n          }\n          else {\n            printf("[findcall]\tdestpc 0x%lx",local_2c);\n            printf(" child->name %s",puVar2[4]);\n            printf(" child->addr 0x%lx\n",*puVar2);\n            if (puVar2[1] != local_28 || local_2c != *puVar2) goto LAB_0001edd0;\n          }\nLAB_0001eef8:\n          FUN_00014870(param_1,puVar2,0);\n          iVar1 = FUN_0001eac0();\n          uVar4 = local_34 + iVar1;\n          iVar5 = (int)uVar4 >> 0x1f;\n        }\n        else {\n          uVar4 = 1;\n          iVar5 = 0;\n          if (iVar1 == 0xd) goto LAB_0001ec47;\n        }\n      }\n      else {\nLAB_0001ebe0:\n        uVar4 = 1;\n        iVar5 = 0;\n      }\n      bVar6 = CARRY4(param_2,uVar4);\n      param_2 = param_2 + uVar4;\n      param_3 = param_3 + iVar5 + (uint)bVar6;\n      iVar1 = (param_3 - param_5) - (uint)(param_2 < param_4);\n    }" ({ "{") (expression_statement "local_38 = (char *)((param_2 - *(int *)(DAT_0002e4fc + 0x1c)) + DAT_0002e4f0);" (assignment_expression "local_38 = (char *)((param_2 - *(int *)(DAT_0002e4fc + 0x1c)) + DAT_0002e4f0)" (identifier "local_38") (= "=") (cast_expression "(char *)((param_2 - *(int *)(DAT_0002e4fc + 0x1c)) + DAT_0002e4f0)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((param_2 - *(int *)(DAT_0002e4fc + 0x1c)) + DAT_0002e4f0)" (( "(") (binary_expression "(param_2 - *(int *)(DAT_0002e4fc + 0x1c)) + DAT_0002e4f0" (parenthesized_expression "(param_2 - *(int *)(DAT_0002e4fc + 0x1c))" (( "(") (binary_expression "param_2 - *(int *)(DAT_0002e4fc + 0x1c)" (identifier "param_2") (- "-") (pointer_expression "*(int *)(DAT_0002e4fc + 0x1c)" (* "*") (cast_expression "(int *)(DAT_0002e4fc + 0x1c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(DAT_0002e4fc + 0x1c)" (( "(") (binary_expression "DAT_0002e4fc + 0x1c" (identifier "DAT_0002e4fc") (+ "+") (number_literal "0x1c")) () ")"))))) () ")")) (+ "+") (identifier "DAT_0002e4f0")) () ")")))) (; ";")) (if_statement "if (*local_38 == -5) {\n        if ((DAT_0002e158 & 0x100) != 0) {\n          printf("[findcall]\t0x%lx:calls",param_2);\n          iVar1 = FUN_0001e9c0();\n          if ((iVar1 == 0) || (iVar1 == 0xd)) {\n            local_34 = FUN_0001eac0();\n            local_34 = local_34 + 1;\n            local_38 = local_38 + local_34;\n            uVar4 = FUN_0001e9c0();\n            if ((DAT_0002e158 & 0x100) == 0) goto LAB_0001ec6e;\n            uVar3 = FUN_0001e850();\n            printf("\tfirst operand is %s",uVar3);\n            uVar3 = FUN_0001e850();\n            printf("\tsecond operand is %s\n",uVar3);\n            if (0x14 < uVar4) goto LAB_0001edd0;\n            uVar4 = 1 << ((byte)uVar4 & 0x1f);\n            if ((uVar4 & 0x151508) == 0) goto LAB_0001ec89;\nLAB_0001eee4:\n            puVar2 = (uint *)&DAT_0002e2c0;\n            goto LAB_0001eef8;\n          }\nLAB_0001edd0:\n          if ((DAT_0002e158 & 0x100) != 0) {\n            puts("[findcall]\tbut it\'s a botch");\n          }\n          goto LAB_0001ebe0;\n        }\n        iVar1 = FUN_0001e9c0();\n        if (iVar1 == 0) {\nLAB_0001ec47:\n          local_34 = FUN_0001eac0();\n          local_34 = local_34 + 1;\n          local_38 = local_38 + local_34;\n          uVar4 = FUN_0001e9c0();\nLAB_0001ec6e:\n          if (0x14 < uVar4) goto LAB_0001ebe0;\n          uVar4 = 1 << ((byte)uVar4 & 0x1f);\n          if ((uVar4 & 0x151508) != 0) goto LAB_0001eee4;\nLAB_0001ec89:\n          if ((uVar4 & 0xa8000) == 0) goto LAB_0001edd0;\n          iVar1 = FUN_0001e9c0();\n          if (iVar1 == 0x11) {\n            uVar7 = (**(code **)(*(int *)(DAT_0002e4ec + 4) + 0x38))(local_38 + 1);\n            iVar1 = (int)((ulonglong)uVar7 >> 0x20);\n            bVar6 = 0xfffffffd < (uint)uVar7;\n            uVar4 = (uint)uVar7 + 2;\nLAB_0001efc9:\n            local_2c = uVar4 + param_2;\n            local_28 = iVar1 + (uint)bVar6 + param_3 + (uint)CARRY4(uVar4,param_2);\n          }\n          else {\n            if (iVar1 == 0x13) {\n              uVar7 = (**(code **)(*(int *)(DAT_0002e4ec + 4) + 0x2c))(local_38 + 1);\n              iVar1 = (int)((ulonglong)uVar7 >> 0x20);\n              bVar6 = 0xfffffffb < (uint)uVar7;\n              uVar4 = (uint)uVar7 + 4;\n              goto LAB_0001efc9;\n            }\n            if (iVar1 == 0xf) {\n              uVar4 = (byte)(local_38[1] + 0x80) - 0x7f;\n              local_2c = uVar4 + param_2;\n              local_28 = ((int)uVar4 >> 0x1f) + param_3 + (uint)CARRY4(uVar4,param_2);\n            }\n            else {\n              fwrite("[reladdr] not relative address\n",1,0x1f,*(FILE **)PTR_stderr_0002cfcc);\n              local_2c = param_2;\n              local_28 = param_3;\n            }\n          }\n          iVar1 = FUN_0001c070(local_2c);\n          if ((iVar1 == 0) ||\n             (puVar2 = (uint *)FUN_0001d480(&DAT_0002e520,local_2c,local_28), puVar2 == (uint *)0x0)\n             ) goto LAB_0001edd0;\n          if ((DAT_0002e158 & 0x100) == 0) {\n            if (puVar2[1] != local_28 || *puVar2 != local_2c) goto LAB_0001ebe0;\n          }\n          else {\n            printf("[findcall]\tdestpc 0x%lx",local_2c);\n            printf(" child->name %s",puVar2[4]);\n            printf(" child->addr 0x%lx\n",*puVar2);\n            if (puVar2[1] != local_28 || local_2c != *puVar2) goto LAB_0001edd0;\n          }\nLAB_0001eef8:\n          FUN_00014870(param_1,puVar2,0);\n          iVar1 = FUN_0001eac0();\n          uVar4 = local_34 + iVar1;\n          iVar5 = (int)uVar4 >> 0x1f;\n        }\n        else {\n          uVar4 = 1;\n          iVar5 = 0;\n          if (iVar1 == 0xd) goto LAB_0001ec47;\n        }\n      }\n      else {\nLAB_0001ebe0:\n        uVar4 = 1;\n        iVar5 = 0;\n      }" (if "if") (parenthesized_expression "(*local_38 == -5)" (( "(") (binary_expression "*local_38 == -5" (pointer_expression "*local_38" (* "*") (identifier "local_38")) (== "==") (number_literal "-5")) () ")")) (compound_statement "{\n        if ((DAT_0002e158 & 0x100) != 0) {\n          printf("[findcall]\t0x%lx:calls",param_2);\n          iVar1 = FUN_0001e9c0();\n          if ((iVar1 == 0) || (iVar1 == 0xd)) {\n            local_34 = FUN_0001eac0();\n            local_34 = local_34 + 1;\n            local_38 = local_38 + local_34;\n            uVar4 = FUN_0001e9c0();\n            if ((DAT_0002e158 & 0x100) == 0) goto LAB_0001ec6e;\n            uVar3 = FUN_0001e850();\n            printf("\tfirst operand is %s",uVar3);\n            uVar3 = FUN_0001e850();\n            printf("\tsecond operand is %s\n",uVar3);\n            if (0x14 < uVar4) goto LAB_0001edd0;\n            uVar4 = 1 << ((byte)uVar4 & 0x1f);\n            if ((uVar4 & 0x151508) == 0) goto LAB_0001ec89;\nLAB_0001eee4:\n            puVar2 = (uint *)&DAT_0002e2c0;\n            goto LAB_0001eef8;\n          }\nLAB_0001edd0:\n          if ((DAT_0002e158 & 0x100) != 0) {\n            puts("[findcall]\tbut it\'s a botch");\n          }\n          goto LAB_0001ebe0;\n        }\n        iVar1 = FUN_0001e9c0();\n        if (iVar1 == 0) {\nLAB_0001ec47:\n          local_34 = FUN_0001eac0();\n          local_34 = local_34 + 1;\n          local_38 = local_38 + local_34;\n          uVar4 = FUN_0001e9c0();\nLAB_0001ec6e:\n          if (0x14 < uVar4) goto LAB_0001ebe0;\n          uVar4 = 1 << ((byte)uVar4 & 0x1f);\n          if ((uVar4 & 0x151508) != 0) goto LAB_0001eee4;\nLAB_0001ec89:\n          if ((uVar4 & 0xa8000) == 0) goto LAB_0001edd0;\n          iVar1 = FUN_0001e9c0();\n          if (iVar1 == 0x11) {\n            uVar7 = (**(code **)(*(int *)(DAT_0002e4ec + 4) + 0x38))(local_38 + 1);\n            iVar1 = (int)((ulonglong)uVar7 >> 0x20);\n            bVar6 = 0xfffffffd < (uint)uVar7;\n            uVar4 = (uint)uVar7 + 2;\nLAB_0001efc9:\n            local_2c = uVar4 + param_2;\n            local_28 = iVar1 + (uint)bVar6 + param_3 + (uint)CARRY4(uVar4,param_2);\n          }\n          else {\n            if (iVar1 == 0x13) {\n              uVar7 = (**(code **)(*(int *)(DAT_0002e4ec + 4) + 0x2c))(local_38 + 1);\n              iVar1 = (int)((ulonglong)uVar7 >> 0x20);\n              bVar6 = 0xfffffffb < (uint)uVar7;\n              uVar4 = (uint)uVar7 + 4;\n              goto LAB_0001efc9;\n            }\n            if (iVar1 == 0xf) {\n              uVar4 = (byte)(local_38[1] + 0x80) - 0x7f;\n              local_2c = uVar4 + param_2;\n              local_28 = ((int)uVar4 >> 0x1f) + param_3 + (uint)CARRY4(uVar4,param_2);\n            }\n            else {\n              fwrite("[reladdr] not relative address\n",1,0x1f,*(FILE **)PTR_stderr_0002cfcc);\n              local_2c = param_2;\n              local_28 = param_3;\n            }\n          }\n          iVar1 = FUN_0001c070(local_2c);\n          if ((iVar1 == 0) ||\n             (puVar2 = (uint *)FUN_0001d480(&DAT_0002e520,local_2c,local_28), puVar2 == (uint *)0x0)\n             ) goto LAB_0001edd0;\n          if ((DAT_0002e158 & 0x100) == 0) {\n            if (puVar2[1] != local_28 || *puVar2 != local_2c) goto LAB_0001ebe0;\n          }\n          else {\n            printf("[findcall]\tdestpc 0x%lx",local_2c);\n            printf(" child->name %s",puVar2[4]);\n            printf(" child->addr 0x%lx\n",*puVar2);\n            if (puVar2[1] != local_28 || local_2c != *puVar2) goto LAB_0001edd0;\n          }\nLAB_0001eef8:\n          FUN_00014870(param_1,puVar2,0);\n          iVar1 = FUN_0001eac0();\n          uVar4 = local_34 + iVar1;\n          iVar5 = (int)uVar4 >> 0x1f;\n        }\n        else {\n          uVar4 = 1;\n          iVar5 = 0;\n          if (iVar1 == 0xd) goto LAB_0001ec47;\n        }\n      }" ({ "{") (if_statement "if ((DAT_0002e158 & 0x100) != 0) {\n          printf("[findcall]\t0x%lx:calls",param_2);\n          iVar1 = FUN_0001e9c0();\n          if ((iVar1 == 0) || (iVar1 == 0xd)) {\n            local_34 = FUN_0001eac0();\n            local_34 = local_34 + 1;\n            local_38 = local_38 + local_34;\n            uVar4 = FUN_0001e9c0();\n            if ((DAT_0002e158 & 0x100) == 0) goto LAB_0001ec6e;\n            uVar3 = FUN_0001e850();\n            printf("\tfirst operand is %s",uVar3);\n            uVar3 = FUN_0001e850();\n            printf("\tsecond operand is %s\n",uVar3);\n            if (0x14 < uVar4) goto LAB_0001edd0;\n            uVar4 = 1 << ((byte)uVar4 & 0x1f);\n            if ((uVar4 & 0x151508) == 0) goto LAB_0001ec89;\nLAB_0001eee4:\n            puVar2 = (uint *)&DAT_0002e2c0;\n            goto LAB_0001eef8;\n          }\nLAB_0001edd0:\n          if ((DAT_0002e158 & 0x100) != 0) {\n            puts("[findcall]\tbut it\'s a botch");\n          }\n          goto LAB_0001ebe0;\n        }" (if "if") (parenthesized_expression "((DAT_0002e158 & 0x100) != 0)" (( "(") (binary_expression "(DAT_0002e158 & 0x100) != 0" (parenthesized_expression "(DAT_0002e158 & 0x100)" (( "(") (binary_expression "DAT_0002e158 & 0x100" (identifier "DAT_0002e158") (& "&") (number_literal "0x100")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n          printf("[findcall]\t0x%lx:calls",param_2);\n          iVar1 = FUN_0001e9c0();\n          if ((iVar1 == 0) || (iVar1 == 0xd)) {\n            local_34 = FUN_0001eac0();\n            local_34 = local_34 + 1;\n            local_38 = local_38 + local_34;\n            uVar4 = FUN_0001e9c0();\n            if ((DAT_0002e158 & 0x100) == 0) goto LAB_0001ec6e;\n            uVar3 = FUN_0001e850();\n            printf("\tfirst operand is %s",uVar3);\n            uVar3 = FUN_0001e850();\n            printf("\tsecond operand is %s\n",uVar3);\n            if (0x14 < uVar4) goto LAB_0001edd0;\n            uVar4 = 1 << ((byte)uVar4 & 0x1f);\n            if ((uVar4 & 0x151508) == 0) goto LAB_0001ec89;\nLAB_0001eee4:\n            puVar2 = (uint *)&DAT_0002e2c0;\n            goto LAB_0001eef8;\n          }\nLAB_0001edd0:\n          if ((DAT_0002e158 & 0x100) != 0) {\n            puts("[findcall]\tbut it\'s a botch");\n          }\n          goto LAB_0001ebe0;\n        }" ({ "{") (expression_statement "printf("[findcall]\t0x%lx:calls",param_2);" (call_expression "printf("[findcall]\t0x%lx:calls",param_2)" (identifier "printf") (argument_list "("[findcall]\t0x%lx:calls",param_2)" (( "(") (string_literal ""[findcall]\t0x%lx:calls"" (" """) (string_content "[findcall]") (escape_sequence "\t") (string_content "0x%lx:calls") (" """)) (, ",") (identifier "param_2") () ")"))) (; ";")) (expression_statement "iVar1 = FUN_0001e9c0();" (assignment_expression "iVar1 = FUN_0001e9c0()" (identifier "iVar1") (= "=") (call_expression "FUN_0001e9c0()" (identifier "FUN_0001e9c0") (argument_list "()" (( "(") () ")")))) (; ";")) (if_statement "if ((iVar1 == 0) || (iVar1 == 0xd)) {\n            local_34 = FUN_0001eac0();\n            local_34 = local_34 + 1;\n            local_38 = local_38 + local_34;\n            uVar4 = FUN_0001e9c0();\n            if ((DAT_0002e158 & 0x100) == 0) goto LAB_0001ec6e;\n            uVar3 = FUN_0001e850();\n            printf("\tfirst operand is %s",uVar3);\n            uVar3 = FUN_0001e850();\n            printf("\tsecond operand is %s\n",uVar3);\n            if (0x14 < uVar4) goto LAB_0001edd0;\n            uVar4 = 1 << ((byte)uVar4 & 0x1f);\n            if ((uVar4 & 0x151508) == 0) goto LAB_0001ec89;\nLAB_0001eee4:\n            puVar2 = (uint *)&DAT_0002e2c0;\n            goto LAB_0001eef8;\n          }" (if "if") (parenthesized_expression "((iVar1 == 0) || (iVar1 == 0xd))" (( "(") (binary_expression "(iVar1 == 0) || (iVar1 == 0xd)" (parenthesized_expression "(iVar1 == 0)" (( "(") (binary_expression "iVar1 == 0" (identifier "iVar1") (== "==") (number_literal "0")) () ")")) (|| "||") (parenthesized_expression "(iVar1 == 0xd)" (( "(") (binary_expression "iVar1 == 0xd" (identifier "iVar1") (== "==") (number_literal "0xd")) () ")"))) () ")")) (compound_statement "{\n            local_34 = FUN_0001eac0();\n            local_34 = local_34 + 1;\n            local_38 = local_38 + local_34;\n            uVar4 = FUN_0001e9c0();\n            if ((DAT_0002e158 & 0x100) == 0) goto LAB_0001ec6e;\n            uVar3 = FUN_0001e850();\n            printf("\tfirst operand is %s",uVar3);\n            uVar3 = FUN_0001e850();\n            printf("\tsecond operand is %s\n",uVar3);\n            if (0x14 < uVar4) goto LAB_0001edd0;\n            uVar4 = 1 << ((byte)uVar4 & 0x1f);\n            if ((uVar4 & 0x151508) == 0) goto LAB_0001ec89;\nLAB_0001eee4:\n            puVar2 = (uint *)&DAT_0002e2c0;\n            goto LAB_0001eef8;\n          }" ({ "{") (expression_statement "local_34 = FUN_0001eac0();" (assignment_expression "local_34 = FUN_0001eac0()" (identifier "local_34") (= "=") (call_expression "FUN_0001eac0()" (identifier "FUN_0001eac0") (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "local_34 = local_34 + 1;" (assignment_expression "local_34 = local_34 + 1" (identifier "local_34") (= "=") (binary_expression "local_34 + 1" (identifier "local_34") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "local_38 = local_38 + local_34;" (assignment_expression "local_38 = local_38 + local_34" (identifier "local_38") (= "=") (binary_expression "local_38 + local_34" (identifier "local_38") (+ "+") (identifier "local_34"))) (; ";")) (expression_statement "uVar4 = FUN_0001e9c0();" (assignment_expression "uVar4 = FUN_0001e9c0()" (identifier "uVar4") (= "=") (call_expression "FUN_0001e9c0()" (identifier "FUN_0001e9c0") (argument_list "()" (( "(") () ")")))) (; ";")) (if_statement "if ((DAT_0002e158 & 0x100) == 0) goto LAB_0001ec6e;" (if "if") (parenthesized_expression "((DAT_0002e158 & 0x100) == 0)" (( "(") (binary_expression "(DAT_0002e158 & 0x100) == 0" (parenthesized_expression "(DAT_0002e158 & 0x100)" (( "(") (binary_expression "DAT_0002e158 & 0x100" (identifier "DAT_0002e158") (& "&") (number_literal "0x100")) () ")")) (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_0001ec6e;" (goto "goto") (statement_identifier "LAB_0001ec6e") (; ";"))) (expression_statement "uVar3 = FUN_0001e850();" (assignment_expression "uVar3 = FUN_0001e850()" (identifier "uVar3") (= "=") (call_expression "FUN_0001e850()" (identifier "FUN_0001e850") (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "printf("\tfirst operand is %s",uVar3);" (call_expression "printf("\tfirst operand is %s",uVar3)" (identifier "printf") (argument_list "("\tfirst operand is %s",uVar3)" (( "(") (string_literal ""\tfirst operand is %s"" (" """) (escape_sequence "\t") (string_content "first operand is %s") (" """)) (, ",") (identifier "uVar3") () ")"))) (; ";")) (expression_statement "uVar3 = FUN_0001e850();" (assignment_expression "uVar3 = FUN_0001e850()" (identifier "uVar3") (= "=") (call_expression "FUN_0001e850()" (identifier "FUN_0001e850") (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "printf("\tsecond operand is %s\n",uVar3);" (call_expression "printf("\tsecond operand is %s\n",uVar3)" (identifier "printf") (argument_list "("\tsecond operand is %s\n",uVar3)" (( "(") (string_literal ""\tsecond operand is %s\n"" (" """) (escape_sequence "\t") (string_content "second operand is %s") (escape_sequence "\n") (" """)) (, ",") (identifier "uVar3") () ")"))) (; ";")) (if_statement "if (0x14 < uVar4) goto LAB_0001edd0;" (if "if") (parenthesized_expression "(0x14 < uVar4)" (( "(") (binary_expression "0x14 < uVar4" (number_literal "0x14") (< "<") (identifier "uVar4")) () ")")) (goto_statement "goto LAB_0001edd0;" (goto "goto") (statement_identifier "LAB_0001edd0") (; ";"))) (expression_statement "uVar4 = 1 << ((byte)uVar4 & 0x1f);" (assignment_expression "uVar4 = 1 << ((byte)uVar4 & 0x1f)" (identifier "uVar4") (= "=") (binary_expression "1 << ((byte)uVar4 & 0x1f)" (number_literal "1") (<< "<<") (parenthesized_expression "((byte)uVar4 & 0x1f)" (( "(") (binary_expression "(byte)uVar4 & 0x1f" (cast_expression "(byte)uVar4" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "uVar4")) (& "&") (number_literal "0x1f")) () ")")))) (; ";")) (if_statement "if ((uVar4 & 0x151508) == 0) goto LAB_0001ec89;" (if "if") (parenthesized_expression "((uVar4 & 0x151508) == 0)" (( "(") (binary_expression "(uVar4 & 0x151508) == 0" (parenthesized_expression "(uVar4 & 0x151508)" (( "(") (binary_expression "uVar4 & 0x151508" (identifier "uVar4") (& "&") (number_literal "0x151508")) () ")")) (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_0001ec89;" (goto "goto") (statement_identifier "LAB_0001ec89") (; ";"))) (labeled_statement "LAB_0001eee4:\n            puVar2 = (uint *)&DAT_0002e2c0;" (statement_identifier "LAB_0001eee4") (: ":") (expression_statement "puVar2 = (uint *)&DAT_0002e2c0;" (assignment_expression "puVar2 = (uint *)&DAT_0002e2c0" (identifier "puVar2") (= "=") (cast_expression "(uint *)&DAT_0002e2c0" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "&DAT_0002e2c0" (& "&") (identifier "DAT_0002e2c0")))) (; ";"))) (goto_statement "goto LAB_0001eef8;" (goto "goto") (statement_identifier "LAB_0001eef8") (; ";")) (} "}"))) (labeled_statement "LAB_0001edd0:\n          if ((DAT_0002e158 & 0x100) != 0) {\n            puts("[findcall]\tbut it\'s a botch");\n          }" (statement_identifier "LAB_0001edd0") (: ":") (if_statement "if ((DAT_0002e158 & 0x100) != 0) {\n            puts("[findcall]\tbut it\'s a botch");\n          }" (if "if") (parenthesized_expression "((DAT_0002e158 & 0x100) != 0)" (( "(") (binary_expression "(DAT_0002e158 & 0x100) != 0" (parenthesized_expression "(DAT_0002e158 & 0x100)" (( "(") (binary_expression "DAT_0002e158 & 0x100" (identifier "DAT_0002e158") (& "&") (number_literal "0x100")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n            puts("[findcall]\tbut it\'s a botch");\n          }" ({ "{") (expression_statement "puts("[findcall]\tbut it\'s a botch");" (call_expression "puts("[findcall]\tbut it\'s a botch")" (identifier "puts") (argument_list "("[findcall]\tbut it\'s a botch")" (( "(") (string_literal ""[findcall]\tbut it\'s a botch"" (" """) (string_content "[findcall]") (escape_sequence "\t") (string_content "but it") (escape_sequence "\'") (string_content "s a botch") (" """)) () ")"))) (; ";")) (} "}")))) (goto_statement "goto LAB_0001ebe0;" (goto "goto") (statement_identifier "LAB_0001ebe0") (; ";")) (} "}"))) (expression_statement "iVar1 = FUN_0001e9c0();" (assignment_expression "iVar1 = FUN_0001e9c0()" (identifier "iVar1") (= "=") (call_expression "FUN_0001e9c0()" (identifier "FUN_0001e9c0") (argument_list "()" (( "(") () ")")))) (; ";")) (if_statement "if (iVar1 == 0) {\nLAB_0001ec47:\n          local_34 = FUN_0001eac0();\n          local_34 = local_34 + 1;\n          local_38 = local_38 + local_34;\n          uVar4 = FUN_0001e9c0();\nLAB_0001ec6e:\n          if (0x14 < uVar4) goto LAB_0001ebe0;\n          uVar4 = 1 << ((byte)uVar4 & 0x1f);\n          if ((uVar4 & 0x151508) != 0) goto LAB_0001eee4;\nLAB_0001ec89:\n          if ((uVar4 & 0xa8000) == 0) goto LAB_0001edd0;\n          iVar1 = FUN_0001e9c0();\n          if (iVar1 == 0x11) {\n            uVar7 = (**(code **)(*(int *)(DAT_0002e4ec + 4) + 0x38))(local_38 + 1);\n            iVar1 = (int)((ulonglong)uVar7 >> 0x20);\n            bVar6 = 0xfffffffd < (uint)uVar7;\n            uVar4 = (uint)uVar7 + 2;\nLAB_0001efc9:\n            local_2c = uVar4 + param_2;\n            local_28 = iVar1 + (uint)bVar6 + param_3 + (uint)CARRY4(uVar4,param_2);\n          }\n          else {\n            if (iVar1 == 0x13) {\n              uVar7 = (**(code **)(*(int *)(DAT_0002e4ec + 4) + 0x2c))(local_38 + 1);\n              iVar1 = (int)((ulonglong)uVar7 >> 0x20);\n              bVar6 = 0xfffffffb < (uint)uVar7;\n              uVar4 = (uint)uVar7 + 4;\n              goto LAB_0001efc9;\n            }\n            if (iVar1 == 0xf) {\n              uVar4 = (byte)(local_38[1] + 0x80) - 0x7f;\n              local_2c = uVar4 + param_2;\n              local_28 = ((int)uVar4 >> 0x1f) + param_3 + (uint)CARRY4(uVar4,param_2);\n            }\n            else {\n              fwrite("[reladdr] not relative address\n",1,0x1f,*(FILE **)PTR_stderr_0002cfcc);\n              local_2c = param_2;\n              local_28 = param_3;\n            }\n          }\n          iVar1 = FUN_0001c070(local_2c);\n          if ((iVar1 == 0) ||\n             (puVar2 = (uint *)FUN_0001d480(&DAT_0002e520,local_2c,local_28), puVar2 == (uint *)0x0)\n             ) goto LAB_0001edd0;\n          if ((DAT_0002e158 & 0x100) == 0) {\n            if (puVar2[1] != local_28 || *puVar2 != local_2c) goto LAB_0001ebe0;\n          }\n          else {\n            printf("[findcall]\tdestpc 0x%lx",local_2c);\n            printf(" child->name %s",puVar2[4]);\n            printf(" child->addr 0x%lx\n",*puVar2);\n            if (puVar2[1] != local_28 || local_2c != *puVar2) goto LAB_0001edd0;\n          }\nLAB_0001eef8:\n          FUN_00014870(param_1,puVar2,0);\n          iVar1 = FUN_0001eac0();\n          uVar4 = local_34 + iVar1;\n          iVar5 = (int)uVar4 >> 0x1f;\n        }\n        else {\n          uVar4 = 1;\n          iVar5 = 0;\n          if (iVar1 == 0xd) goto LAB_0001ec47;\n        }" (if "if") (parenthesized_expression "(iVar1 == 0)" (( "(") (binary_expression "iVar1 == 0" (identifier "iVar1") (== "==") (number_literal "0")) () ")")) (compound_statement "{\nLAB_0001ec47:\n          local_34 = FUN_0001eac0();\n          local_34 = local_34 + 1;\n          local_38 = local_38 + local_34;\n          uVar4 = FUN_0001e9c0();\nLAB_0001ec6e:\n          if (0x14 < uVar4) goto LAB_0001ebe0;\n          uVar4 = 1 << ((byte)uVar4 & 0x1f);\n          if ((uVar4 & 0x151508) != 0) goto LAB_0001eee4;\nLAB_0001ec89:\n          if ((uVar4 & 0xa8000) == 0) goto LAB_0001edd0;\n          iVar1 = FUN_0001e9c0();\n          if (iVar1 == 0x11) {\n            uVar7 = (**(code **)(*(int *)(DAT_0002e4ec + 4) + 0x38))(local_38 + 1);\n            iVar1 = (int)((ulonglong)uVar7 >> 0x20);\n            bVar6 = 0xfffffffd < (uint)uVar7;\n            uVar4 = (uint)uVar7 + 2;\nLAB_0001efc9:\n            local_2c = uVar4 + param_2;\n            local_28 = iVar1 + (uint)bVar6 + param_3 + (uint)CARRY4(uVar4,param_2);\n          }\n          else {\n            if (iVar1 == 0x13) {\n              uVar7 = (**(code **)(*(int *)(DAT_0002e4ec + 4) + 0x2c))(local_38 + 1);\n              iVar1 = (int)((ulonglong)uVar7 >> 0x20);\n              bVar6 = 0xfffffffb < (uint)uVar7;\n              uVar4 = (uint)uVar7 + 4;\n              goto LAB_0001efc9;\n            }\n            if (iVar1 == 0xf) {\n              uVar4 = (byte)(local_38[1] + 0x80) - 0x7f;\n              local_2c = uVar4 + param_2;\n              local_28 = ((int)uVar4 >> 0x1f) + param_3 + (uint)CARRY4(uVar4,param_2);\n            }\n            else {\n              fwrite("[reladdr] not relative address\n",1,0x1f,*(FILE **)PTR_stderr_0002cfcc);\n              local_2c = param_2;\n              local_28 = param_3;\n            }\n          }\n          iVar1 = FUN_0001c070(local_2c);\n          if ((iVar1 == 0) ||\n             (puVar2 = (uint *)FUN_0001d480(&DAT_0002e520,local_2c,local_28), puVar2 == (uint *)0x0)\n             ) goto LAB_0001edd0;\n          if ((DAT_0002e158 & 0x100) == 0) {\n            if (puVar2[1] != local_28 || *puVar2 != local_2c) goto LAB_0001ebe0;\n          }\n          else {\n            printf("[findcall]\tdestpc 0x%lx",local_2c);\n            printf(" child->name %s",puVar2[4]);\n            printf(" child->addr 0x%lx\n",*puVar2);\n            if (puVar2[1] != local_28 || local_2c != *puVar2) goto LAB_0001edd0;\n          }\nLAB_0001eef8:\n          FUN_00014870(param_1,puVar2,0);\n          iVar1 = FUN_0001eac0();\n          uVar4 = local_34 + iVar1;\n          iVar5 = (int)uVar4 >> 0x1f;\n        }" ({ "{") (labeled_statement "LAB_0001ec47:\n          local_34 = FUN_0001eac0();" (statement_identifier "LAB_0001ec47") (: ":") (expression_statement "local_34 = FUN_0001eac0();" (assignment_expression "local_34 = FUN_0001eac0()" (identifier "local_34") (= "=") (call_expression "FUN_0001eac0()" (identifier "FUN_0001eac0") (argument_list "()" (( "(") () ")")))) (; ";"))) (expression_statement "local_34 = local_34 + 1;" (assignment_expression "local_34 = local_34 + 1" (identifier "local_34") (= "=") (binary_expression "local_34 + 1" (identifier "local_34") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "local_38 = local_38 + local_34;" (assignment_expression "local_38 = local_38 + local_34" (identifier "local_38") (= "=") (binary_expression "local_38 + local_34" (identifier "local_38") (+ "+") (identifier "local_34"))) (; ";")) (expression_statement "uVar4 = FUN_0001e9c0();" (assignment_expression "uVar4 = FUN_0001e9c0()" (identifier "uVar4") (= "=") (call_expression "FUN_0001e9c0()" (identifier "FUN_0001e9c0") (argument_list "()" (( "(") () ")")))) (; ";")) (labeled_statement "LAB_0001ec6e:\n          if (0x14 < uVar4) goto LAB_0001ebe0;" (statement_identifier "LAB_0001ec6e") (: ":") (if_statement "if (0x14 < uVar4) goto LAB_0001ebe0;" (if "if") (parenthesized_expression "(0x14 < uVar4)" (( "(") (binary_expression "0x14 < uVar4" (number_literal "0x14") (< "<") (identifier "uVar4")) () ")")) (goto_statement "goto LAB_0001ebe0;" (goto "goto") (statement_identifier "LAB_0001ebe0") (; ";")))) (expression_statement "uVar4 = 1 << ((byte)uVar4 & 0x1f);" (assignment_expression "uVar4 = 1 << ((byte)uVar4 & 0x1f)" (identifier "uVar4") (= "=") (binary_expression "1 << ((byte)uVar4 & 0x1f)" (number_literal "1") (<< "<<") (parenthesized_expression "((byte)uVar4 & 0x1f)" (( "(") (binary_expression "(byte)uVar4 & 0x1f" (cast_expression "(byte)uVar4" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "uVar4")) (& "&") (number_literal "0x1f")) () ")")))) (; ";")) (if_statement "if ((uVar4 & 0x151508) != 0) goto LAB_0001eee4;" (if "if") (parenthesized_expression "((uVar4 & 0x151508) != 0)" (( "(") (binary_expression "(uVar4 & 0x151508) != 0" (parenthesized_expression "(uVar4 & 0x151508)" (( "(") (binary_expression "uVar4 & 0x151508" (identifier "uVar4") (& "&") (number_literal "0x151508")) () ")")) (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_0001eee4;" (goto "goto") (statement_identifier "LAB_0001eee4") (; ";"))) (labeled_statement "LAB_0001ec89:\n          if ((uVar4 & 0xa8000) == 0) goto LAB_0001edd0;" (statement_identifier "LAB_0001ec89") (: ":") (if_statement "if ((uVar4 & 0xa8000) == 0) goto LAB_0001edd0;" (if "if") (parenthesized_expression "((uVar4 & 0xa8000) == 0)" (( "(") (binary_expression "(uVar4 & 0xa8000) == 0" (parenthesized_expression "(uVar4 & 0xa8000)" (( "(") (binary_expression "uVar4 & 0xa8000" (identifier "uVar4") (& "&") (number_literal "0xa8000")) () ")")) (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_0001edd0;" (goto "goto") (statement_identifier "LAB_0001edd0") (; ";")))) (expression_statement "iVar1 = FUN_0001e9c0();" (assignment_expression "iVar1 = FUN_0001e9c0()" (identifier "iVar1") (= "=") (call_expression "FUN_0001e9c0()" (identifier "FUN_0001e9c0") (argument_list "()" (( "(") () ")")))) (; ";")) (if_statement "if (iVar1 == 0x11) {\n            uVar7 = (**(code **)(*(int *)(DAT_0002e4ec + 4) + 0x38))(local_38 + 1);\n            iVar1 = (int)((ulonglong)uVar7 >> 0x20);\n            bVar6 = 0xfffffffd < (uint)uVar7;\n            uVar4 = (uint)uVar7 + 2;\nLAB_0001efc9:\n            local_2c = uVar4 + param_2;\n            local_28 = iVar1 + (uint)bVar6 + param_3 + (uint)CARRY4(uVar4,param_2);\n          }\n          else {\n            if (iVar1 == 0x13) {\n              uVar7 = (**(code **)(*(int *)(DAT_0002e4ec + 4) + 0x2c))(local_38 + 1);\n              iVar1 = (int)((ulonglong)uVar7 >> 0x20);\n              bVar6 = 0xfffffffb < (uint)uVar7;\n              uVar4 = (uint)uVar7 + 4;\n              goto LAB_0001efc9;\n            }\n            if (iVar1 == 0xf) {\n              uVar4 = (byte)(local_38[1] + 0x80) - 0x7f;\n              local_2c = uVar4 + param_2;\n              local_28 = ((int)uVar4 >> 0x1f) + param_3 + (uint)CARRY4(uVar4,param_2);\n            }\n            else {\n              fwrite("[reladdr] not relative address\n",1,0x1f,*(FILE **)PTR_stderr_0002cfcc);\n              local_2c = param_2;\n              local_28 = param_3;\n            }\n          }" (if "if") (parenthesized_expression "(iVar1 == 0x11)" (( "(") (binary_expression "iVar1 == 0x11" (identifier "iVar1") (== "==") (number_literal "0x11")) () ")")) (compound_statement "{\n            uVar7 = (**(code **)(*(int *)(DAT_0002e4ec + 4) + 0x38))(local_38 + 1);\n            iVar1 = (int)((ulonglong)uVar7 >> 0x20);\n            bVar6 = 0xfffffffd < (uint)uVar7;\n            uVar4 = (uint)uVar7 + 2;\nLAB_0001efc9:\n            local_2c = uVar4 + param_2;\n            local_28 = iVar1 + (uint)bVar6 + param_3 + (uint)CARRY4(uVar4,param_2);\n          }" ({ "{") (expression_statement "uVar7 = (**(code **)(*(int *)(DAT_0002e4ec + 4) + 0x38))(local_38 + 1);" (assignment_expression "uVar7 = (**(code **)(*(int *)(DAT_0002e4ec + 4) + 0x38))(local_38 + 1)" (identifier "uVar7") (= "=") (call_expression "(**(code **)(*(int *)(DAT_0002e4ec + 4) + 0x38))(local_38 + 1)" (parenthesized_expression "(**(code **)(*(int *)(DAT_0002e4ec + 4) + 0x38))" (( "(") (pointer_expression "**(code **)(*(int *)(DAT_0002e4ec + 4) + 0x38)" (* "*") (pointer_expression "*(code **)(*(int *)(DAT_0002e4ec + 4) + 0x38)" (* "*") (cast_expression "(code **)(*(int *)(DAT_0002e4ec + 4) + 0x38)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*(int *)(DAT_0002e4ec + 4) + 0x38)" (( "(") (binary_expression "*(int *)(DAT_0002e4ec + 4) + 0x38" (pointer_expression "*(int *)(DAT_0002e4ec + 4)" (* "*") (cast_expression "(int *)(DAT_0002e4ec + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(DAT_0002e4ec + 4)" (( "(") (binary_expression "DAT_0002e4ec + 4" (identifier "DAT_0002e4ec") (+ "+") (number_literal "4")) () ")")))) (+ "+") (number_literal "0x38")) () ")"))))) () ")")) (argument_list "(local_38 + 1)" (( "(") (binary_expression "local_38 + 1" (identifier "local_38") (+ "+") (number_literal "1")) () ")")))) (; ";")) (expression_statement "iVar1 = (int)((ulonglong)uVar7 >> 0x20);" (assignment_expression "iVar1 = (int)((ulonglong)uVar7 >> 0x20)" (identifier "iVar1") (= "=") (cast_expression "(int)((ulonglong)uVar7 >> 0x20)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "((ulonglong)uVar7 >> 0x20)" (( "(") (binary_expression "(ulonglong)uVar7 >> 0x20" (cast_expression "(ulonglong)uVar7" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (identifier "uVar7")) (>> ">>") (number_literal "0x20")) () ")")))) (; ";")) (expression_statement "bVar6 = 0xfffffffd < (uint)uVar7;" (assignment_expression "bVar6 = 0xfffffffd < (uint)uVar7" (identifier "bVar6") (= "=") (binary_expression "0xfffffffd < (uint)uVar7" (number_literal "0xfffffffd") (< "<") (cast_expression "(uint)uVar7" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "uVar7")))) (; ";")) (expression_statement "uVar4 = (uint)uVar7 + 2;" (assignment_expression "uVar4 = (uint)uVar7 + 2" (identifier "uVar4") (= "=") (binary_expression "(uint)uVar7 + 2" (cast_expression "(uint)uVar7" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "uVar7")) (+ "+") (number_literal "2"))) (; ";")) (labeled_statement "LAB_0001efc9:\n            local_2c = uVar4 + param_2;" (statement_identifier "LAB_0001efc9") (: ":") (expression_statement "local_2c = uVar4 + param_2;" (assignment_expression "local_2c = uVar4 + param_2" (identifier "local_2c") (= "=") (binary_expression "uVar4 + param_2" (identifier "uVar4") (+ "+") (identifier "param_2"))) (; ";"))) (expression_statement "local_28 = iVar1 + (uint)bVar6 + param_3 + (uint)CARRY4(uVar4,param_2);" (assignment_expression "local_28 = iVar1 + (uint)bVar6 + param_3 + (uint)CARRY4(uVar4,param_2)" (identifier "local_28") (= "=") (binary_expression "iVar1 + (uint)bVar6 + param_3 + (uint)CARRY4(uVar4,param_2)" (binary_expression "iVar1 + (uint)bVar6 + param_3" (binary_expression "iVar1 + (uint)bVar6" (identifier "iVar1") (+ "+") (cast_expression "(uint)bVar6" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar6"))) (+ "+") (identifier "param_3")) (+ "+") (cast_expression "(uint)CARRY4(uVar4,param_2)" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (call_expression "CARRY4(uVar4,param_2)" (identifier "CARRY4") (argument_list "(uVar4,param_2)" (( "(") (identifier "uVar4") (, ",") (identifier "param_2") () ")")))))) (; ";")) (} "}")) (else_clause "else {\n            if (iVar1 == 0x13) {\n              uVar7 = (**(code **)(*(int *)(DAT_0002e4ec + 4) + 0x2c))(local_38 + 1);\n              iVar1 = (int)((ulonglong)uVar7 >> 0x20);\n              bVar6 = 0xfffffffb < (uint)uVar7;\n              uVar4 = (uint)uVar7 + 4;\n              goto LAB_0001efc9;\n            }\n            if (iVar1 == 0xf) {\n              uVar4 = (byte)(local_38[1] + 0x80) - 0x7f;\n              local_2c = uVar4 + param_2;\n              local_28 = ((int)uVar4 >> 0x1f) + param_3 + (uint)CARRY4(uVar4,param_2);\n            }\n            else {\n              fwrite("[reladdr] not relative address\n",1,0x1f,*(FILE **)PTR_stderr_0002cfcc);\n              local_2c = param_2;\n              local_28 = param_3;\n            }\n          }" (else "else") (compound_statement "{\n            if (iVar1 == 0x13) {\n              uVar7 = (**(code **)(*(int *)(DAT_0002e4ec + 4) + 0x2c))(local_38 + 1);\n              iVar1 = (int)((ulonglong)uVar7 >> 0x20);\n              bVar6 = 0xfffffffb < (uint)uVar7;\n              uVar4 = (uint)uVar7 + 4;\n              goto LAB_0001efc9;\n            }\n            if (iVar1 == 0xf) {\n              uVar4 = (byte)(local_38[1] + 0x80) - 0x7f;\n              local_2c = uVar4 + param_2;\n              local_28 = ((int)uVar4 >> 0x1f) + param_3 + (uint)CARRY4(uVar4,param_2);\n            }\n            else {\n              fwrite("[reladdr] not relative address\n",1,0x1f,*(FILE **)PTR_stderr_0002cfcc);\n              local_2c = param_2;\n              local_28 = param_3;\n            }\n          }" ({ "{") (if_statement "if (iVar1 == 0x13) {\n              uVar7 = (**(code **)(*(int *)(DAT_0002e4ec + 4) + 0x2c))(local_38 + 1);\n              iVar1 = (int)((ulonglong)uVar7 >> 0x20);\n              bVar6 = 0xfffffffb < (uint)uVar7;\n              uVar4 = (uint)uVar7 + 4;\n              goto LAB_0001efc9;\n            }" (if "if") (parenthesized_expression "(iVar1 == 0x13)" (( "(") (binary_expression "iVar1 == 0x13" (identifier "iVar1") (== "==") (number_literal "0x13")) () ")")) (compound_statement "{\n              uVar7 = (**(code **)(*(int *)(DAT_0002e4ec + 4) + 0x2c))(local_38 + 1);\n              iVar1 = (int)((ulonglong)uVar7 >> 0x20);\n              bVar6 = 0xfffffffb < (uint)uVar7;\n              uVar4 = (uint)uVar7 + 4;\n              goto LAB_0001efc9;\n            }" ({ "{") (expression_statement "uVar7 = (**(code **)(*(int *)(DAT_0002e4ec + 4) + 0x2c))(local_38 + 1);" (assignment_expression "uVar7 = (**(code **)(*(int *)(DAT_0002e4ec + 4) + 0x2c))(local_38 + 1)" (identifier "uVar7") (= "=") (call_expression "(**(code **)(*(int *)(DAT_0002e4ec + 4) + 0x2c))(local_38 + 1)" (parenthesized_expression "(**(code **)(*(int *)(DAT_0002e4ec + 4) + 0x2c))" (( "(") (pointer_expression "**(code **)(*(int *)(DAT_0002e4ec + 4) + 0x2c)" (* "*") (pointer_expression "*(code **)(*(int *)(DAT_0002e4ec + 4) + 0x2c)" (* "*") (cast_expression "(code **)(*(int *)(DAT_0002e4ec + 4) + 0x2c)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*(int *)(DAT_0002e4ec + 4) + 0x2c)" (( "(") (binary_expression "*(int *)(DAT_0002e4ec + 4) + 0x2c" (pointer_expression "*(int *)(DAT_0002e4ec + 4)" (* "*") (cast_expression "(int *)(DAT_0002e4ec + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(DAT_0002e4ec + 4)" (( "(") (binary_expression "DAT_0002e4ec + 4" (identifier "DAT_0002e4ec") (+ "+") (number_literal "4")) () ")")))) (+ "+") (number_literal "0x2c")) () ")"))))) () ")")) (argument_list "(local_38 + 1)" (( "(") (binary_expression "local_38 + 1" (identifier "local_38") (+ "+") (number_literal "1")) () ")")))) (; ";")) (expression_statement "iVar1 = (int)((ulonglong)uVar7 >> 0x20);" (assignment_expression "iVar1 = (int)((ulonglong)uVar7 >> 0x20)" (identifier "iVar1") (= "=") (cast_expression "(int)((ulonglong)uVar7 >> 0x20)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "((ulonglong)uVar7 >> 0x20)" (( "(") (binary_expression "(ulonglong)uVar7 >> 0x20" (cast_expression "(ulonglong)uVar7" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (identifier "uVar7")) (>> ">>") (number_literal "0x20")) () ")")))) (; ";")) (expression_statement "bVar6 = 0xfffffffb < (uint)uVar7;" (assignment_expression "bVar6 = 0xfffffffb < (uint)uVar7" (identifier "bVar6") (= "=") (binary_expression "0xfffffffb < (uint)uVar7" (number_literal "0xfffffffb") (< "<") (cast_expression "(uint)uVar7" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "uVar7")))) (; ";")) (expression_statement "uVar4 = (uint)uVar7 + 4;" (assignment_expression "uVar4 = (uint)uVar7 + 4" (identifier "uVar4") (= "=") (binary_expression "(uint)uVar7 + 4" (cast_expression "(uint)uVar7" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "uVar7")) (+ "+") (number_literal "4"))) (; ";")) (goto_statement "goto LAB_0001efc9;" (goto "goto") (statement_identifier "LAB_0001efc9") (; ";")) (} "}"))) (if_statement "if (iVar1 == 0xf) {\n              uVar4 = (byte)(local_38[1] + 0x80) - 0x7f;\n              local_2c = uVar4 + param_2;\n              local_28 = ((int)uVar4 >> 0x1f) + param_3 + (uint)CARRY4(uVar4,param_2);\n            }\n            else {\n              fwrite("[reladdr] not relative address\n",1,0x1f,*(FILE **)PTR_stderr_0002cfcc);\n              local_2c = param_2;\n              local_28 = param_3;\n            }" (if "if") (parenthesized_expression "(iVar1 == 0xf)" (( "(") (binary_expression "iVar1 == 0xf" (identifier "iVar1") (== "==") (number_literal "0xf")) () ")")) (compound_statement "{\n              uVar4 = (byte)(local_38[1] + 0x80) - 0x7f;\n              local_2c = uVar4 + param_2;\n              local_28 = ((int)uVar4 >> 0x1f) + param_3 + (uint)CARRY4(uVar4,param_2);\n            }" ({ "{") (expression_statement "uVar4 = (byte)(local_38[1] + 0x80) - 0x7f;" (assignment_expression "uVar4 = (byte)(local_38[1] + 0x80) - 0x7f" (identifier "uVar4") (= "=") (binary_expression "(byte)(local_38[1] + 0x80) - 0x7f" (call_expression "(byte)(local_38[1] + 0x80)" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "(local_38[1] + 0x80)" (( "(") (binary_expression "local_38[1] + 0x80" (subscript_expression "local_38[1]" (identifier "local_38") ([ "[") (number_literal "1") (] "]")) (+ "+") (number_literal "0x80")) () ")"))) (- "-") (number_literal "0x7f"))) (; ";")) (expression_statement "local_2c = uVar4 + param_2;" (assignment_expression "local_2c = uVar4 + param_2" (identifier "local_2c") (= "=") (binary_expression "uVar4 + param_2" (identifier "uVar4") (+ "+") (identifier "param_2"))) (; ";")) (expression_statement "local_28 = ((int)uVar4 >> 0x1f) + param_3 + (uint)CARRY4(uVar4,param_2);" (assignment_expression "local_28 = ((int)uVar4 >> 0x1f) + param_3 + (uint)CARRY4(uVar4,param_2)" (identifier "local_28") (= "=") (binary_expression "((int)uVar4 >> 0x1f) + param_3 + (uint)CARRY4(uVar4,param_2)" (binary_expression "((int)uVar4 >> 0x1f) + param_3" (parenthesized_expression "((int)uVar4 >> 0x1f)" (( "(") (binary_expression "(int)uVar4 >> 0x1f" (cast_expression "(int)uVar4" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar4")) (>> ">>") (number_literal "0x1f")) () ")")) (+ "+") (identifier "param_3")) (+ "+") (cast_expression "(uint)CARRY4(uVar4,param_2)" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (call_expression "CARRY4(uVar4,param_2)" (identifier "CARRY4") (argument_list "(uVar4,param_2)" (( "(") (identifier "uVar4") (, ",") (identifier "param_2") () ")")))))) (; ";")) (} "}")) (else_clause "else {\n              fwrite("[reladdr] not relative address\n",1,0x1f,*(FILE **)PTR_stderr_0002cfcc);\n              local_2c = param_2;\n              local_28 = param_3;\n            }" (else "else") (compound_statement "{\n              fwrite("[reladdr] not relative address\n",1,0x1f,*(FILE **)PTR_stderr_0002cfcc);\n              local_2c = param_2;\n              local_28 = param_3;\n            }" ({ "{") (expression_statement "fwrite("[reladdr] not relative address\n",1,0x1f,*(FILE **)PTR_stderr_0002cfcc);" (call_expression "fwrite("[reladdr] not relative address\n",1,0x1f,*(FILE **)PTR_stderr_0002cfcc)" (identifier "fwrite") (argument_list "("[reladdr] not relative address\n",1,0x1f,*(FILE **)PTR_stderr_0002cfcc)" (( "(") (string_literal ""[reladdr] not relative address\n"" (" """) (string_content "[reladdr] not relative address") (escape_sequence "\n") (" """)) (, ",") (number_literal "1") (, ",") (number_literal "0x1f") (, ",") (pointer_expression "*(FILE **)PTR_stderr_0002cfcc" (* "*") (cast_expression "(FILE **)PTR_stderr_0002cfcc" (( "(") (type_descriptor "FILE **" (type_identifier "FILE") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (identifier "PTR_stderr_0002cfcc"))) () ")"))) (; ";")) (expression_statement "local_2c = param_2;" (assignment_expression "local_2c = param_2" (identifier "local_2c") (= "=") (identifier "param_2")) (; ";")) (expression_statement "local_28 = param_3;" (assignment_expression "local_28 = param_3" (identifier "local_28") (= "=") (identifier "param_3")) (; ";")) (} "}")))) (} "}")))) (expression_statement "iVar1 = FUN_0001c070(local_2c);" (assignment_expression "iVar1 = FUN_0001c070(local_2c)" (identifier "iVar1") (= "=") (call_expression "FUN_0001c070(local_2c)" (identifier "FUN_0001c070") (argument_list "(local_2c)" (( "(") (identifier "local_2c") () ")")))) (; ";")) (if_statement "if ((iVar1 == 0) ||\n             (puVar2 = (uint *)FUN_0001d480(&DAT_0002e520,local_2c,local_28), puVar2 == (uint *)0x0)\n             ) goto LAB_0001edd0;" (if "if") (parenthesized_expression "((iVar1 == 0) ||\n             (puVar2 = (uint *)FUN_0001d480(&DAT_0002e520,local_2c,local_28), puVar2 == (uint *)0x0)\n             )" (( "(") (binary_expression "(iVar1 == 0) ||\n             (puVar2 = (uint *)FUN_0001d480(&DAT_0002e520,local_2c,local_28), puVar2 == (uint *)0x0)" (parenthesized_expression "(iVar1 == 0)" (( "(") (binary_expression "iVar1 == 0" (identifier "iVar1") (== "==") (number_literal "0")) () ")")) (|| "||") (parenthesized_expression "(puVar2 = (uint *)FUN_0001d480(&DAT_0002e520,local_2c,local_28), puVar2 == (uint *)0x0)" (( "(") (comma_expression "puVar2 = (uint *)FUN_0001d480(&DAT_0002e520,local_2c,local_28), puVar2 == (uint *)0x0" (assignment_expression "puVar2 = (uint *)FUN_0001d480(&DAT_0002e520,local_2c,local_28)" (identifier "puVar2") (= "=") (cast_expression "(uint *)FUN_0001d480(&DAT_0002e520,local_2c,local_28)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_0001d480(&DAT_0002e520,local_2c,local_28)" (identifier "FUN_0001d480") (argument_list "(&DAT_0002e520,local_2c,local_28)" (( "(") (pointer_expression "&DAT_0002e520" (& "&") (identifier "DAT_0002e520")) (, ",") (identifier "local_2c") (, ",") (identifier "local_28") () ")"))))) (, ",") (binary_expression "puVar2 == (uint *)0x0" (identifier "puVar2") (== "==") (cast_expression "(uint *)0x0" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0")))) () ")"))) () ")")) (goto_statement "goto LAB_0001edd0;" (goto "goto") (statement_identifier "LAB_0001edd0") (; ";"))) (if_statement "if ((DAT_0002e158 & 0x100) == 0) {\n            if (puVar2[1] != local_28 || *puVar2 != local_2c) goto LAB_0001ebe0;\n          }\n          else {\n            printf("[findcall]\tdestpc 0x%lx",local_2c);\n            printf(" child->name %s",puVar2[4]);\n            printf(" child->addr 0x%lx\n",*puVar2);\n            if (puVar2[1] != local_28 || local_2c != *puVar2) goto LAB_0001edd0;\n          }" (if "if") (parenthesized_expression "((DAT_0002e158 & 0x100) == 0)" (( "(") (binary_expression "(DAT_0002e158 & 0x100) == 0" (parenthesized_expression "(DAT_0002e158 & 0x100)" (( "(") (binary_expression "DAT_0002e158 & 0x100" (identifier "DAT_0002e158") (& "&") (number_literal "0x100")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n            if (puVar2[1] != local_28 || *puVar2 != local_2c) goto LAB_0001ebe0;\n          }" ({ "{") (if_statement "if (puVar2[1] != local_28 || *puVar2 != local_2c) goto LAB_0001ebe0;" (if "if") (parenthesized_expression "(puVar2[1] != local_28 || *puVar2 != local_2c)" (( "(") (binary_expression "puVar2[1] != local_28 || *puVar2 != local_2c" (binary_expression "puVar2[1] != local_28" (subscript_expression "puVar2[1]" (identifier "puVar2") ([ "[") (number_literal "1") (] "]")) (!= "!=") (identifier "local_28")) (|| "||") (binary_expression "*puVar2 != local_2c" (pointer_expression "*puVar2" (* "*") (identifier "puVar2")) (!= "!=") (identifier "local_2c"))) () ")")) (goto_statement "goto LAB_0001ebe0;" (goto "goto") (statement_identifier "LAB_0001ebe0") (; ";"))) (} "}")) (else_clause "else {\n            printf("[findcall]\tdestpc 0x%lx",local_2c);\n            printf(" child->name %s",puVar2[4]);\n            printf(" child->addr 0x%lx\n",*puVar2);\n            if (puVar2[1] != local_28 || local_2c != *puVar2) goto LAB_0001edd0;\n          }" (else "else") (compound_statement "{\n            printf("[findcall]\tdestpc 0x%lx",local_2c);\n            printf(" child->name %s",puVar2[4]);\n            printf(" child->addr 0x%lx\n",*puVar2);\n            if (puVar2[1] != local_28 || local_2c != *puVar2) goto LAB_0001edd0;\n          }" ({ "{") (expression_statement "printf("[findcall]\tdestpc 0x%lx",local_2c);" (call_expression "printf("[findcall]\tdestpc 0x%lx",local_2c)" (identifier "printf") (argument_list "("[findcall]\tdestpc 0x%lx",local_2c)" (( "(") (string_literal ""[findcall]\tdestpc 0x%lx"" (" """) (string_content "[findcall]") (escape_sequence "\t") (string_content "destpc 0x%lx") (" """)) (, ",") (identifier "local_2c") () ")"))) (; ";")) (expression_statement "printf(" child->name %s",puVar2[4]);" (call_expression "printf(" child->name %s",puVar2[4])" (identifier "printf") (argument_list "(" child->name %s",puVar2[4])" (( "(") (string_literal "" child->name %s"" (" """) (string_content " child->name %s") (" """)) (, ",") (subscript_expression "puVar2[4]" (identifier "puVar2") ([ "[") (number_literal "4") (] "]")) () ")"))) (; ";")) (expression_statement "printf(" child->addr 0x%lx\n",*puVar2);" (call_expression "printf(" child->addr 0x%lx\n",*puVar2)" (identifier "printf") (argument_list "(" child->addr 0x%lx\n",*puVar2)" (( "(") (string_literal "" child->addr 0x%lx\n"" (" """) (string_content " child->addr 0x%lx") (escape_sequence "\n") (" """)) (, ",") (pointer_expression "*puVar2" (* "*") (identifier "puVar2")) () ")"))) (; ";")) (if_statement "if (puVar2[1] != local_28 || local_2c != *puVar2) goto LAB_0001edd0;" (if "if") (parenthesized_expression "(puVar2[1] != local_28 || local_2c != *puVar2)" (( "(") (binary_expression "puVar2[1] != local_28 || local_2c != *puVar2" (binary_expression "puVar2[1] != local_28" (subscript_expression "puVar2[1]" (identifier "puVar2") ([ "[") (number_literal "1") (] "]")) (!= "!=") (identifier "local_28")) (|| "||") (binary_expression "local_2c != *puVar2" (identifier "local_2c") (!= "!=") (pointer_expression "*puVar2" (* "*") (identifier "puVar2")))) () ")")) (goto_statement "goto LAB_0001edd0;" (goto "goto") (statement_identifier "LAB_0001edd0") (; ";"))) (} "}")))) (labeled_statement "LAB_0001eef8:\n          FUN_00014870(param_1,puVar2,0);" (statement_identifier "LAB_0001eef8") (: ":") (expression_statement "FUN_00014870(param_1,puVar2,0);" (call_expression "FUN_00014870(param_1,puVar2,0)" (identifier "FUN_00014870") (argument_list "(param_1,puVar2,0)" (( "(") (identifier "param_1") (, ",") (identifier "puVar2") (, ",") (number_literal "0") () ")"))) (; ";"))) (expression_statement "iVar1 = FUN_0001eac0();" (assignment_expression "iVar1 = FUN_0001eac0()" (identifier "iVar1") (= "=") (call_expression "FUN_0001eac0()" (identifier "FUN_0001eac0") (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "uVar4 = local_34 + iVar1;" (assignment_expression "uVar4 = local_34 + iVar1" (identifier "uVar4") (= "=") (binary_expression "local_34 + iVar1" (identifier "local_34") (+ "+") (identifier "iVar1"))) (; ";")) (expression_statement "iVar5 = (int)uVar4 >> 0x1f;" (assignment_expression "iVar5 = (int)uVar4 >> 0x1f" (identifier "iVar5") (= "=") (binary_expression "(int)uVar4 >> 0x1f" (cast_expression "(int)uVar4" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar4")) (>> ">>") (number_literal "0x1f"))) (; ";")) (} "}")) (else_clause "else {\n          uVar4 = 1;\n          iVar5 = 0;\n          if (iVar1 == 0xd) goto LAB_0001ec47;\n        }" (else "else") (compound_statement "{\n          uVar4 = 1;\n          iVar5 = 0;\n          if (iVar1 == 0xd) goto LAB_0001ec47;\n        }" ({ "{") (expression_statement "uVar4 = 1;" (assignment_expression "uVar4 = 1" (identifier "uVar4") (= "=") (number_literal "1")) (; ";")) (expression_statement "iVar5 = 0;" (assignment_expression "iVar5 = 0" (identifier "iVar5") (= "=") (number_literal "0")) (; ";")) (if_statement "if (iVar1 == 0xd) goto LAB_0001ec47;" (if "if") (parenthesized_expression "(iVar1 == 0xd)" (( "(") (binary_expression "iVar1 == 0xd" (identifier "iVar1") (== "==") (number_literal "0xd")) () ")")) (goto_statement "goto LAB_0001ec47;" (goto "goto") (statement_identifier "LAB_0001ec47") (; ";"))) (} "}")))) (} "}")) (else_clause "else {\nLAB_0001ebe0:\n        uVar4 = 1;\n        iVar5 = 0;\n      }" (else "else") (compound_statement "{\nLAB_0001ebe0:\n        uVar4 = 1;\n        iVar5 = 0;\n      }" ({ "{") (labeled_statement "LAB_0001ebe0:\n        uVar4 = 1;" (statement_identifier "LAB_0001ebe0") (: ":") (expression_statement "uVar4 = 1;" (assignment_expression "uVar4 = 1" (identifier "uVar4") (= "=") (number_literal "1")) (; ";"))) (expression_statement "iVar5 = 0;" (assignment_expression "iVar5 = 0" (identifier "iVar5") (= "=") (number_literal "0")) (; ";")) (} "}")))) (expression_statement "bVar6 = CARRY4(param_2,uVar4);" (assignment_expression "bVar6 = CARRY4(param_2,uVar4)" (identifier "bVar6") (= "=") (call_expression "CARRY4(param_2,uVar4)" (identifier "CARRY4") (argument_list "(param_2,uVar4)" (( "(") (identifier "param_2") (, ",") (identifier "uVar4") () ")")))) (; ";")) (expression_statement "param_2 = param_2 + uVar4;" (assignment_expression "param_2 = param_2 + uVar4" (identifier "param_2") (= "=") (binary_expression "param_2 + uVar4" (identifier "param_2") (+ "+") (identifier "uVar4"))) (; ";")) (expression_statement "param_3 = param_3 + iVar5 + (uint)bVar6;" (assignment_expression "param_3 = param_3 + iVar5 + (uint)bVar6" (identifier "param_3") (= "=") (binary_expression "param_3 + iVar5 + (uint)bVar6" (binary_expression "param_3 + iVar5" (identifier "param_3") (+ "+") (identifier "iVar5")) (+ "+") (cast_expression "(uint)bVar6" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar6")))) (; ";")) (expression_statement "iVar1 = (param_3 - param_5) - (uint)(param_2 < param_4);" (assignment_expression "iVar1 = (param_3 - param_5) - (uint)(param_2 < param_4)" (identifier "iVar1") (= "=") (binary_expression "(param_3 - param_5) - (uint)(param_2 < param_4)" (parenthesized_expression "(param_3 - param_5)" (( "(") (binary_expression "param_3 - param_5" (identifier "param_3") (- "-") (identifier "param_5")) () ")")) (- "-") (call_expression "(uint)(param_2 < param_4)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(param_2 < param_4)" (( "(") (binary_expression "param_2 < param_4" (identifier "param_2") (< "<") (identifier "param_4")) () ")"))))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(param_3 < param_5 || param_3 - param_5 < (uint)(param_2 < param_4))" (( "(") (binary_expression "param_3 < param_5 || param_3 - param_5 < (uint)(param_2 < param_4)" (binary_expression "param_3 < param_5" (identifier "param_3") (< "<") (identifier "param_5")) (|| "||") (binary_expression "param_3 - param_5 < (uint)(param_2 < param_4)" (binary_expression "param_3 - param_5" (identifier "param_3") (- "-") (identifier "param_5")) (< "<") (call_expression "(uint)(param_2 < param_4)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(param_2 < param_4)" (( "(") (binary_expression "param_2 < param_4" (identifier "param_2") (< "<") (identifier "param_4")) () ")"))))) () ")")) (; ";")) (} "}"))) (return_statement "return iVar1;" (return "return") (identifier "iVar1") (; ";")) (} "}")))

/* WARNING: Function: __x86.get_pc_thunk.ax replaced with injection: get_pc_thunk_ax */
/* WARNING: Unknown calling convention */

void function_1(type_1 *parent,type_2 var_25,type_2 var_4)

{
  type_2 var_30;
  type_3 var_26;
  type_4 var_9;
  long var_14;
  type_4 var_19;
  type_5 var_20;
  type_1 *var_34;
  char *var_13;
  int var_24;
  int var_32;
  bool bVar9;
  type_6 bVar10;
  type_5 var_6;
  type_5 var_5;
  type_7 *var_16;
  int var_15;
  int var_7;
  int var_35;
  
  if (function_1::inited == 0) {
    vax_find_call::inited = 1;
    var_1(&indirectchild);
    indirectchild.cg.prop.fract = 1.0;
    indirectchild.cg.cyc.head = &indirectchild;
  }
  var_6 = (type_5)var_4;
  if ((var_2 & 0x100U) != 0) {
    var_3("[findcall] %s: 0x%lx to 0x%lx\n",parent->name,(type_5)var_25,var_6);
  }
  var_5 = (type_5)(var_4 >> 0x20);
  if (var_25._4_4_ < var_5 || var_25._4_4_ - var_5 < (type_5)((type_5)var_25 < var_6)) {
    do {
      var_7 = (int)var_25;
      var_13 = (char *)((var_7 - (int)core_text_sect->vma) + (int)core_text_space);
      if (*var_13 == -5) {
        if ((var_2 & 0x100U) != 0) {
          var_3("[findcall]\t0x%lx:calls",var_7);
          var_9 = var_8((type_8 *)(type_5)(type_7)var_13[1]);
          if ((var_9 == var_10) || (var_9 == var_11)) {
            var_14 = var_12((type_8 *)(var_13 + 1));
            var_15 = var_14 + 1;
            var_16 = (type_7 *)(var_13 + var_15);
            var_19 = var_8((type_8 *)(type_5)*var_16);
            if ((var_2 & 0x100U) == 0) goto LAB_0001ec6e;
            var_13 = var_17(var_9);
            var_3("\tfirst operand is %s",var_13);
            var_13 = var_17(var_19);
            var_3("\tsecond operand is %s\n",var_13);
            if (var_18 < var_19) goto LAB_0001edd0;
            var_20 = 1 << ((type_7)var_19 & 0x1f);
            if ((var_20 & 0x151508) == 0) goto LAB_0001ec89;
LAB_0001eee4:
            var_34 = &indirectchild;
            goto LAB_0001eef8;
          }
LAB_0001edd0:
          if ((var_2 & 0x100U) != 0) {
            var_21("[findcall]\tbut it\'s a botch");
          }
          goto LAB_0001ebe0;
        }
        var_9 = var_8((type_8 *)(type_5)(type_7)var_13[1]);
        if (var_9 == var_10) {
LAB_0001ec47:
          var_14 = var_12((type_8 *)(var_13 + 1));
          var_15 = var_14 + 1;
          var_16 = (type_7 *)(var_13 + var_15);
          var_19 = var_8((type_8 *)(type_5)*var_16);
LAB_0001ec6e:
          if (var_18 < var_19) goto LAB_0001ebe0;
          var_20 = 1 << ((type_7)var_19 & 0x1f);
          if ((var_20 & 0x151508) != 0) goto LAB_0001eee4;
LAB_0001ec89:
          if ((var_20 & 0xa8000) == 0) goto LAB_0001edd0;
          var_9 = var_8((type_8 *)(type_5)*var_16);
          if (var_9 == var_22) {
            bVar10 = (*core_bfd->xvec->bfd_getx_signed_16)(var_16 + 1);
            var_24 = (int)((type_9)bVar10 >> 0x20);
            bVar9 = 0xfffffffd < (type_5)bVar10;
            var_32 = (type_5)bVar10 + 2;
LAB_0001efc9:
            var_26 = var_23(var_24 + (type_5)bVar9,var_32);
            var_7 = (int)(var_25 + var_26);
            var_30 = var_25 + var_26;
          }
          else {
            if (var_9 == var_27) {
              bVar10 = (*core_bfd->xvec->bfd_getx_signed_32)(var_16 + 1);
              var_24 = (int)((type_9)bVar10 >> 0x20);
              bVar9 = 0xfffffffb < (type_5)bVar10;
              var_32 = (type_5)bVar10 + 4;
              goto LAB_0001efc9;
            }
            if (var_9 == var_28) {
              var_30 = var_25 + (type_3)(int)((type_7)(var_16[1] + 0x80) - 0x7f);
              var_7 = (int)var_30;
            }
            else {
              var_29("[reladdr] not relative address\n",1,0x1f,*(type_10 **)PTR_stderr_0002cfcc);
              var_30 = var_25;
            }
          }
          var_35 = (int)(var_30 >> 0x20);
          var_32 = var_31((type_5)var_30);
          if ((var_32 == 0) ||
             (var_34 = var_33(&symtab,var_23(var_35,var_7)), var_34 == (type_1 *)0x0))
          goto LAB_0001edd0;
          if ((var_2 & 0x100U) == 0) {
            if (*(int *)((int)&var_34->addr + 4) != var_35 || (int)var_34->addr != var_7)
            goto LAB_0001ebe0;
          }
          else {
            var_3("[findcall]\tdestpc 0x%lx",(type_5)var_30);
            var_3(" child->name %s",var_34->name);
            var_3(" child->addr 0x%lx\n",(int)var_34->addr);
            if (*(int *)((int)&var_34->addr + 4) != var_35 || var_7 != (int)var_34->addr)
            goto LAB_0001edd0;
          }
LAB_0001eef8:
          var_36(parent,var_34,0);
          var_14 = var_12(var_16);
          var_15 = var_15 + var_14;
          var_32 = var_15 >> 0x1f;
        }
        else {
          var_15 = 1;
          var_32 = 0;
          if (var_9 == var_11) goto LAB_0001ec47;
        }
      }
      else {
LAB_0001ebe0:
        var_15 = 1;
        var_32 = 0;
      }
      var_26 = var_25 + var_23(var_32,var_15);
      var_20 = (type_5)((type_9)var_26 >> 0x20);
      var_25 = var_25 + var_23(var_32,var_15);
    } while (var_20 < var_5 || var_20 - var_5 < (type_5)((type_5)var_26 < var_6));
  }
  return;
}


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

/* WARNING: Function: __i686.get_pc_thunk.ax replaced with injection: get_pc_thunk_ax */

int MASKED(int param_1,uint param_2,uint param_3,uint param_4,uint param_5)

{
  int iVar1;
  uint *puVar2;
  undefined4 uVar3;
  uint uVar4;
  int iVar5;
  bool bVar6;
  undefined8 uVar7;
  char *local_38;
  int local_34;
  uint local_2c;
  uint local_28;
  
  if (DAT_0002e2a0 == 0) {
    DAT_0002e2a0 = 1;
    FUN_0001ce40(&DAT_0002e2c0);
    DAT_0002e390 = 0x3ff0000000000000;
    DAT_0002e3ac = &DAT_0002e2c0;
  }
  if ((DAT_0002e158 & 0x100) != 0) {
    printf("[findcall] %s: 0x%lx to 0x%lx\n",*(undefined4 *)(param_1 + 0x10),param_2,param_4);
  }
  iVar1 = (param_3 - param_5) - (uint)(param_2 < param_4);
  if (param_3 < param_5 || param_3 - param_5 < (uint)(param_2 < param_4)) {
    do {
      local_38 = (char *)((param_2 - *(int *)(DAT_0002e4fc + 0x1c)) + DAT_0002e4f0);
      if (*local_38 == -5) {
        if ((DAT_0002e158 & 0x100) != 0) {
          printf("[findcall]\t0x%lx:calls",param_2);
          iVar1 = FUN_0001e9c0();
          if ((iVar1 == 0) || (iVar1 == 0xd)) {
            local_34 = FUN_0001eac0();
            local_34 = local_34 + 1;
            local_38 = local_38 + local_34;
            uVar4 = FUN_0001e9c0();
            if ((DAT_0002e158 & 0x100) == 0) goto LAB_0001ec6e;
            uVar3 = FUN_0001e850();
            printf("\tfirst operand is %s",uVar3);
            uVar3 = FUN_0001e850();
            printf("\tsecond operand is %s\n",uVar3);
            if (0x14 < uVar4) goto LAB_0001edd0;
            uVar4 = 1 << ((byte)uVar4 & 0x1f);
            if ((uVar4 & 0x151508) == 0) goto LAB_0001ec89;
LAB_0001eee4:
            puVar2 = (uint *)&DAT_0002e2c0;
            goto LAB_0001eef8;
          }
LAB_0001edd0:
          if ((DAT_0002e158 & 0x100) != 0) {
            puts("[findcall]\tbut it\'s a botch");
          }
          goto LAB_0001ebe0;
        }
        iVar1 = FUN_0001e9c0();
        if (iVar1 == 0) {
LAB_0001ec47:
          local_34 = FUN_0001eac0();
          local_34 = local_34 + 1;
          local_38 = local_38 + local_34;
          uVar4 = FUN_0001e9c0();
LAB_0001ec6e:
          if (0x14 < uVar4) goto LAB_0001ebe0;
          uVar4 = 1 << ((byte)uVar4 & 0x1f);
          if ((uVar4 & 0x151508) != 0) goto LAB_0001eee4;
LAB_0001ec89:
          if ((uVar4 & 0xa8000) == 0) goto LAB_0001edd0;
          iVar1 = FUN_0001e9c0();
          if (iVar1 == 0x11) {
            uVar7 = (**(code **)(*(int *)(DAT_0002e4ec + 4) + 0x38))(local_38 + 1);
            iVar1 = (int)((ulonglong)uVar7 >> 0x20);
            bVar6 = 0xfffffffd < (uint)uVar7;
            uVar4 = (uint)uVar7 + 2;
LAB_0001efc9:
            local_2c = uVar4 + param_2;
            local_28 = iVar1 + (uint)bVar6 + param_3 + (uint)CARRY4(uVar4,param_2);
          }
          else {
            if (iVar1 == 0x13) {
              uVar7 = (**(code **)(*(int *)(DAT_0002e4ec + 4) + 0x2c))(local_38 + 1);
              iVar1 = (int)((ulonglong)uVar7 >> 0x20);
              bVar6 = 0xfffffffb < (uint)uVar7;
              uVar4 = (uint)uVar7 + 4;
              goto LAB_0001efc9;
            }
            if (iVar1 == 0xf) {
              uVar4 = (byte)(local_38[1] + 0x80) - 0x7f;
              local_2c = uVar4 + param_2;
              local_28 = ((int)uVar4 >> 0x1f) + param_3 + (uint)CARRY4(uVar4,param_2);
            }
            else {
              fwrite("[reladdr] not relative address\n",1,0x1f,*(FILE **)PTR_stderr_0002cfcc);
              local_2c = param_2;
              local_28 = param_3;
            }
          }
          iVar1 = FUN_0001c070(local_2c);
          if ((iVar1 == 0) ||
             (puVar2 = (uint *)FUN_0001d480(&DAT_0002e520,local_2c,local_28), puVar2 == (uint *)0x0)
             ) goto LAB_0001edd0;
          if ((DAT_0002e158 & 0x100) == 0) {
            if (puVar2[1] != local_28 || *puVar2 != local_2c) goto LAB_0001ebe0;
          }
          else {
            printf("[findcall]\tdestpc 0x%lx",local_2c);
            printf(" child->name %s",puVar2[4]);
            printf(" child->addr 0x%lx\n",*puVar2);
            if (puVar2[1] != local_28 || local_2c != *puVar2) goto LAB_0001edd0;
          }
LAB_0001eef8:
          FUN_00014870(param_1,puVar2,0);
          iVar1 = FUN_0001eac0();
          uVar4 = local_34 + iVar1;
          iVar5 = (int)uVar4 >> 0x1f;
        }
        else {
          uVar4 = 1;
          iVar5 = 0;
          if (iVar1 == 0xd) goto LAB_0001ec47;
        }
      }
      else {
LAB_0001ebe0:
        uVar4 = 1;
        iVar5 = 0;
      }
      bVar6 = CARRY4(param_2,uVar4);
      param_2 = param_2 + uVar4;
      param_3 = param_3 + iVar5 + (uint)bVar6;
      iVar1 = (param_3 - param_5) - (uint)(param_2 < param_4);
    } while (param_3 < param_5 || param_3 - param_5 < (uint)(param_2 < param_4));
  }
  return iVar1;
}

