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

{
  int iVar1;
  bfd_vma bVar2;
  Sym *child;
  
  if ((debug_level._1_1_ & 1) != 0) {
    printf("[find_call] %s: 0x%lx to 0x%lx\n",parent->name,p_lowpc,p_highpc);
  }
  if (p_highpc <= p_lowpc) {
    return;
  }
  do {
    while (bVar2 = (*core_bfd->xvec->bfd_getx32)
                             ((void *)((p_lowpc - core_text_sect->vma) + (long)core_text_space)),
          ((uint)bVar2 & 0x7c000000) != 0x14000000) {
LAB_0010e038:
      p_lowpc = p_lowpc + 4;
      if (p_highpc <= p_lowpc) {
        return;
      }
    }
    if ((debug_level._1_1_ & 1) != 0) {
      printf("[find_call] 0x%lx: bl",p_lowpc);
    }
    bVar2 = ((long)(bVar2 << 0x26) >> 0x24) + p_lowpc;
    iVar1 = hist_check_address((uint)bVar2);
    if ((iVar1 != 0) && (child = sym_lookup(&symtab,bVar2), child != (Sym *)0x0)) {
      if ((debug_level._1_1_ & 1) == 0) {
        if (bVar2 != child->addr) goto LAB_0010e038;
      }
      else {
        printf("\tdest_pc=0x%lx, (name=%s, addr=0x%lx)\n",bVar2,child->name);
        if (child->addr != bVar2) goto LAB_0010e097;
      }
      arc_add(parent,child,0);
      goto LAB_0010e038;
    }
LAB_0010e097:
    if ((debug_level._1_1_ & 1) == 0) goto LAB_0010e038;
    p_lowpc = p_lowpc + 4;
    puts("\tbut it\'s a botch");
    if (p_highpc <= p_lowpc) {
      return;
    }
  } while( true );
}



void FUN_0010e000(long param_1,ulong param_2,ulong param_3)

{
  int iVar1;
  long lVar2;
  ulong *puVar3;
  ulong uVar4;
  
  if ((DAT_001195e4._1_1_ & 1) != 0) {
    printf("[find_call] %s: 0x%lx to 0x%lx\n",*(undefined8 *)(param_1 + 0x10),param_2,param_3);
  }
  if (param_3 <= param_2) {
    return;
  }
  do {
    while (lVar2 = (**(code **)(*(long *)(DAT_00119ad8 + 8) + 0x38))
                             ((param_2 - *(long *)(DAT_00119af8 + 0x28)) + DAT_00119ae0),
          ((uint)lVar2 & 0x7c000000) != 0x14000000) {
LAB_0010e038:
      param_2 = param_2 + 4;
      if (param_3 <= param_2) {
        return;
      }
    }
    if ((DAT_001195e4._1_1_ & 1) != 0) {
      printf("[find_call] 0x%lx: bl",param_2);
    }
    uVar4 = ((lVar2 << 0x26) >> 0x24) + param_2;
    iVar1 = FUN_0010b480(uVar4 & 0xffffffff);
    if ((iVar1 != 0) &&
       (puVar3 = (ulong *)FUN_0010c540(&DAT_00119b30,uVar4), puVar3 != (ulong *)0x0)) {
      if ((DAT_001195e4._1_1_ & 1) == 0) {
        if (uVar4 != *puVar3) goto LAB_0010e038;
      }
      else {
        printf("\tdest_pc=0x%lx, (name=%s, addr=0x%lx)\n",uVar4,puVar3[2]);
        if (*puVar3 != uVar4) goto LAB_0010e097;
      }
      FUN_00104520(param_1,puVar3,0);
      goto LAB_0010e038;
    }
LAB_0010e097:
    if ((DAT_001195e4._1_1_ & 1) == 0) goto LAB_0010e038;
    param_2 = param_2 + 4;
    puts("\tbut it\'s a botch");
    if (param_3 <= param_2) {
      return;
    }
  } while( true );
}


