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

bfd_boolean __regparm3 get_src_info(bfd_vma addr,char **filename,char **name,int *line_num)

{
  bfd_boolean bVar1;
  uint uVar2;
  char *pcVar3;
  char *pcVar4;
  char *fname;
  char *func_name;
  int l;
  undefined4 uStack_14;
  
  uStack_14 = 0x1829d;
  fname = (char *)0x0;
  func_name = (char *)0x0;
  l = 0;
  bVar1 = (*core_bfd->xvec->_bfd_find_nearest_line)
                    (core_bfd,core_syms,core_text_sect,addr - core_text_sect->vma,&fname,&func_name,
                     (uint *)&l,(uint *)0x0);
  pcVar3 = func_name;
  pcVar4 = fname;
  if ((bVar1 == 0) || (uVar2 = debug_level & 0x80, fname == (char *)0x0)) {
    uVar2 = debug_level & 0x80;
    if (uVar2 != 0) {
      if (func_name == (char *)0x0) {
        pcVar3 = "<unknown>";
      }
      if (fname == (char *)0x0) {
        pcVar4 = "<unknown>";
      }
      goto LAB_0001837d;
    }
  }
  else if (func_name == (char *)0x0) {
    if (uVar2 != 0) {
      pcVar3 = "<unknown>";
LAB_0001837d:
      printf("[get_src_info] no info for 0x%lx (%s:%d,%s)\n",addr,pcVar4,l,pcVar3);
      return 0;
    }
  }
  else {
    if (l == 0) {
      if (uVar2 == 0) {
        return 0;
      }
      goto LAB_0001837d;
    }
    if (uVar2 != 0) {
      printf("[get_src_info] 0x%lx -> %s:%d (%s)\n",addr,fname,l,func_name);
    }
    *filename = fname;
    *name = func_name;
    *line_num = l;
    uVar2 = 1;
  }
  return uVar2;
}



