
void unescape_single_char(char *str,char chr)

{
  char cVar1;
  char cVar2;
  char cVar3;
  char *pcVar4;
  
  cVar1 = "0123456789ABCDEF"[chr >> 4];
  cVar2 = "0123456789ABCDEF"[(byte)chr & 0xf];
  cVar3 = *str;
  pcVar4 = str;
  while (cVar3 != '\0') {
    if (((cVar3 == '%') && (pcVar4[1] == cVar1)) && (pcVar4[2] == cVar2)) {
      pcVar4 = pcVar4 + 2;
      cVar3 = chr;
    }
    *str = cVar3;
    str = str + 1;
    cVar3 = pcVar4[1];
    pcVar4 = pcVar4 + 1;
  }
  *str = '\0';
  return;
}



void FUN_0013569e(char *param_1,uint param_2)

{
  char cVar1;
  char cVar2;
  char cVar3;
  char *pcVar4;
  
  cVar1 = "0123456789ABCDEF"[(char)((char)param_2 >> 4)];
  cVar2 = "0123456789ABCDEF"[param_2 & 0xf];
  cVar3 = *param_1;
  pcVar4 = param_1;
  while (cVar3 != '\0') {
    if (((cVar3 == '%') && (pcVar4[1] == cVar1)) && (pcVar4[2] == cVar2)) {
      pcVar4 = pcVar4 + 2;
      cVar3 = (char)param_2;
    }
    *param_1 = cVar3;
    param_1 = param_1 + 1;
    cVar3 = pcVar4[1];
    pcVar4 = pcVar4 + 1;
  }
  *param_1 = '\0';
  return;
}


