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

char * read_setting_s(void *handle,char *key)

{
  int iVar1;
  void *pvVar2;
  char *s;
  int in_GS_OFFSET;
  skeyval tmp;
  
  iVar1 = *(int *)(in_GS_OFFSET + 0x14);
  tmp.key = key;
  if (handle != (void *)0x0) {
    pvVar2 = find234((tree234 *)handle,&tmp,(cmpfn234)0x0);
    if (pvVar2 != (void *)0x0) {
      if (*(char **)((int)pvVar2 + 4) == (char *)0x0) {
                    /* WARNING: Subroutine does not return */
        __assert_fail("val != NULL","unix/uxstore.c",399,"read_setting_s");
      }
      s = dupstr(*(char **)((int)pvVar2 + 4));
      goto LAB_00047f57;
    }
  }
  s = get_setting(key);
  if (s != (char *)0x0) {
    s = dupstr(s);
  }
LAB_00047f57:
  if (iVar1 == *(int *)(in_GS_OFFSET + 0x14)) {
    return s;
  }
                    /* WARNING: Subroutine does not return */
  __stack_chk_fail_local();
}



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

void FUN_00047f00(int param_1,undefined4 param_2)

{
  int iVar1;
  int in_GS_OFFSET;
  undefined4 local_18 [2];
  int local_10;
  undefined4 uStack_c;
  
  uStack_c = 0x47f07;
  local_10 = *(int *)(in_GS_OFFSET + 0x14);
  local_18[0] = param_2;
  if (param_1 != 0) {
    iVar1 = FUN_0003f220(param_1,local_18,0);
    if (iVar1 != 0) {
      if (*(int *)(iVar1 + 4) == 0) {
                    /* WARNING: Subroutine does not return */
        __assert_fail("val != NULL","unix/uxstore.c",399,"read_setting_s");
      }
      FUN_00019990(*(int *)(iVar1 + 4));
      goto LAB_00047f57;
    }
  }
  iVar1 = FUN_00047d40(param_2);
  if (iVar1 != 0) {
    FUN_00019990(iVar1);
  }
LAB_00047f57:
  if (local_10 == *(int *)(in_GS_OFFSET + 0x14)) {
    return;
  }
                    /* WARNING: Subroutine does not return */
  FUN_0004aab0();
}