PUSH R15
PUSH R14
PUSH R13
MOV R13,RDI
PUSH R12
PUSH RBP
MOV RBP,RDX
PUSH RBX
MOV RBX,RSI
SUB RSP,0x8
TEST byte ptr [0x001195e5],0x1
JNZ 0x0010e140
LEA R12,[0x11256b]
CMP RBX,RBP
JC 0x0010e041
JMP 0x0010e0b1
ADD RBX,0x4
CMP RBP,RBX
JBE 0x0010e0b1
MOV RAX,qword ptr [0x00119af8]
MOV RDI,RBX
SUB RDI,qword ptr [RAX + 0x28]
MOV RAX,qword ptr [0x00119ad8]
ADD RDI,qword ptr [0x00119ae0]
MOV RAX,qword ptr [RAX + 0x8]
CALL qword ptr [RAX + 0x38]
MOV R14,RAX
AND EAX,0x7c000000
CMP EAX,0x14000000
JNZ 0x0010e038
TEST byte ptr [0x001195e5],0x1
JNZ 0x0010e100
SHL R14,0x26
SAR R14,0x24
ADD R14,RBX
MOV EDI,R14D
CALL 0x0010b480
TEST EAX,EAX
JNZ 0x0010e0c0
TEST byte ptr [0x001195e5],0x1
JZ 0x0010e038
MOV RDI,R12
ADD RBX,0x4
CALL 0x001020c0
CMP RBP,RBX
JA 0x0010e041
ADD RSP,0x8
POP RBX
POP RBP
POP R12
POP R13
POP R14
POP R15
RET
MOV RSI,R14
LEA RDI,[0x119b30]
CALL 0x0010c540
MOV R15,RAX
TEST RAX,RAX
JZ 0x0010e097
MOV RCX,qword ptr [RAX]
TEST byte ptr [0x001195e5],0x1
JNZ 0x0010e120
CMP R14,RCX
JNZ 0x0010e038
XOR EDX,EDX
MOV RSI,R15
MOV RDI,R13
CALL 0x00104520
JMP 0x0010e038
MOV RSI,RBX
LEA RDI,[0x1126e8]
XOR EAX,EAX
CALL 0x001021c0
JMP 0x0010e080
MOV RDX,qword ptr [RAX + 0x10]
MOV RSI,R14
XOR EAX,EAX
LEA RDI,[0x112678]
CALL 0x001021c0
CMP qword ptr [R15],R14
JNZ 0x0010e097
JMP 0x0010e0ec
MOV RSI,qword ptr [RDI + 0x10]
MOV RCX,RDX
LEA RDI,[0x112330]
XOR EAX,EAX
MOV RDX,RBX
CALL 0x001021c0
JMP 0x0010e024
(translation_unit "void FUN_0010e000(long param_1,ulong param_2,ulong param_3)\n\n{\n  int iVar1;\n  long lVar2;\n  ulong *puVar3;\n  ulong uVar4;\n  \n  if ((DAT_001195e4._1_1_ & 1) != 0) {\n    printf("[find_call] %s: 0x%lx to 0x%lx\n",*(undefined8 *)(param_1 + 0x10),param_2,param_3);\n  }\n  if (param_3 <= param_2) {\n    return;\n  }\n  do {\n    while (lVar2 = (**(code **)(*(long *)(DAT_00119ad8 + 8) + 0x38))\n                             ((param_2 - *(long *)(DAT_00119af8 + 0x28)) + DAT_00119ae0),\n          ((uint)lVar2 & 0x7c000000) != 0x14000000) {\nLAB_0010e038:\n      param_2 = param_2 + 4;\n      if (param_3 <= param_2) {\n        return;\n      }\n    }\n    if ((DAT_001195e4._1_1_ & 1) != 0) {\n      printf("[find_call] 0x%lx: bl",param_2);\n    }\n    uVar4 = ((lVar2 << 0x26) >> 0x24) + param_2;\n    iVar1 = FUN_0010b480(uVar4 & 0xffffffff);\n    if ((iVar1 != 0) &&\n       (puVar3 = (ulong *)FUN_0010c540(&DAT_00119b30,uVar4), puVar3 != (ulong *)0x0)) {\n      if ((DAT_001195e4._1_1_ & 1) == 0) {\n        if (uVar4 != *puVar3) goto LAB_0010e038;\n      }\n      else {\n        printf("\tdest_pc=0x%lx, (name=%s, addr=0x%lx)\n",uVar4,puVar3[2]);\n        if (*puVar3 != uVar4) goto LAB_0010e097;\n      }\n      FUN_00104520(param_1,puVar3,0);\n      goto LAB_0010e038;\n    }\nLAB_0010e097:\n    if ((DAT_001195e4._1_1_ & 1) == 0) goto LAB_0010e038;\n    param_2 = param_2 + 4;\n    puts("\tbut it\'s a botch");\n    if (param_3 <= param_2) {\n      return;\n    }\n  } while( true );\n}\n\n" (function_definition "void FUN_0010e000(long param_1,ulong param_2,ulong param_3)\n\n{\n  int iVar1;\n  long lVar2;\n  ulong *puVar3;\n  ulong uVar4;\n  \n  if ((DAT_001195e4._1_1_ & 1) != 0) {\n    printf("[find_call] %s: 0x%lx to 0x%lx\n",*(undefined8 *)(param_1 + 0x10),param_2,param_3);\n  }\n  if (param_3 <= param_2) {\n    return;\n  }\n  do {\n    while (lVar2 = (**(code **)(*(long *)(DAT_00119ad8 + 8) + 0x38))\n                             ((param_2 - *(long *)(DAT_00119af8 + 0x28)) + DAT_00119ae0),\n          ((uint)lVar2 & 0x7c000000) != 0x14000000) {\nLAB_0010e038:\n      param_2 = param_2 + 4;\n      if (param_3 <= param_2) {\n        return;\n      }\n    }\n    if ((DAT_001195e4._1_1_ & 1) != 0) {\n      printf("[find_call] 0x%lx: bl",param_2);\n    }\n    uVar4 = ((lVar2 << 0x26) >> 0x24) + param_2;\n    iVar1 = FUN_0010b480(uVar4 & 0xffffffff);\n    if ((iVar1 != 0) &&\n       (puVar3 = (ulong *)FUN_0010c540(&DAT_00119b30,uVar4), puVar3 != (ulong *)0x0)) {\n      if ((DAT_001195e4._1_1_ & 1) == 0) {\n        if (uVar4 != *puVar3) goto LAB_0010e038;\n      }\n      else {\n        printf("\tdest_pc=0x%lx, (name=%s, addr=0x%lx)\n",uVar4,puVar3[2]);\n        if (*puVar3 != uVar4) goto LAB_0010e097;\n      }\n      FUN_00104520(param_1,puVar3,0);\n      goto LAB_0010e038;\n    }\nLAB_0010e097:\n    if ((DAT_001195e4._1_1_ & 1) == 0) goto LAB_0010e038;\n    param_2 = param_2 + 4;\n    puts("\tbut it\'s a botch");\n    if (param_3 <= param_2) {\n      return;\n    }\n  } while( true );\n}" primitive_type (function_declarator "FUN_0010e000(long param_1,ulong param_2,ulong param_3)" identifier (parameter_list "(long param_1,ulong param_2,ulong param_3)" ( (parameter_declaration "long param_1" (sized_type_specifier "long" long) identifier) , (parameter_declaration "ulong param_2" type_identifier identifier) , (parameter_declaration "ulong param_3" type_identifier identifier) ))) (compound_statement "{\n  int iVar1;\n  long lVar2;\n  ulong *puVar3;\n  ulong uVar4;\n  \n  if ((DAT_001195e4._1_1_ & 1) != 0) {\n    printf("[find_call] %s: 0x%lx to 0x%lx\n",*(undefined8 *)(param_1 + 0x10),param_2,param_3);\n  }\n  if (param_3 <= param_2) {\n    return;\n  }\n  do {\n    while (lVar2 = (**(code **)(*(long *)(DAT_00119ad8 + 8) + 0x38))\n                             ((param_2 - *(long *)(DAT_00119af8 + 0x28)) + DAT_00119ae0),\n          ((uint)lVar2 & 0x7c000000) != 0x14000000) {\nLAB_0010e038:\n      param_2 = param_2 + 4;\n      if (param_3 <= param_2) {\n        return;\n      }\n    }\n    if ((DAT_001195e4._1_1_ & 1) != 0) {\n      printf("[find_call] 0x%lx: bl",param_2);\n    }\n    uVar4 = ((lVar2 << 0x26) >> 0x24) + param_2;\n    iVar1 = FUN_0010b480(uVar4 & 0xffffffff);\n    if ((iVar1 != 0) &&\n       (puVar3 = (ulong *)FUN_0010c540(&DAT_00119b30,uVar4), puVar3 != (ulong *)0x0)) {\n      if ((DAT_001195e4._1_1_ & 1) == 0) {\n        if (uVar4 != *puVar3) goto LAB_0010e038;\n      }\n      else {\n        printf("\tdest_pc=0x%lx, (name=%s, addr=0x%lx)\n",uVar4,puVar3[2]);\n        if (*puVar3 != uVar4) goto LAB_0010e097;\n      }\n      FUN_00104520(param_1,puVar3,0);\n      goto LAB_0010e038;\n    }\nLAB_0010e097:\n    if ((DAT_001195e4._1_1_ & 1) == 0) goto LAB_0010e038;\n    param_2 = param_2 + 4;\n    puts("\tbut it\'s a botch");\n    if (param_3 <= param_2) {\n      return;\n    }\n  } while( true );\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "long lVar2;" (sized_type_specifier "long" long) identifier ;) (declaration "ulong *puVar3;" type_identifier (pointer_declarator "*puVar3" * identifier) ;) (declaration "ulong uVar4;" type_identifier identifier ;) (if_statement "if ((DAT_001195e4._1_1_ & 1) != 0) {\n    printf("[find_call] %s: 0x%lx to 0x%lx\n",*(undefined8 *)(param_1 + 0x10),param_2,param_3);\n  }" if (parenthesized_expression "((DAT_001195e4._1_1_ & 1) != 0)" ( (binary_expression "(DAT_001195e4._1_1_ & 1) != 0" (parenthesized_expression "(DAT_001195e4._1_1_ & 1)" ( (binary_expression "DAT_001195e4._1_1_ & 1" (field_expression "DAT_001195e4._1_1_" identifier . field_identifier) & number_literal) )) != number_literal) )) (compound_statement "{\n    printf("[find_call] %s: 0x%lx to 0x%lx\n",*(undefined8 *)(param_1 + 0x10),param_2,param_3);\n  }" { (expression_statement "printf("[find_call] %s: 0x%lx to 0x%lx\n",*(undefined8 *)(param_1 + 0x10),param_2,param_3);" (call_expression "printf("[find_call] %s: 0x%lx to 0x%lx\n",*(undefined8 *)(param_1 + 0x10),param_2,param_3)" identifier (argument_list "("[find_call] %s: 0x%lx to 0x%lx\n",*(undefined8 *)(param_1 + 0x10),param_2,param_3)" ( (string_literal ""[find_call] %s: 0x%lx to 0x%lx\n"" " string_content escape_sequence ") , (pointer_expression "*(undefined8 *)(param_1 + 0x10)" * (cast_expression "(undefined8 *)(param_1 + 0x10)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x10)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) )))) , identifier , identifier ))) ;) })) (if_statement "if (param_3 <= param_2) {\n    return;\n  }" if (parenthesized_expression "(param_3 <= param_2)" ( (binary_expression "param_3 <= param_2" identifier <= identifier) )) (compound_statement "{\n    return;\n  }" { (return_statement "return;" return ;) })) (do_statement "do {\n    while (lVar2 = (**(code **)(*(long *)(DAT_00119ad8 + 8) + 0x38))\n                             ((param_2 - *(long *)(DAT_00119af8 + 0x28)) + DAT_00119ae0),\n          ((uint)lVar2 & 0x7c000000) != 0x14000000) {\nLAB_0010e038:\n      param_2 = param_2 + 4;\n      if (param_3 <= param_2) {\n        return;\n      }\n    }\n    if ((DAT_001195e4._1_1_ & 1) != 0) {\n      printf("[find_call] 0x%lx: bl",param_2);\n    }\n    uVar4 = ((lVar2 << 0x26) >> 0x24) + param_2;\n    iVar1 = FUN_0010b480(uVar4 & 0xffffffff);\n    if ((iVar1 != 0) &&\n       (puVar3 = (ulong *)FUN_0010c540(&DAT_00119b30,uVar4), puVar3 != (ulong *)0x0)) {\n      if ((DAT_001195e4._1_1_ & 1) == 0) {\n        if (uVar4 != *puVar3) goto LAB_0010e038;\n      }\n      else {\n        printf("\tdest_pc=0x%lx, (name=%s, addr=0x%lx)\n",uVar4,puVar3[2]);\n        if (*puVar3 != uVar4) goto LAB_0010e097;\n      }\n      FUN_00104520(param_1,puVar3,0);\n      goto LAB_0010e038;\n    }\nLAB_0010e097:\n    if ((DAT_001195e4._1_1_ & 1) == 0) goto LAB_0010e038;\n    param_2 = param_2 + 4;\n    puts("\tbut it\'s a botch");\n    if (param_3 <= param_2) {\n      return;\n    }\n  } while( true );" do (compound_statement "{\n    while (lVar2 = (**(code **)(*(long *)(DAT_00119ad8 + 8) + 0x38))\n                             ((param_2 - *(long *)(DAT_00119af8 + 0x28)) + DAT_00119ae0),\n          ((uint)lVar2 & 0x7c000000) != 0x14000000) {\nLAB_0010e038:\n      param_2 = param_2 + 4;\n      if (param_3 <= param_2) {\n        return;\n      }\n    }\n    if ((DAT_001195e4._1_1_ & 1) != 0) {\n      printf("[find_call] 0x%lx: bl",param_2);\n    }\n    uVar4 = ((lVar2 << 0x26) >> 0x24) + param_2;\n    iVar1 = FUN_0010b480(uVar4 & 0xffffffff);\n    if ((iVar1 != 0) &&\n       (puVar3 = (ulong *)FUN_0010c540(&DAT_00119b30,uVar4), puVar3 != (ulong *)0x0)) {\n      if ((DAT_001195e4._1_1_ & 1) == 0) {\n        if (uVar4 != *puVar3) goto LAB_0010e038;\n      }\n      else {\n        printf("\tdest_pc=0x%lx, (name=%s, addr=0x%lx)\n",uVar4,puVar3[2]);\n        if (*puVar3 != uVar4) goto LAB_0010e097;\n      }\n      FUN_00104520(param_1,puVar3,0);\n      goto LAB_0010e038;\n    }\nLAB_0010e097:\n    if ((DAT_001195e4._1_1_ & 1) == 0) goto LAB_0010e038;\n    param_2 = param_2 + 4;\n    puts("\tbut it\'s a botch");\n    if (param_3 <= param_2) {\n      return;\n    }\n  }" { (while_statement "while (lVar2 = (**(code **)(*(long *)(DAT_00119ad8 + 8) + 0x38))\n                             ((param_2 - *(long *)(DAT_00119af8 + 0x28)) + DAT_00119ae0),\n          ((uint)lVar2 & 0x7c000000) != 0x14000000) {\nLAB_0010e038:\n      param_2 = param_2 + 4;\n      if (param_3 <= param_2) {\n        return;\n      }\n    }" while (parenthesized_expression "(lVar2 = (**(code **)(*(long *)(DAT_00119ad8 + 8) + 0x38))\n                             ((param_2 - *(long *)(DAT_00119af8 + 0x28)) + DAT_00119ae0),\n          ((uint)lVar2 & 0x7c000000) != 0x14000000)" ( (comma_expression "lVar2 = (**(code **)(*(long *)(DAT_00119ad8 + 8) + 0x38))\n                             ((param_2 - *(long *)(DAT_00119af8 + 0x28)) + DAT_00119ae0),\n          ((uint)lVar2 & 0x7c000000) != 0x14000000" (assignment_expression "lVar2 = (**(code **)(*(long *)(DAT_00119ad8 + 8) + 0x38))\n                             ((param_2 - *(long *)(DAT_00119af8 + 0x28)) + DAT_00119ae0)" identifier = (call_expression "(**(code **)(*(long *)(DAT_00119ad8 + 8) + 0x38))\n                             ((param_2 - *(long *)(DAT_00119af8 + 0x28)) + DAT_00119ae0)" (parenthesized_expression "(**(code **)(*(long *)(DAT_00119ad8 + 8) + 0x38))" ( (pointer_expression "**(code **)(*(long *)(DAT_00119ad8 + 8) + 0x38)" * (pointer_expression "*(code **)(*(long *)(DAT_00119ad8 + 8) + 0x38)" * (cast_expression "(code **)(*(long *)(DAT_00119ad8 + 8) + 0x38)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(long *)(DAT_00119ad8 + 8) + 0x38)" ( (binary_expression "*(long *)(DAT_00119ad8 + 8) + 0x38" (pointer_expression "*(long *)(DAT_00119ad8 + 8)" * (cast_expression "(long *)(DAT_00119ad8 + 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(DAT_00119ad8 + 8)" ( (binary_expression "DAT_00119ad8 + 8" identifier + number_literal) )))) + number_literal) ))))) )) (argument_list "((param_2 - *(long *)(DAT_00119af8 + 0x28)) + DAT_00119ae0)" ( (binary_expression "(param_2 - *(long *)(DAT_00119af8 + 0x28)) + DAT_00119ae0" (parenthesized_expression "(param_2 - *(long *)(DAT_00119af8 + 0x28))" ( (binary_expression "param_2 - *(long *)(DAT_00119af8 + 0x28)" identifier - (pointer_expression "*(long *)(DAT_00119af8 + 0x28)" * (cast_expression "(long *)(DAT_00119af8 + 0x28)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(DAT_00119af8 + 0x28)" ( (binary_expression "DAT_00119af8 + 0x28" identifier + number_literal) ))))) )) + identifier) )))) , (binary_expression "((uint)lVar2 & 0x7c000000) != 0x14000000" (parenthesized_expression "((uint)lVar2 & 0x7c000000)" ( (binary_expression "(uint)lVar2 & 0x7c000000" (cast_expression "(uint)lVar2" ( (type_descriptor "uint" type_identifier) ) identifier) & number_literal) )) != number_literal)) )) (compound_statement "{\nLAB_0010e038:\n      param_2 = param_2 + 4;\n      if (param_3 <= param_2) {\n        return;\n      }\n    }" { (labeled_statement "LAB_0010e038:\n      param_2 = param_2 + 4;" statement_identifier : (expression_statement "param_2 = param_2 + 4;" (assignment_expression "param_2 = param_2 + 4" identifier = (binary_expression "param_2 + 4" identifier + number_literal)) ;)) (if_statement "if (param_3 <= param_2) {\n        return;\n      }" if (parenthesized_expression "(param_3 <= param_2)" ( (binary_expression "param_3 <= param_2" identifier <= identifier) )) (compound_statement "{\n        return;\n      }" { (return_statement "return;" return ;) })) })) (if_statement "if ((DAT_001195e4._1_1_ & 1) != 0) {\n      printf("[find_call] 0x%lx: bl",param_2);\n    }" if (parenthesized_expression "((DAT_001195e4._1_1_ & 1) != 0)" ( (binary_expression "(DAT_001195e4._1_1_ & 1) != 0" (parenthesized_expression "(DAT_001195e4._1_1_ & 1)" ( (binary_expression "DAT_001195e4._1_1_ & 1" (field_expression "DAT_001195e4._1_1_" identifier . field_identifier) & number_literal) )) != number_literal) )) (compound_statement "{\n      printf("[find_call] 0x%lx: bl",param_2);\n    }" { (expression_statement "printf("[find_call] 0x%lx: bl",param_2);" (call_expression "printf("[find_call] 0x%lx: bl",param_2)" identifier (argument_list "("[find_call] 0x%lx: bl",param_2)" ( (string_literal ""[find_call] 0x%lx: bl"" " string_content ") , identifier ))) ;) })) (expression_statement "uVar4 = ((lVar2 << 0x26) >> 0x24) + param_2;" (assignment_expression "uVar4 = ((lVar2 << 0x26) >> 0x24) + param_2" identifier = (binary_expression "((lVar2 << 0x26) >> 0x24) + param_2" (parenthesized_expression "((lVar2 << 0x26) >> 0x24)" ( (binary_expression "(lVar2 << 0x26) >> 0x24" (parenthesized_expression "(lVar2 << 0x26)" ( (binary_expression "lVar2 << 0x26" identifier << number_literal) )) >> number_literal) )) + identifier)) ;) (expression_statement "iVar1 = FUN_0010b480(uVar4 & 0xffffffff);" (assignment_expression "iVar1 = FUN_0010b480(uVar4 & 0xffffffff)" identifier = (call_expression "FUN_0010b480(uVar4 & 0xffffffff)" identifier (argument_list "(uVar4 & 0xffffffff)" ( (binary_expression "uVar4 & 0xffffffff" identifier & number_literal) )))) ;) (if_statement "if ((iVar1 != 0) &&\n       (puVar3 = (ulong *)FUN_0010c540(&DAT_00119b30,uVar4), puVar3 != (ulong *)0x0)) {\n      if ((DAT_001195e4._1_1_ & 1) == 0) {\n        if (uVar4 != *puVar3) goto LAB_0010e038;\n      }\n      else {\n        printf("\tdest_pc=0x%lx, (name=%s, addr=0x%lx)\n",uVar4,puVar3[2]);\n        if (*puVar3 != uVar4) goto LAB_0010e097;\n      }\n      FUN_00104520(param_1,puVar3,0);\n      goto LAB_0010e038;\n    }" if (parenthesized_expression "((iVar1 != 0) &&\n       (puVar3 = (ulong *)FUN_0010c540(&DAT_00119b30,uVar4), puVar3 != (ulong *)0x0))" ( (binary_expression "(iVar1 != 0) &&\n       (puVar3 = (ulong *)FUN_0010c540(&DAT_00119b30,uVar4), puVar3 != (ulong *)0x0)" (parenthesized_expression "(iVar1 != 0)" ( (binary_expression "iVar1 != 0" identifier != number_literal) )) && (parenthesized_expression "(puVar3 = (ulong *)FUN_0010c540(&DAT_00119b30,uVar4), puVar3 != (ulong *)0x0)" ( (comma_expression "puVar3 = (ulong *)FUN_0010c540(&DAT_00119b30,uVar4), puVar3 != (ulong *)0x0" (assignment_expression "puVar3 = (ulong *)FUN_0010c540(&DAT_00119b30,uVar4)" identifier = (cast_expression "(ulong *)FUN_0010c540(&DAT_00119b30,uVar4)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_0010c540(&DAT_00119b30,uVar4)" identifier (argument_list "(&DAT_00119b30,uVar4)" ( (pointer_expression "&DAT_00119b30" & identifier) , identifier ))))) , (binary_expression "puVar3 != (ulong *)0x0" identifier != (cast_expression "(ulong *)0x0" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) ))) )) (compound_statement "{\n      if ((DAT_001195e4._1_1_ & 1) == 0) {\n        if (uVar4 != *puVar3) goto LAB_0010e038;\n      }\n      else {\n        printf("\tdest_pc=0x%lx, (name=%s, addr=0x%lx)\n",uVar4,puVar3[2]);\n        if (*puVar3 != uVar4) goto LAB_0010e097;\n      }\n      FUN_00104520(param_1,puVar3,0);\n      goto LAB_0010e038;\n    }" { (if_statement "if ((DAT_001195e4._1_1_ & 1) == 0) {\n        if (uVar4 != *puVar3) goto LAB_0010e038;\n      }\n      else {\n        printf("\tdest_pc=0x%lx, (name=%s, addr=0x%lx)\n",uVar4,puVar3[2]);\n        if (*puVar3 != uVar4) goto LAB_0010e097;\n      }" if (parenthesized_expression "((DAT_001195e4._1_1_ & 1) == 0)" ( (binary_expression "(DAT_001195e4._1_1_ & 1) == 0" (parenthesized_expression "(DAT_001195e4._1_1_ & 1)" ( (binary_expression "DAT_001195e4._1_1_ & 1" (field_expression "DAT_001195e4._1_1_" identifier . field_identifier) & number_literal) )) == number_literal) )) (compound_statement "{\n        if (uVar4 != *puVar3) goto LAB_0010e038;\n      }" { (if_statement "if (uVar4 != *puVar3) goto LAB_0010e038;" if (parenthesized_expression "(uVar4 != *puVar3)" ( (binary_expression "uVar4 != *puVar3" identifier != (pointer_expression "*puVar3" * identifier)) )) (goto_statement "goto LAB_0010e038;" goto statement_identifier ;)) }) (else_clause "else {\n        printf("\tdest_pc=0x%lx, (name=%s, addr=0x%lx)\n",uVar4,puVar3[2]);\n        if (*puVar3 != uVar4) goto LAB_0010e097;\n      }" else (compound_statement "{\n        printf("\tdest_pc=0x%lx, (name=%s, addr=0x%lx)\n",uVar4,puVar3[2]);\n        if (*puVar3 != uVar4) goto LAB_0010e097;\n      }" { (expression_statement "printf("\tdest_pc=0x%lx, (name=%s, addr=0x%lx)\n",uVar4,puVar3[2]);" (call_expression "printf("\tdest_pc=0x%lx, (name=%s, addr=0x%lx)\n",uVar4,puVar3[2])" identifier (argument_list "("\tdest_pc=0x%lx, (name=%s, addr=0x%lx)\n",uVar4,puVar3[2])" ( (string_literal ""\tdest_pc=0x%lx, (name=%s, addr=0x%lx)\n"" " escape_sequence string_content escape_sequence ") , identifier , (subscript_expression "puVar3[2]" identifier [ number_literal ]) ))) ;) (if_statement "if (*puVar3 != uVar4) goto LAB_0010e097;" if (parenthesized_expression "(*puVar3 != uVar4)" ( (binary_expression "*puVar3 != uVar4" (pointer_expression "*puVar3" * identifier) != identifier) )) (goto_statement "goto LAB_0010e097;" goto statement_identifier ;)) }))) (expression_statement "FUN_00104520(param_1,puVar3,0);" (call_expression "FUN_00104520(param_1,puVar3,0)" identifier (argument_list "(param_1,puVar3,0)" ( identifier , identifier , number_literal ))) ;) (goto_statement "goto LAB_0010e038;" goto statement_identifier ;) })) (labeled_statement "LAB_0010e097:\n    if ((DAT_001195e4._1_1_ & 1) == 0) goto LAB_0010e038;" statement_identifier : (if_statement "if ((DAT_001195e4._1_1_ & 1) == 0) goto LAB_0010e038;" if (parenthesized_expression "((DAT_001195e4._1_1_ & 1) == 0)" ( (binary_expression "(DAT_001195e4._1_1_ & 1) == 0" (parenthesized_expression "(DAT_001195e4._1_1_ & 1)" ( (binary_expression "DAT_001195e4._1_1_ & 1" (field_expression "DAT_001195e4._1_1_" identifier . field_identifier) & number_literal) )) == number_literal) )) (goto_statement "goto LAB_0010e038;" goto statement_identifier ;))) (expression_statement "param_2 = param_2 + 4;" (assignment_expression "param_2 = param_2 + 4" identifier = (binary_expression "param_2 + 4" identifier + number_literal)) ;) (expression_statement "puts("\tbut it\'s a botch");" (call_expression "puts("\tbut it\'s a botch")" identifier (argument_list "("\tbut it\'s a botch")" ( (string_literal ""\tbut it\'s a botch"" " escape_sequence string_content escape_sequence string_content ") ))) ;) (if_statement "if (param_3 <= param_2) {\n      return;\n    }" if (parenthesized_expression "(param_3 <= param_2)" ( (binary_expression "param_3 <= param_2" identifier <= identifier) )) (compound_statement "{\n      return;\n    }" { (return_statement "return;" return ;) })) }) while (parenthesized_expression "( true )" ( true )) ;) })))
(translation_unit "void aarch64_find_call(Sym *parent,bfd_vma p_lowpc,bfd_vma p_highpc)\n\n{\n  int iVar1;\n  bfd_vma bVar2;\n  Sym *child;\n  \n  if ((debug_level._1_1_ & 1) != 0) {\n    printf("[find_call] %s: 0x%lx to 0x%lx\n",parent->name,p_lowpc,p_highpc);\n  }\n  if (p_highpc <= p_lowpc) {\n    return;\n  }\n  do {\n    while (bVar2 = (*core_bfd->xvec->bfd_getx32)\n                             ((void *)((p_lowpc - core_text_sect->vma) + (long)core_text_space)),\n          ((uint)bVar2 & 0x7c000000) != 0x14000000) {\nLAB_0010e038:\n      p_lowpc = p_lowpc + 4;\n      if (p_highpc <= p_lowpc) {\n        return;\n      }\n    }\n    if ((debug_level._1_1_ & 1) != 0) {\n      printf("[find_call] 0x%lx: bl",p_lowpc);\n    }\n    bVar2 = ((long)(bVar2 << 0x26) >> 0x24) + p_lowpc;\n    iVar1 = hist_check_address((uint)bVar2);\n    if ((iVar1 != 0) && (child = sym_lookup(&symtab,bVar2), child != (Sym *)0x0)) {\n      if ((debug_level._1_1_ & 1) == 0) {\n        if (bVar2 != child->addr) goto LAB_0010e038;\n      }\n      else {\n        printf("\tdest_pc=0x%lx, (name=%s, addr=0x%lx)\n",bVar2,child->name);\n        if (child->addr != bVar2) goto LAB_0010e097;\n      }\n      arc_add(parent,child,0);\n      goto LAB_0010e038;\n    }\nLAB_0010e097:\n    if ((debug_level._1_1_ & 1) == 0) goto LAB_0010e038;\n    p_lowpc = p_lowpc + 4;\n    puts("\tbut it\'s a botch");\n    if (p_highpc <= p_lowpc) {\n      return;\n    }\n  } while( true );\n}\n\n" (function_definition "void aarch64_find_call(Sym *parent,bfd_vma p_lowpc,bfd_vma p_highpc)\n\n{\n  int iVar1;\n  bfd_vma bVar2;\n  Sym *child;\n  \n  if ((debug_level._1_1_ & 1) != 0) {\n    printf("[find_call] %s: 0x%lx to 0x%lx\n",parent->name,p_lowpc,p_highpc);\n  }\n  if (p_highpc <= p_lowpc) {\n    return;\n  }\n  do {\n    while (bVar2 = (*core_bfd->xvec->bfd_getx32)\n                             ((void *)((p_lowpc - core_text_sect->vma) + (long)core_text_space)),\n          ((uint)bVar2 & 0x7c000000) != 0x14000000) {\nLAB_0010e038:\n      p_lowpc = p_lowpc + 4;\n      if (p_highpc <= p_lowpc) {\n        return;\n      }\n    }\n    if ((debug_level._1_1_ & 1) != 0) {\n      printf("[find_call] 0x%lx: bl",p_lowpc);\n    }\n    bVar2 = ((long)(bVar2 << 0x26) >> 0x24) + p_lowpc;\n    iVar1 = hist_check_address((uint)bVar2);\n    if ((iVar1 != 0) && (child = sym_lookup(&symtab,bVar2), child != (Sym *)0x0)) {\n      if ((debug_level._1_1_ & 1) == 0) {\n        if (bVar2 != child->addr) goto LAB_0010e038;\n      }\n      else {\n        printf("\tdest_pc=0x%lx, (name=%s, addr=0x%lx)\n",bVar2,child->name);\n        if (child->addr != bVar2) goto LAB_0010e097;\n      }\n      arc_add(parent,child,0);\n      goto LAB_0010e038;\n    }\nLAB_0010e097:\n    if ((debug_level._1_1_ & 1) == 0) goto LAB_0010e038;\n    p_lowpc = p_lowpc + 4;\n    puts("\tbut it\'s a botch");\n    if (p_highpc <= p_lowpc) {\n      return;\n    }\n  } while( true );\n}" primitive_type (function_declarator "aarch64_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  int iVar1;\n  bfd_vma bVar2;\n  Sym *child;\n  \n  if ((debug_level._1_1_ & 1) != 0) {\n    printf("[find_call] %s: 0x%lx to 0x%lx\n",parent->name,p_lowpc,p_highpc);\n  }\n  if (p_highpc <= p_lowpc) {\n    return;\n  }\n  do {\n    while (bVar2 = (*core_bfd->xvec->bfd_getx32)\n                             ((void *)((p_lowpc - core_text_sect->vma) + (long)core_text_space)),\n          ((uint)bVar2 & 0x7c000000) != 0x14000000) {\nLAB_0010e038:\n      p_lowpc = p_lowpc + 4;\n      if (p_highpc <= p_lowpc) {\n        return;\n      }\n    }\n    if ((debug_level._1_1_ & 1) != 0) {\n      printf("[find_call] 0x%lx: bl",p_lowpc);\n    }\n    bVar2 = ((long)(bVar2 << 0x26) >> 0x24) + p_lowpc;\n    iVar1 = hist_check_address((uint)bVar2);\n    if ((iVar1 != 0) && (child = sym_lookup(&symtab,bVar2), child != (Sym *)0x0)) {\n      if ((debug_level._1_1_ & 1) == 0) {\n        if (bVar2 != child->addr) goto LAB_0010e038;\n      }\n      else {\n        printf("\tdest_pc=0x%lx, (name=%s, addr=0x%lx)\n",bVar2,child->name);\n        if (child->addr != bVar2) goto LAB_0010e097;\n      }\n      arc_add(parent,child,0);\n      goto LAB_0010e038;\n    }\nLAB_0010e097:\n    if ((debug_level._1_1_ & 1) == 0) goto LAB_0010e038;\n    p_lowpc = p_lowpc + 4;\n    puts("\tbut it\'s a botch");\n    if (p_highpc <= p_lowpc) {\n      return;\n    }\n  } while( true );\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "bfd_vma bVar2;" type_identifier identifier ;) (declaration "Sym *child;" type_identifier (pointer_declarator "*child" * identifier) ;) (if_statement "if ((debug_level._1_1_ & 1) != 0) {\n    printf("[find_call] %s: 0x%lx to 0x%lx\n",parent->name,p_lowpc,p_highpc);\n  }" if (parenthesized_expression "((debug_level._1_1_ & 1) != 0)" ( (binary_expression "(debug_level._1_1_ & 1) != 0" (parenthesized_expression "(debug_level._1_1_ & 1)" ( (binary_expression "debug_level._1_1_ & 1" (field_expression "debug_level._1_1_" identifier . field_identifier) & number_literal) )) != number_literal) )) (compound_statement "{\n    printf("[find_call] %s: 0x%lx to 0x%lx\n",parent->name,p_lowpc,p_highpc);\n  }" { (expression_statement "printf("[find_call] %s: 0x%lx to 0x%lx\n",parent->name,p_lowpc,p_highpc);" (call_expression "printf("[find_call] %s: 0x%lx to 0x%lx\n",parent->name,p_lowpc,p_highpc)" identifier (argument_list "("[find_call] %s: 0x%lx to 0x%lx\n",parent->name,p_lowpc,p_highpc)" ( (string_literal ""[find_call] %s: 0x%lx to 0x%lx\n"" " string_content escape_sequence ") , (field_expression "parent->name" identifier -> field_identifier) , identifier , identifier ))) ;) })) (if_statement "if (p_highpc <= p_lowpc) {\n    return;\n  }" if (parenthesized_expression "(p_highpc <= p_lowpc)" ( (binary_expression "p_highpc <= p_lowpc" identifier <= identifier) )) (compound_statement "{\n    return;\n  }" { (return_statement "return;" return ;) })) (do_statement "do {\n    while (bVar2 = (*core_bfd->xvec->bfd_getx32)\n                             ((void *)((p_lowpc - core_text_sect->vma) + (long)core_text_space)),\n          ((uint)bVar2 & 0x7c000000) != 0x14000000) {\nLAB_0010e038:\n      p_lowpc = p_lowpc + 4;\n      if (p_highpc <= p_lowpc) {\n        return;\n      }\n    }\n    if ((debug_level._1_1_ & 1) != 0) {\n      printf("[find_call] 0x%lx: bl",p_lowpc);\n    }\n    bVar2 = ((long)(bVar2 << 0x26) >> 0x24) + p_lowpc;\n    iVar1 = hist_check_address((uint)bVar2);\n    if ((iVar1 != 0) && (child = sym_lookup(&symtab,bVar2), child != (Sym *)0x0)) {\n      if ((debug_level._1_1_ & 1) == 0) {\n        if (bVar2 != child->addr) goto LAB_0010e038;\n      }\n      else {\n        printf("\tdest_pc=0x%lx, (name=%s, addr=0x%lx)\n",bVar2,child->name);\n        if (child->addr != bVar2) goto LAB_0010e097;\n      }\n      arc_add(parent,child,0);\n      goto LAB_0010e038;\n    }\nLAB_0010e097:\n    if ((debug_level._1_1_ & 1) == 0) goto LAB_0010e038;\n    p_lowpc = p_lowpc + 4;\n    puts("\tbut it\'s a botch");\n    if (p_highpc <= p_lowpc) {\n      return;\n    }\n  } while( true );" do (compound_statement "{\n    while (bVar2 = (*core_bfd->xvec->bfd_getx32)\n                             ((void *)((p_lowpc - core_text_sect->vma) + (long)core_text_space)),\n          ((uint)bVar2 & 0x7c000000) != 0x14000000) {\nLAB_0010e038:\n      p_lowpc = p_lowpc + 4;\n      if (p_highpc <= p_lowpc) {\n        return;\n      }\n    }\n    if ((debug_level._1_1_ & 1) != 0) {\n      printf("[find_call] 0x%lx: bl",p_lowpc);\n    }\n    bVar2 = ((long)(bVar2 << 0x26) >> 0x24) + p_lowpc;\n    iVar1 = hist_check_address((uint)bVar2);\n    if ((iVar1 != 0) && (child = sym_lookup(&symtab,bVar2), child != (Sym *)0x0)) {\n      if ((debug_level._1_1_ & 1) == 0) {\n        if (bVar2 != child->addr) goto LAB_0010e038;\n      }\n      else {\n        printf("\tdest_pc=0x%lx, (name=%s, addr=0x%lx)\n",bVar2,child->name);\n        if (child->addr != bVar2) goto LAB_0010e097;\n      }\n      arc_add(parent,child,0);\n      goto LAB_0010e038;\n    }\nLAB_0010e097:\n    if ((debug_level._1_1_ & 1) == 0) goto LAB_0010e038;\n    p_lowpc = p_lowpc + 4;\n    puts("\tbut it\'s a botch");\n    if (p_highpc <= p_lowpc) {\n      return;\n    }\n  }" { (while_statement "while (bVar2 = (*core_bfd->xvec->bfd_getx32)\n                             ((void *)((p_lowpc - core_text_sect->vma) + (long)core_text_space)),\n          ((uint)bVar2 & 0x7c000000) != 0x14000000) {\nLAB_0010e038:\n      p_lowpc = p_lowpc + 4;\n      if (p_highpc <= p_lowpc) {\n        return;\n      }\n    }" while (parenthesized_expression "(bVar2 = (*core_bfd->xvec->bfd_getx32)\n                             ((void *)((p_lowpc - core_text_sect->vma) + (long)core_text_space)),\n          ((uint)bVar2 & 0x7c000000) != 0x14000000)" ( (comma_expression "bVar2 = (*core_bfd->xvec->bfd_getx32)\n                             ((void *)((p_lowpc - core_text_sect->vma) + (long)core_text_space)),\n          ((uint)bVar2 & 0x7c000000) != 0x14000000" (assignment_expression "bVar2 = (*core_bfd->xvec->bfd_getx32)\n                             ((void *)((p_lowpc - core_text_sect->vma) + (long)core_text_space))" identifier = (call_expression "(*core_bfd->xvec->bfd_getx32)\n                             ((void *)((p_lowpc - core_text_sect->vma) + (long)core_text_space))" (parenthesized_expression "(*core_bfd->xvec->bfd_getx32)" ( (pointer_expression "*core_bfd->xvec->bfd_getx32" * (field_expression "core_bfd->xvec->bfd_getx32" (field_expression "core_bfd->xvec" identifier -> field_identifier) -> field_identifier)) )) (argument_list "((void *)((p_lowpc - core_text_sect->vma) + (long)core_text_space))" ( (cast_expression "(void *)((p_lowpc - core_text_sect->vma) + (long)core_text_space)" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((p_lowpc - core_text_sect->vma) + (long)core_text_space)" ( (binary_expression "(p_lowpc - core_text_sect->vma) + (long)core_text_space" (parenthesized_expression "(p_lowpc - core_text_sect->vma)" ( (binary_expression "p_lowpc - core_text_sect->vma" identifier - (field_expression "core_text_sect->vma" identifier -> field_identifier)) )) + (cast_expression "(long)core_text_space" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) ))) )))) , (binary_expression "((uint)bVar2 & 0x7c000000) != 0x14000000" (parenthesized_expression "((uint)bVar2 & 0x7c000000)" ( (binary_expression "(uint)bVar2 & 0x7c000000" (cast_expression "(uint)bVar2" ( (type_descriptor "uint" type_identifier) ) identifier) & number_literal) )) != number_literal)) )) (compound_statement "{\nLAB_0010e038:\n      p_lowpc = p_lowpc + 4;\n      if (p_highpc <= p_lowpc) {\n        return;\n      }\n    }" { (labeled_statement "LAB_0010e038:\n      p_lowpc = p_lowpc + 4;" statement_identifier : (expression_statement "p_lowpc = p_lowpc + 4;" (assignment_expression "p_lowpc = p_lowpc + 4" identifier = (binary_expression "p_lowpc + 4" identifier + number_literal)) ;)) (if_statement "if (p_highpc <= p_lowpc) {\n        return;\n      }" if (parenthesized_expression "(p_highpc <= p_lowpc)" ( (binary_expression "p_highpc <= p_lowpc" identifier <= identifier) )) (compound_statement "{\n        return;\n      }" { (return_statement "return;" return ;) })) })) (if_statement "if ((debug_level._1_1_ & 1) != 0) {\n      printf("[find_call] 0x%lx: bl",p_lowpc);\n    }" if (parenthesized_expression "((debug_level._1_1_ & 1) != 0)" ( (binary_expression "(debug_level._1_1_ & 1) != 0" (parenthesized_expression "(debug_level._1_1_ & 1)" ( (binary_expression "debug_level._1_1_ & 1" (field_expression "debug_level._1_1_" identifier . field_identifier) & number_literal) )) != number_literal) )) (compound_statement "{\n      printf("[find_call] 0x%lx: bl",p_lowpc);\n    }" { (expression_statement "printf("[find_call] 0x%lx: bl",p_lowpc);" (call_expression "printf("[find_call] 0x%lx: bl",p_lowpc)" identifier (argument_list "("[find_call] 0x%lx: bl",p_lowpc)" ( (string_literal ""[find_call] 0x%lx: bl"" " string_content ") , identifier ))) ;) })) (expression_statement "bVar2 = ((long)(bVar2 << 0x26) >> 0x24) + p_lowpc;" (assignment_expression "bVar2 = ((long)(bVar2 << 0x26) >> 0x24) + p_lowpc" identifier = (binary_expression "((long)(bVar2 << 0x26) >> 0x24) + p_lowpc" (parenthesized_expression "((long)(bVar2 << 0x26) >> 0x24)" ( (binary_expression "(long)(bVar2 << 0x26) >> 0x24" (cast_expression "(long)(bVar2 << 0x26)" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (parenthesized_expression "(bVar2 << 0x26)" ( (binary_expression "bVar2 << 0x26" identifier << number_literal) ))) >> number_literal) )) + identifier)) ;) (expression_statement "iVar1 = hist_check_address((uint)bVar2);" (assignment_expression "iVar1 = hist_check_address((uint)bVar2)" identifier = (call_expression "hist_check_address((uint)bVar2)" identifier (argument_list "((uint)bVar2)" ( (cast_expression "(uint)bVar2" ( (type_descriptor "uint" type_identifier) ) identifier) )))) ;) (if_statement "if ((iVar1 != 0) && (child = sym_lookup(&symtab,bVar2), child != (Sym *)0x0)) {\n      if ((debug_level._1_1_ & 1) == 0) {\n        if (bVar2 != child->addr) goto LAB_0010e038;\n      }\n      else {\n        printf("\tdest_pc=0x%lx, (name=%s, addr=0x%lx)\n",bVar2,child->name);\n        if (child->addr != bVar2) goto LAB_0010e097;\n      }\n      arc_add(parent,child,0);\n      goto LAB_0010e038;\n    }" if (parenthesized_expression "((iVar1 != 0) && (child = sym_lookup(&symtab,bVar2), child != (Sym *)0x0))" ( (binary_expression "(iVar1 != 0) && (child = sym_lookup(&symtab,bVar2), child != (Sym *)0x0)" (parenthesized_expression "(iVar1 != 0)" ( (binary_expression "iVar1 != 0" identifier != number_literal) )) && (parenthesized_expression "(child = sym_lookup(&symtab,bVar2), child != (Sym *)0x0)" ( (comma_expression "child = sym_lookup(&symtab,bVar2), child != (Sym *)0x0" (assignment_expression "child = sym_lookup(&symtab,bVar2)" identifier = (call_expression "sym_lookup(&symtab,bVar2)" identifier (argument_list "(&symtab,bVar2)" ( (pointer_expression "&symtab" & identifier) , identifier )))) , (binary_expression "child != (Sym *)0x0" identifier != (cast_expression "(Sym *)0x0" ( (type_descriptor "Sym *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) ))) )) (compound_statement "{\n      if ((debug_level._1_1_ & 1) == 0) {\n        if (bVar2 != child->addr) goto LAB_0010e038;\n      }\n      else {\n        printf("\tdest_pc=0x%lx, (name=%s, addr=0x%lx)\n",bVar2,child->name);\n        if (child->addr != bVar2) goto LAB_0010e097;\n      }\n      arc_add(parent,child,0);\n      goto LAB_0010e038;\n    }" { (if_statement "if ((debug_level._1_1_ & 1) == 0) {\n        if (bVar2 != child->addr) goto LAB_0010e038;\n      }\n      else {\n        printf("\tdest_pc=0x%lx, (name=%s, addr=0x%lx)\n",bVar2,child->name);\n        if (child->addr != bVar2) goto LAB_0010e097;\n      }" if (parenthesized_expression "((debug_level._1_1_ & 1) == 0)" ( (binary_expression "(debug_level._1_1_ & 1) == 0" (parenthesized_expression "(debug_level._1_1_ & 1)" ( (binary_expression "debug_level._1_1_ & 1" (field_expression "debug_level._1_1_" identifier . field_identifier) & number_literal) )) == number_literal) )) (compound_statement "{\n        if (bVar2 != child->addr) goto LAB_0010e038;\n      }" { (if_statement "if (bVar2 != child->addr) goto LAB_0010e038;" if (parenthesized_expression "(bVar2 != child->addr)" ( (binary_expression "bVar2 != child->addr" identifier != (field_expression "child->addr" identifier -> field_identifier)) )) (goto_statement "goto LAB_0010e038;" goto statement_identifier ;)) }) (else_clause "else {\n        printf("\tdest_pc=0x%lx, (name=%s, addr=0x%lx)\n",bVar2,child->name);\n        if (child->addr != bVar2) goto LAB_0010e097;\n      }" else (compound_statement "{\n        printf("\tdest_pc=0x%lx, (name=%s, addr=0x%lx)\n",bVar2,child->name);\n        if (child->addr != bVar2) goto LAB_0010e097;\n      }" { (expression_statement "printf("\tdest_pc=0x%lx, (name=%s, addr=0x%lx)\n",bVar2,child->name);" (call_expression "printf("\tdest_pc=0x%lx, (name=%s, addr=0x%lx)\n",bVar2,child->name)" identifier (argument_list "("\tdest_pc=0x%lx, (name=%s, addr=0x%lx)\n",bVar2,child->name)" ( (string_literal ""\tdest_pc=0x%lx, (name=%s, addr=0x%lx)\n"" " escape_sequence string_content escape_sequence ") , identifier , (field_expression "child->name" identifier -> field_identifier) ))) ;) (if_statement "if (child->addr != bVar2) goto LAB_0010e097;" if (parenthesized_expression "(child->addr != bVar2)" ( (binary_expression "child->addr != bVar2" (field_expression "child->addr" identifier -> field_identifier) != identifier) )) (goto_statement "goto LAB_0010e097;" goto 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 ))) ;) (goto_statement "goto LAB_0010e038;" goto statement_identifier ;) })) (labeled_statement "LAB_0010e097:\n    if ((debug_level._1_1_ & 1) == 0) goto LAB_0010e038;" statement_identifier : (if_statement "if ((debug_level._1_1_ & 1) == 0) goto LAB_0010e038;" if (parenthesized_expression "((debug_level._1_1_ & 1) == 0)" ( (binary_expression "(debug_level._1_1_ & 1) == 0" (parenthesized_expression "(debug_level._1_1_ & 1)" ( (binary_expression "debug_level._1_1_ & 1" (field_expression "debug_level._1_1_" identifier . field_identifier) & number_literal) )) == number_literal) )) (goto_statement "goto LAB_0010e038;" goto statement_identifier ;))) (expression_statement "p_lowpc = p_lowpc + 4;" (assignment_expression "p_lowpc = p_lowpc + 4" identifier = (binary_expression "p_lowpc + 4" identifier + number_literal)) ;) (expression_statement "puts("\tbut it\'s a botch");" (call_expression "puts("\tbut it\'s a botch")" identifier (argument_list "("\tbut it\'s a botch")" ( (string_literal ""\tbut it\'s a botch"" " escape_sequence string_content escape_sequence string_content ") ))) ;) (if_statement "if (p_highpc <= p_lowpc) {\n      return;\n    }" if (parenthesized_expression "(p_highpc <= p_lowpc)" ( (binary_expression "p_highpc <= p_lowpc" identifier <= identifier) )) (compound_statement "{\n      return;\n    }" { (return_statement "return;" return ;) })) }) while (parenthesized_expression "( true )" ( true )) ;) })))
(translation_unit "void FUN_0010e000(long param_1,ulong param_2,ulong param_3)\n\n{\n  int iVar1;\n  long lVar2;\n  ulong *puVar3;\n  ulong uVar4;\n  \n  if ((DAT_001195e4._1_1_ & 1) != 0) {\n    printf("[find_call] %s: 0x%lx to 0x%lx\n",*(undefined8 *)(param_1 + 0x10),param_2,param_3);\n  }\n  if (param_3 <= param_2) {\n    return;\n  }\n  do {\n    while (lVar2 = (**(code **)(*(long *)(DAT_00119ad8 + 8) + 0x38))\n                             ((param_2 - *(long *)(DAT_00119af8 + 0x28)) + DAT_00119ae0),\n          ((uint)lVar2 & 0x7c000000) != 0x14000000) {\nLAB_0010e038:\n      param_2 = param_2 + 4;\n      if (param_3 <= param_2) {\n        return;\n      }\n    }\n    if ((DAT_001195e4._1_1_ & 1) != 0) {\n      printf("[find_call] 0x%lx: bl",param_2);\n    }\n    uVar4 = ((lVar2 << 0x26) >> 0x24) + param_2;\n    iVar1 = FUN_0010b480(uVar4 & 0xffffffff);\n    if ((iVar1 != 0) &&\n       (puVar3 = (ulong *)FUN_0010c540(&DAT_00119b30,uVar4), puVar3 != (ulong *)0x0)) {\n      if ((DAT_001195e4._1_1_ & 1) == 0) {\n        if (uVar4 != *puVar3) goto LAB_0010e038;\n      }\n      else {\n        printf("\tdest_pc=0x%lx, (name=%s, addr=0x%lx)\n",uVar4,puVar3[2]);\n        if (*puVar3 != uVar4) goto LAB_0010e097;\n      }\n      FUN_00104520(param_1,puVar3,0);\n      goto LAB_0010e038;\n    }\nLAB_0010e097:\n    if ((DAT_001195e4._1_1_ & 1) == 0) goto LAB_0010e038;\n    param_2 = param_2 + 4;\n    puts("\tbut it\'s a botch");\n    if (param_3 <= param_2) {\n      return;\n    }\n  } while( true );\n}\n\n" (function_definition "void FUN_0010e000(long param_1,ulong param_2,ulong param_3)\n\n{\n  int iVar1;\n  long lVar2;\n  ulong *puVar3;\n  ulong uVar4;\n  \n  if ((DAT_001195e4._1_1_ & 1) != 0) {\n    printf("[find_call] %s: 0x%lx to 0x%lx\n",*(undefined8 *)(param_1 + 0x10),param_2,param_3);\n  }\n  if (param_3 <= param_2) {\n    return;\n  }\n  do {\n    while (lVar2 = (**(code **)(*(long *)(DAT_00119ad8 + 8) + 0x38))\n                             ((param_2 - *(long *)(DAT_00119af8 + 0x28)) + DAT_00119ae0),\n          ((uint)lVar2 & 0x7c000000) != 0x14000000) {\nLAB_0010e038:\n      param_2 = param_2 + 4;\n      if (param_3 <= param_2) {\n        return;\n      }\n    }\n    if ((DAT_001195e4._1_1_ & 1) != 0) {\n      printf("[find_call] 0x%lx: bl",param_2);\n    }\n    uVar4 = ((lVar2 << 0x26) >> 0x24) + param_2;\n    iVar1 = FUN_0010b480(uVar4 & 0xffffffff);\n    if ((iVar1 != 0) &&\n       (puVar3 = (ulong *)FUN_0010c540(&DAT_00119b30,uVar4), puVar3 != (ulong *)0x0)) {\n      if ((DAT_001195e4._1_1_ & 1) == 0) {\n        if (uVar4 != *puVar3) goto LAB_0010e038;\n      }\n      else {\n        printf("\tdest_pc=0x%lx, (name=%s, addr=0x%lx)\n",uVar4,puVar3[2]);\n        if (*puVar3 != uVar4) goto LAB_0010e097;\n      }\n      FUN_00104520(param_1,puVar3,0);\n      goto LAB_0010e038;\n    }\nLAB_0010e097:\n    if ((DAT_001195e4._1_1_ & 1) == 0) goto LAB_0010e038;\n    param_2 = param_2 + 4;\n    puts("\tbut it\'s a botch");\n    if (param_3 <= param_2) {\n      return;\n    }\n  } while( true );\n}" primitive_type (function_declarator "FUN_0010e000(long param_1,ulong param_2,ulong param_3)" identifier (parameter_list "(long param_1,ulong param_2,ulong param_3)" ( (parameter_declaration "long param_1" (sized_type_specifier "long" long) identifier) , (parameter_declaration "ulong param_2" type_identifier identifier) , (parameter_declaration "ulong param_3" type_identifier identifier) ))) (compound_statement "{\n  int iVar1;\n  long lVar2;\n  ulong *puVar3;\n  ulong uVar4;\n  \n  if ((DAT_001195e4._1_1_ & 1) != 0) {\n    printf("[find_call] %s: 0x%lx to 0x%lx\n",*(undefined8 *)(param_1 + 0x10),param_2,param_3);\n  }\n  if (param_3 <= param_2) {\n    return;\n  }\n  do {\n    while (lVar2 = (**(code **)(*(long *)(DAT_00119ad8 + 8) + 0x38))\n                             ((param_2 - *(long *)(DAT_00119af8 + 0x28)) + DAT_00119ae0),\n          ((uint)lVar2 & 0x7c000000) != 0x14000000) {\nLAB_0010e038:\n      param_2 = param_2 + 4;\n      if (param_3 <= param_2) {\n        return;\n      }\n    }\n    if ((DAT_001195e4._1_1_ & 1) != 0) {\n      printf("[find_call] 0x%lx: bl",param_2);\n    }\n    uVar4 = ((lVar2 << 0x26) >> 0x24) + param_2;\n    iVar1 = FUN_0010b480(uVar4 & 0xffffffff);\n    if ((iVar1 != 0) &&\n       (puVar3 = (ulong *)FUN_0010c540(&DAT_00119b30,uVar4), puVar3 != (ulong *)0x0)) {\n      if ((DAT_001195e4._1_1_ & 1) == 0) {\n        if (uVar4 != *puVar3) goto LAB_0010e038;\n      }\n      else {\n        printf("\tdest_pc=0x%lx, (name=%s, addr=0x%lx)\n",uVar4,puVar3[2]);\n        if (*puVar3 != uVar4) goto LAB_0010e097;\n      }\n      FUN_00104520(param_1,puVar3,0);\n      goto LAB_0010e038;\n    }\nLAB_0010e097:\n    if ((DAT_001195e4._1_1_ & 1) == 0) goto LAB_0010e038;\n    param_2 = param_2 + 4;\n    puts("\tbut it\'s a botch");\n    if (param_3 <= param_2) {\n      return;\n    }\n  } while( true );\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "long lVar2;" (sized_type_specifier "long" long) identifier ;) (declaration "ulong *puVar3;" type_identifier (pointer_declarator "*puVar3" * identifier) ;) (declaration "ulong uVar4;" type_identifier identifier ;) (if_statement "if ((DAT_001195e4._1_1_ & 1) != 0) {\n    printf("[find_call] %s: 0x%lx to 0x%lx\n",*(undefined8 *)(param_1 + 0x10),param_2,param_3);\n  }" if (parenthesized_expression "((DAT_001195e4._1_1_ & 1) != 0)" ( (binary_expression "(DAT_001195e4._1_1_ & 1) != 0" (parenthesized_expression "(DAT_001195e4._1_1_ & 1)" ( (binary_expression "DAT_001195e4._1_1_ & 1" (field_expression "DAT_001195e4._1_1_" identifier . field_identifier) & number_literal) )) != number_literal) )) (compound_statement "{\n    printf("[find_call] %s: 0x%lx to 0x%lx\n",*(undefined8 *)(param_1 + 0x10),param_2,param_3);\n  }" { (expression_statement "printf("[find_call] %s: 0x%lx to 0x%lx\n",*(undefined8 *)(param_1 + 0x10),param_2,param_3);" (call_expression "printf("[find_call] %s: 0x%lx to 0x%lx\n",*(undefined8 *)(param_1 + 0x10),param_2,param_3)" identifier (argument_list "("[find_call] %s: 0x%lx to 0x%lx\n",*(undefined8 *)(param_1 + 0x10),param_2,param_3)" ( (string_literal ""[find_call] %s: 0x%lx to 0x%lx\n"" " string_content escape_sequence ") , (pointer_expression "*(undefined8 *)(param_1 + 0x10)" * (cast_expression "(undefined8 *)(param_1 + 0x10)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x10)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) )))) , identifier , identifier ))) ;) })) (if_statement "if (param_3 <= param_2) {\n    return;\n  }" if (parenthesized_expression "(param_3 <= param_2)" ( (binary_expression "param_3 <= param_2" identifier <= identifier) )) (compound_statement "{\n    return;\n  }" { (return_statement "return;" return ;) })) (do_statement "do {\n    while (lVar2 = (**(code **)(*(long *)(DAT_00119ad8 + 8) + 0x38))\n                             ((param_2 - *(long *)(DAT_00119af8 + 0x28)) + DAT_00119ae0),\n          ((uint)lVar2 & 0x7c000000) != 0x14000000) {\nLAB_0010e038:\n      param_2 = param_2 + 4;\n      if (param_3 <= param_2) {\n        return;\n      }\n    }\n    if ((DAT_001195e4._1_1_ & 1) != 0) {\n      printf("[find_call] 0x%lx: bl",param_2);\n    }\n    uVar4 = ((lVar2 << 0x26) >> 0x24) + param_2;\n    iVar1 = FUN_0010b480(uVar4 & 0xffffffff);\n    if ((iVar1 != 0) &&\n       (puVar3 = (ulong *)FUN_0010c540(&DAT_00119b30,uVar4), puVar3 != (ulong *)0x0)) {\n      if ((DAT_001195e4._1_1_ & 1) == 0) {\n        if (uVar4 != *puVar3) goto LAB_0010e038;\n      }\n      else {\n        printf("\tdest_pc=0x%lx, (name=%s, addr=0x%lx)\n",uVar4,puVar3[2]);\n        if (*puVar3 != uVar4) goto LAB_0010e097;\n      }\n      FUN_00104520(param_1,puVar3,0);\n      goto LAB_0010e038;\n    }\nLAB_0010e097:\n    if ((DAT_001195e4._1_1_ & 1) == 0) goto LAB_0010e038;\n    param_2 = param_2 + 4;\n    puts("\tbut it\'s a botch");\n    if (param_3 <= param_2) {\n      return;\n    }\n  } while( true );" do (compound_statement "{\n    while (lVar2 = (**(code **)(*(long *)(DAT_00119ad8 + 8) + 0x38))\n                             ((param_2 - *(long *)(DAT_00119af8 + 0x28)) + DAT_00119ae0),\n          ((uint)lVar2 & 0x7c000000) != 0x14000000) {\nLAB_0010e038:\n      param_2 = param_2 + 4;\n      if (param_3 <= param_2) {\n        return;\n      }\n    }\n    if ((DAT_001195e4._1_1_ & 1) != 0) {\n      printf("[find_call] 0x%lx: bl",param_2);\n    }\n    uVar4 = ((lVar2 << 0x26) >> 0x24) + param_2;\n    iVar1 = FUN_0010b480(uVar4 & 0xffffffff);\n    if ((iVar1 != 0) &&\n       (puVar3 = (ulong *)FUN_0010c540(&DAT_00119b30,uVar4), puVar3 != (ulong *)0x0)) {\n      if ((DAT_001195e4._1_1_ & 1) == 0) {\n        if (uVar4 != *puVar3) goto LAB_0010e038;\n      }\n      else {\n        printf("\tdest_pc=0x%lx, (name=%s, addr=0x%lx)\n",uVar4,puVar3[2]);\n        if (*puVar3 != uVar4) goto LAB_0010e097;\n      }\n      FUN_00104520(param_1,puVar3,0);\n      goto LAB_0010e038;\n    }\nLAB_0010e097:\n    if ((DAT_001195e4._1_1_ & 1) == 0) goto LAB_0010e038;\n    param_2 = param_2 + 4;\n    puts("\tbut it\'s a botch");\n    if (param_3 <= param_2) {\n      return;\n    }\n  }" { (while_statement "while (lVar2 = (**(code **)(*(long *)(DAT_00119ad8 + 8) + 0x38))\n                             ((param_2 - *(long *)(DAT_00119af8 + 0x28)) + DAT_00119ae0),\n          ((uint)lVar2 & 0x7c000000) != 0x14000000) {\nLAB_0010e038:\n      param_2 = param_2 + 4;\n      if (param_3 <= param_2) {\n        return;\n      }\n    }" while (parenthesized_expression "(lVar2 = (**(code **)(*(long *)(DAT_00119ad8 + 8) + 0x38))\n                             ((param_2 - *(long *)(DAT_00119af8 + 0x28)) + DAT_00119ae0),\n          ((uint)lVar2 & 0x7c000000) != 0x14000000)" ( (comma_expression "lVar2 = (**(code **)(*(long *)(DAT_00119ad8 + 8) + 0x38))\n                             ((param_2 - *(long *)(DAT_00119af8 + 0x28)) + DAT_00119ae0),\n          ((uint)lVar2 & 0x7c000000) != 0x14000000" (assignment_expression "lVar2 = (**(code **)(*(long *)(DAT_00119ad8 + 8) + 0x38))\n                             ((param_2 - *(long *)(DAT_00119af8 + 0x28)) + DAT_00119ae0)" identifier = (call_expression "(**(code **)(*(long *)(DAT_00119ad8 + 8) + 0x38))\n                             ((param_2 - *(long *)(DAT_00119af8 + 0x28)) + DAT_00119ae0)" (parenthesized_expression "(**(code **)(*(long *)(DAT_00119ad8 + 8) + 0x38))" ( (pointer_expression "**(code **)(*(long *)(DAT_00119ad8 + 8) + 0x38)" * (pointer_expression "*(code **)(*(long *)(DAT_00119ad8 + 8) + 0x38)" * (cast_expression "(code **)(*(long *)(DAT_00119ad8 + 8) + 0x38)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(long *)(DAT_00119ad8 + 8) + 0x38)" ( (binary_expression "*(long *)(DAT_00119ad8 + 8) + 0x38" (pointer_expression "*(long *)(DAT_00119ad8 + 8)" * (cast_expression "(long *)(DAT_00119ad8 + 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(DAT_00119ad8 + 8)" ( (binary_expression "DAT_00119ad8 + 8" identifier + number_literal) )))) + number_literal) ))))) )) (argument_list "((param_2 - *(long *)(DAT_00119af8 + 0x28)) + DAT_00119ae0)" ( (binary_expression "(param_2 - *(long *)(DAT_00119af8 + 0x28)) + DAT_00119ae0" (parenthesized_expression "(param_2 - *(long *)(DAT_00119af8 + 0x28))" ( (binary_expression "param_2 - *(long *)(DAT_00119af8 + 0x28)" identifier - (pointer_expression "*(long *)(DAT_00119af8 + 0x28)" * (cast_expression "(long *)(DAT_00119af8 + 0x28)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(DAT_00119af8 + 0x28)" ( (binary_expression "DAT_00119af8 + 0x28" identifier + number_literal) ))))) )) + identifier) )))) , (binary_expression "((uint)lVar2 & 0x7c000000) != 0x14000000" (parenthesized_expression "((uint)lVar2 & 0x7c000000)" ( (binary_expression "(uint)lVar2 & 0x7c000000" (cast_expression "(uint)lVar2" ( (type_descriptor "uint" type_identifier) ) identifier) & number_literal) )) != number_literal)) )) (compound_statement "{\nLAB_0010e038:\n      param_2 = param_2 + 4;\n      if (param_3 <= param_2) {\n        return;\n      }\n    }" { (labeled_statement "LAB_0010e038:\n      param_2 = param_2 + 4;" statement_identifier : (expression_statement "param_2 = param_2 + 4;" (assignment_expression "param_2 = param_2 + 4" identifier = (binary_expression "param_2 + 4" identifier + number_literal)) ;)) (if_statement "if (param_3 <= param_2) {\n        return;\n      }" if (parenthesized_expression "(param_3 <= param_2)" ( (binary_expression "param_3 <= param_2" identifier <= identifier) )) (compound_statement "{\n        return;\n      }" { (return_statement "return;" return ;) })) })) (if_statement "if ((DAT_001195e4._1_1_ & 1) != 0) {\n      printf("[find_call] 0x%lx: bl",param_2);\n    }" if (parenthesized_expression "((DAT_001195e4._1_1_ & 1) != 0)" ( (binary_expression "(DAT_001195e4._1_1_ & 1) != 0" (parenthesized_expression "(DAT_001195e4._1_1_ & 1)" ( (binary_expression "DAT_001195e4._1_1_ & 1" (field_expression "DAT_001195e4._1_1_" identifier . field_identifier) & number_literal) )) != number_literal) )) (compound_statement "{\n      printf("[find_call] 0x%lx: bl",param_2);\n    }" { (expression_statement "printf("[find_call] 0x%lx: bl",param_2);" (call_expression "printf("[find_call] 0x%lx: bl",param_2)" identifier (argument_list "("[find_call] 0x%lx: bl",param_2)" ( (string_literal ""[find_call] 0x%lx: bl"" " string_content ") , identifier ))) ;) })) (expression_statement "uVar4 = ((lVar2 << 0x26) >> 0x24) + param_2;" (assignment_expression "uVar4 = ((lVar2 << 0x26) >> 0x24) + param_2" identifier = (binary_expression "((lVar2 << 0x26) >> 0x24) + param_2" (parenthesized_expression "((lVar2 << 0x26) >> 0x24)" ( (binary_expression "(lVar2 << 0x26) >> 0x24" (parenthesized_expression "(lVar2 << 0x26)" ( (binary_expression "lVar2 << 0x26" identifier << number_literal) )) >> number_literal) )) + identifier)) ;) (expression_statement "iVar1 = FUN_0010b480(uVar4 & 0xffffffff);" (assignment_expression "iVar1 = FUN_0010b480(uVar4 & 0xffffffff)" identifier = (call_expression "FUN_0010b480(uVar4 & 0xffffffff)" identifier (argument_list "(uVar4 & 0xffffffff)" ( (binary_expression "uVar4 & 0xffffffff" identifier & number_literal) )))) ;) (if_statement "if ((iVar1 != 0) &&\n       (puVar3 = (ulong *)FUN_0010c540(&DAT_00119b30,uVar4), puVar3 != (ulong *)0x0)) {\n      if ((DAT_001195e4._1_1_ & 1) == 0) {\n        if (uVar4 != *puVar3) goto LAB_0010e038;\n      }\n      else {\n        printf("\tdest_pc=0x%lx, (name=%s, addr=0x%lx)\n",uVar4,puVar3[2]);\n        if (*puVar3 != uVar4) goto LAB_0010e097;\n      }\n      FUN_00104520(param_1,puVar3,0);\n      goto LAB_0010e038;\n    }" if (parenthesized_expression "((iVar1 != 0) &&\n       (puVar3 = (ulong *)FUN_0010c540(&DAT_00119b30,uVar4), puVar3 != (ulong *)0x0))" ( (binary_expression "(iVar1 != 0) &&\n       (puVar3 = (ulong *)FUN_0010c540(&DAT_00119b30,uVar4), puVar3 != (ulong *)0x0)" (parenthesized_expression "(iVar1 != 0)" ( (binary_expression "iVar1 != 0" identifier != number_literal) )) && (parenthesized_expression "(puVar3 = (ulong *)FUN_0010c540(&DAT_00119b30,uVar4), puVar3 != (ulong *)0x0)" ( (comma_expression "puVar3 = (ulong *)FUN_0010c540(&DAT_00119b30,uVar4), puVar3 != (ulong *)0x0" (assignment_expression "puVar3 = (ulong *)FUN_0010c540(&DAT_00119b30,uVar4)" identifier = (cast_expression "(ulong *)FUN_0010c540(&DAT_00119b30,uVar4)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_0010c540(&DAT_00119b30,uVar4)" identifier (argument_list "(&DAT_00119b30,uVar4)" ( (pointer_expression "&DAT_00119b30" & identifier) , identifier ))))) , (binary_expression "puVar3 != (ulong *)0x0" identifier != (cast_expression "(ulong *)0x0" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) ))) )) (compound_statement "{\n      if ((DAT_001195e4._1_1_ & 1) == 0) {\n        if (uVar4 != *puVar3) goto LAB_0010e038;\n      }\n      else {\n        printf("\tdest_pc=0x%lx, (name=%s, addr=0x%lx)\n",uVar4,puVar3[2]);\n        if (*puVar3 != uVar4) goto LAB_0010e097;\n      }\n      FUN_00104520(param_1,puVar3,0);\n      goto LAB_0010e038;\n    }" { (if_statement "if ((DAT_001195e4._1_1_ & 1) == 0) {\n        if (uVar4 != *puVar3) goto LAB_0010e038;\n      }\n      else {\n        printf("\tdest_pc=0x%lx, (name=%s, addr=0x%lx)\n",uVar4,puVar3[2]);\n        if (*puVar3 != uVar4) goto LAB_0010e097;\n      }" if (parenthesized_expression "((DAT_001195e4._1_1_ & 1) == 0)" ( (binary_expression "(DAT_001195e4._1_1_ & 1) == 0" (parenthesized_expression "(DAT_001195e4._1_1_ & 1)" ( (binary_expression "DAT_001195e4._1_1_ & 1" (field_expression "DAT_001195e4._1_1_" identifier . field_identifier) & number_literal) )) == number_literal) )) (compound_statement "{\n        if (uVar4 != *puVar3) goto LAB_0010e038;\n      }" { (if_statement "if (uVar4 != *puVar3) goto LAB_0010e038;" if (parenthesized_expression "(uVar4 != *puVar3)" ( (binary_expression "uVar4 != *puVar3" identifier != (pointer_expression "*puVar3" * identifier)) )) (goto_statement "goto LAB_0010e038;" goto statement_identifier ;)) }) (else_clause "else {\n        printf("\tdest_pc=0x%lx, (name=%s, addr=0x%lx)\n",uVar4,puVar3[2]);\n        if (*puVar3 != uVar4) goto LAB_0010e097;\n      }" else (compound_statement "{\n        printf("\tdest_pc=0x%lx, (name=%s, addr=0x%lx)\n",uVar4,puVar3[2]);\n        if (*puVar3 != uVar4) goto LAB_0010e097;\n      }" { (expression_statement "printf("\tdest_pc=0x%lx, (name=%s, addr=0x%lx)\n",uVar4,puVar3[2]);" (call_expression "printf("\tdest_pc=0x%lx, (name=%s, addr=0x%lx)\n",uVar4,puVar3[2])" identifier (argument_list "("\tdest_pc=0x%lx, (name=%s, addr=0x%lx)\n",uVar4,puVar3[2])" ( (string_literal ""\tdest_pc=0x%lx, (name=%s, addr=0x%lx)\n"" " escape_sequence string_content escape_sequence ") , identifier , (subscript_expression "puVar3[2]" identifier [ number_literal ]) ))) ;) (if_statement "if (*puVar3 != uVar4) goto LAB_0010e097;" if (parenthesized_expression "(*puVar3 != uVar4)" ( (binary_expression "*puVar3 != uVar4" (pointer_expression "*puVar3" * identifier) != identifier) )) (goto_statement "goto LAB_0010e097;" goto statement_identifier ;)) }))) (expression_statement "FUN_00104520(param_1,puVar3,0);" (call_expression "FUN_00104520(param_1,puVar3,0)" identifier (argument_list "(param_1,puVar3,0)" ( identifier , identifier , number_literal ))) ;) (goto_statement "goto LAB_0010e038;" goto statement_identifier ;) })) (labeled_statement "LAB_0010e097:\n    if ((DAT_001195e4._1_1_ & 1) == 0) goto LAB_0010e038;" statement_identifier : (if_statement "if ((DAT_001195e4._1_1_ & 1) == 0) goto LAB_0010e038;" if (parenthesized_expression "((DAT_001195e4._1_1_ & 1) == 0)" ( (binary_expression "(DAT_001195e4._1_1_ & 1) == 0" (parenthesized_expression "(DAT_001195e4._1_1_ & 1)" ( (binary_expression "DAT_001195e4._1_1_ & 1" (field_expression "DAT_001195e4._1_1_" identifier . field_identifier) & number_literal) )) == number_literal) )) (goto_statement "goto LAB_0010e038;" goto statement_identifier ;))) (expression_statement "param_2 = param_2 + 4;" (assignment_expression "param_2 = param_2 + 4" identifier = (binary_expression "param_2 + 4" identifier + number_literal)) ;) (expression_statement "puts("\tbut it\'s a botch");" (call_expression "puts("\tbut it\'s a botch")" identifier (argument_list "("\tbut it\'s a botch")" ( (string_literal ""\tbut it\'s a botch"" " escape_sequence string_content escape_sequence string_content ") ))) ;) (if_statement "if (param_3 <= param_2) {\n      return;\n    }" if (parenthesized_expression "(param_3 <= param_2)" ( (binary_expression "param_3 <= param_2" identifier <= identifier) )) (compound_statement "{\n      return;\n    }" { (return_statement "return;" return ;) })) }) while (parenthesized_expression "( true )" ( true )) ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration (sized_type_specifier long) IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (field_expression IDENT . field_identifier) & 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 ))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT <= IDENT) )) (compound_statement { (return_statement return ;) })) (do_statement do (compound_statement { (while_statement while (parenthesized_expression ( (comma_expression (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 (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) ))))) )) (argument_list ( (binary_expression (parenthesized_expression ( (binary_expression IDENT - (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) + IDENT) )))) , (binary_expression (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) & LIT) )) != LIT)) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT <= IDENT) )) (compound_statement { (return_statement return ;) })) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (field_expression IDENT . field_identifier) & LIT) )) != LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") , IDENT ))) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT << LIT) )) >> LIT) )) + IDENT)) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (binary_expression IDENT & LIT) )))) ;) (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 ))))) , (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT))) ))) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (field_expression IDENT . field_identifier) & LIT) )) == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT != (pointer_expression * IDENT)) )) (goto_statement goto statement_identifier ;)) }) (else_clause else (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (string_literal " escape_sequence string_content escape_sequence ") , IDENT , (subscript_expression IDENT [ LIT ]) ))) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) != IDENT) )) (goto_statement goto statement_identifier ;)) }))) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , LIT ))) ;) (goto_statement goto statement_identifier ;) })) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (field_expression IDENT . field_identifier) & LIT) )) == LIT) )) (goto_statement goto statement_identifier ;))) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (call_expression IDENT (argument_list ( (string_literal " escape_sequence string_content escape_sequence string_content ") ))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT <= IDENT) )) (compound_statement { (return_statement return ;) })) }) while (parenthesized_expression ( BOOL )) ;) })))
(function_definition "void FUN_0010e000(long param_1,ulong param_2,ulong param_3)\n\n{\n  int iVar1;\n  long lVar2;\n  ulong *puVar3;\n  ulong uVar4;\n  \n  if ((DAT_001195e4._1_1_ & 1) != 0) {\n    printf("[find_call] %s: 0x%lx to 0x%lx\n",*(undefined8 *)(param_1 + 0x10),param_2,param_3);\n  }\n  if (param_3 <= param_2) {\n    return;\n  }\n  do {\n    while (lVar2 = (**(code **)(*(long *)(DAT_00119ad8 + 8) + 0x38))\n                             ((param_2 - *(long *)(DAT_00119af8 + 0x28)) + DAT_00119ae0),\n          ((uint)lVar2 & 0x7c000000) != 0x14000000) {\nLAB_0010e038:\n      param_2 = param_2 + 4;\n      if (param_3 <= param_2) {\n        return;\n      }\n    }\n    if ((DAT_001195e4._1_1_ & 1) != 0) {\n      printf("[find_call] 0x%lx: bl",param_2);\n    }\n    uVar4 = ((lVar2 << 0x26) >> 0x24) + param_2;\n    iVar1 = FUN_0010b480(uVar4 & 0xffffffff);\n    if ((iVar1 != 0) &&\n       (puVar3 = (ulong *)FUN_0010c540(&DAT_00119b30,uVar4), puVar3 != (ulong *)0x0)) {\n      if ((DAT_001195e4._1_1_ & 1) == 0) {\n        if (uVar4 != *puVar3) goto LAB_0010e038;\n      }\n      else {\n        printf("\tdest_pc=0x%lx, (name=%s, addr=0x%lx)\n",uVar4,puVar3[2]);\n        if (*puVar3 != uVar4) goto LAB_0010e097;\n      }\n      FUN_00104520(param_1,puVar3,0);\n      goto LAB_0010e038;\n    }\nLAB_0010e097:\n    if ((DAT_001195e4._1_1_ & 1) == 0) goto LAB_0010e038;\n    param_2 = param_2 + 4;\n    puts("\tbut it\'s a botch");\n    if (param_3 <= param_2) {\n      return;\n    }\n  } while( true );\n}" (primitive_type "void") (function_declarator "FUN_0010e000(long param_1,ulong param_2,ulong param_3)" (identifier "FUN_0010e000") (parameter_list "(long param_1,ulong param_2,ulong param_3)" (( "(") (parameter_declaration "long param_1" (sized_type_specifier "long" (long "long")) (identifier "param_1")) (, ",") (parameter_declaration "ulong param_2" (type_identifier "ulong") (identifier "param_2")) (, ",") (parameter_declaration "ulong param_3" (type_identifier "ulong") (identifier "param_3")) () ")"))) (compound_statement "{\n  int iVar1;\n  long lVar2;\n  ulong *puVar3;\n  ulong uVar4;\n  \n  if ((DAT_001195e4._1_1_ & 1) != 0) {\n    printf("[find_call] %s: 0x%lx to 0x%lx\n",*(undefined8 *)(param_1 + 0x10),param_2,param_3);\n  }\n  if (param_3 <= param_2) {\n    return;\n  }\n  do {\n    while (lVar2 = (**(code **)(*(long *)(DAT_00119ad8 + 8) + 0x38))\n                             ((param_2 - *(long *)(DAT_00119af8 + 0x28)) + DAT_00119ae0),\n          ((uint)lVar2 & 0x7c000000) != 0x14000000) {\nLAB_0010e038:\n      param_2 = param_2 + 4;\n      if (param_3 <= param_2) {\n        return;\n      }\n    }\n    if ((DAT_001195e4._1_1_ & 1) != 0) {\n      printf("[find_call] 0x%lx: bl",param_2);\n    }\n    uVar4 = ((lVar2 << 0x26) >> 0x24) + param_2;\n    iVar1 = FUN_0010b480(uVar4 & 0xffffffff);\n    if ((iVar1 != 0) &&\n       (puVar3 = (ulong *)FUN_0010c540(&DAT_00119b30,uVar4), puVar3 != (ulong *)0x0)) {\n      if ((DAT_001195e4._1_1_ & 1) == 0) {\n        if (uVar4 != *puVar3) goto LAB_0010e038;\n      }\n      else {\n        printf("\tdest_pc=0x%lx, (name=%s, addr=0x%lx)\n",uVar4,puVar3[2]);\n        if (*puVar3 != uVar4) goto LAB_0010e097;\n      }\n      FUN_00104520(param_1,puVar3,0);\n      goto LAB_0010e038;\n    }\nLAB_0010e097:\n    if ((DAT_001195e4._1_1_ & 1) == 0) goto LAB_0010e038;\n    param_2 = param_2 + 4;\n    puts("\tbut it\'s a botch");\n    if (param_3 <= param_2) {\n      return;\n    }\n  } while( true );\n}" ({ "{") (declaration "int iVar1;" (primitive_type "int") (identifier "iVar1") (; ";")) (declaration "long lVar2;" (sized_type_specifier "long" (long "long")) (identifier "lVar2") (; ";")) (declaration "ulong *puVar3;" (type_identifier "ulong") (pointer_declarator "*puVar3" (* "*") (identifier "puVar3")) (; ";")) (declaration "ulong uVar4;" (type_identifier "ulong") (identifier "uVar4") (; ";")) (if_statement "if ((DAT_001195e4._1_1_ & 1) != 0) {\n    printf("[find_call] %s: 0x%lx to 0x%lx\n",*(undefined8 *)(param_1 + 0x10),param_2,param_3);\n  }" (if "if") (parenthesized_expression "((DAT_001195e4._1_1_ & 1) != 0)" (( "(") (binary_expression "(DAT_001195e4._1_1_ & 1) != 0" (parenthesized_expression "(DAT_001195e4._1_1_ & 1)" (( "(") (binary_expression "DAT_001195e4._1_1_ & 1" (field_expression "DAT_001195e4._1_1_" (identifier "DAT_001195e4") (. ".") (field_identifier "_1_1_")) (& "&") (number_literal "1")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    printf("[find_call] %s: 0x%lx to 0x%lx\n",*(undefined8 *)(param_1 + 0x10),param_2,param_3);\n  }" ({ "{") (expression_statement "printf("[find_call] %s: 0x%lx to 0x%lx\n",*(undefined8 *)(param_1 + 0x10),param_2,param_3);" (call_expression "printf("[find_call] %s: 0x%lx to 0x%lx\n",*(undefined8 *)(param_1 + 0x10),param_2,param_3)" (identifier "printf") (argument_list "("[find_call] %s: 0x%lx to 0x%lx\n",*(undefined8 *)(param_1 + 0x10),param_2,param_3)" (( "(") (string_literal ""[find_call] %s: 0x%lx to 0x%lx\n"" (" """) (string_content "[find_call] %s: 0x%lx to 0x%lx") (escape_sequence "\n") (" """)) (, ",") (pointer_expression "*(undefined8 *)(param_1 + 0x10)" (* "*") (cast_expression "(undefined8 *)(param_1 + 0x10)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x10)" (( "(") (binary_expression "param_1 + 0x10" (identifier "param_1") (+ "+") (number_literal "0x10")) () ")")))) (, ",") (identifier "param_2") (, ",") (identifier "param_3") () ")"))) (; ";")) (} "}"))) (if_statement "if (param_3 <= param_2) {\n    return;\n  }" (if "if") (parenthesized_expression "(param_3 <= param_2)" (( "(") (binary_expression "param_3 <= param_2" (identifier "param_3") (<= "<=") (identifier "param_2")) () ")")) (compound_statement "{\n    return;\n  }" ({ "{") (return_statement "return;" (return "return") (; ";")) (} "}"))) (do_statement "do {\n    while (lVar2 = (**(code **)(*(long *)(DAT_00119ad8 + 8) + 0x38))\n                             ((param_2 - *(long *)(DAT_00119af8 + 0x28)) + DAT_00119ae0),\n          ((uint)lVar2 & 0x7c000000) != 0x14000000) {\nLAB_0010e038:\n      param_2 = param_2 + 4;\n      if (param_3 <= param_2) {\n        return;\n      }\n    }\n    if ((DAT_001195e4._1_1_ & 1) != 0) {\n      printf("[find_call] 0x%lx: bl",param_2);\n    }\n    uVar4 = ((lVar2 << 0x26) >> 0x24) + param_2;\n    iVar1 = FUN_0010b480(uVar4 & 0xffffffff);\n    if ((iVar1 != 0) &&\n       (puVar3 = (ulong *)FUN_0010c540(&DAT_00119b30,uVar4), puVar3 != (ulong *)0x0)) {\n      if ((DAT_001195e4._1_1_ & 1) == 0) {\n        if (uVar4 != *puVar3) goto LAB_0010e038;\n      }\n      else {\n        printf("\tdest_pc=0x%lx, (name=%s, addr=0x%lx)\n",uVar4,puVar3[2]);\n        if (*puVar3 != uVar4) goto LAB_0010e097;\n      }\n      FUN_00104520(param_1,puVar3,0);\n      goto LAB_0010e038;\n    }\nLAB_0010e097:\n    if ((DAT_001195e4._1_1_ & 1) == 0) goto LAB_0010e038;\n    param_2 = param_2 + 4;\n    puts("\tbut it\'s a botch");\n    if (param_3 <= param_2) {\n      return;\n    }\n  } while( true );" (do "do") (compound_statement "{\n    while (lVar2 = (**(code **)(*(long *)(DAT_00119ad8 + 8) + 0x38))\n                             ((param_2 - *(long *)(DAT_00119af8 + 0x28)) + DAT_00119ae0),\n          ((uint)lVar2 & 0x7c000000) != 0x14000000) {\nLAB_0010e038:\n      param_2 = param_2 + 4;\n      if (param_3 <= param_2) {\n        return;\n      }\n    }\n    if ((DAT_001195e4._1_1_ & 1) != 0) {\n      printf("[find_call] 0x%lx: bl",param_2);\n    }\n    uVar4 = ((lVar2 << 0x26) >> 0x24) + param_2;\n    iVar1 = FUN_0010b480(uVar4 & 0xffffffff);\n    if ((iVar1 != 0) &&\n       (puVar3 = (ulong *)FUN_0010c540(&DAT_00119b30,uVar4), puVar3 != (ulong *)0x0)) {\n      if ((DAT_001195e4._1_1_ & 1) == 0) {\n        if (uVar4 != *puVar3) goto LAB_0010e038;\n      }\n      else {\n        printf("\tdest_pc=0x%lx, (name=%s, addr=0x%lx)\n",uVar4,puVar3[2]);\n        if (*puVar3 != uVar4) goto LAB_0010e097;\n      }\n      FUN_00104520(param_1,puVar3,0);\n      goto LAB_0010e038;\n    }\nLAB_0010e097:\n    if ((DAT_001195e4._1_1_ & 1) == 0) goto LAB_0010e038;\n    param_2 = param_2 + 4;\n    puts("\tbut it\'s a botch");\n    if (param_3 <= param_2) {\n      return;\n    }\n  }" ({ "{") (while_statement "while (lVar2 = (**(code **)(*(long *)(DAT_00119ad8 + 8) + 0x38))\n                             ((param_2 - *(long *)(DAT_00119af8 + 0x28)) + DAT_00119ae0),\n          ((uint)lVar2 & 0x7c000000) != 0x14000000) {\nLAB_0010e038:\n      param_2 = param_2 + 4;\n      if (param_3 <= param_2) {\n        return;\n      }\n    }" (while "while") (parenthesized_expression "(lVar2 = (**(code **)(*(long *)(DAT_00119ad8 + 8) + 0x38))\n                             ((param_2 - *(long *)(DAT_00119af8 + 0x28)) + DAT_00119ae0),\n          ((uint)lVar2 & 0x7c000000) != 0x14000000)" (( "(") (comma_expression "lVar2 = (**(code **)(*(long *)(DAT_00119ad8 + 8) + 0x38))\n                             ((param_2 - *(long *)(DAT_00119af8 + 0x28)) + DAT_00119ae0),\n          ((uint)lVar2 & 0x7c000000) != 0x14000000" (assignment_expression "lVar2 = (**(code **)(*(long *)(DAT_00119ad8 + 8) + 0x38))\n                             ((param_2 - *(long *)(DAT_00119af8 + 0x28)) + DAT_00119ae0)" (identifier "lVar2") (= "=") (call_expression "(**(code **)(*(long *)(DAT_00119ad8 + 8) + 0x38))\n                             ((param_2 - *(long *)(DAT_00119af8 + 0x28)) + DAT_00119ae0)" (parenthesized_expression "(**(code **)(*(long *)(DAT_00119ad8 + 8) + 0x38))" (( "(") (pointer_expression "**(code **)(*(long *)(DAT_00119ad8 + 8) + 0x38)" (* "*") (pointer_expression "*(code **)(*(long *)(DAT_00119ad8 + 8) + 0x38)" (* "*") (cast_expression "(code **)(*(long *)(DAT_00119ad8 + 8) + 0x38)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*(long *)(DAT_00119ad8 + 8) + 0x38)" (( "(") (binary_expression "*(long *)(DAT_00119ad8 + 8) + 0x38" (pointer_expression "*(long *)(DAT_00119ad8 + 8)" (* "*") (cast_expression "(long *)(DAT_00119ad8 + 8)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(DAT_00119ad8 + 8)" (( "(") (binary_expression "DAT_00119ad8 + 8" (identifier "DAT_00119ad8") (+ "+") (number_literal "8")) () ")")))) (+ "+") (number_literal "0x38")) () ")"))))) () ")")) (argument_list "((param_2 - *(long *)(DAT_00119af8 + 0x28)) + DAT_00119ae0)" (( "(") (binary_expression "(param_2 - *(long *)(DAT_00119af8 + 0x28)) + DAT_00119ae0" (parenthesized_expression "(param_2 - *(long *)(DAT_00119af8 + 0x28))" (( "(") (binary_expression "param_2 - *(long *)(DAT_00119af8 + 0x28)" (identifier "param_2") (- "-") (pointer_expression "*(long *)(DAT_00119af8 + 0x28)" (* "*") (cast_expression "(long *)(DAT_00119af8 + 0x28)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(DAT_00119af8 + 0x28)" (( "(") (binary_expression "DAT_00119af8 + 0x28" (identifier "DAT_00119af8") (+ "+") (number_literal "0x28")) () ")"))))) () ")")) (+ "+") (identifier "DAT_00119ae0")) () ")")))) (, ",") (binary_expression "((uint)lVar2 & 0x7c000000) != 0x14000000" (parenthesized_expression "((uint)lVar2 & 0x7c000000)" (( "(") (binary_expression "(uint)lVar2 & 0x7c000000" (cast_expression "(uint)lVar2" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "lVar2")) (& "&") (number_literal "0x7c000000")) () ")")) (!= "!=") (number_literal "0x14000000"))) () ")")) (compound_statement "{\nLAB_0010e038:\n      param_2 = param_2 + 4;\n      if (param_3 <= param_2) {\n        return;\n      }\n    }" ({ "{") (labeled_statement "LAB_0010e038:\n      param_2 = param_2 + 4;" (statement_identifier "LAB_0010e038") (: ":") (expression_statement "param_2 = param_2 + 4;" (assignment_expression "param_2 = param_2 + 4" (identifier "param_2") (= "=") (binary_expression "param_2 + 4" (identifier "param_2") (+ "+") (number_literal "4"))) (; ";"))) (if_statement "if (param_3 <= param_2) {\n        return;\n      }" (if "if") (parenthesized_expression "(param_3 <= param_2)" (( "(") (binary_expression "param_3 <= param_2" (identifier "param_3") (<= "<=") (identifier "param_2")) () ")")) (compound_statement "{\n        return;\n      }" ({ "{") (return_statement "return;" (return "return") (; ";")) (} "}"))) (} "}"))) (if_statement "if ((DAT_001195e4._1_1_ & 1) != 0) {\n      printf("[find_call] 0x%lx: bl",param_2);\n    }" (if "if") (parenthesized_expression "((DAT_001195e4._1_1_ & 1) != 0)" (( "(") (binary_expression "(DAT_001195e4._1_1_ & 1) != 0" (parenthesized_expression "(DAT_001195e4._1_1_ & 1)" (( "(") (binary_expression "DAT_001195e4._1_1_ & 1" (field_expression "DAT_001195e4._1_1_" (identifier "DAT_001195e4") (. ".") (field_identifier "_1_1_")) (& "&") (number_literal "1")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      printf("[find_call] 0x%lx: bl",param_2);\n    }" ({ "{") (expression_statement "printf("[find_call] 0x%lx: bl",param_2);" (call_expression "printf("[find_call] 0x%lx: bl",param_2)" (identifier "printf") (argument_list "("[find_call] 0x%lx: bl",param_2)" (( "(") (string_literal ""[find_call] 0x%lx: bl"" (" """) (string_content "[find_call] 0x%lx: bl") (" """)) (, ",") (identifier "param_2") () ")"))) (; ";")) (} "}"))) (expression_statement "uVar4 = ((lVar2 << 0x26) >> 0x24) + param_2;" (assignment_expression "uVar4 = ((lVar2 << 0x26) >> 0x24) + param_2" (identifier "uVar4") (= "=") (binary_expression "((lVar2 << 0x26) >> 0x24) + param_2" (parenthesized_expression "((lVar2 << 0x26) >> 0x24)" (( "(") (binary_expression "(lVar2 << 0x26) >> 0x24" (parenthesized_expression "(lVar2 << 0x26)" (( "(") (binary_expression "lVar2 << 0x26" (identifier "lVar2") (<< "<<") (number_literal "0x26")) () ")")) (>> ">>") (number_literal "0x24")) () ")")) (+ "+") (identifier "param_2"))) (; ";")) (expression_statement "iVar1 = FUN_0010b480(uVar4 & 0xffffffff);" (assignment_expression "iVar1 = FUN_0010b480(uVar4 & 0xffffffff)" (identifier "iVar1") (= "=") (call_expression "FUN_0010b480(uVar4 & 0xffffffff)" (identifier "FUN_0010b480") (argument_list "(uVar4 & 0xffffffff)" (( "(") (binary_expression "uVar4 & 0xffffffff" (identifier "uVar4") (& "&") (number_literal "0xffffffff")) () ")")))) (; ";")) (if_statement "if ((iVar1 != 0) &&\n       (puVar3 = (ulong *)FUN_0010c540(&DAT_00119b30,uVar4), puVar3 != (ulong *)0x0)) {\n      if ((DAT_001195e4._1_1_ & 1) == 0) {\n        if (uVar4 != *puVar3) goto LAB_0010e038;\n      }\n      else {\n        printf("\tdest_pc=0x%lx, (name=%s, addr=0x%lx)\n",uVar4,puVar3[2]);\n        if (*puVar3 != uVar4) goto LAB_0010e097;\n      }\n      FUN_00104520(param_1,puVar3,0);\n      goto LAB_0010e038;\n    }" (if "if") (parenthesized_expression "((iVar1 != 0) &&\n       (puVar3 = (ulong *)FUN_0010c540(&DAT_00119b30,uVar4), puVar3 != (ulong *)0x0))" (( "(") (binary_expression "(iVar1 != 0) &&\n       (puVar3 = (ulong *)FUN_0010c540(&DAT_00119b30,uVar4), puVar3 != (ulong *)0x0)" (parenthesized_expression "(iVar1 != 0)" (( "(") (binary_expression "iVar1 != 0" (identifier "iVar1") (!= "!=") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(puVar3 = (ulong *)FUN_0010c540(&DAT_00119b30,uVar4), puVar3 != (ulong *)0x0)" (( "(") (comma_expression "puVar3 = (ulong *)FUN_0010c540(&DAT_00119b30,uVar4), puVar3 != (ulong *)0x0" (assignment_expression "puVar3 = (ulong *)FUN_0010c540(&DAT_00119b30,uVar4)" (identifier "puVar3") (= "=") (cast_expression "(ulong *)FUN_0010c540(&DAT_00119b30,uVar4)" (( "(") (type_descriptor "ulong *" (type_identifier "ulong") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_0010c540(&DAT_00119b30,uVar4)" (identifier "FUN_0010c540") (argument_list "(&DAT_00119b30,uVar4)" (( "(") (pointer_expression "&DAT_00119b30" (& "&") (identifier "DAT_00119b30")) (, ",") (identifier "uVar4") () ")"))))) (, ",") (binary_expression "puVar3 != (ulong *)0x0" (identifier "puVar3") (!= "!=") (cast_expression "(ulong *)0x0" (( "(") (type_descriptor "ulong *" (type_identifier "ulong") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0")))) () ")"))) () ")")) (compound_statement "{\n      if ((DAT_001195e4._1_1_ & 1) == 0) {\n        if (uVar4 != *puVar3) goto LAB_0010e038;\n      }\n      else {\n        printf("\tdest_pc=0x%lx, (name=%s, addr=0x%lx)\n",uVar4,puVar3[2]);\n        if (*puVar3 != uVar4) goto LAB_0010e097;\n      }\n      FUN_00104520(param_1,puVar3,0);\n      goto LAB_0010e038;\n    }" ({ "{") (if_statement "if ((DAT_001195e4._1_1_ & 1) == 0) {\n        if (uVar4 != *puVar3) goto LAB_0010e038;\n      }\n      else {\n        printf("\tdest_pc=0x%lx, (name=%s, addr=0x%lx)\n",uVar4,puVar3[2]);\n        if (*puVar3 != uVar4) goto LAB_0010e097;\n      }" (if "if") (parenthesized_expression "((DAT_001195e4._1_1_ & 1) == 0)" (( "(") (binary_expression "(DAT_001195e4._1_1_ & 1) == 0" (parenthesized_expression "(DAT_001195e4._1_1_ & 1)" (( "(") (binary_expression "DAT_001195e4._1_1_ & 1" (field_expression "DAT_001195e4._1_1_" (identifier "DAT_001195e4") (. ".") (field_identifier "_1_1_")) (& "&") (number_literal "1")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n        if (uVar4 != *puVar3) goto LAB_0010e038;\n      }" ({ "{") (if_statement "if (uVar4 != *puVar3) goto LAB_0010e038;" (if "if") (parenthesized_expression "(uVar4 != *puVar3)" (( "(") (binary_expression "uVar4 != *puVar3" (identifier "uVar4") (!= "!=") (pointer_expression "*puVar3" (* "*") (identifier "puVar3"))) () ")")) (goto_statement "goto LAB_0010e038;" (goto "goto") (statement_identifier "LAB_0010e038") (; ";"))) (} "}")) (else_clause "else {\n        printf("\tdest_pc=0x%lx, (name=%s, addr=0x%lx)\n",uVar4,puVar3[2]);\n        if (*puVar3 != uVar4) goto LAB_0010e097;\n      }" (else "else") (compound_statement "{\n        printf("\tdest_pc=0x%lx, (name=%s, addr=0x%lx)\n",uVar4,puVar3[2]);\n        if (*puVar3 != uVar4) goto LAB_0010e097;\n      }" ({ "{") (expression_statement "printf("\tdest_pc=0x%lx, (name=%s, addr=0x%lx)\n",uVar4,puVar3[2]);" (call_expression "printf("\tdest_pc=0x%lx, (name=%s, addr=0x%lx)\n",uVar4,puVar3[2])" (identifier "printf") (argument_list "("\tdest_pc=0x%lx, (name=%s, addr=0x%lx)\n",uVar4,puVar3[2])" (( "(") (string_literal ""\tdest_pc=0x%lx, (name=%s, addr=0x%lx)\n"" (" """) (escape_sequence "\t") (string_content "dest_pc=0x%lx, (name=%s, addr=0x%lx)") (escape_sequence "\n") (" """)) (, ",") (identifier "uVar4") (, ",") (subscript_expression "puVar3[2]" (identifier "puVar3") ([ "[") (number_literal "2") (] "]")) () ")"))) (; ";")) (if_statement "if (*puVar3 != uVar4) goto LAB_0010e097;" (if "if") (parenthesized_expression "(*puVar3 != uVar4)" (( "(") (binary_expression "*puVar3 != uVar4" (pointer_expression "*puVar3" (* "*") (identifier "puVar3")) (!= "!=") (identifier "uVar4")) () ")")) (goto_statement "goto LAB_0010e097;" (goto "goto") (statement_identifier "LAB_0010e097") (; ";"))) (} "}")))) (expression_statement "FUN_00104520(param_1,puVar3,0);" (call_expression "FUN_00104520(param_1,puVar3,0)" (identifier "FUN_00104520") (argument_list "(param_1,puVar3,0)" (( "(") (identifier "param_1") (, ",") (identifier "puVar3") (, ",") (number_literal "0") () ")"))) (; ";")) (goto_statement "goto LAB_0010e038;" (goto "goto") (statement_identifier "LAB_0010e038") (; ";")) (} "}"))) (labeled_statement "LAB_0010e097:\n    if ((DAT_001195e4._1_1_ & 1) == 0) goto LAB_0010e038;" (statement_identifier "LAB_0010e097") (: ":") (if_statement "if ((DAT_001195e4._1_1_ & 1) == 0) goto LAB_0010e038;" (if "if") (parenthesized_expression "((DAT_001195e4._1_1_ & 1) == 0)" (( "(") (binary_expression "(DAT_001195e4._1_1_ & 1) == 0" (parenthesized_expression "(DAT_001195e4._1_1_ & 1)" (( "(") (binary_expression "DAT_001195e4._1_1_ & 1" (field_expression "DAT_001195e4._1_1_" (identifier "DAT_001195e4") (. ".") (field_identifier "_1_1_")) (& "&") (number_literal "1")) () ")")) (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_0010e038;" (goto "goto") (statement_identifier "LAB_0010e038") (; ";")))) (expression_statement "param_2 = param_2 + 4;" (assignment_expression "param_2 = param_2 + 4" (identifier "param_2") (= "=") (binary_expression "param_2 + 4" (identifier "param_2") (+ "+") (number_literal "4"))) (; ";")) (expression_statement "puts("\tbut it\'s a botch");" (call_expression "puts("\tbut it\'s a botch")" (identifier "puts") (argument_list "("\tbut it\'s a botch")" (( "(") (string_literal ""\tbut it\'s a botch"" (" """) (escape_sequence "\t") (string_content "but it") (escape_sequence "\'") (string_content "s a botch") (" """)) () ")"))) (; ";")) (if_statement "if (param_3 <= param_2) {\n      return;\n    }" (if "if") (parenthesized_expression "(param_3 <= param_2)" (( "(") (binary_expression "param_3 <= param_2" (identifier "param_3") (<= "<=") (identifier "param_2")) () ")")) (compound_statement "{\n      return;\n    }" ({ "{") (return_statement "return;" (return "return") (; ";")) (} "}"))) (} "}")) (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (; ";")) (} "}")))

void function_1(type_1 *parent,type_2 var_3,type_2 var_2)

{
  int var_6;
  type_2 var_4;
  type_1 *var_8;
  
  if ((debug_level._1_1_ & 1) != 0) {
    var_1("[find_call] %s: 0x%lx to 0x%lx\n",parent->name,var_3,var_2);
  }
  if (var_2 <= var_3) {
    return;
  }
  do {
    while (var_4 = (*core_bfd->xvec->bfd_getx32)
                             ((void *)((var_3 - core_text_sect->vma) + (long)core_text_space)),
          ((type_3)var_4 & 0x7c000000) != 0x14000000) {
LAB_0010e038:
      var_3 = var_3 + 4;
      if (var_2 <= var_3) {
        return;
      }
    }
    if ((debug_level._1_1_ & 1) != 0) {
      var_1("[find_call] 0x%lx: bl",var_3);
    }
    var_4 = ((long)(var_4 << 0x26) >> 0x24) + var_3;
    var_6 = var_5((type_3)var_4);
    if ((var_6 != 0) && (var_8 = var_7(&symtab,var_4), var_8 != (type_1 *)0x0)) {
      if ((debug_level._1_1_ & 1) == 0) {
        if (var_4 != var_8->addr) goto LAB_0010e038;
      }
      else {
        var_1("\tdest_pc=0x%lx, (name=%s, addr=0x%lx)\n",var_4,var_8->name);
        if (var_8->addr != var_4) goto LAB_0010e097;
      }
      var_9(parent,var_8,0);
      goto LAB_0010e038;
    }
LAB_0010e097:
    if ((debug_level._1_1_ & 1) == 0) goto LAB_0010e038;
    var_3 = var_3 + 4;
    var_10("\tbut it\'s a botch");
    if (var_2 <= var_3) {
      return;
    }
  } while( true );
}


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

void MASKED(long param_1,ulong param_2,ulong param_3)

{
  int iVar1;
  long lVar2;
  ulong *puVar3;
  ulong uVar4;
  
  if ((DAT_001195e4._1_1_ & 1) != 0) {
    printf("[find_call] %s: 0x%lx to 0x%lx\n",*(undefined8 *)(param_1 + 0x10),param_2,param_3);
  }
  if (param_3 <= param_2) {
    return;
  }
  do {
    while (lVar2 = (**(code **)(*(long *)(DAT_00119ad8 + 8) + 0x38))
                             ((param_2 - *(long *)(DAT_00119af8 + 0x28)) + DAT_00119ae0),
          ((uint)lVar2 & 0x7c000000) != 0x14000000) {
LAB_0010e038:
      param_2 = param_2 + 4;
      if (param_3 <= param_2) {
        return;
      }
    }
    if ((DAT_001195e4._1_1_ & 1) != 0) {
      printf("[find_call] 0x%lx: bl",param_2);
    }
    uVar4 = ((lVar2 << 0x26) >> 0x24) + param_2;
    iVar1 = FUN_0010b480(uVar4 & 0xffffffff);
    if ((iVar1 != 0) &&
       (puVar3 = (ulong *)FUN_0010c540(&DAT_00119b30,uVar4), puVar3 != (ulong *)0x0)) {
      if ((DAT_001195e4._1_1_ & 1) == 0) {
        if (uVar4 != *puVar3) goto LAB_0010e038;
      }
      else {
        printf("\tdest_pc=0x%lx, (name=%s, addr=0x%lx)\n",uVar4,puVar3[2]);
        if (*puVar3 != uVar4) goto LAB_0010e097;
      }
      FUN_00104520(param_1,puVar3,0);
      goto LAB_0010e038;
    }
LAB_0010e097:
    if ((DAT_001195e4._1_1_ & 1) == 0) goto LAB_0010e038;
    param_2 = param_2 + 4;
    puts("\tbut it\'s a botch");
    if (param_3 <= param_2) {
      return;
    }
  } while( true );
}