MOV ECX,ESI
LEA RDX,[0x157cd0]
MOV EAX,ESI
SAR AL,0x4
MOVSX RAX,AL
MOVZX R8D,byte ptr [RDX + RAX*0x1]
AND ESI,0xf
MOVZX R9D,byte ptr [RDX + RSI*0x1]
MOVZX EAX,byte ptr [RDI]
TEST AL,AL
JZ 0x001356f8
MOV RDX,RDI
MOV ESI,ECX
JMP 0x001356e0
MOV byte ptr [RDX],AL
LEA RCX,[RDI + 0x1]
ADD RDX,0x1
MOVZX EAX,byte ptr [RDI + 0x1]
TEST AL,AL
JZ 0x001356fb
MOV RDI,RCX
CMP AL,0x25
JNZ 0x001356cb
CMP byte ptr [RDI + 0x1],R8B
JNZ 0x001356cb
CMP byte ptr [RDI + 0x2],R9B
JNZ 0x001356cb
ADD RDI,0x2
MOV EAX,ESI
JMP 0x001356cb
MOV RDX,RDI
MOV byte ptr [RDX],0x0
RET
(translation_unit "void FUN_0013569e(char *param_1,uint param_2)\n\n{\n  char cVar1;\n  char cVar2;\n  char cVar3;\n  char *pcVar4;\n  \n  cVar1 = "0123456789ABCDEF"[(char)((char)param_2 >> 4)];\n  cVar2 = "0123456789ABCDEF"[param_2 & 0xf];\n  cVar3 = *param_1;\n  pcVar4 = param_1;\n  while (cVar3 != '\0') {\n    if (((cVar3 == '%') && (pcVar4[1] == cVar1)) && (pcVar4[2] == cVar2)) {\n      pcVar4 = pcVar4 + 2;\n      cVar3 = (char)param_2;\n    }\n    *param_1 = cVar3;\n    param_1 = param_1 + 1;\n    cVar3 = pcVar4[1];\n    pcVar4 = pcVar4 + 1;\n  }\n  *param_1 = '\0';\n  return;\n}\n\n" (function_definition "void FUN_0013569e(char *param_1,uint param_2)\n\n{\n  char cVar1;\n  char cVar2;\n  char cVar3;\n  char *pcVar4;\n  \n  cVar1 = "0123456789ABCDEF"[(char)((char)param_2 >> 4)];\n  cVar2 = "0123456789ABCDEF"[param_2 & 0xf];\n  cVar3 = *param_1;\n  pcVar4 = param_1;\n  while (cVar3 != '\0') {\n    if (((cVar3 == '%') && (pcVar4[1] == cVar1)) && (pcVar4[2] == cVar2)) {\n      pcVar4 = pcVar4 + 2;\n      cVar3 = (char)param_2;\n    }\n    *param_1 = cVar3;\n    param_1 = param_1 + 1;\n    cVar3 = pcVar4[1];\n    pcVar4 = pcVar4 + 1;\n  }\n  *param_1 = '\0';\n  return;\n}" primitive_type (function_declarator "FUN_0013569e(char *param_1,uint param_2)" identifier (parameter_list "(char *param_1,uint param_2)" ( (parameter_declaration "char *param_1" primitive_type (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "uint param_2" type_identifier identifier) ))) (compound_statement "{\n  char cVar1;\n  char cVar2;\n  char cVar3;\n  char *pcVar4;\n  \n  cVar1 = "0123456789ABCDEF"[(char)((char)param_2 >> 4)];\n  cVar2 = "0123456789ABCDEF"[param_2 & 0xf];\n  cVar3 = *param_1;\n  pcVar4 = param_1;\n  while (cVar3 != '\0') {\n    if (((cVar3 == '%') && (pcVar4[1] == cVar1)) && (pcVar4[2] == cVar2)) {\n      pcVar4 = pcVar4 + 2;\n      cVar3 = (char)param_2;\n    }\n    *param_1 = cVar3;\n    param_1 = param_1 + 1;\n    cVar3 = pcVar4[1];\n    pcVar4 = pcVar4 + 1;\n  }\n  *param_1 = '\0';\n  return;\n}" { (declaration "char cVar1;" primitive_type identifier ;) (declaration "char cVar2;" primitive_type identifier ;) (declaration "char cVar3;" primitive_type identifier ;) (declaration "char *pcVar4;" primitive_type (pointer_declarator "*pcVar4" * identifier) ;) (expression_statement "cVar1 = "0123456789ABCDEF"[(char)((char)param_2 >> 4)];" (assignment_expression "cVar1 = "0123456789ABCDEF"[(char)((char)param_2 >> 4)]" identifier = (subscript_expression ""0123456789ABCDEF"[(char)((char)param_2 >> 4)]" (string_literal ""0123456789ABCDEF"" " string_content ") [ (cast_expression "(char)((char)param_2 >> 4)" ( (type_descriptor "char" primitive_type) ) (parenthesized_expression "((char)param_2 >> 4)" ( (binary_expression "(char)param_2 >> 4" (cast_expression "(char)param_2" ( (type_descriptor "char" primitive_type) ) identifier) >> number_literal) ))) ])) ;) (expression_statement "cVar2 = "0123456789ABCDEF"[param_2 & 0xf];" (assignment_expression "cVar2 = "0123456789ABCDEF"[param_2 & 0xf]" identifier = (subscript_expression ""0123456789ABCDEF"[param_2 & 0xf]" (string_literal ""0123456789ABCDEF"" " string_content ") [ (binary_expression "param_2 & 0xf" identifier & number_literal) ])) ;) (expression_statement "cVar3 = *param_1;" (assignment_expression "cVar3 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (expression_statement "pcVar4 = param_1;" (assignment_expression "pcVar4 = param_1" identifier = identifier) ;) (while_statement "while (cVar3 != '\0') {\n    if (((cVar3 == '%') && (pcVar4[1] == cVar1)) && (pcVar4[2] == cVar2)) {\n      pcVar4 = pcVar4 + 2;\n      cVar3 = (char)param_2;\n    }\n    *param_1 = cVar3;\n    param_1 = param_1 + 1;\n    cVar3 = pcVar4[1];\n    pcVar4 = pcVar4 + 1;\n  }" while (parenthesized_expression "(cVar3 != '\0')" ( (binary_expression "cVar3 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    if (((cVar3 == '%') && (pcVar4[1] == cVar1)) && (pcVar4[2] == cVar2)) {\n      pcVar4 = pcVar4 + 2;\n      cVar3 = (char)param_2;\n    }\n    *param_1 = cVar3;\n    param_1 = param_1 + 1;\n    cVar3 = pcVar4[1];\n    pcVar4 = pcVar4 + 1;\n  }" { (if_statement "if (((cVar3 == '%') && (pcVar4[1] == cVar1)) && (pcVar4[2] == cVar2)) {\n      pcVar4 = pcVar4 + 2;\n      cVar3 = (char)param_2;\n    }" if (parenthesized_expression "(((cVar3 == '%') && (pcVar4[1] == cVar1)) && (pcVar4[2] == cVar2))" ( (binary_expression "((cVar3 == '%') && (pcVar4[1] == cVar1)) && (pcVar4[2] == cVar2)" (parenthesized_expression "((cVar3 == '%') && (pcVar4[1] == cVar1))" ( (binary_expression "(cVar3 == '%') && (pcVar4[1] == cVar1)" (parenthesized_expression "(cVar3 == '%')" ( (binary_expression "cVar3 == '%'" identifier == (char_literal "'%'" ' character ')) )) && (parenthesized_expression "(pcVar4[1] == cVar1)" ( (binary_expression "pcVar4[1] == cVar1" (subscript_expression "pcVar4[1]" identifier [ number_literal ]) == identifier) ))) )) && (parenthesized_expression "(pcVar4[2] == cVar2)" ( (binary_expression "pcVar4[2] == cVar2" (subscript_expression "pcVar4[2]" identifier [ number_literal ]) == identifier) ))) )) (compound_statement "{\n      pcVar4 = pcVar4 + 2;\n      cVar3 = (char)param_2;\n    }" { (expression_statement "pcVar4 = pcVar4 + 2;" (assignment_expression "pcVar4 = pcVar4 + 2" identifier = (binary_expression "pcVar4 + 2" identifier + number_literal)) ;) (expression_statement "cVar3 = (char)param_2;" (assignment_expression "cVar3 = (char)param_2" identifier = (cast_expression "(char)param_2" ( (type_descriptor "char" primitive_type) ) identifier)) ;) })) (expression_statement "*param_1 = cVar3;" (assignment_expression "*param_1 = cVar3" (pointer_expression "*param_1" * identifier) = identifier) ;) (expression_statement "param_1 = param_1 + 1;" (assignment_expression "param_1 = param_1 + 1" identifier = (binary_expression "param_1 + 1" identifier + number_literal)) ;) (expression_statement "cVar3 = pcVar4[1];" (assignment_expression "cVar3 = pcVar4[1]" identifier = (subscript_expression "pcVar4[1]" identifier [ number_literal ])) ;) (expression_statement "pcVar4 = pcVar4 + 1;" (assignment_expression "pcVar4 = pcVar4 + 1" identifier = (binary_expression "pcVar4 + 1" identifier + number_literal)) ;) })) (expression_statement "*param_1 = '\0';" (assignment_expression "*param_1 = '\0'" (pointer_expression "*param_1" * identifier) = (char_literal "'\0'" ' escape_sequence ')) ;) (return_statement "return;" return ;) })))
(translation_unit "void unescape_single_char(char *str,char chr)\n\n{\n  char cVar1;\n  char cVar2;\n  char cVar3;\n  char *pcVar4;\n  \n  cVar1 = "0123456789ABCDEF"[chr >> 4];\n  cVar2 = "0123456789ABCDEF"[(byte)chr & 0xf];\n  cVar3 = *str;\n  pcVar4 = str;\n  while (cVar3 != '\0') {\n    if (((cVar3 == '%') && (pcVar4[1] == cVar1)) && (pcVar4[2] == cVar2)) {\n      pcVar4 = pcVar4 + 2;\n      cVar3 = chr;\n    }\n    *str = cVar3;\n    str = str + 1;\n    cVar3 = pcVar4[1];\n    pcVar4 = pcVar4 + 1;\n  }\n  *str = '\0';\n  return;\n}\n\n" (function_definition "void unescape_single_char(char *str,char chr)\n\n{\n  char cVar1;\n  char cVar2;\n  char cVar3;\n  char *pcVar4;\n  \n  cVar1 = "0123456789ABCDEF"[chr >> 4];\n  cVar2 = "0123456789ABCDEF"[(byte)chr & 0xf];\n  cVar3 = *str;\n  pcVar4 = str;\n  while (cVar3 != '\0') {\n    if (((cVar3 == '%') && (pcVar4[1] == cVar1)) && (pcVar4[2] == cVar2)) {\n      pcVar4 = pcVar4 + 2;\n      cVar3 = chr;\n    }\n    *str = cVar3;\n    str = str + 1;\n    cVar3 = pcVar4[1];\n    pcVar4 = pcVar4 + 1;\n  }\n  *str = '\0';\n  return;\n}" primitive_type (function_declarator "unescape_single_char(char *str,char chr)" identifier (parameter_list "(char *str,char chr)" ( (parameter_declaration "char *str" primitive_type (pointer_declarator "*str" * identifier)) , (parameter_declaration "char chr" primitive_type identifier) ))) (compound_statement "{\n  char cVar1;\n  char cVar2;\n  char cVar3;\n  char *pcVar4;\n  \n  cVar1 = "0123456789ABCDEF"[chr >> 4];\n  cVar2 = "0123456789ABCDEF"[(byte)chr & 0xf];\n  cVar3 = *str;\n  pcVar4 = str;\n  while (cVar3 != '\0') {\n    if (((cVar3 == '%') && (pcVar4[1] == cVar1)) && (pcVar4[2] == cVar2)) {\n      pcVar4 = pcVar4 + 2;\n      cVar3 = chr;\n    }\n    *str = cVar3;\n    str = str + 1;\n    cVar3 = pcVar4[1];\n    pcVar4 = pcVar4 + 1;\n  }\n  *str = '\0';\n  return;\n}" { (declaration "char cVar1;" primitive_type identifier ;) (declaration "char cVar2;" primitive_type identifier ;) (declaration "char cVar3;" primitive_type identifier ;) (declaration "char *pcVar4;" primitive_type (pointer_declarator "*pcVar4" * identifier) ;) (expression_statement "cVar1 = "0123456789ABCDEF"[chr >> 4];" (assignment_expression "cVar1 = "0123456789ABCDEF"[chr >> 4]" identifier = (subscript_expression ""0123456789ABCDEF"[chr >> 4]" (string_literal ""0123456789ABCDEF"" " string_content ") [ (binary_expression "chr >> 4" identifier >> number_literal) ])) ;) (expression_statement "cVar2 = "0123456789ABCDEF"[(byte)chr & 0xf];" (assignment_expression "cVar2 = "0123456789ABCDEF"[(byte)chr & 0xf]" identifier = (subscript_expression ""0123456789ABCDEF"[(byte)chr & 0xf]" (string_literal ""0123456789ABCDEF"" " string_content ") [ (binary_expression "(byte)chr & 0xf" (cast_expression "(byte)chr" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) ])) ;) (expression_statement "cVar3 = *str;" (assignment_expression "cVar3 = *str" identifier = (pointer_expression "*str" * identifier)) ;) (expression_statement "pcVar4 = str;" (assignment_expression "pcVar4 = str" identifier = identifier) ;) (while_statement "while (cVar3 != '\0') {\n    if (((cVar3 == '%') && (pcVar4[1] == cVar1)) && (pcVar4[2] == cVar2)) {\n      pcVar4 = pcVar4 + 2;\n      cVar3 = chr;\n    }\n    *str = cVar3;\n    str = str + 1;\n    cVar3 = pcVar4[1];\n    pcVar4 = pcVar4 + 1;\n  }" while (parenthesized_expression "(cVar3 != '\0')" ( (binary_expression "cVar3 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    if (((cVar3 == '%') && (pcVar4[1] == cVar1)) && (pcVar4[2] == cVar2)) {\n      pcVar4 = pcVar4 + 2;\n      cVar3 = chr;\n    }\n    *str = cVar3;\n    str = str + 1;\n    cVar3 = pcVar4[1];\n    pcVar4 = pcVar4 + 1;\n  }" { (if_statement "if (((cVar3 == '%') && (pcVar4[1] == cVar1)) && (pcVar4[2] == cVar2)) {\n      pcVar4 = pcVar4 + 2;\n      cVar3 = chr;\n    }" if (parenthesized_expression "(((cVar3 == '%') && (pcVar4[1] == cVar1)) && (pcVar4[2] == cVar2))" ( (binary_expression "((cVar3 == '%') && (pcVar4[1] == cVar1)) && (pcVar4[2] == cVar2)" (parenthesized_expression "((cVar3 == '%') && (pcVar4[1] == cVar1))" ( (binary_expression "(cVar3 == '%') && (pcVar4[1] == cVar1)" (parenthesized_expression "(cVar3 == '%')" ( (binary_expression "cVar3 == '%'" identifier == (char_literal "'%'" ' character ')) )) && (parenthesized_expression "(pcVar4[1] == cVar1)" ( (binary_expression "pcVar4[1] == cVar1" (subscript_expression "pcVar4[1]" identifier [ number_literal ]) == identifier) ))) )) && (parenthesized_expression "(pcVar4[2] == cVar2)" ( (binary_expression "pcVar4[2] == cVar2" (subscript_expression "pcVar4[2]" identifier [ number_literal ]) == identifier) ))) )) (compound_statement "{\n      pcVar4 = pcVar4 + 2;\n      cVar3 = chr;\n    }" { (expression_statement "pcVar4 = pcVar4 + 2;" (assignment_expression "pcVar4 = pcVar4 + 2" identifier = (binary_expression "pcVar4 + 2" identifier + number_literal)) ;) (expression_statement "cVar3 = chr;" (assignment_expression "cVar3 = chr" identifier = identifier) ;) })) (expression_statement "*str = cVar3;" (assignment_expression "*str = cVar3" (pointer_expression "*str" * identifier) = identifier) ;) (expression_statement "str = str + 1;" (assignment_expression "str = str + 1" identifier = (binary_expression "str + 1" identifier + number_literal)) ;) (expression_statement "cVar3 = pcVar4[1];" (assignment_expression "cVar3 = pcVar4[1]" identifier = (subscript_expression "pcVar4[1]" identifier [ number_literal ])) ;) (expression_statement "pcVar4 = pcVar4 + 1;" (assignment_expression "pcVar4 = pcVar4 + 1" identifier = (binary_expression "pcVar4 + 1" identifier + number_literal)) ;) })) (expression_statement "*str = '\0';" (assignment_expression "*str = '\0'" (pointer_expression "*str" * identifier) = (char_literal "'\0'" ' escape_sequence ')) ;) (return_statement "return;" return ;) })))
(translation_unit "void FUN_0013569e(char *param_1,uint param_2)\n\n{\n  char cVar1;\n  char cVar2;\n  char cVar3;\n  char *pcVar4;\n  \n  cVar1 = "0123456789ABCDEF"[(char)((char)param_2 >> 4)];\n  cVar2 = "0123456789ABCDEF"[param_2 & 0xf];\n  cVar3 = *param_1;\n  pcVar4 = param_1;\n  while (cVar3 != '\0') {\n    if (((cVar3 == '%') && (pcVar4[1] == cVar1)) && (pcVar4[2] == cVar2)) {\n      pcVar4 = pcVar4 + 2;\n      cVar3 = (char)param_2;\n    }\n    *param_1 = cVar3;\n    param_1 = param_1 + 1;\n    cVar3 = pcVar4[1];\n    pcVar4 = pcVar4 + 1;\n  }\n  *param_1 = '\0';\n  return;\n}\n\n" (function_definition "void FUN_0013569e(char *param_1,uint param_2)\n\n{\n  char cVar1;\n  char cVar2;\n  char cVar3;\n  char *pcVar4;\n  \n  cVar1 = "0123456789ABCDEF"[(char)((char)param_2 >> 4)];\n  cVar2 = "0123456789ABCDEF"[param_2 & 0xf];\n  cVar3 = *param_1;\n  pcVar4 = param_1;\n  while (cVar3 != '\0') {\n    if (((cVar3 == '%') && (pcVar4[1] == cVar1)) && (pcVar4[2] == cVar2)) {\n      pcVar4 = pcVar4 + 2;\n      cVar3 = (char)param_2;\n    }\n    *param_1 = cVar3;\n    param_1 = param_1 + 1;\n    cVar3 = pcVar4[1];\n    pcVar4 = pcVar4 + 1;\n  }\n  *param_1 = '\0';\n  return;\n}" primitive_type (function_declarator "FUN_0013569e(char *param_1,uint param_2)" identifier (parameter_list "(char *param_1,uint param_2)" ( (parameter_declaration "char *param_1" primitive_type (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "uint param_2" type_identifier identifier) ))) (compound_statement "{\n  char cVar1;\n  char cVar2;\n  char cVar3;\n  char *pcVar4;\n  \n  cVar1 = "0123456789ABCDEF"[(char)((char)param_2 >> 4)];\n  cVar2 = "0123456789ABCDEF"[param_2 & 0xf];\n  cVar3 = *param_1;\n  pcVar4 = param_1;\n  while (cVar3 != '\0') {\n    if (((cVar3 == '%') && (pcVar4[1] == cVar1)) && (pcVar4[2] == cVar2)) {\n      pcVar4 = pcVar4 + 2;\n      cVar3 = (char)param_2;\n    }\n    *param_1 = cVar3;\n    param_1 = param_1 + 1;\n    cVar3 = pcVar4[1];\n    pcVar4 = pcVar4 + 1;\n  }\n  *param_1 = '\0';\n  return;\n}" { (declaration "char cVar1;" primitive_type identifier ;) (declaration "char cVar2;" primitive_type identifier ;) (declaration "char cVar3;" primitive_type identifier ;) (declaration "char *pcVar4;" primitive_type (pointer_declarator "*pcVar4" * identifier) ;) (expression_statement "cVar1 = "0123456789ABCDEF"[(char)((char)param_2 >> 4)];" (assignment_expression "cVar1 = "0123456789ABCDEF"[(char)((char)param_2 >> 4)]" identifier = (subscript_expression ""0123456789ABCDEF"[(char)((char)param_2 >> 4)]" (string_literal ""0123456789ABCDEF"" " string_content ") [ (cast_expression "(char)((char)param_2 >> 4)" ( (type_descriptor "char" primitive_type) ) (parenthesized_expression "((char)param_2 >> 4)" ( (binary_expression "(char)param_2 >> 4" (cast_expression "(char)param_2" ( (type_descriptor "char" primitive_type) ) identifier) >> number_literal) ))) ])) ;) (expression_statement "cVar2 = "0123456789ABCDEF"[param_2 & 0xf];" (assignment_expression "cVar2 = "0123456789ABCDEF"[param_2 & 0xf]" identifier = (subscript_expression ""0123456789ABCDEF"[param_2 & 0xf]" (string_literal ""0123456789ABCDEF"" " string_content ") [ (binary_expression "param_2 & 0xf" identifier & number_literal) ])) ;) (expression_statement "cVar3 = *param_1;" (assignment_expression "cVar3 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (expression_statement "pcVar4 = param_1;" (assignment_expression "pcVar4 = param_1" identifier = identifier) ;) (while_statement "while (cVar3 != '\0') {\n    if (((cVar3 == '%') && (pcVar4[1] == cVar1)) && (pcVar4[2] == cVar2)) {\n      pcVar4 = pcVar4 + 2;\n      cVar3 = (char)param_2;\n    }\n    *param_1 = cVar3;\n    param_1 = param_1 + 1;\n    cVar3 = pcVar4[1];\n    pcVar4 = pcVar4 + 1;\n  }" while (parenthesized_expression "(cVar3 != '\0')" ( (binary_expression "cVar3 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    if (((cVar3 == '%') && (pcVar4[1] == cVar1)) && (pcVar4[2] == cVar2)) {\n      pcVar4 = pcVar4 + 2;\n      cVar3 = (char)param_2;\n    }\n    *param_1 = cVar3;\n    param_1 = param_1 + 1;\n    cVar3 = pcVar4[1];\n    pcVar4 = pcVar4 + 1;\n  }" { (if_statement "if (((cVar3 == '%') && (pcVar4[1] == cVar1)) && (pcVar4[2] == cVar2)) {\n      pcVar4 = pcVar4 + 2;\n      cVar3 = (char)param_2;\n    }" if (parenthesized_expression "(((cVar3 == '%') && (pcVar4[1] == cVar1)) && (pcVar4[2] == cVar2))" ( (binary_expression "((cVar3 == '%') && (pcVar4[1] == cVar1)) && (pcVar4[2] == cVar2)" (parenthesized_expression "((cVar3 == '%') && (pcVar4[1] == cVar1))" ( (binary_expression "(cVar3 == '%') && (pcVar4[1] == cVar1)" (parenthesized_expression "(cVar3 == '%')" ( (binary_expression "cVar3 == '%'" identifier == (char_literal "'%'" ' character ')) )) && (parenthesized_expression "(pcVar4[1] == cVar1)" ( (binary_expression "pcVar4[1] == cVar1" (subscript_expression "pcVar4[1]" identifier [ number_literal ]) == identifier) ))) )) && (parenthesized_expression "(pcVar4[2] == cVar2)" ( (binary_expression "pcVar4[2] == cVar2" (subscript_expression "pcVar4[2]" identifier [ number_literal ]) == identifier) ))) )) (compound_statement "{\n      pcVar4 = pcVar4 + 2;\n      cVar3 = (char)param_2;\n    }" { (expression_statement "pcVar4 = pcVar4 + 2;" (assignment_expression "pcVar4 = pcVar4 + 2" identifier = (binary_expression "pcVar4 + 2" identifier + number_literal)) ;) (expression_statement "cVar3 = (char)param_2;" (assignment_expression "cVar3 = (char)param_2" identifier = (cast_expression "(char)param_2" ( (type_descriptor "char" primitive_type) ) identifier)) ;) })) (expression_statement "*param_1 = cVar3;" (assignment_expression "*param_1 = cVar3" (pointer_expression "*param_1" * identifier) = identifier) ;) (expression_statement "param_1 = param_1 + 1;" (assignment_expression "param_1 = param_1 + 1" identifier = (binary_expression "param_1 + 1" identifier + number_literal)) ;) (expression_statement "cVar3 = pcVar4[1];" (assignment_expression "cVar3 = pcVar4[1]" identifier = (subscript_expression "pcVar4[1]" identifier [ number_literal ])) ;) (expression_statement "pcVar4 = pcVar4 + 1;" (assignment_expression "pcVar4 = pcVar4 + 1" identifier = (binary_expression "pcVar4 + 1" identifier + number_literal)) ;) })) (expression_statement "*param_1 = '\0';" (assignment_expression "*param_1 = '\0'" (pointer_expression "*param_1" * identifier) = (char_literal "'\0'" ' escape_sequence ')) ;) (return_statement "return;" return ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (expression_statement (assignment_expression IDENT = (subscript_expression (string_literal " string_content ") [ (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) ))) ])) ;) (expression_statement (assignment_expression IDENT = (subscript_expression (string_literal " string_content ") [ (binary_expression IDENT & LIT) ])) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (while_statement while (parenthesized_expression ( (binary_expression IDENT != (char_literal ' escape_sequence ')) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == (char_literal ' character ')) )) && (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == IDENT) ))) )) && (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == IDENT) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) })) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) })) (expression_statement (assignment_expression (pointer_expression * IDENT) = (char_literal ' escape_sequence ')) ;) (return_statement return ;) })))
(function_definition "void FUN_0013569e(char *param_1,uint param_2)\n\n{\n  char cVar1;\n  char cVar2;\n  char cVar3;\n  char *pcVar4;\n  \n  cVar1 = "0123456789ABCDEF"[(char)((char)param_2 >> 4)];\n  cVar2 = "0123456789ABCDEF"[param_2 & 0xf];\n  cVar3 = *param_1;\n  pcVar4 = param_1;\n  while (cVar3 != '\0') {\n    if (((cVar3 == '%') && (pcVar4[1] == cVar1)) && (pcVar4[2] == cVar2)) {\n      pcVar4 = pcVar4 + 2;\n      cVar3 = (char)param_2;\n    }\n    *param_1 = cVar3;\n    param_1 = param_1 + 1;\n    cVar3 = pcVar4[1];\n    pcVar4 = pcVar4 + 1;\n  }\n  *param_1 = '\0';\n  return;\n}" (primitive_type "void") (function_declarator "FUN_0013569e(char *param_1,uint param_2)" (identifier "FUN_0013569e") (parameter_list "(char *param_1,uint param_2)" (( "(") (parameter_declaration "char *param_1" (primitive_type "char") (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) (, ",") (parameter_declaration "uint param_2" (type_identifier "uint") (identifier "param_2")) () ")"))) (compound_statement "{\n  char cVar1;\n  char cVar2;\n  char cVar3;\n  char *pcVar4;\n  \n  cVar1 = "0123456789ABCDEF"[(char)((char)param_2 >> 4)];\n  cVar2 = "0123456789ABCDEF"[param_2 & 0xf];\n  cVar3 = *param_1;\n  pcVar4 = param_1;\n  while (cVar3 != '\0') {\n    if (((cVar3 == '%') && (pcVar4[1] == cVar1)) && (pcVar4[2] == cVar2)) {\n      pcVar4 = pcVar4 + 2;\n      cVar3 = (char)param_2;\n    }\n    *param_1 = cVar3;\n    param_1 = param_1 + 1;\n    cVar3 = pcVar4[1];\n    pcVar4 = pcVar4 + 1;\n  }\n  *param_1 = '\0';\n  return;\n}" ({ "{") (declaration "char cVar1;" (primitive_type "char") (identifier "cVar1") (; ";")) (declaration "char cVar2;" (primitive_type "char") (identifier "cVar2") (; ";")) (declaration "char cVar3;" (primitive_type "char") (identifier "cVar3") (; ";")) (declaration "char *pcVar4;" (primitive_type "char") (pointer_declarator "*pcVar4" (* "*") (identifier "pcVar4")) (; ";")) (expression_statement "cVar1 = "0123456789ABCDEF"[(char)((char)param_2 >> 4)];" (assignment_expression "cVar1 = "0123456789ABCDEF"[(char)((char)param_2 >> 4)]" (identifier "cVar1") (= "=") (subscript_expression ""0123456789ABCDEF"[(char)((char)param_2 >> 4)]" (string_literal ""0123456789ABCDEF"" (" """) (string_content "0123456789ABCDEF") (" """)) ([ "[") (cast_expression "(char)((char)param_2 >> 4)" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (parenthesized_expression "((char)param_2 >> 4)" (( "(") (binary_expression "(char)param_2 >> 4" (cast_expression "(char)param_2" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (identifier "param_2")) (>> ">>") (number_literal "4")) () ")"))) (] "]"))) (; ";")) (expression_statement "cVar2 = "0123456789ABCDEF"[param_2 & 0xf];" (assignment_expression "cVar2 = "0123456789ABCDEF"[param_2 & 0xf]" (identifier "cVar2") (= "=") (subscript_expression ""0123456789ABCDEF"[param_2 & 0xf]" (string_literal ""0123456789ABCDEF"" (" """) (string_content "0123456789ABCDEF") (" """)) ([ "[") (binary_expression "param_2 & 0xf" (identifier "param_2") (& "&") (number_literal "0xf")) (] "]"))) (; ";")) (expression_statement "cVar3 = *param_1;" (assignment_expression "cVar3 = *param_1" (identifier "cVar3") (= "=") (pointer_expression "*param_1" (* "*") (identifier "param_1"))) (; ";")) (expression_statement "pcVar4 = param_1;" (assignment_expression "pcVar4 = param_1" (identifier "pcVar4") (= "=") (identifier "param_1")) (; ";")) (while_statement "while (cVar3 != '\0') {\n    if (((cVar3 == '%') && (pcVar4[1] == cVar1)) && (pcVar4[2] == cVar2)) {\n      pcVar4 = pcVar4 + 2;\n      cVar3 = (char)param_2;\n    }\n    *param_1 = cVar3;\n    param_1 = param_1 + 1;\n    cVar3 = pcVar4[1];\n    pcVar4 = pcVar4 + 1;\n  }" (while "while") (parenthesized_expression "(cVar3 != '\0')" (( "(") (binary_expression "cVar3 != '\0'" (identifier "cVar3") (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n    if (((cVar3 == '%') && (pcVar4[1] == cVar1)) && (pcVar4[2] == cVar2)) {\n      pcVar4 = pcVar4 + 2;\n      cVar3 = (char)param_2;\n    }\n    *param_1 = cVar3;\n    param_1 = param_1 + 1;\n    cVar3 = pcVar4[1];\n    pcVar4 = pcVar4 + 1;\n  }" ({ "{") (if_statement "if (((cVar3 == '%') && (pcVar4[1] == cVar1)) && (pcVar4[2] == cVar2)) {\n      pcVar4 = pcVar4 + 2;\n      cVar3 = (char)param_2;\n    }" (if "if") (parenthesized_expression "(((cVar3 == '%') && (pcVar4[1] == cVar1)) && (pcVar4[2] == cVar2))" (( "(") (binary_expression "((cVar3 == '%') && (pcVar4[1] == cVar1)) && (pcVar4[2] == cVar2)" (parenthesized_expression "((cVar3 == '%') && (pcVar4[1] == cVar1))" (( "(") (binary_expression "(cVar3 == '%') && (pcVar4[1] == cVar1)" (parenthesized_expression "(cVar3 == '%')" (( "(") (binary_expression "cVar3 == '%'" (identifier "cVar3") (== "==") (char_literal "'%'" (' "'") (character "%") (' "'"))) () ")")) (&& "&&") (parenthesized_expression "(pcVar4[1] == cVar1)" (( "(") (binary_expression "pcVar4[1] == cVar1" (subscript_expression "pcVar4[1]" (identifier "pcVar4") ([ "[") (number_literal "1") (] "]")) (== "==") (identifier "cVar1")) () ")"))) () ")")) (&& "&&") (parenthesized_expression "(pcVar4[2] == cVar2)" (( "(") (binary_expression "pcVar4[2] == cVar2" (subscript_expression "pcVar4[2]" (identifier "pcVar4") ([ "[") (number_literal "2") (] "]")) (== "==") (identifier "cVar2")) () ")"))) () ")")) (compound_statement "{\n      pcVar4 = pcVar4 + 2;\n      cVar3 = (char)param_2;\n    }" ({ "{") (expression_statement "pcVar4 = pcVar4 + 2;" (assignment_expression "pcVar4 = pcVar4 + 2" (identifier "pcVar4") (= "=") (binary_expression "pcVar4 + 2" (identifier "pcVar4") (+ "+") (number_literal "2"))) (; ";")) (expression_statement "cVar3 = (char)param_2;" (assignment_expression "cVar3 = (char)param_2" (identifier "cVar3") (= "=") (cast_expression "(char)param_2" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (identifier "param_2"))) (; ";")) (} "}"))) (expression_statement "*param_1 = cVar3;" (assignment_expression "*param_1 = cVar3" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (= "=") (identifier "cVar3")) (; ";")) (expression_statement "param_1 = param_1 + 1;" (assignment_expression "param_1 = param_1 + 1" (identifier "param_1") (= "=") (binary_expression "param_1 + 1" (identifier "param_1") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "cVar3 = pcVar4[1];" (assignment_expression "cVar3 = pcVar4[1]" (identifier "cVar3") (= "=") (subscript_expression "pcVar4[1]" (identifier "pcVar4") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "pcVar4 = pcVar4 + 1;" (assignment_expression "pcVar4 = pcVar4 + 1" (identifier "pcVar4") (= "=") (binary_expression "pcVar4 + 1" (identifier "pcVar4") (+ "+") (number_literal "1"))) (; ";")) (} "}"))) (expression_statement "*param_1 = '\0';" (assignment_expression "*param_1 = '\0'" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (= "=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}")))

void function_1(char *var_6,char var_1)

{
  char var_3;
  char var_4;
  char var_2;
  char *var_5;
  
  var_3 = "0123456789ABCDEF"[var_1 >> 4];
  var_4 = "0123456789ABCDEF"[(type_1)var_1 & 0xf];
  var_2 = *var_6;
  var_5 = var_6;
  while (var_2 != '\0') {
    if (((var_2 == '%') && (var_5[1] == var_3)) && (var_5[2] == var_4)) {
      var_5 = var_5 + 2;
      var_2 = var_1;
    }
    *var_6 = var_2;
    var_6 = var_6 + 1;
    var_2 = var_5[1];
    var_5 = var_5 + 1;
  }
  *var_6 = '\0';
  return;
}


(translation_unit (function_definition type: (primitive_type) declarator: (function_declarator declarator: (identifier) parameters: (parameter_list (parameter_declaration type: (primitive_type) declarator: (pointer_declarator 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: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (string_literal (string_content)) index: (cast_expression type: (type_descriptor type: (primitive_type)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (string_literal (string_content)) index: (binary_expression left: (identifier) right: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (while_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (char_literal (escape_sequence)))) body: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (char_literal (character)))) right: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))))) right: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (char_literal (escape_sequence)))) (return_statement))))

void MASKED(char *param_1,uint param_2)

{
  char cVar1;
  char cVar2;
  char cVar3;
  char *pcVar4;
  
  cVar1 = "0123456789ABCDEF"[(char)((char)param_2 >> 4)];
  cVar2 = "0123456789ABCDEF"[param_2 & 0xf];
  cVar3 = *param_1;
  pcVar4 = param_1;
  while (cVar3 != '\0') {
    if (((cVar3 == '%') && (pcVar4[1] == cVar1)) && (pcVar4[2] == cVar2)) {
      pcVar4 = pcVar4 + 2;
      cVar3 = (char)param_2;
    }
    *param_1 = cVar3;
    param_1 = param_1 + 1;
    cVar3 = pcVar4[1];
    pcVar4 = pcVar4 + 1;
  }
  *param_1 = '\0';
  return;
}

