
uchar * unw_decode_x4(uchar *dp,uint code,void *arg)

{
  byte bVar1;
  byte bVar2;
  byte bVar3;
  byte bVar4;
  byte bVar5;
  byte *pbVar6;
  ulong uVar8;
  char regname_1 [20];
  char regname [20];
  byte *pbVar7;
  
  pbVar6 = dp + 4;
  bVar1 = *dp;
  bVar2 = dp[1];
  bVar3 = dp[2];
  uVar8 = (ulong)(dp[3] & 0x7f);
  if ((char)dp[3] < '\0') {
    bVar5 = 0;
    pbVar7 = pbVar6;
    do {
      pbVar6 = pbVar7 + 1;
      bVar4 = *pbVar7;
      bVar5 = bVar5 + 7;
      uVar8 = uVar8 | (ulong)(bVar4 & 0x7f) << (bVar5 & 0x3f);
      pbVar7 = pbVar6;
    } while ((char)bVar4 < '\0');
  }
  if (((char)bVar2 < '\0') || (bVar3 != 0)) {
    unw_print_abreg(regname_1,bVar2 & 0x7f);
    unw_print_xyreg(regname,(uint)(bVar2 >> 7),(uint)bVar3);
    printf("\t%s:spill_reg_p(qp=p%u,t=%lu,reg=%s,treg=%s)\n",&DAT_0017c93d,(ulong)(bVar1 & 0x3f),
           uVar8,regname_1,regname);
  }
  else {
    unw_print_abreg(regname,bVar2 & 0x7f);
    printf("\t%s:restore_p(qp=p%u,t=%lu,reg=%s)\n",&DAT_0017c93d,(ulong)(bVar1 & 0x3f),uVar8,regname
          );
  }
  return pbVar6;
}



byte * FUN_0013c360(byte *param_1)

{
  byte bVar1;
  byte bVar2;
  byte bVar3;
  byte bVar4;
  byte bVar5;
  byte *pbVar6;
  ulong uVar8;
  undefined1 auStack_78 [32];
  undefined1 local_58 [40];
  byte *pbVar7;
  
  pbVar6 = param_1 + 4;
  bVar1 = *param_1;
  bVar2 = param_1[1];
  bVar3 = param_1[2];
  uVar8 = (ulong)(param_1[3] & 0x7f);
  if ((char)param_1[3] < '\0') {
    bVar5 = 0;
    pbVar7 = pbVar6;
    do {
      pbVar6 = pbVar7 + 1;
      bVar4 = *pbVar7;
      bVar5 = bVar5 + 7;
      uVar8 = uVar8 | (ulong)(bVar4 & 0x7f) << (bVar5 & 0x3f);
      pbVar7 = pbVar6;
    } while ((char)bVar4 < '\0');
  }
  if (((char)bVar2 < '\0') || (bVar3 != 0)) {
    FUN_0013bae0(auStack_78,bVar2 & 0x7f);
    FUN_0013c200(local_58,bVar2 >> 7,bVar3);
    printf("\t%s:spill_reg_p(qp=p%u,t=%lu,reg=%s,treg=%s)\n",&DAT_0017c93d,(ulong)(bVar1 & 0x3f),
           uVar8,auStack_78,local_58);
  }
  else {
    FUN_0013bae0(local_58,bVar2 & 0x7f);
    printf("\t%s:restore_p(qp=p%u,t=%lu,reg=%s)\n",&DAT_0017c93d,(ulong)(bVar1 & 0x3f),uVar8,
           local_58);
  }
  return pbVar6;
}