/* WARNING: Function: __i686.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

uint __regparm3 FUN_00018290(int param_1,undefined4 *param_2,undefined4 *param_3,int *param_4)

{
  int iVar1;
  uint uVar2;
  char *pcVar3;
  char *pcVar4;
  char *local_28;
  char *local_24;
  int local_20 [3];
  undefined4 uStack_14;
  
  uStack_14 = 0x1829d;
  local_28 = (char *)0x0;
  local_24 = (char *)0x0;
  local_20[0] = 0;
  iVar1 = (**(code **)(*(int *)(DAT_0002d478 + 4) + 0x128))
                    (DAT_0002d478,DAT_0002d124,DAT_0002d488,param_1 - *(int *)(DAT_0002d488 + 0x1c),
                     &local_28,&local_24,local_20,0);
  pcVar3 = local_24;
  pcVar4 = local_28;
  if ((iVar1 == 0) || (uVar2 = _DAT_0002d158 & 0x80, local_28 == (char *)0x0)) {
    uVar2 = _DAT_0002d158 & 0x80;
    if (uVar2 != 0) {
      if (local_24 == (char *)0x0) {
        pcVar3 = "<unknown>";
      }
      if (local_28 == (char *)0x0) {
        pcVar4 = "<unknown>";
      }
      goto LAB_0001837d;
    }
  }
  else if (local_24 == (char *)0x0) {
    if (uVar2 != 0) {
      pcVar3 = "<unknown>";
LAB_0001837d:
      printf("[get_src_info] no info for 0x%lx (%s:%d,%s)\n",param_1,pcVar4,local_20[0],pcVar3);
      return 0;
    }
  }
  else {
    if (local_20[0] == 0) {
      if (uVar2 == 0) {
        return 0;
      }
      goto LAB_0001837d;
    }
    if (uVar2 != 0) {
      printf("[get_src_info] 0x%lx -> %s:%d (%s)\n",param_1,local_28,local_20[0],local_24);
    }
    *param_2 = local_28;
    *param_3 = local_24;
    *param_4 = local_20[0];
    uVar2 = 1;
  }
  return uVar2;
}


PUSH EBP
PUSH EDI
MOV EDI,EAX
PUSH ESI
MOV ESI,EDX
PUSH EBX
CALL 0x00013030
ADD EBX,0x13d63
SUB ESP,0x2c
MOV dword ptr [ESP + 0xc],ECX
MOV dword ptr [ESP + 0x14],0x0
MOV dword ptr [ESP + 0x18],0x0
LEA EAX,[EBX + 0x1478]
LEA EDX,[EBX + 0x1488]
MOV dword ptr [ESP + 0x1c],0x0
MOV EAX,dword ptr [EAX]
MOV EDX,dword ptr [EDX]
MOV ECX,dword ptr [EAX + 0x4]
PUSH 0x0
LEA EBP,[ESP + 0x20]
PUSH EBP
LEA EBP,[ESP + 0x20]
PUSH EBP
LEA EBP,[ESP + 0x20]
PUSH EBP
MOV EBP,EDI
SUB EBP,dword ptr [EDX + 0x1c]
PUSH EBP
PUSH EDX
PUSH dword ptr [EBX + 0x1124]
PUSH EAX
CALL dword ptr [ECX + 0x128]
ADD ESP,0x20
TEST EAX,EAX
JZ 0x00018350
LEA EAX,[EBX + 0x1158]
MOV EDX,dword ptr [ESP + 0x14]
MOV EAX,dword ptr [EAX]
AND EAX,0x80
TEST EDX,EDX
JZ 0x0001835d
MOV ECX,dword ptr [ESP + 0x18]
TEST ECX,ECX
JZ 0x000183b0
MOV EBP,dword ptr [ESP + 0x1c]
TEST EBP,EBP
JZ 0x000183a0
TEST EAX,EAX
JNZ 0x000183c0
MOV EAX,dword ptr [ESP + 0xc]
MOV dword ptr [ESI],EDX
MOV dword ptr [EAX],ECX
MOV EAX,dword ptr [ESP + 0x40]
MOV dword ptr [EAX],EBP
MOV EAX,0x1
ADD ESP,0x2c
POP EBX
POP ESI
POP EDI
POP EBP
RET
LEA EAX,[EBX + 0x1158]
MOV EAX,dword ptr [EAX]
AND EAX,0x80
TEST EAX,EAX
JZ 0x00018345
MOV ECX,dword ptr [ESP + 0x18]
MOV EDX,dword ptr [ESP + 0x14]
LEA EAX,[EBX + 0xffff5014]
MOV EBP,dword ptr [ESP + 0x1c]
TEST ECX,ECX
CMOVZ ECX,EAX
TEST EDX,EDX
CMOVZ EDX,EAX
SUB ESP,0xc
LEA EAX,[EBX + 0xffff5a8c]
PUSH ECX
PUSH EBP
PUSH EDX
PUSH EDI
PUSH EAX
CALL 0x00012070
ADD ESP,0x20
XOR EAX,EAX
ADD ESP,0x2c
POP EBX
POP ESI
POP EDI
POP EBP
RET
TEST EAX,EAX
JNZ 0x0001837d
ADD ESP,0x2c
POP EBX
POP ESI
POP EDI
POP EBP
RET
TEST EAX,EAX
JZ 0x00018345
MOV EBP,dword ptr [ESP + 0x1c]
LEA ECX,[EBX + 0xffff5014]
JMP 0x0001837d
SUB ESP,0xc
LEA EAX,[EBX + 0xffff5a68]
PUSH ECX
PUSH EBP
PUSH EDX
PUSH EDI
PUSH EAX
CALL 0x00012070
MOV EDX,dword ptr [ESP + 0x34]
MOV ECX,dword ptr [ESP + 0x38]
MOV EBP,dword ptr [ESP + 0x3c]
ADD ESP,0x20
JMP 0x00018332
(translation_unit "/* WARNING: Function: __i686.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */\n\nuint __regparm3 FUN_00018290(int param_1,undefined4 *param_2,undefined4 *param_3,int *param_4)\n\n{\n  int iVar1;\n  uint uVar2;\n  char *pcVar3;\n  char *pcVar4;\n  char *local_28;\n  char *local_24;\n  int local_20 [3];\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x1829d;\n  local_28 = (char *)0x0;\n  local_24 = (char *)0x0;\n  local_20[0] = 0;\n  iVar1 = (**(code **)(*(int *)(DAT_0002d478 + 4) + 0x128))\n                    (DAT_0002d478,DAT_0002d124,DAT_0002d488,param_1 - *(int *)(DAT_0002d488 + 0x1c),\n                     &local_28,&local_24,local_20,0);\n  pcVar3 = local_24;\n  pcVar4 = local_28;\n  if ((iVar1 == 0) || (uVar2 = _DAT_0002d158 & 0x80, local_28 == (char *)0x0)) {\n    uVar2 = _DAT_0002d158 & 0x80;\n    if (uVar2 != 0) {\n      if (local_24 == (char *)0x0) {\n        pcVar3 = "<unknown>";\n      }\n      if (local_28 == (char *)0x0) {\n        pcVar4 = "<unknown>";\n      }\n      goto LAB_0001837d;\n    }\n  }\n  else if (local_24 == (char *)0x0) {\n    if (uVar2 != 0) {\n      pcVar3 = "<unknown>";\nLAB_0001837d:\n      printf("[get_src_info] no info for 0x%lx (%s:%d,%s)\n",param_1,pcVar4,local_20[0],pcVar3);\n      return 0;\n    }\n  }\n  else {\n    if (local_20[0] == 0) {\n      if (uVar2 == 0) {\n        return 0;\n      }\n      goto LAB_0001837d;\n    }\n    if (uVar2 != 0) {\n      printf("[get_src_info] 0x%lx -> %s:%d (%s)\n",param_1,local_28,local_20[0],local_24);\n    }\n    *param_2 = local_28;\n    *param_3 = local_24;\n    *param_4 = local_20[0];\n    uVar2 = 1;\n  }\n  return uVar2;\n}\n\n" comment comment (function_definition "uint __regparm3 FUN_00018290(int param_1,undefined4 *param_2,undefined4 *param_3,int *param_4)\n\n{\n  int iVar1;\n  uint uVar2;\n  char *pcVar3;\n  char *pcVar4;\n  char *local_28;\n  char *local_24;\n  int local_20 [3];\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x1829d;\n  local_28 = (char *)0x0;\n  local_24 = (char *)0x0;\n  local_20[0] = 0;\n  iVar1 = (**(code **)(*(int *)(DAT_0002d478 + 4) + 0x128))\n                    (DAT_0002d478,DAT_0002d124,DAT_0002d488,param_1 - *(int *)(DAT_0002d488 + 0x1c),\n                     &local_28,&local_24,local_20,0);\n  pcVar3 = local_24;\n  pcVar4 = local_28;\n  if ((iVar1 == 0) || (uVar2 = _DAT_0002d158 & 0x80, local_28 == (char *)0x0)) {\n    uVar2 = _DAT_0002d158 & 0x80;\n    if (uVar2 != 0) {\n      if (local_24 == (char *)0x0) {\n        pcVar3 = "<unknown>";\n      }\n      if (local_28 == (char *)0x0) {\n        pcVar4 = "<unknown>";\n      }\n      goto LAB_0001837d;\n    }\n  }\n  else if (local_24 == (char *)0x0) {\n    if (uVar2 != 0) {\n      pcVar3 = "<unknown>";\nLAB_0001837d:\n      printf("[get_src_info] no info for 0x%lx (%s:%d,%s)\n",param_1,pcVar4,local_20[0],pcVar3);\n      return 0;\n    }\n  }\n  else {\n    if (local_20[0] == 0) {\n      if (uVar2 == 0) {\n        return 0;\n      }\n      goto LAB_0001837d;\n    }\n    if (uVar2 != 0) {\n      printf("[get_src_info] 0x%lx -> %s:%d (%s)\n",param_1,local_28,local_20[0],local_24);\n    }\n    *param_2 = local_28;\n    *param_3 = local_24;\n    *param_4 = local_20[0];\n    uVar2 = 1;\n  }\n  return uVar2;\n}" type_identifier (ERROR "__regparm3" identifier) (function_declarator "FUN_00018290(int param_1,undefined4 *param_2,undefined4 *param_3,int *param_4)" identifier (parameter_list "(int param_1,undefined4 *param_2,undefined4 *param_3,int *param_4)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "undefined4 *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "undefined4 *param_3" type_identifier (pointer_declarator "*param_3" * identifier)) , (parameter_declaration "int *param_4" primitive_type (pointer_declarator "*param_4" * identifier)) ))) (compound_statement "{\n  int iVar1;\n  uint uVar2;\n  char *pcVar3;\n  char *pcVar4;\n  char *local_28;\n  char *local_24;\n  int local_20 [3];\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x1829d;\n  local_28 = (char *)0x0;\n  local_24 = (char *)0x0;\n  local_20[0] = 0;\n  iVar1 = (**(code **)(*(int *)(DAT_0002d478 + 4) + 0x128))\n                    (DAT_0002d478,DAT_0002d124,DAT_0002d488,param_1 - *(int *)(DAT_0002d488 + 0x1c),\n                     &local_28,&local_24,local_20,0);\n  pcVar3 = local_24;\n  pcVar4 = local_28;\n  if ((iVar1 == 0) || (uVar2 = _DAT_0002d158 & 0x80, local_28 == (char *)0x0)) {\n    uVar2 = _DAT_0002d158 & 0x80;\n    if (uVar2 != 0) {\n      if (local_24 == (char *)0x0) {\n        pcVar3 = "<unknown>";\n      }\n      if (local_28 == (char *)0x0) {\n        pcVar4 = "<unknown>";\n      }\n      goto LAB_0001837d;\n    }\n  }\n  else if (local_24 == (char *)0x0) {\n    if (uVar2 != 0) {\n      pcVar3 = "<unknown>";\nLAB_0001837d:\n      printf("[get_src_info] no info for 0x%lx (%s:%d,%s)\n",param_1,pcVar4,local_20[0],pcVar3);\n      return 0;\n    }\n  }\n  else {\n    if (local_20[0] == 0) {\n      if (uVar2 == 0) {\n        return 0;\n      }\n      goto LAB_0001837d;\n    }\n    if (uVar2 != 0) {\n      printf("[get_src_info] 0x%lx -> %s:%d (%s)\n",param_1,local_28,local_20[0],local_24);\n    }\n    *param_2 = local_28;\n    *param_3 = local_24;\n    *param_4 = local_20[0];\n    uVar2 = 1;\n  }\n  return uVar2;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "uint uVar2;" type_identifier identifier ;) (declaration "char *pcVar3;" primitive_type (pointer_declarator "*pcVar3" * identifier) ;) (declaration "char *pcVar4;" primitive_type (pointer_declarator "*pcVar4" * identifier) ;) (declaration "char *local_28;" primitive_type (pointer_declarator "*local_28" * identifier) ;) (declaration "char *local_24;" primitive_type (pointer_declarator "*local_24" * identifier) ;) (declaration "int local_20 [3];" primitive_type (array_declarator "local_20 [3]" identifier [ number_literal ]) ;) (declaration "undefined4 uStack_14;" type_identifier identifier ;) (expression_statement "uStack_14 = 0x1829d;" (assignment_expression "uStack_14 = 0x1829d" identifier = number_literal) ;) (expression_statement "local_28 = (char *)0x0;" (assignment_expression "local_28 = (char *)0x0" identifier = (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "local_24 = (char *)0x0;" (assignment_expression "local_24 = (char *)0x0" identifier = (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "local_20[0] = 0;" (assignment_expression "local_20[0] = 0" (subscript_expression "local_20[0]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "iVar1 = (**(code **)(*(int *)(DAT_0002d478 + 4) + 0x128))\n                    (DAT_0002d478,DAT_0002d124,DAT_0002d488,param_1 - *(int *)(DAT_0002d488 + 0x1c),\n                     &local_28,&local_24,local_20,0);" (assignment_expression "iVar1 = (**(code **)(*(int *)(DAT_0002d478 + 4) + 0x128))\n                    (DAT_0002d478,DAT_0002d124,DAT_0002d488,param_1 - *(int *)(DAT_0002d488 + 0x1c),\n                     &local_28,&local_24,local_20,0)" identifier = (call_expression "(**(code **)(*(int *)(DAT_0002d478 + 4) + 0x128))\n                    (DAT_0002d478,DAT_0002d124,DAT_0002d488,param_1 - *(int *)(DAT_0002d488 + 0x1c),\n                     &local_28,&local_24,local_20,0)" (parenthesized_expression "(**(code **)(*(int *)(DAT_0002d478 + 4) + 0x128))" ( (pointer_expression "**(code **)(*(int *)(DAT_0002d478 + 4) + 0x128)" * (pointer_expression "*(code **)(*(int *)(DAT_0002d478 + 4) + 0x128)" * (cast_expression "(code **)(*(int *)(DAT_0002d478 + 4) + 0x128)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)(DAT_0002d478 + 4) + 0x128)" ( (binary_expression "*(int *)(DAT_0002d478 + 4) + 0x128" (pointer_expression "*(int *)(DAT_0002d478 + 4)" * (cast_expression "(int *)(DAT_0002d478 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(DAT_0002d478 + 4)" ( (binary_expression "DAT_0002d478 + 4" identifier + number_literal) )))) + number_literal) ))))) )) (argument_list "(DAT_0002d478,DAT_0002d124,DAT_0002d488,param_1 - *(int *)(DAT_0002d488 + 0x1c),\n                     &local_28,&local_24,local_20,0)" ( identifier , identifier , identifier , (binary_expression "param_1 - *(int *)(DAT_0002d488 + 0x1c)" identifier - (pointer_expression "*(int *)(DAT_0002d488 + 0x1c)" * (cast_expression "(int *)(DAT_0002d488 + 0x1c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(DAT_0002d488 + 0x1c)" ( (binary_expression "DAT_0002d488 + 0x1c" identifier + number_literal) ))))) , (pointer_expression "&local_28" & identifier) , (pointer_expression "&local_24" & identifier) , identifier , number_literal )))) ;) (expression_statement "pcVar3 = local_24;" (assignment_expression "pcVar3 = local_24" identifier = identifier) ;) (expression_statement "pcVar4 = local_28;" (assignment_expression "pcVar4 = local_28" identifier = identifier) ;) (if_statement "if ((iVar1 == 0) || (uVar2 = _DAT_0002d158 & 0x80, local_28 == (char *)0x0)) {\n    uVar2 = _DAT_0002d158 & 0x80;\n    if (uVar2 != 0) {\n      if (local_24 == (char *)0x0) {\n        pcVar3 = "<unknown>";\n      }\n      if (local_28 == (char *)0x0) {\n        pcVar4 = "<unknown>";\n      }\n      goto LAB_0001837d;\n    }\n  }\n  else if (local_24 == (char *)0x0) {\n    if (uVar2 != 0) {\n      pcVar3 = "<unknown>";\nLAB_0001837d:\n      printf("[get_src_info] no info for 0x%lx (%s:%d,%s)\n",param_1,pcVar4,local_20[0],pcVar3);\n      return 0;\n    }\n  }\n  else {\n    if (local_20[0] == 0) {\n      if (uVar2 == 0) {\n        return 0;\n      }\n      goto LAB_0001837d;\n    }\n    if (uVar2 != 0) {\n      printf("[get_src_info] 0x%lx -> %s:%d (%s)\n",param_1,local_28,local_20[0],local_24);\n    }\n    *param_2 = local_28;\n    *param_3 = local_24;\n    *param_4 = local_20[0];\n    uVar2 = 1;\n  }" if (parenthesized_expression "((iVar1 == 0) || (uVar2 = _DAT_0002d158 & 0x80, local_28 == (char *)0x0))" ( (binary_expression "(iVar1 == 0) || (uVar2 = _DAT_0002d158 & 0x80, local_28 == (char *)0x0)" (parenthesized_expression "(iVar1 == 0)" ( (binary_expression "iVar1 == 0" identifier == number_literal) )) || (parenthesized_expression "(uVar2 = _DAT_0002d158 & 0x80, local_28 == (char *)0x0)" ( (comma_expression "uVar2 = _DAT_0002d158 & 0x80, local_28 == (char *)0x0" (assignment_expression "uVar2 = _DAT_0002d158 & 0x80" identifier = (binary_expression "_DAT_0002d158 & 0x80" identifier & number_literal)) , (binary_expression "local_28 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal))) ))) )) (compound_statement "{\n    uVar2 = _DAT_0002d158 & 0x80;\n    if (uVar2 != 0) {\n      if (local_24 == (char *)0x0) {\n        pcVar3 = "<unknown>";\n      }\n      if (local_28 == (char *)0x0) {\n        pcVar4 = "<unknown>";\n      }\n      goto LAB_0001837d;\n    }\n  }" { (expression_statement "uVar2 = _DAT_0002d158 & 0x80;" (assignment_expression "uVar2 = _DAT_0002d158 & 0x80" identifier = (binary_expression "_DAT_0002d158 & 0x80" identifier & number_literal)) ;) (if_statement "if (uVar2 != 0) {\n      if (local_24 == (char *)0x0) {\n        pcVar3 = "<unknown>";\n      }\n      if (local_28 == (char *)0x0) {\n        pcVar4 = "<unknown>";\n      }\n      goto LAB_0001837d;\n    }" if (parenthesized_expression "(uVar2 != 0)" ( (binary_expression "uVar2 != 0" identifier != number_literal) )) (compound_statement "{\n      if (local_24 == (char *)0x0) {\n        pcVar3 = "<unknown>";\n      }\n      if (local_28 == (char *)0x0) {\n        pcVar4 = "<unknown>";\n      }\n      goto LAB_0001837d;\n    }" { (if_statement "if (local_24 == (char *)0x0) {\n        pcVar3 = "<unknown>";\n      }" if (parenthesized_expression "(local_24 == (char *)0x0)" ( (binary_expression "local_24 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        pcVar3 = "<unknown>";\n      }" { (expression_statement "pcVar3 = "<unknown>";" (assignment_expression "pcVar3 = "<unknown>"" identifier = (string_literal ""<unknown>"" " string_content ")) ;) })) (if_statement "if (local_28 == (char *)0x0) {\n        pcVar4 = "<unknown>";\n      }" if (parenthesized_expression "(local_28 == (char *)0x0)" ( (binary_expression "local_28 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        pcVar4 = "<unknown>";\n      }" { (expression_statement "pcVar4 = "<unknown>";" (assignment_expression "pcVar4 = "<unknown>"" identifier = (string_literal ""<unknown>"" " string_content ")) ;) })) (goto_statement "goto LAB_0001837d;" goto statement_identifier ;) })) }) (else_clause "else if (local_24 == (char *)0x0) {\n    if (uVar2 != 0) {\n      pcVar3 = "<unknown>";\nLAB_0001837d:\n      printf("[get_src_info] no info for 0x%lx (%s:%d,%s)\n",param_1,pcVar4,local_20[0],pcVar3);\n      return 0;\n    }\n  }\n  else {\n    if (local_20[0] == 0) {\n      if (uVar2 == 0) {\n        return 0;\n      }\n      goto LAB_0001837d;\n    }\n    if (uVar2 != 0) {\n      printf("[get_src_info] 0x%lx -> %s:%d (%s)\n",param_1,local_28,local_20[0],local_24);\n    }\n    *param_2 = local_28;\n    *param_3 = local_24;\n    *param_4 = local_20[0];\n    uVar2 = 1;\n  }" else (if_statement "if (local_24 == (char *)0x0) {\n    if (uVar2 != 0) {\n      pcVar3 = "<unknown>";\nLAB_0001837d:\n      printf("[get_src_info] no info for 0x%lx (%s:%d,%s)\n",param_1,pcVar4,local_20[0],pcVar3);\n      return 0;\n    }\n  }\n  else {\n    if (local_20[0] == 0) {\n      if (uVar2 == 0) {\n        return 0;\n      }\n      goto LAB_0001837d;\n    }\n    if (uVar2 != 0) {\n      printf("[get_src_info] 0x%lx -> %s:%d (%s)\n",param_1,local_28,local_20[0],local_24);\n    }\n    *param_2 = local_28;\n    *param_3 = local_24;\n    *param_4 = local_20[0];\n    uVar2 = 1;\n  }" if (parenthesized_expression "(local_24 == (char *)0x0)" ( (binary_expression "local_24 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    if (uVar2 != 0) {\n      pcVar3 = "<unknown>";\nLAB_0001837d:\n      printf("[get_src_info] no info for 0x%lx (%s:%d,%s)\n",param_1,pcVar4,local_20[0],pcVar3);\n      return 0;\n    }\n  }" { (if_statement "if (uVar2 != 0) {\n      pcVar3 = "<unknown>";\nLAB_0001837d:\n      printf("[get_src_info] no info for 0x%lx (%s:%d,%s)\n",param_1,pcVar4,local_20[0],pcVar3);\n      return 0;\n    }" if (parenthesized_expression "(uVar2 != 0)" ( (binary_expression "uVar2 != 0" identifier != number_literal) )) (compound_statement "{\n      pcVar3 = "<unknown>";\nLAB_0001837d:\n      printf("[get_src_info] no info for 0x%lx (%s:%d,%s)\n",param_1,pcVar4,local_20[0],pcVar3);\n      return 0;\n    }" { (expression_statement "pcVar3 = "<unknown>";" (assignment_expression "pcVar3 = "<unknown>"" identifier = (string_literal ""<unknown>"" " string_content ")) ;) (labeled_statement "LAB_0001837d:\n      printf("[get_src_info] no info for 0x%lx (%s:%d,%s)\n",param_1,pcVar4,local_20[0],pcVar3);" statement_identifier : (expression_statement "printf("[get_src_info] no info for 0x%lx (%s:%d,%s)\n",param_1,pcVar4,local_20[0],pcVar3);" (call_expression "printf("[get_src_info] no info for 0x%lx (%s:%d,%s)\n",param_1,pcVar4,local_20[0],pcVar3)" identifier (argument_list "("[get_src_info] no info for 0x%lx (%s:%d,%s)\n",param_1,pcVar4,local_20[0],pcVar3)" ( (string_literal ""[get_src_info] no info for 0x%lx (%s:%d,%s)\n"" " string_content escape_sequence ") , identifier , identifier , (subscript_expression "local_20[0]" identifier [ number_literal ]) , identifier ))) ;)) (return_statement "return 0;" return number_literal ;) })) }) (else_clause "else {\n    if (local_20[0] == 0) {\n      if (uVar2 == 0) {\n        return 0;\n      }\n      goto LAB_0001837d;\n    }\n    if (uVar2 != 0) {\n      printf("[get_src_info] 0x%lx -> %s:%d (%s)\n",param_1,local_28,local_20[0],local_24);\n    }\n    *param_2 = local_28;\n    *param_3 = local_24;\n    *param_4 = local_20[0];\n    uVar2 = 1;\n  }" else (compound_statement "{\n    if (local_20[0] == 0) {\n      if (uVar2 == 0) {\n        return 0;\n      }\n      goto LAB_0001837d;\n    }\n    if (uVar2 != 0) {\n      printf("[get_src_info] 0x%lx -> %s:%d (%s)\n",param_1,local_28,local_20[0],local_24);\n    }\n    *param_2 = local_28;\n    *param_3 = local_24;\n    *param_4 = local_20[0];\n    uVar2 = 1;\n  }" { (if_statement "if (local_20[0] == 0) {\n      if (uVar2 == 0) {\n        return 0;\n      }\n      goto LAB_0001837d;\n    }" if (parenthesized_expression "(local_20[0] == 0)" ( (binary_expression "local_20[0] == 0" (subscript_expression "local_20[0]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n      if (uVar2 == 0) {\n        return 0;\n      }\n      goto LAB_0001837d;\n    }" { (if_statement "if (uVar2 == 0) {\n        return 0;\n      }" if (parenthesized_expression "(uVar2 == 0)" ( (binary_expression "uVar2 == 0" identifier == number_literal) )) (compound_statement "{\n        return 0;\n      }" { (return_statement "return 0;" return number_literal ;) })) (goto_statement "goto LAB_0001837d;" goto statement_identifier ;) })) (if_statement "if (uVar2 != 0) {\n      printf("[get_src_info] 0x%lx -> %s:%d (%s)\n",param_1,local_28,local_20[0],local_24);\n    }" if (parenthesized_expression "(uVar2 != 0)" ( (binary_expression "uVar2 != 0" identifier != number_literal) )) (compound_statement "{\n      printf("[get_src_info] 0x%lx -> %s:%d (%s)\n",param_1,local_28,local_20[0],local_24);\n    }" { (expression_statement "printf("[get_src_info] 0x%lx -> %s:%d (%s)\n",param_1,local_28,local_20[0],local_24);" (call_expression "printf("[get_src_info] 0x%lx -> %s:%d (%s)\n",param_1,local_28,local_20[0],local_24)" identifier (argument_list "("[get_src_info] 0x%lx -> %s:%d (%s)\n",param_1,local_28,local_20[0],local_24)" ( (string_literal ""[get_src_info] 0x%lx -> %s:%d (%s)\n"" " string_content escape_sequence ") , identifier , identifier , (subscript_expression "local_20[0]" identifier [ number_literal ]) , identifier ))) ;) })) (expression_statement "*param_2 = local_28;" (assignment_expression "*param_2 = local_28" (pointer_expression "*param_2" * identifier) = identifier) ;) (expression_statement "*param_3 = local_24;" (assignment_expression "*param_3 = local_24" (pointer_expression "*param_3" * identifier) = identifier) ;) (expression_statement "*param_4 = local_20[0];" (assignment_expression "*param_4 = local_20[0]" (pointer_expression "*param_4" * identifier) = (subscript_expression "local_20[0]" identifier [ number_literal ])) ;) (expression_statement "uVar2 = 1;" (assignment_expression "uVar2 = 1" identifier = number_literal) ;) }))))) (return_statement "return uVar2;" return identifier ;) })))
(translation_unit "/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n\nbfd_boolean __regparm3 get_src_info(bfd_vma addr,char **filename,char **name,int *line_num)\n\n{\n  bfd_boolean bVar1;\n  uint uVar2;\n  char *pcVar3;\n  char *pcVar4;\n  char *fname;\n  char *func_name;\n  int l;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x1829d;\n  fname = (char *)0x0;\n  func_name = (char *)0x0;\n  l = 0;\n  bVar1 = (*core_bfd->xvec->_bfd_find_nearest_line)\n                    (core_bfd,core_syms,core_text_sect,addr - core_text_sect->vma,&fname,&func_name,\n                     (uint *)&l,(uint *)0x0);\n  pcVar3 = func_name;\n  pcVar4 = fname;\n  if ((bVar1 == 0) || (uVar2 = debug_level & 0x80, fname == (char *)0x0)) {\n    uVar2 = debug_level & 0x80;\n    if (uVar2 != 0) {\n      if (func_name == (char *)0x0) {\n        pcVar3 = "<unknown>";\n      }\n      if (fname == (char *)0x0) {\n        pcVar4 = "<unknown>";\n      }\n      goto LAB_0001837d;\n    }\n  }\n  else if (func_name == (char *)0x0) {\n    if (uVar2 != 0) {\n      pcVar3 = "<unknown>";\nLAB_0001837d:\n      printf("[get_src_info] no info for 0x%lx (%s:%d,%s)\n",addr,pcVar4,l,pcVar3);\n      return 0;\n    }\n  }\n  else {\n    if (l == 0) {\n      if (uVar2 == 0) {\n        return 0;\n      }\n      goto LAB_0001837d;\n    }\n    if (uVar2 != 0) {\n      printf("[get_src_info] 0x%lx -> %s:%d (%s)\n",addr,fname,l,func_name);\n    }\n    *filename = fname;\n    *name = func_name;\n    *line_num = l;\n    uVar2 = 1;\n  }\n  return uVar2;\n}\n\n" comment (function_definition "bfd_boolean __regparm3 get_src_info(bfd_vma addr,char **filename,char **name,int *line_num)\n\n{\n  bfd_boolean bVar1;\n  uint uVar2;\n  char *pcVar3;\n  char *pcVar4;\n  char *fname;\n  char *func_name;\n  int l;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x1829d;\n  fname = (char *)0x0;\n  func_name = (char *)0x0;\n  l = 0;\n  bVar1 = (*core_bfd->xvec->_bfd_find_nearest_line)\n                    (core_bfd,core_syms,core_text_sect,addr - core_text_sect->vma,&fname,&func_name,\n                     (uint *)&l,(uint *)0x0);\n  pcVar3 = func_name;\n  pcVar4 = fname;\n  if ((bVar1 == 0) || (uVar2 = debug_level & 0x80, fname == (char *)0x0)) {\n    uVar2 = debug_level & 0x80;\n    if (uVar2 != 0) {\n      if (func_name == (char *)0x0) {\n        pcVar3 = "<unknown>";\n      }\n      if (fname == (char *)0x0) {\n        pcVar4 = "<unknown>";\n      }\n      goto LAB_0001837d;\n    }\n  }\n  else if (func_name == (char *)0x0) {\n    if (uVar2 != 0) {\n      pcVar3 = "<unknown>";\nLAB_0001837d:\n      printf("[get_src_info] no info for 0x%lx (%s:%d,%s)\n",addr,pcVar4,l,pcVar3);\n      return 0;\n    }\n  }\n  else {\n    if (l == 0) {\n      if (uVar2 == 0) {\n        return 0;\n      }\n      goto LAB_0001837d;\n    }\n    if (uVar2 != 0) {\n      printf("[get_src_info] 0x%lx -> %s:%d (%s)\n",addr,fname,l,func_name);\n    }\n    *filename = fname;\n    *name = func_name;\n    *line_num = l;\n    uVar2 = 1;\n  }\n  return uVar2;\n}" type_identifier (ERROR "__regparm3" identifier) (function_declarator "get_src_info(bfd_vma addr,char **filename,char **name,int *line_num)" identifier (parameter_list "(bfd_vma addr,char **filename,char **name,int *line_num)" ( (parameter_declaration "bfd_vma addr" type_identifier identifier) , (parameter_declaration "char **filename" primitive_type (pointer_declarator "**filename" * (pointer_declarator "*filename" * identifier))) , (parameter_declaration "char **name" primitive_type (pointer_declarator "**name" * (pointer_declarator "*name" * identifier))) , (parameter_declaration "int *line_num" primitive_type (pointer_declarator "*line_num" * identifier)) ))) (compound_statement "{\n  bfd_boolean bVar1;\n  uint uVar2;\n  char *pcVar3;\n  char *pcVar4;\n  char *fname;\n  char *func_name;\n  int l;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x1829d;\n  fname = (char *)0x0;\n  func_name = (char *)0x0;\n  l = 0;\n  bVar1 = (*core_bfd->xvec->_bfd_find_nearest_line)\n                    (core_bfd,core_syms,core_text_sect,addr - core_text_sect->vma,&fname,&func_name,\n                     (uint *)&l,(uint *)0x0);\n  pcVar3 = func_name;\n  pcVar4 = fname;\n  if ((bVar1 == 0) || (uVar2 = debug_level & 0x80, fname == (char *)0x0)) {\n    uVar2 = debug_level & 0x80;\n    if (uVar2 != 0) {\n      if (func_name == (char *)0x0) {\n        pcVar3 = "<unknown>";\n      }\n      if (fname == (char *)0x0) {\n        pcVar4 = "<unknown>";\n      }\n      goto LAB_0001837d;\n    }\n  }\n  else if (func_name == (char *)0x0) {\n    if (uVar2 != 0) {\n      pcVar3 = "<unknown>";\nLAB_0001837d:\n      printf("[get_src_info] no info for 0x%lx (%s:%d,%s)\n",addr,pcVar4,l,pcVar3);\n      return 0;\n    }\n  }\n  else {\n    if (l == 0) {\n      if (uVar2 == 0) {\n        return 0;\n      }\n      goto LAB_0001837d;\n    }\n    if (uVar2 != 0) {\n      printf("[get_src_info] 0x%lx -> %s:%d (%s)\n",addr,fname,l,func_name);\n    }\n    *filename = fname;\n    *name = func_name;\n    *line_num = l;\n    uVar2 = 1;\n  }\n  return uVar2;\n}" { (declaration "bfd_boolean bVar1;" type_identifier identifier ;) (declaration "uint uVar2;" type_identifier identifier ;) (declaration "char *pcVar3;" primitive_type (pointer_declarator "*pcVar3" * identifier) ;) (declaration "char *pcVar4;" primitive_type (pointer_declarator "*pcVar4" * identifier) ;) (declaration "char *fname;" primitive_type (pointer_declarator "*fname" * identifier) ;) (declaration "char *func_name;" primitive_type (pointer_declarator "*func_name" * identifier) ;) (declaration "int l;" primitive_type identifier ;) (declaration "undefined4 uStack_14;" type_identifier identifier ;) (expression_statement "uStack_14 = 0x1829d;" (assignment_expression "uStack_14 = 0x1829d" identifier = number_literal) ;) (expression_statement "fname = (char *)0x0;" (assignment_expression "fname = (char *)0x0" identifier = (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "func_name = (char *)0x0;" (assignment_expression "func_name = (char *)0x0" identifier = (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "l = 0;" (assignment_expression "l = 0" identifier = number_literal) ;) (expression_statement "bVar1 = (*core_bfd->xvec->_bfd_find_nearest_line)\n                    (core_bfd,core_syms,core_text_sect,addr - core_text_sect->vma,&fname,&func_name,\n                     (uint *)&l,(uint *)0x0);" (assignment_expression "bVar1 = (*core_bfd->xvec->_bfd_find_nearest_line)\n                    (core_bfd,core_syms,core_text_sect,addr - core_text_sect->vma,&fname,&func_name,\n                     (uint *)&l,(uint *)0x0)" identifier = (call_expression "(*core_bfd->xvec->_bfd_find_nearest_line)\n                    (core_bfd,core_syms,core_text_sect,addr - core_text_sect->vma,&fname,&func_name,\n                     (uint *)&l,(uint *)0x0)" (parenthesized_expression "(*core_bfd->xvec->_bfd_find_nearest_line)" ( (pointer_expression "*core_bfd->xvec->_bfd_find_nearest_line" * (field_expression "core_bfd->xvec->_bfd_find_nearest_line" (field_expression "core_bfd->xvec" identifier -> field_identifier) -> field_identifier)) )) (argument_list "(core_bfd,core_syms,core_text_sect,addr - core_text_sect->vma,&fname,&func_name,\n                     (uint *)&l,(uint *)0x0)" ( identifier , identifier , identifier , (binary_expression "addr - core_text_sect->vma" identifier - (field_expression "core_text_sect->vma" identifier -> field_identifier)) , (pointer_expression "&fname" & identifier) , (pointer_expression "&func_name" & identifier) , (cast_expression "(uint *)&l" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&l" & identifier)) , (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) )))) ;) (expression_statement "pcVar3 = func_name;" (assignment_expression "pcVar3 = func_name" identifier = identifier) ;) (expression_statement "pcVar4 = fname;" (assignment_expression "pcVar4 = fname" identifier = identifier) ;) (if_statement "if ((bVar1 == 0) || (uVar2 = debug_level & 0x80, fname == (char *)0x0)) {\n    uVar2 = debug_level & 0x80;\n    if (uVar2 != 0) {\n      if (func_name == (char *)0x0) {\n        pcVar3 = "<unknown>";\n      }\n      if (fname == (char *)0x0) {\n        pcVar4 = "<unknown>";\n      }\n      goto LAB_0001837d;\n    }\n  }\n  else if (func_name == (char *)0x0) {\n    if (uVar2 != 0) {\n      pcVar3 = "<unknown>";\nLAB_0001837d:\n      printf("[get_src_info] no info for 0x%lx (%s:%d,%s)\n",addr,pcVar4,l,pcVar3);\n      return 0;\n    }\n  }\n  else {\n    if (l == 0) {\n      if (uVar2 == 0) {\n        return 0;\n      }\n      goto LAB_0001837d;\n    }\n    if (uVar2 != 0) {\n      printf("[get_src_info] 0x%lx -> %s:%d (%s)\n",addr,fname,l,func_name);\n    }\n    *filename = fname;\n    *name = func_name;\n    *line_num = l;\n    uVar2 = 1;\n  }" if (parenthesized_expression "((bVar1 == 0) || (uVar2 = debug_level & 0x80, fname == (char *)0x0))" ( (binary_expression "(bVar1 == 0) || (uVar2 = debug_level & 0x80, fname == (char *)0x0)" (parenthesized_expression "(bVar1 == 0)" ( (binary_expression "bVar1 == 0" identifier == number_literal) )) || (parenthesized_expression "(uVar2 = debug_level & 0x80, fname == (char *)0x0)" ( (comma_expression "uVar2 = debug_level & 0x80, fname == (char *)0x0" (assignment_expression "uVar2 = debug_level & 0x80" identifier = (binary_expression "debug_level & 0x80" identifier & number_literal)) , (binary_expression "fname == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal))) ))) )) (compound_statement "{\n    uVar2 = debug_level & 0x80;\n    if (uVar2 != 0) {\n      if (func_name == (char *)0x0) {\n        pcVar3 = "<unknown>";\n      }\n      if (fname == (char *)0x0) {\n        pcVar4 = "<unknown>";\n      }\n      goto LAB_0001837d;\n    }\n  }" { (expression_statement "uVar2 = debug_level & 0x80;" (assignment_expression "uVar2 = debug_level & 0x80" identifier = (binary_expression "debug_level & 0x80" identifier & number_literal)) ;) (if_statement "if (uVar2 != 0) {\n      if (func_name == (char *)0x0) {\n        pcVar3 = "<unknown>";\n      }\n      if (fname == (char *)0x0) {\n        pcVar4 = "<unknown>";\n      }\n      goto LAB_0001837d;\n    }" if (parenthesized_expression "(uVar2 != 0)" ( (binary_expression "uVar2 != 0" identifier != number_literal) )) (compound_statement "{\n      if (func_name == (char *)0x0) {\n        pcVar3 = "<unknown>";\n      }\n      if (fname == (char *)0x0) {\n        pcVar4 = "<unknown>";\n      }\n      goto LAB_0001837d;\n    }" { (if_statement "if (func_name == (char *)0x0) {\n        pcVar3 = "<unknown>";\n      }" if (parenthesized_expression "(func_name == (char *)0x0)" ( (binary_expression "func_name == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        pcVar3 = "<unknown>";\n      }" { (expression_statement "pcVar3 = "<unknown>";" (assignment_expression "pcVar3 = "<unknown>"" identifier = (string_literal ""<unknown>"" " string_content ")) ;) })) (if_statement "if (fname == (char *)0x0) {\n        pcVar4 = "<unknown>";\n      }" if (parenthesized_expression "(fname == (char *)0x0)" ( (binary_expression "fname == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        pcVar4 = "<unknown>";\n      }" { (expression_statement "pcVar4 = "<unknown>";" (assignment_expression "pcVar4 = "<unknown>"" identifier = (string_literal ""<unknown>"" " string_content ")) ;) })) (goto_statement "goto LAB_0001837d;" goto statement_identifier ;) })) }) (else_clause "else if (func_name == (char *)0x0) {\n    if (uVar2 != 0) {\n      pcVar3 = "<unknown>";\nLAB_0001837d:\n      printf("[get_src_info] no info for 0x%lx (%s:%d,%s)\n",addr,pcVar4,l,pcVar3);\n      return 0;\n    }\n  }\n  else {\n    if (l == 0) {\n      if (uVar2 == 0) {\n        return 0;\n      }\n      goto LAB_0001837d;\n    }\n    if (uVar2 != 0) {\n      printf("[get_src_info] 0x%lx -> %s:%d (%s)\n",addr,fname,l,func_name);\n    }\n    *filename = fname;\n    *name = func_name;\n    *line_num = l;\n    uVar2 = 1;\n  }" else (if_statement "if (func_name == (char *)0x0) {\n    if (uVar2 != 0) {\n      pcVar3 = "<unknown>";\nLAB_0001837d:\n      printf("[get_src_info] no info for 0x%lx (%s:%d,%s)\n",addr,pcVar4,l,pcVar3);\n      return 0;\n    }\n  }\n  else {\n    if (l == 0) {\n      if (uVar2 == 0) {\n        return 0;\n      }\n      goto LAB_0001837d;\n    }\n    if (uVar2 != 0) {\n      printf("[get_src_info] 0x%lx -> %s:%d (%s)\n",addr,fname,l,func_name);\n    }\n    *filename = fname;\n    *name = func_name;\n    *line_num = l;\n    uVar2 = 1;\n  }" if (parenthesized_expression "(func_name == (char *)0x0)" ( (binary_expression "func_name == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    if (uVar2 != 0) {\n      pcVar3 = "<unknown>";\nLAB_0001837d:\n      printf("[get_src_info] no info for 0x%lx (%s:%d,%s)\n",addr,pcVar4,l,pcVar3);\n      return 0;\n    }\n  }" { (if_statement "if (uVar2 != 0) {\n      pcVar3 = "<unknown>";\nLAB_0001837d:\n      printf("[get_src_info] no info for 0x%lx (%s:%d,%s)\n",addr,pcVar4,l,pcVar3);\n      return 0;\n    }" if (parenthesized_expression "(uVar2 != 0)" ( (binary_expression "uVar2 != 0" identifier != number_literal) )) (compound_statement "{\n      pcVar3 = "<unknown>";\nLAB_0001837d:\n      printf("[get_src_info] no info for 0x%lx (%s:%d,%s)\n",addr,pcVar4,l,pcVar3);\n      return 0;\n    }" { (expression_statement "pcVar3 = "<unknown>";" (assignment_expression "pcVar3 = "<unknown>"" identifier = (string_literal ""<unknown>"" " string_content ")) ;) (labeled_statement "LAB_0001837d:\n      printf("[get_src_info] no info for 0x%lx (%s:%d,%s)\n",addr,pcVar4,l,pcVar3);" statement_identifier : (expression_statement "printf("[get_src_info] no info for 0x%lx (%s:%d,%s)\n",addr,pcVar4,l,pcVar3);" (call_expression "printf("[get_src_info] no info for 0x%lx (%s:%d,%s)\n",addr,pcVar4,l,pcVar3)" identifier (argument_list "("[get_src_info] no info for 0x%lx (%s:%d,%s)\n",addr,pcVar4,l,pcVar3)" ( (string_literal ""[get_src_info] no info for 0x%lx (%s:%d,%s)\n"" " string_content escape_sequence ") , identifier , identifier , identifier , identifier ))) ;)) (return_statement "return 0;" return number_literal ;) })) }) (else_clause "else {\n    if (l == 0) {\n      if (uVar2 == 0) {\n        return 0;\n      }\n      goto LAB_0001837d;\n    }\n    if (uVar2 != 0) {\n      printf("[get_src_info] 0x%lx -> %s:%d (%s)\n",addr,fname,l,func_name);\n    }\n    *filename = fname;\n    *name = func_name;\n    *line_num = l;\n    uVar2 = 1;\n  }" else (compound_statement "{\n    if (l == 0) {\n      if (uVar2 == 0) {\n        return 0;\n      }\n      goto LAB_0001837d;\n    }\n    if (uVar2 != 0) {\n      printf("[get_src_info] 0x%lx -> %s:%d (%s)\n",addr,fname,l,func_name);\n    }\n    *filename = fname;\n    *name = func_name;\n    *line_num = l;\n    uVar2 = 1;\n  }" { (if_statement "if (l == 0) {\n      if (uVar2 == 0) {\n        return 0;\n      }\n      goto LAB_0001837d;\n    }" if (parenthesized_expression "(l == 0)" ( (binary_expression "l == 0" identifier == number_literal) )) (compound_statement "{\n      if (uVar2 == 0) {\n        return 0;\n      }\n      goto LAB_0001837d;\n    }" { (if_statement "if (uVar2 == 0) {\n        return 0;\n      }" if (parenthesized_expression "(uVar2 == 0)" ( (binary_expression "uVar2 == 0" identifier == number_literal) )) (compound_statement "{\n        return 0;\n      }" { (return_statement "return 0;" return number_literal ;) })) (goto_statement "goto LAB_0001837d;" goto statement_identifier ;) })) (if_statement "if (uVar2 != 0) {\n      printf("[get_src_info] 0x%lx -> %s:%d (%s)\n",addr,fname,l,func_name);\n    }" if (parenthesized_expression "(uVar2 != 0)" ( (binary_expression "uVar2 != 0" identifier != number_literal) )) (compound_statement "{\n      printf("[get_src_info] 0x%lx -> %s:%d (%s)\n",addr,fname,l,func_name);\n    }" { (expression_statement "printf("[get_src_info] 0x%lx -> %s:%d (%s)\n",addr,fname,l,func_name);" (call_expression "printf("[get_src_info] 0x%lx -> %s:%d (%s)\n",addr,fname,l,func_name)" identifier (argument_list "("[get_src_info] 0x%lx -> %s:%d (%s)\n",addr,fname,l,func_name)" ( (string_literal ""[get_src_info] 0x%lx -> %s:%d (%s)\n"" " string_content escape_sequence ") , identifier , identifier , identifier , identifier ))) ;) })) (expression_statement "*filename = fname;" (assignment_expression "*filename = fname" (pointer_expression "*filename" * identifier) = identifier) ;) (expression_statement "*name = func_name;" (assignment_expression "*name = func_name" (pointer_expression "*name" * identifier) = identifier) ;) (expression_statement "*line_num = l;" (assignment_expression "*line_num = l" (pointer_expression "*line_num" * identifier) = identifier) ;) (expression_statement "uVar2 = 1;" (assignment_expression "uVar2 = 1" identifier = number_literal) ;) }))))) (return_statement "return uVar2;" return identifier ;) })))
(translation_unit "uint __regparm3 FUN_00018290(int param_1,undefined4 *param_2,undefined4 *param_3,int *param_4)\n\n{\n  int iVar1;\n  uint uVar2;\n  char *pcVar3;\n  char *pcVar4;\n  char *local_28;\n  char *local_24;\n  int local_20 [3];\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x1829d;\n  local_28 = (char *)0x0;\n  local_24 = (char *)0x0;\n  local_20[0] = 0;\n  iVar1 = (**(code **)(*(int *)(DAT_0002d478 + 4) + 0x128))\n                    (DAT_0002d478,DAT_0002d124,DAT_0002d488,param_1 - *(int *)(DAT_0002d488 + 0x1c),\n                     &local_28,&local_24,local_20,0);\n  pcVar3 = local_24;\n  pcVar4 = local_28;\n  if ((iVar1 == 0) || (uVar2 = _DAT_0002d158 & 0x80, local_28 == (char *)0x0)) {\n    uVar2 = _DAT_0002d158 & 0x80;\n    if (uVar2 != 0) {\n      if (local_24 == (char *)0x0) {\n        pcVar3 = "<unknown>";\n      }\n      if (local_28 == (char *)0x0) {\n        pcVar4 = "<unknown>";\n      }\n      goto LAB_0001837d;\n    }\n  }\n  else if (local_24 == (char *)0x0) {\n    if (uVar2 != 0) {\n      pcVar3 = "<unknown>";\nLAB_0001837d:\n      printf("[get_src_info] no info for 0x%lx (%s:%d,%s)\n",param_1,pcVar4,local_20[0],pcVar3);\n      return 0;\n    }\n  }\n  else {\n    if (local_20[0] == 0) {\n      if (uVar2 == 0) {\n        return 0;\n      }\n      goto LAB_0001837d;\n    }\n    if (uVar2 != 0) {\n      printf("[get_src_info] 0x%lx -> %s:%d (%s)\n",param_1,local_28,local_20[0],local_24);\n    }\n    *param_2 = local_28;\n    *param_3 = local_24;\n    *param_4 = local_20[0];\n    uVar2 = 1;\n  }\n  return uVar2;\n}\n\n" (function_definition "uint __regparm3 FUN_00018290(int param_1,undefined4 *param_2,undefined4 *param_3,int *param_4)\n\n{\n  int iVar1;\n  uint uVar2;\n  char *pcVar3;\n  char *pcVar4;\n  char *local_28;\n  char *local_24;\n  int local_20 [3];\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x1829d;\n  local_28 = (char *)0x0;\n  local_24 = (char *)0x0;\n  local_20[0] = 0;\n  iVar1 = (**(code **)(*(int *)(DAT_0002d478 + 4) + 0x128))\n                    (DAT_0002d478,DAT_0002d124,DAT_0002d488,param_1 - *(int *)(DAT_0002d488 + 0x1c),\n                     &local_28,&local_24,local_20,0);\n  pcVar3 = local_24;\n  pcVar4 = local_28;\n  if ((iVar1 == 0) || (uVar2 = _DAT_0002d158 & 0x80, local_28 == (char *)0x0)) {\n    uVar2 = _DAT_0002d158 & 0x80;\n    if (uVar2 != 0) {\n      if (local_24 == (char *)0x0) {\n        pcVar3 = "<unknown>";\n      }\n      if (local_28 == (char *)0x0) {\n        pcVar4 = "<unknown>";\n      }\n      goto LAB_0001837d;\n    }\n  }\n  else if (local_24 == (char *)0x0) {\n    if (uVar2 != 0) {\n      pcVar3 = "<unknown>";\nLAB_0001837d:\n      printf("[get_src_info] no info for 0x%lx (%s:%d,%s)\n",param_1,pcVar4,local_20[0],pcVar3);\n      return 0;\n    }\n  }\n  else {\n    if (local_20[0] == 0) {\n      if (uVar2 == 0) {\n        return 0;\n      }\n      goto LAB_0001837d;\n    }\n    if (uVar2 != 0) {\n      printf("[get_src_info] 0x%lx -> %s:%d (%s)\n",param_1,local_28,local_20[0],local_24);\n    }\n    *param_2 = local_28;\n    *param_3 = local_24;\n    *param_4 = local_20[0];\n    uVar2 = 1;\n  }\n  return uVar2;\n}" type_identifier (ERROR "__regparm3" identifier) (function_declarator "FUN_00018290(int param_1,undefined4 *param_2,undefined4 *param_3,int *param_4)" identifier (parameter_list "(int param_1,undefined4 *param_2,undefined4 *param_3,int *param_4)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "undefined4 *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "undefined4 *param_3" type_identifier (pointer_declarator "*param_3" * identifier)) , (parameter_declaration "int *param_4" primitive_type (pointer_declarator "*param_4" * identifier)) ))) (compound_statement "{\n  int iVar1;\n  uint uVar2;\n  char *pcVar3;\n  char *pcVar4;\n  char *local_28;\n  char *local_24;\n  int local_20 [3];\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x1829d;\n  local_28 = (char *)0x0;\n  local_24 = (char *)0x0;\n  local_20[0] = 0;\n  iVar1 = (**(code **)(*(int *)(DAT_0002d478 + 4) + 0x128))\n                    (DAT_0002d478,DAT_0002d124,DAT_0002d488,param_1 - *(int *)(DAT_0002d488 + 0x1c),\n                     &local_28,&local_24,local_20,0);\n  pcVar3 = local_24;\n  pcVar4 = local_28;\n  if ((iVar1 == 0) || (uVar2 = _DAT_0002d158 & 0x80, local_28 == (char *)0x0)) {\n    uVar2 = _DAT_0002d158 & 0x80;\n    if (uVar2 != 0) {\n      if (local_24 == (char *)0x0) {\n        pcVar3 = "<unknown>";\n      }\n      if (local_28 == (char *)0x0) {\n        pcVar4 = "<unknown>";\n      }\n      goto LAB_0001837d;\n    }\n  }\n  else if (local_24 == (char *)0x0) {\n    if (uVar2 != 0) {\n      pcVar3 = "<unknown>";\nLAB_0001837d:\n      printf("[get_src_info] no info for 0x%lx (%s:%d,%s)\n",param_1,pcVar4,local_20[0],pcVar3);\n      return 0;\n    }\n  }\n  else {\n    if (local_20[0] == 0) {\n      if (uVar2 == 0) {\n        return 0;\n      }\n      goto LAB_0001837d;\n    }\n    if (uVar2 != 0) {\n      printf("[get_src_info] 0x%lx -> %s:%d (%s)\n",param_1,local_28,local_20[0],local_24);\n    }\n    *param_2 = local_28;\n    *param_3 = local_24;\n    *param_4 = local_20[0];\n    uVar2 = 1;\n  }\n  return uVar2;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "uint uVar2;" type_identifier identifier ;) (declaration "char *pcVar3;" primitive_type (pointer_declarator "*pcVar3" * identifier) ;) (declaration "char *pcVar4;" primitive_type (pointer_declarator "*pcVar4" * identifier) ;) (declaration "char *local_28;" primitive_type (pointer_declarator "*local_28" * identifier) ;) (declaration "char *local_24;" primitive_type (pointer_declarator "*local_24" * identifier) ;) (declaration "int local_20 [3];" primitive_type (array_declarator "local_20 [3]" identifier [ number_literal ]) ;) (declaration "undefined4 uStack_14;" type_identifier identifier ;) (expression_statement "uStack_14 = 0x1829d;" (assignment_expression "uStack_14 = 0x1829d" identifier = number_literal) ;) (expression_statement "local_28 = (char *)0x0;" (assignment_expression "local_28 = (char *)0x0" identifier = (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "local_24 = (char *)0x0;" (assignment_expression "local_24 = (char *)0x0" identifier = (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "local_20[0] = 0;" (assignment_expression "local_20[0] = 0" (subscript_expression "local_20[0]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "iVar1 = (**(code **)(*(int *)(DAT_0002d478 + 4) + 0x128))\n                    (DAT_0002d478,DAT_0002d124,DAT_0002d488,param_1 - *(int *)(DAT_0002d488 + 0x1c),\n                     &local_28,&local_24,local_20,0);" (assignment_expression "iVar1 = (**(code **)(*(int *)(DAT_0002d478 + 4) + 0x128))\n                    (DAT_0002d478,DAT_0002d124,DAT_0002d488,param_1 - *(int *)(DAT_0002d488 + 0x1c),\n                     &local_28,&local_24,local_20,0)" identifier = (call_expression "(**(code **)(*(int *)(DAT_0002d478 + 4) + 0x128))\n                    (DAT_0002d478,DAT_0002d124,DAT_0002d488,param_1 - *(int *)(DAT_0002d488 + 0x1c),\n                     &local_28,&local_24,local_20,0)" (parenthesized_expression "(**(code **)(*(int *)(DAT_0002d478 + 4) + 0x128))" ( (pointer_expression "**(code **)(*(int *)(DAT_0002d478 + 4) + 0x128)" * (pointer_expression "*(code **)(*(int *)(DAT_0002d478 + 4) + 0x128)" * (cast_expression "(code **)(*(int *)(DAT_0002d478 + 4) + 0x128)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)(DAT_0002d478 + 4) + 0x128)" ( (binary_expression "*(int *)(DAT_0002d478 + 4) + 0x128" (pointer_expression "*(int *)(DAT_0002d478 + 4)" * (cast_expression "(int *)(DAT_0002d478 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(DAT_0002d478 + 4)" ( (binary_expression "DAT_0002d478 + 4" identifier + number_literal) )))) + number_literal) ))))) )) (argument_list "(DAT_0002d478,DAT_0002d124,DAT_0002d488,param_1 - *(int *)(DAT_0002d488 + 0x1c),\n                     &local_28,&local_24,local_20,0)" ( identifier , identifier , identifier , (binary_expression "param_1 - *(int *)(DAT_0002d488 + 0x1c)" identifier - (pointer_expression "*(int *)(DAT_0002d488 + 0x1c)" * (cast_expression "(int *)(DAT_0002d488 + 0x1c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(DAT_0002d488 + 0x1c)" ( (binary_expression "DAT_0002d488 + 0x1c" identifier + number_literal) ))))) , (pointer_expression "&local_28" & identifier) , (pointer_expression "&local_24" & identifier) , identifier , number_literal )))) ;) (expression_statement "pcVar3 = local_24;" (assignment_expression "pcVar3 = local_24" identifier = identifier) ;) (expression_statement "pcVar4 = local_28;" (assignment_expression "pcVar4 = local_28" identifier = identifier) ;) (if_statement "if ((iVar1 == 0) || (uVar2 = _DAT_0002d158 & 0x80, local_28 == (char *)0x0)) {\n    uVar2 = _DAT_0002d158 & 0x80;\n    if (uVar2 != 0) {\n      if (local_24 == (char *)0x0) {\n        pcVar3 = "<unknown>";\n      }\n      if (local_28 == (char *)0x0) {\n        pcVar4 = "<unknown>";\n      }\n      goto LAB_0001837d;\n    }\n  }\n  else if (local_24 == (char *)0x0) {\n    if (uVar2 != 0) {\n      pcVar3 = "<unknown>";\nLAB_0001837d:\n      printf("[get_src_info] no info for 0x%lx (%s:%d,%s)\n",param_1,pcVar4,local_20[0],pcVar3);\n      return 0;\n    }\n  }\n  else {\n    if (local_20[0] == 0) {\n      if (uVar2 == 0) {\n        return 0;\n      }\n      goto LAB_0001837d;\n    }\n    if (uVar2 != 0) {\n      printf("[get_src_info] 0x%lx -> %s:%d (%s)\n",param_1,local_28,local_20[0],local_24);\n    }\n    *param_2 = local_28;\n    *param_3 = local_24;\n    *param_4 = local_20[0];\n    uVar2 = 1;\n  }" if (parenthesized_expression "((iVar1 == 0) || (uVar2 = _DAT_0002d158 & 0x80, local_28 == (char *)0x0))" ( (binary_expression "(iVar1 == 0) || (uVar2 = _DAT_0002d158 & 0x80, local_28 == (char *)0x0)" (parenthesized_expression "(iVar1 == 0)" ( (binary_expression "iVar1 == 0" identifier == number_literal) )) || (parenthesized_expression "(uVar2 = _DAT_0002d158 & 0x80, local_28 == (char *)0x0)" ( (comma_expression "uVar2 = _DAT_0002d158 & 0x80, local_28 == (char *)0x0" (assignment_expression "uVar2 = _DAT_0002d158 & 0x80" identifier = (binary_expression "_DAT_0002d158 & 0x80" identifier & number_literal)) , (binary_expression "local_28 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal))) ))) )) (compound_statement "{\n    uVar2 = _DAT_0002d158 & 0x80;\n    if (uVar2 != 0) {\n      if (local_24 == (char *)0x0) {\n        pcVar3 = "<unknown>";\n      }\n      if (local_28 == (char *)0x0) {\n        pcVar4 = "<unknown>";\n      }\n      goto LAB_0001837d;\n    }\n  }" { (expression_statement "uVar2 = _DAT_0002d158 & 0x80;" (assignment_expression "uVar2 = _DAT_0002d158 & 0x80" identifier = (binary_expression "_DAT_0002d158 & 0x80" identifier & number_literal)) ;) (if_statement "if (uVar2 != 0) {\n      if (local_24 == (char *)0x0) {\n        pcVar3 = "<unknown>";\n      }\n      if (local_28 == (char *)0x0) {\n        pcVar4 = "<unknown>";\n      }\n      goto LAB_0001837d;\n    }" if (parenthesized_expression "(uVar2 != 0)" ( (binary_expression "uVar2 != 0" identifier != number_literal) )) (compound_statement "{\n      if (local_24 == (char *)0x0) {\n        pcVar3 = "<unknown>";\n      }\n      if (local_28 == (char *)0x0) {\n        pcVar4 = "<unknown>";\n      }\n      goto LAB_0001837d;\n    }" { (if_statement "if (local_24 == (char *)0x0) {\n        pcVar3 = "<unknown>";\n      }" if (parenthesized_expression "(local_24 == (char *)0x0)" ( (binary_expression "local_24 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        pcVar3 = "<unknown>";\n      }" { (expression_statement "pcVar3 = "<unknown>";" (assignment_expression "pcVar3 = "<unknown>"" identifier = (string_literal ""<unknown>"" " string_content ")) ;) })) (if_statement "if (local_28 == (char *)0x0) {\n        pcVar4 = "<unknown>";\n      }" if (parenthesized_expression "(local_28 == (char *)0x0)" ( (binary_expression "local_28 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        pcVar4 = "<unknown>";\n      }" { (expression_statement "pcVar4 = "<unknown>";" (assignment_expression "pcVar4 = "<unknown>"" identifier = (string_literal ""<unknown>"" " string_content ")) ;) })) (goto_statement "goto LAB_0001837d;" goto statement_identifier ;) })) }) (else_clause "else if (local_24 == (char *)0x0) {\n    if (uVar2 != 0) {\n      pcVar3 = "<unknown>";\nLAB_0001837d:\n      printf("[get_src_info] no info for 0x%lx (%s:%d,%s)\n",param_1,pcVar4,local_20[0],pcVar3);\n      return 0;\n    }\n  }\n  else {\n    if (local_20[0] == 0) {\n      if (uVar2 == 0) {\n        return 0;\n      }\n      goto LAB_0001837d;\n    }\n    if (uVar2 != 0) {\n      printf("[get_src_info] 0x%lx -> %s:%d (%s)\n",param_1,local_28,local_20[0],local_24);\n    }\n    *param_2 = local_28;\n    *param_3 = local_24;\n    *param_4 = local_20[0];\n    uVar2 = 1;\n  }" else (if_statement "if (local_24 == (char *)0x0) {\n    if (uVar2 != 0) {\n      pcVar3 = "<unknown>";\nLAB_0001837d:\n      printf("[get_src_info] no info for 0x%lx (%s:%d,%s)\n",param_1,pcVar4,local_20[0],pcVar3);\n      return 0;\n    }\n  }\n  else {\n    if (local_20[0] == 0) {\n      if (uVar2 == 0) {\n        return 0;\n      }\n      goto LAB_0001837d;\n    }\n    if (uVar2 != 0) {\n      printf("[get_src_info] 0x%lx -> %s:%d (%s)\n",param_1,local_28,local_20[0],local_24);\n    }\n    *param_2 = local_28;\n    *param_3 = local_24;\n    *param_4 = local_20[0];\n    uVar2 = 1;\n  }" if (parenthesized_expression "(local_24 == (char *)0x0)" ( (binary_expression "local_24 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    if (uVar2 != 0) {\n      pcVar3 = "<unknown>";\nLAB_0001837d:\n      printf("[get_src_info] no info for 0x%lx (%s:%d,%s)\n",param_1,pcVar4,local_20[0],pcVar3);\n      return 0;\n    }\n  }" { (if_statement "if (uVar2 != 0) {\n      pcVar3 = "<unknown>";\nLAB_0001837d:\n      printf("[get_src_info] no info for 0x%lx (%s:%d,%s)\n",param_1,pcVar4,local_20[0],pcVar3);\n      return 0;\n    }" if (parenthesized_expression "(uVar2 != 0)" ( (binary_expression "uVar2 != 0" identifier != number_literal) )) (compound_statement "{\n      pcVar3 = "<unknown>";\nLAB_0001837d:\n      printf("[get_src_info] no info for 0x%lx (%s:%d,%s)\n",param_1,pcVar4,local_20[0],pcVar3);\n      return 0;\n    }" { (expression_statement "pcVar3 = "<unknown>";" (assignment_expression "pcVar3 = "<unknown>"" identifier = (string_literal ""<unknown>"" " string_content ")) ;) (labeled_statement "LAB_0001837d:\n      printf("[get_src_info] no info for 0x%lx (%s:%d,%s)\n",param_1,pcVar4,local_20[0],pcVar3);" statement_identifier : (expression_statement "printf("[get_src_info] no info for 0x%lx (%s:%d,%s)\n",param_1,pcVar4,local_20[0],pcVar3);" (call_expression "printf("[get_src_info] no info for 0x%lx (%s:%d,%s)\n",param_1,pcVar4,local_20[0],pcVar3)" identifier (argument_list "("[get_src_info] no info for 0x%lx (%s:%d,%s)\n",param_1,pcVar4,local_20[0],pcVar3)" ( (string_literal ""[get_src_info] no info for 0x%lx (%s:%d,%s)\n"" " string_content escape_sequence ") , identifier , identifier , (subscript_expression "local_20[0]" identifier [ number_literal ]) , identifier ))) ;)) (return_statement "return 0;" return number_literal ;) })) }) (else_clause "else {\n    if (local_20[0] == 0) {\n      if (uVar2 == 0) {\n        return 0;\n      }\n      goto LAB_0001837d;\n    }\n    if (uVar2 != 0) {\n      printf("[get_src_info] 0x%lx -> %s:%d (%s)\n",param_1,local_28,local_20[0],local_24);\n    }\n    *param_2 = local_28;\n    *param_3 = local_24;\n    *param_4 = local_20[0];\n    uVar2 = 1;\n  }" else (compound_statement "{\n    if (local_20[0] == 0) {\n      if (uVar2 == 0) {\n        return 0;\n      }\n      goto LAB_0001837d;\n    }\n    if (uVar2 != 0) {\n      printf("[get_src_info] 0x%lx -> %s:%d (%s)\n",param_1,local_28,local_20[0],local_24);\n    }\n    *param_2 = local_28;\n    *param_3 = local_24;\n    *param_4 = local_20[0];\n    uVar2 = 1;\n  }" { (if_statement "if (local_20[0] == 0) {\n      if (uVar2 == 0) {\n        return 0;\n      }\n      goto LAB_0001837d;\n    }" if (parenthesized_expression "(local_20[0] == 0)" ( (binary_expression "local_20[0] == 0" (subscript_expression "local_20[0]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n      if (uVar2 == 0) {\n        return 0;\n      }\n      goto LAB_0001837d;\n    }" { (if_statement "if (uVar2 == 0) {\n        return 0;\n      }" if (parenthesized_expression "(uVar2 == 0)" ( (binary_expression "uVar2 == 0" identifier == number_literal) )) (compound_statement "{\n        return 0;\n      }" { (return_statement "return 0;" return number_literal ;) })) (goto_statement "goto LAB_0001837d;" goto statement_identifier ;) })) (if_statement "if (uVar2 != 0) {\n      printf("[get_src_info] 0x%lx -> %s:%d (%s)\n",param_1,local_28,local_20[0],local_24);\n    }" if (parenthesized_expression "(uVar2 != 0)" ( (binary_expression "uVar2 != 0" identifier != number_literal) )) (compound_statement "{\n      printf("[get_src_info] 0x%lx -> %s:%d (%s)\n",param_1,local_28,local_20[0],local_24);\n    }" { (expression_statement "printf("[get_src_info] 0x%lx -> %s:%d (%s)\n",param_1,local_28,local_20[0],local_24);" (call_expression "printf("[get_src_info] 0x%lx -> %s:%d (%s)\n",param_1,local_28,local_20[0],local_24)" identifier (argument_list "("[get_src_info] 0x%lx -> %s:%d (%s)\n",param_1,local_28,local_20[0],local_24)" ( (string_literal ""[get_src_info] 0x%lx -> %s:%d (%s)\n"" " string_content escape_sequence ") , identifier , identifier , (subscript_expression "local_20[0]" identifier [ number_literal ]) , identifier ))) ;) })) (expression_statement "*param_2 = local_28;" (assignment_expression "*param_2 = local_28" (pointer_expression "*param_2" * identifier) = identifier) ;) (expression_statement "*param_3 = local_24;" (assignment_expression "*param_3 = local_24" (pointer_expression "*param_3" * identifier) = identifier) ;) (expression_statement "*param_4 = local_20[0];" (assignment_expression "*param_4 = local_20[0]" (pointer_expression "*param_4" * identifier) = (subscript_expression "local_20[0]" identifier [ number_literal ])) ;) (expression_statement "uVar2 = 1;" (assignment_expression "uVar2 = 1" identifier = number_literal) ;) }))))) (return_statement "return uVar2;" return identifier ;) })))
(translation_unit (function_definition TYPE (ERROR IDENT) (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE (pointer_declarator * IDENT)) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) ))))) )) (argument_list ( IDENT , IDENT , IDENT , (binary_expression IDENT - (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) , (pointer_expression & IDENT) , (pointer_expression & IDENT) , IDENT , LIT )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == LIT) )) || (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (binary_expression IDENT & LIT)) , (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT))) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT & LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (string_literal " string_content ")) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (string_literal " string_content ")) ;) })) (goto_statement goto statement_identifier ;) })) }) (else_clause else (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (string_literal " string_content ")) ;) (labeled_statement statement_identifier : (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content escape_sequence ") , IDENT , IDENT , (subscript_expression IDENT [ LIT ]) , IDENT ))) ;)) (return_statement return LIT ;) })) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (return_statement return LIT ;) })) (goto_statement goto statement_identifier ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content escape_sequence ") , IDENT , IDENT , (subscript_expression IDENT [ LIT ]) , IDENT ))) ;) })) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = LIT) ;) }))))) (return_statement return IDENT ;) })))
(function_definition "uint __regparm3 FUN_00018290(int param_1,undefined4 *param_2,undefined4 *param_3,int *param_4)\n\n{\n  int iVar1;\n  uint uVar2;\n  char *pcVar3;\n  char *pcVar4;\n  char *local_28;\n  char *local_24;\n  int local_20 [3];\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x1829d;\n  local_28 = (char *)0x0;\n  local_24 = (char *)0x0;\n  local_20[0] = 0;\n  iVar1 = (**(code **)(*(int *)(DAT_0002d478 + 4) + 0x128))\n                    (DAT_0002d478,DAT_0002d124,DAT_0002d488,param_1 - *(int *)(DAT_0002d488 + 0x1c),\n                     &local_28,&local_24,local_20,0);\n  pcVar3 = local_24;\n  pcVar4 = local_28;\n  if ((iVar1 == 0) || (uVar2 = _DAT_0002d158 & 0x80, local_28 == (char *)0x0)) {\n    uVar2 = _DAT_0002d158 & 0x80;\n    if (uVar2 != 0) {\n      if (local_24 == (char *)0x0) {\n        pcVar3 = "<unknown>";\n      }\n      if (local_28 == (char *)0x0) {\n        pcVar4 = "<unknown>";\n      }\n      goto LAB_0001837d;\n    }\n  }\n  else if (local_24 == (char *)0x0) {\n    if (uVar2 != 0) {\n      pcVar3 = "<unknown>";\nLAB_0001837d:\n      printf("[get_src_info] no info for 0x%lx (%s:%d,%s)\n",param_1,pcVar4,local_20[0],pcVar3);\n      return 0;\n    }\n  }\n  else {\n    if (local_20[0] == 0) {\n      if (uVar2 == 0) {\n        return 0;\n      }\n      goto LAB_0001837d;\n    }\n    if (uVar2 != 0) {\n      printf("[get_src_info] 0x%lx -> %s:%d (%s)\n",param_1,local_28,local_20[0],local_24);\n    }\n    *param_2 = local_28;\n    *param_3 = local_24;\n    *param_4 = local_20[0];\n    uVar2 = 1;\n  }\n  return uVar2;\n}" (type_identifier "uint") (ERROR "__regparm3" (identifier "__regparm3")) (function_declarator "FUN_00018290(int param_1,undefined4 *param_2,undefined4 *param_3,int *param_4)" (identifier "FUN_00018290") (parameter_list "(int param_1,undefined4 *param_2,undefined4 *param_3,int *param_4)" (( "(") (parameter_declaration "int param_1" (primitive_type "int") (identifier "param_1")) (, ",") (parameter_declaration "undefined4 *param_2" (type_identifier "undefined4") (pointer_declarator "*param_2" (* "*") (identifier "param_2"))) (, ",") (parameter_declaration "undefined4 *param_3" (type_identifier "undefined4") (pointer_declarator "*param_3" (* "*") (identifier "param_3"))) (, ",") (parameter_declaration "int *param_4" (primitive_type "int") (pointer_declarator "*param_4" (* "*") (identifier "param_4"))) () ")"))) (compound_statement "{\n  int iVar1;\n  uint uVar2;\n  char *pcVar3;\n  char *pcVar4;\n  char *local_28;\n  char *local_24;\n  int local_20 [3];\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x1829d;\n  local_28 = (char *)0x0;\n  local_24 = (char *)0x0;\n  local_20[0] = 0;\n  iVar1 = (**(code **)(*(int *)(DAT_0002d478 + 4) + 0x128))\n                    (DAT_0002d478,DAT_0002d124,DAT_0002d488,param_1 - *(int *)(DAT_0002d488 + 0x1c),\n                     &local_28,&local_24,local_20,0);\n  pcVar3 = local_24;\n  pcVar4 = local_28;\n  if ((iVar1 == 0) || (uVar2 = _DAT_0002d158 & 0x80, local_28 == (char *)0x0)) {\n    uVar2 = _DAT_0002d158 & 0x80;\n    if (uVar2 != 0) {\n      if (local_24 == (char *)0x0) {\n        pcVar3 = "<unknown>";\n      }\n      if (local_28 == (char *)0x0) {\n        pcVar4 = "<unknown>";\n      }\n      goto LAB_0001837d;\n    }\n  }\n  else if (local_24 == (char *)0x0) {\n    if (uVar2 != 0) {\n      pcVar3 = "<unknown>";\nLAB_0001837d:\n      printf("[get_src_info] no info for 0x%lx (%s:%d,%s)\n",param_1,pcVar4,local_20[0],pcVar3);\n      return 0;\n    }\n  }\n  else {\n    if (local_20[0] == 0) {\n      if (uVar2 == 0) {\n        return 0;\n      }\n      goto LAB_0001837d;\n    }\n    if (uVar2 != 0) {\n      printf("[get_src_info] 0x%lx -> %s:%d (%s)\n",param_1,local_28,local_20[0],local_24);\n    }\n    *param_2 = local_28;\n    *param_3 = local_24;\n    *param_4 = local_20[0];\n    uVar2 = 1;\n  }\n  return uVar2;\n}" ({ "{") (declaration "int iVar1;" (primitive_type "int") (identifier "iVar1") (; ";")) (declaration "uint uVar2;" (type_identifier "uint") (identifier "uVar2") (; ";")) (declaration "char *pcVar3;" (primitive_type "char") (pointer_declarator "*pcVar3" (* "*") (identifier "pcVar3")) (; ";")) (declaration "char *pcVar4;" (primitive_type "char") (pointer_declarator "*pcVar4" (* "*") (identifier "pcVar4")) (; ";")) (declaration "char *local_28;" (primitive_type "char") (pointer_declarator "*local_28" (* "*") (identifier "local_28")) (; ";")) (declaration "char *local_24;" (primitive_type "char") (pointer_declarator "*local_24" (* "*") (identifier "local_24")) (; ";")) (declaration "int local_20 [3];" (primitive_type "int") (array_declarator "local_20 [3]" (identifier "local_20") ([ "[") (number_literal "3") (] "]")) (; ";")) (declaration "undefined4 uStack_14;" (type_identifier "undefined4") (identifier "uStack_14") (; ";")) (expression_statement "uStack_14 = 0x1829d;" (assignment_expression "uStack_14 = 0x1829d" (identifier "uStack_14") (= "=") (number_literal "0x1829d")) (; ";")) (expression_statement "local_28 = (char *)0x0;" (assignment_expression "local_28 = (char *)0x0" (identifier "local_28") (= "=") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (expression_statement "local_24 = (char *)0x0;" (assignment_expression "local_24 = (char *)0x0" (identifier "local_24") (= "=") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (expression_statement "local_20[0] = 0;" (assignment_expression "local_20[0] = 0" (subscript_expression "local_20[0]" (identifier "local_20") ([ "[") (number_literal "0") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "iVar1 = (**(code **)(*(int *)(DAT_0002d478 + 4) + 0x128))\n                    (DAT_0002d478,DAT_0002d124,DAT_0002d488,param_1 - *(int *)(DAT_0002d488 + 0x1c),\n                     &local_28,&local_24,local_20,0);" (assignment_expression "iVar1 = (**(code **)(*(int *)(DAT_0002d478 + 4) + 0x128))\n                    (DAT_0002d478,DAT_0002d124,DAT_0002d488,param_1 - *(int *)(DAT_0002d488 + 0x1c),\n                     &local_28,&local_24,local_20,0)" (identifier "iVar1") (= "=") (call_expression "(**(code **)(*(int *)(DAT_0002d478 + 4) + 0x128))\n                    (DAT_0002d478,DAT_0002d124,DAT_0002d488,param_1 - *(int *)(DAT_0002d488 + 0x1c),\n                     &local_28,&local_24,local_20,0)" (parenthesized_expression "(**(code **)(*(int *)(DAT_0002d478 + 4) + 0x128))" (( "(") (pointer_expression "**(code **)(*(int *)(DAT_0002d478 + 4) + 0x128)" (* "*") (pointer_expression "*(code **)(*(int *)(DAT_0002d478 + 4) + 0x128)" (* "*") (cast_expression "(code **)(*(int *)(DAT_0002d478 + 4) + 0x128)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*(int *)(DAT_0002d478 + 4) + 0x128)" (( "(") (binary_expression "*(int *)(DAT_0002d478 + 4) + 0x128" (pointer_expression "*(int *)(DAT_0002d478 + 4)" (* "*") (cast_expression "(int *)(DAT_0002d478 + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(DAT_0002d478 + 4)" (( "(") (binary_expression "DAT_0002d478 + 4" (identifier "DAT_0002d478") (+ "+") (number_literal "4")) () ")")))) (+ "+") (number_literal "0x128")) () ")"))))) () ")")) (argument_list "(DAT_0002d478,DAT_0002d124,DAT_0002d488,param_1 - *(int *)(DAT_0002d488 + 0x1c),\n                     &local_28,&local_24,local_20,0)" (( "(") (identifier "DAT_0002d478") (, ",") (identifier "DAT_0002d124") (, ",") (identifier "DAT_0002d488") (, ",") (binary_expression "param_1 - *(int *)(DAT_0002d488 + 0x1c)" (identifier "param_1") (- "-") (pointer_expression "*(int *)(DAT_0002d488 + 0x1c)" (* "*") (cast_expression "(int *)(DAT_0002d488 + 0x1c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(DAT_0002d488 + 0x1c)" (( "(") (binary_expression "DAT_0002d488 + 0x1c" (identifier "DAT_0002d488") (+ "+") (number_literal "0x1c")) () ")"))))) (, ",") (pointer_expression "&local_28" (& "&") (identifier "local_28")) (, ",") (pointer_expression "&local_24" (& "&") (identifier "local_24")) (, ",") (identifier "local_20") (, ",") (number_literal "0") () ")")))) (; ";")) (expression_statement "pcVar3 = local_24;" (assignment_expression "pcVar3 = local_24" (identifier "pcVar3") (= "=") (identifier "local_24")) (; ";")) (expression_statement "pcVar4 = local_28;" (assignment_expression "pcVar4 = local_28" (identifier "pcVar4") (= "=") (identifier "local_28")) (; ";")) (if_statement "if ((iVar1 == 0) || (uVar2 = _DAT_0002d158 & 0x80, local_28 == (char *)0x0)) {\n    uVar2 = _DAT_0002d158 & 0x80;\n    if (uVar2 != 0) {\n      if (local_24 == (char *)0x0) {\n        pcVar3 = "<unknown>";\n      }\n      if (local_28 == (char *)0x0) {\n        pcVar4 = "<unknown>";\n      }\n      goto LAB_0001837d;\n    }\n  }\n  else if (local_24 == (char *)0x0) {\n    if (uVar2 != 0) {\n      pcVar3 = "<unknown>";\nLAB_0001837d:\n      printf("[get_src_info] no info for 0x%lx (%s:%d,%s)\n",param_1,pcVar4,local_20[0],pcVar3);\n      return 0;\n    }\n  }\n  else {\n    if (local_20[0] == 0) {\n      if (uVar2 == 0) {\n        return 0;\n      }\n      goto LAB_0001837d;\n    }\n    if (uVar2 != 0) {\n      printf("[get_src_info] 0x%lx -> %s:%d (%s)\n",param_1,local_28,local_20[0],local_24);\n    }\n    *param_2 = local_28;\n    *param_3 = local_24;\n    *param_4 = local_20[0];\n    uVar2 = 1;\n  }" (if "if") (parenthesized_expression "((iVar1 == 0) || (uVar2 = _DAT_0002d158 & 0x80, local_28 == (char *)0x0))" (( "(") (binary_expression "(iVar1 == 0) || (uVar2 = _DAT_0002d158 & 0x80, local_28 == (char *)0x0)" (parenthesized_expression "(iVar1 == 0)" (( "(") (binary_expression "iVar1 == 0" (identifier "iVar1") (== "==") (number_literal "0")) () ")")) (|| "||") (parenthesized_expression "(uVar2 = _DAT_0002d158 & 0x80, local_28 == (char *)0x0)" (( "(") (comma_expression "uVar2 = _DAT_0002d158 & 0x80, local_28 == (char *)0x0" (assignment_expression "uVar2 = _DAT_0002d158 & 0x80" (identifier "uVar2") (= "=") (binary_expression "_DAT_0002d158 & 0x80" (identifier "_DAT_0002d158") (& "&") (number_literal "0x80"))) (, ",") (binary_expression "local_28 == (char *)0x0" (identifier "local_28") (== "==") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0")))) () ")"))) () ")")) (compound_statement "{\n    uVar2 = _DAT_0002d158 & 0x80;\n    if (uVar2 != 0) {\n      if (local_24 == (char *)0x0) {\n        pcVar3 = "<unknown>";\n      }\n      if (local_28 == (char *)0x0) {\n        pcVar4 = "<unknown>";\n      }\n      goto LAB_0001837d;\n    }\n  }" ({ "{") (expression_statement "uVar2 = _DAT_0002d158 & 0x80;" (assignment_expression "uVar2 = _DAT_0002d158 & 0x80" (identifier "uVar2") (= "=") (binary_expression "_DAT_0002d158 & 0x80" (identifier "_DAT_0002d158") (& "&") (number_literal "0x80"))) (; ";")) (if_statement "if (uVar2 != 0) {\n      if (local_24 == (char *)0x0) {\n        pcVar3 = "<unknown>";\n      }\n      if (local_28 == (char *)0x0) {\n        pcVar4 = "<unknown>";\n      }\n      goto LAB_0001837d;\n    }" (if "if") (parenthesized_expression "(uVar2 != 0)" (( "(") (binary_expression "uVar2 != 0" (identifier "uVar2") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      if (local_24 == (char *)0x0) {\n        pcVar3 = "<unknown>";\n      }\n      if (local_28 == (char *)0x0) {\n        pcVar4 = "<unknown>";\n      }\n      goto LAB_0001837d;\n    }" ({ "{") (if_statement "if (local_24 == (char *)0x0) {\n        pcVar3 = "<unknown>";\n      }" (if "if") (parenthesized_expression "(local_24 == (char *)0x0)" (( "(") (binary_expression "local_24 == (char *)0x0" (identifier "local_24") (== "==") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n        pcVar3 = "<unknown>";\n      }" ({ "{") (expression_statement "pcVar3 = "<unknown>";" (assignment_expression "pcVar3 = "<unknown>"" (identifier "pcVar3") (= "=") (string_literal ""<unknown>"" (" """) (string_content "<unknown>") (" """))) (; ";")) (} "}"))) (if_statement "if (local_28 == (char *)0x0) {\n        pcVar4 = "<unknown>";\n      }" (if "if") (parenthesized_expression "(local_28 == (char *)0x0)" (( "(") (binary_expression "local_28 == (char *)0x0" (identifier "local_28") (== "==") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n        pcVar4 = "<unknown>";\n      }" ({ "{") (expression_statement "pcVar4 = "<unknown>";" (assignment_expression "pcVar4 = "<unknown>"" (identifier "pcVar4") (= "=") (string_literal ""<unknown>"" (" """) (string_content "<unknown>") (" """))) (; ";")) (} "}"))) (goto_statement "goto LAB_0001837d;" (goto "goto") (statement_identifier "LAB_0001837d") (; ";")) (} "}"))) (} "}")) (else_clause "else if (local_24 == (char *)0x0) {\n    if (uVar2 != 0) {\n      pcVar3 = "<unknown>";\nLAB_0001837d:\n      printf("[get_src_info] no info for 0x%lx (%s:%d,%s)\n",param_1,pcVar4,local_20[0],pcVar3);\n      return 0;\n    }\n  }\n  else {\n    if (local_20[0] == 0) {\n      if (uVar2 == 0) {\n        return 0;\n      }\n      goto LAB_0001837d;\n    }\n    if (uVar2 != 0) {\n      printf("[get_src_info] 0x%lx -> %s:%d (%s)\n",param_1,local_28,local_20[0],local_24);\n    }\n    *param_2 = local_28;\n    *param_3 = local_24;\n    *param_4 = local_20[0];\n    uVar2 = 1;\n  }" (else "else") (if_statement "if (local_24 == (char *)0x0) {\n    if (uVar2 != 0) {\n      pcVar3 = "<unknown>";\nLAB_0001837d:\n      printf("[get_src_info] no info for 0x%lx (%s:%d,%s)\n",param_1,pcVar4,local_20[0],pcVar3);\n      return 0;\n    }\n  }\n  else {\n    if (local_20[0] == 0) {\n      if (uVar2 == 0) {\n        return 0;\n      }\n      goto LAB_0001837d;\n    }\n    if (uVar2 != 0) {\n      printf("[get_src_info] 0x%lx -> %s:%d (%s)\n",param_1,local_28,local_20[0],local_24);\n    }\n    *param_2 = local_28;\n    *param_3 = local_24;\n    *param_4 = local_20[0];\n    uVar2 = 1;\n  }" (if "if") (parenthesized_expression "(local_24 == (char *)0x0)" (( "(") (binary_expression "local_24 == (char *)0x0" (identifier "local_24") (== "==") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n    if (uVar2 != 0) {\n      pcVar3 = "<unknown>";\nLAB_0001837d:\n      printf("[get_src_info] no info for 0x%lx (%s:%d,%s)\n",param_1,pcVar4,local_20[0],pcVar3);\n      return 0;\n    }\n  }" ({ "{") (if_statement "if (uVar2 != 0) {\n      pcVar3 = "<unknown>";\nLAB_0001837d:\n      printf("[get_src_info] no info for 0x%lx (%s:%d,%s)\n",param_1,pcVar4,local_20[0],pcVar3);\n      return 0;\n    }" (if "if") (parenthesized_expression "(uVar2 != 0)" (( "(") (binary_expression "uVar2 != 0" (identifier "uVar2") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      pcVar3 = "<unknown>";\nLAB_0001837d:\n      printf("[get_src_info] no info for 0x%lx (%s:%d,%s)\n",param_1,pcVar4,local_20[0],pcVar3);\n      return 0;\n    }" ({ "{") (expression_statement "pcVar3 = "<unknown>";" (assignment_expression "pcVar3 = "<unknown>"" (identifier "pcVar3") (= "=") (string_literal ""<unknown>"" (" """) (string_content "<unknown>") (" """))) (; ";")) (labeled_statement "LAB_0001837d:\n      printf("[get_src_info] no info for 0x%lx (%s:%d,%s)\n",param_1,pcVar4,local_20[0],pcVar3);" (statement_identifier "LAB_0001837d") (: ":") (expression_statement "printf("[get_src_info] no info for 0x%lx (%s:%d,%s)\n",param_1,pcVar4,local_20[0],pcVar3);" (call_expression "printf("[get_src_info] no info for 0x%lx (%s:%d,%s)\n",param_1,pcVar4,local_20[0],pcVar3)" (identifier "printf") (argument_list "("[get_src_info] no info for 0x%lx (%s:%d,%s)\n",param_1,pcVar4,local_20[0],pcVar3)" (( "(") (string_literal ""[get_src_info] no info for 0x%lx (%s:%d,%s)\n"" (" """) (string_content "[get_src_info] no info for 0x%lx (%s:%d,%s)") (escape_sequence "\n") (" """)) (, ",") (identifier "param_1") (, ",") (identifier "pcVar4") (, ",") (subscript_expression "local_20[0]" (identifier "local_20") ([ "[") (number_literal "0") (] "]")) (, ",") (identifier "pcVar3") () ")"))) (; ";"))) (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (} "}")) (else_clause "else {\n    if (local_20[0] == 0) {\n      if (uVar2 == 0) {\n        return 0;\n      }\n      goto LAB_0001837d;\n    }\n    if (uVar2 != 0) {\n      printf("[get_src_info] 0x%lx -> %s:%d (%s)\n",param_1,local_28,local_20[0],local_24);\n    }\n    *param_2 = local_28;\n    *param_3 = local_24;\n    *param_4 = local_20[0];\n    uVar2 = 1;\n  }" (else "else") (compound_statement "{\n    if (local_20[0] == 0) {\n      if (uVar2 == 0) {\n        return 0;\n      }\n      goto LAB_0001837d;\n    }\n    if (uVar2 != 0) {\n      printf("[get_src_info] 0x%lx -> %s:%d (%s)\n",param_1,local_28,local_20[0],local_24);\n    }\n    *param_2 = local_28;\n    *param_3 = local_24;\n    *param_4 = local_20[0];\n    uVar2 = 1;\n  }" ({ "{") (if_statement "if (local_20[0] == 0) {\n      if (uVar2 == 0) {\n        return 0;\n      }\n      goto LAB_0001837d;\n    }" (if "if") (parenthesized_expression "(local_20[0] == 0)" (( "(") (binary_expression "local_20[0] == 0" (subscript_expression "local_20[0]" (identifier "local_20") ([ "[") (number_literal "0") (] "]")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      if (uVar2 == 0) {\n        return 0;\n      }\n      goto LAB_0001837d;\n    }" ({ "{") (if_statement "if (uVar2 == 0) {\n        return 0;\n      }" (if "if") (parenthesized_expression "(uVar2 == 0)" (( "(") (binary_expression "uVar2 == 0" (identifier "uVar2") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n        return 0;\n      }" ({ "{") (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (goto_statement "goto LAB_0001837d;" (goto "goto") (statement_identifier "LAB_0001837d") (; ";")) (} "}"))) (if_statement "if (uVar2 != 0) {\n      printf("[get_src_info] 0x%lx -> %s:%d (%s)\n",param_1,local_28,local_20[0],local_24);\n    }" (if "if") (parenthesized_expression "(uVar2 != 0)" (( "(") (binary_expression "uVar2 != 0" (identifier "uVar2") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      printf("[get_src_info] 0x%lx -> %s:%d (%s)\n",param_1,local_28,local_20[0],local_24);\n    }" ({ "{") (expression_statement "printf("[get_src_info] 0x%lx -> %s:%d (%s)\n",param_1,local_28,local_20[0],local_24);" (call_expression "printf("[get_src_info] 0x%lx -> %s:%d (%s)\n",param_1,local_28,local_20[0],local_24)" (identifier "printf") (argument_list "("[get_src_info] 0x%lx -> %s:%d (%s)\n",param_1,local_28,local_20[0],local_24)" (( "(") (string_literal ""[get_src_info] 0x%lx -> %s:%d (%s)\n"" (" """) (string_content "[get_src_info] 0x%lx -> %s:%d (%s)") (escape_sequence "\n") (" """)) (, ",") (identifier "param_1") (, ",") (identifier "local_28") (, ",") (subscript_expression "local_20[0]" (identifier "local_20") ([ "[") (number_literal "0") (] "]")) (, ",") (identifier "local_24") () ")"))) (; ";")) (} "}"))) (expression_statement "*param_2 = local_28;" (assignment_expression "*param_2 = local_28" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (= "=") (identifier "local_28")) (; ";")) (expression_statement "*param_3 = local_24;" (assignment_expression "*param_3 = local_24" (pointer_expression "*param_3" (* "*") (identifier "param_3")) (= "=") (identifier "local_24")) (; ";")) (expression_statement "*param_4 = local_20[0];" (assignment_expression "*param_4 = local_20[0]" (pointer_expression "*param_4" (* "*") (identifier "param_4")) (= "=") (subscript_expression "local_20[0]" (identifier "local_20") ([ "[") (number_literal "0") (] "]"))) (; ";")) (expression_statement "uVar2 = 1;" (assignment_expression "uVar2 = 1" (identifier "uVar2") (= "=") (number_literal "1")) (; ";")) (} "}")))))) (return_statement "return uVar2;" (return "return") (identifier "uVar2") (; ";")) (} "}")))

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

type_1 __regparm3 function_1(type_2 var_1,char **filename,char **name,int *line_num)

{
  type_1 var_2;
  type_3 var_5;
  char *pcVar3;
  char *pcVar4;
  char *var_4;
  char *var_6;
  int var_8;
  type_4 uStack_14;
  
  uStack_14 = 0x1829d;
  var_4 = (char *)0x0;
  var_6 = (char *)0x0;
  var_8 = 0;
  var_2 = (*core_bfd->xvec->_bfd_find_nearest_line)
                    (core_bfd,core_syms,core_text_sect,var_1 - core_text_sect->vma,&var_4,&var_6,
                     (type_3 *)&var_8,(type_3 *)0x0);
  pcVar3 = var_6;
  pcVar4 = var_4;
  if ((var_2 == 0) || (var_5 = var_3 & 0x80, var_4 == (char *)0x0)) {
    var_5 = var_3 & 0x80;
    if (var_5 != 0) {
      if (var_6 == (char *)0x0) {
        pcVar3 = "<unknown>";
      }
      if (var_4 == (char *)0x0) {
        pcVar4 = "<unknown>";
      }
      goto LAB_0001837d;
    }
  }
  else if (var_6 == (char *)0x0) {
    if (var_5 != 0) {
      pcVar3 = "<unknown>";
LAB_0001837d:
      var_7("[get_src_info] no info for 0x%lx (%s:%d,%s)\n",var_1,pcVar4,var_8,pcVar3);
      return 0;
    }
  }
  else {
    if (var_8 == 0) {
      if (var_5 == 0) {
        return 0;
      }
      goto LAB_0001837d;
    }
    if (var_5 != 0) {
      var_7("[get_src_info] 0x%lx -> %s:%d (%s)\n",var_1,var_4,var_8,var_6);
    }
    *filename = var_4;
    *name = var_6;
    *line_num = var_8;
    var_5 = 1;
  }
  return var_5;
}


(translation_unit (function_definition type: (type_identifier) (ERROR (identifier)) declarator: (function_declarator declarator: (identifier) parameters: (parameter_list (parameter_declaration type: (primitive_type) declarator: (identifier)) (parameter_declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (parameter_declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (parameter_declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))))) body: (compound_statement (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (array_declarator declarator: (identifier) size: (number_literal))) (declaration type: (type_identifier) declarator: (identifier)) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))))))) arguments: (argument_list (identifier) (identifier) (identifier) (binary_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) (pointer_expression argument: (identifier)) (pointer_expression argument: (identifier)) (identifier) (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (parenthesized_expression (comma_expression left: (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))) right: (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal))))))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (string_literal (string_content)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (string_literal (string_content)))))) (goto_statement label: (statement_identifier))))) alternative: (else_clause (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (string_literal (string_content)))) (labeled_statement label: (statement_identifier) (expression_statement (call_expression function: (identifier) arguments: (argument_list (string_literal (string_content) (escape_sequence)) (identifier) (identifier) (subscript_expression argument: (identifier) index: (number_literal)) (identifier))))) (return_statement (number_literal))))) alternative: (else_clause (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (return_statement (number_literal)))) (goto_statement label: (statement_identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (string_literal (string_content) (escape_sequence)) (identifier) (identifier) (subscript_expression argument: (identifier) index: (number_literal)) (identifier)))))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (number_literal)))))))) (return_statement (identifier)))))

