
/* WARNING: Unknown calling convention */

char * get_dollar_var_value(intmax_t ind)

{
  bool bVar1;
  longlong lVar2;
  uint uVar3;
  size_t sVar4;
  char *__dest;
  char *pcVar5;
  char *temp;
  int *piVar6;
  int unaff_EDI;
  
  uVar3 = __x86_get_pc_thunk_di();
  if (-ind._4_4_ < (int)(uint)(uVar3 < (uint)ind)) {
    piVar6 = *(int **)(unaff_EDI + 0xe4ce5);
    if (piVar6 == (int *)0x0) {
      return (char *)0x0;
    }
    lVar2 = ind + -0xb;
    if (ind != 10) {
      do {
        piVar6 = (int *)*piVar6;
        if (piVar6 == (int *)0x0) {
          return (char *)0x0;
        }
        bVar1 = lVar2 != 0;
        lVar2 = lVar2 + -1;
      } while (bVar1);
    }
    pcVar5 = *(char **)piVar6[1];
  }
  else {
    pcVar5 = *(char **)(unaff_EDI + 0xe7e15 + (uint)ind * 4);
    if (pcVar5 == (char *)0x0) {
      return (char *)0x0;
    }
  }
  sVar4 = strlen(pcVar5);
  __dest = (char *)xmalloc(sVar4 + 1);
  pcVar5 = strcpy(__dest,pcVar5);
  return pcVar5;
}



char * get_dollar_var_value(uint param_1,int param_2)

{
  bool bVar1;
  bool bVar2;
  uint uVar3;
  size_t sVar4;
  char *__dest;
  char *pcVar5;
  int *piVar6;
  int unaff_EDI;
  bool bVar7;
  int local_14;
  int local_10;
  
  uVar3 = FUN_00042933();
  if (-param_2 < (int)(uint)(uVar3 < param_1)) {
    piVar6 = *(int **)(unaff_EDI + 0xe4ce5);
    if (piVar6 == (int *)0x0) {
      return (char *)0x0;
    }
    local_14 = param_1 - 0xb;
    local_10 = param_2 + -1 + (uint)(10 < param_1);
    if (param_2 != 0 || param_1 != 10) {
      do {
        piVar6 = (int *)*piVar6;
        if (piVar6 == (int *)0x0) {
          return (char *)0x0;
        }
        bVar7 = local_14 != 0;
        bVar1 = local_10 != 0;
        bVar2 = local_14 != 0;
        local_14 = local_14 + -1;
        local_10 = local_10 + -1 + (uint)bVar7;
      } while (bVar1 || bVar2);
    }
    pcVar5 = *(char **)piVar6[1];
  }
  else {
    pcVar5 = *(char **)(unaff_EDI + 0xe7e15 + param_1 * 4);
    if (pcVar5 == (char *)0x0) {
      return (char *)0x0;
    }
  }
  sVar4 = strlen(pcVar5);
  __dest = (char *)xmalloc(sVar4 + 1);
  pcVar5 = strcpy(__dest,pcVar5);
  return pcVar5;
}


