
uchar * unw_decode_p6(uchar *dp,uint code,void *arg,uchar *end)

{
  bool bVar1;
  char cVar2;
  ulong uVar3;
  char *pcVar4;
  undefined1 *puVar5;
  char grstr [200];
  
  uVar3 = (ulong)(code & 0xf);
  pcVar4 = grstr;
  if ((code & 0x10) != 0) {
    cVar2 = '4';
    bVar1 = false;
    pcVar4 = grstr;
    do {
      puVar5 = pcVar4;
      if ((uVar3 & 1) != 0) {
        if (bVar1) {
          *pcVar4 = 0x2c;
          pcVar4 = pcVar4 + 1;
        }
        *pcVar4 = 0x72;
        puVar5 = pcVar4 + 2;
        bVar1 = true;
        pcVar4[1] = cVar2;
      }
      cVar2 = cVar2 + '\x01';
      uVar3 = uVar3 >> 1;
      pcVar4 = puVar5;
    } while (cVar2 != '8');
    *puVar5 = 0;
    printf("\t%s:gr_mem(grmask=[%s])\n","P6");
    return dp;
  }
  unw_print_frmask(grstr,code & 0xf);
  printf("\t%s:fr_mem(frmask=[%s])\n","P6",pcVar4);
  return dp;
}



undefined8 FUN_0013b710(undefined8 param_1,uint param_2)

{
  bool bVar1;
  char cVar2;
  ulong uVar3;
  undefined1 *puVar4;
  undefined1 *puVar5;
  undefined1 local_d8 [208];
  
  uVar3 = (ulong)(param_2 & 0xf);
  puVar4 = local_d8;
  if ((param_2 & 0x10) != 0) {
    cVar2 = '4';
    bVar1 = false;
    puVar4 = local_d8;
    do {
      puVar5 = puVar4;
      if ((uVar3 & 1) != 0) {
        if (bVar1) {
          *puVar4 = 0x2c;
          puVar4 = puVar4 + 1;
        }
        *puVar4 = 0x72;
        puVar5 = puVar4 + 2;
        bVar1 = true;
        puVar4[1] = cVar2;
      }
      cVar2 = cVar2 + '\x01';
      uVar3 = uVar3 >> 1;
      puVar4 = puVar5;
    } while (cVar2 != '8');
    *puVar5 = 0;
    printf("\t%s:gr_mem(grmask=[%s])\n","P6");
    return param_1;
  }
  FUN_0013b5d0(local_d8,param_2 & 0xf);
  printf("\t%s:fr_mem(frmask=[%s])\n","P6",puVar4);
  return param_1;
}


