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

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

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



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

undefined4 FUN_0004ae10(undefined4 param_1,uint param_2)

{
  bool bVar1;
  char cVar2;
  undefined1 *puVar3;
  uint uVar4;
  undefined1 *puVar5;
  undefined1 local_e4 [208];
  undefined4 uStack_14;
  
  uStack_14 = 0x4ae19;
  uVar4 = param_2 & 0xf;
  if ((param_2 & 0x10) == 0) {
    FUN_0004ac50();
    printf("\t%s:fr_mem(frmask=[%s])\n","P6",local_e4);
  }
  else {
    cVar2 = '4';
    bVar1 = false;
    puVar3 = local_e4;
    do {
      puVar5 = puVar3;
      if ((uVar4 & 1) != 0) {
        if (bVar1) {
          *puVar3 = 0x2c;
          puVar3 = puVar3 + 1;
        }
        *puVar3 = 0x72;
        puVar5 = puVar3 + 2;
        bVar1 = true;
        puVar3[1] = cVar2;
      }
      cVar2 = cVar2 + '\x01';
      uVar4 = uVar4 >> 1;
      puVar3 = puVar5;
    } while (cVar2 != '8');
    *puVar5 = 0;
    printf("\t%s:gr_mem(grmask=[%s])\n","P6",local_e4);
  }
  return param_1;
}