PUSH EDI
MOV EAX,0x9
CALL 0x00042933
ADD EDI,0xdeff5
PUSH ESI
PUSH EBX
SUB ESP,0x10
MOV EBX,dword ptr [ESP + 0x20]
MOV ESI,dword ptr [ESP + 0x24]
CMP EAX,EBX
MOV EAX,0x0
SBB EAX,ESI
JL 0x0006b068
LEA EAX,[EDI + 0x8e20]
MOV ESI,dword ptr [EAX + EBX*0x4]
TEST ESI,ESI
JZ 0x0006b05a
SUB ESP,0xc
MOV EBX,EDI
PUSH ESI
CALL 0x0002f760
ADD EAX,0x1
MOV dword ptr [ESP],EAX
CALL 0x00099200
POP EDX
POP ECX
PUSH ESI
PUSH EAX
CALL 0x0002f580
ADD ESP,0x10
MOV ESI,EAX
ADD ESP,0x10
MOV EAX,ESI
POP EBX
POP ESI
POP EDI
RET
LEA EAX,[EDI + 0x5cf0]
MOV ECX,ESI
MOV ESI,dword ptr [EAX]
TEST ESI,ESI
JZ 0x0006b05a
MOV EDX,EBX
MOV EBX,ECX
MOV EAX,EDX
MOV ECX,EDX
MOV EDX,EBX
ADD EAX,-0xb
ADC EDX,-0x1
XOR ECX,0xa
MOV dword ptr [ESP + 0x8],EAX
OR EBX,ECX
MOV dword ptr [ESP + 0xc],EDX
JNZ 0x0006b0a8
JMP 0x0006b0c8
MOV dword ptr [ESP + 0x8],ECX
MOV dword ptr [ESP + 0xc],EBX
MOV ESI,dword ptr [ESI]
TEST ESI,ESI
JZ 0x0006b05a
MOV EAX,dword ptr [ESP + 0x8]
MOV EDX,dword ptr [ESP + 0xc]
MOV ECX,EAX
MOV EBX,EDX
MOV EDX,dword ptr [ESP + 0xc]
ADD ECX,-0x1
ADC EBX,-0x1
OR EDX,EAX
JNZ 0x0006b0a0
MOV EAX,dword ptr [ESI + 0x4]
MOV ESI,dword ptr [EAX]
JMP 0x0006b036
(translation_unit "char * get_dollar_var_value(uint param_1,int param_2)\n\n{\n  bool bVar1;\n  bool bVar2;\n  uint uVar3;\n  size_t sVar4;\n  char *__dest;\n  char *pcVar5;\n  int *piVar6;\n  int unaff_EDI;\n  bool bVar7;\n  int local_14;\n  int local_10;\n  \n  uVar3 = FUN_00042933();\n  if (-param_2 < (int)(uint)(uVar3 < param_1)) {\n    piVar6 = *(int **)(unaff_EDI + 0xe4ce5);\n    if (piVar6 == (int *)0x0) {\n      return (char *)0x0;\n    }\n    local_14 = param_1 - 0xb;\n    local_10 = param_2 + -1 + (uint)(10 < param_1);\n    if (param_2 != 0 || param_1 != 10) {\n      do {\n        piVar6 = (int *)*piVar6;\n        if (piVar6 == (int *)0x0) {\n          return (char *)0x0;\n        }\n        bVar7 = local_14 != 0;\n        bVar1 = local_10 != 0;\n        bVar2 = local_14 != 0;\n        local_14 = local_14 + -1;\n        local_10 = local_10 + -1 + (uint)bVar7;\n      } while (bVar1 || bVar2);\n    }\n    pcVar5 = *(char **)piVar6[1];\n  }\n  else {\n    pcVar5 = *(char **)(unaff_EDI + 0xe7e15 + param_1 * 4);\n    if (pcVar5 == (char *)0x0) {\n      return (char *)0x0;\n    }\n  }\n  sVar4 = strlen(pcVar5);\n  __dest = (char *)xmalloc(sVar4 + 1);\n  pcVar5 = strcpy(__dest,pcVar5);\n  return pcVar5;\n}\n\n" (function_definition "char * get_dollar_var_value(uint param_1,int param_2)\n\n{\n  bool bVar1;\n  bool bVar2;\n  uint uVar3;\n  size_t sVar4;\n  char *__dest;\n  char *pcVar5;\n  int *piVar6;\n  int unaff_EDI;\n  bool bVar7;\n  int local_14;\n  int local_10;\n  \n  uVar3 = FUN_00042933();\n  if (-param_2 < (int)(uint)(uVar3 < param_1)) {\n    piVar6 = *(int **)(unaff_EDI + 0xe4ce5);\n    if (piVar6 == (int *)0x0) {\n      return (char *)0x0;\n    }\n    local_14 = param_1 - 0xb;\n    local_10 = param_2 + -1 + (uint)(10 < param_1);\n    if (param_2 != 0 || param_1 != 10) {\n      do {\n        piVar6 = (int *)*piVar6;\n        if (piVar6 == (int *)0x0) {\n          return (char *)0x0;\n        }\n        bVar7 = local_14 != 0;\n        bVar1 = local_10 != 0;\n        bVar2 = local_14 != 0;\n        local_14 = local_14 + -1;\n        local_10 = local_10 + -1 + (uint)bVar7;\n      } while (bVar1 || bVar2);\n    }\n    pcVar5 = *(char **)piVar6[1];\n  }\n  else {\n    pcVar5 = *(char **)(unaff_EDI + 0xe7e15 + param_1 * 4);\n    if (pcVar5 == (char *)0x0) {\n      return (char *)0x0;\n    }\n  }\n  sVar4 = strlen(pcVar5);\n  __dest = (char *)xmalloc(sVar4 + 1);\n  pcVar5 = strcpy(__dest,pcVar5);\n  return pcVar5;\n}" primitive_type (pointer_declarator "* get_dollar_var_value(uint param_1,int param_2)" * (function_declarator "get_dollar_var_value(uint param_1,int param_2)" identifier (parameter_list "(uint param_1,int param_2)" ( (parameter_declaration "uint param_1" type_identifier identifier) , (parameter_declaration "int param_2" primitive_type identifier) )))) (compound_statement "{\n  bool bVar1;\n  bool bVar2;\n  uint uVar3;\n  size_t sVar4;\n  char *__dest;\n  char *pcVar5;\n  int *piVar6;\n  int unaff_EDI;\n  bool bVar7;\n  int local_14;\n  int local_10;\n  \n  uVar3 = FUN_00042933();\n  if (-param_2 < (int)(uint)(uVar3 < param_1)) {\n    piVar6 = *(int **)(unaff_EDI + 0xe4ce5);\n    if (piVar6 == (int *)0x0) {\n      return (char *)0x0;\n    }\n    local_14 = param_1 - 0xb;\n    local_10 = param_2 + -1 + (uint)(10 < param_1);\n    if (param_2 != 0 || param_1 != 10) {\n      do {\n        piVar6 = (int *)*piVar6;\n        if (piVar6 == (int *)0x0) {\n          return (char *)0x0;\n        }\n        bVar7 = local_14 != 0;\n        bVar1 = local_10 != 0;\n        bVar2 = local_14 != 0;\n        local_14 = local_14 + -1;\n        local_10 = local_10 + -1 + (uint)bVar7;\n      } while (bVar1 || bVar2);\n    }\n    pcVar5 = *(char **)piVar6[1];\n  }\n  else {\n    pcVar5 = *(char **)(unaff_EDI + 0xe7e15 + param_1 * 4);\n    if (pcVar5 == (char *)0x0) {\n      return (char *)0x0;\n    }\n  }\n  sVar4 = strlen(pcVar5);\n  __dest = (char *)xmalloc(sVar4 + 1);\n  pcVar5 = strcpy(__dest,pcVar5);\n  return pcVar5;\n}" { (declaration "bool bVar1;" primitive_type identifier ;) (declaration "bool bVar2;" primitive_type identifier ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "size_t sVar4;" primitive_type identifier ;) (declaration "char *__dest;" primitive_type (pointer_declarator "*__dest" * identifier) ;) (declaration "char *pcVar5;" primitive_type (pointer_declarator "*pcVar5" * identifier) ;) (declaration "int *piVar6;" primitive_type (pointer_declarator "*piVar6" * identifier) ;) (declaration "int unaff_EDI;" primitive_type identifier ;) (declaration "bool bVar7;" primitive_type identifier ;) (declaration "int local_14;" primitive_type identifier ;) (declaration "int local_10;" primitive_type identifier ;) (expression_statement "uVar3 = FUN_00042933();" (assignment_expression "uVar3 = FUN_00042933()" identifier = (call_expression "FUN_00042933()" identifier (argument_list "()" ( )))) ;) (if_statement "if (-param_2 < (int)(uint)(uVar3 < param_1)) {\n    piVar6 = *(int **)(unaff_EDI + 0xe4ce5);\n    if (piVar6 == (int *)0x0) {\n      return (char *)0x0;\n    }\n    local_14 = param_1 - 0xb;\n    local_10 = param_2 + -1 + (uint)(10 < param_1);\n    if (param_2 != 0 || param_1 != 10) {\n      do {\n        piVar6 = (int *)*piVar6;\n        if (piVar6 == (int *)0x0) {\n          return (char *)0x0;\n        }\n        bVar7 = local_14 != 0;\n        bVar1 = local_10 != 0;\n        bVar2 = local_14 != 0;\n        local_14 = local_14 + -1;\n        local_10 = local_10 + -1 + (uint)bVar7;\n      } while (bVar1 || bVar2);\n    }\n    pcVar5 = *(char **)piVar6[1];\n  }\n  else {\n    pcVar5 = *(char **)(unaff_EDI + 0xe7e15 + param_1 * 4);\n    if (pcVar5 == (char *)0x0) {\n      return (char *)0x0;\n    }\n  }" if (parenthesized_expression "(-param_2 < (int)(uint)(uVar3 < param_1))" ( (binary_expression "-param_2 < (int)(uint)(uVar3 < param_1)" (unary_expression "-param_2" - identifier) < (cast_expression "(int)(uint)(uVar3 < param_1)" ( (type_descriptor "int" primitive_type) ) (call_expression "(uint)(uVar3 < param_1)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar3 < param_1)" ( (binary_expression "uVar3 < param_1" identifier < identifier) ))))) )) (compound_statement "{\n    piVar6 = *(int **)(unaff_EDI + 0xe4ce5);\n    if (piVar6 == (int *)0x0) {\n      return (char *)0x0;\n    }\n    local_14 = param_1 - 0xb;\n    local_10 = param_2 + -1 + (uint)(10 < param_1);\n    if (param_2 != 0 || param_1 != 10) {\n      do {\n        piVar6 = (int *)*piVar6;\n        if (piVar6 == (int *)0x0) {\n          return (char *)0x0;\n        }\n        bVar7 = local_14 != 0;\n        bVar1 = local_10 != 0;\n        bVar2 = local_14 != 0;\n        local_14 = local_14 + -1;\n        local_10 = local_10 + -1 + (uint)bVar7;\n      } while (bVar1 || bVar2);\n    }\n    pcVar5 = *(char **)piVar6[1];\n  }" { (expression_statement "piVar6 = *(int **)(unaff_EDI + 0xe4ce5);" (assignment_expression "piVar6 = *(int **)(unaff_EDI + 0xe4ce5)" identifier = (pointer_expression "*(int **)(unaff_EDI + 0xe4ce5)" * (cast_expression "(int **)(unaff_EDI + 0xe4ce5)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(unaff_EDI + 0xe4ce5)" ( (binary_expression "unaff_EDI + 0xe4ce5" identifier + number_literal) ))))) ;) (if_statement "if (piVar6 == (int *)0x0) {\n      return (char *)0x0;\n    }" if (parenthesized_expression "(piVar6 == (int *)0x0)" ( (binary_expression "piVar6 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      return (char *)0x0;\n    }" { (return_statement "return (char *)0x0;" return (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal) ;) })) (expression_statement "local_14 = param_1 - 0xb;" (assignment_expression "local_14 = param_1 - 0xb" identifier = (binary_expression "param_1 - 0xb" identifier - number_literal)) ;) (expression_statement "local_10 = param_2 + -1 + (uint)(10 < param_1);" (assignment_expression "local_10 = param_2 + -1 + (uint)(10 < param_1)" identifier = (binary_expression "param_2 + -1 + (uint)(10 < param_1)" (binary_expression "param_2 + -1" identifier + number_literal) + (call_expression "(uint)(10 < param_1)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(10 < param_1)" ( (binary_expression "10 < param_1" number_literal < identifier) ))))) ;) (if_statement "if (param_2 != 0 || param_1 != 10) {\n      do {\n        piVar6 = (int *)*piVar6;\n        if (piVar6 == (int *)0x0) {\n          return (char *)0x0;\n        }\n        bVar7 = local_14 != 0;\n        bVar1 = local_10 != 0;\n        bVar2 = local_14 != 0;\n        local_14 = local_14 + -1;\n        local_10 = local_10 + -1 + (uint)bVar7;\n      } while (bVar1 || bVar2);\n    }" if (parenthesized_expression "(param_2 != 0 || param_1 != 10)" ( (binary_expression "param_2 != 0 || param_1 != 10" (binary_expression "param_2 != 0" identifier != number_literal) || (binary_expression "param_1 != 10" identifier != number_literal)) )) (compound_statement "{\n      do {\n        piVar6 = (int *)*piVar6;\n        if (piVar6 == (int *)0x0) {\n          return (char *)0x0;\n        }\n        bVar7 = local_14 != 0;\n        bVar1 = local_10 != 0;\n        bVar2 = local_14 != 0;\n        local_14 = local_14 + -1;\n        local_10 = local_10 + -1 + (uint)bVar7;\n      } while (bVar1 || bVar2);\n    }" { (do_statement "do {\n        piVar6 = (int *)*piVar6;\n        if (piVar6 == (int *)0x0) {\n          return (char *)0x0;\n        }\n        bVar7 = local_14 != 0;\n        bVar1 = local_10 != 0;\n        bVar2 = local_14 != 0;\n        local_14 = local_14 + -1;\n        local_10 = local_10 + -1 + (uint)bVar7;\n      } while (bVar1 || bVar2);" do (compound_statement "{\n        piVar6 = (int *)*piVar6;\n        if (piVar6 == (int *)0x0) {\n          return (char *)0x0;\n        }\n        bVar7 = local_14 != 0;\n        bVar1 = local_10 != 0;\n        bVar2 = local_14 != 0;\n        local_14 = local_14 + -1;\n        local_10 = local_10 + -1 + (uint)bVar7;\n      }" { (expression_statement "piVar6 = (int *)*piVar6;" (assignment_expression "piVar6 = (int *)*piVar6" identifier = (cast_expression "(int *)*piVar6" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar6" * identifier))) ;) (if_statement "if (piVar6 == (int *)0x0) {\n          return (char *)0x0;\n        }" if (parenthesized_expression "(piVar6 == (int *)0x0)" ( (binary_expression "piVar6 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          return (char *)0x0;\n        }" { (return_statement "return (char *)0x0;" return (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal) ;) })) (expression_statement "bVar7 = local_14 != 0;" (assignment_expression "bVar7 = local_14 != 0" identifier = (binary_expression "local_14 != 0" identifier != number_literal)) ;) (expression_statement "bVar1 = local_10 != 0;" (assignment_expression "bVar1 = local_10 != 0" identifier = (binary_expression "local_10 != 0" identifier != number_literal)) ;) (expression_statement "bVar2 = local_14 != 0;" (assignment_expression "bVar2 = local_14 != 0" identifier = (binary_expression "local_14 != 0" identifier != number_literal)) ;) (expression_statement "local_14 = local_14 + -1;" (assignment_expression "local_14 = local_14 + -1" identifier = (binary_expression "local_14 + -1" identifier + number_literal)) ;) (expression_statement "local_10 = local_10 + -1 + (uint)bVar7;" (assignment_expression "local_10 = local_10 + -1 + (uint)bVar7" identifier = (binary_expression "local_10 + -1 + (uint)bVar7" (binary_expression "local_10 + -1" identifier + number_literal) + (cast_expression "(uint)bVar7" ( (type_descriptor "uint" type_identifier) ) identifier))) ;) }) while (parenthesized_expression "(bVar1 || bVar2)" ( (binary_expression "bVar1 || bVar2" identifier || identifier) )) ;) })) (expression_statement "pcVar5 = *(char **)piVar6[1];" (assignment_expression "pcVar5 = *(char **)piVar6[1]" identifier = (pointer_expression "*(char **)piVar6[1]" * (cast_expression "(char **)piVar6[1]" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (subscript_expression "piVar6[1]" identifier [ number_literal ])))) ;) }) (else_clause "else {\n    pcVar5 = *(char **)(unaff_EDI + 0xe7e15 + param_1 * 4);\n    if (pcVar5 == (char *)0x0) {\n      return (char *)0x0;\n    }\n  }" else (compound_statement "{\n    pcVar5 = *(char **)(unaff_EDI + 0xe7e15 + param_1 * 4);\n    if (pcVar5 == (char *)0x0) {\n      return (char *)0x0;\n    }\n  }" { (expression_statement "pcVar5 = *(char **)(unaff_EDI + 0xe7e15 + param_1 * 4);" (assignment_expression "pcVar5 = *(char **)(unaff_EDI + 0xe7e15 + param_1 * 4)" identifier = (pointer_expression "*(char **)(unaff_EDI + 0xe7e15 + param_1 * 4)" * (cast_expression "(char **)(unaff_EDI + 0xe7e15 + param_1 * 4)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(unaff_EDI + 0xe7e15 + param_1 * 4)" ( (binary_expression "unaff_EDI + 0xe7e15 + param_1 * 4" (binary_expression "unaff_EDI + 0xe7e15" identifier + number_literal) + (binary_expression "param_1 * 4" identifier * number_literal)) ))))) ;) (if_statement "if (pcVar5 == (char *)0x0) {\n      return (char *)0x0;\n    }" if (parenthesized_expression "(pcVar5 == (char *)0x0)" ( (binary_expression "pcVar5 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      return (char *)0x0;\n    }" { (return_statement "return (char *)0x0;" return (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal) ;) })) }))) (expression_statement "sVar4 = strlen(pcVar5);" (assignment_expression "sVar4 = strlen(pcVar5)" identifier = (call_expression "strlen(pcVar5)" identifier (argument_list "(pcVar5)" ( identifier )))) ;) (expression_statement "__dest = (char *)xmalloc(sVar4 + 1);" (assignment_expression "__dest = (char *)xmalloc(sVar4 + 1)" identifier = (cast_expression "(char *)xmalloc(sVar4 + 1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "xmalloc(sVar4 + 1)" identifier (argument_list "(sVar4 + 1)" ( (binary_expression "sVar4 + 1" identifier + number_literal) ))))) ;) (expression_statement "pcVar5 = strcpy(__dest,pcVar5);" (assignment_expression "pcVar5 = strcpy(__dest,pcVar5)" identifier = (call_expression "strcpy(__dest,pcVar5)" identifier (argument_list "(__dest,pcVar5)" ( identifier , identifier )))) ;) (return_statement "return pcVar5;" return identifier ;) })))
(translation_unit "/* WARNING: Unknown calling convention */\n\nchar * get_dollar_var_value(intmax_t ind)\n\n{\n  bool bVar1;\n  longlong lVar2;\n  uint uVar3;\n  size_t sVar4;\n  char *__dest;\n  char *pcVar5;\n  char *temp;\n  int *piVar6;\n  int unaff_EDI;\n  \n  uVar3 = __x86_get_pc_thunk_di();\n  if (-ind._4_4_ < (int)(uint)(uVar3 < (uint)ind)) {\n    piVar6 = *(int **)(unaff_EDI + 0xe4ce5);\n    if (piVar6 == (int *)0x0) {\n      return (char *)0x0;\n    }\n    lVar2 = ind + -0xb;\n    if (ind != 10) {\n      do {\n        piVar6 = (int *)*piVar6;\n        if (piVar6 == (int *)0x0) {\n          return (char *)0x0;\n        }\n        bVar1 = lVar2 != 0;\n        lVar2 = lVar2 + -1;\n      } while (bVar1);\n    }\n    pcVar5 = *(char **)piVar6[1];\n  }\n  else {\n    pcVar5 = *(char **)(unaff_EDI + 0xe7e15 + (uint)ind * 4);\n    if (pcVar5 == (char *)0x0) {\n      return (char *)0x0;\n    }\n  }\n  sVar4 = strlen(pcVar5);\n  __dest = (char *)xmalloc(sVar4 + 1);\n  pcVar5 = strcpy(__dest,pcVar5);\n  return pcVar5;\n}\n\n" comment (function_definition "char * get_dollar_var_value(intmax_t ind)\n\n{\n  bool bVar1;\n  longlong lVar2;\n  uint uVar3;\n  size_t sVar4;\n  char *__dest;\n  char *pcVar5;\n  char *temp;\n  int *piVar6;\n  int unaff_EDI;\n  \n  uVar3 = __x86_get_pc_thunk_di();\n  if (-ind._4_4_ < (int)(uint)(uVar3 < (uint)ind)) {\n    piVar6 = *(int **)(unaff_EDI + 0xe4ce5);\n    if (piVar6 == (int *)0x0) {\n      return (char *)0x0;\n    }\n    lVar2 = ind + -0xb;\n    if (ind != 10) {\n      do {\n        piVar6 = (int *)*piVar6;\n        if (piVar6 == (int *)0x0) {\n          return (char *)0x0;\n        }\n        bVar1 = lVar2 != 0;\n        lVar2 = lVar2 + -1;\n      } while (bVar1);\n    }\n    pcVar5 = *(char **)piVar6[1];\n  }\n  else {\n    pcVar5 = *(char **)(unaff_EDI + 0xe7e15 + (uint)ind * 4);\n    if (pcVar5 == (char *)0x0) {\n      return (char *)0x0;\n    }\n  }\n  sVar4 = strlen(pcVar5);\n  __dest = (char *)xmalloc(sVar4 + 1);\n  pcVar5 = strcpy(__dest,pcVar5);\n  return pcVar5;\n}" primitive_type (pointer_declarator "* get_dollar_var_value(intmax_t ind)" * (function_declarator "get_dollar_var_value(intmax_t ind)" identifier (parameter_list "(intmax_t ind)" ( (parameter_declaration "intmax_t ind" type_identifier identifier) )))) (compound_statement "{\n  bool bVar1;\n  longlong lVar2;\n  uint uVar3;\n  size_t sVar4;\n  char *__dest;\n  char *pcVar5;\n  char *temp;\n  int *piVar6;\n  int unaff_EDI;\n  \n  uVar3 = __x86_get_pc_thunk_di();\n  if (-ind._4_4_ < (int)(uint)(uVar3 < (uint)ind)) {\n    piVar6 = *(int **)(unaff_EDI + 0xe4ce5);\n    if (piVar6 == (int *)0x0) {\n      return (char *)0x0;\n    }\n    lVar2 = ind + -0xb;\n    if (ind != 10) {\n      do {\n        piVar6 = (int *)*piVar6;\n        if (piVar6 == (int *)0x0) {\n          return (char *)0x0;\n        }\n        bVar1 = lVar2 != 0;\n        lVar2 = lVar2 + -1;\n      } while (bVar1);\n    }\n    pcVar5 = *(char **)piVar6[1];\n  }\n  else {\n    pcVar5 = *(char **)(unaff_EDI + 0xe7e15 + (uint)ind * 4);\n    if (pcVar5 == (char *)0x0) {\n      return (char *)0x0;\n    }\n  }\n  sVar4 = strlen(pcVar5);\n  __dest = (char *)xmalloc(sVar4 + 1);\n  pcVar5 = strcpy(__dest,pcVar5);\n  return pcVar5;\n}" { (declaration "bool bVar1;" primitive_type identifier ;) (declaration "longlong lVar2;" type_identifier identifier ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "size_t sVar4;" primitive_type identifier ;) (declaration "char *__dest;" primitive_type (pointer_declarator "*__dest" * identifier) ;) (declaration "char *pcVar5;" primitive_type (pointer_declarator "*pcVar5" * identifier) ;) (declaration "char *temp;" primitive_type (pointer_declarator "*temp" * identifier) ;) (declaration "int *piVar6;" primitive_type (pointer_declarator "*piVar6" * identifier) ;) (declaration "int unaff_EDI;" primitive_type identifier ;) (expression_statement "uVar3 = __x86_get_pc_thunk_di();" (assignment_expression "uVar3 = __x86_get_pc_thunk_di()" identifier = (call_expression "__x86_get_pc_thunk_di()" identifier (argument_list "()" ( )))) ;) (if_statement "if (-ind._4_4_ < (int)(uint)(uVar3 < (uint)ind)) {\n    piVar6 = *(int **)(unaff_EDI + 0xe4ce5);\n    if (piVar6 == (int *)0x0) {\n      return (char *)0x0;\n    }\n    lVar2 = ind + -0xb;\n    if (ind != 10) {\n      do {\n        piVar6 = (int *)*piVar6;\n        if (piVar6 == (int *)0x0) {\n          return (char *)0x0;\n        }\n        bVar1 = lVar2 != 0;\n        lVar2 = lVar2 + -1;\n      } while (bVar1);\n    }\n    pcVar5 = *(char **)piVar6[1];\n  }\n  else {\n    pcVar5 = *(char **)(unaff_EDI + 0xe7e15 + (uint)ind * 4);\n    if (pcVar5 == (char *)0x0) {\n      return (char *)0x0;\n    }\n  }" if (parenthesized_expression "(-ind._4_4_ < (int)(uint)(uVar3 < (uint)ind))" ( (binary_expression "-ind._4_4_ < (int)(uint)(uVar3 < (uint)ind)" (unary_expression "-ind._4_4_" - (field_expression "ind._4_4_" identifier . field_identifier)) < (cast_expression "(int)(uint)(uVar3 < (uint)ind)" ( (type_descriptor "int" primitive_type) ) (call_expression "(uint)(uVar3 < (uint)ind)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar3 < (uint)ind)" ( (binary_expression "uVar3 < (uint)ind" identifier < (cast_expression "(uint)ind" ( (type_descriptor "uint" type_identifier) ) identifier)) ))))) )) (compound_statement "{\n    piVar6 = *(int **)(unaff_EDI + 0xe4ce5);\n    if (piVar6 == (int *)0x0) {\n      return (char *)0x0;\n    }\n    lVar2 = ind + -0xb;\n    if (ind != 10) {\n      do {\n        piVar6 = (int *)*piVar6;\n        if (piVar6 == (int *)0x0) {\n          return (char *)0x0;\n        }\n        bVar1 = lVar2 != 0;\n        lVar2 = lVar2 + -1;\n      } while (bVar1);\n    }\n    pcVar5 = *(char **)piVar6[1];\n  }" { (expression_statement "piVar6 = *(int **)(unaff_EDI + 0xe4ce5);" (assignment_expression "piVar6 = *(int **)(unaff_EDI + 0xe4ce5)" identifier = (pointer_expression "*(int **)(unaff_EDI + 0xe4ce5)" * (cast_expression "(int **)(unaff_EDI + 0xe4ce5)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(unaff_EDI + 0xe4ce5)" ( (binary_expression "unaff_EDI + 0xe4ce5" identifier + number_literal) ))))) ;) (if_statement "if (piVar6 == (int *)0x0) {\n      return (char *)0x0;\n    }" if (parenthesized_expression "(piVar6 == (int *)0x0)" ( (binary_expression "piVar6 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      return (char *)0x0;\n    }" { (return_statement "return (char *)0x0;" return (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal) ;) })) (expression_statement "lVar2 = ind + -0xb;" (assignment_expression "lVar2 = ind + -0xb" identifier = (binary_expression "ind + -0xb" identifier + number_literal)) ;) (if_statement "if (ind != 10) {\n      do {\n        piVar6 = (int *)*piVar6;\n        if (piVar6 == (int *)0x0) {\n          return (char *)0x0;\n        }\n        bVar1 = lVar2 != 0;\n        lVar2 = lVar2 + -1;\n      } while (bVar1);\n    }" if (parenthesized_expression "(ind != 10)" ( (binary_expression "ind != 10" identifier != number_literal) )) (compound_statement "{\n      do {\n        piVar6 = (int *)*piVar6;\n        if (piVar6 == (int *)0x0) {\n          return (char *)0x0;\n        }\n        bVar1 = lVar2 != 0;\n        lVar2 = lVar2 + -1;\n      } while (bVar1);\n    }" { (do_statement "do {\n        piVar6 = (int *)*piVar6;\n        if (piVar6 == (int *)0x0) {\n          return (char *)0x0;\n        }\n        bVar1 = lVar2 != 0;\n        lVar2 = lVar2 + -1;\n      } while (bVar1);" do (compound_statement "{\n        piVar6 = (int *)*piVar6;\n        if (piVar6 == (int *)0x0) {\n          return (char *)0x0;\n        }\n        bVar1 = lVar2 != 0;\n        lVar2 = lVar2 + -1;\n      }" { (expression_statement "piVar6 = (int *)*piVar6;" (assignment_expression "piVar6 = (int *)*piVar6" identifier = (cast_expression "(int *)*piVar6" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar6" * identifier))) ;) (if_statement "if (piVar6 == (int *)0x0) {\n          return (char *)0x0;\n        }" if (parenthesized_expression "(piVar6 == (int *)0x0)" ( (binary_expression "piVar6 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          return (char *)0x0;\n        }" { (return_statement "return (char *)0x0;" return (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal) ;) })) (expression_statement "bVar1 = lVar2 != 0;" (assignment_expression "bVar1 = lVar2 != 0" identifier = (binary_expression "lVar2 != 0" identifier != number_literal)) ;) (expression_statement "lVar2 = lVar2 + -1;" (assignment_expression "lVar2 = lVar2 + -1" identifier = (binary_expression "lVar2 + -1" identifier + number_literal)) ;) }) while (parenthesized_expression "(bVar1)" ( identifier )) ;) })) (expression_statement "pcVar5 = *(char **)piVar6[1];" (assignment_expression "pcVar5 = *(char **)piVar6[1]" identifier = (pointer_expression "*(char **)piVar6[1]" * (cast_expression "(char **)piVar6[1]" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (subscript_expression "piVar6[1]" identifier [ number_literal ])))) ;) }) (else_clause "else {\n    pcVar5 = *(char **)(unaff_EDI + 0xe7e15 + (uint)ind * 4);\n    if (pcVar5 == (char *)0x0) {\n      return (char *)0x0;\n    }\n  }" else (compound_statement "{\n    pcVar5 = *(char **)(unaff_EDI + 0xe7e15 + (uint)ind * 4);\n    if (pcVar5 == (char *)0x0) {\n      return (char *)0x0;\n    }\n  }" { (expression_statement "pcVar5 = *(char **)(unaff_EDI + 0xe7e15 + (uint)ind * 4);" (assignment_expression "pcVar5 = *(char **)(unaff_EDI + 0xe7e15 + (uint)ind * 4)" identifier = (pointer_expression "*(char **)(unaff_EDI + 0xe7e15 + (uint)ind * 4)" * (cast_expression "(char **)(unaff_EDI + 0xe7e15 + (uint)ind * 4)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(unaff_EDI + 0xe7e15 + (uint)ind * 4)" ( (binary_expression "unaff_EDI + 0xe7e15 + (uint)ind * 4" (binary_expression "unaff_EDI + 0xe7e15" identifier + number_literal) + (binary_expression "(uint)ind * 4" (cast_expression "(uint)ind" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) ))))) ;) (if_statement "if (pcVar5 == (char *)0x0) {\n      return (char *)0x0;\n    }" if (parenthesized_expression "(pcVar5 == (char *)0x0)" ( (binary_expression "pcVar5 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      return (char *)0x0;\n    }" { (return_statement "return (char *)0x0;" return (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal) ;) })) }))) (expression_statement "sVar4 = strlen(pcVar5);" (assignment_expression "sVar4 = strlen(pcVar5)" identifier = (call_expression "strlen(pcVar5)" identifier (argument_list "(pcVar5)" ( identifier )))) ;) (expression_statement "__dest = (char *)xmalloc(sVar4 + 1);" (assignment_expression "__dest = (char *)xmalloc(sVar4 + 1)" identifier = (cast_expression "(char *)xmalloc(sVar4 + 1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "xmalloc(sVar4 + 1)" identifier (argument_list "(sVar4 + 1)" ( (binary_expression "sVar4 + 1" identifier + number_literal) ))))) ;) (expression_statement "pcVar5 = strcpy(__dest,pcVar5);" (assignment_expression "pcVar5 = strcpy(__dest,pcVar5)" identifier = (call_expression "strcpy(__dest,pcVar5)" identifier (argument_list "(__dest,pcVar5)" ( identifier , identifier )))) ;) (return_statement "return pcVar5;" return identifier ;) })))
(translation_unit "char * get_dollar_var_value(uint param_1,int param_2)\n\n{\n  bool bVar1;\n  bool bVar2;\n  uint uVar3;\n  size_t sVar4;\n  char *__dest;\n  char *pcVar5;\n  int *piVar6;\n  int unaff_EDI;\n  bool bVar7;\n  int local_14;\n  int local_10;\n  \n  uVar3 = FUN_00042933();\n  if (-param_2 < (int)(uint)(uVar3 < param_1)) {\n    piVar6 = *(int **)(unaff_EDI + 0xe4ce5);\n    if (piVar6 == (int *)0x0) {\n      return (char *)0x0;\n    }\n    local_14 = param_1 - 0xb;\n    local_10 = param_2 + -1 + (uint)(10 < param_1);\n    if (param_2 != 0 || param_1 != 10) {\n      do {\n        piVar6 = (int *)*piVar6;\n        if (piVar6 == (int *)0x0) {\n          return (char *)0x0;\n        }\n        bVar7 = local_14 != 0;\n        bVar1 = local_10 != 0;\n        bVar2 = local_14 != 0;\n        local_14 = local_14 + -1;\n        local_10 = local_10 + -1 + (uint)bVar7;\n      } while (bVar1 || bVar2);\n    }\n    pcVar5 = *(char **)piVar6[1];\n  }\n  else {\n    pcVar5 = *(char **)(unaff_EDI + 0xe7e15 + param_1 * 4);\n    if (pcVar5 == (char *)0x0) {\n      return (char *)0x0;\n    }\n  }\n  sVar4 = strlen(pcVar5);\n  __dest = (char *)xmalloc(sVar4 + 1);\n  pcVar5 = strcpy(__dest,pcVar5);\n  return pcVar5;\n}\n\n" (function_definition "char * get_dollar_var_value(uint param_1,int param_2)\n\n{\n  bool bVar1;\n  bool bVar2;\n  uint uVar3;\n  size_t sVar4;\n  char *__dest;\n  char *pcVar5;\n  int *piVar6;\n  int unaff_EDI;\n  bool bVar7;\n  int local_14;\n  int local_10;\n  \n  uVar3 = FUN_00042933();\n  if (-param_2 < (int)(uint)(uVar3 < param_1)) {\n    piVar6 = *(int **)(unaff_EDI + 0xe4ce5);\n    if (piVar6 == (int *)0x0) {\n      return (char *)0x0;\n    }\n    local_14 = param_1 - 0xb;\n    local_10 = param_2 + -1 + (uint)(10 < param_1);\n    if (param_2 != 0 || param_1 != 10) {\n      do {\n        piVar6 = (int *)*piVar6;\n        if (piVar6 == (int *)0x0) {\n          return (char *)0x0;\n        }\n        bVar7 = local_14 != 0;\n        bVar1 = local_10 != 0;\n        bVar2 = local_14 != 0;\n        local_14 = local_14 + -1;\n        local_10 = local_10 + -1 + (uint)bVar7;\n      } while (bVar1 || bVar2);\n    }\n    pcVar5 = *(char **)piVar6[1];\n  }\n  else {\n    pcVar5 = *(char **)(unaff_EDI + 0xe7e15 + param_1 * 4);\n    if (pcVar5 == (char *)0x0) {\n      return (char *)0x0;\n    }\n  }\n  sVar4 = strlen(pcVar5);\n  __dest = (char *)xmalloc(sVar4 + 1);\n  pcVar5 = strcpy(__dest,pcVar5);\n  return pcVar5;\n}" primitive_type (pointer_declarator "* get_dollar_var_value(uint param_1,int param_2)" * (function_declarator "get_dollar_var_value(uint param_1,int param_2)" identifier (parameter_list "(uint param_1,int param_2)" ( (parameter_declaration "uint param_1" type_identifier identifier) , (parameter_declaration "int param_2" primitive_type identifier) )))) (compound_statement "{\n  bool bVar1;\n  bool bVar2;\n  uint uVar3;\n  size_t sVar4;\n  char *__dest;\n  char *pcVar5;\n  int *piVar6;\n  int unaff_EDI;\n  bool bVar7;\n  int local_14;\n  int local_10;\n  \n  uVar3 = FUN_00042933();\n  if (-param_2 < (int)(uint)(uVar3 < param_1)) {\n    piVar6 = *(int **)(unaff_EDI + 0xe4ce5);\n    if (piVar6 == (int *)0x0) {\n      return (char *)0x0;\n    }\n    local_14 = param_1 - 0xb;\n    local_10 = param_2 + -1 + (uint)(10 < param_1);\n    if (param_2 != 0 || param_1 != 10) {\n      do {\n        piVar6 = (int *)*piVar6;\n        if (piVar6 == (int *)0x0) {\n          return (char *)0x0;\n        }\n        bVar7 = local_14 != 0;\n        bVar1 = local_10 != 0;\n        bVar2 = local_14 != 0;\n        local_14 = local_14 + -1;\n        local_10 = local_10 + -1 + (uint)bVar7;\n      } while (bVar1 || bVar2);\n    }\n    pcVar5 = *(char **)piVar6[1];\n  }\n  else {\n    pcVar5 = *(char **)(unaff_EDI + 0xe7e15 + param_1 * 4);\n    if (pcVar5 == (char *)0x0) {\n      return (char *)0x0;\n    }\n  }\n  sVar4 = strlen(pcVar5);\n  __dest = (char *)xmalloc(sVar4 + 1);\n  pcVar5 = strcpy(__dest,pcVar5);\n  return pcVar5;\n}" { (declaration "bool bVar1;" primitive_type identifier ;) (declaration "bool bVar2;" primitive_type identifier ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "size_t sVar4;" primitive_type identifier ;) (declaration "char *__dest;" primitive_type (pointer_declarator "*__dest" * identifier) ;) (declaration "char *pcVar5;" primitive_type (pointer_declarator "*pcVar5" * identifier) ;) (declaration "int *piVar6;" primitive_type (pointer_declarator "*piVar6" * identifier) ;) (declaration "int unaff_EDI;" primitive_type identifier ;) (declaration "bool bVar7;" primitive_type identifier ;) (declaration "int local_14;" primitive_type identifier ;) (declaration "int local_10;" primitive_type identifier ;) (expression_statement "uVar3 = FUN_00042933();" (assignment_expression "uVar3 = FUN_00042933()" identifier = (call_expression "FUN_00042933()" identifier (argument_list "()" ( )))) ;) (if_statement "if (-param_2 < (int)(uint)(uVar3 < param_1)) {\n    piVar6 = *(int **)(unaff_EDI + 0xe4ce5);\n    if (piVar6 == (int *)0x0) {\n      return (char *)0x0;\n    }\n    local_14 = param_1 - 0xb;\n    local_10 = param_2 + -1 + (uint)(10 < param_1);\n    if (param_2 != 0 || param_1 != 10) {\n      do {\n        piVar6 = (int *)*piVar6;\n        if (piVar6 == (int *)0x0) {\n          return (char *)0x0;\n        }\n        bVar7 = local_14 != 0;\n        bVar1 = local_10 != 0;\n        bVar2 = local_14 != 0;\n        local_14 = local_14 + -1;\n        local_10 = local_10 + -1 + (uint)bVar7;\n      } while (bVar1 || bVar2);\n    }\n    pcVar5 = *(char **)piVar6[1];\n  }\n  else {\n    pcVar5 = *(char **)(unaff_EDI + 0xe7e15 + param_1 * 4);\n    if (pcVar5 == (char *)0x0) {\n      return (char *)0x0;\n    }\n  }" if (parenthesized_expression "(-param_2 < (int)(uint)(uVar3 < param_1))" ( (binary_expression "-param_2 < (int)(uint)(uVar3 < param_1)" (unary_expression "-param_2" - identifier) < (cast_expression "(int)(uint)(uVar3 < param_1)" ( (type_descriptor "int" primitive_type) ) (call_expression "(uint)(uVar3 < param_1)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar3 < param_1)" ( (binary_expression "uVar3 < param_1" identifier < identifier) ))))) )) (compound_statement "{\n    piVar6 = *(int **)(unaff_EDI + 0xe4ce5);\n    if (piVar6 == (int *)0x0) {\n      return (char *)0x0;\n    }\n    local_14 = param_1 - 0xb;\n    local_10 = param_2 + -1 + (uint)(10 < param_1);\n    if (param_2 != 0 || param_1 != 10) {\n      do {\n        piVar6 = (int *)*piVar6;\n        if (piVar6 == (int *)0x0) {\n          return (char *)0x0;\n        }\n        bVar7 = local_14 != 0;\n        bVar1 = local_10 != 0;\n        bVar2 = local_14 != 0;\n        local_14 = local_14 + -1;\n        local_10 = local_10 + -1 + (uint)bVar7;\n      } while (bVar1 || bVar2);\n    }\n    pcVar5 = *(char **)piVar6[1];\n  }" { (expression_statement "piVar6 = *(int **)(unaff_EDI + 0xe4ce5);" (assignment_expression "piVar6 = *(int **)(unaff_EDI + 0xe4ce5)" identifier = (pointer_expression "*(int **)(unaff_EDI + 0xe4ce5)" * (cast_expression "(int **)(unaff_EDI + 0xe4ce5)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(unaff_EDI + 0xe4ce5)" ( (binary_expression "unaff_EDI + 0xe4ce5" identifier + number_literal) ))))) ;) (if_statement "if (piVar6 == (int *)0x0) {\n      return (char *)0x0;\n    }" if (parenthesized_expression "(piVar6 == (int *)0x0)" ( (binary_expression "piVar6 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      return (char *)0x0;\n    }" { (return_statement "return (char *)0x0;" return (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal) ;) })) (expression_statement "local_14 = param_1 - 0xb;" (assignment_expression "local_14 = param_1 - 0xb" identifier = (binary_expression "param_1 - 0xb" identifier - number_literal)) ;) (expression_statement "local_10 = param_2 + -1 + (uint)(10 < param_1);" (assignment_expression "local_10 = param_2 + -1 + (uint)(10 < param_1)" identifier = (binary_expression "param_2 + -1 + (uint)(10 < param_1)" (binary_expression "param_2 + -1" identifier + number_literal) + (call_expression "(uint)(10 < param_1)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(10 < param_1)" ( (binary_expression "10 < param_1" number_literal < identifier) ))))) ;) (if_statement "if (param_2 != 0 || param_1 != 10) {\n      do {\n        piVar6 = (int *)*piVar6;\n        if (piVar6 == (int *)0x0) {\n          return (char *)0x0;\n        }\n        bVar7 = local_14 != 0;\n        bVar1 = local_10 != 0;\n        bVar2 = local_14 != 0;\n        local_14 = local_14 + -1;\n        local_10 = local_10 + -1 + (uint)bVar7;\n      } while (bVar1 || bVar2);\n    }" if (parenthesized_expression "(param_2 != 0 || param_1 != 10)" ( (binary_expression "param_2 != 0 || param_1 != 10" (binary_expression "param_2 != 0" identifier != number_literal) || (binary_expression "param_1 != 10" identifier != number_literal)) )) (compound_statement "{\n      do {\n        piVar6 = (int *)*piVar6;\n        if (piVar6 == (int *)0x0) {\n          return (char *)0x0;\n        }\n        bVar7 = local_14 != 0;\n        bVar1 = local_10 != 0;\n        bVar2 = local_14 != 0;\n        local_14 = local_14 + -1;\n        local_10 = local_10 + -1 + (uint)bVar7;\n      } while (bVar1 || bVar2);\n    }" { (do_statement "do {\n        piVar6 = (int *)*piVar6;\n        if (piVar6 == (int *)0x0) {\n          return (char *)0x0;\n        }\n        bVar7 = local_14 != 0;\n        bVar1 = local_10 != 0;\n        bVar2 = local_14 != 0;\n        local_14 = local_14 + -1;\n        local_10 = local_10 + -1 + (uint)bVar7;\n      } while (bVar1 || bVar2);" do (compound_statement "{\n        piVar6 = (int *)*piVar6;\n        if (piVar6 == (int *)0x0) {\n          return (char *)0x0;\n        }\n        bVar7 = local_14 != 0;\n        bVar1 = local_10 != 0;\n        bVar2 = local_14 != 0;\n        local_14 = local_14 + -1;\n        local_10 = local_10 + -1 + (uint)bVar7;\n      }" { (expression_statement "piVar6 = (int *)*piVar6;" (assignment_expression "piVar6 = (int *)*piVar6" identifier = (cast_expression "(int *)*piVar6" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar6" * identifier))) ;) (if_statement "if (piVar6 == (int *)0x0) {\n          return (char *)0x0;\n        }" if (parenthesized_expression "(piVar6 == (int *)0x0)" ( (binary_expression "piVar6 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          return (char *)0x0;\n        }" { (return_statement "return (char *)0x0;" return (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal) ;) })) (expression_statement "bVar7 = local_14 != 0;" (assignment_expression "bVar7 = local_14 != 0" identifier = (binary_expression "local_14 != 0" identifier != number_literal)) ;) (expression_statement "bVar1 = local_10 != 0;" (assignment_expression "bVar1 = local_10 != 0" identifier = (binary_expression "local_10 != 0" identifier != number_literal)) ;) (expression_statement "bVar2 = local_14 != 0;" (assignment_expression "bVar2 = local_14 != 0" identifier = (binary_expression "local_14 != 0" identifier != number_literal)) ;) (expression_statement "local_14 = local_14 + -1;" (assignment_expression "local_14 = local_14 + -1" identifier = (binary_expression "local_14 + -1" identifier + number_literal)) ;) (expression_statement "local_10 = local_10 + -1 + (uint)bVar7;" (assignment_expression "local_10 = local_10 + -1 + (uint)bVar7" identifier = (binary_expression "local_10 + -1 + (uint)bVar7" (binary_expression "local_10 + -1" identifier + number_literal) + (cast_expression "(uint)bVar7" ( (type_descriptor "uint" type_identifier) ) identifier))) ;) }) while (parenthesized_expression "(bVar1 || bVar2)" ( (binary_expression "bVar1 || bVar2" identifier || identifier) )) ;) })) (expression_statement "pcVar5 = *(char **)piVar6[1];" (assignment_expression "pcVar5 = *(char **)piVar6[1]" identifier = (pointer_expression "*(char **)piVar6[1]" * (cast_expression "(char **)piVar6[1]" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (subscript_expression "piVar6[1]" identifier [ number_literal ])))) ;) }) (else_clause "else {\n    pcVar5 = *(char **)(unaff_EDI + 0xe7e15 + param_1 * 4);\n    if (pcVar5 == (char *)0x0) {\n      return (char *)0x0;\n    }\n  }" else (compound_statement "{\n    pcVar5 = *(char **)(unaff_EDI + 0xe7e15 + param_1 * 4);\n    if (pcVar5 == (char *)0x0) {\n      return (char *)0x0;\n    }\n  }" { (expression_statement "pcVar5 = *(char **)(unaff_EDI + 0xe7e15 + param_1 * 4);" (assignment_expression "pcVar5 = *(char **)(unaff_EDI + 0xe7e15 + param_1 * 4)" identifier = (pointer_expression "*(char **)(unaff_EDI + 0xe7e15 + param_1 * 4)" * (cast_expression "(char **)(unaff_EDI + 0xe7e15 + param_1 * 4)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(unaff_EDI + 0xe7e15 + param_1 * 4)" ( (binary_expression "unaff_EDI + 0xe7e15 + param_1 * 4" (binary_expression "unaff_EDI + 0xe7e15" identifier + number_literal) + (binary_expression "param_1 * 4" identifier * number_literal)) ))))) ;) (if_statement "if (pcVar5 == (char *)0x0) {\n      return (char *)0x0;\n    }" if (parenthesized_expression "(pcVar5 == (char *)0x0)" ( (binary_expression "pcVar5 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      return (char *)0x0;\n    }" { (return_statement "return (char *)0x0;" return (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal) ;) })) }))) (expression_statement "sVar4 = strlen(pcVar5);" (assignment_expression "sVar4 = strlen(pcVar5)" identifier = (call_expression "strlen(pcVar5)" identifier (argument_list "(pcVar5)" ( identifier )))) ;) (expression_statement "__dest = (char *)xmalloc(sVar4 + 1);" (assignment_expression "__dest = (char *)xmalloc(sVar4 + 1)" identifier = (cast_expression "(char *)xmalloc(sVar4 + 1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "xmalloc(sVar4 + 1)" identifier (argument_list "(sVar4 + 1)" ( (binary_expression "sVar4 + 1" identifier + number_literal) ))))) ;) (expression_statement "pcVar5 = strcpy(__dest,pcVar5);" (assignment_expression "pcVar5 = strcpy(__dest,pcVar5)" identifier = (call_expression "strcpy(__dest,pcVar5)" identifier (argument_list "(__dest,pcVar5)" ( identifier , identifier )))) ;) (return_statement "return pcVar5;" return identifier ;) })))
(translation_unit (function_definition TYPE (pointer_declarator * (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) )))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (unary_expression - IDENT) < (cast_expression ( (type_descriptor TYPE) ) (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT < IDENT) ))))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (return_statement return (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + LIT) + (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression LIT < IDENT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT != LIT) || (binary_expression IDENT != LIT)) )) (compound_statement { (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (return_statement return (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT != LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT != LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT != LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + LIT) + (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) }) while (parenthesized_expression ( (binary_expression IDENT || IDENT) )) ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (subscript_expression IDENT [ LIT ])))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) + (binary_expression IDENT * LIT)) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (return_statement return (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT) ;) })) }))) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT )))) ;) (return_statement return IDENT ;) })))
(function_definition "char * get_dollar_var_value(uint param_1,int param_2)\n\n{\n  bool bVar1;\n  bool bVar2;\n  uint uVar3;\n  size_t sVar4;\n  char *__dest;\n  char *pcVar5;\n  int *piVar6;\n  int unaff_EDI;\n  bool bVar7;\n  int local_14;\n  int local_10;\n  \n  uVar3 = FUN_00042933();\n  if (-param_2 < (int)(uint)(uVar3 < param_1)) {\n    piVar6 = *(int **)(unaff_EDI + 0xe4ce5);\n    if (piVar6 == (int *)0x0) {\n      return (char *)0x0;\n    }\n    local_14 = param_1 - 0xb;\n    local_10 = param_2 + -1 + (uint)(10 < param_1);\n    if (param_2 != 0 || param_1 != 10) {\n      do {\n        piVar6 = (int *)*piVar6;\n        if (piVar6 == (int *)0x0) {\n          return (char *)0x0;\n        }\n        bVar7 = local_14 != 0;\n        bVar1 = local_10 != 0;\n        bVar2 = local_14 != 0;\n        local_14 = local_14 + -1;\n        local_10 = local_10 + -1 + (uint)bVar7;\n      } while (bVar1 || bVar2);\n    }\n    pcVar5 = *(char **)piVar6[1];\n  }\n  else {\n    pcVar5 = *(char **)(unaff_EDI + 0xe7e15 + param_1 * 4);\n    if (pcVar5 == (char *)0x0) {\n      return (char *)0x0;\n    }\n  }\n  sVar4 = strlen(pcVar5);\n  __dest = (char *)xmalloc(sVar4 + 1);\n  pcVar5 = strcpy(__dest,pcVar5);\n  return pcVar5;\n}" (primitive_type "char") (pointer_declarator "* get_dollar_var_value(uint param_1,int param_2)" (* "*") (function_declarator "get_dollar_var_value(uint param_1,int param_2)" (identifier "get_dollar_var_value") (parameter_list "(uint param_1,int param_2)" (( "(") (parameter_declaration "uint param_1" (type_identifier "uint") (identifier "param_1")) (, ",") (parameter_declaration "int param_2" (primitive_type "int") (identifier "param_2")) () ")")))) (compound_statement "{\n  bool bVar1;\n  bool bVar2;\n  uint uVar3;\n  size_t sVar4;\n  char *__dest;\n  char *pcVar5;\n  int *piVar6;\n  int unaff_EDI;\n  bool bVar7;\n  int local_14;\n  int local_10;\n  \n  uVar3 = FUN_00042933();\n  if (-param_2 < (int)(uint)(uVar3 < param_1)) {\n    piVar6 = *(int **)(unaff_EDI + 0xe4ce5);\n    if (piVar6 == (int *)0x0) {\n      return (char *)0x0;\n    }\n    local_14 = param_1 - 0xb;\n    local_10 = param_2 + -1 + (uint)(10 < param_1);\n    if (param_2 != 0 || param_1 != 10) {\n      do {\n        piVar6 = (int *)*piVar6;\n        if (piVar6 == (int *)0x0) {\n          return (char *)0x0;\n        }\n        bVar7 = local_14 != 0;\n        bVar1 = local_10 != 0;\n        bVar2 = local_14 != 0;\n        local_14 = local_14 + -1;\n        local_10 = local_10 + -1 + (uint)bVar7;\n      } while (bVar1 || bVar2);\n    }\n    pcVar5 = *(char **)piVar6[1];\n  }\n  else {\n    pcVar5 = *(char **)(unaff_EDI + 0xe7e15 + param_1 * 4);\n    if (pcVar5 == (char *)0x0) {\n      return (char *)0x0;\n    }\n  }\n  sVar4 = strlen(pcVar5);\n  __dest = (char *)xmalloc(sVar4 + 1);\n  pcVar5 = strcpy(__dest,pcVar5);\n  return pcVar5;\n}" ({ "{") (declaration "bool bVar1;" (primitive_type "bool") (identifier "bVar1") (; ";")) (declaration "bool bVar2;" (primitive_type "bool") (identifier "bVar2") (; ";")) (declaration "uint uVar3;" (type_identifier "uint") (identifier "uVar3") (; ";")) (declaration "size_t sVar4;" (primitive_type "size_t") (identifier "sVar4") (; ";")) (declaration "char *__dest;" (primitive_type "char") (pointer_declarator "*__dest" (* "*") (identifier "__dest")) (; ";")) (declaration "char *pcVar5;" (primitive_type "char") (pointer_declarator "*pcVar5" (* "*") (identifier "pcVar5")) (; ";")) (declaration "int *piVar6;" (primitive_type "int") (pointer_declarator "*piVar6" (* "*") (identifier "piVar6")) (; ";")) (declaration "int unaff_EDI;" (primitive_type "int") (identifier "unaff_EDI") (; ";")) (declaration "bool bVar7;" (primitive_type "bool") (identifier "bVar7") (; ";")) (declaration "int local_14;" (primitive_type "int") (identifier "local_14") (; ";")) (declaration "int local_10;" (primitive_type "int") (identifier "local_10") (; ";")) (expression_statement "uVar3 = FUN_00042933();" (assignment_expression "uVar3 = FUN_00042933()" (identifier "uVar3") (= "=") (call_expression "FUN_00042933()" (identifier "FUN_00042933") (argument_list "()" (( "(") () ")")))) (; ";")) (if_statement "if (-param_2 < (int)(uint)(uVar3 < param_1)) {\n    piVar6 = *(int **)(unaff_EDI + 0xe4ce5);\n    if (piVar6 == (int *)0x0) {\n      return (char *)0x0;\n    }\n    local_14 = param_1 - 0xb;\n    local_10 = param_2 + -1 + (uint)(10 < param_1);\n    if (param_2 != 0 || param_1 != 10) {\n      do {\n        piVar6 = (int *)*piVar6;\n        if (piVar6 == (int *)0x0) {\n          return (char *)0x0;\n        }\n        bVar7 = local_14 != 0;\n        bVar1 = local_10 != 0;\n        bVar2 = local_14 != 0;\n        local_14 = local_14 + -1;\n        local_10 = local_10 + -1 + (uint)bVar7;\n      } while (bVar1 || bVar2);\n    }\n    pcVar5 = *(char **)piVar6[1];\n  }\n  else {\n    pcVar5 = *(char **)(unaff_EDI + 0xe7e15 + param_1 * 4);\n    if (pcVar5 == (char *)0x0) {\n      return (char *)0x0;\n    }\n  }" (if "if") (parenthesized_expression "(-param_2 < (int)(uint)(uVar3 < param_1))" (( "(") (binary_expression "-param_2 < (int)(uint)(uVar3 < param_1)" (unary_expression "-param_2" (- "-") (identifier "param_2")) (< "<") (cast_expression "(int)(uint)(uVar3 < param_1)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (call_expression "(uint)(uVar3 < param_1)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(uVar3 < param_1)" (( "(") (binary_expression "uVar3 < param_1" (identifier "uVar3") (< "<") (identifier "param_1")) () ")"))))) () ")")) (compound_statement "{\n    piVar6 = *(int **)(unaff_EDI + 0xe4ce5);\n    if (piVar6 == (int *)0x0) {\n      return (char *)0x0;\n    }\n    local_14 = param_1 - 0xb;\n    local_10 = param_2 + -1 + (uint)(10 < param_1);\n    if (param_2 != 0 || param_1 != 10) {\n      do {\n        piVar6 = (int *)*piVar6;\n        if (piVar6 == (int *)0x0) {\n          return (char *)0x0;\n        }\n        bVar7 = local_14 != 0;\n        bVar1 = local_10 != 0;\n        bVar2 = local_14 != 0;\n        local_14 = local_14 + -1;\n        local_10 = local_10 + -1 + (uint)bVar7;\n      } while (bVar1 || bVar2);\n    }\n    pcVar5 = *(char **)piVar6[1];\n  }" ({ "{") (expression_statement "piVar6 = *(int **)(unaff_EDI + 0xe4ce5);" (assignment_expression "piVar6 = *(int **)(unaff_EDI + 0xe4ce5)" (identifier "piVar6") (= "=") (pointer_expression "*(int **)(unaff_EDI + 0xe4ce5)" (* "*") (cast_expression "(int **)(unaff_EDI + 0xe4ce5)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(unaff_EDI + 0xe4ce5)" (( "(") (binary_expression "unaff_EDI + 0xe4ce5" (identifier "unaff_EDI") (+ "+") (number_literal "0xe4ce5")) () ")"))))) (; ";")) (if_statement "if (piVar6 == (int *)0x0) {\n      return (char *)0x0;\n    }" (if "if") (parenthesized_expression "(piVar6 == (int *)0x0)" (( "(") (binary_expression "piVar6 == (int *)0x0" (identifier "piVar6") (== "==") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n      return (char *)0x0;\n    }" ({ "{") (return_statement "return (char *)0x0;" (return "return") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0")) (; ";")) (} "}"))) (expression_statement "local_14 = param_1 - 0xb;" (assignment_expression "local_14 = param_1 - 0xb" (identifier "local_14") (= "=") (binary_expression "param_1 - 0xb" (identifier "param_1") (- "-") (number_literal "0xb"))) (; ";")) (expression_statement "local_10 = param_2 + -1 + (uint)(10 < param_1);" (assignment_expression "local_10 = param_2 + -1 + (uint)(10 < param_1)" (identifier "local_10") (= "=") (binary_expression "param_2 + -1 + (uint)(10 < param_1)" (binary_expression "param_2 + -1" (identifier "param_2") (+ "+") (number_literal "-1")) (+ "+") (call_expression "(uint)(10 < param_1)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(10 < param_1)" (( "(") (binary_expression "10 < param_1" (number_literal "10") (< "<") (identifier "param_1")) () ")"))))) (; ";")) (if_statement "if (param_2 != 0 || param_1 != 10) {\n      do {\n        piVar6 = (int *)*piVar6;\n        if (piVar6 == (int *)0x0) {\n          return (char *)0x0;\n        }\n        bVar7 = local_14 != 0;\n        bVar1 = local_10 != 0;\n        bVar2 = local_14 != 0;\n        local_14 = local_14 + -1;\n        local_10 = local_10 + -1 + (uint)bVar7;\n      } while (bVar1 || bVar2);\n    }" (if "if") (parenthesized_expression "(param_2 != 0 || param_1 != 10)" (( "(") (binary_expression "param_2 != 0 || param_1 != 10" (binary_expression "param_2 != 0" (identifier "param_2") (!= "!=") (number_literal "0")) (|| "||") (binary_expression "param_1 != 10" (identifier "param_1") (!= "!=") (number_literal "10"))) () ")")) (compound_statement "{\n      do {\n        piVar6 = (int *)*piVar6;\n        if (piVar6 == (int *)0x0) {\n          return (char *)0x0;\n        }\n        bVar7 = local_14 != 0;\n        bVar1 = local_10 != 0;\n        bVar2 = local_14 != 0;\n        local_14 = local_14 + -1;\n        local_10 = local_10 + -1 + (uint)bVar7;\n      } while (bVar1 || bVar2);\n    }" ({ "{") (do_statement "do {\n        piVar6 = (int *)*piVar6;\n        if (piVar6 == (int *)0x0) {\n          return (char *)0x0;\n        }\n        bVar7 = local_14 != 0;\n        bVar1 = local_10 != 0;\n        bVar2 = local_14 != 0;\n        local_14 = local_14 + -1;\n        local_10 = local_10 + -1 + (uint)bVar7;\n      } while (bVar1 || bVar2);" (do "do") (compound_statement "{\n        piVar6 = (int *)*piVar6;\n        if (piVar6 == (int *)0x0) {\n          return (char *)0x0;\n        }\n        bVar7 = local_14 != 0;\n        bVar1 = local_10 != 0;\n        bVar2 = local_14 != 0;\n        local_14 = local_14 + -1;\n        local_10 = local_10 + -1 + (uint)bVar7;\n      }" ({ "{") (expression_statement "piVar6 = (int *)*piVar6;" (assignment_expression "piVar6 = (int *)*piVar6" (identifier "piVar6") (= "=") (cast_expression "(int *)*piVar6" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*piVar6" (* "*") (identifier "piVar6")))) (; ";")) (if_statement "if (piVar6 == (int *)0x0) {\n          return (char *)0x0;\n        }" (if "if") (parenthesized_expression "(piVar6 == (int *)0x0)" (( "(") (binary_expression "piVar6 == (int *)0x0" (identifier "piVar6") (== "==") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n          return (char *)0x0;\n        }" ({ "{") (return_statement "return (char *)0x0;" (return "return") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0")) (; ";")) (} "}"))) (expression_statement "bVar7 = local_14 != 0;" (assignment_expression "bVar7 = local_14 != 0" (identifier "bVar7") (= "=") (binary_expression "local_14 != 0" (identifier "local_14") (!= "!=") (number_literal "0"))) (; ";")) (expression_statement "bVar1 = local_10 != 0;" (assignment_expression "bVar1 = local_10 != 0" (identifier "bVar1") (= "=") (binary_expression "local_10 != 0" (identifier "local_10") (!= "!=") (number_literal "0"))) (; ";")) (expression_statement "bVar2 = local_14 != 0;" (assignment_expression "bVar2 = local_14 != 0" (identifier "bVar2") (= "=") (binary_expression "local_14 != 0" (identifier "local_14") (!= "!=") (number_literal "0"))) (; ";")) (expression_statement "local_14 = local_14 + -1;" (assignment_expression "local_14 = local_14 + -1" (identifier "local_14") (= "=") (binary_expression "local_14 + -1" (identifier "local_14") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "local_10 = local_10 + -1 + (uint)bVar7;" (assignment_expression "local_10 = local_10 + -1 + (uint)bVar7" (identifier "local_10") (= "=") (binary_expression "local_10 + -1 + (uint)bVar7" (binary_expression "local_10 + -1" (identifier "local_10") (+ "+") (number_literal "-1")) (+ "+") (cast_expression "(uint)bVar7" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar7")))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(bVar1 || bVar2)" (( "(") (binary_expression "bVar1 || bVar2" (identifier "bVar1") (|| "||") (identifier "bVar2")) () ")")) (; ";")) (} "}"))) (expression_statement "pcVar5 = *(char **)piVar6[1];" (assignment_expression "pcVar5 = *(char **)piVar6[1]" (identifier "pcVar5") (= "=") (pointer_expression "*(char **)piVar6[1]" (* "*") (cast_expression "(char **)piVar6[1]" (( "(") (type_descriptor "char **" (primitive_type "char") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (subscript_expression "piVar6[1]" (identifier "piVar6") ([ "[") (number_literal "1") (] "]"))))) (; ";")) (} "}")) (else_clause "else {\n    pcVar5 = *(char **)(unaff_EDI + 0xe7e15 + param_1 * 4);\n    if (pcVar5 == (char *)0x0) {\n      return (char *)0x0;\n    }\n  }" (else "else") (compound_statement "{\n    pcVar5 = *(char **)(unaff_EDI + 0xe7e15 + param_1 * 4);\n    if (pcVar5 == (char *)0x0) {\n      return (char *)0x0;\n    }\n  }" ({ "{") (expression_statement "pcVar5 = *(char **)(unaff_EDI + 0xe7e15 + param_1 * 4);" (assignment_expression "pcVar5 = *(char **)(unaff_EDI + 0xe7e15 + param_1 * 4)" (identifier "pcVar5") (= "=") (pointer_expression "*(char **)(unaff_EDI + 0xe7e15 + param_1 * 4)" (* "*") (cast_expression "(char **)(unaff_EDI + 0xe7e15 + param_1 * 4)" (( "(") (type_descriptor "char **" (primitive_type "char") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(unaff_EDI + 0xe7e15 + param_1 * 4)" (( "(") (binary_expression "unaff_EDI + 0xe7e15 + param_1 * 4" (binary_expression "unaff_EDI + 0xe7e15" (identifier "unaff_EDI") (+ "+") (number_literal "0xe7e15")) (+ "+") (binary_expression "param_1 * 4" (identifier "param_1") (* "*") (number_literal "4"))) () ")"))))) (; ";")) (if_statement "if (pcVar5 == (char *)0x0) {\n      return (char *)0x0;\n    }" (if "if") (parenthesized_expression "(pcVar5 == (char *)0x0)" (( "(") (binary_expression "pcVar5 == (char *)0x0" (identifier "pcVar5") (== "==") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n      return (char *)0x0;\n    }" ({ "{") (return_statement "return (char *)0x0;" (return "return") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0")) (; ";")) (} "}"))) (} "}")))) (expression_statement "sVar4 = strlen(pcVar5);" (assignment_expression "sVar4 = strlen(pcVar5)" (identifier "sVar4") (= "=") (call_expression "strlen(pcVar5)" (identifier "strlen") (argument_list "(pcVar5)" (( "(") (identifier "pcVar5") () ")")))) (; ";")) (expression_statement "__dest = (char *)xmalloc(sVar4 + 1);" (assignment_expression "__dest = (char *)xmalloc(sVar4 + 1)" (identifier "__dest") (= "=") (cast_expression "(char *)xmalloc(sVar4 + 1)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "xmalloc(sVar4 + 1)" (identifier "xmalloc") (argument_list "(sVar4 + 1)" (( "(") (binary_expression "sVar4 + 1" (identifier "sVar4") (+ "+") (number_literal "1")) () ")"))))) (; ";")) (expression_statement "pcVar5 = strcpy(__dest,pcVar5);" (assignment_expression "pcVar5 = strcpy(__dest,pcVar5)" (identifier "pcVar5") (= "=") (call_expression "strcpy(__dest,pcVar5)" (identifier "strcpy") (argument_list "(__dest,pcVar5)" (( "(") (identifier "__dest") (, ",") (identifier "pcVar5") () ")")))) (; ";")) (return_statement "return pcVar5;" (return "return") (identifier "pcVar5") (; ";")) (} "}")))

/* WARNING: Unknown calling convention */

char * function_1(type_1 var_5)

{
  bool bVar1;
  type_2 var_6;
  type_3 var_2;
  size_t var_10;
  char *__dest;
  char *var_7;
  char *temp;
  int *var_4;
  int var_3;
  
  var_2 = var_1();
  if (-var_5._4_4_ < (int)(type_3)(var_2 < (type_3)var_5)) {
    var_4 = *(int **)(var_3 + 0xe4ce5);
    if (var_4 == (int *)0x0) {
      return (char *)0x0;
    }
    var_6 = var_5 + -0xb;
    if (var_5 != 10) {
      do {
        var_4 = (int *)*var_4;
        if (var_4 == (int *)0x0) {
          return (char *)0x0;
        }
        bVar1 = var_6 != 0;
        var_6 = var_6 + -1;
      } while (bVar1);
    }
    var_7 = *(char **)var_4[1];
  }
  else {
    var_7 = *(char **)(var_3 + 0xe7e15 + (type_3)var_5 * 4);
    if (var_7 == (char *)0x0) {
      return (char *)0x0;
    }
  }
  var_10 = var_8(var_7);
  __dest = (char *)var_9(var_10 + 1);
  var_7 = var_11(__dest,var_7);
  return var_7;
}


(translation_unit (function_definition type: (primitive_type) declarator: (pointer_declarator declarator: (function_declarator declarator: (identifier) parameters: (parameter_list (parameter_declaration type: (type_identifier) declarator: (identifier)) (parameter_declaration type: (primitive_type) declarator: (identifier))))) body: (compound_statement (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list)))) (if_statement condition: (parenthesized_expression (binary_expression left: (unary_expression argument: (identifier)) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (identifier) right: (identifier))))))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (compound_statement (return_statement (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (number_literal) right: (identifier))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (binary_expression left: (identifier) right: (number_literal)))) consequence: (compound_statement (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (pointer_expression argument: (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (compound_statement (return_statement (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)))))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (subscript_expression argument: (identifier) index: (number_literal))))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (binary_expression left: (identifier) right: (number_literal)))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (compound_statement (return_statement (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal)))))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (call_expression function: (identifier) arguments: (argument_list (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier))))) (return_statement (identifier)))))