/* WARNING: Function: __i686.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

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

{
  int iVar1;
  uint uVar2;
  char *pcVar3;
  char *pcVar4;
  char *local_28;
  char *local_24;
  int local_20 [3];
  undefined4 uStack_14;
  
  uStack_14 = 0x1829d;
  local_28 = (char *)0x0;
  local_24 = (char *)0x0;
  local_20[0] = 0;
  iVar1 = (**(code **)(*(int *)(DAT_0002d478 + 4) + 0x128))
                    (DAT_0002d478,DAT_0002d124,DAT_0002d488,param_1 - *(int *)(DAT_0002d488 + 0x1c),
                     &local_28,&local_24,local_20,0);
  pcVar3 = local_24;
  pcVar4 = local_28;
  if ((iVar1 == 0) || (uVar2 = _DAT_0002d158 & 0x80, local_28 == (char *)0x0)) {
    uVar2 = _DAT_0002d158 & 0x80;
    if (uVar2 != 0) {
      if (local_24 == (char *)0x0) {
        pcVar3 = "<unknown>";
      }
      if (local_28 == (char *)0x0) {
        pcVar4 = "<unknown>";
      }
      goto LAB_0001837d;
    }
  }
  else if (local_24 == (char *)0x0) {
    if (uVar2 != 0) {
      pcVar3 = "<unknown>";
LAB_0001837d:
      printf("[get_src_info] no info for 0x%lx (%s:%d,%s)\n",param_1,pcVar4,local_20[0],pcVar3);
      return 0;
    }
  }
  else {
    if (local_20[0] == 0) {
      if (uVar2 == 0) {
        return 0;
      }
      goto LAB_0001837d;
    }
    if (uVar2 != 0) {
      printf("[get_src_info] 0x%lx -> %s:%d (%s)\n",param_1,local_28,local_20[0],local_24);
    }
    *param_2 = local_28;
    *param_3 = local_24;
    *param_4 = local_20[0];
    uVar2 = 1;
  }
  return uVar2;
}