PUSH EBP
PUSH EDI
PUSH ESI
PUSH EBX
CALL 0x00013f70
ADD EBX,0x691e7
SUB ESP,0xdc
MOV EAX,dword ptr [ESP + 0xf4]
MOV EDX,EAX
AND EDX,0xf
TEST AL,0x10
JZ 0x0004aea0
LEA EBP,[ESP + 0x8]
MOV EAX,0x34
XOR EDI,EDI
MOV ESI,EBP
TEST DL,0x1
JZ 0x0004ae61
MOV ECX,ESI
TEST EDI,EDI
JZ 0x0004ae53
MOV byte ptr [ESI],0x2c
ADD ECX,0x1
MOV byte ptr [ECX],0x72
LEA ESI,[ECX + 0x2]
MOV EDI,0x1
MOV byte ptr [ECX + 0x1],AL
ADD EAX,0x1
SHR EDX,0x1
CMP AL,0x38
JNZ 0x0004ae42
SUB ESP,0x4
LEA EAX,[EBX + 0xfffbc8f1]
MOV byte ptr [ESI],0x0
PUSH EBP
PUSH EAX
LEA EAX,[EBX + 0xfffda5fc]
PUSH EAX
CALL 0x00013060
ADD ESP,0x10
MOV EAX,dword ptr [ESP + 0xf0]
ADD ESP,0xdc
POP EBX
POP ESI
POP EDI
POP EBP
RET
LEA ESI,[ESP + 0x8]
MOV EAX,ESI
CALL 0x0004ac50
SUB ESP,0x4
LEA EAX,[EBX + 0xfffbc8f1]
PUSH ESI
PUSH EAX
LEA EAX,[EBX + 0xfffda615]
PUSH EAX
CALL 0x00013060
ADD ESP,0x10
JMP 0x0004ae87
(translation_unit "/* WARNING: Function: __i686.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n\nundefined4 FUN_0004ae10(undefined4 param_1,uint param_2)\n\n{\n  bool bVar1;\n  char cVar2;\n  undefined1 *puVar3;\n  uint uVar4;\n  undefined1 *puVar5;\n  undefined1 local_e4 [208];\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x4ae19;\n  uVar4 = param_2 & 0xf;\n  if ((param_2 & 0x10) == 0) {\n    FUN_0004ac50();\n    printf("\t%s:fr_mem(frmask=[%s])\n","P6",local_e4);\n  }\n  else {\n    cVar2 = '4';\n    bVar1 = false;\n    puVar3 = local_e4;\n    do {\n      puVar5 = puVar3;\n      if ((uVar4 & 1) != 0) {\n        if (bVar1) {\n          *puVar3 = 0x2c;\n          puVar3 = puVar3 + 1;\n        }\n        *puVar3 = 0x72;\n        puVar5 = puVar3 + 2;\n        bVar1 = true;\n        puVar3[1] = cVar2;\n      }\n      cVar2 = cVar2 + '\x01';\n      uVar4 = uVar4 >> 1;\n      puVar3 = puVar5;\n    } while (cVar2 != '8');\n    *puVar5 = 0;\n    printf("\t%s:gr_mem(grmask=[%s])\n","P6",local_e4);\n  }\n  return param_1;\n}\n\n" comment (function_definition "undefined4 FUN_0004ae10(undefined4 param_1,uint param_2)\n\n{\n  bool bVar1;\n  char cVar2;\n  undefined1 *puVar3;\n  uint uVar4;\n  undefined1 *puVar5;\n  undefined1 local_e4 [208];\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x4ae19;\n  uVar4 = param_2 & 0xf;\n  if ((param_2 & 0x10) == 0) {\n    FUN_0004ac50();\n    printf("\t%s:fr_mem(frmask=[%s])\n","P6",local_e4);\n  }\n  else {\n    cVar2 = '4';\n    bVar1 = false;\n    puVar3 = local_e4;\n    do {\n      puVar5 = puVar3;\n      if ((uVar4 & 1) != 0) {\n        if (bVar1) {\n          *puVar3 = 0x2c;\n          puVar3 = puVar3 + 1;\n        }\n        *puVar3 = 0x72;\n        puVar5 = puVar3 + 2;\n        bVar1 = true;\n        puVar3[1] = cVar2;\n      }\n      cVar2 = cVar2 + '\x01';\n      uVar4 = uVar4 >> 1;\n      puVar3 = puVar5;\n    } while (cVar2 != '8');\n    *puVar5 = 0;\n    printf("\t%s:gr_mem(grmask=[%s])\n","P6",local_e4);\n  }\n  return param_1;\n}" type_identifier (function_declarator "FUN_0004ae10(undefined4 param_1,uint param_2)" identifier (parameter_list "(undefined4 param_1,uint param_2)" ( (parameter_declaration "undefined4 param_1" type_identifier identifier) , (parameter_declaration "uint param_2" type_identifier identifier) ))) (compound_statement "{\n  bool bVar1;\n  char cVar2;\n  undefined1 *puVar3;\n  uint uVar4;\n  undefined1 *puVar5;\n  undefined1 local_e4 [208];\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x4ae19;\n  uVar4 = param_2 & 0xf;\n  if ((param_2 & 0x10) == 0) {\n    FUN_0004ac50();\n    printf("\t%s:fr_mem(frmask=[%s])\n","P6",local_e4);\n  }\n  else {\n    cVar2 = '4';\n    bVar1 = false;\n    puVar3 = local_e4;\n    do {\n      puVar5 = puVar3;\n      if ((uVar4 & 1) != 0) {\n        if (bVar1) {\n          *puVar3 = 0x2c;\n          puVar3 = puVar3 + 1;\n        }\n        *puVar3 = 0x72;\n        puVar5 = puVar3 + 2;\n        bVar1 = true;\n        puVar3[1] = cVar2;\n      }\n      cVar2 = cVar2 + '\x01';\n      uVar4 = uVar4 >> 1;\n      puVar3 = puVar5;\n    } while (cVar2 != '8');\n    *puVar5 = 0;\n    printf("\t%s:gr_mem(grmask=[%s])\n","P6",local_e4);\n  }\n  return param_1;\n}" { (declaration "bool bVar1;" primitive_type identifier ;) (declaration "char cVar2;" primitive_type identifier ;) (declaration "undefined1 *puVar3;" type_identifier (pointer_declarator "*puVar3" * identifier) ;) (declaration "uint uVar4;" type_identifier identifier ;) (declaration "undefined1 *puVar5;" type_identifier (pointer_declarator "*puVar5" * identifier) ;) (declaration "undefined1 local_e4 [208];" type_identifier (array_declarator "local_e4 [208]" identifier [ number_literal ]) ;) (declaration "undefined4 uStack_14;" type_identifier identifier ;) (expression_statement "uStack_14 = 0x4ae19;" (assignment_expression "uStack_14 = 0x4ae19" identifier = number_literal) ;) (expression_statement "uVar4 = param_2 & 0xf;" (assignment_expression "uVar4 = param_2 & 0xf" identifier = (binary_expression "param_2 & 0xf" identifier & number_literal)) ;) (if_statement "if ((param_2 & 0x10) == 0) {\n    FUN_0004ac50();\n    printf("\t%s:fr_mem(frmask=[%s])\n","P6",local_e4);\n  }\n  else {\n    cVar2 = '4';\n    bVar1 = false;\n    puVar3 = local_e4;\n    do {\n      puVar5 = puVar3;\n      if ((uVar4 & 1) != 0) {\n        if (bVar1) {\n          *puVar3 = 0x2c;\n          puVar3 = puVar3 + 1;\n        }\n        *puVar3 = 0x72;\n        puVar5 = puVar3 + 2;\n        bVar1 = true;\n        puVar3[1] = cVar2;\n      }\n      cVar2 = cVar2 + '\x01';\n      uVar4 = uVar4 >> 1;\n      puVar3 = puVar5;\n    } while (cVar2 != '8');\n    *puVar5 = 0;\n    printf("\t%s:gr_mem(grmask=[%s])\n","P6",local_e4);\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    FUN_0004ac50();\n    printf("\t%s:fr_mem(frmask=[%s])\n","P6",local_e4);\n  }" { (expression_statement "FUN_0004ac50();" (call_expression "FUN_0004ac50()" identifier (argument_list "()" ( ))) ;) (expression_statement "printf("\t%s:fr_mem(frmask=[%s])\n","P6",local_e4);" (call_expression "printf("\t%s:fr_mem(frmask=[%s])\n","P6",local_e4)" identifier (argument_list "("\t%s:fr_mem(frmask=[%s])\n","P6",local_e4)" ( (string_literal ""\t%s:fr_mem(frmask=[%s])\n"" " escape_sequence string_content escape_sequence ") , (string_literal ""P6"" " string_content ") , identifier ))) ;) }) (else_clause "else {\n    cVar2 = '4';\n    bVar1 = false;\n    puVar3 = local_e4;\n    do {\n      puVar5 = puVar3;\n      if ((uVar4 & 1) != 0) {\n        if (bVar1) {\n          *puVar3 = 0x2c;\n          puVar3 = puVar3 + 1;\n        }\n        *puVar3 = 0x72;\n        puVar5 = puVar3 + 2;\n        bVar1 = true;\n        puVar3[1] = cVar2;\n      }\n      cVar2 = cVar2 + '\x01';\n      uVar4 = uVar4 >> 1;\n      puVar3 = puVar5;\n    } while (cVar2 != '8');\n    *puVar5 = 0;\n    printf("\t%s:gr_mem(grmask=[%s])\n","P6",local_e4);\n  }" else (compound_statement "{\n    cVar2 = '4';\n    bVar1 = false;\n    puVar3 = local_e4;\n    do {\n      puVar5 = puVar3;\n      if ((uVar4 & 1) != 0) {\n        if (bVar1) {\n          *puVar3 = 0x2c;\n          puVar3 = puVar3 + 1;\n        }\n        *puVar3 = 0x72;\n        puVar5 = puVar3 + 2;\n        bVar1 = true;\n        puVar3[1] = cVar2;\n      }\n      cVar2 = cVar2 + '\x01';\n      uVar4 = uVar4 >> 1;\n      puVar3 = puVar5;\n    } while (cVar2 != '8');\n    *puVar5 = 0;\n    printf("\t%s:gr_mem(grmask=[%s])\n","P6",local_e4);\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 "puVar3 = local_e4;" (assignment_expression "puVar3 = local_e4" identifier = identifier) ;) (do_statement "do {\n      puVar5 = puVar3;\n      if ((uVar4 & 1) != 0) {\n        if (bVar1) {\n          *puVar3 = 0x2c;\n          puVar3 = puVar3 + 1;\n        }\n        *puVar3 = 0x72;\n        puVar5 = puVar3 + 2;\n        bVar1 = true;\n        puVar3[1] = cVar2;\n      }\n      cVar2 = cVar2 + '\x01';\n      uVar4 = uVar4 >> 1;\n      puVar3 = puVar5;\n    } while (cVar2 != '8');" do (compound_statement "{\n      puVar5 = puVar3;\n      if ((uVar4 & 1) != 0) {\n        if (bVar1) {\n          *puVar3 = 0x2c;\n          puVar3 = puVar3 + 1;\n        }\n        *puVar3 = 0x72;\n        puVar5 = puVar3 + 2;\n        bVar1 = true;\n        puVar3[1] = cVar2;\n      }\n      cVar2 = cVar2 + '\x01';\n      uVar4 = uVar4 >> 1;\n      puVar3 = puVar5;\n    }" { (expression_statement "puVar5 = puVar3;" (assignment_expression "puVar5 = puVar3" identifier = identifier) ;) (if_statement "if ((uVar4 & 1) != 0) {\n        if (bVar1) {\n          *puVar3 = 0x2c;\n          puVar3 = puVar3 + 1;\n        }\n        *puVar3 = 0x72;\n        puVar5 = puVar3 + 2;\n        bVar1 = true;\n        puVar3[1] = cVar2;\n      }" if (parenthesized_expression "((uVar4 & 1) != 0)" ( (binary_expression "(uVar4 & 1) != 0" (parenthesized_expression "(uVar4 & 1)" ( (binary_expression "uVar4 & 1" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n        if (bVar1) {\n          *puVar3 = 0x2c;\n          puVar3 = puVar3 + 1;\n        }\n        *puVar3 = 0x72;\n        puVar5 = puVar3 + 2;\n        bVar1 = true;\n        puVar3[1] = cVar2;\n      }" { (if_statement "if (bVar1) {\n          *puVar3 = 0x2c;\n          puVar3 = puVar3 + 1;\n        }" if (parenthesized_expression "(bVar1)" ( identifier )) (compound_statement "{\n          *puVar3 = 0x2c;\n          puVar3 = puVar3 + 1;\n        }" { (expression_statement "*puVar3 = 0x2c;" (assignment_expression "*puVar3 = 0x2c" (pointer_expression "*puVar3" * identifier) = number_literal) ;) (expression_statement "puVar3 = puVar3 + 1;" (assignment_expression "puVar3 = puVar3 + 1" identifier = (binary_expression "puVar3 + 1" identifier + number_literal)) ;) })) (expression_statement "*puVar3 = 0x72;" (assignment_expression "*puVar3 = 0x72" (pointer_expression "*puVar3" * identifier) = number_literal) ;) (expression_statement "puVar5 = puVar3 + 2;" (assignment_expression "puVar5 = puVar3 + 2" identifier = (binary_expression "puVar3 + 2" identifier + number_literal)) ;) (expression_statement "bVar1 = true;" (assignment_expression "bVar1 = true" identifier = true) ;) (expression_statement "puVar3[1] = cVar2;" (assignment_expression "puVar3[1] = cVar2" (subscript_expression "puVar3[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 "uVar4 = uVar4 >> 1;" (assignment_expression "uVar4 = uVar4 >> 1" identifier = (binary_expression "uVar4 >> 1" identifier >> number_literal)) ;) (expression_statement "puVar3 = puVar5;" (assignment_expression "puVar3 = 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",local_e4);" (call_expression "printf("\t%s:gr_mem(grmask=[%s])\n","P6",local_e4)" identifier (argument_list "("\t%s:gr_mem(grmask=[%s])\n","P6",local_e4)" ( (string_literal ""\t%s:gr_mem(grmask=[%s])\n"" " escape_sequence string_content escape_sequence ") , (string_literal ""P6"" " string_content ") , identifier ))) ;) }))) (return_statement "return param_1;" return identifier ;) })))
(translation_unit "/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n/* WARNING: Unknown calling convention */\n\nuchar * unw_decode_p6(uchar *dp,uint code,void *arg,uchar *end)\n\n{\n  bool bVar1;\n  char cVar2;\n  char *pcVar3;\n  uint mask;\n  char *pcVar4;\n  char grstr [200];\n  \n  mask = code & 0xf;\n  if ((code & 0x10) == 0) {\n    unw_print_frmask(grstr,mask);\n    printf("\t%s:fr_mem(frmask=[%s])\n","P6",grstr);\n  }\n  else {\n    cVar2 = '4';\n    bVar1 = false;\n    pcVar3 = grstr;\n    do {\n      pcVar4 = pcVar3;\n      if ((mask & 1) != 0) {\n        if (bVar1) {\n          *pcVar3 = ',';\n          pcVar3 = pcVar3 + 1;\n        }\n        *pcVar3 = 'r';\n        pcVar4 = pcVar3 + 2;\n        bVar1 = true;\n        pcVar3[1] = cVar2;\n      }\n      cVar2 = cVar2 + '\x01';\n      mask = mask >> 1;\n      pcVar3 = pcVar4;\n    } while (cVar2 != '8');\n    *pcVar4 = '\0';\n    printf("\t%s:gr_mem(grmask=[%s])\n","P6",grstr);\n  }\n  return dp;\n}\n\n" comment comment (function_definition "uchar * unw_decode_p6(uchar *dp,uint code,void *arg,uchar *end)\n\n{\n  bool bVar1;\n  char cVar2;\n  char *pcVar3;\n  uint mask;\n  char *pcVar4;\n  char grstr [200];\n  \n  mask = code & 0xf;\n  if ((code & 0x10) == 0) {\n    unw_print_frmask(grstr,mask);\n    printf("\t%s:fr_mem(frmask=[%s])\n","P6",grstr);\n  }\n  else {\n    cVar2 = '4';\n    bVar1 = false;\n    pcVar3 = grstr;\n    do {\n      pcVar4 = pcVar3;\n      if ((mask & 1) != 0) {\n        if (bVar1) {\n          *pcVar3 = ',';\n          pcVar3 = pcVar3 + 1;\n        }\n        *pcVar3 = 'r';\n        pcVar4 = pcVar3 + 2;\n        bVar1 = true;\n        pcVar3[1] = cVar2;\n      }\n      cVar2 = cVar2 + '\x01';\n      mask = mask >> 1;\n      pcVar3 = pcVar4;\n    } while (cVar2 != '8');\n    *pcVar4 = '\0';\n    printf("\t%s:gr_mem(grmask=[%s])\n","P6",grstr);\n  }\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  char *pcVar3;\n  uint mask;\n  char *pcVar4;\n  char grstr [200];\n  \n  mask = code & 0xf;\n  if ((code & 0x10) == 0) {\n    unw_print_frmask(grstr,mask);\n    printf("\t%s:fr_mem(frmask=[%s])\n","P6",grstr);\n  }\n  else {\n    cVar2 = '4';\n    bVar1 = false;\n    pcVar3 = grstr;\n    do {\n      pcVar4 = pcVar3;\n      if ((mask & 1) != 0) {\n        if (bVar1) {\n          *pcVar3 = ',';\n          pcVar3 = pcVar3 + 1;\n        }\n        *pcVar3 = 'r';\n        pcVar4 = pcVar3 + 2;\n        bVar1 = true;\n        pcVar3[1] = cVar2;\n      }\n      cVar2 = cVar2 + '\x01';\n      mask = mask >> 1;\n      pcVar3 = pcVar4;\n    } while (cVar2 != '8');\n    *pcVar4 = '\0';\n    printf("\t%s:gr_mem(grmask=[%s])\n","P6",grstr);\n  }\n  return dp;\n}" { (declaration "bool bVar1;" primitive_type identifier ;) (declaration "char cVar2;" primitive_type identifier ;) (declaration "char *pcVar3;" primitive_type (pointer_declarator "*pcVar3" * identifier) ;) (declaration "uint mask;" type_identifier identifier ;) (declaration "char *pcVar4;" primitive_type (pointer_declarator "*pcVar4" * identifier) ;) (declaration "char grstr [200];" primitive_type (array_declarator "grstr [200]" identifier [ number_literal ]) ;) (expression_statement "mask = code & 0xf;" (assignment_expression "mask = code & 0xf" identifier = (binary_expression "code & 0xf" identifier & number_literal)) ;) (if_statement "if ((code & 0x10) == 0) {\n    unw_print_frmask(grstr,mask);\n    printf("\t%s:fr_mem(frmask=[%s])\n","P6",grstr);\n  }\n  else {\n    cVar2 = '4';\n    bVar1 = false;\n    pcVar3 = grstr;\n    do {\n      pcVar4 = pcVar3;\n      if ((mask & 1) != 0) {\n        if (bVar1) {\n          *pcVar3 = ',';\n          pcVar3 = pcVar3 + 1;\n        }\n        *pcVar3 = 'r';\n        pcVar4 = pcVar3 + 2;\n        bVar1 = true;\n        pcVar3[1] = cVar2;\n      }\n      cVar2 = cVar2 + '\x01';\n      mask = mask >> 1;\n      pcVar3 = pcVar4;\n    } while (cVar2 != '8');\n    *pcVar4 = '\0';\n    printf("\t%s:gr_mem(grmask=[%s])\n","P6",grstr);\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    unw_print_frmask(grstr,mask);\n    printf("\t%s:fr_mem(frmask=[%s])\n","P6",grstr);\n  }" { (expression_statement "unw_print_frmask(grstr,mask);" (call_expression "unw_print_frmask(grstr,mask)" identifier (argument_list "(grstr,mask)" ( identifier , identifier ))) ;) (expression_statement "printf("\t%s:fr_mem(frmask=[%s])\n","P6",grstr);" (call_expression "printf("\t%s:fr_mem(frmask=[%s])\n","P6",grstr)" identifier (argument_list "("\t%s:fr_mem(frmask=[%s])\n","P6",grstr)" ( (string_literal ""\t%s:fr_mem(frmask=[%s])\n"" " escape_sequence string_content escape_sequence ") , (string_literal ""P6"" " string_content ") , identifier ))) ;) }) (else_clause "else {\n    cVar2 = '4';\n    bVar1 = false;\n    pcVar3 = grstr;\n    do {\n      pcVar4 = pcVar3;\n      if ((mask & 1) != 0) {\n        if (bVar1) {\n          *pcVar3 = ',';\n          pcVar3 = pcVar3 + 1;\n        }\n        *pcVar3 = 'r';\n        pcVar4 = pcVar3 + 2;\n        bVar1 = true;\n        pcVar3[1] = cVar2;\n      }\n      cVar2 = cVar2 + '\x01';\n      mask = mask >> 1;\n      pcVar3 = pcVar4;\n    } while (cVar2 != '8');\n    *pcVar4 = '\0';\n    printf("\t%s:gr_mem(grmask=[%s])\n","P6",grstr);\n  }" else (compound_statement "{\n    cVar2 = '4';\n    bVar1 = false;\n    pcVar3 = grstr;\n    do {\n      pcVar4 = pcVar3;\n      if ((mask & 1) != 0) {\n        if (bVar1) {\n          *pcVar3 = ',';\n          pcVar3 = pcVar3 + 1;\n        }\n        *pcVar3 = 'r';\n        pcVar4 = pcVar3 + 2;\n        bVar1 = true;\n        pcVar3[1] = cVar2;\n      }\n      cVar2 = cVar2 + '\x01';\n      mask = mask >> 1;\n      pcVar3 = pcVar4;\n    } while (cVar2 != '8');\n    *pcVar4 = '\0';\n    printf("\t%s:gr_mem(grmask=[%s])\n","P6",grstr);\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 "pcVar3 = grstr;" (assignment_expression "pcVar3 = grstr" identifier = identifier) ;) (do_statement "do {\n      pcVar4 = pcVar3;\n      if ((mask & 1) != 0) {\n        if (bVar1) {\n          *pcVar3 = ',';\n          pcVar3 = pcVar3 + 1;\n        }\n        *pcVar3 = 'r';\n        pcVar4 = pcVar3 + 2;\n        bVar1 = true;\n        pcVar3[1] = cVar2;\n      }\n      cVar2 = cVar2 + '\x01';\n      mask = mask >> 1;\n      pcVar3 = pcVar4;\n    } while (cVar2 != '8');" do (compound_statement "{\n      pcVar4 = pcVar3;\n      if ((mask & 1) != 0) {\n        if (bVar1) {\n          *pcVar3 = ',';\n          pcVar3 = pcVar3 + 1;\n        }\n        *pcVar3 = 'r';\n        pcVar4 = pcVar3 + 2;\n        bVar1 = true;\n        pcVar3[1] = cVar2;\n      }\n      cVar2 = cVar2 + '\x01';\n      mask = mask >> 1;\n      pcVar3 = pcVar4;\n    }" { (expression_statement "pcVar4 = pcVar3;" (assignment_expression "pcVar4 = pcVar3" identifier = identifier) ;) (if_statement "if ((mask & 1) != 0) {\n        if (bVar1) {\n          *pcVar3 = ',';\n          pcVar3 = pcVar3 + 1;\n        }\n        *pcVar3 = 'r';\n        pcVar4 = pcVar3 + 2;\n        bVar1 = true;\n        pcVar3[1] = cVar2;\n      }" if (parenthesized_expression "((mask & 1) != 0)" ( (binary_expression "(mask & 1) != 0" (parenthesized_expression "(mask & 1)" ( (binary_expression "mask & 1" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n        if (bVar1) {\n          *pcVar3 = ',';\n          pcVar3 = pcVar3 + 1;\n        }\n        *pcVar3 = 'r';\n        pcVar4 = pcVar3 + 2;\n        bVar1 = true;\n        pcVar3[1] = cVar2;\n      }" { (if_statement "if (bVar1) {\n          *pcVar3 = ',';\n          pcVar3 = pcVar3 + 1;\n        }" if (parenthesized_expression "(bVar1)" ( identifier )) (compound_statement "{\n          *pcVar3 = ',';\n          pcVar3 = pcVar3 + 1;\n        }" { (expression_statement "*pcVar3 = ',';" (assignment_expression "*pcVar3 = ','" (pointer_expression "*pcVar3" * identifier) = (char_literal "','" ' character ')) ;) (expression_statement "pcVar3 = pcVar3 + 1;" (assignment_expression "pcVar3 = pcVar3 + 1" identifier = (binary_expression "pcVar3 + 1" identifier + number_literal)) ;) })) (expression_statement "*pcVar3 = 'r';" (assignment_expression "*pcVar3 = 'r'" (pointer_expression "*pcVar3" * identifier) = (char_literal "'r'" ' character ')) ;) (expression_statement "pcVar4 = pcVar3 + 2;" (assignment_expression "pcVar4 = pcVar3 + 2" identifier = (binary_expression "pcVar3 + 2" identifier + number_literal)) ;) (expression_statement "bVar1 = true;" (assignment_expression "bVar1 = true" identifier = true) ;) (expression_statement "pcVar3[1] = cVar2;" (assignment_expression "pcVar3[1] = cVar2" (subscript_expression "pcVar3[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 "mask = mask >> 1;" (assignment_expression "mask = mask >> 1" identifier = (binary_expression "mask >> 1" identifier >> number_literal)) ;) (expression_statement "pcVar3 = pcVar4;" (assignment_expression "pcVar3 = pcVar4" identifier = identifier) ;) }) while (parenthesized_expression "(cVar2 != '8')" ( (binary_expression "cVar2 != '8'" identifier != (char_literal "'8'" ' character ')) )) ;) (expression_statement "*pcVar4 = '\0';" (assignment_expression "*pcVar4 = '\0'" (pointer_expression "*pcVar4" * identifier) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "printf("\t%s:gr_mem(grmask=[%s])\n","P6",grstr);" (call_expression "printf("\t%s:gr_mem(grmask=[%s])\n","P6",grstr)" identifier (argument_list "("\t%s:gr_mem(grmask=[%s])\n","P6",grstr)" ( (string_literal ""\t%s:gr_mem(grmask=[%s])\n"" " escape_sequence string_content escape_sequence ") , (string_literal ""P6"" " string_content ") , identifier ))) ;) }))) (return_statement "return dp;" return identifier ;) })))
(translation_unit "undefined4 FUN_0004ae10(undefined4 param_1,uint param_2)\n\n{\n  bool bVar1;\n  char cVar2;\n  undefined1 *puVar3;\n  uint uVar4;\n  undefined1 *puVar5;\n  undefined1 local_e4 [208];\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x4ae19;\n  uVar4 = param_2 & 0xf;\n  if ((param_2 & 0x10) == 0) {\n    FUN_0004ac50();\n    printf("\t%s:fr_mem(frmask=[%s])\n","P6",local_e4);\n  }\n  else {\n    cVar2 = '4';\n    bVar1 = false;\n    puVar3 = local_e4;\n    do {\n      puVar5 = puVar3;\n      if ((uVar4 & 1) != 0) {\n        if (bVar1) {\n          *puVar3 = 0x2c;\n          puVar3 = puVar3 + 1;\n        }\n        *puVar3 = 0x72;\n        puVar5 = puVar3 + 2;\n        bVar1 = true;\n        puVar3[1] = cVar2;\n      }\n      cVar2 = cVar2 + '\x01';\n      uVar4 = uVar4 >> 1;\n      puVar3 = puVar5;\n    } while (cVar2 != '8');\n    *puVar5 = 0;\n    printf("\t%s:gr_mem(grmask=[%s])\n","P6",local_e4);\n  }\n  return param_1;\n}\n\n" (function_definition "undefined4 FUN_0004ae10(undefined4 param_1,uint param_2)\n\n{\n  bool bVar1;\n  char cVar2;\n  undefined1 *puVar3;\n  uint uVar4;\n  undefined1 *puVar5;\n  undefined1 local_e4 [208];\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x4ae19;\n  uVar4 = param_2 & 0xf;\n  if ((param_2 & 0x10) == 0) {\n    FUN_0004ac50();\n    printf("\t%s:fr_mem(frmask=[%s])\n","P6",local_e4);\n  }\n  else {\n    cVar2 = '4';\n    bVar1 = false;\n    puVar3 = local_e4;\n    do {\n      puVar5 = puVar3;\n      if ((uVar4 & 1) != 0) {\n        if (bVar1) {\n          *puVar3 = 0x2c;\n          puVar3 = puVar3 + 1;\n        }\n        *puVar3 = 0x72;\n        puVar5 = puVar3 + 2;\n        bVar1 = true;\n        puVar3[1] = cVar2;\n      }\n      cVar2 = cVar2 + '\x01';\n      uVar4 = uVar4 >> 1;\n      puVar3 = puVar5;\n    } while (cVar2 != '8');\n    *puVar5 = 0;\n    printf("\t%s:gr_mem(grmask=[%s])\n","P6",local_e4);\n  }\n  return param_1;\n}" type_identifier (function_declarator "FUN_0004ae10(undefined4 param_1,uint param_2)" identifier (parameter_list "(undefined4 param_1,uint param_2)" ( (parameter_declaration "undefined4 param_1" type_identifier identifier) , (parameter_declaration "uint param_2" type_identifier identifier) ))) (compound_statement "{\n  bool bVar1;\n  char cVar2;\n  undefined1 *puVar3;\n  uint uVar4;\n  undefined1 *puVar5;\n  undefined1 local_e4 [208];\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x4ae19;\n  uVar4 = param_2 & 0xf;\n  if ((param_2 & 0x10) == 0) {\n    FUN_0004ac50();\n    printf("\t%s:fr_mem(frmask=[%s])\n","P6",local_e4);\n  }\n  else {\n    cVar2 = '4';\n    bVar1 = false;\n    puVar3 = local_e4;\n    do {\n      puVar5 = puVar3;\n      if ((uVar4 & 1) != 0) {\n        if (bVar1) {\n          *puVar3 = 0x2c;\n          puVar3 = puVar3 + 1;\n        }\n        *puVar3 = 0x72;\n        puVar5 = puVar3 + 2;\n        bVar1 = true;\n        puVar3[1] = cVar2;\n      }\n      cVar2 = cVar2 + '\x01';\n      uVar4 = uVar4 >> 1;\n      puVar3 = puVar5;\n    } while (cVar2 != '8');\n    *puVar5 = 0;\n    printf("\t%s:gr_mem(grmask=[%s])\n","P6",local_e4);\n  }\n  return param_1;\n}" { (declaration "bool bVar1;" primitive_type identifier ;) (declaration "char cVar2;" primitive_type identifier ;) (declaration "undefined1 *puVar3;" type_identifier (pointer_declarator "*puVar3" * identifier) ;) (declaration "uint uVar4;" type_identifier identifier ;) (declaration "undefined1 *puVar5;" type_identifier (pointer_declarator "*puVar5" * identifier) ;) (declaration "undefined1 local_e4 [208];" type_identifier (array_declarator "local_e4 [208]" identifier [ number_literal ]) ;) (declaration "undefined4 uStack_14;" type_identifier identifier ;) (expression_statement "uStack_14 = 0x4ae19;" (assignment_expression "uStack_14 = 0x4ae19" identifier = number_literal) ;) (expression_statement "uVar4 = param_2 & 0xf;" (assignment_expression "uVar4 = param_2 & 0xf" identifier = (binary_expression "param_2 & 0xf" identifier & number_literal)) ;) (if_statement "if ((param_2 & 0x10) == 0) {\n    FUN_0004ac50();\n    printf("\t%s:fr_mem(frmask=[%s])\n","P6",local_e4);\n  }\n  else {\n    cVar2 = '4';\n    bVar1 = false;\n    puVar3 = local_e4;\n    do {\n      puVar5 = puVar3;\n      if ((uVar4 & 1) != 0) {\n        if (bVar1) {\n          *puVar3 = 0x2c;\n          puVar3 = puVar3 + 1;\n        }\n        *puVar3 = 0x72;\n        puVar5 = puVar3 + 2;\n        bVar1 = true;\n        puVar3[1] = cVar2;\n      }\n      cVar2 = cVar2 + '\x01';\n      uVar4 = uVar4 >> 1;\n      puVar3 = puVar5;\n    } while (cVar2 != '8');\n    *puVar5 = 0;\n    printf("\t%s:gr_mem(grmask=[%s])\n","P6",local_e4);\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    FUN_0004ac50();\n    printf("\t%s:fr_mem(frmask=[%s])\n","P6",local_e4);\n  }" { (expression_statement "FUN_0004ac50();" (call_expression "FUN_0004ac50()" identifier (argument_list "()" ( ))) ;) (expression_statement "printf("\t%s:fr_mem(frmask=[%s])\n","P6",local_e4);" (call_expression "printf("\t%s:fr_mem(frmask=[%s])\n","P6",local_e4)" identifier (argument_list "("\t%s:fr_mem(frmask=[%s])\n","P6",local_e4)" ( (string_literal ""\t%s:fr_mem(frmask=[%s])\n"" " escape_sequence string_content escape_sequence ") , (string_literal ""P6"" " string_content ") , identifier ))) ;) }) (else_clause "else {\n    cVar2 = '4';\n    bVar1 = false;\n    puVar3 = local_e4;\n    do {\n      puVar5 = puVar3;\n      if ((uVar4 & 1) != 0) {\n        if (bVar1) {\n          *puVar3 = 0x2c;\n          puVar3 = puVar3 + 1;\n        }\n        *puVar3 = 0x72;\n        puVar5 = puVar3 + 2;\n        bVar1 = true;\n        puVar3[1] = cVar2;\n      }\n      cVar2 = cVar2 + '\x01';\n      uVar4 = uVar4 >> 1;\n      puVar3 = puVar5;\n    } while (cVar2 != '8');\n    *puVar5 = 0;\n    printf("\t%s:gr_mem(grmask=[%s])\n","P6",local_e4);\n  }" else (compound_statement "{\n    cVar2 = '4';\n    bVar1 = false;\n    puVar3 = local_e4;\n    do {\n      puVar5 = puVar3;\n      if ((uVar4 & 1) != 0) {\n        if (bVar1) {\n          *puVar3 = 0x2c;\n          puVar3 = puVar3 + 1;\n        }\n        *puVar3 = 0x72;\n        puVar5 = puVar3 + 2;\n        bVar1 = true;\n        puVar3[1] = cVar2;\n      }\n      cVar2 = cVar2 + '\x01';\n      uVar4 = uVar4 >> 1;\n      puVar3 = puVar5;\n    } while (cVar2 != '8');\n    *puVar5 = 0;\n    printf("\t%s:gr_mem(grmask=[%s])\n","P6",local_e4);\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 "puVar3 = local_e4;" (assignment_expression "puVar3 = local_e4" identifier = identifier) ;) (do_statement "do {\n      puVar5 = puVar3;\n      if ((uVar4 & 1) != 0) {\n        if (bVar1) {\n          *puVar3 = 0x2c;\n          puVar3 = puVar3 + 1;\n        }\n        *puVar3 = 0x72;\n        puVar5 = puVar3 + 2;\n        bVar1 = true;\n        puVar3[1] = cVar2;\n      }\n      cVar2 = cVar2 + '\x01';\n      uVar4 = uVar4 >> 1;\n      puVar3 = puVar5;\n    } while (cVar2 != '8');" do (compound_statement "{\n      puVar5 = puVar3;\n      if ((uVar4 & 1) != 0) {\n        if (bVar1) {\n          *puVar3 = 0x2c;\n          puVar3 = puVar3 + 1;\n        }\n        *puVar3 = 0x72;\n        puVar5 = puVar3 + 2;\n        bVar1 = true;\n        puVar3[1] = cVar2;\n      }\n      cVar2 = cVar2 + '\x01';\n      uVar4 = uVar4 >> 1;\n      puVar3 = puVar5;\n    }" { (expression_statement "puVar5 = puVar3;" (assignment_expression "puVar5 = puVar3" identifier = identifier) ;) (if_statement "if ((uVar4 & 1) != 0) {\n        if (bVar1) {\n          *puVar3 = 0x2c;\n          puVar3 = puVar3 + 1;\n        }\n        *puVar3 = 0x72;\n        puVar5 = puVar3 + 2;\n        bVar1 = true;\n        puVar3[1] = cVar2;\n      }" if (parenthesized_expression "((uVar4 & 1) != 0)" ( (binary_expression "(uVar4 & 1) != 0" (parenthesized_expression "(uVar4 & 1)" ( (binary_expression "uVar4 & 1" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n        if (bVar1) {\n          *puVar3 = 0x2c;\n          puVar3 = puVar3 + 1;\n        }\n        *puVar3 = 0x72;\n        puVar5 = puVar3 + 2;\n        bVar1 = true;\n        puVar3[1] = cVar2;\n      }" { (if_statement "if (bVar1) {\n          *puVar3 = 0x2c;\n          puVar3 = puVar3 + 1;\n        }" if (parenthesized_expression "(bVar1)" ( identifier )) (compound_statement "{\n          *puVar3 = 0x2c;\n          puVar3 = puVar3 + 1;\n        }" { (expression_statement "*puVar3 = 0x2c;" (assignment_expression "*puVar3 = 0x2c" (pointer_expression "*puVar3" * identifier) = number_literal) ;) (expression_statement "puVar3 = puVar3 + 1;" (assignment_expression "puVar3 = puVar3 + 1" identifier = (binary_expression "puVar3 + 1" identifier + number_literal)) ;) })) (expression_statement "*puVar3 = 0x72;" (assignment_expression "*puVar3 = 0x72" (pointer_expression "*puVar3" * identifier) = number_literal) ;) (expression_statement "puVar5 = puVar3 + 2;" (assignment_expression "puVar5 = puVar3 + 2" identifier = (binary_expression "puVar3 + 2" identifier + number_literal)) ;) (expression_statement "bVar1 = true;" (assignment_expression "bVar1 = true" identifier = true) ;) (expression_statement "puVar3[1] = cVar2;" (assignment_expression "puVar3[1] = cVar2" (subscript_expression "puVar3[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 "uVar4 = uVar4 >> 1;" (assignment_expression "uVar4 = uVar4 >> 1" identifier = (binary_expression "uVar4 >> 1" identifier >> number_literal)) ;) (expression_statement "puVar3 = puVar5;" (assignment_expression "puVar3 = 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",local_e4);" (call_expression "printf("\t%s:gr_mem(grmask=[%s])\n","P6",local_e4)" identifier (argument_list "("\t%s:gr_mem(grmask=[%s])\n","P6",local_e4)" ( (string_literal ""\t%s:gr_mem(grmask=[%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 (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT & LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (call_expression IDENT (argument_list ( (string_literal " escape_sequence string_content escape_sequence ") , (string_literal " string_content ") , IDENT ))) ;) }) (else_clause else (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 ") , IDENT ))) ;) }))) (return_statement return IDENT ;) })))
(function_definition "undefined4 FUN_0004ae10(undefined4 param_1,uint param_2)\n\n{\n  bool bVar1;\n  char cVar2;\n  undefined1 *puVar3;\n  uint uVar4;\n  undefined1 *puVar5;\n  undefined1 local_e4 [208];\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x4ae19;\n  uVar4 = param_2 & 0xf;\n  if ((param_2 & 0x10) == 0) {\n    FUN_0004ac50();\n    printf("\t%s:fr_mem(frmask=[%s])\n","P6",local_e4);\n  }\n  else {\n    cVar2 = '4';\n    bVar1 = false;\n    puVar3 = local_e4;\n    do {\n      puVar5 = puVar3;\n      if ((uVar4 & 1) != 0) {\n        if (bVar1) {\n          *puVar3 = 0x2c;\n          puVar3 = puVar3 + 1;\n        }\n        *puVar3 = 0x72;\n        puVar5 = puVar3 + 2;\n        bVar1 = true;\n        puVar3[1] = cVar2;\n      }\n      cVar2 = cVar2 + '\x01';\n      uVar4 = uVar4 >> 1;\n      puVar3 = puVar5;\n    } while (cVar2 != '8');\n    *puVar5 = 0;\n    printf("\t%s:gr_mem(grmask=[%s])\n","P6",local_e4);\n  }\n  return param_1;\n}" (type_identifier "undefined4") (function_declarator "FUN_0004ae10(undefined4 param_1,uint param_2)" (identifier "FUN_0004ae10") (parameter_list "(undefined4 param_1,uint param_2)" (( "(") (parameter_declaration "undefined4 param_1" (type_identifier "undefined4") (identifier "param_1")) (, ",") (parameter_declaration "uint param_2" (type_identifier "uint") (identifier "param_2")) () ")"))) (compound_statement "{\n  bool bVar1;\n  char cVar2;\n  undefined1 *puVar3;\n  uint uVar4;\n  undefined1 *puVar5;\n  undefined1 local_e4 [208];\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x4ae19;\n  uVar4 = param_2 & 0xf;\n  if ((param_2 & 0x10) == 0) {\n    FUN_0004ac50();\n    printf("\t%s:fr_mem(frmask=[%s])\n","P6",local_e4);\n  }\n  else {\n    cVar2 = '4';\n    bVar1 = false;\n    puVar3 = local_e4;\n    do {\n      puVar5 = puVar3;\n      if ((uVar4 & 1) != 0) {\n        if (bVar1) {\n          *puVar3 = 0x2c;\n          puVar3 = puVar3 + 1;\n        }\n        *puVar3 = 0x72;\n        puVar5 = puVar3 + 2;\n        bVar1 = true;\n        puVar3[1] = cVar2;\n      }\n      cVar2 = cVar2 + '\x01';\n      uVar4 = uVar4 >> 1;\n      puVar3 = puVar5;\n    } while (cVar2 != '8');\n    *puVar5 = 0;\n    printf("\t%s:gr_mem(grmask=[%s])\n","P6",local_e4);\n  }\n  return param_1;\n}" ({ "{") (declaration "bool bVar1;" (primitive_type "bool") (identifier "bVar1") (; ";")) (declaration "char cVar2;" (primitive_type "char") (identifier "cVar2") (; ";")) (declaration "undefined1 *puVar3;" (type_identifier "undefined1") (pointer_declarator "*puVar3" (* "*") (identifier "puVar3")) (; ";")) (declaration "uint uVar4;" (type_identifier "uint") (identifier "uVar4") (; ";")) (declaration "undefined1 *puVar5;" (type_identifier "undefined1") (pointer_declarator "*puVar5" (* "*") (identifier "puVar5")) (; ";")) (declaration "undefined1 local_e4 [208];" (type_identifier "undefined1") (array_declarator "local_e4 [208]" (identifier "local_e4") ([ "[") (number_literal "208") (] "]")) (; ";")) (declaration "undefined4 uStack_14;" (type_identifier "undefined4") (identifier "uStack_14") (; ";")) (expression_statement "uStack_14 = 0x4ae19;" (assignment_expression "uStack_14 = 0x4ae19" (identifier "uStack_14") (= "=") (number_literal "0x4ae19")) (; ";")) (expression_statement "uVar4 = param_2 & 0xf;" (assignment_expression "uVar4 = param_2 & 0xf" (identifier "uVar4") (= "=") (binary_expression "param_2 & 0xf" (identifier "param_2") (& "&") (number_literal "0xf"))) (; ";")) (if_statement "if ((param_2 & 0x10) == 0) {\n    FUN_0004ac50();\n    printf("\t%s:fr_mem(frmask=[%s])\n","P6",local_e4);\n  }\n  else {\n    cVar2 = '4';\n    bVar1 = false;\n    puVar3 = local_e4;\n    do {\n      puVar5 = puVar3;\n      if ((uVar4 & 1) != 0) {\n        if (bVar1) {\n          *puVar3 = 0x2c;\n          puVar3 = puVar3 + 1;\n        }\n        *puVar3 = 0x72;\n        puVar5 = puVar3 + 2;\n        bVar1 = true;\n        puVar3[1] = cVar2;\n      }\n      cVar2 = cVar2 + '\x01';\n      uVar4 = uVar4 >> 1;\n      puVar3 = puVar5;\n    } while (cVar2 != '8');\n    *puVar5 = 0;\n    printf("\t%s:gr_mem(grmask=[%s])\n","P6",local_e4);\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    FUN_0004ac50();\n    printf("\t%s:fr_mem(frmask=[%s])\n","P6",local_e4);\n  }" ({ "{") (expression_statement "FUN_0004ac50();" (call_expression "FUN_0004ac50()" (identifier "FUN_0004ac50") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "printf("\t%s:fr_mem(frmask=[%s])\n","P6",local_e4);" (call_expression "printf("\t%s:fr_mem(frmask=[%s])\n","P6",local_e4)" (identifier "printf") (argument_list "("\t%s:fr_mem(frmask=[%s])\n","P6",local_e4)" (( "(") (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 "local_e4") () ")"))) (; ";")) (} "}")) (else_clause "else {\n    cVar2 = '4';\n    bVar1 = false;\n    puVar3 = local_e4;\n    do {\n      puVar5 = puVar3;\n      if ((uVar4 & 1) != 0) {\n        if (bVar1) {\n          *puVar3 = 0x2c;\n          puVar3 = puVar3 + 1;\n        }\n        *puVar3 = 0x72;\n        puVar5 = puVar3 + 2;\n        bVar1 = true;\n        puVar3[1] = cVar2;\n      }\n      cVar2 = cVar2 + '\x01';\n      uVar4 = uVar4 >> 1;\n      puVar3 = puVar5;\n    } while (cVar2 != '8');\n    *puVar5 = 0;\n    printf("\t%s:gr_mem(grmask=[%s])\n","P6",local_e4);\n  }" (else "else") (compound_statement "{\n    cVar2 = '4';\n    bVar1 = false;\n    puVar3 = local_e4;\n    do {\n      puVar5 = puVar3;\n      if ((uVar4 & 1) != 0) {\n        if (bVar1) {\n          *puVar3 = 0x2c;\n          puVar3 = puVar3 + 1;\n        }\n        *puVar3 = 0x72;\n        puVar5 = puVar3 + 2;\n        bVar1 = true;\n        puVar3[1] = cVar2;\n      }\n      cVar2 = cVar2 + '\x01';\n      uVar4 = uVar4 >> 1;\n      puVar3 = puVar5;\n    } while (cVar2 != '8');\n    *puVar5 = 0;\n    printf("\t%s:gr_mem(grmask=[%s])\n","P6",local_e4);\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 "puVar3 = local_e4;" (assignment_expression "puVar3 = local_e4" (identifier "puVar3") (= "=") (identifier "local_e4")) (; ";")) (do_statement "do {\n      puVar5 = puVar3;\n      if ((uVar4 & 1) != 0) {\n        if (bVar1) {\n          *puVar3 = 0x2c;\n          puVar3 = puVar3 + 1;\n        }\n        *puVar3 = 0x72;\n        puVar5 = puVar3 + 2;\n        bVar1 = true;\n        puVar3[1] = cVar2;\n      }\n      cVar2 = cVar2 + '\x01';\n      uVar4 = uVar4 >> 1;\n      puVar3 = puVar5;\n    } while (cVar2 != '8');" (do "do") (compound_statement "{\n      puVar5 = puVar3;\n      if ((uVar4 & 1) != 0) {\n        if (bVar1) {\n          *puVar3 = 0x2c;\n          puVar3 = puVar3 + 1;\n        }\n        *puVar3 = 0x72;\n        puVar5 = puVar3 + 2;\n        bVar1 = true;\n        puVar3[1] = cVar2;\n      }\n      cVar2 = cVar2 + '\x01';\n      uVar4 = uVar4 >> 1;\n      puVar3 = puVar5;\n    }" ({ "{") (expression_statement "puVar5 = puVar3;" (assignment_expression "puVar5 = puVar3" (identifier "puVar5") (= "=") (identifier "puVar3")) (; ";")) (if_statement "if ((uVar4 & 1) != 0) {\n        if (bVar1) {\n          *puVar3 = 0x2c;\n          puVar3 = puVar3 + 1;\n        }\n        *puVar3 = 0x72;\n        puVar5 = puVar3 + 2;\n        bVar1 = true;\n        puVar3[1] = cVar2;\n      }" (if "if") (parenthesized_expression "((uVar4 & 1) != 0)" (( "(") (binary_expression "(uVar4 & 1) != 0" (parenthesized_expression "(uVar4 & 1)" (( "(") (binary_expression "uVar4 & 1" (identifier "uVar4") (& "&") (number_literal "1")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n        if (bVar1) {\n          *puVar3 = 0x2c;\n          puVar3 = puVar3 + 1;\n        }\n        *puVar3 = 0x72;\n        puVar5 = puVar3 + 2;\n        bVar1 = true;\n        puVar3[1] = cVar2;\n      }" ({ "{") (if_statement "if (bVar1) {\n          *puVar3 = 0x2c;\n          puVar3 = puVar3 + 1;\n        }" (if "if") (parenthesized_expression "(bVar1)" (( "(") (identifier "bVar1") () ")")) (compound_statement "{\n          *puVar3 = 0x2c;\n          puVar3 = puVar3 + 1;\n        }" ({ "{") (expression_statement "*puVar3 = 0x2c;" (assignment_expression "*puVar3 = 0x2c" (pointer_expression "*puVar3" (* "*") (identifier "puVar3")) (= "=") (number_literal "0x2c")) (; ";")) (expression_statement "puVar3 = puVar3 + 1;" (assignment_expression "puVar3 = puVar3 + 1" (identifier "puVar3") (= "=") (binary_expression "puVar3 + 1" (identifier "puVar3") (+ "+") (number_literal "1"))) (; ";")) (} "}"))) (expression_statement "*puVar3 = 0x72;" (assignment_expression "*puVar3 = 0x72" (pointer_expression "*puVar3" (* "*") (identifier "puVar3")) (= "=") (number_literal "0x72")) (; ";")) (expression_statement "puVar5 = puVar3 + 2;" (assignment_expression "puVar5 = puVar3 + 2" (identifier "puVar5") (= "=") (binary_expression "puVar3 + 2" (identifier "puVar3") (+ "+") (number_literal "2"))) (; ";")) (expression_statement "bVar1 = true;" (assignment_expression "bVar1 = true" (identifier "bVar1") (= "=") (true "true")) (; ";")) (expression_statement "puVar3[1] = cVar2;" (assignment_expression "puVar3[1] = cVar2" (subscript_expression "puVar3[1]" (identifier "puVar3") ([ "[") (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 "uVar4 = uVar4 >> 1;" (assignment_expression "uVar4 = uVar4 >> 1" (identifier "uVar4") (= "=") (binary_expression "uVar4 >> 1" (identifier "uVar4") (>> ">>") (number_literal "1"))) (; ";")) (expression_statement "puVar3 = puVar5;" (assignment_expression "puVar3 = puVar5" (identifier "puVar3") (= "=") (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",local_e4);" (call_expression "printf("\t%s:gr_mem(grmask=[%s])\n","P6",local_e4)" (identifier "printf") (argument_list "("\t%s:gr_mem(grmask=[%s])\n","P6",local_e4)" (( "(") (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") (" """)) (, ",") (identifier "local_e4") () ")"))) (; ";")) (} "}")))) (return_statement "return param_1;" (return "return") (identifier "param_1") (; ";")) (} "}")))

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

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

{
  bool bVar1;
  char var_6;
  char *var_5;
  type_2 var_4;
  char *pcVar4;
  char grstr [200];
  
  var_4 = var_1 & 0xf;
  if ((var_1 & 0x10) == 0) {
    var_2(grstr,var_4);
    var_3("\t%s:fr_mem(frmask=[%s])\n","P6",grstr);
  }
  else {
    var_6 = '4';
    bVar1 = false;
    var_5 = grstr;
    do {
      pcVar4 = var_5;
      if ((var_4 & 1) != 0) {
        if (bVar1) {
          *var_5 = ',';
          var_5 = var_5 + 1;
        }
        *var_5 = 'r';
        pcVar4 = var_5 + 2;
        bVar1 = true;
        var_5[1] = var_6;
      }
      var_6 = var_6 + '\x01';
      var_4 = var_4 >> 1;
      var_5 = pcVar4;
    } while (var_6 != '8');
    *pcVar4 = '\0';
    var_3("\t%s:gr_mem(grmask=[%s])\n","P6",grstr);
  }
  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: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (array_declarator declarator: (identifier) size: (number_literal))) (declaration type: (type_identifier) declarator: (identifier)) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (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 (call_expression function: (identifier) arguments: (argument_list))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (string_literal (escape_sequence) (string_content) (escape_sequence)) (string_literal (string_content)) (identifier))))) alternative: (else_clause (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)) (identifier))))))) (return_statement (identifier)))))

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

undefined4 MASKED(undefined4 param_1,uint param_2)

{
  bool bVar1;
  char cVar2;
  undefined1 *puVar3;
  uint uVar4;
  undefined1 *puVar5;
  undefined1 local_e4 [208];
  undefined4 uStack_14;
  
  uStack_14 = 0x4ae19;
  uVar4 = param_2 & 0xf;
  if ((param_2 & 0x10) == 0) {
    FUN_0004ac50();
    printf("\t%s:fr_mem(frmask=[%s])\n","P6",local_e4);
  }
  else {
    cVar2 = '4';
    bVar1 = false;
    puVar3 = local_e4;
    do {
      puVar5 = puVar3;
      if ((uVar4 & 1) != 0) {
        if (bVar1) {
          *puVar3 = 0x2c;
          puVar3 = puVar3 + 1;
        }
        *puVar3 = 0x72;
        puVar5 = puVar3 + 2;
        bVar1 = true;
        puVar3[1] = cVar2;
      }
      cVar2 = cVar2 + '\x01';
      uVar4 = uVar4 >> 1;
      puVar3 = puVar5;
    } while (cVar2 != '8');
    *puVar5 = 0;
    printf("\t%s:gr_mem(grmask=[%s])\n","P6",local_e4);
  }
  return param_1;
}