PUSH ESI
PUSH EBX
CALL 0x000152d0
ADD EBX,0x26de1
SUB ESP,0x14
MOV ECX,dword ptr GS:[0x14]
MOV dword ptr [ESP + 0xc],ECX
XOR ECX,ECX
MOV ESI,dword ptr [ESP + 0x24]
MOV EAX,dword ptr [ESP + 0x20]
MOV dword ptr [ESP + 0x4],ESI
TEST EAX,EAX
JZ 0x00047f70
SUB ESP,0x4
PUSH 0x0
LEA EDX,[ESP + 0xc]
PUSH EDX
PUSH EAX
CALL 0x0003f220
ADD ESP,0x10
TEST EAX,EAX
JZ 0x00047f70
MOV EAX,dword ptr [EAX + 0x4]
TEST EAX,EAX
JZ 0x00047f8e
SUB ESP,0xc
PUSH EAX
CALL 0x00019990
ADD ESP,0x10
MOV ECX,dword ptr [ESP + 0xc]
XOR ECX,dword ptr GS:[0x14]
JNZ 0x00047fad
ADD ESP,0x14
POP EBX
POP ESI
RET
SUB ESP,0xc
PUSH ESI
CALL 0x00047d40
ADD ESP,0x10
TEST EAX,EAX
JZ 0x00047f57
SUB ESP,0xc
PUSH EAX
CALL 0x00019990
ADD ESP,0x10
JMP 0x00047f57
LEA EAX,[EBX + 0xfffe5a08]
PUSH EAX
LEA EAX,[EBX + 0xfffe5846]
PUSH 0x18f
PUSH EAX
LEA EAX,[EBX + 0xfffe5855]
PUSH EAX
CALL 0x00014ad0
CALL 0x0004aab0
(translation_unit "/* WARNING: Function: __i686.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n\nvoid FUN_00047f00(int param_1,undefined4 param_2)\n\n{\n  int iVar1;\n  int in_GS_OFFSET;\n  undefined4 local_18 [2];\n  int local_10;\n  undefined4 uStack_c;\n  \n  uStack_c = 0x47f07;\n  local_10 = *(int *)(in_GS_OFFSET + 0x14);\n  local_18[0] = param_2;\n  if (param_1 != 0) {\n    iVar1 = FUN_0003f220(param_1,local_18,0);\n    if (iVar1 != 0) {\n      if (*(int *)(iVar1 + 4) == 0) {\n                    /* WARNING: Subroutine does not return */\n        __assert_fail("val != NULL","unix/uxstore.c",399,"read_setting_s");\n      }\n      FUN_00019990(*(int *)(iVar1 + 4));\n      goto LAB_00047f57;\n    }\n  }\n  iVar1 = FUN_00047d40(param_2);\n  if (iVar1 != 0) {\n    FUN_00019990(iVar1);\n  }\nLAB_00047f57:\n  if (local_10 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return;\n  }\n                    /* WARNING: Subroutine does not return */\n  FUN_0004aab0();\n}\n\n" comment (function_definition "void FUN_00047f00(int param_1,undefined4 param_2)\n\n{\n  int iVar1;\n  int in_GS_OFFSET;\n  undefined4 local_18 [2];\n  int local_10;\n  undefined4 uStack_c;\n  \n  uStack_c = 0x47f07;\n  local_10 = *(int *)(in_GS_OFFSET + 0x14);\n  local_18[0] = param_2;\n  if (param_1 != 0) {\n    iVar1 = FUN_0003f220(param_1,local_18,0);\n    if (iVar1 != 0) {\n      if (*(int *)(iVar1 + 4) == 0) {\n                    /* WARNING: Subroutine does not return */\n        __assert_fail("val != NULL","unix/uxstore.c",399,"read_setting_s");\n      }\n      FUN_00019990(*(int *)(iVar1 + 4));\n      goto LAB_00047f57;\n    }\n  }\n  iVar1 = FUN_00047d40(param_2);\n  if (iVar1 != 0) {\n    FUN_00019990(iVar1);\n  }\nLAB_00047f57:\n  if (local_10 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return;\n  }\n                    /* WARNING: Subroutine does not return */\n  FUN_0004aab0();\n}" primitive_type (function_declarator "FUN_00047f00(int param_1,undefined4 param_2)" identifier (parameter_list "(int param_1,undefined4 param_2)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "undefined4 param_2" type_identifier identifier) ))) (compound_statement "{\n  int iVar1;\n  int in_GS_OFFSET;\n  undefined4 local_18 [2];\n  int local_10;\n  undefined4 uStack_c;\n  \n  uStack_c = 0x47f07;\n  local_10 = *(int *)(in_GS_OFFSET + 0x14);\n  local_18[0] = param_2;\n  if (param_1 != 0) {\n    iVar1 = FUN_0003f220(param_1,local_18,0);\n    if (iVar1 != 0) {\n      if (*(int *)(iVar1 + 4) == 0) {\n                    /* WARNING: Subroutine does not return */\n        __assert_fail("val != NULL","unix/uxstore.c",399,"read_setting_s");\n      }\n      FUN_00019990(*(int *)(iVar1 + 4));\n      goto LAB_00047f57;\n    }\n  }\n  iVar1 = FUN_00047d40(param_2);\n  if (iVar1 != 0) {\n    FUN_00019990(iVar1);\n  }\nLAB_00047f57:\n  if (local_10 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return;\n  }\n                    /* WARNING: Subroutine does not return */\n  FUN_0004aab0();\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "int in_GS_OFFSET;" primitive_type identifier ;) (declaration "undefined4 local_18 [2];" type_identifier (array_declarator "local_18 [2]" identifier [ number_literal ]) ;) (declaration "int local_10;" primitive_type identifier ;) (declaration "undefined4 uStack_c;" type_identifier identifier ;) (expression_statement "uStack_c = 0x47f07;" (assignment_expression "uStack_c = 0x47f07" identifier = number_literal) ;) (expression_statement "local_10 = *(int *)(in_GS_OFFSET + 0x14);" (assignment_expression "local_10 = *(int *)(in_GS_OFFSET + 0x14)" identifier = (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) ;) (expression_statement "local_18[0] = param_2;" (assignment_expression "local_18[0] = param_2" (subscript_expression "local_18[0]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (param_1 != 0) {\n    iVar1 = FUN_0003f220(param_1,local_18,0);\n    if (iVar1 != 0) {\n      if (*(int *)(iVar1 + 4) == 0) {\n                    /* WARNING: Subroutine does not return */\n        __assert_fail("val != NULL","unix/uxstore.c",399,"read_setting_s");\n      }\n      FUN_00019990(*(int *)(iVar1 + 4));\n      goto LAB_00047f57;\n    }\n  }" if (parenthesized_expression "(param_1 != 0)" ( (binary_expression "param_1 != 0" identifier != number_literal) )) (compound_statement "{\n    iVar1 = FUN_0003f220(param_1,local_18,0);\n    if (iVar1 != 0) {\n      if (*(int *)(iVar1 + 4) == 0) {\n                    /* WARNING: Subroutine does not return */\n        __assert_fail("val != NULL","unix/uxstore.c",399,"read_setting_s");\n      }\n      FUN_00019990(*(int *)(iVar1 + 4));\n      goto LAB_00047f57;\n    }\n  }" { (expression_statement "iVar1 = FUN_0003f220(param_1,local_18,0);" (assignment_expression "iVar1 = FUN_0003f220(param_1,local_18,0)" identifier = (call_expression "FUN_0003f220(param_1,local_18,0)" identifier (argument_list "(param_1,local_18,0)" ( identifier , identifier , number_literal )))) ;) (if_statement "if (iVar1 != 0) {\n      if (*(int *)(iVar1 + 4) == 0) {\n                    /* WARNING: Subroutine does not return */\n        __assert_fail("val != NULL","unix/uxstore.c",399,"read_setting_s");\n      }\n      FUN_00019990(*(int *)(iVar1 + 4));\n      goto LAB_00047f57;\n    }" if (parenthesized_expression "(iVar1 != 0)" ( (binary_expression "iVar1 != 0" identifier != number_literal) )) (compound_statement "{\n      if (*(int *)(iVar1 + 4) == 0) {\n                    /* WARNING: Subroutine does not return */\n        __assert_fail("val != NULL","unix/uxstore.c",399,"read_setting_s");\n      }\n      FUN_00019990(*(int *)(iVar1 + 4));\n      goto LAB_00047f57;\n    }" { (if_statement "if (*(int *)(iVar1 + 4) == 0) {\n                    /* WARNING: Subroutine does not return */\n        __assert_fail("val != NULL","unix/uxstore.c",399,"read_setting_s");\n      }" if (parenthesized_expression "(*(int *)(iVar1 + 4) == 0)" ( (binary_expression "*(int *)(iVar1 + 4) == 0" (pointer_expression "*(int *)(iVar1 + 4)" * (cast_expression "(int *)(iVar1 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 4)" ( (binary_expression "iVar1 + 4" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n        __assert_fail("val != NULL","unix/uxstore.c",399,"read_setting_s");\n      }" { comment (expression_statement "__assert_fail("val != NULL","unix/uxstore.c",399,"read_setting_s");" (call_expression "__assert_fail("val != NULL","unix/uxstore.c",399,"read_setting_s")" identifier (argument_list "("val != NULL","unix/uxstore.c",399,"read_setting_s")" ( (string_literal ""val != NULL"" " string_content ") , (string_literal ""unix/uxstore.c"" " string_content ") , number_literal , (string_literal ""read_setting_s"" " string_content ") ))) ;) })) (expression_statement "FUN_00019990(*(int *)(iVar1 + 4));" (call_expression "FUN_00019990(*(int *)(iVar1 + 4))" identifier (argument_list "(*(int *)(iVar1 + 4))" ( (pointer_expression "*(int *)(iVar1 + 4)" * (cast_expression "(int *)(iVar1 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 4)" ( (binary_expression "iVar1 + 4" identifier + number_literal) )))) ))) ;) (goto_statement "goto LAB_00047f57;" goto statement_identifier ;) })) })) (expression_statement "iVar1 = FUN_00047d40(param_2);" (assignment_expression "iVar1 = FUN_00047d40(param_2)" identifier = (call_expression "FUN_00047d40(param_2)" identifier (argument_list "(param_2)" ( identifier )))) ;) (if_statement "if (iVar1 != 0) {\n    FUN_00019990(iVar1);\n  }" if (parenthesized_expression "(iVar1 != 0)" ( (binary_expression "iVar1 != 0" identifier != number_literal) )) (compound_statement "{\n    FUN_00019990(iVar1);\n  }" { (expression_statement "FUN_00019990(iVar1);" (call_expression "FUN_00019990(iVar1)" identifier (argument_list "(iVar1)" ( identifier ))) ;) })) (labeled_statement "LAB_00047f57:\n  if (local_10 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return;\n  }" statement_identifier : (if_statement "if (local_10 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return;\n  }" if (parenthesized_expression "(local_10 == *(int *)(in_GS_OFFSET + 0x14))" ( (binary_expression "local_10 == *(int *)(in_GS_OFFSET + 0x14)" identifier == (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) )) (compound_statement "{\n    return;\n  }" { (return_statement "return;" return ;) }))) comment (expression_statement "FUN_0004aab0();" (call_expression "FUN_0004aab0()" identifier (argument_list "()" ( ))) ;) })))
(translation_unit "/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n/* WARNING: Unknown calling convention */\n\nchar * read_setting_s(void *handle,char *key)\n\n{\n  int iVar1;\n  void *pvVar2;\n  char *s;\n  int in_GS_OFFSET;\n  skeyval tmp;\n  \n  iVar1 = *(int *)(in_GS_OFFSET + 0x14);\n  tmp.key = key;\n  if (handle != (void *)0x0) {\n    pvVar2 = find234((tree234 *)handle,&tmp,(cmpfn234)0x0);\n    if (pvVar2 != (void *)0x0) {\n      if (*(char **)((int)pvVar2 + 4) == (char *)0x0) {\n                    /* WARNING: Subroutine does not return */\n        __assert_fail("val != NULL","unix/uxstore.c",399,"read_setting_s");\n      }\n      s = dupstr(*(char **)((int)pvVar2 + 4));\n      goto LAB_00047f57;\n    }\n  }\n  s = get_setting(key);\n  if (s != (char *)0x0) {\n    s = dupstr(s);\n  }\nLAB_00047f57:\n  if (iVar1 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return s;\n  }\n                    /* WARNING: Subroutine does not return */\n  __stack_chk_fail_local();\n}\n\n" comment comment (function_definition "char * read_setting_s(void *handle,char *key)\n\n{\n  int iVar1;\n  void *pvVar2;\n  char *s;\n  int in_GS_OFFSET;\n  skeyval tmp;\n  \n  iVar1 = *(int *)(in_GS_OFFSET + 0x14);\n  tmp.key = key;\n  if (handle != (void *)0x0) {\n    pvVar2 = find234((tree234 *)handle,&tmp,(cmpfn234)0x0);\n    if (pvVar2 != (void *)0x0) {\n      if (*(char **)((int)pvVar2 + 4) == (char *)0x0) {\n                    /* WARNING: Subroutine does not return */\n        __assert_fail("val != NULL","unix/uxstore.c",399,"read_setting_s");\n      }\n      s = dupstr(*(char **)((int)pvVar2 + 4));\n      goto LAB_00047f57;\n    }\n  }\n  s = get_setting(key);\n  if (s != (char *)0x0) {\n    s = dupstr(s);\n  }\nLAB_00047f57:\n  if (iVar1 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return s;\n  }\n                    /* WARNING: Subroutine does not return */\n  __stack_chk_fail_local();\n}" primitive_type (pointer_declarator "* read_setting_s(void *handle,char *key)" * (function_declarator "read_setting_s(void *handle,char *key)" identifier (parameter_list "(void *handle,char *key)" ( (parameter_declaration "void *handle" primitive_type (pointer_declarator "*handle" * identifier)) , (parameter_declaration "char *key" primitive_type (pointer_declarator "*key" * identifier)) )))) (compound_statement "{\n  int iVar1;\n  void *pvVar2;\n  char *s;\n  int in_GS_OFFSET;\n  skeyval tmp;\n  \n  iVar1 = *(int *)(in_GS_OFFSET + 0x14);\n  tmp.key = key;\n  if (handle != (void *)0x0) {\n    pvVar2 = find234((tree234 *)handle,&tmp,(cmpfn234)0x0);\n    if (pvVar2 != (void *)0x0) {\n      if (*(char **)((int)pvVar2 + 4) == (char *)0x0) {\n                    /* WARNING: Subroutine does not return */\n        __assert_fail("val != NULL","unix/uxstore.c",399,"read_setting_s");\n      }\n      s = dupstr(*(char **)((int)pvVar2 + 4));\n      goto LAB_00047f57;\n    }\n  }\n  s = get_setting(key);\n  if (s != (char *)0x0) {\n    s = dupstr(s);\n  }\nLAB_00047f57:\n  if (iVar1 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return s;\n  }\n                    /* WARNING: Subroutine does not return */\n  __stack_chk_fail_local();\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "void *pvVar2;" primitive_type (pointer_declarator "*pvVar2" * identifier) ;) (declaration "char *s;" primitive_type (pointer_declarator "*s" * identifier) ;) (declaration "int in_GS_OFFSET;" primitive_type identifier ;) (declaration "skeyval tmp;" type_identifier identifier ;) (expression_statement "iVar1 = *(int *)(in_GS_OFFSET + 0x14);" (assignment_expression "iVar1 = *(int *)(in_GS_OFFSET + 0x14)" identifier = (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) ;) (expression_statement "tmp.key = key;" (assignment_expression "tmp.key = key" (field_expression "tmp.key" identifier . field_identifier) = identifier) ;) (if_statement "if (handle != (void *)0x0) {\n    pvVar2 = find234((tree234 *)handle,&tmp,(cmpfn234)0x0);\n    if (pvVar2 != (void *)0x0) {\n      if (*(char **)((int)pvVar2 + 4) == (char *)0x0) {\n                    /* WARNING: Subroutine does not return */\n        __assert_fail("val != NULL","unix/uxstore.c",399,"read_setting_s");\n      }\n      s = dupstr(*(char **)((int)pvVar2 + 4));\n      goto LAB_00047f57;\n    }\n  }" if (parenthesized_expression "(handle != (void *)0x0)" ( (binary_expression "handle != (void *)0x0" identifier != (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    pvVar2 = find234((tree234 *)handle,&tmp,(cmpfn234)0x0);\n    if (pvVar2 != (void *)0x0) {\n      if (*(char **)((int)pvVar2 + 4) == (char *)0x0) {\n                    /* WARNING: Subroutine does not return */\n        __assert_fail("val != NULL","unix/uxstore.c",399,"read_setting_s");\n      }\n      s = dupstr(*(char **)((int)pvVar2 + 4));\n      goto LAB_00047f57;\n    }\n  }" { (expression_statement "pvVar2 = find234((tree234 *)handle,&tmp,(cmpfn234)0x0);" (assignment_expression "pvVar2 = find234((tree234 *)handle,&tmp,(cmpfn234)0x0)" identifier = (call_expression "find234((tree234 *)handle,&tmp,(cmpfn234)0x0)" identifier (argument_list "((tree234 *)handle,&tmp,(cmpfn234)0x0)" ( (cast_expression "(tree234 *)handle" ( (type_descriptor "tree234 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , (pointer_expression "&tmp" & identifier) , (cast_expression "(cmpfn234)0x0" ( (type_descriptor "cmpfn234" type_identifier) ) number_literal) )))) ;) (if_statement "if (pvVar2 != (void *)0x0) {\n      if (*(char **)((int)pvVar2 + 4) == (char *)0x0) {\n                    /* WARNING: Subroutine does not return */\n        __assert_fail("val != NULL","unix/uxstore.c",399,"read_setting_s");\n      }\n      s = dupstr(*(char **)((int)pvVar2 + 4));\n      goto LAB_00047f57;\n    }" if (parenthesized_expression "(pvVar2 != (void *)0x0)" ( (binary_expression "pvVar2 != (void *)0x0" identifier != (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      if (*(char **)((int)pvVar2 + 4) == (char *)0x0) {\n                    /* WARNING: Subroutine does not return */\n        __assert_fail("val != NULL","unix/uxstore.c",399,"read_setting_s");\n      }\n      s = dupstr(*(char **)((int)pvVar2 + 4));\n      goto LAB_00047f57;\n    }" { (if_statement "if (*(char **)((int)pvVar2 + 4) == (char *)0x0) {\n                    /* WARNING: Subroutine does not return */\n        __assert_fail("val != NULL","unix/uxstore.c",399,"read_setting_s");\n      }" if (parenthesized_expression "(*(char **)((int)pvVar2 + 4) == (char *)0x0)" ( (binary_expression "*(char **)((int)pvVar2 + 4) == (char *)0x0" (pointer_expression "*(char **)((int)pvVar2 + 4)" * (cast_expression "(char **)((int)pvVar2 + 4)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)pvVar2 + 4)" ( (binary_expression "(int)pvVar2 + 4" (cast_expression "(int)pvVar2" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n        __assert_fail("val != NULL","unix/uxstore.c",399,"read_setting_s");\n      }" { comment (expression_statement "__assert_fail("val != NULL","unix/uxstore.c",399,"read_setting_s");" (call_expression "__assert_fail("val != NULL","unix/uxstore.c",399,"read_setting_s")" identifier (argument_list "("val != NULL","unix/uxstore.c",399,"read_setting_s")" ( (string_literal ""val != NULL"" " string_content ") , (string_literal ""unix/uxstore.c"" " string_content ") , number_literal , (string_literal ""read_setting_s"" " string_content ") ))) ;) })) (expression_statement "s = dupstr(*(char **)((int)pvVar2 + 4));" (assignment_expression "s = dupstr(*(char **)((int)pvVar2 + 4))" identifier = (call_expression "dupstr(*(char **)((int)pvVar2 + 4))" identifier (argument_list "(*(char **)((int)pvVar2 + 4))" ( (pointer_expression "*(char **)((int)pvVar2 + 4)" * (cast_expression "(char **)((int)pvVar2 + 4)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)pvVar2 + 4)" ( (binary_expression "(int)pvVar2 + 4" (cast_expression "(int)pvVar2" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) )))) ;) (goto_statement "goto LAB_00047f57;" goto statement_identifier ;) })) })) (expression_statement "s = get_setting(key);" (assignment_expression "s = get_setting(key)" identifier = (call_expression "get_setting(key)" identifier (argument_list "(key)" ( identifier )))) ;) (if_statement "if (s != (char *)0x0) {\n    s = dupstr(s);\n  }" if (parenthesized_expression "(s != (char *)0x0)" ( (binary_expression "s != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    s = dupstr(s);\n  }" { (expression_statement "s = dupstr(s);" (assignment_expression "s = dupstr(s)" identifier = (call_expression "dupstr(s)" identifier (argument_list "(s)" ( identifier )))) ;) })) (labeled_statement "LAB_00047f57:\n  if (iVar1 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return s;\n  }" statement_identifier : (if_statement "if (iVar1 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return s;\n  }" if (parenthesized_expression "(iVar1 == *(int *)(in_GS_OFFSET + 0x14))" ( (binary_expression "iVar1 == *(int *)(in_GS_OFFSET + 0x14)" identifier == (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) )) (compound_statement "{\n    return s;\n  }" { (return_statement "return s;" return identifier ;) }))) comment (expression_statement "__stack_chk_fail_local();" (call_expression "__stack_chk_fail_local()" identifier (argument_list "()" ( ))) ;) })))
(translation_unit "void FUN_00047f00(int param_1,undefined4 param_2)\n\n{\n  int iVar1;\n  int in_GS_OFFSET;\n  undefined4 local_18 [2];\n  int local_10;\n  undefined4 uStack_c;\n  \n  uStack_c = 0x47f07;\n  local_10 = *(int *)(in_GS_OFFSET + 0x14);\n  local_18[0] = param_2;\n  if (param_1 != 0) {\n    iVar1 = FUN_0003f220(param_1,local_18,0);\n    if (iVar1 != 0) {\n      if (*(int *)(iVar1 + 4) == 0) {\n                    \n        __assert_fail("val != NULL","unix/uxstore.c",399,"read_setting_s");\n      }\n      FUN_00019990(*(int *)(iVar1 + 4));\n      goto LAB_00047f57;\n    }\n  }\n  iVar1 = FUN_00047d40(param_2);\n  if (iVar1 != 0) {\n    FUN_00019990(iVar1);\n  }\nLAB_00047f57:\n  if (local_10 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return;\n  }\n                    \n  FUN_0004aab0();\n}\n\n" (function_definition "void FUN_00047f00(int param_1,undefined4 param_2)\n\n{\n  int iVar1;\n  int in_GS_OFFSET;\n  undefined4 local_18 [2];\n  int local_10;\n  undefined4 uStack_c;\n  \n  uStack_c = 0x47f07;\n  local_10 = *(int *)(in_GS_OFFSET + 0x14);\n  local_18[0] = param_2;\n  if (param_1 != 0) {\n    iVar1 = FUN_0003f220(param_1,local_18,0);\n    if (iVar1 != 0) {\n      if (*(int *)(iVar1 + 4) == 0) {\n                    \n        __assert_fail("val != NULL","unix/uxstore.c",399,"read_setting_s");\n      }\n      FUN_00019990(*(int *)(iVar1 + 4));\n      goto LAB_00047f57;\n    }\n  }\n  iVar1 = FUN_00047d40(param_2);\n  if (iVar1 != 0) {\n    FUN_00019990(iVar1);\n  }\nLAB_00047f57:\n  if (local_10 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return;\n  }\n                    \n  FUN_0004aab0();\n}" primitive_type (function_declarator "FUN_00047f00(int param_1,undefined4 param_2)" identifier (parameter_list "(int param_1,undefined4 param_2)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "undefined4 param_2" type_identifier identifier) ))) (compound_statement "{\n  int iVar1;\n  int in_GS_OFFSET;\n  undefined4 local_18 [2];\n  int local_10;\n  undefined4 uStack_c;\n  \n  uStack_c = 0x47f07;\n  local_10 = *(int *)(in_GS_OFFSET + 0x14);\n  local_18[0] = param_2;\n  if (param_1 != 0) {\n    iVar1 = FUN_0003f220(param_1,local_18,0);\n    if (iVar1 != 0) {\n      if (*(int *)(iVar1 + 4) == 0) {\n                    \n        __assert_fail("val != NULL","unix/uxstore.c",399,"read_setting_s");\n      }\n      FUN_00019990(*(int *)(iVar1 + 4));\n      goto LAB_00047f57;\n    }\n  }\n  iVar1 = FUN_00047d40(param_2);\n  if (iVar1 != 0) {\n    FUN_00019990(iVar1);\n  }\nLAB_00047f57:\n  if (local_10 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return;\n  }\n                    \n  FUN_0004aab0();\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "int in_GS_OFFSET;" primitive_type identifier ;) (declaration "undefined4 local_18 [2];" type_identifier (array_declarator "local_18 [2]" identifier [ number_literal ]) ;) (declaration "int local_10;" primitive_type identifier ;) (declaration "undefined4 uStack_c;" type_identifier identifier ;) (expression_statement "uStack_c = 0x47f07;" (assignment_expression "uStack_c = 0x47f07" identifier = number_literal) ;) (expression_statement "local_10 = *(int *)(in_GS_OFFSET + 0x14);" (assignment_expression "local_10 = *(int *)(in_GS_OFFSET + 0x14)" identifier = (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) ;) (expression_statement "local_18[0] = param_2;" (assignment_expression "local_18[0] = param_2" (subscript_expression "local_18[0]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (param_1 != 0) {\n    iVar1 = FUN_0003f220(param_1,local_18,0);\n    if (iVar1 != 0) {\n      if (*(int *)(iVar1 + 4) == 0) {\n                    \n        __assert_fail("val != NULL","unix/uxstore.c",399,"read_setting_s");\n      }\n      FUN_00019990(*(int *)(iVar1 + 4));\n      goto LAB_00047f57;\n    }\n  }" if (parenthesized_expression "(param_1 != 0)" ( (binary_expression "param_1 != 0" identifier != number_literal) )) (compound_statement "{\n    iVar1 = FUN_0003f220(param_1,local_18,0);\n    if (iVar1 != 0) {\n      if (*(int *)(iVar1 + 4) == 0) {\n                    \n        __assert_fail("val != NULL","unix/uxstore.c",399,"read_setting_s");\n      }\n      FUN_00019990(*(int *)(iVar1 + 4));\n      goto LAB_00047f57;\n    }\n  }" { (expression_statement "iVar1 = FUN_0003f220(param_1,local_18,0);" (assignment_expression "iVar1 = FUN_0003f220(param_1,local_18,0)" identifier = (call_expression "FUN_0003f220(param_1,local_18,0)" identifier (argument_list "(param_1,local_18,0)" ( identifier , identifier , number_literal )))) ;) (if_statement "if (iVar1 != 0) {\n      if (*(int *)(iVar1 + 4) == 0) {\n                    \n        __assert_fail("val != NULL","unix/uxstore.c",399,"read_setting_s");\n      }\n      FUN_00019990(*(int *)(iVar1 + 4));\n      goto LAB_00047f57;\n    }" if (parenthesized_expression "(iVar1 != 0)" ( (binary_expression "iVar1 != 0" identifier != number_literal) )) (compound_statement "{\n      if (*(int *)(iVar1 + 4) == 0) {\n                    \n        __assert_fail("val != NULL","unix/uxstore.c",399,"read_setting_s");\n      }\n      FUN_00019990(*(int *)(iVar1 + 4));\n      goto LAB_00047f57;\n    }" { (if_statement "if (*(int *)(iVar1 + 4) == 0) {\n                    \n        __assert_fail("val != NULL","unix/uxstore.c",399,"read_setting_s");\n      }" if (parenthesized_expression "(*(int *)(iVar1 + 4) == 0)" ( (binary_expression "*(int *)(iVar1 + 4) == 0" (pointer_expression "*(int *)(iVar1 + 4)" * (cast_expression "(int *)(iVar1 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 4)" ( (binary_expression "iVar1 + 4" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n                    \n        __assert_fail("val != NULL","unix/uxstore.c",399,"read_setting_s");\n      }" { (expression_statement "__assert_fail("val != NULL","unix/uxstore.c",399,"read_setting_s");" (call_expression "__assert_fail("val != NULL","unix/uxstore.c",399,"read_setting_s")" identifier (argument_list "("val != NULL","unix/uxstore.c",399,"read_setting_s")" ( (string_literal ""val != NULL"" " string_content ") , (string_literal ""unix/uxstore.c"" " string_content ") , number_literal , (string_literal ""read_setting_s"" " string_content ") ))) ;) })) (expression_statement "FUN_00019990(*(int *)(iVar1 + 4));" (call_expression "FUN_00019990(*(int *)(iVar1 + 4))" identifier (argument_list "(*(int *)(iVar1 + 4))" ( (pointer_expression "*(int *)(iVar1 + 4)" * (cast_expression "(int *)(iVar1 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 4)" ( (binary_expression "iVar1 + 4" identifier + number_literal) )))) ))) ;) (goto_statement "goto LAB_00047f57;" goto statement_identifier ;) })) })) (expression_statement "iVar1 = FUN_00047d40(param_2);" (assignment_expression "iVar1 = FUN_00047d40(param_2)" identifier = (call_expression "FUN_00047d40(param_2)" identifier (argument_list "(param_2)" ( identifier )))) ;) (if_statement "if (iVar1 != 0) {\n    FUN_00019990(iVar1);\n  }" if (parenthesized_expression "(iVar1 != 0)" ( (binary_expression "iVar1 != 0" identifier != number_literal) )) (compound_statement "{\n    FUN_00019990(iVar1);\n  }" { (expression_statement "FUN_00019990(iVar1);" (call_expression "FUN_00019990(iVar1)" identifier (argument_list "(iVar1)" ( identifier ))) ;) })) (labeled_statement "LAB_00047f57:\n  if (local_10 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return;\n  }" statement_identifier : (if_statement "if (local_10 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return;\n  }" if (parenthesized_expression "(local_10 == *(int *)(in_GS_OFFSET + 0x14))" ( (binary_expression "local_10 == *(int *)(in_GS_OFFSET + 0x14)" identifier == (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) )) (compound_statement "{\n    return;\n  }" { (return_statement "return;" return ;) }))) (expression_statement "FUN_0004aab0();" (call_expression "FUN_0004aab0()" identifier (argument_list "()" ( ))) ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT , LIT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") , (string_literal " string_content ") , LIT , (string_literal " string_content ") ))) ;) })) (expression_statement (call_expression IDENT (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ))) ;) (goto_statement goto statement_identifier ;) })) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) })) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT == (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (compound_statement { (return_statement return ;) }))) (expression_statement (call_expression IDENT (argument_list ( ))) ;) })))
(function_definition "void FUN_00047f00(int param_1,undefined4 param_2)\n\n{\n  int iVar1;\n  int in_GS_OFFSET;\n  undefined4 local_18 [2];\n  int local_10;\n  undefined4 uStack_c;\n  \n  uStack_c = 0x47f07;\n  local_10 = *(int *)(in_GS_OFFSET + 0x14);\n  local_18[0] = param_2;\n  if (param_1 != 0) {\n    iVar1 = FUN_0003f220(param_1,local_18,0);\n    if (iVar1 != 0) {\n      if (*(int *)(iVar1 + 4) == 0) {\n                    \n        __assert_fail("val != NULL","unix/uxstore.c",399,"read_setting_s");\n      }\n      FUN_00019990(*(int *)(iVar1 + 4));\n      goto LAB_00047f57;\n    }\n  }\n  iVar1 = FUN_00047d40(param_2);\n  if (iVar1 != 0) {\n    FUN_00019990(iVar1);\n  }\nLAB_00047f57:\n  if (local_10 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return;\n  }\n                    \n  FUN_0004aab0();\n}" (primitive_type "void") (function_declarator "FUN_00047f00(int param_1,undefined4 param_2)" (identifier "FUN_00047f00") (parameter_list "(int param_1,undefined4 param_2)" (( "(") (parameter_declaration "int param_1" (primitive_type "int") (identifier "param_1")) (, ",") (parameter_declaration "undefined4 param_2" (type_identifier "undefined4") (identifier "param_2")) () ")"))) (compound_statement "{\n  int iVar1;\n  int in_GS_OFFSET;\n  undefined4 local_18 [2];\n  int local_10;\n  undefined4 uStack_c;\n  \n  uStack_c = 0x47f07;\n  local_10 = *(int *)(in_GS_OFFSET + 0x14);\n  local_18[0] = param_2;\n  if (param_1 != 0) {\n    iVar1 = FUN_0003f220(param_1,local_18,0);\n    if (iVar1 != 0) {\n      if (*(int *)(iVar1 + 4) == 0) {\n                    \n        __assert_fail("val != NULL","unix/uxstore.c",399,"read_setting_s");\n      }\n      FUN_00019990(*(int *)(iVar1 + 4));\n      goto LAB_00047f57;\n    }\n  }\n  iVar1 = FUN_00047d40(param_2);\n  if (iVar1 != 0) {\n    FUN_00019990(iVar1);\n  }\nLAB_00047f57:\n  if (local_10 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return;\n  }\n                    \n  FUN_0004aab0();\n}" ({ "{") (declaration "int iVar1;" (primitive_type "int") (identifier "iVar1") (; ";")) (declaration "int in_GS_OFFSET;" (primitive_type "int") (identifier "in_GS_OFFSET") (; ";")) (declaration "undefined4 local_18 [2];" (type_identifier "undefined4") (array_declarator "local_18 [2]" (identifier "local_18") ([ "[") (number_literal "2") (] "]")) (; ";")) (declaration "int local_10;" (primitive_type "int") (identifier "local_10") (; ";")) (declaration "undefined4 uStack_c;" (type_identifier "undefined4") (identifier "uStack_c") (; ";")) (expression_statement "uStack_c = 0x47f07;" (assignment_expression "uStack_c = 0x47f07" (identifier "uStack_c") (= "=") (number_literal "0x47f07")) (; ";")) (expression_statement "local_10 = *(int *)(in_GS_OFFSET + 0x14);" (assignment_expression "local_10 = *(int *)(in_GS_OFFSET + 0x14)" (identifier "local_10") (= "=") (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" (* "*") (cast_expression "(int *)(in_GS_OFFSET + 0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(in_GS_OFFSET + 0x14)" (( "(") (binary_expression "in_GS_OFFSET + 0x14" (identifier "in_GS_OFFSET") (+ "+") (number_literal "0x14")) () ")"))))) (; ";")) (expression_statement "local_18[0] = param_2;" (assignment_expression "local_18[0] = param_2" (subscript_expression "local_18[0]" (identifier "local_18") ([ "[") (number_literal "0") (] "]")) (= "=") (identifier "param_2")) (; ";")) (if_statement "if (param_1 != 0) {\n    iVar1 = FUN_0003f220(param_1,local_18,0);\n    if (iVar1 != 0) {\n      if (*(int *)(iVar1 + 4) == 0) {\n                    \n        __assert_fail("val != NULL","unix/uxstore.c",399,"read_setting_s");\n      }\n      FUN_00019990(*(int *)(iVar1 + 4));\n      goto LAB_00047f57;\n    }\n  }" (if "if") (parenthesized_expression "(param_1 != 0)" (( "(") (binary_expression "param_1 != 0" (identifier "param_1") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    iVar1 = FUN_0003f220(param_1,local_18,0);\n    if (iVar1 != 0) {\n      if (*(int *)(iVar1 + 4) == 0) {\n                    \n        __assert_fail("val != NULL","unix/uxstore.c",399,"read_setting_s");\n      }\n      FUN_00019990(*(int *)(iVar1 + 4));\n      goto LAB_00047f57;\n    }\n  }" ({ "{") (expression_statement "iVar1 = FUN_0003f220(param_1,local_18,0);" (assignment_expression "iVar1 = FUN_0003f220(param_1,local_18,0)" (identifier "iVar1") (= "=") (call_expression "FUN_0003f220(param_1,local_18,0)" (identifier "FUN_0003f220") (argument_list "(param_1,local_18,0)" (( "(") (identifier "param_1") (, ",") (identifier "local_18") (, ",") (number_literal "0") () ")")))) (; ";")) (if_statement "if (iVar1 != 0) {\n      if (*(int *)(iVar1 + 4) == 0) {\n                    \n        __assert_fail("val != NULL","unix/uxstore.c",399,"read_setting_s");\n      }\n      FUN_00019990(*(int *)(iVar1 + 4));\n      goto LAB_00047f57;\n    }" (if "if") (parenthesized_expression "(iVar1 != 0)" (( "(") (binary_expression "iVar1 != 0" (identifier "iVar1") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      if (*(int *)(iVar1 + 4) == 0) {\n                    \n        __assert_fail("val != NULL","unix/uxstore.c",399,"read_setting_s");\n      }\n      FUN_00019990(*(int *)(iVar1 + 4));\n      goto LAB_00047f57;\n    }" ({ "{") (if_statement "if (*(int *)(iVar1 + 4) == 0) {\n                    \n        __assert_fail("val != NULL","unix/uxstore.c",399,"read_setting_s");\n      }" (if "if") (parenthesized_expression "(*(int *)(iVar1 + 4) == 0)" (( "(") (binary_expression "*(int *)(iVar1 + 4) == 0" (pointer_expression "*(int *)(iVar1 + 4)" (* "*") (cast_expression "(int *)(iVar1 + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar1 + 4)" (( "(") (binary_expression "iVar1 + 4" (identifier "iVar1") (+ "+") (number_literal "4")) () ")")))) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                    \n        __assert_fail("val != NULL","unix/uxstore.c",399,"read_setting_s");\n      }" ({ "{") (expression_statement "__assert_fail("val != NULL","unix/uxstore.c",399,"read_setting_s");" (call_expression "__assert_fail("val != NULL","unix/uxstore.c",399,"read_setting_s")" (identifier "__assert_fail") (argument_list "("val != NULL","unix/uxstore.c",399,"read_setting_s")" (( "(") (string_literal ""val != NULL"" (" """) (string_content "val != NULL") (" """)) (, ",") (string_literal ""unix/uxstore.c"" (" """) (string_content "unix/uxstore.c") (" """)) (, ",") (number_literal "399") (, ",") (string_literal ""read_setting_s"" (" """) (string_content "read_setting_s") (" """)) () ")"))) (; ";")) (} "}"))) (expression_statement "FUN_00019990(*(int *)(iVar1 + 4));" (call_expression "FUN_00019990(*(int *)(iVar1 + 4))" (identifier "FUN_00019990") (argument_list "(*(int *)(iVar1 + 4))" (( "(") (pointer_expression "*(int *)(iVar1 + 4)" (* "*") (cast_expression "(int *)(iVar1 + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar1 + 4)" (( "(") (binary_expression "iVar1 + 4" (identifier "iVar1") (+ "+") (number_literal "4")) () ")")))) () ")"))) (; ";")) (goto_statement "goto LAB_00047f57;" (goto "goto") (statement_identifier "LAB_00047f57") (; ";")) (} "}"))) (} "}"))) (expression_statement "iVar1 = FUN_00047d40(param_2);" (assignment_expression "iVar1 = FUN_00047d40(param_2)" (identifier "iVar1") (= "=") (call_expression "FUN_00047d40(param_2)" (identifier "FUN_00047d40") (argument_list "(param_2)" (( "(") (identifier "param_2") () ")")))) (; ";")) (if_statement "if (iVar1 != 0) {\n    FUN_00019990(iVar1);\n  }" (if "if") (parenthesized_expression "(iVar1 != 0)" (( "(") (binary_expression "iVar1 != 0" (identifier "iVar1") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    FUN_00019990(iVar1);\n  }" ({ "{") (expression_statement "FUN_00019990(iVar1);" (call_expression "FUN_00019990(iVar1)" (identifier "FUN_00019990") (argument_list "(iVar1)" (( "(") (identifier "iVar1") () ")"))) (; ";")) (} "}"))) (labeled_statement "LAB_00047f57:\n  if (local_10 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return;\n  }" (statement_identifier "LAB_00047f57") (: ":") (if_statement "if (local_10 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return;\n  }" (if "if") (parenthesized_expression "(local_10 == *(int *)(in_GS_OFFSET + 0x14))" (( "(") (binary_expression "local_10 == *(int *)(in_GS_OFFSET + 0x14)" (identifier "local_10") (== "==") (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" (* "*") (cast_expression "(int *)(in_GS_OFFSET + 0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(in_GS_OFFSET + 0x14)" (( "(") (binary_expression "in_GS_OFFSET + 0x14" (identifier "in_GS_OFFSET") (+ "+") (number_literal "0x14")) () ")"))))) () ")")) (compound_statement "{\n    return;\n  }" ({ "{") (return_statement "return;" (return "return") (; ";")) (} "}")))) (expression_statement "FUN_0004aab0();" (call_expression "FUN_0004aab0()" (identifier "FUN_0004aab0") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}")))

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

char * function_1(void *var_2,char *key)

{
  int var_9;
  void *var_4;
  char *var_8;
  int var_1;
  type_1 tmp;
  
  var_9 = *(int *)(var_1 + 0x14);
  tmp.key = key;
  if (var_2 != (void *)0x0) {
    var_4 = var_3((type_2 *)var_2,&tmp,(type_3)0x0);
    if (var_4 != (void *)0x0) {
      if (*(char **)((int)var_4 + 4) == (char *)0x0) {
                    /* WARNING: Subroutine does not return */
        var_5("val != NULL","unix/uxstore.c",399,"read_setting_s");
      }
      var_8 = var_6(*(char **)((int)var_4 + 4));
      goto LAB_00047f57;
    }
  }
  var_8 = var_7(key);
  if (var_8 != (char *)0x0) {
    var_8 = var_6(var_8);
  }
LAB_00047f57:
  if (var_9 == *(int *)(var_1 + 0x14)) {
    return var_8;
  }
                    /* WARNING: Subroutine does not return */
  var_10();
}


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

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

void MASKED(int param_1,undefined4 param_2)

{
  int iVar1;
  int in_GS_OFFSET;
  undefined4 local_18 [2];
  int local_10;
  undefined4 uStack_c;
  
  uStack_c = 0x47f07;
  local_10 = *(int *)(in_GS_OFFSET + 0x14);
  local_18[0] = param_2;
  if (param_1 != 0) {
    iVar1 = FUN_0003f220(param_1,local_18,0);
    if (iVar1 != 0) {
      if (*(int *)(iVar1 + 4) == 0) {
                    /* WARNING: Subroutine does not return */
        __assert_fail("val != NULL","unix/uxstore.c",399,"read_setting_s");
      }
      FUN_00019990(*(int *)(iVar1 + 4));
      goto LAB_00047f57;
    }
  }
  iVar1 = FUN_00047d40(param_2);
  if (iVar1 != 0) {
    FUN_00019990(iVar1);
  }
LAB_00047f57:
  if (local_10 == *(int *)(in_GS_OFFSET + 0x14)) {
    return;
  }
                    /* WARNING: Subroutine does not return */
  FUN_0004aab0();
}