PUSH R15
PUSH R14
PUSH R13
PUSH R12
PUSH RBP
PUSH RBX
LEA RBX,[RDI + 0x4]
SUB RSP,0x48
MOVZX EAX,byte ptr [RDI + 0x3]
MOVZX R13D,byte ptr [RDI]
MOVZX R12D,byte ptr [RDI + 0x1]
MOVZX R14D,byte ptr [RDI + 0x2]
MOV RBP,RAX
AND EBP,0x7f
TEST AL,AL
JNS 0x0013c3ac
XOR ECX,ECX
ADD RBX,0x1
MOVZX ESI,byte ptr [RBX + -0x1]
ADD ECX,0x7
MOV RAX,RSI
AND EAX,0x7f
SHL RAX,CL
OR RBP,RAX
TEST SIL,SIL
JS 0x0013c390
MOV ESI,R12D
AND R13D,0x3f
AND ESI,0x7f
TEST R12B,R12B
JS 0x0013c400
TEST R14B,R14B
JNZ 0x0013c400
LEA R12,[RSP + 0x20]
MOV RDI,R12
CALL 0x0013bae0
MOV R8,R12
MOV RCX,RBP
MOV EDX,R13D
LEA RSI,[0x17c93d]
LEA RDI,[0x17cc48]
XOR EAX,EAX
CALL 0x00107190
ADD RSP,0x48
MOV RAX,RBX
POP RBX
POP RBP
POP R12
POP R13
POP R14
POP R15
RET
MOV R15,RSP
SHR R12B,0x7
MOV RDI,R15
CALL 0x0013bae0
MOVZX ESI,R12B
LEA R12,[RSP + 0x20]
MOVZX EDX,R14B
MOV RDI,R12
CALL 0x0013c200
MOV R9,R12
MOV R8,R15
MOV RCX,RBP
MOV EDX,R13D
LEA RSI,[0x17c93d]
LEA RDI,[0x17cc70]
XOR EAX,EAX
CALL 0x00107190
JMP 0x0013c3eb
(translation_unit "byte * FUN_0013c360(byte *param_1)\n\n{\n  byte bVar1;\n  byte bVar2;\n  byte bVar3;\n  byte bVar4;\n  byte bVar5;\n  byte *pbVar6;\n  ulong uVar8;\n  undefined1 auStack_78 [32];\n  undefined1 local_58 [40];\n  byte *pbVar7;\n  \n  pbVar6 = param_1 + 4;\n  bVar1 = *param_1;\n  bVar2 = param_1[1];\n  bVar3 = param_1[2];\n  uVar8 = (ulong)(param_1[3] & 0x7f);\n  if ((char)param_1[3] < '\0') {\n    bVar5 = 0;\n    pbVar7 = pbVar6;\n    do {\n      pbVar6 = pbVar7 + 1;\n      bVar4 = *pbVar7;\n      bVar5 = bVar5 + 7;\n      uVar8 = uVar8 | (ulong)(bVar4 & 0x7f) << (bVar5 & 0x3f);\n      pbVar7 = pbVar6;\n    } while ((char)bVar4 < '\0');\n  }\n  if (((char)bVar2 < '\0') || (bVar3 != 0)) {\n    FUN_0013bae0(auStack_78,bVar2 & 0x7f);\n    FUN_0013c200(local_58,bVar2 >> 7,bVar3);\n    printf("\t%s:spill_reg_p(qp=p%u,t=%lu,reg=%s,treg=%s)\n",&DAT_0017c93d,(ulong)(bVar1 & 0x3f),\n           uVar8,auStack_78,local_58);\n  }\n  else {\n    FUN_0013bae0(local_58,bVar2 & 0x7f);\n    printf("\t%s:restore_p(qp=p%u,t=%lu,reg=%s)\n",&DAT_0017c93d,(ulong)(bVar1 & 0x3f),uVar8,\n           local_58);\n  }\n  return pbVar6;\n}\n\n" (function_definition "byte * FUN_0013c360(byte *param_1)\n\n{\n  byte bVar1;\n  byte bVar2;\n  byte bVar3;\n  byte bVar4;\n  byte bVar5;\n  byte *pbVar6;\n  ulong uVar8;\n  undefined1 auStack_78 [32];\n  undefined1 local_58 [40];\n  byte *pbVar7;\n  \n  pbVar6 = param_1 + 4;\n  bVar1 = *param_1;\n  bVar2 = param_1[1];\n  bVar3 = param_1[2];\n  uVar8 = (ulong)(param_1[3] & 0x7f);\n  if ((char)param_1[3] < '\0') {\n    bVar5 = 0;\n    pbVar7 = pbVar6;\n    do {\n      pbVar6 = pbVar7 + 1;\n      bVar4 = *pbVar7;\n      bVar5 = bVar5 + 7;\n      uVar8 = uVar8 | (ulong)(bVar4 & 0x7f) << (bVar5 & 0x3f);\n      pbVar7 = pbVar6;\n    } while ((char)bVar4 < '\0');\n  }\n  if (((char)bVar2 < '\0') || (bVar3 != 0)) {\n    FUN_0013bae0(auStack_78,bVar2 & 0x7f);\n    FUN_0013c200(local_58,bVar2 >> 7,bVar3);\n    printf("\t%s:spill_reg_p(qp=p%u,t=%lu,reg=%s,treg=%s)\n",&DAT_0017c93d,(ulong)(bVar1 & 0x3f),\n           uVar8,auStack_78,local_58);\n  }\n  else {\n    FUN_0013bae0(local_58,bVar2 & 0x7f);\n    printf("\t%s:restore_p(qp=p%u,t=%lu,reg=%s)\n",&DAT_0017c93d,(ulong)(bVar1 & 0x3f),uVar8,\n           local_58);\n  }\n  return pbVar6;\n}" type_identifier (pointer_declarator "* FUN_0013c360(byte *param_1)" * (function_declarator "FUN_0013c360(byte *param_1)" identifier (parameter_list "(byte *param_1)" ( (parameter_declaration "byte *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) )))) (compound_statement "{\n  byte bVar1;\n  byte bVar2;\n  byte bVar3;\n  byte bVar4;\n  byte bVar5;\n  byte *pbVar6;\n  ulong uVar8;\n  undefined1 auStack_78 [32];\n  undefined1 local_58 [40];\n  byte *pbVar7;\n  \n  pbVar6 = param_1 + 4;\n  bVar1 = *param_1;\n  bVar2 = param_1[1];\n  bVar3 = param_1[2];\n  uVar8 = (ulong)(param_1[3] & 0x7f);\n  if ((char)param_1[3] < '\0') {\n    bVar5 = 0;\n    pbVar7 = pbVar6;\n    do {\n      pbVar6 = pbVar7 + 1;\n      bVar4 = *pbVar7;\n      bVar5 = bVar5 + 7;\n      uVar8 = uVar8 | (ulong)(bVar4 & 0x7f) << (bVar5 & 0x3f);\n      pbVar7 = pbVar6;\n    } while ((char)bVar4 < '\0');\n  }\n  if (((char)bVar2 < '\0') || (bVar3 != 0)) {\n    FUN_0013bae0(auStack_78,bVar2 & 0x7f);\n    FUN_0013c200(local_58,bVar2 >> 7,bVar3);\n    printf("\t%s:spill_reg_p(qp=p%u,t=%lu,reg=%s,treg=%s)\n",&DAT_0017c93d,(ulong)(bVar1 & 0x3f),\n           uVar8,auStack_78,local_58);\n  }\n  else {\n    FUN_0013bae0(local_58,bVar2 & 0x7f);\n    printf("\t%s:restore_p(qp=p%u,t=%lu,reg=%s)\n",&DAT_0017c93d,(ulong)(bVar1 & 0x3f),uVar8,\n           local_58);\n  }\n  return pbVar6;\n}" { (declaration "byte bVar1;" type_identifier identifier ;) (declaration "byte bVar2;" type_identifier identifier ;) (declaration "byte bVar3;" type_identifier identifier ;) (declaration "byte bVar4;" type_identifier identifier ;) (declaration "byte bVar5;" type_identifier identifier ;) (declaration "byte *pbVar6;" type_identifier (pointer_declarator "*pbVar6" * identifier) ;) (declaration "ulong uVar8;" type_identifier identifier ;) (declaration "undefined1 auStack_78 [32];" type_identifier (array_declarator "auStack_78 [32]" identifier [ number_literal ]) ;) (declaration "undefined1 local_58 [40];" type_identifier (array_declarator "local_58 [40]" identifier [ number_literal ]) ;) (declaration "byte *pbVar7;" type_identifier (pointer_declarator "*pbVar7" * identifier) ;) (expression_statement "pbVar6 = param_1 + 4;" (assignment_expression "pbVar6 = param_1 + 4" identifier = (binary_expression "param_1 + 4" identifier + number_literal)) ;) (expression_statement "bVar1 = *param_1;" (assignment_expression "bVar1 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (expression_statement "bVar2 = param_1[1];" (assignment_expression "bVar2 = param_1[1]" identifier = (subscript_expression "param_1[1]" identifier [ number_literal ])) ;) (expression_statement "bVar3 = param_1[2];" (assignment_expression "bVar3 = param_1[2]" identifier = (subscript_expression "param_1[2]" identifier [ number_literal ])) ;) (expression_statement "uVar8 = (ulong)(param_1[3] & 0x7f);" (assignment_expression "uVar8 = (ulong)(param_1[3] & 0x7f)" identifier = (call_expression "(ulong)(param_1[3] & 0x7f)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(param_1[3] & 0x7f)" ( (binary_expression "param_1[3] & 0x7f" (subscript_expression "param_1[3]" identifier [ number_literal ]) & number_literal) )))) ;) (if_statement "if ((char)param_1[3] < '\0') {\n    bVar5 = 0;\n    pbVar7 = pbVar6;\n    do {\n      pbVar6 = pbVar7 + 1;\n      bVar4 = *pbVar7;\n      bVar5 = bVar5 + 7;\n      uVar8 = uVar8 | (ulong)(bVar4 & 0x7f) << (bVar5 & 0x3f);\n      pbVar7 = pbVar6;\n    } while ((char)bVar4 < '\0');\n  }" if (parenthesized_expression "((char)param_1[3] < '\0')" ( (binary_expression "(char)param_1[3] < '\0'" (cast_expression "(char)param_1[3]" ( (type_descriptor "char" primitive_type) ) (subscript_expression "param_1[3]" identifier [ number_literal ])) < (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    bVar5 = 0;\n    pbVar7 = pbVar6;\n    do {\n      pbVar6 = pbVar7 + 1;\n      bVar4 = *pbVar7;\n      bVar5 = bVar5 + 7;\n      uVar8 = uVar8 | (ulong)(bVar4 & 0x7f) << (bVar5 & 0x3f);\n      pbVar7 = pbVar6;\n    } while ((char)bVar4 < '\0');\n  }" { (expression_statement "bVar5 = 0;" (assignment_expression "bVar5 = 0" identifier = number_literal) ;) (expression_statement "pbVar7 = pbVar6;" (assignment_expression "pbVar7 = pbVar6" identifier = identifier) ;) (do_statement "do {\n      pbVar6 = pbVar7 + 1;\n      bVar4 = *pbVar7;\n      bVar5 = bVar5 + 7;\n      uVar8 = uVar8 | (ulong)(bVar4 & 0x7f) << (bVar5 & 0x3f);\n      pbVar7 = pbVar6;\n    } while ((char)bVar4 < '\0');" do (compound_statement "{\n      pbVar6 = pbVar7 + 1;\n      bVar4 = *pbVar7;\n      bVar5 = bVar5 + 7;\n      uVar8 = uVar8 | (ulong)(bVar4 & 0x7f) << (bVar5 & 0x3f);\n      pbVar7 = pbVar6;\n    }" { (expression_statement "pbVar6 = pbVar7 + 1;" (assignment_expression "pbVar6 = pbVar7 + 1" identifier = (binary_expression "pbVar7 + 1" identifier + number_literal)) ;) (expression_statement "bVar4 = *pbVar7;" (assignment_expression "bVar4 = *pbVar7" identifier = (pointer_expression "*pbVar7" * identifier)) ;) (expression_statement "bVar5 = bVar5 + 7;" (assignment_expression "bVar5 = bVar5 + 7" identifier = (binary_expression "bVar5 + 7" identifier + number_literal)) ;) (expression_statement "uVar8 = uVar8 | (ulong)(bVar4 & 0x7f) << (bVar5 & 0x3f);" (assignment_expression "uVar8 = uVar8 | (ulong)(bVar4 & 0x7f) << (bVar5 & 0x3f)" identifier = (binary_expression "uVar8 | (ulong)(bVar4 & 0x7f) << (bVar5 & 0x3f)" identifier | (binary_expression "(ulong)(bVar4 & 0x7f) << (bVar5 & 0x3f)" (call_expression "(ulong)(bVar4 & 0x7f)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(bVar4 & 0x7f)" ( (binary_expression "bVar4 & 0x7f" identifier & number_literal) ))) << (parenthesized_expression "(bVar5 & 0x3f)" ( (binary_expression "bVar5 & 0x3f" identifier & number_literal) ))))) ;) (expression_statement "pbVar7 = pbVar6;" (assignment_expression "pbVar7 = pbVar6" identifier = identifier) ;) }) while (parenthesized_expression "((char)bVar4 < '\0')" ( (binary_expression "(char)bVar4 < '\0'" (cast_expression "(char)bVar4" ( (type_descriptor "char" primitive_type) ) identifier) < (char_literal "'\0'" ' escape_sequence ')) )) ;) })) (if_statement "if (((char)bVar2 < '\0') || (bVar3 != 0)) {\n    FUN_0013bae0(auStack_78,bVar2 & 0x7f);\n    FUN_0013c200(local_58,bVar2 >> 7,bVar3);\n    printf("\t%s:spill_reg_p(qp=p%u,t=%lu,reg=%s,treg=%s)\n",&DAT_0017c93d,(ulong)(bVar1 & 0x3f),\n           uVar8,auStack_78,local_58);\n  }\n  else {\n    FUN_0013bae0(local_58,bVar2 & 0x7f);\n    printf("\t%s:restore_p(qp=p%u,t=%lu,reg=%s)\n",&DAT_0017c93d,(ulong)(bVar1 & 0x3f),uVar8,\n           local_58);\n  }" if (parenthesized_expression "(((char)bVar2 < '\0') || (bVar3 != 0))" ( (binary_expression "((char)bVar2 < '\0') || (bVar3 != 0)" (parenthesized_expression "((char)bVar2 < '\0')" ( (binary_expression "(char)bVar2 < '\0'" (cast_expression "(char)bVar2" ( (type_descriptor "char" primitive_type) ) identifier) < (char_literal "'\0'" ' escape_sequence ')) )) || (parenthesized_expression "(bVar3 != 0)" ( (binary_expression "bVar3 != 0" identifier != number_literal) ))) )) (compound_statement "{\n    FUN_0013bae0(auStack_78,bVar2 & 0x7f);\n    FUN_0013c200(local_58,bVar2 >> 7,bVar3);\n    printf("\t%s:spill_reg_p(qp=p%u,t=%lu,reg=%s,treg=%s)\n",&DAT_0017c93d,(ulong)(bVar1 & 0x3f),\n           uVar8,auStack_78,local_58);\n  }" { (expression_statement "FUN_0013bae0(auStack_78,bVar2 & 0x7f);" (call_expression "FUN_0013bae0(auStack_78,bVar2 & 0x7f)" identifier (argument_list "(auStack_78,bVar2 & 0x7f)" ( identifier , (binary_expression "bVar2 & 0x7f" identifier & number_literal) ))) ;) (expression_statement "FUN_0013c200(local_58,bVar2 >> 7,bVar3);" (call_expression "FUN_0013c200(local_58,bVar2 >> 7,bVar3)" identifier (argument_list "(local_58,bVar2 >> 7,bVar3)" ( identifier , (binary_expression "bVar2 >> 7" identifier >> number_literal) , identifier ))) ;) (expression_statement "printf("\t%s:spill_reg_p(qp=p%u,t=%lu,reg=%s,treg=%s)\n",&DAT_0017c93d,(ulong)(bVar1 & 0x3f),\n           uVar8,auStack_78,local_58);" (call_expression "printf("\t%s:spill_reg_p(qp=p%u,t=%lu,reg=%s,treg=%s)\n",&DAT_0017c93d,(ulong)(bVar1 & 0x3f),\n           uVar8,auStack_78,local_58)" identifier (argument_list "("\t%s:spill_reg_p(qp=p%u,t=%lu,reg=%s,treg=%s)\n",&DAT_0017c93d,(ulong)(bVar1 & 0x3f),\n           uVar8,auStack_78,local_58)" ( (string_literal ""\t%s:spill_reg_p(qp=p%u,t=%lu,reg=%s,treg=%s)\n"" " escape_sequence string_content escape_sequence ") , (pointer_expression "&DAT_0017c93d" & identifier) , (call_expression "(ulong)(bVar1 & 0x3f)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(bVar1 & 0x3f)" ( (binary_expression "bVar1 & 0x3f" identifier & number_literal) ))) , identifier , identifier , identifier ))) ;) }) (else_clause "else {\n    FUN_0013bae0(local_58,bVar2 & 0x7f);\n    printf("\t%s:restore_p(qp=p%u,t=%lu,reg=%s)\n",&DAT_0017c93d,(ulong)(bVar1 & 0x3f),uVar8,\n           local_58);\n  }" else (compound_statement "{\n    FUN_0013bae0(local_58,bVar2 & 0x7f);\n    printf("\t%s:restore_p(qp=p%u,t=%lu,reg=%s)\n",&DAT_0017c93d,(ulong)(bVar1 & 0x3f),uVar8,\n           local_58);\n  }" { (expression_statement "FUN_0013bae0(local_58,bVar2 & 0x7f);" (call_expression "FUN_0013bae0(local_58,bVar2 & 0x7f)" identifier (argument_list "(local_58,bVar2 & 0x7f)" ( identifier , (binary_expression "bVar2 & 0x7f" identifier & number_literal) ))) ;) (expression_statement "printf("\t%s:restore_p(qp=p%u,t=%lu,reg=%s)\n",&DAT_0017c93d,(ulong)(bVar1 & 0x3f),uVar8,\n           local_58);" (call_expression "printf("\t%s:restore_p(qp=p%u,t=%lu,reg=%s)\n",&DAT_0017c93d,(ulong)(bVar1 & 0x3f),uVar8,\n           local_58)" identifier (argument_list "("\t%s:restore_p(qp=p%u,t=%lu,reg=%s)\n",&DAT_0017c93d,(ulong)(bVar1 & 0x3f),uVar8,\n           local_58)" ( (string_literal ""\t%s:restore_p(qp=p%u,t=%lu,reg=%s)\n"" " escape_sequence string_content escape_sequence ") , (pointer_expression "&DAT_0017c93d" & identifier) , (call_expression "(ulong)(bVar1 & 0x3f)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(bVar1 & 0x3f)" ( (binary_expression "bVar1 & 0x3f" identifier & number_literal) ))) , identifier , identifier ))) ;) }))) (return_statement "return pbVar6;" return identifier ;) })))
(translation_unit "uchar * unw_decode_x4(uchar *dp,uint code,void *arg)\n\n{\n  byte bVar1;\n  byte bVar2;\n  byte bVar3;\n  byte bVar4;\n  byte bVar5;\n  byte *pbVar6;\n  ulong uVar8;\n  char regname_1 [20];\n  char regname [20];\n  byte *pbVar7;\n  \n  pbVar6 = dp + 4;\n  bVar1 = *dp;\n  bVar2 = dp[1];\n  bVar3 = dp[2];\n  uVar8 = (ulong)(dp[3] & 0x7f);\n  if ((char)dp[3] < '\0') {\n    bVar5 = 0;\n    pbVar7 = pbVar6;\n    do {\n      pbVar6 = pbVar7 + 1;\n      bVar4 = *pbVar7;\n      bVar5 = bVar5 + 7;\n      uVar8 = uVar8 | (ulong)(bVar4 & 0x7f) << (bVar5 & 0x3f);\n      pbVar7 = pbVar6;\n    } while ((char)bVar4 < '\0');\n  }\n  if (((char)bVar2 < '\0') || (bVar3 != 0)) {\n    unw_print_abreg(regname_1,bVar2 & 0x7f);\n    unw_print_xyreg(regname,(uint)(bVar2 >> 7),(uint)bVar3);\n    printf("\t%s:spill_reg_p(qp=p%u,t=%lu,reg=%s,treg=%s)\n",&DAT_0017c93d,(ulong)(bVar1 & 0x3f),\n           uVar8,regname_1,regname);\n  }\n  else {\n    unw_print_abreg(regname,bVar2 & 0x7f);\n    printf("\t%s:restore_p(qp=p%u,t=%lu,reg=%s)\n",&DAT_0017c93d,(ulong)(bVar1 & 0x3f),uVar8,regname\n          );\n  }\n  return pbVar6;\n}\n\n" (function_definition "uchar * unw_decode_x4(uchar *dp,uint code,void *arg)\n\n{\n  byte bVar1;\n  byte bVar2;\n  byte bVar3;\n  byte bVar4;\n  byte bVar5;\n  byte *pbVar6;\n  ulong uVar8;\n  char regname_1 [20];\n  char regname [20];\n  byte *pbVar7;\n  \n  pbVar6 = dp + 4;\n  bVar1 = *dp;\n  bVar2 = dp[1];\n  bVar3 = dp[2];\n  uVar8 = (ulong)(dp[3] & 0x7f);\n  if ((char)dp[3] < '\0') {\n    bVar5 = 0;\n    pbVar7 = pbVar6;\n    do {\n      pbVar6 = pbVar7 + 1;\n      bVar4 = *pbVar7;\n      bVar5 = bVar5 + 7;\n      uVar8 = uVar8 | (ulong)(bVar4 & 0x7f) << (bVar5 & 0x3f);\n      pbVar7 = pbVar6;\n    } while ((char)bVar4 < '\0');\n  }\n  if (((char)bVar2 < '\0') || (bVar3 != 0)) {\n    unw_print_abreg(regname_1,bVar2 & 0x7f);\n    unw_print_xyreg(regname,(uint)(bVar2 >> 7),(uint)bVar3);\n    printf("\t%s:spill_reg_p(qp=p%u,t=%lu,reg=%s,treg=%s)\n",&DAT_0017c93d,(ulong)(bVar1 & 0x3f),\n           uVar8,regname_1,regname);\n  }\n  else {\n    unw_print_abreg(regname,bVar2 & 0x7f);\n    printf("\t%s:restore_p(qp=p%u,t=%lu,reg=%s)\n",&DAT_0017c93d,(ulong)(bVar1 & 0x3f),uVar8,regname\n          );\n  }\n  return pbVar6;\n}" type_identifier (pointer_declarator "* unw_decode_x4(uchar *dp,uint code,void *arg)" * (function_declarator "unw_decode_x4(uchar *dp,uint code,void *arg)" identifier (parameter_list "(uchar *dp,uint code,void *arg)" ( (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)) )))) (compound_statement "{\n  byte bVar1;\n  byte bVar2;\n  byte bVar3;\n  byte bVar4;\n  byte bVar5;\n  byte *pbVar6;\n  ulong uVar8;\n  char regname_1 [20];\n  char regname [20];\n  byte *pbVar7;\n  \n  pbVar6 = dp + 4;\n  bVar1 = *dp;\n  bVar2 = dp[1];\n  bVar3 = dp[2];\n  uVar8 = (ulong)(dp[3] & 0x7f);\n  if ((char)dp[3] < '\0') {\n    bVar5 = 0;\n    pbVar7 = pbVar6;\n    do {\n      pbVar6 = pbVar7 + 1;\n      bVar4 = *pbVar7;\n      bVar5 = bVar5 + 7;\n      uVar8 = uVar8 | (ulong)(bVar4 & 0x7f) << (bVar5 & 0x3f);\n      pbVar7 = pbVar6;\n    } while ((char)bVar4 < '\0');\n  }\n  if (((char)bVar2 < '\0') || (bVar3 != 0)) {\n    unw_print_abreg(regname_1,bVar2 & 0x7f);\n    unw_print_xyreg(regname,(uint)(bVar2 >> 7),(uint)bVar3);\n    printf("\t%s:spill_reg_p(qp=p%u,t=%lu,reg=%s,treg=%s)\n",&DAT_0017c93d,(ulong)(bVar1 & 0x3f),\n           uVar8,regname_1,regname);\n  }\n  else {\n    unw_print_abreg(regname,bVar2 & 0x7f);\n    printf("\t%s:restore_p(qp=p%u,t=%lu,reg=%s)\n",&DAT_0017c93d,(ulong)(bVar1 & 0x3f),uVar8,regname\n          );\n  }\n  return pbVar6;\n}" { (declaration "byte bVar1;" type_identifier identifier ;) (declaration "byte bVar2;" type_identifier identifier ;) (declaration "byte bVar3;" type_identifier identifier ;) (declaration "byte bVar4;" type_identifier identifier ;) (declaration "byte bVar5;" type_identifier identifier ;) (declaration "byte *pbVar6;" type_identifier (pointer_declarator "*pbVar6" * identifier) ;) (declaration "ulong uVar8;" type_identifier identifier ;) (declaration "char regname_1 [20];" primitive_type (array_declarator "regname_1 [20]" identifier [ number_literal ]) ;) (declaration "char regname [20];" primitive_type (array_declarator "regname [20]" identifier [ number_literal ]) ;) (declaration "byte *pbVar7;" type_identifier (pointer_declarator "*pbVar7" * identifier) ;) (expression_statement "pbVar6 = dp + 4;" (assignment_expression "pbVar6 = dp + 4" identifier = (binary_expression "dp + 4" identifier + number_literal)) ;) (expression_statement "bVar1 = *dp;" (assignment_expression "bVar1 = *dp" identifier = (pointer_expression "*dp" * identifier)) ;) (expression_statement "bVar2 = dp[1];" (assignment_expression "bVar2 = dp[1]" identifier = (subscript_expression "dp[1]" identifier [ number_literal ])) ;) (expression_statement "bVar3 = dp[2];" (assignment_expression "bVar3 = dp[2]" identifier = (subscript_expression "dp[2]" identifier [ number_literal ])) ;) (expression_statement "uVar8 = (ulong)(dp[3] & 0x7f);" (assignment_expression "uVar8 = (ulong)(dp[3] & 0x7f)" identifier = (call_expression "(ulong)(dp[3] & 0x7f)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(dp[3] & 0x7f)" ( (binary_expression "dp[3] & 0x7f" (subscript_expression "dp[3]" identifier [ number_literal ]) & number_literal) )))) ;) (if_statement "if ((char)dp[3] < '\0') {\n    bVar5 = 0;\n    pbVar7 = pbVar6;\n    do {\n      pbVar6 = pbVar7 + 1;\n      bVar4 = *pbVar7;\n      bVar5 = bVar5 + 7;\n      uVar8 = uVar8 | (ulong)(bVar4 & 0x7f) << (bVar5 & 0x3f);\n      pbVar7 = pbVar6;\n    } while ((char)bVar4 < '\0');\n  }" if (parenthesized_expression "((char)dp[3] < '\0')" ( (binary_expression "(char)dp[3] < '\0'" (cast_expression "(char)dp[3]" ( (type_descriptor "char" primitive_type) ) (subscript_expression "dp[3]" identifier [ number_literal ])) < (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    bVar5 = 0;\n    pbVar7 = pbVar6;\n    do {\n      pbVar6 = pbVar7 + 1;\n      bVar4 = *pbVar7;\n      bVar5 = bVar5 + 7;\n      uVar8 = uVar8 | (ulong)(bVar4 & 0x7f) << (bVar5 & 0x3f);\n      pbVar7 = pbVar6;\n    } while ((char)bVar4 < '\0');\n  }" { (expression_statement "bVar5 = 0;" (assignment_expression "bVar5 = 0" identifier = number_literal) ;) (expression_statement "pbVar7 = pbVar6;" (assignment_expression "pbVar7 = pbVar6" identifier = identifier) ;) (do_statement "do {\n      pbVar6 = pbVar7 + 1;\n      bVar4 = *pbVar7;\n      bVar5 = bVar5 + 7;\n      uVar8 = uVar8 | (ulong)(bVar4 & 0x7f) << (bVar5 & 0x3f);\n      pbVar7 = pbVar6;\n    } while ((char)bVar4 < '\0');" do (compound_statement "{\n      pbVar6 = pbVar7 + 1;\n      bVar4 = *pbVar7;\n      bVar5 = bVar5 + 7;\n      uVar8 = uVar8 | (ulong)(bVar4 & 0x7f) << (bVar5 & 0x3f);\n      pbVar7 = pbVar6;\n    }" { (expression_statement "pbVar6 = pbVar7 + 1;" (assignment_expression "pbVar6 = pbVar7 + 1" identifier = (binary_expression "pbVar7 + 1" identifier + number_literal)) ;) (expression_statement "bVar4 = *pbVar7;" (assignment_expression "bVar4 = *pbVar7" identifier = (pointer_expression "*pbVar7" * identifier)) ;) (expression_statement "bVar5 = bVar5 + 7;" (assignment_expression "bVar5 = bVar5 + 7" identifier = (binary_expression "bVar5 + 7" identifier + number_literal)) ;) (expression_statement "uVar8 = uVar8 | (ulong)(bVar4 & 0x7f) << (bVar5 & 0x3f);" (assignment_expression "uVar8 = uVar8 | (ulong)(bVar4 & 0x7f) << (bVar5 & 0x3f)" identifier = (binary_expression "uVar8 | (ulong)(bVar4 & 0x7f) << (bVar5 & 0x3f)" identifier | (binary_expression "(ulong)(bVar4 & 0x7f) << (bVar5 & 0x3f)" (call_expression "(ulong)(bVar4 & 0x7f)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(bVar4 & 0x7f)" ( (binary_expression "bVar4 & 0x7f" identifier & number_literal) ))) << (parenthesized_expression "(bVar5 & 0x3f)" ( (binary_expression "bVar5 & 0x3f" identifier & number_literal) ))))) ;) (expression_statement "pbVar7 = pbVar6;" (assignment_expression "pbVar7 = pbVar6" identifier = identifier) ;) }) while (parenthesized_expression "((char)bVar4 < '\0')" ( (binary_expression "(char)bVar4 < '\0'" (cast_expression "(char)bVar4" ( (type_descriptor "char" primitive_type) ) identifier) < (char_literal "'\0'" ' escape_sequence ')) )) ;) })) (if_statement "if (((char)bVar2 < '\0') || (bVar3 != 0)) {\n    unw_print_abreg(regname_1,bVar2 & 0x7f);\n    unw_print_xyreg(regname,(uint)(bVar2 >> 7),(uint)bVar3);\n    printf("\t%s:spill_reg_p(qp=p%u,t=%lu,reg=%s,treg=%s)\n",&DAT_0017c93d,(ulong)(bVar1 & 0x3f),\n           uVar8,regname_1,regname);\n  }\n  else {\n    unw_print_abreg(regname,bVar2 & 0x7f);\n    printf("\t%s:restore_p(qp=p%u,t=%lu,reg=%s)\n",&DAT_0017c93d,(ulong)(bVar1 & 0x3f),uVar8,regname\n          );\n  }" if (parenthesized_expression "(((char)bVar2 < '\0') || (bVar3 != 0))" ( (binary_expression "((char)bVar2 < '\0') || (bVar3 != 0)" (parenthesized_expression "((char)bVar2 < '\0')" ( (binary_expression "(char)bVar2 < '\0'" (cast_expression "(char)bVar2" ( (type_descriptor "char" primitive_type) ) identifier) < (char_literal "'\0'" ' escape_sequence ')) )) || (parenthesized_expression "(bVar3 != 0)" ( (binary_expression "bVar3 != 0" identifier != number_literal) ))) )) (compound_statement "{\n    unw_print_abreg(regname_1,bVar2 & 0x7f);\n    unw_print_xyreg(regname,(uint)(bVar2 >> 7),(uint)bVar3);\n    printf("\t%s:spill_reg_p(qp=p%u,t=%lu,reg=%s,treg=%s)\n",&DAT_0017c93d,(ulong)(bVar1 & 0x3f),\n           uVar8,regname_1,regname);\n  }" { (expression_statement "unw_print_abreg(regname_1,bVar2 & 0x7f);" (call_expression "unw_print_abreg(regname_1,bVar2 & 0x7f)" identifier (argument_list "(regname_1,bVar2 & 0x7f)" ( identifier , (binary_expression "bVar2 & 0x7f" identifier & number_literal) ))) ;) (expression_statement "unw_print_xyreg(regname,(uint)(bVar2 >> 7),(uint)bVar3);" (call_expression "unw_print_xyreg(regname,(uint)(bVar2 >> 7),(uint)bVar3)" identifier (argument_list "(regname,(uint)(bVar2 >> 7),(uint)bVar3)" ( identifier , (call_expression "(uint)(bVar2 >> 7)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(bVar2 >> 7)" ( (binary_expression "bVar2 >> 7" identifier >> number_literal) ))) , (cast_expression "(uint)bVar3" ( (type_descriptor "uint" type_identifier) ) identifier) ))) ;) (expression_statement "printf("\t%s:spill_reg_p(qp=p%u,t=%lu,reg=%s,treg=%s)\n",&DAT_0017c93d,(ulong)(bVar1 & 0x3f),\n           uVar8,regname_1,regname);" (call_expression "printf("\t%s:spill_reg_p(qp=p%u,t=%lu,reg=%s,treg=%s)\n",&DAT_0017c93d,(ulong)(bVar1 & 0x3f),\n           uVar8,regname_1,regname)" identifier (argument_list "("\t%s:spill_reg_p(qp=p%u,t=%lu,reg=%s,treg=%s)\n",&DAT_0017c93d,(ulong)(bVar1 & 0x3f),\n           uVar8,regname_1,regname)" ( (string_literal ""\t%s:spill_reg_p(qp=p%u,t=%lu,reg=%s,treg=%s)\n"" " escape_sequence string_content escape_sequence ") , (pointer_expression "&DAT_0017c93d" & identifier) , (call_expression "(ulong)(bVar1 & 0x3f)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(bVar1 & 0x3f)" ( (binary_expression "bVar1 & 0x3f" identifier & number_literal) ))) , identifier , identifier , identifier ))) ;) }) (else_clause "else {\n    unw_print_abreg(regname,bVar2 & 0x7f);\n    printf("\t%s:restore_p(qp=p%u,t=%lu,reg=%s)\n",&DAT_0017c93d,(ulong)(bVar1 & 0x3f),uVar8,regname\n          );\n  }" else (compound_statement "{\n    unw_print_abreg(regname,bVar2 & 0x7f);\n    printf("\t%s:restore_p(qp=p%u,t=%lu,reg=%s)\n",&DAT_0017c93d,(ulong)(bVar1 & 0x3f),uVar8,regname\n          );\n  }" { (expression_statement "unw_print_abreg(regname,bVar2 & 0x7f);" (call_expression "unw_print_abreg(regname,bVar2 & 0x7f)" identifier (argument_list "(regname,bVar2 & 0x7f)" ( identifier , (binary_expression "bVar2 & 0x7f" identifier & number_literal) ))) ;) (expression_statement "printf("\t%s:restore_p(qp=p%u,t=%lu,reg=%s)\n",&DAT_0017c93d,(ulong)(bVar1 & 0x3f),uVar8,regname\n          );" (call_expression "printf("\t%s:restore_p(qp=p%u,t=%lu,reg=%s)\n",&DAT_0017c93d,(ulong)(bVar1 & 0x3f),uVar8,regname\n          )" identifier (argument_list "("\t%s:restore_p(qp=p%u,t=%lu,reg=%s)\n",&DAT_0017c93d,(ulong)(bVar1 & 0x3f),uVar8,regname\n          )" ( (string_literal ""\t%s:restore_p(qp=p%u,t=%lu,reg=%s)\n"" " escape_sequence string_content escape_sequence ") , (pointer_expression "&DAT_0017c93d" & identifier) , (call_expression "(ulong)(bVar1 & 0x3f)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(bVar1 & 0x3f)" ( (binary_expression "bVar1 & 0x3f" identifier & number_literal) ))) , identifier , identifier ))) ;) }))) (return_statement "return pbVar6;" return identifier ;) })))
(translation_unit "byte * FUN_0013c360(byte *param_1)\n\n{\n  byte bVar1;\n  byte bVar2;\n  byte bVar3;\n  byte bVar4;\n  byte bVar5;\n  byte *pbVar6;\n  ulong uVar8;\n  undefined1 auStack_78 [32];\n  undefined1 local_58 [40];\n  byte *pbVar7;\n  \n  pbVar6 = param_1 + 4;\n  bVar1 = *param_1;\n  bVar2 = param_1[1];\n  bVar3 = param_1[2];\n  uVar8 = (ulong)(param_1[3] & 0x7f);\n  if ((char)param_1[3] < '\0') {\n    bVar5 = 0;\n    pbVar7 = pbVar6;\n    do {\n      pbVar6 = pbVar7 + 1;\n      bVar4 = *pbVar7;\n      bVar5 = bVar5 + 7;\n      uVar8 = uVar8 | (ulong)(bVar4 & 0x7f) << (bVar5 & 0x3f);\n      pbVar7 = pbVar6;\n    } while ((char)bVar4 < '\0');\n  }\n  if (((char)bVar2 < '\0') || (bVar3 != 0)) {\n    FUN_0013bae0(auStack_78,bVar2 & 0x7f);\n    FUN_0013c200(local_58,bVar2 >> 7,bVar3);\n    printf("\t%s:spill_reg_p(qp=p%u,t=%lu,reg=%s,treg=%s)\n",&DAT_0017c93d,(ulong)(bVar1 & 0x3f),\n           uVar8,auStack_78,local_58);\n  }\n  else {\n    FUN_0013bae0(local_58,bVar2 & 0x7f);\n    printf("\t%s:restore_p(qp=p%u,t=%lu,reg=%s)\n",&DAT_0017c93d,(ulong)(bVar1 & 0x3f),uVar8,\n           local_58);\n  }\n  return pbVar6;\n}\n\n" (function_definition "byte * FUN_0013c360(byte *param_1)\n\n{\n  byte bVar1;\n  byte bVar2;\n  byte bVar3;\n  byte bVar4;\n  byte bVar5;\n  byte *pbVar6;\n  ulong uVar8;\n  undefined1 auStack_78 [32];\n  undefined1 local_58 [40];\n  byte *pbVar7;\n  \n  pbVar6 = param_1 + 4;\n  bVar1 = *param_1;\n  bVar2 = param_1[1];\n  bVar3 = param_1[2];\n  uVar8 = (ulong)(param_1[3] & 0x7f);\n  if ((char)param_1[3] < '\0') {\n    bVar5 = 0;\n    pbVar7 = pbVar6;\n    do {\n      pbVar6 = pbVar7 + 1;\n      bVar4 = *pbVar7;\n      bVar5 = bVar5 + 7;\n      uVar8 = uVar8 | (ulong)(bVar4 & 0x7f) << (bVar5 & 0x3f);\n      pbVar7 = pbVar6;\n    } while ((char)bVar4 < '\0');\n  }\n  if (((char)bVar2 < '\0') || (bVar3 != 0)) {\n    FUN_0013bae0(auStack_78,bVar2 & 0x7f);\n    FUN_0013c200(local_58,bVar2 >> 7,bVar3);\n    printf("\t%s:spill_reg_p(qp=p%u,t=%lu,reg=%s,treg=%s)\n",&DAT_0017c93d,(ulong)(bVar1 & 0x3f),\n           uVar8,auStack_78,local_58);\n  }\n  else {\n    FUN_0013bae0(local_58,bVar2 & 0x7f);\n    printf("\t%s:restore_p(qp=p%u,t=%lu,reg=%s)\n",&DAT_0017c93d,(ulong)(bVar1 & 0x3f),uVar8,\n           local_58);\n  }\n  return pbVar6;\n}" type_identifier (pointer_declarator "* FUN_0013c360(byte *param_1)" * (function_declarator "FUN_0013c360(byte *param_1)" identifier (parameter_list "(byte *param_1)" ( (parameter_declaration "byte *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) )))) (compound_statement "{\n  byte bVar1;\n  byte bVar2;\n  byte bVar3;\n  byte bVar4;\n  byte bVar5;\n  byte *pbVar6;\n  ulong uVar8;\n  undefined1 auStack_78 [32];\n  undefined1 local_58 [40];\n  byte *pbVar7;\n  \n  pbVar6 = param_1 + 4;\n  bVar1 = *param_1;\n  bVar2 = param_1[1];\n  bVar3 = param_1[2];\n  uVar8 = (ulong)(param_1[3] & 0x7f);\n  if ((char)param_1[3] < '\0') {\n    bVar5 = 0;\n    pbVar7 = pbVar6;\n    do {\n      pbVar6 = pbVar7 + 1;\n      bVar4 = *pbVar7;\n      bVar5 = bVar5 + 7;\n      uVar8 = uVar8 | (ulong)(bVar4 & 0x7f) << (bVar5 & 0x3f);\n      pbVar7 = pbVar6;\n    } while ((char)bVar4 < '\0');\n  }\n  if (((char)bVar2 < '\0') || (bVar3 != 0)) {\n    FUN_0013bae0(auStack_78,bVar2 & 0x7f);\n    FUN_0013c200(local_58,bVar2 >> 7,bVar3);\n    printf("\t%s:spill_reg_p(qp=p%u,t=%lu,reg=%s,treg=%s)\n",&DAT_0017c93d,(ulong)(bVar1 & 0x3f),\n           uVar8,auStack_78,local_58);\n  }\n  else {\n    FUN_0013bae0(local_58,bVar2 & 0x7f);\n    printf("\t%s:restore_p(qp=p%u,t=%lu,reg=%s)\n",&DAT_0017c93d,(ulong)(bVar1 & 0x3f),uVar8,\n           local_58);\n  }\n  return pbVar6;\n}" { (declaration "byte bVar1;" type_identifier identifier ;) (declaration "byte bVar2;" type_identifier identifier ;) (declaration "byte bVar3;" type_identifier identifier ;) (declaration "byte bVar4;" type_identifier identifier ;) (declaration "byte bVar5;" type_identifier identifier ;) (declaration "byte *pbVar6;" type_identifier (pointer_declarator "*pbVar6" * identifier) ;) (declaration "ulong uVar8;" type_identifier identifier ;) (declaration "undefined1 auStack_78 [32];" type_identifier (array_declarator "auStack_78 [32]" identifier [ number_literal ]) ;) (declaration "undefined1 local_58 [40];" type_identifier (array_declarator "local_58 [40]" identifier [ number_literal ]) ;) (declaration "byte *pbVar7;" type_identifier (pointer_declarator "*pbVar7" * identifier) ;) (expression_statement "pbVar6 = param_1 + 4;" (assignment_expression "pbVar6 = param_1 + 4" identifier = (binary_expression "param_1 + 4" identifier + number_literal)) ;) (expression_statement "bVar1 = *param_1;" (assignment_expression "bVar1 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (expression_statement "bVar2 = param_1[1];" (assignment_expression "bVar2 = param_1[1]" identifier = (subscript_expression "param_1[1]" identifier [ number_literal ])) ;) (expression_statement "bVar3 = param_1[2];" (assignment_expression "bVar3 = param_1[2]" identifier = (subscript_expression "param_1[2]" identifier [ number_literal ])) ;) (expression_statement "uVar8 = (ulong)(param_1[3] & 0x7f);" (assignment_expression "uVar8 = (ulong)(param_1[3] & 0x7f)" identifier = (call_expression "(ulong)(param_1[3] & 0x7f)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(param_1[3] & 0x7f)" ( (binary_expression "param_1[3] & 0x7f" (subscript_expression "param_1[3]" identifier [ number_literal ]) & number_literal) )))) ;) (if_statement "if ((char)param_1[3] < '\0') {\n    bVar5 = 0;\n    pbVar7 = pbVar6;\n    do {\n      pbVar6 = pbVar7 + 1;\n      bVar4 = *pbVar7;\n      bVar5 = bVar5 + 7;\n      uVar8 = uVar8 | (ulong)(bVar4 & 0x7f) << (bVar5 & 0x3f);\n      pbVar7 = pbVar6;\n    } while ((char)bVar4 < '\0');\n  }" if (parenthesized_expression "((char)param_1[3] < '\0')" ( (binary_expression "(char)param_1[3] < '\0'" (cast_expression "(char)param_1[3]" ( (type_descriptor "char" primitive_type) ) (subscript_expression "param_1[3]" identifier [ number_literal ])) < (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    bVar5 = 0;\n    pbVar7 = pbVar6;\n    do {\n      pbVar6 = pbVar7 + 1;\n      bVar4 = *pbVar7;\n      bVar5 = bVar5 + 7;\n      uVar8 = uVar8 | (ulong)(bVar4 & 0x7f) << (bVar5 & 0x3f);\n      pbVar7 = pbVar6;\n    } while ((char)bVar4 < '\0');\n  }" { (expression_statement "bVar5 = 0;" (assignment_expression "bVar5 = 0" identifier = number_literal) ;) (expression_statement "pbVar7 = pbVar6;" (assignment_expression "pbVar7 = pbVar6" identifier = identifier) ;) (do_statement "do {\n      pbVar6 = pbVar7 + 1;\n      bVar4 = *pbVar7;\n      bVar5 = bVar5 + 7;\n      uVar8 = uVar8 | (ulong)(bVar4 & 0x7f) << (bVar5 & 0x3f);\n      pbVar7 = pbVar6;\n    } while ((char)bVar4 < '\0');" do (compound_statement "{\n      pbVar6 = pbVar7 + 1;\n      bVar4 = *pbVar7;\n      bVar5 = bVar5 + 7;\n      uVar8 = uVar8 | (ulong)(bVar4 & 0x7f) << (bVar5 & 0x3f);\n      pbVar7 = pbVar6;\n    }" { (expression_statement "pbVar6 = pbVar7 + 1;" (assignment_expression "pbVar6 = pbVar7 + 1" identifier = (binary_expression "pbVar7 + 1" identifier + number_literal)) ;) (expression_statement "bVar4 = *pbVar7;" (assignment_expression "bVar4 = *pbVar7" identifier = (pointer_expression "*pbVar7" * identifier)) ;) (expression_statement "bVar5 = bVar5 + 7;" (assignment_expression "bVar5 = bVar5 + 7" identifier = (binary_expression "bVar5 + 7" identifier + number_literal)) ;) (expression_statement "uVar8 = uVar8 | (ulong)(bVar4 & 0x7f) << (bVar5 & 0x3f);" (assignment_expression "uVar8 = uVar8 | (ulong)(bVar4 & 0x7f) << (bVar5 & 0x3f)" identifier = (binary_expression "uVar8 | (ulong)(bVar4 & 0x7f) << (bVar5 & 0x3f)" identifier | (binary_expression "(ulong)(bVar4 & 0x7f) << (bVar5 & 0x3f)" (call_expression "(ulong)(bVar4 & 0x7f)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(bVar4 & 0x7f)" ( (binary_expression "bVar4 & 0x7f" identifier & number_literal) ))) << (parenthesized_expression "(bVar5 & 0x3f)" ( (binary_expression "bVar5 & 0x3f" identifier & number_literal) ))))) ;) (expression_statement "pbVar7 = pbVar6;" (assignment_expression "pbVar7 = pbVar6" identifier = identifier) ;) }) while (parenthesized_expression "((char)bVar4 < '\0')" ( (binary_expression "(char)bVar4 < '\0'" (cast_expression "(char)bVar4" ( (type_descriptor "char" primitive_type) ) identifier) < (char_literal "'\0'" ' escape_sequence ')) )) ;) })) (if_statement "if (((char)bVar2 < '\0') || (bVar3 != 0)) {\n    FUN_0013bae0(auStack_78,bVar2 & 0x7f);\n    FUN_0013c200(local_58,bVar2 >> 7,bVar3);\n    printf("\t%s:spill_reg_p(qp=p%u,t=%lu,reg=%s,treg=%s)\n",&DAT_0017c93d,(ulong)(bVar1 & 0x3f),\n           uVar8,auStack_78,local_58);\n  }\n  else {\n    FUN_0013bae0(local_58,bVar2 & 0x7f);\n    printf("\t%s:restore_p(qp=p%u,t=%lu,reg=%s)\n",&DAT_0017c93d,(ulong)(bVar1 & 0x3f),uVar8,\n           local_58);\n  }" if (parenthesized_expression "(((char)bVar2 < '\0') || (bVar3 != 0))" ( (binary_expression "((char)bVar2 < '\0') || (bVar3 != 0)" (parenthesized_expression "((char)bVar2 < '\0')" ( (binary_expression "(char)bVar2 < '\0'" (cast_expression "(char)bVar2" ( (type_descriptor "char" primitive_type) ) identifier) < (char_literal "'\0'" ' escape_sequence ')) )) || (parenthesized_expression "(bVar3 != 0)" ( (binary_expression "bVar3 != 0" identifier != number_literal) ))) )) (compound_statement "{\n    FUN_0013bae0(auStack_78,bVar2 & 0x7f);\n    FUN_0013c200(local_58,bVar2 >> 7,bVar3);\n    printf("\t%s:spill_reg_p(qp=p%u,t=%lu,reg=%s,treg=%s)\n",&DAT_0017c93d,(ulong)(bVar1 & 0x3f),\n           uVar8,auStack_78,local_58);\n  }" { (expression_statement "FUN_0013bae0(auStack_78,bVar2 & 0x7f);" (call_expression "FUN_0013bae0(auStack_78,bVar2 & 0x7f)" identifier (argument_list "(auStack_78,bVar2 & 0x7f)" ( identifier , (binary_expression "bVar2 & 0x7f" identifier & number_literal) ))) ;) (expression_statement "FUN_0013c200(local_58,bVar2 >> 7,bVar3);" (call_expression "FUN_0013c200(local_58,bVar2 >> 7,bVar3)" identifier (argument_list "(local_58,bVar2 >> 7,bVar3)" ( identifier , (binary_expression "bVar2 >> 7" identifier >> number_literal) , identifier ))) ;) (expression_statement "printf("\t%s:spill_reg_p(qp=p%u,t=%lu,reg=%s,treg=%s)\n",&DAT_0017c93d,(ulong)(bVar1 & 0x3f),\n           uVar8,auStack_78,local_58);" (call_expression "printf("\t%s:spill_reg_p(qp=p%u,t=%lu,reg=%s,treg=%s)\n",&DAT_0017c93d,(ulong)(bVar1 & 0x3f),\n           uVar8,auStack_78,local_58)" identifier (argument_list "("\t%s:spill_reg_p(qp=p%u,t=%lu,reg=%s,treg=%s)\n",&DAT_0017c93d,(ulong)(bVar1 & 0x3f),\n           uVar8,auStack_78,local_58)" ( (string_literal ""\t%s:spill_reg_p(qp=p%u,t=%lu,reg=%s,treg=%s)\n"" " escape_sequence string_content escape_sequence ") , (pointer_expression "&DAT_0017c93d" & identifier) , (call_expression "(ulong)(bVar1 & 0x3f)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(bVar1 & 0x3f)" ( (binary_expression "bVar1 & 0x3f" identifier & number_literal) ))) , identifier , identifier , identifier ))) ;) }) (else_clause "else {\n    FUN_0013bae0(local_58,bVar2 & 0x7f);\n    printf("\t%s:restore_p(qp=p%u,t=%lu,reg=%s)\n",&DAT_0017c93d,(ulong)(bVar1 & 0x3f),uVar8,\n           local_58);\n  }" else (compound_statement "{\n    FUN_0013bae0(local_58,bVar2 & 0x7f);\n    printf("\t%s:restore_p(qp=p%u,t=%lu,reg=%s)\n",&DAT_0017c93d,(ulong)(bVar1 & 0x3f),uVar8,\n           local_58);\n  }" { (expression_statement "FUN_0013bae0(local_58,bVar2 & 0x7f);" (call_expression "FUN_0013bae0(local_58,bVar2 & 0x7f)" identifier (argument_list "(local_58,bVar2 & 0x7f)" ( identifier , (binary_expression "bVar2 & 0x7f" identifier & number_literal) ))) ;) (expression_statement "printf("\t%s:restore_p(qp=p%u,t=%lu,reg=%s)\n",&DAT_0017c93d,(ulong)(bVar1 & 0x3f),uVar8,\n           local_58);" (call_expression "printf("\t%s:restore_p(qp=p%u,t=%lu,reg=%s)\n",&DAT_0017c93d,(ulong)(bVar1 & 0x3f),uVar8,\n           local_58)" identifier (argument_list "("\t%s:restore_p(qp=p%u,t=%lu,reg=%s)\n",&DAT_0017c93d,(ulong)(bVar1 & 0x3f),uVar8,\n           local_58)" ( (string_literal ""\t%s:restore_p(qp=p%u,t=%lu,reg=%s)\n"" " escape_sequence string_content escape_sequence ") , (pointer_expression "&DAT_0017c93d" & identifier) , (call_expression "(ulong)(bVar1 & 0x3f)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(bVar1 & 0x3f)" ( (binary_expression "bVar1 & 0x3f" identifier & number_literal) ))) , identifier , identifier ))) ;) }))) (return_statement "return pbVar6;" return identifier ;) })))
(translation_unit (function_definition TYPE (pointer_declarator * (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE (pointer_declarator * IDENT)) )))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (subscript_expression IDENT [ LIT ]) & LIT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ])) < (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT | (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT & LIT) ))) << (parenthesized_expression ( (binary_expression IDENT & LIT) ))))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) while (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < (char_literal ' escape_sequence ')) )) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < (char_literal ' escape_sequence ')) )) || (parenthesized_expression ( (binary_expression IDENT != LIT) ))) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT , (binary_expression IDENT & LIT) ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , (binary_expression IDENT >> LIT) , IDENT ))) ;) (expression_statement (call_expression IDENT (argument_list ( (string_literal " escape_sequence string_content escape_sequence ") , (pointer_expression & IDENT) , (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT & LIT) ))) , IDENT , IDENT , IDENT ))) ;) }) (else_clause else (compound_statement { (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 ") , (pointer_expression & IDENT) , (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT & LIT) ))) , IDENT , IDENT ))) ;) }))) (return_statement return IDENT ;) })))
(function_definition "byte * FUN_0013c360(byte *param_1)\n\n{\n  byte bVar1;\n  byte bVar2;\n  byte bVar3;\n  byte bVar4;\n  byte bVar5;\n  byte *pbVar6;\n  ulong uVar8;\n  undefined1 auStack_78 [32];\n  undefined1 local_58 [40];\n  byte *pbVar7;\n  \n  pbVar6 = param_1 + 4;\n  bVar1 = *param_1;\n  bVar2 = param_1[1];\n  bVar3 = param_1[2];\n  uVar8 = (ulong)(param_1[3] & 0x7f);\n  if ((char)param_1[3] < '\0') {\n    bVar5 = 0;\n    pbVar7 = pbVar6;\n    do {\n      pbVar6 = pbVar7 + 1;\n      bVar4 = *pbVar7;\n      bVar5 = bVar5 + 7;\n      uVar8 = uVar8 | (ulong)(bVar4 & 0x7f) << (bVar5 & 0x3f);\n      pbVar7 = pbVar6;\n    } while ((char)bVar4 < '\0');\n  }\n  if (((char)bVar2 < '\0') || (bVar3 != 0)) {\n    FUN_0013bae0(auStack_78,bVar2 & 0x7f);\n    FUN_0013c200(local_58,bVar2 >> 7,bVar3);\n    printf("\t%s:spill_reg_p(qp=p%u,t=%lu,reg=%s,treg=%s)\n",&DAT_0017c93d,(ulong)(bVar1 & 0x3f),\n           uVar8,auStack_78,local_58);\n  }\n  else {\n    FUN_0013bae0(local_58,bVar2 & 0x7f);\n    printf("\t%s:restore_p(qp=p%u,t=%lu,reg=%s)\n",&DAT_0017c93d,(ulong)(bVar1 & 0x3f),uVar8,\n           local_58);\n  }\n  return pbVar6;\n}" (type_identifier "byte") (pointer_declarator "* FUN_0013c360(byte *param_1)" (* "*") (function_declarator "FUN_0013c360(byte *param_1)" (identifier "FUN_0013c360") (parameter_list "(byte *param_1)" (( "(") (parameter_declaration "byte *param_1" (type_identifier "byte") (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) () ")")))) (compound_statement "{\n  byte bVar1;\n  byte bVar2;\n  byte bVar3;\n  byte bVar4;\n  byte bVar5;\n  byte *pbVar6;\n  ulong uVar8;\n  undefined1 auStack_78 [32];\n  undefined1 local_58 [40];\n  byte *pbVar7;\n  \n  pbVar6 = param_1 + 4;\n  bVar1 = *param_1;\n  bVar2 = param_1[1];\n  bVar3 = param_1[2];\n  uVar8 = (ulong)(param_1[3] & 0x7f);\n  if ((char)param_1[3] < '\0') {\n    bVar5 = 0;\n    pbVar7 = pbVar6;\n    do {\n      pbVar6 = pbVar7 + 1;\n      bVar4 = *pbVar7;\n      bVar5 = bVar5 + 7;\n      uVar8 = uVar8 | (ulong)(bVar4 & 0x7f) << (bVar5 & 0x3f);\n      pbVar7 = pbVar6;\n    } while ((char)bVar4 < '\0');\n  }\n  if (((char)bVar2 < '\0') || (bVar3 != 0)) {\n    FUN_0013bae0(auStack_78,bVar2 & 0x7f);\n    FUN_0013c200(local_58,bVar2 >> 7,bVar3);\n    printf("\t%s:spill_reg_p(qp=p%u,t=%lu,reg=%s,treg=%s)\n",&DAT_0017c93d,(ulong)(bVar1 & 0x3f),\n           uVar8,auStack_78,local_58);\n  }\n  else {\n    FUN_0013bae0(local_58,bVar2 & 0x7f);\n    printf("\t%s:restore_p(qp=p%u,t=%lu,reg=%s)\n",&DAT_0017c93d,(ulong)(bVar1 & 0x3f),uVar8,\n           local_58);\n  }\n  return pbVar6;\n}" ({ "{") (declaration "byte bVar1;" (type_identifier "byte") (identifier "bVar1") (; ";")) (declaration "byte bVar2;" (type_identifier "byte") (identifier "bVar2") (; ";")) (declaration "byte bVar3;" (type_identifier "byte") (identifier "bVar3") (; ";")) (declaration "byte bVar4;" (type_identifier "byte") (identifier "bVar4") (; ";")) (declaration "byte bVar5;" (type_identifier "byte") (identifier "bVar5") (; ";")) (declaration "byte *pbVar6;" (type_identifier "byte") (pointer_declarator "*pbVar6" (* "*") (identifier "pbVar6")) (; ";")) (declaration "ulong uVar8;" (type_identifier "ulong") (identifier "uVar8") (; ";")) (declaration "undefined1 auStack_78 [32];" (type_identifier "undefined1") (array_declarator "auStack_78 [32]" (identifier "auStack_78") ([ "[") (number_literal "32") (] "]")) (; ";")) (declaration "undefined1 local_58 [40];" (type_identifier "undefined1") (array_declarator "local_58 [40]" (identifier "local_58") ([ "[") (number_literal "40") (] "]")) (; ";")) (declaration "byte *pbVar7;" (type_identifier "byte") (pointer_declarator "*pbVar7" (* "*") (identifier "pbVar7")) (; ";")) (expression_statement "pbVar6 = param_1 + 4;" (assignment_expression "pbVar6 = param_1 + 4" (identifier "pbVar6") (= "=") (binary_expression "param_1 + 4" (identifier "param_1") (+ "+") (number_literal "4"))) (; ";")) (expression_statement "bVar1 = *param_1;" (assignment_expression "bVar1 = *param_1" (identifier "bVar1") (= "=") (pointer_expression "*param_1" (* "*") (identifier "param_1"))) (; ";")) (expression_statement "bVar2 = param_1[1];" (assignment_expression "bVar2 = param_1[1]" (identifier "bVar2") (= "=") (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "bVar3 = param_1[2];" (assignment_expression "bVar3 = param_1[2]" (identifier "bVar3") (= "=") (subscript_expression "param_1[2]" (identifier "param_1") ([ "[") (number_literal "2") (] "]"))) (; ";")) (expression_statement "uVar8 = (ulong)(param_1[3] & 0x7f);" (assignment_expression "uVar8 = (ulong)(param_1[3] & 0x7f)" (identifier "uVar8") (= "=") (call_expression "(ulong)(param_1[3] & 0x7f)" (parenthesized_expression "(ulong)" (( "(") (identifier "ulong") () ")")) (argument_list "(param_1[3] & 0x7f)" (( "(") (binary_expression "param_1[3] & 0x7f" (subscript_expression "param_1[3]" (identifier "param_1") ([ "[") (number_literal "3") (] "]")) (& "&") (number_literal "0x7f")) () ")")))) (; ";")) (if_statement "if ((char)param_1[3] < '\0') {\n    bVar5 = 0;\n    pbVar7 = pbVar6;\n    do {\n      pbVar6 = pbVar7 + 1;\n      bVar4 = *pbVar7;\n      bVar5 = bVar5 + 7;\n      uVar8 = uVar8 | (ulong)(bVar4 & 0x7f) << (bVar5 & 0x3f);\n      pbVar7 = pbVar6;\n    } while ((char)bVar4 < '\0');\n  }" (if "if") (parenthesized_expression "((char)param_1[3] < '\0')" (( "(") (binary_expression "(char)param_1[3] < '\0'" (cast_expression "(char)param_1[3]" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (subscript_expression "param_1[3]" (identifier "param_1") ([ "[") (number_literal "3") (] "]"))) (< "<") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n    bVar5 = 0;\n    pbVar7 = pbVar6;\n    do {\n      pbVar6 = pbVar7 + 1;\n      bVar4 = *pbVar7;\n      bVar5 = bVar5 + 7;\n      uVar8 = uVar8 | (ulong)(bVar4 & 0x7f) << (bVar5 & 0x3f);\n      pbVar7 = pbVar6;\n    } while ((char)bVar4 < '\0');\n  }" ({ "{") (expression_statement "bVar5 = 0;" (assignment_expression "bVar5 = 0" (identifier "bVar5") (= "=") (number_literal "0")) (; ";")) (expression_statement "pbVar7 = pbVar6;" (assignment_expression "pbVar7 = pbVar6" (identifier "pbVar7") (= "=") (identifier "pbVar6")) (; ";")) (do_statement "do {\n      pbVar6 = pbVar7 + 1;\n      bVar4 = *pbVar7;\n      bVar5 = bVar5 + 7;\n      uVar8 = uVar8 | (ulong)(bVar4 & 0x7f) << (bVar5 & 0x3f);\n      pbVar7 = pbVar6;\n    } while ((char)bVar4 < '\0');" (do "do") (compound_statement "{\n      pbVar6 = pbVar7 + 1;\n      bVar4 = *pbVar7;\n      bVar5 = bVar5 + 7;\n      uVar8 = uVar8 | (ulong)(bVar4 & 0x7f) << (bVar5 & 0x3f);\n      pbVar7 = pbVar6;\n    }" ({ "{") (expression_statement "pbVar6 = pbVar7 + 1;" (assignment_expression "pbVar6 = pbVar7 + 1" (identifier "pbVar6") (= "=") (binary_expression "pbVar7 + 1" (identifier "pbVar7") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "bVar4 = *pbVar7;" (assignment_expression "bVar4 = *pbVar7" (identifier "bVar4") (= "=") (pointer_expression "*pbVar7" (* "*") (identifier "pbVar7"))) (; ";")) (expression_statement "bVar5 = bVar5 + 7;" (assignment_expression "bVar5 = bVar5 + 7" (identifier "bVar5") (= "=") (binary_expression "bVar5 + 7" (identifier "bVar5") (+ "+") (number_literal "7"))) (; ";")) (expression_statement "uVar8 = uVar8 | (ulong)(bVar4 & 0x7f) << (bVar5 & 0x3f);" (assignment_expression "uVar8 = uVar8 | (ulong)(bVar4 & 0x7f) << (bVar5 & 0x3f)" (identifier "uVar8") (= "=") (binary_expression "uVar8 | (ulong)(bVar4 & 0x7f) << (bVar5 & 0x3f)" (identifier "uVar8") (| "|") (binary_expression "(ulong)(bVar4 & 0x7f) << (bVar5 & 0x3f)" (call_expression "(ulong)(bVar4 & 0x7f)" (parenthesized_expression "(ulong)" (( "(") (identifier "ulong") () ")")) (argument_list "(bVar4 & 0x7f)" (( "(") (binary_expression "bVar4 & 0x7f" (identifier "bVar4") (& "&") (number_literal "0x7f")) () ")"))) (<< "<<") (parenthesized_expression "(bVar5 & 0x3f)" (( "(") (binary_expression "bVar5 & 0x3f" (identifier "bVar5") (& "&") (number_literal "0x3f")) () ")"))))) (; ";")) (expression_statement "pbVar7 = pbVar6;" (assignment_expression "pbVar7 = pbVar6" (identifier "pbVar7") (= "=") (identifier "pbVar6")) (; ";")) (} "}")) (while "while") (parenthesized_expression "((char)bVar4 < '\0')" (( "(") (binary_expression "(char)bVar4 < '\0'" (cast_expression "(char)bVar4" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (identifier "bVar4")) (< "<") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (; ";")) (} "}"))) (if_statement "if (((char)bVar2 < '\0') || (bVar3 != 0)) {\n    FUN_0013bae0(auStack_78,bVar2 & 0x7f);\n    FUN_0013c200(local_58,bVar2 >> 7,bVar3);\n    printf("\t%s:spill_reg_p(qp=p%u,t=%lu,reg=%s,treg=%s)\n",&DAT_0017c93d,(ulong)(bVar1 & 0x3f),\n           uVar8,auStack_78,local_58);\n  }\n  else {\n    FUN_0013bae0(local_58,bVar2 & 0x7f);\n    printf("\t%s:restore_p(qp=p%u,t=%lu,reg=%s)\n",&DAT_0017c93d,(ulong)(bVar1 & 0x3f),uVar8,\n           local_58);\n  }" (if "if") (parenthesized_expression "(((char)bVar2 < '\0') || (bVar3 != 0))" (( "(") (binary_expression "((char)bVar2 < '\0') || (bVar3 != 0)" (parenthesized_expression "((char)bVar2 < '\0')" (( "(") (binary_expression "(char)bVar2 < '\0'" (cast_expression "(char)bVar2" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (identifier "bVar2")) (< "<") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (|| "||") (parenthesized_expression "(bVar3 != 0)" (( "(") (binary_expression "bVar3 != 0" (identifier "bVar3") (!= "!=") (number_literal "0")) () ")"))) () ")")) (compound_statement "{\n    FUN_0013bae0(auStack_78,bVar2 & 0x7f);\n    FUN_0013c200(local_58,bVar2 >> 7,bVar3);\n    printf("\t%s:spill_reg_p(qp=p%u,t=%lu,reg=%s,treg=%s)\n",&DAT_0017c93d,(ulong)(bVar1 & 0x3f),\n           uVar8,auStack_78,local_58);\n  }" ({ "{") (expression_statement "FUN_0013bae0(auStack_78,bVar2 & 0x7f);" (call_expression "FUN_0013bae0(auStack_78,bVar2 & 0x7f)" (identifier "FUN_0013bae0") (argument_list "(auStack_78,bVar2 & 0x7f)" (( "(") (identifier "auStack_78") (, ",") (binary_expression "bVar2 & 0x7f" (identifier "bVar2") (& "&") (number_literal "0x7f")) () ")"))) (; ";")) (expression_statement "FUN_0013c200(local_58,bVar2 >> 7,bVar3);" (call_expression "FUN_0013c200(local_58,bVar2 >> 7,bVar3)" (identifier "FUN_0013c200") (argument_list "(local_58,bVar2 >> 7,bVar3)" (( "(") (identifier "local_58") (, ",") (binary_expression "bVar2 >> 7" (identifier "bVar2") (>> ">>") (number_literal "7")) (, ",") (identifier "bVar3") () ")"))) (; ";")) (expression_statement "printf("\t%s:spill_reg_p(qp=p%u,t=%lu,reg=%s,treg=%s)\n",&DAT_0017c93d,(ulong)(bVar1 & 0x3f),\n           uVar8,auStack_78,local_58);" (call_expression "printf("\t%s:spill_reg_p(qp=p%u,t=%lu,reg=%s,treg=%s)\n",&DAT_0017c93d,(ulong)(bVar1 & 0x3f),\n           uVar8,auStack_78,local_58)" (identifier "printf") (argument_list "("\t%s:spill_reg_p(qp=p%u,t=%lu,reg=%s,treg=%s)\n",&DAT_0017c93d,(ulong)(bVar1 & 0x3f),\n           uVar8,auStack_78,local_58)" (( "(") (string_literal ""\t%s:spill_reg_p(qp=p%u,t=%lu,reg=%s,treg=%s)\n"" (" """) (escape_sequence "\t") (string_content "%s:spill_reg_p(qp=p%u,t=%lu,reg=%s,treg=%s)") (escape_sequence "\n") (" """)) (, ",") (pointer_expression "&DAT_0017c93d" (& "&") (identifier "DAT_0017c93d")) (, ",") (call_expression "(ulong)(bVar1 & 0x3f)" (parenthesized_expression "(ulong)" (( "(") (identifier "ulong") () ")")) (argument_list "(bVar1 & 0x3f)" (( "(") (binary_expression "bVar1 & 0x3f" (identifier "bVar1") (& "&") (number_literal "0x3f")) () ")"))) (, ",") (identifier "uVar8") (, ",") (identifier "auStack_78") (, ",") (identifier "local_58") () ")"))) (; ";")) (} "}")) (else_clause "else {\n    FUN_0013bae0(local_58,bVar2 & 0x7f);\n    printf("\t%s:restore_p(qp=p%u,t=%lu,reg=%s)\n",&DAT_0017c93d,(ulong)(bVar1 & 0x3f),uVar8,\n           local_58);\n  }" (else "else") (compound_statement "{\n    FUN_0013bae0(local_58,bVar2 & 0x7f);\n    printf("\t%s:restore_p(qp=p%u,t=%lu,reg=%s)\n",&DAT_0017c93d,(ulong)(bVar1 & 0x3f),uVar8,\n           local_58);\n  }" ({ "{") (expression_statement "FUN_0013bae0(local_58,bVar2 & 0x7f);" (call_expression "FUN_0013bae0(local_58,bVar2 & 0x7f)" (identifier "FUN_0013bae0") (argument_list "(local_58,bVar2 & 0x7f)" (( "(") (identifier "local_58") (, ",") (binary_expression "bVar2 & 0x7f" (identifier "bVar2") (& "&") (number_literal "0x7f")) () ")"))) (; ";")) (expression_statement "printf("\t%s:restore_p(qp=p%u,t=%lu,reg=%s)\n",&DAT_0017c93d,(ulong)(bVar1 & 0x3f),uVar8,\n           local_58);" (call_expression "printf("\t%s:restore_p(qp=p%u,t=%lu,reg=%s)\n",&DAT_0017c93d,(ulong)(bVar1 & 0x3f),uVar8,\n           local_58)" (identifier "printf") (argument_list "("\t%s:restore_p(qp=p%u,t=%lu,reg=%s)\n",&DAT_0017c93d,(ulong)(bVar1 & 0x3f),uVar8,\n           local_58)" (( "(") (string_literal ""\t%s:restore_p(qp=p%u,t=%lu,reg=%s)\n"" (" """) (escape_sequence "\t") (string_content "%s:restore_p(qp=p%u,t=%lu,reg=%s)") (escape_sequence "\n") (" """)) (, ",") (pointer_expression "&DAT_0017c93d" (& "&") (identifier "DAT_0017c93d")) (, ",") (call_expression "(ulong)(bVar1 & 0x3f)" (parenthesized_expression "(ulong)" (( "(") (identifier "ulong") () ")")) (argument_list "(bVar1 & 0x3f)" (( "(") (binary_expression "bVar1 & 0x3f" (identifier "bVar1") (& "&") (number_literal "0x3f")) () ")"))) (, ",") (identifier "uVar8") (, ",") (identifier "local_58") () ")"))) (; ";")) (} "}")))) (return_statement "return pbVar6;" (return "return") (identifier "pbVar6") (; ";")) (} "}")))

type_1 * function_1(type_1 *var_1,type_2 code,void *arg)

{
  type_3 var_11;
  type_3 var_8;
  type_3 var_6;
  type_3 var_5;
  type_3 var_3;
  type_3 *pbVar6;
  type_4 var_4;
  char regname_1 [20];
  char regname [20];
  type_3 *var_2;
  
  pbVar6 = var_1 + 4;
  var_11 = *var_1;
  var_8 = var_1[1];
  var_6 = var_1[2];
  var_4 = (type_4)(var_1[3] & 0x7f);
  if ((char)var_1[3] < '\0') {
    var_3 = 0;
    var_2 = pbVar6;
    do {
      pbVar6 = var_2 + 1;
      var_5 = *var_2;
      var_3 = var_3 + 7;
      var_4 = var_4 | (type_4)(var_5 & 0x7f) << (var_3 & 0x3f);
      var_2 = pbVar6;
    } while ((char)var_5 < '\0');
  }
  if (((char)var_8 < '\0') || (var_6 != 0)) {
    var_7(regname_1,var_8 & 0x7f);
    var_9(regname,(type_2)(var_8 >> 7),(type_2)var_6);
    var_10("\t%s:spill_reg_p(qp=p%u,t=%lu,reg=%s,treg=%s)\n",&DAT_0017c93d,(type_4)(var_11 & 0x3f),
           var_4,regname_1,regname);
  }
  else {
    var_7(regname,var_8 & 0x7f);
    var_10("\t%s:restore_p(qp=p%u,t=%lu,reg=%s)\n",&DAT_0017c93d,(type_4)(var_11 & 0x3f),var_4,regname
          );
  }
  return pbVar6;
}


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

byte * MASKED(byte *param_1)

{
  byte bVar1;
  byte bVar2;
  byte bVar3;
  byte bVar4;
  byte bVar5;
  byte *pbVar6;
  ulong uVar8;
  undefined1 auStack_78 [32];
  undefined1 local_58 [40];
  byte *pbVar7;
  
  pbVar6 = param_1 + 4;
  bVar1 = *param_1;
  bVar2 = param_1[1];
  bVar3 = param_1[2];
  uVar8 = (ulong)(param_1[3] & 0x7f);
  if ((char)param_1[3] < '\0') {
    bVar5 = 0;
    pbVar7 = pbVar6;
    do {
      pbVar6 = pbVar7 + 1;
      bVar4 = *pbVar7;
      bVar5 = bVar5 + 7;
      uVar8 = uVar8 | (ulong)(bVar4 & 0x7f) << (bVar5 & 0x3f);
      pbVar7 = pbVar6;
    } while ((char)bVar4 < '\0');
  }
  if (((char)bVar2 < '\0') || (bVar3 != 0)) {
    FUN_0013bae0(auStack_78,bVar2 & 0x7f);
    FUN_0013c200(local_58,bVar2 >> 7,bVar3);
    printf("\t%s:spill_reg_p(qp=p%u,t=%lu,reg=%s,treg=%s)\n",&DAT_0017c93d,(ulong)(bVar1 & 0x3f),
           uVar8,auStack_78,local_58);
  }
  else {
    FUN_0013bae0(local_58,bVar2 & 0x7f);
    printf("\t%s:restore_p(qp=p%u,t=%lu,reg=%s)\n",&DAT_0017c93d,(ulong)(bVar1 & 0x3f),uVar8,
           local_58);
  }
  return pbVar6;
}