char * MASKED(uint param_1,int param_2)

{
  bool bVar1;
  bool bVar2;
  uint uVar3;
  size_t sVar4;
  char *__dest;
  char *pcVar5;
  int *piVar6;
  int unaff_EDI;
  bool bVar7;
  int local_14;
  int local_10;
  
  uVar3 = FUN_00042933();
  if (-param_2 < (int)(uint)(uVar3 < param_1)) {
    piVar6 = *(int **)(unaff_EDI + 0xe4ce5);
    if (piVar6 == (int *)0x0) {
      return (char *)0x0;
    }
    local_14 = param_1 - 0xb;
    local_10 = param_2 + -1 + (uint)(10 < param_1);
    if (param_2 != 0 || param_1 != 10) {
      do {
        piVar6 = (int *)*piVar6;
        if (piVar6 == (int *)0x0) {
          return (char *)0x0;
        }
        bVar7 = local_14 != 0;
        bVar1 = local_10 != 0;
        bVar2 = local_14 != 0;
        local_14 = local_14 + -1;
        local_10 = local_10 + -1 + (uint)bVar7;
      } while (bVar1 || bVar2);
    }
    pcVar5 = *(char **)piVar6[1];
  }
  else {
    pcVar5 = *(char **)(unaff_EDI + 0xe7e15 + param_1 * 4);
    if (pcVar5 == (char *)0x0) {
      return (char *)0x0;
    }
  }
  sVar4 = strlen(pcVar5);
  __dest = (char *)xmalloc(sVar4 + 1);
  pcVar5 = strcpy(__dest,pcVar5);
  return pcVar5;
}

