
/* 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_0009ffd7;
    }
  }
  s = get_setting(key);
  if (s != (char *)0x0) {
    s = dupstr(s);
  }
LAB_0009ffd7:
  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_0009ff80(int param_1,undefined4 param_2)

{
  int iVar1;
  int in_GS_OFFSET;
  undefined4 local_18 [2];
  int local_10;
  undefined4 uStack_c;
  
  uStack_c = 0x9ff87;
  local_10 = *(int *)(in_GS_OFFSET + 0x14);
  local_18[0] = param_2;
  if (param_1 != 0) {
    iVar1 = FUN_000817b0(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_0002e890(*(int *)(iVar1 + 4));
      goto LAB_0009ffd7;
    }
  }
  iVar1 = FUN_0009fdc0(param_2);
  if (iVar1 != 0) {
    FUN_0002e890(iVar1);
  }
LAB_0009ffd7:
  if (local_10 == *(int *)(in_GS_OFFSET + 0x14)) {
    return;
  }
                    /* WARNING: Subroutine does not return */
  FUN_000a39d0();
}


PUSH ESI
PUSH EBX
CALL 0x0001c4f0
ADD EBX,0x707c9
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 0x0009fff0
SUB ESP,0x4
PUSH 0x0
LEA EDX,[ESP + 0xc]
PUSH EDX
PUSH EAX
CALL 0x000817b0
ADD ESP,0x10
TEST EAX,EAX
JZ 0x0009fff0
MOV EAX,dword ptr [EAX + 0x4]
TEST EAX,EAX
JZ 0x000a000e
SUB ESP,0xc
PUSH EAX
CALL 0x0002e890
ADD ESP,0x10
MOV ECX,dword ptr [ESP + 0xc]
XOR ECX,dword ptr GS:[0x14]
JNZ 0x000a002d
ADD ESP,0x14
POP EBX
POP ESI
RET
SUB ESP,0xc
PUSH ESI
CALL 0x0009fdc0
ADD ESP,0x10
TEST EAX,EAX
JZ 0x0009ffd7
SUB ESP,0xc
PUSH EAX
CALL 0x0002e890
ADD ESP,0x10
JMP 0x0009ffd7
LEA EAX,[EBX + 0xfffbdd8c]
PUSH EAX
LEA EAX,[EBX + 0xfffbdbd5]
PUSH 0x18f
PUSH EAX
LEA EAX,[EBX + 0xfffa627a]
PUSH EAX
CALL 0x0001c000
CALL 0x000a39d0
(translation_unit "/* WARNING: Function: __i686.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n\nvoid FUN_0009ff80(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 = 0x9ff87;\n  local_10 = *(int *)(in_GS_OFFSET + 0x14);\n  local_18[0] = param_2;\n  if (param_1 != 0) {\n    iVar1 = FUN_000817b0(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_0002e890(*(int *)(iVar1 + 4));\n      goto LAB_0009ffd7;\n    }\n  }\n  iVar1 = FUN_0009fdc0(param_2);\n  if (iVar1 != 0) {\n    FUN_0002e890(iVar1);\n  }\nLAB_0009ffd7:\n  if (local_10 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return;\n  }\n                    /* WARNING: Subroutine does not return */\n  FUN_000a39d0();\n}\n\n" comment (function_definition "void FUN_0009ff80(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 = 0x9ff87;\n  local_10 = *(int *)(in_GS_OFFSET + 0x14);\n  local_18[0] = param_2;\n  if (param_1 != 0) {\n    iVar1 = FUN_000817b0(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_0002e890(*(int *)(iVar1 + 4));\n      goto LAB_0009ffd7;\n    }\n  }\n  iVar1 = FUN_0009fdc0(param_2);\n  if (iVar1 != 0) {\n    FUN_0002e890(iVar1);\n  }\nLAB_0009ffd7:\n  if (local_10 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return;\n  }\n                    /* WARNING: Subroutine does not return */\n  FUN_000a39d0();\n}" primitive_type (function_declarator "FUN_0009ff80(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 = 0x9ff87;\n  local_10 = *(int *)(in_GS_OFFSET + 0x14);\n  local_18[0] = param_2;\n  if (param_1 != 0) {\n    iVar1 = FUN_000817b0(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_0002e890(*(int *)(iVar1 + 4));\n      goto LAB_0009ffd7;\n    }\n  }\n  iVar1 = FUN_0009fdc0(param_2);\n  if (iVar1 != 0) {\n    FUN_0002e890(iVar1);\n  }\nLAB_0009ffd7:\n  if (local_10 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return;\n  }\n                    /* WARNING: Subroutine does not return */\n  FUN_000a39d0();\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 = 0x9ff87;" (assignment_expression "uStack_c = 0x9ff87" 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_000817b0(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_0002e890(*(int *)(iVar1 + 4));\n      goto LAB_0009ffd7;\n    }\n  }" if (parenthesized_expression "(param_1 != 0)" ( (binary_expression "param_1 != 0" identifier != number_literal) )) (compound_statement "{\n    iVar1 = FUN_000817b0(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_0002e890(*(int *)(iVar1 + 4));\n      goto LAB_0009ffd7;\n    }\n  }" { (expression_statement "iVar1 = FUN_000817b0(param_1,local_18,0);" (assignment_expression "iVar1 = FUN_000817b0(param_1,local_18,0)" identifier = (call_expression "FUN_000817b0(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_0002e890(*(int *)(iVar1 + 4));\n      goto LAB_0009ffd7;\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_0002e890(*(int *)(iVar1 + 4));\n      goto LAB_0009ffd7;\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_0002e890(*(int *)(iVar1 + 4));" (call_expression "FUN_0002e890(*(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_0009ffd7;" goto statement_identifier ;) })) })) (expression_statement "iVar1 = FUN_0009fdc0(param_2);" (assignment_expression "iVar1 = FUN_0009fdc0(param_2)" identifier = (call_expression "FUN_0009fdc0(param_2)" identifier (argument_list "(param_2)" ( identifier )))) ;) (if_statement "if (iVar1 != 0) {\n    FUN_0002e890(iVar1);\n  }" if (parenthesized_expression "(iVar1 != 0)" ( (binary_expression "iVar1 != 0" identifier != number_literal) )) (compound_statement "{\n    FUN_0002e890(iVar1);\n  }" { (expression_statement "FUN_0002e890(iVar1);" (call_expression "FUN_0002e890(iVar1)" identifier (argument_list "(iVar1)" ( identifier ))) ;) })) (labeled_statement "LAB_0009ffd7:\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_000a39d0();" (call_expression "FUN_000a39d0()" 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_0009ffd7;\n    }\n  }\n  s = get_setting(key);\n  if (s != (char *)0x0) {\n    s = dupstr(s);\n  }\nLAB_0009ffd7:\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_0009ffd7;\n    }\n  }\n  s = get_setting(key);\n  if (s != (char *)0x0) {\n    s = dupstr(s);\n  }\nLAB_0009ffd7:\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_0009ffd7;\n    }\n  }\n  s = get_setting(key);\n  if (s != (char *)0x0) {\n    s = dupstr(s);\n  }\nLAB_0009ffd7:\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_0009ffd7;\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_0009ffd7;\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_0009ffd7;\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_0009ffd7;\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_0009ffd7;" 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_0009ffd7:\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_0009ff80(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 = 0x9ff87;\n  local_10 = *(int *)(in_GS_OFFSET + 0x14);\n  local_18[0] = param_2;\n  if (param_1 != 0) {\n    iVar1 = FUN_000817b0(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_0002e890(*(int *)(iVar1 + 4));\n      goto LAB_0009ffd7;\n    }\n  }\n  iVar1 = FUN_0009fdc0(param_2);\n  if (iVar1 != 0) {\n    FUN_0002e890(iVar1);\n  }\nLAB_0009ffd7:\n  if (local_10 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return;\n  }\n                    \n  FUN_000a39d0();\n}\n\n" (function_definition "void FUN_0009ff80(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 = 0x9ff87;\n  local_10 = *(int *)(in_GS_OFFSET + 0x14);\n  local_18[0] = param_2;\n  if (param_1 != 0) {\n    iVar1 = FUN_000817b0(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_0002e890(*(int *)(iVar1 + 4));\n      goto LAB_0009ffd7;\n    }\n  }\n  iVar1 = FUN_0009fdc0(param_2);\n  if (iVar1 != 0) {\n    FUN_0002e890(iVar1);\n  }\nLAB_0009ffd7:\n  if (local_10 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return;\n  }\n                    \n  FUN_000a39d0();\n}" primitive_type (function_declarator "FUN_0009ff80(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 = 0x9ff87;\n  local_10 = *(int *)(in_GS_OFFSET + 0x14);\n  local_18[0] = param_2;\n  if (param_1 != 0) {\n    iVar1 = FUN_000817b0(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_0002e890(*(int *)(iVar1 + 4));\n      goto LAB_0009ffd7;\n    }\n  }\n  iVar1 = FUN_0009fdc0(param_2);\n  if (iVar1 != 0) {\n    FUN_0002e890(iVar1);\n  }\nLAB_0009ffd7:\n  if (local_10 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return;\n  }\n                    \n  FUN_000a39d0();\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 = 0x9ff87;" (assignment_expression "uStack_c = 0x9ff87" 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_000817b0(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_0002e890(*(int *)(iVar1 + 4));\n      goto LAB_0009ffd7;\n    }\n  }" if (parenthesized_expression "(param_1 != 0)" ( (binary_expression "param_1 != 0" identifier != number_literal) )) (compound_statement "{\n    iVar1 = FUN_000817b0(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_0002e890(*(int *)(iVar1 + 4));\n      goto LAB_0009ffd7;\n    }\n  }" { (expression_statement "iVar1 = FUN_000817b0(param_1,local_18,0);" (assignment_expression "iVar1 = FUN_000817b0(param_1,local_18,0)" identifier = (call_expression "FUN_000817b0(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_0002e890(*(int *)(iVar1 + 4));\n      goto LAB_0009ffd7;\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_0002e890(*(int *)(iVar1 + 4));\n      goto LAB_0009ffd7;\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_0002e890(*(int *)(iVar1 + 4));" (call_expression "FUN_0002e890(*(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_0009ffd7;" goto statement_identifier ;) })) })) (expression_statement "iVar1 = FUN_0009fdc0(param_2);" (assignment_expression "iVar1 = FUN_0009fdc0(param_2)" identifier = (call_expression "FUN_0009fdc0(param_2)" identifier (argument_list "(param_2)" ( identifier )))) ;) (if_statement "if (iVar1 != 0) {\n    FUN_0002e890(iVar1);\n  }" if (parenthesized_expression "(iVar1 != 0)" ( (binary_expression "iVar1 != 0" identifier != number_literal) )) (compound_statement "{\n    FUN_0002e890(iVar1);\n  }" { (expression_statement "FUN_0002e890(iVar1);" (call_expression "FUN_0002e890(iVar1)" identifier (argument_list "(iVar1)" ( identifier ))) ;) })) (labeled_statement "LAB_0009ffd7:\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_000a39d0();" (call_expression "FUN_000a39d0()" 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_0009ff80(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 = 0x9ff87;\n  local_10 = *(int *)(in_GS_OFFSET + 0x14);\n  local_18[0] = param_2;\n  if (param_1 != 0) {\n    iVar1 = FUN_000817b0(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_0002e890(*(int *)(iVar1 + 4));\n      goto LAB_0009ffd7;\n    }\n  }\n  iVar1 = FUN_0009fdc0(param_2);\n  if (iVar1 != 0) {\n    FUN_0002e890(iVar1);\n  }\nLAB_0009ffd7:\n  if (local_10 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return;\n  }\n                    \n  FUN_000a39d0();\n}" (primitive_type "void") (function_declarator "FUN_0009ff80(int param_1,undefined4 param_2)" (identifier "FUN_0009ff80") (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 = 0x9ff87;\n  local_10 = *(int *)(in_GS_OFFSET + 0x14);\n  local_18[0] = param_2;\n  if (param_1 != 0) {\n    iVar1 = FUN_000817b0(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_0002e890(*(int *)(iVar1 + 4));\n      goto LAB_0009ffd7;\n    }\n  }\n  iVar1 = FUN_0009fdc0(param_2);\n  if (iVar1 != 0) {\n    FUN_0002e890(iVar1);\n  }\nLAB_0009ffd7:\n  if (local_10 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return;\n  }\n                    \n  FUN_000a39d0();\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 = 0x9ff87;" (assignment_expression "uStack_c = 0x9ff87" (identifier "uStack_c") (= "=") (number_literal "0x9ff87")) (; ";")) (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_000817b0(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_0002e890(*(int *)(iVar1 + 4));\n      goto LAB_0009ffd7;\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_000817b0(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_0002e890(*(int *)(iVar1 + 4));\n      goto LAB_0009ffd7;\n    }\n  }" ({ "{") (expression_statement "iVar1 = FUN_000817b0(param_1,local_18,0);" (assignment_expression "iVar1 = FUN_000817b0(param_1,local_18,0)" (identifier "iVar1") (= "=") (call_expression "FUN_000817b0(param_1,local_18,0)" (identifier "FUN_000817b0") (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_0002e890(*(int *)(iVar1 + 4));\n      goto LAB_0009ffd7;\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_0002e890(*(int *)(iVar1 + 4));\n      goto LAB_0009ffd7;\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_0002e890(*(int *)(iVar1 + 4));" (call_expression "FUN_0002e890(*(int *)(iVar1 + 4))" (identifier "FUN_0002e890") (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_0009ffd7;" (goto "goto") (statement_identifier "LAB_0009ffd7") (; ";")) (} "}"))) (} "}"))) (expression_statement "iVar1 = FUN_0009fdc0(param_2);" (assignment_expression "iVar1 = FUN_0009fdc0(param_2)" (identifier "iVar1") (= "=") (call_expression "FUN_0009fdc0(param_2)" (identifier "FUN_0009fdc0") (argument_list "(param_2)" (( "(") (identifier "param_2") () ")")))) (; ";")) (if_statement "if (iVar1 != 0) {\n    FUN_0002e890(iVar1);\n  }" (if "if") (parenthesized_expression "(iVar1 != 0)" (( "(") (binary_expression "iVar1 != 0" (identifier "iVar1") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    FUN_0002e890(iVar1);\n  }" ({ "{") (expression_statement "FUN_0002e890(iVar1);" (call_expression "FUN_0002e890(iVar1)" (identifier "FUN_0002e890") (argument_list "(iVar1)" (( "(") (identifier "iVar1") () ")"))) (; ";")) (} "}"))) (labeled_statement "LAB_0009ffd7:\n  if (local_10 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return;\n  }" (statement_identifier "LAB_0009ffd7") (: ":") (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_000a39d0();" (call_expression "FUN_000a39d0()" (identifier "FUN_000a39d0") (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_0009ffd7;
    }
  }
  var_8 = var_7(key);
  if (var_8 != (char *)0x0) {
    var_8 = var_6(var_8);
  }
LAB_0009ffd7:
  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 = 0x9ff87;
  local_10 = *(int *)(in_GS_OFFSET + 0x14);
  local_18[0] = param_2;
  if (param_1 != 0) {
    iVar1 = FUN_000817b0(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_0002e890(*(int *)(iVar1 + 4));
      goto LAB_0009ffd7;
    }
  }
  iVar1 = FUN_0009fdc0(param_2);
  if (iVar1 != 0) {
    FUN_0002e890(iVar1);
  }
LAB_0009ffd7:
  if (local_10 == *(int *)(in_GS_OFFSET + 0x14)) {
    return;
  }
                    /* WARNING: Subroutine does not return */
  FUN_000a39d0();
}