PUSH RBX
MOV ECX,ESI
MOV RBX,RDI
AND ECX,0xf
SUB RSP,0xd0
AND ESI,0x10
JZ 0x0013b788
MOV RDX,RSP
MOV EAX,0x34
XOR R8D,R8D
MOV RDI,RDX
TEST CL,0x1
JZ 0x0013b757
MOV RSI,RDI
TEST R8D,R8D
JZ 0x0013b747
MOV byte ptr [RDI],0x2c
ADD RSI,0x1
MOV byte ptr [RSI],0x72
LEA RDI,[RSI + 0x2]
MOV R8D,0x1
MOV byte ptr [RSI + 0x1],AL
ADD EAX,0x1
SHR ECX,0x1
CMP AL,0x38
JNZ 0x0013b733
MOV byte ptr [RDI],0x0
LEA RSI,[0x15e7b5]
XOR EAX,EAX
LEA RDI,[0x17c824]
CALL 0x00107190
ADD RSP,0xd0
MOV RAX,RBX
POP RBX
RET
MOV R10,RSP
MOV ESI,ECX
MOV RDI,R10
CALL 0x0013b5d0
LEA RSI,[0x15e7b5]
LEA RDI,[0x17c83d]
XOR EAX,EAX
MOV RDX,R10
CALL 0x00107190
ADD RSP,0xd0
MOV RAX,RBX
POP RBX
RET
(translation_unit "undefined8 FUN_0013b710(undefined8 param_1,uint param_2)\n\n{\n  bool bVar1;\n  char cVar2;\n  ulong uVar3;\n  undefined1 *puVar4;\n  undefined1 *puVar5;\n  undefined1 local_d8 [208];\n  \n  uVar3 = (ulong)(param_2 & 0xf);\n  puVar4 = local_d8;\n  if ((param_2 & 0x10) != 0) {\n    cVar2 = '4';\n    bVar1 = false;\n    puVar4 = local_d8;\n    do {\n      puVar5 = puVar4;\n      if ((uVar3 & 1) != 0) {\n        if (bVar1) {\n          *puVar4 = 0x2c;\n          puVar4 = puVar4 + 1;\n        }\n        *puVar4 = 0x72;\n        puVar5 = puVar4 + 2;\n        bVar1 = true;\n        puVar4[1] = cVar2;\n      }\n      cVar2 = cVar2 + '\x01';\n      uVar3 = uVar3 >> 1;\n      puVar4 = puVar5;\n    } while (cVar2 != '8');\n    *puVar5 = 0;\n    printf("\t%s:gr_mem(grmask=[%s])\n","P6");\n    return param_1;\n  }\n  FUN_0013b5d0(local_d8,param_2 & 0xf);\n  printf("\t%s:fr_mem(frmask=[%s])\n","P6",puVar4);\n  return param_1;\n}\n\n" (function_definition "undefined8 FUN_0013b710(undefined8 param_1,uint param_2)\n\n{\n  bool bVar1;\n  char cVar2;\n  ulong uVar3;\n  undefined1 *puVar4;\n  undefined1 *puVar5;\n  undefined1 local_d8 [208];\n  \n  uVar3 = (ulong)(param_2 & 0xf);\n  puVar4 = local_d8;\n  if ((param_2 & 0x10) != 0) {\n    cVar2 = '4';\n    bVar1 = false;\n    puVar4 = local_d8;\n    do {\n      puVar5 = puVar4;\n      if ((uVar3 & 1) != 0) {\n        if (bVar1) {\n          *puVar4 = 0x2c;\n          puVar4 = puVar4 + 1;\n        }\n        *puVar4 = 0x72;\n        puVar5 = puVar4 + 2;\n        bVar1 = true;\n        puVar4[1] = cVar2;\n      }\n      cVar2 = cVar2 + '\x01';\n      uVar3 = uVar3 >> 1;\n      puVar4 = puVar5;\n    } while (cVar2 != '8');\n    *puVar5 = 0;\n    printf("\t%s:gr_mem(grmask=[%s])\n","P6");\n    return param_1;\n  }\n  FUN_0013b5d0(local_d8,param_2 & 0xf);\n  printf("\t%s:fr_mem(frmask=[%s])\n","P6",puVar4);\n  return param_1;\n}" type_identifier (function_declarator "FUN_0013b710(undefined8 param_1,uint param_2)" identifier (parameter_list "(undefined8 param_1,uint param_2)" ( (parameter_declaration "undefined8 param_1" type_identifier identifier) , (parameter_declaration "uint param_2" type_identifier identifier) ))) (compound_statement "{\n  bool bVar1;\n  char cVar2;\n  ulong uVar3;\n  undefined1 *puVar4;\n  undefined1 *puVar5;\n  undefined1 local_d8 [208];\n  \n  uVar3 = (ulong)(param_2 & 0xf);\n  puVar4 = local_d8;\n  if ((param_2 & 0x10) != 0) {\n    cVar2 = '4';\n    bVar1 = false;\n    puVar4 = local_d8;\n    do {\n      puVar5 = puVar4;\n      if ((uVar3 & 1) != 0) {\n        if (bVar1) {\n          *puVar4 = 0x2c;\n          puVar4 = puVar4 + 1;\n        }\n        *puVar4 = 0x72;\n        puVar5 = puVar4 + 2;\n        bVar1 = true;\n        puVar4[1] = cVar2;\n      }\n      cVar2 = cVar2 + '\x01';\n      uVar3 = uVar3 >> 1;\n      puVar4 = puVar5;\n    } while (cVar2 != '8');\n    *puVar5 = 0;\n    printf("\t%s:gr_mem(grmask=[%s])\n","P6");\n    return param_1;\n  }\n  FUN_0013b5d0(local_d8,param_2 & 0xf);\n  printf("\t%s:fr_mem(frmask=[%s])\n","P6",puVar4);\n  return param_1;\n}" { (declaration "bool bVar1;" primitive_type identifier ;) (declaration "char cVar2;" primitive_type identifier ;) (declaration "ulong uVar3;" type_identifier identifier ;) (declaration "undefined1 *puVar4;" type_identifier (pointer_declarator "*puVar4" * identifier) ;) (declaration "undefined1 *puVar5;" type_identifier (pointer_declarator "*puVar5" * identifier) ;) (declaration "undefined1 local_d8 [208];" type_identifier (array_declarator "local_d8 [208]" identifier [ number_literal ]) ;) (expression_statement "uVar3 = (ulong)(param_2 & 0xf);" (assignment_expression "uVar3 = (ulong)(param_2 & 0xf)" identifier = (call_expression "(ulong)(param_2 & 0xf)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(param_2 & 0xf)" ( (binary_expression "param_2 & 0xf" identifier & number_literal) )))) ;) (expression_statement "puVar4 = local_d8;" (assignment_expression "puVar4 = local_d8" identifier = identifier) ;) (if_statement "if ((param_2 & 0x10) != 0) {\n    cVar2 = '4';\n    bVar1 = false;\n    puVar4 = local_d8;\n    do {\n      puVar5 = puVar4;\n      if ((uVar3 & 1) != 0) {\n        if (bVar1) {\n          *puVar4 = 0x2c;\n          puVar4 = puVar4 + 1;\n        }\n        *puVar4 = 0x72;\n        puVar5 = puVar4 + 2;\n        bVar1 = true;\n        puVar4[1] = cVar2;\n      }\n      cVar2 = cVar2 + '\x01';\n      uVar3 = uVar3 >> 1;\n      puVar4 = puVar5;\n    } while (cVar2 != '8');\n    *puVar5 = 0;\n    printf("\t%s:gr_mem(grmask=[%s])\n","P6");\n    return param_1;\n  }" if (parenthesized_expression "((param_2 & 0x10) != 0)" ( (binary_expression "(param_2 & 0x10) != 0" (parenthesized_expression "(param_2 & 0x10)" ( (binary_expression "param_2 & 0x10" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n    cVar2 = '4';\n    bVar1 = false;\n    puVar4 = local_d8;\n    do {\n      puVar5 = puVar4;\n      if ((uVar3 & 1) != 0) {\n        if (bVar1) {\n          *puVar4 = 0x2c;\n          puVar4 = puVar4 + 1;\n        }\n        *puVar4 = 0x72;\n        puVar5 = puVar4 + 2;\n        bVar1 = true;\n        puVar4[1] = cVar2;\n      }\n      cVar2 = cVar2 + '\x01';\n      uVar3 = uVar3 >> 1;\n      puVar4 = puVar5;\n    } while (cVar2 != '8');\n    *puVar5 = 0;\n    printf("\t%s:gr_mem(grmask=[%s])\n","P6");\n    return param_1;\n  }" { (expression_statement "cVar2 = '4';" (assignment_expression "cVar2 = '4'" identifier = (char_literal "'4'" ' character ')) ;) (expression_statement "bVar1 = false;" (assignment_expression "bVar1 = false" identifier = false) ;) (expression_statement "puVar4 = local_d8;" (assignment_expression "puVar4 = local_d8" identifier = identifier) ;) (do_statement "do {\n      puVar5 = puVar4;\n      if ((uVar3 & 1) != 0) {\n        if (bVar1) {\n          *puVar4 = 0x2c;\n          puVar4 = puVar4 + 1;\n        }\n        *puVar4 = 0x72;\n        puVar5 = puVar4 + 2;\n        bVar1 = true;\n        puVar4[1] = cVar2;\n      }\n      cVar2 = cVar2 + '\x01';\n      uVar3 = uVar3 >> 1;\n      puVar4 = puVar5;\n    } while (cVar2 != '8');" do (compound_statement "{\n      puVar5 = puVar4;\n      if ((uVar3 & 1) != 0) {\n        if (bVar1) {\n          *puVar4 = 0x2c;\n          puVar4 = puVar4 + 1;\n        }\n        *puVar4 = 0x72;\n        puVar5 = puVar4 + 2;\n        bVar1 = true;\n        puVar4[1] = cVar2;\n      }\n      cVar2 = cVar2 + '\x01';\n      uVar3 = uVar3 >> 1;\n      puVar4 = puVar5;\n    }" { (expression_statement "puVar5 = puVar4;" (assignment_expression "puVar5 = puVar4" identifier = identifier) ;) (if_statement "if ((uVar3 & 1) != 0) {\n        if (bVar1) {\n          *puVar4 = 0x2c;\n          puVar4 = puVar4 + 1;\n        }\n        *puVar4 = 0x72;\n        puVar5 = puVar4 + 2;\n        bVar1 = true;\n        puVar4[1] = cVar2;\n      }" if (parenthesized_expression "((uVar3 & 1) != 0)" ( (binary_expression "(uVar3 & 1) != 0" (parenthesized_expression "(uVar3 & 1)" ( (binary_expression "uVar3 & 1" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n        if (bVar1) {\n          *puVar4 = 0x2c;\n          puVar4 = puVar4 + 1;\n        }\n        *puVar4 = 0x72;\n        puVar5 = puVar4 + 2;\n        bVar1 = true;\n        puVar4[1] = cVar2;\n      }" { (if_statement "if (bVar1) {\n          *puVar4 = 0x2c;\n          puVar4 = puVar4 + 1;\n        }" if (parenthesized_expression "(bVar1)" ( identifier )) (compound_statement "{\n          *puVar4 = 0x2c;\n          puVar4 = puVar4 + 1;\n        }" { (expression_statement "*puVar4 = 0x2c;" (assignment_expression "*puVar4 = 0x2c" (pointer_expression "*puVar4" * identifier) = number_literal) ;) (expression_statement "puVar4 = puVar4 + 1;" (assignment_expression "puVar4 = puVar4 + 1" identifier = (binary_expression "puVar4 + 1" identifier + number_literal)) ;) })) (expression_statement "*puVar4 = 0x72;" (assignment_expression "*puVar4 = 0x72" (pointer_expression "*puVar4" * identifier) = number_literal) ;) (expression_statement "puVar5 = puVar4 + 2;" (assignment_expression "puVar5 = puVar4 + 2" identifier = (binary_expression "puVar4 + 2" identifier + number_literal)) ;) (expression_statement "bVar1 = true;" (assignment_expression "bVar1 = true" identifier = true) ;) (expression_statement "puVar4[1] = cVar2;" (assignment_expression "puVar4[1] = cVar2" (subscript_expression "puVar4[1]" identifier [ number_literal ]) = identifier) ;) })) (expression_statement "cVar2 = cVar2 + '\x01';" (assignment_expression "cVar2 = cVar2 + '\x01'" identifier = (binary_expression "cVar2 + '\x01'" identifier + (char_literal "'\x01'" ' escape_sequence '))) ;) (expression_statement "uVar3 = uVar3 >> 1;" (assignment_expression "uVar3 = uVar3 >> 1" identifier = (binary_expression "uVar3 >> 1" identifier >> number_literal)) ;) (expression_statement "puVar4 = puVar5;" (assignment_expression "puVar4 = puVar5" identifier = identifier) ;) }) while (parenthesized_expression "(cVar2 != '8')" ( (binary_expression "cVar2 != '8'" identifier != (char_literal "'8'" ' character ')) )) ;) (expression_statement "*puVar5 = 0;" (assignment_expression "*puVar5 = 0" (pointer_expression "*puVar5" * identifier) = number_literal) ;) (expression_statement "printf("\t%s:gr_mem(grmask=[%s])\n","P6");" (call_expression "printf("\t%s:gr_mem(grmask=[%s])\n","P6")" identifier (argument_list "("\t%s:gr_mem(grmask=[%s])\n","P6")" ( (string_literal ""\t%s:gr_mem(grmask=[%s])\n"" " escape_sequence string_content escape_sequence ") , (string_literal ""P6"" " string_content ") ))) ;) (return_statement "return param_1;" return identifier ;) })) (expression_statement "FUN_0013b5d0(local_d8,param_2 & 0xf);" (call_expression "FUN_0013b5d0(local_d8,param_2 & 0xf)" identifier (argument_list "(local_d8,param_2 & 0xf)" ( identifier , (binary_expression "param_2 & 0xf" identifier & number_literal) ))) ;) (expression_statement "printf("\t%s:fr_mem(frmask=[%s])\n","P6",puVar4);" (call_expression "printf("\t%s:fr_mem(frmask=[%s])\n","P6",puVar4)" identifier (argument_list "("\t%s:fr_mem(frmask=[%s])\n","P6",puVar4)" ( (string_literal ""\t%s:fr_mem(frmask=[%s])\n"" " escape_sequence string_content escape_sequence ") , (string_literal ""P6"" " string_content ") , identifier ))) ;) (return_statement "return param_1;" return identifier ;) })))
(translation_unit "uchar * unw_decode_p6(uchar *dp,uint code,void *arg,uchar *end)\n\n{\n  bool bVar1;\n  char cVar2;\n  ulong uVar3;\n  char *pcVar4;\n  undefined1 *puVar5;\n  char grstr [200];\n  \n  uVar3 = (ulong)(code & 0xf);\n  pcVar4 = grstr;\n  if ((code & 0x10) != 0) {\n    cVar2 = '4';\n    bVar1 = false;\n    pcVar4 = grstr;\n    do {\n      puVar5 = pcVar4;\n      if ((uVar3 & 1) != 0) {\n        if (bVar1) {\n          *pcVar4 = 0x2c;\n          pcVar4 = pcVar4 + 1;\n        }\n        *pcVar4 = 0x72;\n        puVar5 = pcVar4 + 2;\n        bVar1 = true;\n        pcVar4[1] = cVar2;\n      }\n      cVar2 = cVar2 + '\x01';\n      uVar3 = uVar3 >> 1;\n      pcVar4 = puVar5;\n    } while (cVar2 != '8');\n    *puVar5 = 0;\n    printf("\t%s:gr_mem(grmask=[%s])\n","P6");\n    return dp;\n  }\n  unw_print_frmask(grstr,code & 0xf);\n  printf("\t%s:fr_mem(frmask=[%s])\n","P6",pcVar4);\n  return dp;\n}\n\n" (function_definition "uchar * unw_decode_p6(uchar *dp,uint code,void *arg,uchar *end)\n\n{\n  bool bVar1;\n  char cVar2;\n  ulong uVar3;\n  char *pcVar4;\n  undefined1 *puVar5;\n  char grstr [200];\n  \n  uVar3 = (ulong)(code & 0xf);\n  pcVar4 = grstr;\n  if ((code & 0x10) != 0) {\n    cVar2 = '4';\n    bVar1 = false;\n    pcVar4 = grstr;\n    do {\n      puVar5 = pcVar4;\n      if ((uVar3 & 1) != 0) {\n        if (bVar1) {\n          *pcVar4 = 0x2c;\n          pcVar4 = pcVar4 + 1;\n        }\n        *pcVar4 = 0x72;\n        puVar5 = pcVar4 + 2;\n        bVar1 = true;\n        pcVar4[1] = cVar2;\n      }\n      cVar2 = cVar2 + '\x01';\n      uVar3 = uVar3 >> 1;\n      pcVar4 = puVar5;\n    } while (cVar2 != '8');\n    *puVar5 = 0;\n    printf("\t%s:gr_mem(grmask=[%s])\n","P6");\n    return dp;\n  }\n  unw_print_frmask(grstr,code & 0xf);\n  printf("\t%s:fr_mem(frmask=[%s])\n","P6",pcVar4);\n  return dp;\n}" type_identifier (pointer_declarator "* unw_decode_p6(uchar *dp,uint code,void *arg,uchar *end)" * (function_declarator "unw_decode_p6(uchar *dp,uint code,void *arg,uchar *end)" identifier (parameter_list "(uchar *dp,uint code,void *arg,uchar *end)" ( (parameter_declaration "uchar *dp" type_identifier (pointer_declarator "*dp" * identifier)) , (parameter_declaration "uint code" type_identifier identifier) , (parameter_declaration "void *arg" primitive_type (pointer_declarator "*arg" * identifier)) , (parameter_declaration "uchar *end" type_identifier (pointer_declarator "*end" * identifier)) )))) (compound_statement "{\n  bool bVar1;\n  char cVar2;\n  ulong uVar3;\n  char *pcVar4;\n  undefined1 *puVar5;\n  char grstr [200];\n  \n  uVar3 = (ulong)(code & 0xf);\n  pcVar4 = grstr;\n  if ((code & 0x10) != 0) {\n    cVar2 = '4';\n    bVar1 = false;\n    pcVar4 = grstr;\n    do {\n      puVar5 = pcVar4;\n      if ((uVar3 & 1) != 0) {\n        if (bVar1) {\n          *pcVar4 = 0x2c;\n          pcVar4 = pcVar4 + 1;\n        }\n        *pcVar4 = 0x72;\n        puVar5 = pcVar4 + 2;\n        bVar1 = true;\n        pcVar4[1] = cVar2;\n      }\n      cVar2 = cVar2 + '\x01';\n      uVar3 = uVar3 >> 1;\n      pcVar4 = puVar5;\n    } while (cVar2 != '8');\n    *puVar5 = 0;\n    printf("\t%s:gr_mem(grmask=[%s])\n","P6");\n    return dp;\n  }\n  unw_print_frmask(grstr,code & 0xf);\n  printf("\t%s:fr_mem(frmask=[%s])\n","P6",pcVar4);\n  return dp;\n}" { (declaration "bool bVar1;" primitive_type identifier ;) (declaration "char cVar2;" primitive_type identifier ;) (declaration "ulong uVar3;" type_identifier identifier ;) (declaration "char *pcVar4;" primitive_type (pointer_declarator "*pcVar4" * identifier) ;) (declaration "undefined1 *puVar5;" type_identifier (pointer_declarator "*puVar5" * identifier) ;) (declaration "char grstr [200];" primitive_type (array_declarator "grstr [200]" identifier [ number_literal ]) ;) (expression_statement "uVar3 = (ulong)(code & 0xf);" (assignment_expression "uVar3 = (ulong)(code & 0xf)" identifier = (call_expression "(ulong)(code & 0xf)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(code & 0xf)" ( (binary_expression "code & 0xf" identifier & number_literal) )))) ;) (expression_statement "pcVar4 = grstr;" (assignment_expression "pcVar4 = grstr" identifier = identifier) ;) (if_statement "if ((code & 0x10) != 0) {\n    cVar2 = '4';\n    bVar1 = false;\n    pcVar4 = grstr;\n    do {\n      puVar5 = pcVar4;\n      if ((uVar3 & 1) != 0) {\n        if (bVar1) {\n          *pcVar4 = 0x2c;\n          pcVar4 = pcVar4 + 1;\n        }\n        *pcVar4 = 0x72;\n        puVar5 = pcVar4 + 2;\n        bVar1 = true;\n        pcVar4[1] = cVar2;\n      }\n      cVar2 = cVar2 + '\x01';\n      uVar3 = uVar3 >> 1;\n      pcVar4 = puVar5;\n    } while (cVar2 != '8');\n    *puVar5 = 0;\n    printf("\t%s:gr_mem(grmask=[%s])\n","P6");\n    return dp;\n  }" if (parenthesized_expression "((code & 0x10) != 0)" ( (binary_expression "(code & 0x10) != 0" (parenthesized_expression "(code & 0x10)" ( (binary_expression "code & 0x10" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n    cVar2 = '4';\n    bVar1 = false;\n    pcVar4 = grstr;\n    do {\n      puVar5 = pcVar4;\n      if ((uVar3 & 1) != 0) {\n        if (bVar1) {\n          *pcVar4 = 0x2c;\n          pcVar4 = pcVar4 + 1;\n        }\n        *pcVar4 = 0x72;\n        puVar5 = pcVar4 + 2;\n        bVar1 = true;\n        pcVar4[1] = cVar2;\n      }\n      cVar2 = cVar2 + '\x01';\n      uVar3 = uVar3 >> 1;\n      pcVar4 = puVar5;\n    } while (cVar2 != '8');\n    *puVar5 = 0;\n    printf("\t%s:gr_mem(grmask=[%s])\n","P6");\n    return dp;\n  }" { (expression_statement "cVar2 = '4';" (assignment_expression "cVar2 = '4'" identifier = (char_literal "'4'" ' character ')) ;) (expression_statement "bVar1 = false;" (assignment_expression "bVar1 = false" identifier = false) ;) (expression_statement "pcVar4 = grstr;" (assignment_expression "pcVar4 = grstr" identifier = identifier) ;) (do_statement "do {\n      puVar5 = pcVar4;\n      if ((uVar3 & 1) != 0) {\n        if (bVar1) {\n          *pcVar4 = 0x2c;\n          pcVar4 = pcVar4 + 1;\n        }\n        *pcVar4 = 0x72;\n        puVar5 = pcVar4 + 2;\n        bVar1 = true;\n        pcVar4[1] = cVar2;\n      }\n      cVar2 = cVar2 + '\x01';\n      uVar3 = uVar3 >> 1;\n      pcVar4 = puVar5;\n    } while (cVar2 != '8');" do (compound_statement "{\n      puVar5 = pcVar4;\n      if ((uVar3 & 1) != 0) {\n        if (bVar1) {\n          *pcVar4 = 0x2c;\n          pcVar4 = pcVar4 + 1;\n        }\n        *pcVar4 = 0x72;\n        puVar5 = pcVar4 + 2;\n        bVar1 = true;\n        pcVar4[1] = cVar2;\n      }\n      cVar2 = cVar2 + '\x01';\n      uVar3 = uVar3 >> 1;\n      pcVar4 = puVar5;\n    }" { (expression_statement "puVar5 = pcVar4;" (assignment_expression "puVar5 = pcVar4" identifier = identifier) ;) (if_statement "if ((uVar3 & 1) != 0) {\n        if (bVar1) {\n          *pcVar4 = 0x2c;\n          pcVar4 = pcVar4 + 1;\n        }\n        *pcVar4 = 0x72;\n        puVar5 = pcVar4 + 2;\n        bVar1 = true;\n        pcVar4[1] = cVar2;\n      }" if (parenthesized_expression "((uVar3 & 1) != 0)" ( (binary_expression "(uVar3 & 1) != 0" (parenthesized_expression "(uVar3 & 1)" ( (binary_expression "uVar3 & 1" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n        if (bVar1) {\n          *pcVar4 = 0x2c;\n          pcVar4 = pcVar4 + 1;\n        }\n        *pcVar4 = 0x72;\n        puVar5 = pcVar4 + 2;\n        bVar1 = true;\n        pcVar4[1] = cVar2;\n      }" { (if_statement "if (bVar1) {\n          *pcVar4 = 0x2c;\n          pcVar4 = pcVar4 + 1;\n        }" if (parenthesized_expression "(bVar1)" ( identifier )) (compound_statement "{\n          *pcVar4 = 0x2c;\n          pcVar4 = pcVar4 + 1;\n        }" { (expression_statement "*pcVar4 = 0x2c;" (assignment_expression "*pcVar4 = 0x2c" (pointer_expression "*pcVar4" * identifier) = number_literal) ;) (expression_statement "pcVar4 = pcVar4 + 1;" (assignment_expression "pcVar4 = pcVar4 + 1" identifier = (binary_expression "pcVar4 + 1" identifier + number_literal)) ;) })) (expression_statement "*pcVar4 = 0x72;" (assignment_expression "*pcVar4 = 0x72" (pointer_expression "*pcVar4" * identifier) = number_literal) ;) (expression_statement "puVar5 = pcVar4 + 2;" (assignment_expression "puVar5 = pcVar4 + 2" identifier = (binary_expression "pcVar4 + 2" identifier + number_literal)) ;) (expression_statement "bVar1 = true;" (assignment_expression "bVar1 = true" identifier = true) ;) (expression_statement "pcVar4[1] = cVar2;" (assignment_expression "pcVar4[1] = cVar2" (subscript_expression "pcVar4[1]" identifier [ number_literal ]) = identifier) ;) })) (expression_statement "cVar2 = cVar2 + '\x01';" (assignment_expression "cVar2 = cVar2 + '\x01'" identifier = (binary_expression "cVar2 + '\x01'" identifier + (char_literal "'\x01'" ' escape_sequence '))) ;) (expression_statement "uVar3 = uVar3 >> 1;" (assignment_expression "uVar3 = uVar3 >> 1" identifier = (binary_expression "uVar3 >> 1" identifier >> number_literal)) ;) (expression_statement "pcVar4 = puVar5;" (assignment_expression "pcVar4 = puVar5" identifier = identifier) ;) }) while (parenthesized_expression "(cVar2 != '8')" ( (binary_expression "cVar2 != '8'" identifier != (char_literal "'8'" ' character ')) )) ;) (expression_statement "*puVar5 = 0;" (assignment_expression "*puVar5 = 0" (pointer_expression "*puVar5" * identifier) = number_literal) ;) (expression_statement "printf("\t%s:gr_mem(grmask=[%s])\n","P6");" (call_expression "printf("\t%s:gr_mem(grmask=[%s])\n","P6")" identifier (argument_list "("\t%s:gr_mem(grmask=[%s])\n","P6")" ( (string_literal ""\t%s:gr_mem(grmask=[%s])\n"" " escape_sequence string_content escape_sequence ") , (string_literal ""P6"" " string_content ") ))) ;) (return_statement "return dp;" return identifier ;) })) (expression_statement "unw_print_frmask(grstr,code & 0xf);" (call_expression "unw_print_frmask(grstr,code & 0xf)" identifier (argument_list "(grstr,code & 0xf)" ( identifier , (binary_expression "code & 0xf" identifier & number_literal) ))) ;) (expression_statement "printf("\t%s:fr_mem(frmask=[%s])\n","P6",pcVar4);" (call_expression "printf("\t%s:fr_mem(frmask=[%s])\n","P6",pcVar4)" identifier (argument_list "("\t%s:fr_mem(frmask=[%s])\n","P6",pcVar4)" ( (string_literal ""\t%s:fr_mem(frmask=[%s])\n"" " escape_sequence string_content escape_sequence ") , (string_literal ""P6"" " string_content ") , identifier ))) ;) (return_statement "return dp;" return identifier ;) })))
(translation_unit "undefined8 FUN_0013b710(undefined8 param_1,uint param_2)\n\n{\n  bool bVar1;\n  char cVar2;\n  ulong uVar3;\n  undefined1 *puVar4;\n  undefined1 *puVar5;\n  undefined1 local_d8 [208];\n  \n  uVar3 = (ulong)(param_2 & 0xf);\n  puVar4 = local_d8;\n  if ((param_2 & 0x10) != 0) {\n    cVar2 = '4';\n    bVar1 = false;\n    puVar4 = local_d8;\n    do {\n      puVar5 = puVar4;\n      if ((uVar3 & 1) != 0) {\n        if (bVar1) {\n          *puVar4 = 0x2c;\n          puVar4 = puVar4 + 1;\n        }\n        *puVar4 = 0x72;\n        puVar5 = puVar4 + 2;\n        bVar1 = true;\n        puVar4[1] = cVar2;\n      }\n      cVar2 = cVar2 + '\x01';\n      uVar3 = uVar3 >> 1;\n      puVar4 = puVar5;\n    } while (cVar2 != '8');\n    *puVar5 = 0;\n    printf("\t%s:gr_mem(grmask=[%s])\n","P6");\n    return param_1;\n  }\n  FUN_0013b5d0(local_d8,param_2 & 0xf);\n  printf("\t%s:fr_mem(frmask=[%s])\n","P6",puVar4);\n  return param_1;\n}\n\n" (function_definition "undefined8 FUN_0013b710(undefined8 param_1,uint param_2)\n\n{\n  bool bVar1;\n  char cVar2;\n  ulong uVar3;\n  undefined1 *puVar4;\n  undefined1 *puVar5;\n  undefined1 local_d8 [208];\n  \n  uVar3 = (ulong)(param_2 & 0xf);\n  puVar4 = local_d8;\n  if ((param_2 & 0x10) != 0) {\n    cVar2 = '4';\n    bVar1 = false;\n    puVar4 = local_d8;\n    do {\n      puVar5 = puVar4;\n      if ((uVar3 & 1) != 0) {\n        if (bVar1) {\n          *puVar4 = 0x2c;\n          puVar4 = puVar4 + 1;\n        }\n        *puVar4 = 0x72;\n        puVar5 = puVar4 + 2;\n        bVar1 = true;\n        puVar4[1] = cVar2;\n      }\n      cVar2 = cVar2 + '\x01';\n      uVar3 = uVar3 >> 1;\n      puVar4 = puVar5;\n    } while (cVar2 != '8');\n    *puVar5 = 0;\n    printf("\t%s:gr_mem(grmask=[%s])\n","P6");\n    return param_1;\n  }\n  FUN_0013b5d0(local_d8,param_2 & 0xf);\n  printf("\t%s:fr_mem(frmask=[%s])\n","P6",puVar4);\n  return param_1;\n}" type_identifier (function_declarator "FUN_0013b710(undefined8 param_1,uint param_2)" identifier (parameter_list "(undefined8 param_1,uint param_2)" ( (parameter_declaration "undefined8 param_1" type_identifier identifier) , (parameter_declaration "uint param_2" type_identifier identifier) ))) (compound_statement "{\n  bool bVar1;\n  char cVar2;\n  ulong uVar3;\n  undefined1 *puVar4;\n  undefined1 *puVar5;\n  undefined1 local_d8 [208];\n  \n  uVar3 = (ulong)(param_2 & 0xf);\n  puVar4 = local_d8;\n  if ((param_2 & 0x10) != 0) {\n    cVar2 = '4';\n    bVar1 = false;\n    puVar4 = local_d8;\n    do {\n      puVar5 = puVar4;\n      if ((uVar3 & 1) != 0) {\n        if (bVar1) {\n          *puVar4 = 0x2c;\n          puVar4 = puVar4 + 1;\n        }\n        *puVar4 = 0x72;\n        puVar5 = puVar4 + 2;\n        bVar1 = true;\n        puVar4[1] = cVar2;\n      }\n      cVar2 = cVar2 + '\x01';\n      uVar3 = uVar3 >> 1;\n      puVar4 = puVar5;\n    } while (cVar2 != '8');\n    *puVar5 = 0;\n    printf("\t%s:gr_mem(grmask=[%s])\n","P6");\n    return param_1;\n  }\n  FUN_0013b5d0(local_d8,param_2 & 0xf);\n  printf("\t%s:fr_mem(frmask=[%s])\n","P6",puVar4);\n  return param_1;\n}" { (declaration "bool bVar1;" primitive_type identifier ;) (declaration "char cVar2;" primitive_type identifier ;) (declaration "ulong uVar3;" type_identifier identifier ;) (declaration "undefined1 *puVar4;" type_identifier (pointer_declarator "*puVar4" * identifier) ;) (declaration "undefined1 *puVar5;" type_identifier (pointer_declarator "*puVar5" * identifier) ;) (declaration "undefined1 local_d8 [208];" type_identifier (array_declarator "local_d8 [208]" identifier [ number_literal ]) ;) (expression_statement "uVar3 = (ulong)(param_2 & 0xf);" (assignment_expression "uVar3 = (ulong)(param_2 & 0xf)" identifier = (call_expression "(ulong)(param_2 & 0xf)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(param_2 & 0xf)" ( (binary_expression "param_2 & 0xf" identifier & number_literal) )))) ;) (expression_statement "puVar4 = local_d8;" (assignment_expression "puVar4 = local_d8" identifier = identifier) ;) (if_statement "if ((param_2 & 0x10) != 0) {\n    cVar2 = '4';\n    bVar1 = false;\n    puVar4 = local_d8;\n    do {\n      puVar5 = puVar4;\n      if ((uVar3 & 1) != 0) {\n        if (bVar1) {\n          *puVar4 = 0x2c;\n          puVar4 = puVar4 + 1;\n        }\n        *puVar4 = 0x72;\n        puVar5 = puVar4 + 2;\n        bVar1 = true;\n        puVar4[1] = cVar2;\n      }\n      cVar2 = cVar2 + '\x01';\n      uVar3 = uVar3 >> 1;\n      puVar4 = puVar5;\n    } while (cVar2 != '8');\n    *puVar5 = 0;\n    printf("\t%s:gr_mem(grmask=[%s])\n","P6");\n    return param_1;\n  }" if (parenthesized_expression "((param_2 & 0x10) != 0)" ( (binary_expression "(param_2 & 0x10) != 0" (parenthesized_expression "(param_2 & 0x10)" ( (binary_expression "param_2 & 0x10" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n    cVar2 = '4';\n    bVar1 = false;\n    puVar4 = local_d8;\n    do {\n      puVar5 = puVar4;\n      if ((uVar3 & 1) != 0) {\n        if (bVar1) {\n          *puVar4 = 0x2c;\n          puVar4 = puVar4 + 1;\n        }\n        *puVar4 = 0x72;\n        puVar5 = puVar4 + 2;\n        bVar1 = true;\n        puVar4[1] = cVar2;\n      }\n      cVar2 = cVar2 + '\x01';\n      uVar3 = uVar3 >> 1;\n      puVar4 = puVar5;\n    } while (cVar2 != '8');\n    *puVar5 = 0;\n    printf("\t%s:gr_mem(grmask=[%s])\n","P6");\n    return param_1;\n  }" { (expression_statement "cVar2 = '4';" (assignment_expression "cVar2 = '4'" identifier = (char_literal "'4'" ' character ')) ;) (expression_statement "bVar1 = false;" (assignment_expression "bVar1 = false" identifier = false) ;) (expression_statement "puVar4 = local_d8;" (assignment_expression "puVar4 = local_d8" identifier = identifier) ;) (do_statement "do {\n      puVar5 = puVar4;\n      if ((uVar3 & 1) != 0) {\n        if (bVar1) {\n          *puVar4 = 0x2c;\n          puVar4 = puVar4 + 1;\n        }\n        *puVar4 = 0x72;\n        puVar5 = puVar4 + 2;\n        bVar1 = true;\n        puVar4[1] = cVar2;\n      }\n      cVar2 = cVar2 + '\x01';\n      uVar3 = uVar3 >> 1;\n      puVar4 = puVar5;\n    } while (cVar2 != '8');" do (compound_statement "{\n      puVar5 = puVar4;\n      if ((uVar3 & 1) != 0) {\n        if (bVar1) {\n          *puVar4 = 0x2c;\n          puVar4 = puVar4 + 1;\n        }\n        *puVar4 = 0x72;\n        puVar5 = puVar4 + 2;\n        bVar1 = true;\n        puVar4[1] = cVar2;\n      }\n      cVar2 = cVar2 + '\x01';\n      uVar3 = uVar3 >> 1;\n      puVar4 = puVar5;\n    }" { (expression_statement "puVar5 = puVar4;" (assignment_expression "puVar5 = puVar4" identifier = identifier) ;) (if_statement "if ((uVar3 & 1) != 0) {\n        if (bVar1) {\n          *puVar4 = 0x2c;\n          puVar4 = puVar4 + 1;\n        }\n        *puVar4 = 0x72;\n        puVar5 = puVar4 + 2;\n        bVar1 = true;\n        puVar4[1] = cVar2;\n      }" if (parenthesized_expression "((uVar3 & 1) != 0)" ( (binary_expression "(uVar3 & 1) != 0" (parenthesized_expression "(uVar3 & 1)" ( (binary_expression "uVar3 & 1" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n        if (bVar1) {\n          *puVar4 = 0x2c;\n          puVar4 = puVar4 + 1;\n        }\n        *puVar4 = 0x72;\n        puVar5 = puVar4 + 2;\n        bVar1 = true;\n        puVar4[1] = cVar2;\n      }" { (if_statement "if (bVar1) {\n          *puVar4 = 0x2c;\n          puVar4 = puVar4 + 1;\n        }" if (parenthesized_expression "(bVar1)" ( identifier )) (compound_statement "{\n          *puVar4 = 0x2c;\n          puVar4 = puVar4 + 1;\n        }" { (expression_statement "*puVar4 = 0x2c;" (assignment_expression "*puVar4 = 0x2c" (pointer_expression "*puVar4" * identifier) = number_literal) ;) (expression_statement "puVar4 = puVar4 + 1;" (assignment_expression "puVar4 = puVar4 + 1" identifier = (binary_expression "puVar4 + 1" identifier + number_literal)) ;) })) (expression_statement "*puVar4 = 0x72;" (assignment_expression "*puVar4 = 0x72" (pointer_expression "*puVar4" * identifier) = number_literal) ;) (expression_statement "puVar5 = puVar4 + 2;" (assignment_expression "puVar5 = puVar4 + 2" identifier = (binary_expression "puVar4 + 2" identifier + number_literal)) ;) (expression_statement "bVar1 = true;" (assignment_expression "bVar1 = true" identifier = true) ;) (expression_statement "puVar4[1] = cVar2;" (assignment_expression "puVar4[1] = cVar2" (subscript_expression "puVar4[1]" identifier [ number_literal ]) = identifier) ;) })) (expression_statement "cVar2 = cVar2 + '\x01';" (assignment_expression "cVar2 = cVar2 + '\x01'" identifier = (binary_expression "cVar2 + '\x01'" identifier + (char_literal "'\x01'" ' escape_sequence '))) ;) (expression_statement "uVar3 = uVar3 >> 1;" (assignment_expression "uVar3 = uVar3 >> 1" identifier = (binary_expression "uVar3 >> 1" identifier >> number_literal)) ;) (expression_statement "puVar4 = puVar5;" (assignment_expression "puVar4 = puVar5" identifier = identifier) ;) }) while (parenthesized_expression "(cVar2 != '8')" ( (binary_expression "cVar2 != '8'" identifier != (char_literal "'8'" ' character ')) )) ;) (expression_statement "*puVar5 = 0;" (assignment_expression "*puVar5 = 0" (pointer_expression "*puVar5" * identifier) = number_literal) ;) (expression_statement "printf("\t%s:gr_mem(grmask=[%s])\n","P6");" (call_expression "printf("\t%s:gr_mem(grmask=[%s])\n","P6")" identifier (argument_list "("\t%s:gr_mem(grmask=[%s])\n","P6")" ( (string_literal ""\t%s:gr_mem(grmask=[%s])\n"" " escape_sequence string_content escape_sequence ") , (string_literal ""P6"" " string_content ") ))) ;) (return_statement "return param_1;" return identifier ;) })) (expression_statement "FUN_0013b5d0(local_d8,param_2 & 0xf);" (call_expression "FUN_0013b5d0(local_d8,param_2 & 0xf)" identifier (argument_list "(local_d8,param_2 & 0xf)" ( identifier , (binary_expression "param_2 & 0xf" identifier & number_literal) ))) ;) (expression_statement "printf("\t%s:fr_mem(frmask=[%s])\n","P6",puVar4);" (call_expression "printf("\t%s:fr_mem(frmask=[%s])\n","P6",puVar4)" identifier (argument_list "("\t%s:fr_mem(frmask=[%s])\n","P6",puVar4)" ( (string_literal ""\t%s:fr_mem(frmask=[%s])\n"" " escape_sequence string_content escape_sequence ") , (string_literal ""P6"" " string_content ") , identifier ))) ;) (return_statement "return param_1;" return identifier ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT & LIT) )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (char_literal ' character ')) ;) (expression_statement (assignment_expression IDENT = BOOL) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) != LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( IDENT )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) })) (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = BOOL) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (char_literal ' escape_sequence '))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT >> LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) while (parenthesized_expression ( (binary_expression IDENT != (char_literal ' character ')) )) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) (expression_statement (call_expression IDENT (argument_list ( (string_literal " escape_sequence string_content escape_sequence ") , (string_literal " string_content ") ))) ;) (return_statement return IDENT ;) })) (expression_statement (call_expression IDENT (argument_list ( IDENT , (binary_expression IDENT & LIT) ))) ;) (expression_statement (call_expression IDENT (argument_list ( (string_literal " escape_sequence string_content escape_sequence ") , (string_literal " string_content ") , IDENT ))) ;) (return_statement return IDENT ;) })))
(function_definition "undefined8 FUN_0013b710(undefined8 param_1,uint param_2)\n\n{\n  bool bVar1;\n  char cVar2;\n  ulong uVar3;\n  undefined1 *puVar4;\n  undefined1 *puVar5;\n  undefined1 local_d8 [208];\n  \n  uVar3 = (ulong)(param_2 & 0xf);\n  puVar4 = local_d8;\n  if ((param_2 & 0x10) != 0) {\n    cVar2 = '4';\n    bVar1 = false;\n    puVar4 = local_d8;\n    do {\n      puVar5 = puVar4;\n      if ((uVar3 & 1) != 0) {\n        if (bVar1) {\n          *puVar4 = 0x2c;\n          puVar4 = puVar4 + 1;\n        }\n        *puVar4 = 0x72;\n        puVar5 = puVar4 + 2;\n        bVar1 = true;\n        puVar4[1] = cVar2;\n      }\n      cVar2 = cVar2 + '\x01';\n      uVar3 = uVar3 >> 1;\n      puVar4 = puVar5;\n    } while (cVar2 != '8');\n    *puVar5 = 0;\n    printf("\t%s:gr_mem(grmask=[%s])\n","P6");\n    return param_1;\n  }\n  FUN_0013b5d0(local_d8,param_2 & 0xf);\n  printf("\t%s:fr_mem(frmask=[%s])\n","P6",puVar4);\n  return param_1;\n}" (type_identifier "undefined8") (function_declarator "FUN_0013b710(undefined8 param_1,uint param_2)" (identifier "FUN_0013b710") (parameter_list "(undefined8 param_1,uint param_2)" (( "(") (parameter_declaration "undefined8 param_1" (type_identifier "undefined8") (identifier "param_1")) (, ",") (parameter_declaration "uint param_2" (type_identifier "uint") (identifier "param_2")) () ")"))) (compound_statement "{\n  bool bVar1;\n  char cVar2;\n  ulong uVar3;\n  undefined1 *puVar4;\n  undefined1 *puVar5;\n  undefined1 local_d8 [208];\n  \n  uVar3 = (ulong)(param_2 & 0xf);\n  puVar4 = local_d8;\n  if ((param_2 & 0x10) != 0) {\n    cVar2 = '4';\n    bVar1 = false;\n    puVar4 = local_d8;\n    do {\n      puVar5 = puVar4;\n      if ((uVar3 & 1) != 0) {\n        if (bVar1) {\n          *puVar4 = 0x2c;\n          puVar4 = puVar4 + 1;\n        }\n        *puVar4 = 0x72;\n        puVar5 = puVar4 + 2;\n        bVar1 = true;\n        puVar4[1] = cVar2;\n      }\n      cVar2 = cVar2 + '\x01';\n      uVar3 = uVar3 >> 1;\n      puVar4 = puVar5;\n    } while (cVar2 != '8');\n    *puVar5 = 0;\n    printf("\t%s:gr_mem(grmask=[%s])\n","P6");\n    return param_1;\n  }\n  FUN_0013b5d0(local_d8,param_2 & 0xf);\n  printf("\t%s:fr_mem(frmask=[%s])\n","P6",puVar4);\n  return param_1;\n}" ({ "{") (declaration "bool bVar1;" (primitive_type "bool") (identifier "bVar1") (; ";")) (declaration "char cVar2;" (primitive_type "char") (identifier "cVar2") (; ";")) (declaration "ulong uVar3;" (type_identifier "ulong") (identifier "uVar3") (; ";")) (declaration "undefined1 *puVar4;" (type_identifier "undefined1") (pointer_declarator "*puVar4" (* "*") (identifier "puVar4")) (; ";")) (declaration "undefined1 *puVar5;" (type_identifier "undefined1") (pointer_declarator "*puVar5" (* "*") (identifier "puVar5")) (; ";")) (declaration "undefined1 local_d8 [208];" (type_identifier "undefined1") (array_declarator "local_d8 [208]" (identifier "local_d8") ([ "[") (number_literal "208") (] "]")) (; ";")) (expression_statement "uVar3 = (ulong)(param_2 & 0xf);" (assignment_expression "uVar3 = (ulong)(param_2 & 0xf)" (identifier "uVar3") (= "=") (call_expression "(ulong)(param_2 & 0xf)" (parenthesized_expression "(ulong)" (( "(") (identifier "ulong") () ")")) (argument_list "(param_2 & 0xf)" (( "(") (binary_expression "param_2 & 0xf" (identifier "param_2") (& "&") (number_literal "0xf")) () ")")))) (; ";")) (expression_statement "puVar4 = local_d8;" (assignment_expression "puVar4 = local_d8" (identifier "puVar4") (= "=") (identifier "local_d8")) (; ";")) (if_statement "if ((param_2 & 0x10) != 0) {\n    cVar2 = '4';\n    bVar1 = false;\n    puVar4 = local_d8;\n    do {\n      puVar5 = puVar4;\n      if ((uVar3 & 1) != 0) {\n        if (bVar1) {\n          *puVar4 = 0x2c;\n          puVar4 = puVar4 + 1;\n        }\n        *puVar4 = 0x72;\n        puVar5 = puVar4 + 2;\n        bVar1 = true;\n        puVar4[1] = cVar2;\n      }\n      cVar2 = cVar2 + '\x01';\n      uVar3 = uVar3 >> 1;\n      puVar4 = puVar5;\n    } while (cVar2 != '8');\n    *puVar5 = 0;\n    printf("\t%s:gr_mem(grmask=[%s])\n","P6");\n    return param_1;\n  }" (if "if") (parenthesized_expression "((param_2 & 0x10) != 0)" (( "(") (binary_expression "(param_2 & 0x10) != 0" (parenthesized_expression "(param_2 & 0x10)" (( "(") (binary_expression "param_2 & 0x10" (identifier "param_2") (& "&") (number_literal "0x10")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    cVar2 = '4';\n    bVar1 = false;\n    puVar4 = local_d8;\n    do {\n      puVar5 = puVar4;\n      if ((uVar3 & 1) != 0) {\n        if (bVar1) {\n          *puVar4 = 0x2c;\n          puVar4 = puVar4 + 1;\n        }\n        *puVar4 = 0x72;\n        puVar5 = puVar4 + 2;\n        bVar1 = true;\n        puVar4[1] = cVar2;\n      }\n      cVar2 = cVar2 + '\x01';\n      uVar3 = uVar3 >> 1;\n      puVar4 = puVar5;\n    } while (cVar2 != '8');\n    *puVar5 = 0;\n    printf("\t%s:gr_mem(grmask=[%s])\n","P6");\n    return param_1;\n  }" ({ "{") (expression_statement "cVar2 = '4';" (assignment_expression "cVar2 = '4'" (identifier "cVar2") (= "=") (char_literal "'4'" (' "'") (character "4") (' "'"))) (; ";")) (expression_statement "bVar1 = false;" (assignment_expression "bVar1 = false" (identifier "bVar1") (= "=") (false "false")) (; ";")) (expression_statement "puVar4 = local_d8;" (assignment_expression "puVar4 = local_d8" (identifier "puVar4") (= "=") (identifier "local_d8")) (; ";")) (do_statement "do {\n      puVar5 = puVar4;\n      if ((uVar3 & 1) != 0) {\n        if (bVar1) {\n          *puVar4 = 0x2c;\n          puVar4 = puVar4 + 1;\n        }\n        *puVar4 = 0x72;\n        puVar5 = puVar4 + 2;\n        bVar1 = true;\n        puVar4[1] = cVar2;\n      }\n      cVar2 = cVar2 + '\x01';\n      uVar3 = uVar3 >> 1;\n      puVar4 = puVar5;\n    } while (cVar2 != '8');" (do "do") (compound_statement "{\n      puVar5 = puVar4;\n      if ((uVar3 & 1) != 0) {\n        if (bVar1) {\n          *puVar4 = 0x2c;\n          puVar4 = puVar4 + 1;\n        }\n        *puVar4 = 0x72;\n        puVar5 = puVar4 + 2;\n        bVar1 = true;\n        puVar4[1] = cVar2;\n      }\n      cVar2 = cVar2 + '\x01';\n      uVar3 = uVar3 >> 1;\n      puVar4 = puVar5;\n    }" ({ "{") (expression_statement "puVar5 = puVar4;" (assignment_expression "puVar5 = puVar4" (identifier "puVar5") (= "=") (identifier "puVar4")) (; ";")) (if_statement "if ((uVar3 & 1) != 0) {\n        if (bVar1) {\n          *puVar4 = 0x2c;\n          puVar4 = puVar4 + 1;\n        }\n        *puVar4 = 0x72;\n        puVar5 = puVar4 + 2;\n        bVar1 = true;\n        puVar4[1] = cVar2;\n      }" (if "if") (parenthesized_expression "((uVar3 & 1) != 0)" (( "(") (binary_expression "(uVar3 & 1) != 0" (parenthesized_expression "(uVar3 & 1)" (( "(") (binary_expression "uVar3 & 1" (identifier "uVar3") (& "&") (number_literal "1")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n        if (bVar1) {\n          *puVar4 = 0x2c;\n          puVar4 = puVar4 + 1;\n        }\n        *puVar4 = 0x72;\n        puVar5 = puVar4 + 2;\n        bVar1 = true;\n        puVar4[1] = cVar2;\n      }" ({ "{") (if_statement "if (bVar1) {\n          *puVar4 = 0x2c;\n          puVar4 = puVar4 + 1;\n        }" (if "if") (parenthesized_expression "(bVar1)" (( "(") (identifier "bVar1") () ")")) (compound_statement "{\n          *puVar4 = 0x2c;\n          puVar4 = puVar4 + 1;\n        }" ({ "{") (expression_statement "*puVar4 = 0x2c;" (assignment_expression "*puVar4 = 0x2c" (pointer_expression "*puVar4" (* "*") (identifier "puVar4")) (= "=") (number_literal "0x2c")) (; ";")) (expression_statement "puVar4 = puVar4 + 1;" (assignment_expression "puVar4 = puVar4 + 1" (identifier "puVar4") (= "=") (binary_expression "puVar4 + 1" (identifier "puVar4") (+ "+") (number_literal "1"))) (; ";")) (} "}"))) (expression_statement "*puVar4 = 0x72;" (assignment_expression "*puVar4 = 0x72" (pointer_expression "*puVar4" (* "*") (identifier "puVar4")) (= "=") (number_literal "0x72")) (; ";")) (expression_statement "puVar5 = puVar4 + 2;" (assignment_expression "puVar5 = puVar4 + 2" (identifier "puVar5") (= "=") (binary_expression "puVar4 + 2" (identifier "puVar4") (+ "+") (number_literal "2"))) (; ";")) (expression_statement "bVar1 = true;" (assignment_expression "bVar1 = true" (identifier "bVar1") (= "=") (true "true")) (; ";")) (expression_statement "puVar4[1] = cVar2;" (assignment_expression "puVar4[1] = cVar2" (subscript_expression "puVar4[1]" (identifier "puVar4") ([ "[") (number_literal "1") (] "]")) (= "=") (identifier "cVar2")) (; ";")) (} "}"))) (expression_statement "cVar2 = cVar2 + '\x01';" (assignment_expression "cVar2 = cVar2 + '\x01'" (identifier "cVar2") (= "=") (binary_expression "cVar2 + '\x01'" (identifier "cVar2") (+ "+") (char_literal "'\x01'" (' "'") (escape_sequence "\x01") (' "'")))) (; ";")) (expression_statement "uVar3 = uVar3 >> 1;" (assignment_expression "uVar3 = uVar3 >> 1" (identifier "uVar3") (= "=") (binary_expression "uVar3 >> 1" (identifier "uVar3") (>> ">>") (number_literal "1"))) (; ";")) (expression_statement "puVar4 = puVar5;" (assignment_expression "puVar4 = puVar5" (identifier "puVar4") (= "=") (identifier "puVar5")) (; ";")) (} "}")) (while "while") (parenthesized_expression "(cVar2 != '8')" (( "(") (binary_expression "cVar2 != '8'" (identifier "cVar2") (!= "!=") (char_literal "'8'" (' "'") (character "8") (' "'"))) () ")")) (; ";")) (expression_statement "*puVar5 = 0;" (assignment_expression "*puVar5 = 0" (pointer_expression "*puVar5" (* "*") (identifier "puVar5")) (= "=") (number_literal "0")) (; ";")) (expression_statement "printf("\t%s:gr_mem(grmask=[%s])\n","P6");" (call_expression "printf("\t%s:gr_mem(grmask=[%s])\n","P6")" (identifier "printf") (argument_list "("\t%s:gr_mem(grmask=[%s])\n","P6")" (( "(") (string_literal ""\t%s:gr_mem(grmask=[%s])\n"" (" """) (escape_sequence "\t") (string_content "%s:gr_mem(grmask=[%s])") (escape_sequence "\n") (" """)) (, ",") (string_literal ""P6"" (" """) (string_content "P6") (" """)) () ")"))) (; ";")) (return_statement "return param_1;" (return "return") (identifier "param_1") (; ";")) (} "}"))) (expression_statement "FUN_0013b5d0(local_d8,param_2 & 0xf);" (call_expression "FUN_0013b5d0(local_d8,param_2 & 0xf)" (identifier "FUN_0013b5d0") (argument_list "(local_d8,param_2 & 0xf)" (( "(") (identifier "local_d8") (, ",") (binary_expression "param_2 & 0xf" (identifier "param_2") (& "&") (number_literal "0xf")) () ")"))) (; ";")) (expression_statement "printf("\t%s:fr_mem(frmask=[%s])\n","P6",puVar4);" (call_expression "printf("\t%s:fr_mem(frmask=[%s])\n","P6",puVar4)" (identifier "printf") (argument_list "("\t%s:fr_mem(frmask=[%s])\n","P6",puVar4)" (( "(") (string_literal ""\t%s:fr_mem(frmask=[%s])\n"" (" """) (escape_sequence "\t") (string_content "%s:fr_mem(frmask=[%s])") (escape_sequence "\n") (" """)) (, ",") (string_literal ""P6"" (" """) (string_content "P6") (" """)) (, ",") (identifier "puVar4") () ")"))) (; ";")) (return_statement "return param_1;" (return "return") (identifier "param_1") (; ";")) (} "}")))

type_1 * function_1(type_1 *dp,type_2 var_1,void *arg,type_1 *end)

{
  bool bVar1;
  char var_4;
  type_3 var_2;
  char *var_3;
  type_4 *puVar5;
  char grstr [200];
  
  var_2 = (type_3)(var_1 & 0xf);
  var_3 = grstr;
  if ((var_1 & 0x10) != 0) {
    var_4 = '4';
    bVar1 = false;
    var_3 = grstr;
    do {
      puVar5 = var_3;
      if ((var_2 & 1) != 0) {
        if (bVar1) {
          *var_3 = 0x2c;
          var_3 = var_3 + 1;
        }
        *var_3 = 0x72;
        puVar5 = var_3 + 2;
        bVar1 = true;
        var_3[1] = var_4;
      }
      var_4 = var_4 + '\x01';
      var_2 = var_2 >> 1;
      var_3 = puVar5;
    } while (var_4 != '8');
    *puVar5 = 0;
    var_5("\t%s:gr_mem(grmask=[%s])\n","P6");
    return dp;
  }
  var_6(grstr,var_1 & 0xf);
  var_5("\t%s:fr_mem(frmask=[%s])\n","P6",var_3);
  return dp;
}


(translation_unit (function_definition type: (type_identifier) declarator: (function_declarator declarator: (identifier) parameters: (parameter_list (parameter_declaration type: (type_identifier) declarator: (identifier)) (parameter_declaration type: (type_identifier) declarator: (identifier)))) body: (compound_statement (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (array_declarator declarator: (identifier) size: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (identifier) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (char_literal (character)))) (expression_statement (assignment_expression left: (identifier) right: (false))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (identifier)) consequence: (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (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: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (true))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (char_literal (escape_sequence))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (identifier)))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (char_literal (character))))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (number_literal))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (string_literal (escape_sequence) (string_content) (escape_sequence)) (string_literal (string_content))))) (return_statement (identifier)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (binary_expression left: (identifier) right: (number_literal))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (string_literal (escape_sequence) (string_content) (escape_sequence)) (string_literal (string_content)) (identifier)))) (return_statement (identifier)))))

undefined8 MASKED(undefined8 param_1,uint param_2)

{
  bool bVar1;
  char cVar2;
  ulong uVar3;
  undefined1 *puVar4;
  undefined1 *puVar5;
  undefined1 local_d8 [208];
  
  uVar3 = (ulong)(param_2 & 0xf);
  puVar4 = local_d8;
  if ((param_2 & 0x10) != 0) {
    cVar2 = '4';
    bVar1 = false;
    puVar4 = local_d8;
    do {
      puVar5 = puVar4;
      if ((uVar3 & 1) != 0) {
        if (bVar1) {
          *puVar4 = 0x2c;
          puVar4 = puVar4 + 1;
        }
        *puVar4 = 0x72;
        puVar5 = puVar4 + 2;
        bVar1 = true;
        puVar4[1] = cVar2;
      }
      cVar2 = cVar2 + '\x01';
      uVar3 = uVar3 >> 1;
      puVar4 = puVar5;
    } while (cVar2 != '8');
    *puVar5 = 0;
    printf("\t%s:gr_mem(grmask=[%s])\n","P6");
    return param_1;
  }
  FUN_0013b5d0(local_d8,param_2 & 0xf);
  printf("\t%s:fr_mem(frmask=[%s])\n","P6",puVar4);
  return param_1;
}

