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

{
  byte bVar1;
  byte bVar2;
  byte *pbVar3;
  ulong uVar5;
  uint abreg;
  ulong uVar6;
  char regname [20];
  byte *pbVar4;
  
  bVar1 = 0;
  bVar2 = dp[1];
  uVar5 = (ulong)(bVar2 & 0x7f);
  pbVar4 = dp + 2;
  while ((char)bVar2 < '\0') {
    bVar2 = *pbVar4;
    bVar1 = bVar1 + 7;
    uVar5 = uVar5 | (ulong)(bVar2 & 0x7f) << (bVar1 & 0x3f);
    pbVar4 = pbVar4 + 1;
  }
  pbVar3 = pbVar4 + 1;
  uVar6 = (ulong)(*pbVar4 & 0x7f);
  if ((char)*pbVar4 < '\0') {
    bVar2 = 0;
    pbVar4 = pbVar3;
    do {
      pbVar3 = pbVar4 + 1;
      bVar1 = *pbVar4;
      bVar2 = bVar2 + 7;
      uVar6 = uVar6 | (ulong)(bVar1 & 0x7f) << (bVar2 & 0x3f);
      pbVar4 = pbVar3;
    } while ((char)bVar1 < '\0');
  }
  abreg = *dp & 0x7f;
  if (-1 < (char)*dp) {
    unw_print_abreg(regname,abreg);
    printf("\t%s:spill_psprel(reg=%s,t=%lu,pspoff=0x10-0x%lx)\n",&DAT_0015ef55,regname,uVar5,
           uVar6 * 4);
    return pbVar3;
  }
  unw_print_abreg(regname,abreg);
  printf("\t%s:spill_sprel(reg=%s,t=%lu,spoff=0x%lx)\n",&DAT_0015ef55,regname,uVar5,uVar6 * 4);
  return pbVar3;
}



byte * FUN_0013bb60(byte *param_1)

{
  byte bVar1;
  byte *pbVar2;
  ulong uVar4;
  byte bVar5;
  ulong uVar6;
  undefined1 auStack_48 [40];
  byte *pbVar3;
  
  bVar1 = 0;
  bVar5 = param_1[1];
  uVar4 = (ulong)(bVar5 & 0x7f);
  pbVar3 = param_1 + 2;
  while ((char)bVar5 < '\0') {
    bVar5 = *pbVar3;
    bVar1 = bVar1 + 7;
    uVar4 = uVar4 | (ulong)(bVar5 & 0x7f) << (bVar1 & 0x3f);
    pbVar3 = pbVar3 + 1;
  }
  pbVar2 = pbVar3 + 1;
  uVar6 = (ulong)(*pbVar3 & 0x7f);
  if ((char)*pbVar3 < '\0') {
    bVar5 = 0;
    pbVar3 = pbVar2;
    do {
      pbVar2 = pbVar3 + 1;
      bVar1 = *pbVar3;
      bVar5 = bVar5 + 7;
      uVar6 = uVar6 | (ulong)(bVar1 & 0x7f) << (bVar5 & 0x3f);
      pbVar3 = pbVar2;
    } while ((char)bVar1 < '\0');
  }
  bVar5 = *param_1 & 0x7f;
  if (-1 < (char)*param_1) {
    FUN_0013bae0(auStack_48,bVar5);
    printf("\t%s:spill_psprel(reg=%s,t=%lu,pspoff=0x10-0x%lx)\n",&DAT_0015ef55,auStack_48,uVar4,
           uVar6 * 4);
    return pbVar2;
  }
  FUN_0013bae0(auStack_48,bVar5);
  printf("\t%s:spill_sprel(reg=%s,t=%lu,spoff=0x%lx)\n",&DAT_0015ef55,auStack_48,uVar4,uVar6 * 4);
  return pbVar2;
}


PUSH R13
LEA RDX,[RDI + 0x2]
XOR ECX,ECX
PUSH R12
PUSH RBP
PUSH RBX
SUB RSP,0x28
MOVZX EAX,byte ptr [RDI + 0x1]
MOVZX R9D,byte ptr [RDI]
MOV RBP,RAX
AND EBP,0x7f
TEST AL,AL
JNS 0x0013bba4
NOP word ptr [RAX + RAX*0x1]
ADD RDX,0x1
MOVZX ESI,byte ptr [RDX + -0x1]
ADD ECX,0x7
MOV RAX,RSI
AND EAX,0x7f
SHL RAX,CL
OR RBP,RAX
TEST SIL,SIL
JS 0x0013bb88
MOVZX EAX,byte ptr [RDX]
LEA RBX,[RDX + 0x1]
MOV R8,RAX
AND R8D,0x7f
TEST AL,AL
JNS 0x0013bbdb
XOR ECX,ECX
NOP dword ptr [RAX + RAX*0x1]
ADD RBX,0x1
MOVZX EDX,byte ptr [RBX + -0x1]
ADD ECX,0x7
MOV RAX,RDX
AND EAX,0x7f
SHL RAX,CL
OR R8,RAX
TEST DL,DL
JS 0x0013bbc0
MOV ESI,R9D
MOV R13,RSP
LEA R12,[R8*0x4]
AND ESI,0x7f
MOV RDI,R13
TEST R9B,R9B
JS 0x0013bc28
CALL 0x0013bae0
MOV R8,R12
MOV RCX,RBP
MOV RDX,R13
LEA RSI,[0x15ef55]
LEA RDI,[0x17caf0]
XOR EAX,EAX
CALL 0x00107190
ADD RSP,0x28
MOV RAX,RBX
POP RBX
POP RBP
POP R12
POP R13
RET
CALL 0x0013bae0
MOV R8,R12
MOV RCX,RBP
MOV RDX,R13
LEA RSI,[0x15ef55]
LEA RDI,[0x17cac0]
XOR EAX,EAX
CALL 0x00107190
ADD RSP,0x28
MOV RAX,RBX
POP RBX
POP RBP
POP R12
POP R13
RET
(translation_unit "byte * FUN_0013bb60(byte *param_1)\n\n{\n  byte bVar1;\n  byte *pbVar2;\n  ulong uVar4;\n  byte bVar5;\n  ulong uVar6;\n  undefined1 auStack_48 [40];\n  byte *pbVar3;\n  \n  bVar1 = 0;\n  bVar5 = param_1[1];\n  uVar4 = (ulong)(bVar5 & 0x7f);\n  pbVar3 = param_1 + 2;\n  while ((char)bVar5 < '\0') {\n    bVar5 = *pbVar3;\n    bVar1 = bVar1 + 7;\n    uVar4 = uVar4 | (ulong)(bVar5 & 0x7f) << (bVar1 & 0x3f);\n    pbVar3 = pbVar3 + 1;\n  }\n  pbVar2 = pbVar3 + 1;\n  uVar6 = (ulong)(*pbVar3 & 0x7f);\n  if ((char)*pbVar3 < '\0') {\n    bVar5 = 0;\n    pbVar3 = pbVar2;\n    do {\n      pbVar2 = pbVar3 + 1;\n      bVar1 = *pbVar3;\n      bVar5 = bVar5 + 7;\n      uVar6 = uVar6 | (ulong)(bVar1 & 0x7f) << (bVar5 & 0x3f);\n      pbVar3 = pbVar2;\n    } while ((char)bVar1 < '\0');\n  }\n  bVar5 = *param_1 & 0x7f;\n  if (-1 < (char)*param_1) {\n    FUN_0013bae0(auStack_48,bVar5);\n    printf("\t%s:spill_psprel(reg=%s,t=%lu,pspoff=0x10-0x%lx)\n",&DAT_0015ef55,auStack_48,uVar4,\n           uVar6 * 4);\n    return pbVar2;\n  }\n  FUN_0013bae0(auStack_48,bVar5);\n  printf("\t%s:spill_sprel(reg=%s,t=%lu,spoff=0x%lx)\n",&DAT_0015ef55,auStack_48,uVar4,uVar6 * 4);\n  return pbVar2;\n}\n\n" (function_definition "byte * FUN_0013bb60(byte *param_1)\n\n{\n  byte bVar1;\n  byte *pbVar2;\n  ulong uVar4;\n  byte bVar5;\n  ulong uVar6;\n  undefined1 auStack_48 [40];\n  byte *pbVar3;\n  \n  bVar1 = 0;\n  bVar5 = param_1[1];\n  uVar4 = (ulong)(bVar5 & 0x7f);\n  pbVar3 = param_1 + 2;\n  while ((char)bVar5 < '\0') {\n    bVar5 = *pbVar3;\n    bVar1 = bVar1 + 7;\n    uVar4 = uVar4 | (ulong)(bVar5 & 0x7f) << (bVar1 & 0x3f);\n    pbVar3 = pbVar3 + 1;\n  }\n  pbVar2 = pbVar3 + 1;\n  uVar6 = (ulong)(*pbVar3 & 0x7f);\n  if ((char)*pbVar3 < '\0') {\n    bVar5 = 0;\n    pbVar3 = pbVar2;\n    do {\n      pbVar2 = pbVar3 + 1;\n      bVar1 = *pbVar3;\n      bVar5 = bVar5 + 7;\n      uVar6 = uVar6 | (ulong)(bVar1 & 0x7f) << (bVar5 & 0x3f);\n      pbVar3 = pbVar2;\n    } while ((char)bVar1 < '\0');\n  }\n  bVar5 = *param_1 & 0x7f;\n  if (-1 < (char)*param_1) {\n    FUN_0013bae0(auStack_48,bVar5);\n    printf("\t%s:spill_psprel(reg=%s,t=%lu,pspoff=0x10-0x%lx)\n",&DAT_0015ef55,auStack_48,uVar4,\n           uVar6 * 4);\n    return pbVar2;\n  }\n  FUN_0013bae0(auStack_48,bVar5);\n  printf("\t%s:spill_sprel(reg=%s,t=%lu,spoff=0x%lx)\n",&DAT_0015ef55,auStack_48,uVar4,uVar6 * 4);\n  return pbVar2;\n}" type_identifier (pointer_declarator "* FUN_0013bb60(byte *param_1)" * (function_declarator "FUN_0013bb60(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 *pbVar2;\n  ulong uVar4;\n  byte bVar5;\n  ulong uVar6;\n  undefined1 auStack_48 [40];\n  byte *pbVar3;\n  \n  bVar1 = 0;\n  bVar5 = param_1[1];\n  uVar4 = (ulong)(bVar5 & 0x7f);\n  pbVar3 = param_1 + 2;\n  while ((char)bVar5 < '\0') {\n    bVar5 = *pbVar3;\n    bVar1 = bVar1 + 7;\n    uVar4 = uVar4 | (ulong)(bVar5 & 0x7f) << (bVar1 & 0x3f);\n    pbVar3 = pbVar3 + 1;\n  }\n  pbVar2 = pbVar3 + 1;\n  uVar6 = (ulong)(*pbVar3 & 0x7f);\n  if ((char)*pbVar3 < '\0') {\n    bVar5 = 0;\n    pbVar3 = pbVar2;\n    do {\n      pbVar2 = pbVar3 + 1;\n      bVar1 = *pbVar3;\n      bVar5 = bVar5 + 7;\n      uVar6 = uVar6 | (ulong)(bVar1 & 0x7f) << (bVar5 & 0x3f);\n      pbVar3 = pbVar2;\n    } while ((char)bVar1 < '\0');\n  }\n  bVar5 = *param_1 & 0x7f;\n  if (-1 < (char)*param_1) {\n    FUN_0013bae0(auStack_48,bVar5);\n    printf("\t%s:spill_psprel(reg=%s,t=%lu,pspoff=0x10-0x%lx)\n",&DAT_0015ef55,auStack_48,uVar4,\n           uVar6 * 4);\n    return pbVar2;\n  }\n  FUN_0013bae0(auStack_48,bVar5);\n  printf("\t%s:spill_sprel(reg=%s,t=%lu,spoff=0x%lx)\n",&DAT_0015ef55,auStack_48,uVar4,uVar6 * 4);\n  return pbVar2;\n}" { (declaration "byte bVar1;" type_identifier identifier ;) (declaration "byte *pbVar2;" type_identifier (pointer_declarator "*pbVar2" * identifier) ;) (declaration "ulong uVar4;" type_identifier identifier ;) (declaration "byte bVar5;" type_identifier identifier ;) (declaration "ulong uVar6;" type_identifier identifier ;) (declaration "undefined1 auStack_48 [40];" type_identifier (array_declarator "auStack_48 [40]" identifier [ number_literal ]) ;) (declaration "byte *pbVar3;" type_identifier (pointer_declarator "*pbVar3" * identifier) ;) (expression_statement "bVar1 = 0;" (assignment_expression "bVar1 = 0" identifier = number_literal) ;) (expression_statement "bVar5 = param_1[1];" (assignment_expression "bVar5 = param_1[1]" identifier = (subscript_expression "param_1[1]" identifier [ number_literal ])) ;) (expression_statement "uVar4 = (ulong)(bVar5 & 0x7f);" (assignment_expression "uVar4 = (ulong)(bVar5 & 0x7f)" identifier = (call_expression "(ulong)(bVar5 & 0x7f)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(bVar5 & 0x7f)" ( (binary_expression "bVar5 & 0x7f" identifier & number_literal) )))) ;) (expression_statement "pbVar3 = param_1 + 2;" (assignment_expression "pbVar3 = param_1 + 2" identifier = (binary_expression "param_1 + 2" identifier + number_literal)) ;) (while_statement "while ((char)bVar5 < '\0') {\n    bVar5 = *pbVar3;\n    bVar1 = bVar1 + 7;\n    uVar4 = uVar4 | (ulong)(bVar5 & 0x7f) << (bVar1 & 0x3f);\n    pbVar3 = pbVar3 + 1;\n  }" while (parenthesized_expression "((char)bVar5 < '\0')" ( (binary_expression "(char)bVar5 < '\0'" (cast_expression "(char)bVar5" ( (type_descriptor "char" primitive_type) ) identifier) < (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    bVar5 = *pbVar3;\n    bVar1 = bVar1 + 7;\n    uVar4 = uVar4 | (ulong)(bVar5 & 0x7f) << (bVar1 & 0x3f);\n    pbVar3 = pbVar3 + 1;\n  }" { (expression_statement "bVar5 = *pbVar3;" (assignment_expression "bVar5 = *pbVar3" identifier = (pointer_expression "*pbVar3" * identifier)) ;) (expression_statement "bVar1 = bVar1 + 7;" (assignment_expression "bVar1 = bVar1 + 7" identifier = (binary_expression "bVar1 + 7" identifier + number_literal)) ;) (expression_statement "uVar4 = uVar4 | (ulong)(bVar5 & 0x7f) << (bVar1 & 0x3f);" (assignment_expression "uVar4 = uVar4 | (ulong)(bVar5 & 0x7f) << (bVar1 & 0x3f)" identifier = (binary_expression "uVar4 | (ulong)(bVar5 & 0x7f) << (bVar1 & 0x3f)" identifier | (binary_expression "(ulong)(bVar5 & 0x7f) << (bVar1 & 0x3f)" (call_expression "(ulong)(bVar5 & 0x7f)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(bVar5 & 0x7f)" ( (binary_expression "bVar5 & 0x7f" identifier & number_literal) ))) << (parenthesized_expression "(bVar1 & 0x3f)" ( (binary_expression "bVar1 & 0x3f" identifier & number_literal) ))))) ;) (expression_statement "pbVar3 = pbVar3 + 1;" (assignment_expression "pbVar3 = pbVar3 + 1" identifier = (binary_expression "pbVar3 + 1" identifier + number_literal)) ;) })) (expression_statement "pbVar2 = pbVar3 + 1;" (assignment_expression "pbVar2 = pbVar3 + 1" identifier = (binary_expression "pbVar3 + 1" identifier + number_literal)) ;) (expression_statement "uVar6 = (ulong)(*pbVar3 & 0x7f);" (assignment_expression "uVar6 = (ulong)(*pbVar3 & 0x7f)" identifier = (call_expression "(ulong)(*pbVar3 & 0x7f)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(*pbVar3 & 0x7f)" ( (binary_expression "*pbVar3 & 0x7f" (pointer_expression "*pbVar3" * identifier) & number_literal) )))) ;) (if_statement "if ((char)*pbVar3 < '\0') {\n    bVar5 = 0;\n    pbVar3 = pbVar2;\n    do {\n      pbVar2 = pbVar3 + 1;\n      bVar1 = *pbVar3;\n      bVar5 = bVar5 + 7;\n      uVar6 = uVar6 | (ulong)(bVar1 & 0x7f) << (bVar5 & 0x3f);\n      pbVar3 = pbVar2;\n    } while ((char)bVar1 < '\0');\n  }" if (parenthesized_expression "((char)*pbVar3 < '\0')" ( (binary_expression "(char)*pbVar3 < '\0'" (cast_expression "(char)*pbVar3" ( (type_descriptor "char" primitive_type) ) (pointer_expression "*pbVar3" * identifier)) < (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    bVar5 = 0;\n    pbVar3 = pbVar2;\n    do {\n      pbVar2 = pbVar3 + 1;\n      bVar1 = *pbVar3;\n      bVar5 = bVar5 + 7;\n      uVar6 = uVar6 | (ulong)(bVar1 & 0x7f) << (bVar5 & 0x3f);\n      pbVar3 = pbVar2;\n    } while ((char)bVar1 < '\0');\n  }" { (expression_statement "bVar5 = 0;" (assignment_expression "bVar5 = 0" identifier = number_literal) ;) (expression_statement "pbVar3 = pbVar2;" (assignment_expression "pbVar3 = pbVar2" identifier = identifier) ;) (do_statement "do {\n      pbVar2 = pbVar3 + 1;\n      bVar1 = *pbVar3;\n      bVar5 = bVar5 + 7;\n      uVar6 = uVar6 | (ulong)(bVar1 & 0x7f) << (bVar5 & 0x3f);\n      pbVar3 = pbVar2;\n    } while ((char)bVar1 < '\0');" do (compound_statement "{\n      pbVar2 = pbVar3 + 1;\n      bVar1 = *pbVar3;\n      bVar5 = bVar5 + 7;\n      uVar6 = uVar6 | (ulong)(bVar1 & 0x7f) << (bVar5 & 0x3f);\n      pbVar3 = pbVar2;\n    }" { (expression_statement "pbVar2 = pbVar3 + 1;" (assignment_expression "pbVar2 = pbVar3 + 1" identifier = (binary_expression "pbVar3 + 1" identifier + number_literal)) ;) (expression_statement "bVar1 = *pbVar3;" (assignment_expression "bVar1 = *pbVar3" identifier = (pointer_expression "*pbVar3" * identifier)) ;) (expression_statement "bVar5 = bVar5 + 7;" (assignment_expression "bVar5 = bVar5 + 7" identifier = (binary_expression "bVar5 + 7" identifier + number_literal)) ;) (expression_statement "uVar6 = uVar6 | (ulong)(bVar1 & 0x7f) << (bVar5 & 0x3f);" (assignment_expression "uVar6 = uVar6 | (ulong)(bVar1 & 0x7f) << (bVar5 & 0x3f)" identifier = (binary_expression "uVar6 | (ulong)(bVar1 & 0x7f) << (bVar5 & 0x3f)" identifier | (binary_expression "(ulong)(bVar1 & 0x7f) << (bVar5 & 0x3f)" (call_expression "(ulong)(bVar1 & 0x7f)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(bVar1 & 0x7f)" ( (binary_expression "bVar1 & 0x7f" identifier & number_literal) ))) << (parenthesized_expression "(bVar5 & 0x3f)" ( (binary_expression "bVar5 & 0x3f" identifier & number_literal) ))))) ;) (expression_statement "pbVar3 = pbVar2;" (assignment_expression "pbVar3 = pbVar2" identifier = identifier) ;) }) while (parenthesized_expression "((char)bVar1 < '\0')" ( (binary_expression "(char)bVar1 < '\0'" (cast_expression "(char)bVar1" ( (type_descriptor "char" primitive_type) ) identifier) < (char_literal "'\0'" ' escape_sequence ')) )) ;) })) (expression_statement "bVar5 = *param_1 & 0x7f;" (assignment_expression "bVar5 = *param_1 & 0x7f" identifier = (binary_expression "*param_1 & 0x7f" (pointer_expression "*param_1" * identifier) & number_literal)) ;) (if_statement "if (-1 < (char)*param_1) {\n    FUN_0013bae0(auStack_48,bVar5);\n    printf("\t%s:spill_psprel(reg=%s,t=%lu,pspoff=0x10-0x%lx)\n",&DAT_0015ef55,auStack_48,uVar4,\n           uVar6 * 4);\n    return pbVar2;\n  }" if (parenthesized_expression "(-1 < (char)*param_1)" ( (binary_expression "-1 < (char)*param_1" number_literal < (cast_expression "(char)*param_1" ( (type_descriptor "char" primitive_type) ) (pointer_expression "*param_1" * identifier))) )) (compound_statement "{\n    FUN_0013bae0(auStack_48,bVar5);\n    printf("\t%s:spill_psprel(reg=%s,t=%lu,pspoff=0x10-0x%lx)\n",&DAT_0015ef55,auStack_48,uVar4,\n           uVar6 * 4);\n    return pbVar2;\n  }" { (expression_statement "FUN_0013bae0(auStack_48,bVar5);" (call_expression "FUN_0013bae0(auStack_48,bVar5)" identifier (argument_list "(auStack_48,bVar5)" ( identifier , identifier ))) ;) (expression_statement "printf("\t%s:spill_psprel(reg=%s,t=%lu,pspoff=0x10-0x%lx)\n",&DAT_0015ef55,auStack_48,uVar4,\n           uVar6 * 4);" (call_expression "printf("\t%s:spill_psprel(reg=%s,t=%lu,pspoff=0x10-0x%lx)\n",&DAT_0015ef55,auStack_48,uVar4,\n           uVar6 * 4)" identifier (argument_list "("\t%s:spill_psprel(reg=%s,t=%lu,pspoff=0x10-0x%lx)\n",&DAT_0015ef55,auStack_48,uVar4,\n           uVar6 * 4)" ( (string_literal ""\t%s:spill_psprel(reg=%s,t=%lu,pspoff=0x10-0x%lx)\n"" " escape_sequence string_content escape_sequence ") , (pointer_expression "&DAT_0015ef55" & identifier) , identifier , identifier , (binary_expression "uVar6 * 4" identifier * number_literal) ))) ;) (return_statement "return pbVar2;" return identifier ;) })) (expression_statement "FUN_0013bae0(auStack_48,bVar5);" (call_expression "FUN_0013bae0(auStack_48,bVar5)" identifier (argument_list "(auStack_48,bVar5)" ( identifier , identifier ))) ;) (expression_statement "printf("\t%s:spill_sprel(reg=%s,t=%lu,spoff=0x%lx)\n",&DAT_0015ef55,auStack_48,uVar4,uVar6 * 4);" (call_expression "printf("\t%s:spill_sprel(reg=%s,t=%lu,spoff=0x%lx)\n",&DAT_0015ef55,auStack_48,uVar4,uVar6 * 4)" identifier (argument_list "("\t%s:spill_sprel(reg=%s,t=%lu,spoff=0x%lx)\n",&DAT_0015ef55,auStack_48,uVar4,uVar6 * 4)" ( (string_literal ""\t%s:spill_sprel(reg=%s,t=%lu,spoff=0x%lx)\n"" " escape_sequence string_content escape_sequence ") , (pointer_expression "&DAT_0015ef55" & identifier) , identifier , identifier , (binary_expression "uVar6 * 4" identifier * number_literal) ))) ;) (return_statement "return pbVar2;" return identifier ;) })))
(translation_unit "uchar * unw_decode_x1(uchar *dp,uint code,void *arg)\n\n{\n  byte bVar1;\n  byte bVar2;\n  byte *pbVar3;\n  ulong uVar5;\n  uint abreg;\n  ulong uVar6;\n  char regname [20];\n  byte *pbVar4;\n  \n  bVar1 = 0;\n  bVar2 = dp[1];\n  uVar5 = (ulong)(bVar2 & 0x7f);\n  pbVar4 = dp + 2;\n  while ((char)bVar2 < '\0') {\n    bVar2 = *pbVar4;\n    bVar1 = bVar1 + 7;\n    uVar5 = uVar5 | (ulong)(bVar2 & 0x7f) << (bVar1 & 0x3f);\n    pbVar4 = pbVar4 + 1;\n  }\n  pbVar3 = pbVar4 + 1;\n  uVar6 = (ulong)(*pbVar4 & 0x7f);\n  if ((char)*pbVar4 < '\0') {\n    bVar2 = 0;\n    pbVar4 = pbVar3;\n    do {\n      pbVar3 = pbVar4 + 1;\n      bVar1 = *pbVar4;\n      bVar2 = bVar2 + 7;\n      uVar6 = uVar6 | (ulong)(bVar1 & 0x7f) << (bVar2 & 0x3f);\n      pbVar4 = pbVar3;\n    } while ((char)bVar1 < '\0');\n  }\n  abreg = *dp & 0x7f;\n  if (-1 < (char)*dp) {\n    unw_print_abreg(regname,abreg);\n    printf("\t%s:spill_psprel(reg=%s,t=%lu,pspoff=0x10-0x%lx)\n",&DAT_0015ef55,regname,uVar5,\n           uVar6 * 4);\n    return pbVar3;\n  }\n  unw_print_abreg(regname,abreg);\n  printf("\t%s:spill_sprel(reg=%s,t=%lu,spoff=0x%lx)\n",&DAT_0015ef55,regname,uVar5,uVar6 * 4);\n  return pbVar3;\n}\n\n" (function_definition "uchar * unw_decode_x1(uchar *dp,uint code,void *arg)\n\n{\n  byte bVar1;\n  byte bVar2;\n  byte *pbVar3;\n  ulong uVar5;\n  uint abreg;\n  ulong uVar6;\n  char regname [20];\n  byte *pbVar4;\n  \n  bVar1 = 0;\n  bVar2 = dp[1];\n  uVar5 = (ulong)(bVar2 & 0x7f);\n  pbVar4 = dp + 2;\n  while ((char)bVar2 < '\0') {\n    bVar2 = *pbVar4;\n    bVar1 = bVar1 + 7;\n    uVar5 = uVar5 | (ulong)(bVar2 & 0x7f) << (bVar1 & 0x3f);\n    pbVar4 = pbVar4 + 1;\n  }\n  pbVar3 = pbVar4 + 1;\n  uVar6 = (ulong)(*pbVar4 & 0x7f);\n  if ((char)*pbVar4 < '\0') {\n    bVar2 = 0;\n    pbVar4 = pbVar3;\n    do {\n      pbVar3 = pbVar4 + 1;\n      bVar1 = *pbVar4;\n      bVar2 = bVar2 + 7;\n      uVar6 = uVar6 | (ulong)(bVar1 & 0x7f) << (bVar2 & 0x3f);\n      pbVar4 = pbVar3;\n    } while ((char)bVar1 < '\0');\n  }\n  abreg = *dp & 0x7f;\n  if (-1 < (char)*dp) {\n    unw_print_abreg(regname,abreg);\n    printf("\t%s:spill_psprel(reg=%s,t=%lu,pspoff=0x10-0x%lx)\n",&DAT_0015ef55,regname,uVar5,\n           uVar6 * 4);\n    return pbVar3;\n  }\n  unw_print_abreg(regname,abreg);\n  printf("\t%s:spill_sprel(reg=%s,t=%lu,spoff=0x%lx)\n",&DAT_0015ef55,regname,uVar5,uVar6 * 4);\n  return pbVar3;\n}" type_identifier (pointer_declarator "* unw_decode_x1(uchar *dp,uint code,void *arg)" * (function_declarator "unw_decode_x1(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 *pbVar3;\n  ulong uVar5;\n  uint abreg;\n  ulong uVar6;\n  char regname [20];\n  byte *pbVar4;\n  \n  bVar1 = 0;\n  bVar2 = dp[1];\n  uVar5 = (ulong)(bVar2 & 0x7f);\n  pbVar4 = dp + 2;\n  while ((char)bVar2 < '\0') {\n    bVar2 = *pbVar4;\n    bVar1 = bVar1 + 7;\n    uVar5 = uVar5 | (ulong)(bVar2 & 0x7f) << (bVar1 & 0x3f);\n    pbVar4 = pbVar4 + 1;\n  }\n  pbVar3 = pbVar4 + 1;\n  uVar6 = (ulong)(*pbVar4 & 0x7f);\n  if ((char)*pbVar4 < '\0') {\n    bVar2 = 0;\n    pbVar4 = pbVar3;\n    do {\n      pbVar3 = pbVar4 + 1;\n      bVar1 = *pbVar4;\n      bVar2 = bVar2 + 7;\n      uVar6 = uVar6 | (ulong)(bVar1 & 0x7f) << (bVar2 & 0x3f);\n      pbVar4 = pbVar3;\n    } while ((char)bVar1 < '\0');\n  }\n  abreg = *dp & 0x7f;\n  if (-1 < (char)*dp) {\n    unw_print_abreg(regname,abreg);\n    printf("\t%s:spill_psprel(reg=%s,t=%lu,pspoff=0x10-0x%lx)\n",&DAT_0015ef55,regname,uVar5,\n           uVar6 * 4);\n    return pbVar3;\n  }\n  unw_print_abreg(regname,abreg);\n  printf("\t%s:spill_sprel(reg=%s,t=%lu,spoff=0x%lx)\n",&DAT_0015ef55,regname,uVar5,uVar6 * 4);\n  return pbVar3;\n}" { (declaration "byte bVar1;" type_identifier identifier ;) (declaration "byte bVar2;" type_identifier identifier ;) (declaration "byte *pbVar3;" type_identifier (pointer_declarator "*pbVar3" * identifier) ;) (declaration "ulong uVar5;" type_identifier identifier ;) (declaration "uint abreg;" type_identifier identifier ;) (declaration "ulong uVar6;" type_identifier identifier ;) (declaration "char regname [20];" primitive_type (array_declarator "regname [20]" identifier [ number_literal ]) ;) (declaration "byte *pbVar4;" type_identifier (pointer_declarator "*pbVar4" * identifier) ;) (expression_statement "bVar1 = 0;" (assignment_expression "bVar1 = 0" identifier = number_literal) ;) (expression_statement "bVar2 = dp[1];" (assignment_expression "bVar2 = dp[1]" identifier = (subscript_expression "dp[1]" identifier [ number_literal ])) ;) (expression_statement "uVar5 = (ulong)(bVar2 & 0x7f);" (assignment_expression "uVar5 = (ulong)(bVar2 & 0x7f)" identifier = (call_expression "(ulong)(bVar2 & 0x7f)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(bVar2 & 0x7f)" ( (binary_expression "bVar2 & 0x7f" identifier & number_literal) )))) ;) (expression_statement "pbVar4 = dp + 2;" (assignment_expression "pbVar4 = dp + 2" identifier = (binary_expression "dp + 2" identifier + number_literal)) ;) (while_statement "while ((char)bVar2 < '\0') {\n    bVar2 = *pbVar4;\n    bVar1 = bVar1 + 7;\n    uVar5 = uVar5 | (ulong)(bVar2 & 0x7f) << (bVar1 & 0x3f);\n    pbVar4 = pbVar4 + 1;\n  }" while (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 ')) )) (compound_statement "{\n    bVar2 = *pbVar4;\n    bVar1 = bVar1 + 7;\n    uVar5 = uVar5 | (ulong)(bVar2 & 0x7f) << (bVar1 & 0x3f);\n    pbVar4 = pbVar4 + 1;\n  }" { (expression_statement "bVar2 = *pbVar4;" (assignment_expression "bVar2 = *pbVar4" identifier = (pointer_expression "*pbVar4" * identifier)) ;) (expression_statement "bVar1 = bVar1 + 7;" (assignment_expression "bVar1 = bVar1 + 7" identifier = (binary_expression "bVar1 + 7" identifier + number_literal)) ;) (expression_statement "uVar5 = uVar5 | (ulong)(bVar2 & 0x7f) << (bVar1 & 0x3f);" (assignment_expression "uVar5 = uVar5 | (ulong)(bVar2 & 0x7f) << (bVar1 & 0x3f)" identifier = (binary_expression "uVar5 | (ulong)(bVar2 & 0x7f) << (bVar1 & 0x3f)" identifier | (binary_expression "(ulong)(bVar2 & 0x7f) << (bVar1 & 0x3f)" (call_expression "(ulong)(bVar2 & 0x7f)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(bVar2 & 0x7f)" ( (binary_expression "bVar2 & 0x7f" identifier & number_literal) ))) << (parenthesized_expression "(bVar1 & 0x3f)" ( (binary_expression "bVar1 & 0x3f" identifier & number_literal) ))))) ;) (expression_statement "pbVar4 = pbVar4 + 1;" (assignment_expression "pbVar4 = pbVar4 + 1" identifier = (binary_expression "pbVar4 + 1" identifier + number_literal)) ;) })) (expression_statement "pbVar3 = pbVar4 + 1;" (assignment_expression "pbVar3 = pbVar4 + 1" identifier = (binary_expression "pbVar4 + 1" identifier + number_literal)) ;) (expression_statement "uVar6 = (ulong)(*pbVar4 & 0x7f);" (assignment_expression "uVar6 = (ulong)(*pbVar4 & 0x7f)" identifier = (call_expression "(ulong)(*pbVar4 & 0x7f)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(*pbVar4 & 0x7f)" ( (binary_expression "*pbVar4 & 0x7f" (pointer_expression "*pbVar4" * identifier) & number_literal) )))) ;) (if_statement "if ((char)*pbVar4 < '\0') {\n    bVar2 = 0;\n    pbVar4 = pbVar3;\n    do {\n      pbVar3 = pbVar4 + 1;\n      bVar1 = *pbVar4;\n      bVar2 = bVar2 + 7;\n      uVar6 = uVar6 | (ulong)(bVar1 & 0x7f) << (bVar2 & 0x3f);\n      pbVar4 = pbVar3;\n    } while ((char)bVar1 < '\0');\n  }" if (parenthesized_expression "((char)*pbVar4 < '\0')" ( (binary_expression "(char)*pbVar4 < '\0'" (cast_expression "(char)*pbVar4" ( (type_descriptor "char" primitive_type) ) (pointer_expression "*pbVar4" * identifier)) < (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    bVar2 = 0;\n    pbVar4 = pbVar3;\n    do {\n      pbVar3 = pbVar4 + 1;\n      bVar1 = *pbVar4;\n      bVar2 = bVar2 + 7;\n      uVar6 = uVar6 | (ulong)(bVar1 & 0x7f) << (bVar2 & 0x3f);\n      pbVar4 = pbVar3;\n    } while ((char)bVar1 < '\0');\n  }" { (expression_statement "bVar2 = 0;" (assignment_expression "bVar2 = 0" identifier = number_literal) ;) (expression_statement "pbVar4 = pbVar3;" (assignment_expression "pbVar4 = pbVar3" identifier = identifier) ;) (do_statement "do {\n      pbVar3 = pbVar4 + 1;\n      bVar1 = *pbVar4;\n      bVar2 = bVar2 + 7;\n      uVar6 = uVar6 | (ulong)(bVar1 & 0x7f) << (bVar2 & 0x3f);\n      pbVar4 = pbVar3;\n    } while ((char)bVar1 < '\0');" do (compound_statement "{\n      pbVar3 = pbVar4 + 1;\n      bVar1 = *pbVar4;\n      bVar2 = bVar2 + 7;\n      uVar6 = uVar6 | (ulong)(bVar1 & 0x7f) << (bVar2 & 0x3f);\n      pbVar4 = pbVar3;\n    }" { (expression_statement "pbVar3 = pbVar4 + 1;" (assignment_expression "pbVar3 = pbVar4 + 1" identifier = (binary_expression "pbVar4 + 1" identifier + number_literal)) ;) (expression_statement "bVar1 = *pbVar4;" (assignment_expression "bVar1 = *pbVar4" identifier = (pointer_expression "*pbVar4" * identifier)) ;) (expression_statement "bVar2 = bVar2 + 7;" (assignment_expression "bVar2 = bVar2 + 7" identifier = (binary_expression "bVar2 + 7" identifier + number_literal)) ;) (expression_statement "uVar6 = uVar6 | (ulong)(bVar1 & 0x7f) << (bVar2 & 0x3f);" (assignment_expression "uVar6 = uVar6 | (ulong)(bVar1 & 0x7f) << (bVar2 & 0x3f)" identifier = (binary_expression "uVar6 | (ulong)(bVar1 & 0x7f) << (bVar2 & 0x3f)" identifier | (binary_expression "(ulong)(bVar1 & 0x7f) << (bVar2 & 0x3f)" (call_expression "(ulong)(bVar1 & 0x7f)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(bVar1 & 0x7f)" ( (binary_expression "bVar1 & 0x7f" identifier & number_literal) ))) << (parenthesized_expression "(bVar2 & 0x3f)" ( (binary_expression "bVar2 & 0x3f" identifier & number_literal) ))))) ;) (expression_statement "pbVar4 = pbVar3;" (assignment_expression "pbVar4 = pbVar3" identifier = identifier) ;) }) while (parenthesized_expression "((char)bVar1 < '\0')" ( (binary_expression "(char)bVar1 < '\0'" (cast_expression "(char)bVar1" ( (type_descriptor "char" primitive_type) ) identifier) < (char_literal "'\0'" ' escape_sequence ')) )) ;) })) (expression_statement "abreg = *dp & 0x7f;" (assignment_expression "abreg = *dp & 0x7f" identifier = (binary_expression "*dp & 0x7f" (pointer_expression "*dp" * identifier) & number_literal)) ;) (if_statement "if (-1 < (char)*dp) {\n    unw_print_abreg(regname,abreg);\n    printf("\t%s:spill_psprel(reg=%s,t=%lu,pspoff=0x10-0x%lx)\n",&DAT_0015ef55,regname,uVar5,\n           uVar6 * 4);\n    return pbVar3;\n  }" if (parenthesized_expression "(-1 < (char)*dp)" ( (binary_expression "-1 < (char)*dp" number_literal < (cast_expression "(char)*dp" ( (type_descriptor "char" primitive_type) ) (pointer_expression "*dp" * identifier))) )) (compound_statement "{\n    unw_print_abreg(regname,abreg);\n    printf("\t%s:spill_psprel(reg=%s,t=%lu,pspoff=0x10-0x%lx)\n",&DAT_0015ef55,regname,uVar5,\n           uVar6 * 4);\n    return pbVar3;\n  }" { (expression_statement "unw_print_abreg(regname,abreg);" (call_expression "unw_print_abreg(regname,abreg)" identifier (argument_list "(regname,abreg)" ( identifier , identifier ))) ;) (expression_statement "printf("\t%s:spill_psprel(reg=%s,t=%lu,pspoff=0x10-0x%lx)\n",&DAT_0015ef55,regname,uVar5,\n           uVar6 * 4);" (call_expression "printf("\t%s:spill_psprel(reg=%s,t=%lu,pspoff=0x10-0x%lx)\n",&DAT_0015ef55,regname,uVar5,\n           uVar6 * 4)" identifier (argument_list "("\t%s:spill_psprel(reg=%s,t=%lu,pspoff=0x10-0x%lx)\n",&DAT_0015ef55,regname,uVar5,\n           uVar6 * 4)" ( (string_literal ""\t%s:spill_psprel(reg=%s,t=%lu,pspoff=0x10-0x%lx)\n"" " escape_sequence string_content escape_sequence ") , (pointer_expression "&DAT_0015ef55" & identifier) , identifier , identifier , (binary_expression "uVar6 * 4" identifier * number_literal) ))) ;) (return_statement "return pbVar3;" return identifier ;) })) (expression_statement "unw_print_abreg(regname,abreg);" (call_expression "unw_print_abreg(regname,abreg)" identifier (argument_list "(regname,abreg)" ( identifier , identifier ))) ;) (expression_statement "printf("\t%s:spill_sprel(reg=%s,t=%lu,spoff=0x%lx)\n",&DAT_0015ef55,regname,uVar5,uVar6 * 4);" (call_expression "printf("\t%s:spill_sprel(reg=%s,t=%lu,spoff=0x%lx)\n",&DAT_0015ef55,regname,uVar5,uVar6 * 4)" identifier (argument_list "("\t%s:spill_sprel(reg=%s,t=%lu,spoff=0x%lx)\n",&DAT_0015ef55,regname,uVar5,uVar6 * 4)" ( (string_literal ""\t%s:spill_sprel(reg=%s,t=%lu,spoff=0x%lx)\n"" " escape_sequence string_content escape_sequence ") , (pointer_expression "&DAT_0015ef55" & identifier) , identifier , identifier , (binary_expression "uVar6 * 4" identifier * number_literal) ))) ;) (return_statement "return pbVar3;" return identifier ;) })))
(translation_unit "byte * FUN_0013bb60(byte *param_1)\n\n{\n  byte bVar1;\n  byte *pbVar2;\n  ulong uVar4;\n  byte bVar5;\n  ulong uVar6;\n  undefined1 auStack_48 [40];\n  byte *pbVar3;\n  \n  bVar1 = 0;\n  bVar5 = param_1[1];\n  uVar4 = (ulong)(bVar5 & 0x7f);\n  pbVar3 = param_1 + 2;\n  while ((char)bVar5 < '\0') {\n    bVar5 = *pbVar3;\n    bVar1 = bVar1 + 7;\n    uVar4 = uVar4 | (ulong)(bVar5 & 0x7f) << (bVar1 & 0x3f);\n    pbVar3 = pbVar3 + 1;\n  }\n  pbVar2 = pbVar3 + 1;\n  uVar6 = (ulong)(*pbVar3 & 0x7f);\n  if ((char)*pbVar3 < '\0') {\n    bVar5 = 0;\n    pbVar3 = pbVar2;\n    do {\n      pbVar2 = pbVar3 + 1;\n      bVar1 = *pbVar3;\n      bVar5 = bVar5 + 7;\n      uVar6 = uVar6 | (ulong)(bVar1 & 0x7f) << (bVar5 & 0x3f);\n      pbVar3 = pbVar2;\n    } while ((char)bVar1 < '\0');\n  }\n  bVar5 = *param_1 & 0x7f;\n  if (-1 < (char)*param_1) {\n    FUN_0013bae0(auStack_48,bVar5);\n    printf("\t%s:spill_psprel(reg=%s,t=%lu,pspoff=0x10-0x%lx)\n",&DAT_0015ef55,auStack_48,uVar4,\n           uVar6 * 4);\n    return pbVar2;\n  }\n  FUN_0013bae0(auStack_48,bVar5);\n  printf("\t%s:spill_sprel(reg=%s,t=%lu,spoff=0x%lx)\n",&DAT_0015ef55,auStack_48,uVar4,uVar6 * 4);\n  return pbVar2;\n}\n\n" (function_definition "byte * FUN_0013bb60(byte *param_1)\n\n{\n  byte bVar1;\n  byte *pbVar2;\n  ulong uVar4;\n  byte bVar5;\n  ulong uVar6;\n  undefined1 auStack_48 [40];\n  byte *pbVar3;\n  \n  bVar1 = 0;\n  bVar5 = param_1[1];\n  uVar4 = (ulong)(bVar5 & 0x7f);\n  pbVar3 = param_1 + 2;\n  while ((char)bVar5 < '\0') {\n    bVar5 = *pbVar3;\n    bVar1 = bVar1 + 7;\n    uVar4 = uVar4 | (ulong)(bVar5 & 0x7f) << (bVar1 & 0x3f);\n    pbVar3 = pbVar3 + 1;\n  }\n  pbVar2 = pbVar3 + 1;\n  uVar6 = (ulong)(*pbVar3 & 0x7f);\n  if ((char)*pbVar3 < '\0') {\n    bVar5 = 0;\n    pbVar3 = pbVar2;\n    do {\n      pbVar2 = pbVar3 + 1;\n      bVar1 = *pbVar3;\n      bVar5 = bVar5 + 7;\n      uVar6 = uVar6 | (ulong)(bVar1 & 0x7f) << (bVar5 & 0x3f);\n      pbVar3 = pbVar2;\n    } while ((char)bVar1 < '\0');\n  }\n  bVar5 = *param_1 & 0x7f;\n  if (-1 < (char)*param_1) {\n    FUN_0013bae0(auStack_48,bVar5);\n    printf("\t%s:spill_psprel(reg=%s,t=%lu,pspoff=0x10-0x%lx)\n",&DAT_0015ef55,auStack_48,uVar4,\n           uVar6 * 4);\n    return pbVar2;\n  }\n  FUN_0013bae0(auStack_48,bVar5);\n  printf("\t%s:spill_sprel(reg=%s,t=%lu,spoff=0x%lx)\n",&DAT_0015ef55,auStack_48,uVar4,uVar6 * 4);\n  return pbVar2;\n}" type_identifier (pointer_declarator "* FUN_0013bb60(byte *param_1)" * (function_declarator "FUN_0013bb60(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 *pbVar2;\n  ulong uVar4;\n  byte bVar5;\n  ulong uVar6;\n  undefined1 auStack_48 [40];\n  byte *pbVar3;\n  \n  bVar1 = 0;\n  bVar5 = param_1[1];\n  uVar4 = (ulong)(bVar5 & 0x7f);\n  pbVar3 = param_1 + 2;\n  while ((char)bVar5 < '\0') {\n    bVar5 = *pbVar3;\n    bVar1 = bVar1 + 7;\n    uVar4 = uVar4 | (ulong)(bVar5 & 0x7f) << (bVar1 & 0x3f);\n    pbVar3 = pbVar3 + 1;\n  }\n  pbVar2 = pbVar3 + 1;\n  uVar6 = (ulong)(*pbVar3 & 0x7f);\n  if ((char)*pbVar3 < '\0') {\n    bVar5 = 0;\n    pbVar3 = pbVar2;\n    do {\n      pbVar2 = pbVar3 + 1;\n      bVar1 = *pbVar3;\n      bVar5 = bVar5 + 7;\n      uVar6 = uVar6 | (ulong)(bVar1 & 0x7f) << (bVar5 & 0x3f);\n      pbVar3 = pbVar2;\n    } while ((char)bVar1 < '\0');\n  }\n  bVar5 = *param_1 & 0x7f;\n  if (-1 < (char)*param_1) {\n    FUN_0013bae0(auStack_48,bVar5);\n    printf("\t%s:spill_psprel(reg=%s,t=%lu,pspoff=0x10-0x%lx)\n",&DAT_0015ef55,auStack_48,uVar4,\n           uVar6 * 4);\n    return pbVar2;\n  }\n  FUN_0013bae0(auStack_48,bVar5);\n  printf("\t%s:spill_sprel(reg=%s,t=%lu,spoff=0x%lx)\n",&DAT_0015ef55,auStack_48,uVar4,uVar6 * 4);\n  return pbVar2;\n}" { (declaration "byte bVar1;" type_identifier identifier ;) (declaration "byte *pbVar2;" type_identifier (pointer_declarator "*pbVar2" * identifier) ;) (declaration "ulong uVar4;" type_identifier identifier ;) (declaration "byte bVar5;" type_identifier identifier ;) (declaration "ulong uVar6;" type_identifier identifier ;) (declaration "undefined1 auStack_48 [40];" type_identifier (array_declarator "auStack_48 [40]" identifier [ number_literal ]) ;) (declaration "byte *pbVar3;" type_identifier (pointer_declarator "*pbVar3" * identifier) ;) (expression_statement "bVar1 = 0;" (assignment_expression "bVar1 = 0" identifier = number_literal) ;) (expression_statement "bVar5 = param_1[1];" (assignment_expression "bVar5 = param_1[1]" identifier = (subscript_expression "param_1[1]" identifier [ number_literal ])) ;) (expression_statement "uVar4 = (ulong)(bVar5 & 0x7f);" (assignment_expression "uVar4 = (ulong)(bVar5 & 0x7f)" identifier = (call_expression "(ulong)(bVar5 & 0x7f)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(bVar5 & 0x7f)" ( (binary_expression "bVar5 & 0x7f" identifier & number_literal) )))) ;) (expression_statement "pbVar3 = param_1 + 2;" (assignment_expression "pbVar3 = param_1 + 2" identifier = (binary_expression "param_1 + 2" identifier + number_literal)) ;) (while_statement "while ((char)bVar5 < '\0') {\n    bVar5 = *pbVar3;\n    bVar1 = bVar1 + 7;\n    uVar4 = uVar4 | (ulong)(bVar5 & 0x7f) << (bVar1 & 0x3f);\n    pbVar3 = pbVar3 + 1;\n  }" while (parenthesized_expression "((char)bVar5 < '\0')" ( (binary_expression "(char)bVar5 < '\0'" (cast_expression "(char)bVar5" ( (type_descriptor "char" primitive_type) ) identifier) < (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    bVar5 = *pbVar3;\n    bVar1 = bVar1 + 7;\n    uVar4 = uVar4 | (ulong)(bVar5 & 0x7f) << (bVar1 & 0x3f);\n    pbVar3 = pbVar3 + 1;\n  }" { (expression_statement "bVar5 = *pbVar3;" (assignment_expression "bVar5 = *pbVar3" identifier = (pointer_expression "*pbVar3" * identifier)) ;) (expression_statement "bVar1 = bVar1 + 7;" (assignment_expression "bVar1 = bVar1 + 7" identifier = (binary_expression "bVar1 + 7" identifier + number_literal)) ;) (expression_statement "uVar4 = uVar4 | (ulong)(bVar5 & 0x7f) << (bVar1 & 0x3f);" (assignment_expression "uVar4 = uVar4 | (ulong)(bVar5 & 0x7f) << (bVar1 & 0x3f)" identifier = (binary_expression "uVar4 | (ulong)(bVar5 & 0x7f) << (bVar1 & 0x3f)" identifier | (binary_expression "(ulong)(bVar5 & 0x7f) << (bVar1 & 0x3f)" (call_expression "(ulong)(bVar5 & 0x7f)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(bVar5 & 0x7f)" ( (binary_expression "bVar5 & 0x7f" identifier & number_literal) ))) << (parenthesized_expression "(bVar1 & 0x3f)" ( (binary_expression "bVar1 & 0x3f" identifier & number_literal) ))))) ;) (expression_statement "pbVar3 = pbVar3 + 1;" (assignment_expression "pbVar3 = pbVar3 + 1" identifier = (binary_expression "pbVar3 + 1" identifier + number_literal)) ;) })) (expression_statement "pbVar2 = pbVar3 + 1;" (assignment_expression "pbVar2 = pbVar3 + 1" identifier = (binary_expression "pbVar3 + 1" identifier + number_literal)) ;) (expression_statement "uVar6 = (ulong)(*pbVar3 & 0x7f);" (assignment_expression "uVar6 = (ulong)(*pbVar3 & 0x7f)" identifier = (call_expression "(ulong)(*pbVar3 & 0x7f)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(*pbVar3 & 0x7f)" ( (binary_expression "*pbVar3 & 0x7f" (pointer_expression "*pbVar3" * identifier) & number_literal) )))) ;) (if_statement "if ((char)*pbVar3 < '\0') {\n    bVar5 = 0;\n    pbVar3 = pbVar2;\n    do {\n      pbVar2 = pbVar3 + 1;\n      bVar1 = *pbVar3;\n      bVar5 = bVar5 + 7;\n      uVar6 = uVar6 | (ulong)(bVar1 & 0x7f) << (bVar5 & 0x3f);\n      pbVar3 = pbVar2;\n    } while ((char)bVar1 < '\0');\n  }" if (parenthesized_expression "((char)*pbVar3 < '\0')" ( (binary_expression "(char)*pbVar3 < '\0'" (cast_expression "(char)*pbVar3" ( (type_descriptor "char" primitive_type) ) (pointer_expression "*pbVar3" * identifier)) < (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    bVar5 = 0;\n    pbVar3 = pbVar2;\n    do {\n      pbVar2 = pbVar3 + 1;\n      bVar1 = *pbVar3;\n      bVar5 = bVar5 + 7;\n      uVar6 = uVar6 | (ulong)(bVar1 & 0x7f) << (bVar5 & 0x3f);\n      pbVar3 = pbVar2;\n    } while ((char)bVar1 < '\0');\n  }" { (expression_statement "bVar5 = 0;" (assignment_expression "bVar5 = 0" identifier = number_literal) ;) (expression_statement "pbVar3 = pbVar2;" (assignment_expression "pbVar3 = pbVar2" identifier = identifier) ;) (do_statement "do {\n      pbVar2 = pbVar3 + 1;\n      bVar1 = *pbVar3;\n      bVar5 = bVar5 + 7;\n      uVar6 = uVar6 | (ulong)(bVar1 & 0x7f) << (bVar5 & 0x3f);\n      pbVar3 = pbVar2;\n    } while ((char)bVar1 < '\0');" do (compound_statement "{\n      pbVar2 = pbVar3 + 1;\n      bVar1 = *pbVar3;\n      bVar5 = bVar5 + 7;\n      uVar6 = uVar6 | (ulong)(bVar1 & 0x7f) << (bVar5 & 0x3f);\n      pbVar3 = pbVar2;\n    }" { (expression_statement "pbVar2 = pbVar3 + 1;" (assignment_expression "pbVar2 = pbVar3 + 1" identifier = (binary_expression "pbVar3 + 1" identifier + number_literal)) ;) (expression_statement "bVar1 = *pbVar3;" (assignment_expression "bVar1 = *pbVar3" identifier = (pointer_expression "*pbVar3" * identifier)) ;) (expression_statement "bVar5 = bVar5 + 7;" (assignment_expression "bVar5 = bVar5 + 7" identifier = (binary_expression "bVar5 + 7" identifier + number_literal)) ;) (expression_statement "uVar6 = uVar6 | (ulong)(bVar1 & 0x7f) << (bVar5 & 0x3f);" (assignment_expression "uVar6 = uVar6 | (ulong)(bVar1 & 0x7f) << (bVar5 & 0x3f)" identifier = (binary_expression "uVar6 | (ulong)(bVar1 & 0x7f) << (bVar5 & 0x3f)" identifier | (binary_expression "(ulong)(bVar1 & 0x7f) << (bVar5 & 0x3f)" (call_expression "(ulong)(bVar1 & 0x7f)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(bVar1 & 0x7f)" ( (binary_expression "bVar1 & 0x7f" identifier & number_literal) ))) << (parenthesized_expression "(bVar5 & 0x3f)" ( (binary_expression "bVar5 & 0x3f" identifier & number_literal) ))))) ;) (expression_statement "pbVar3 = pbVar2;" (assignment_expression "pbVar3 = pbVar2" identifier = identifier) ;) }) while (parenthesized_expression "((char)bVar1 < '\0')" ( (binary_expression "(char)bVar1 < '\0'" (cast_expression "(char)bVar1" ( (type_descriptor "char" primitive_type) ) identifier) < (char_literal "'\0'" ' escape_sequence ')) )) ;) })) (expression_statement "bVar5 = *param_1 & 0x7f;" (assignment_expression "bVar5 = *param_1 & 0x7f" identifier = (binary_expression "*param_1 & 0x7f" (pointer_expression "*param_1" * identifier) & number_literal)) ;) (if_statement "if (-1 < (char)*param_1) {\n    FUN_0013bae0(auStack_48,bVar5);\n    printf("\t%s:spill_psprel(reg=%s,t=%lu,pspoff=0x10-0x%lx)\n",&DAT_0015ef55,auStack_48,uVar4,\n           uVar6 * 4);\n    return pbVar2;\n  }" if (parenthesized_expression "(-1 < (char)*param_1)" ( (binary_expression "-1 < (char)*param_1" number_literal < (cast_expression "(char)*param_1" ( (type_descriptor "char" primitive_type) ) (pointer_expression "*param_1" * identifier))) )) (compound_statement "{\n    FUN_0013bae0(auStack_48,bVar5);\n    printf("\t%s:spill_psprel(reg=%s,t=%lu,pspoff=0x10-0x%lx)\n",&DAT_0015ef55,auStack_48,uVar4,\n           uVar6 * 4);\n    return pbVar2;\n  }" { (expression_statement "FUN_0013bae0(auStack_48,bVar5);" (call_expression "FUN_0013bae0(auStack_48,bVar5)" identifier (argument_list "(auStack_48,bVar5)" ( identifier , identifier ))) ;) (expression_statement "printf("\t%s:spill_psprel(reg=%s,t=%lu,pspoff=0x10-0x%lx)\n",&DAT_0015ef55,auStack_48,uVar4,\n           uVar6 * 4);" (call_expression "printf("\t%s:spill_psprel(reg=%s,t=%lu,pspoff=0x10-0x%lx)\n",&DAT_0015ef55,auStack_48,uVar4,\n           uVar6 * 4)" identifier (argument_list "("\t%s:spill_psprel(reg=%s,t=%lu,pspoff=0x10-0x%lx)\n",&DAT_0015ef55,auStack_48,uVar4,\n           uVar6 * 4)" ( (string_literal ""\t%s:spill_psprel(reg=%s,t=%lu,pspoff=0x10-0x%lx)\n"" " escape_sequence string_content escape_sequence ") , (pointer_expression "&DAT_0015ef55" & identifier) , identifier , identifier , (binary_expression "uVar6 * 4" identifier * number_literal) ))) ;) (return_statement "return pbVar2;" return identifier ;) })) (expression_statement "FUN_0013bae0(auStack_48,bVar5);" (call_expression "FUN_0013bae0(auStack_48,bVar5)" identifier (argument_list "(auStack_48,bVar5)" ( identifier , identifier ))) ;) (expression_statement "printf("\t%s:spill_sprel(reg=%s,t=%lu,spoff=0x%lx)\n",&DAT_0015ef55,auStack_48,uVar4,uVar6 * 4);" (call_expression "printf("\t%s:spill_sprel(reg=%s,t=%lu,spoff=0x%lx)\n",&DAT_0015ef55,auStack_48,uVar4,uVar6 * 4)" identifier (argument_list "("\t%s:spill_sprel(reg=%s,t=%lu,spoff=0x%lx)\n",&DAT_0015ef55,auStack_48,uVar4,uVar6 * 4)" ( (string_literal ""\t%s:spill_sprel(reg=%s,t=%lu,spoff=0x%lx)\n"" " escape_sequence string_content escape_sequence ") , (pointer_expression "&DAT_0015ef55" & identifier) , identifier , identifier , (binary_expression "uVar6 * 4" identifier * number_literal) ))) ;) (return_statement "return pbVar2;" 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 (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (expression_statement (assignment_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 IDENT & LIT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (while_statement while (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < (char_literal ' escape_sequence ')) )) (compound_statement { (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 = (binary_expression IDENT + LIT)) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (pointer_expression * IDENT) & LIT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (pointer_expression * IDENT)) < (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 ')) )) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * IDENT) & LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < (cast_expression ( (type_descriptor TYPE) ) (pointer_expression * IDENT))) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT ))) ;) (expression_statement (call_expression IDENT (argument_list ( (string_literal " escape_sequence string_content escape_sequence ") , (pointer_expression & IDENT) , IDENT , IDENT , (binary_expression IDENT * LIT) ))) ;) (return_statement return IDENT ;) })) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT ))) ;) (expression_statement (call_expression IDENT (argument_list ( (string_literal " escape_sequence string_content escape_sequence ") , (pointer_expression & IDENT) , IDENT , IDENT , (binary_expression IDENT * LIT) ))) ;) (return_statement return IDENT ;) })))
(function_definition "byte * FUN_0013bb60(byte *param_1)\n\n{\n  byte bVar1;\n  byte *pbVar2;\n  ulong uVar4;\n  byte bVar5;\n  ulong uVar6;\n  undefined1 auStack_48 [40];\n  byte *pbVar3;\n  \n  bVar1 = 0;\n  bVar5 = param_1[1];\n  uVar4 = (ulong)(bVar5 & 0x7f);\n  pbVar3 = param_1 + 2;\n  while ((char)bVar5 < '\0') {\n    bVar5 = *pbVar3;\n    bVar1 = bVar1 + 7;\n    uVar4 = uVar4 | (ulong)(bVar5 & 0x7f) << (bVar1 & 0x3f);\n    pbVar3 = pbVar3 + 1;\n  }\n  pbVar2 = pbVar3 + 1;\n  uVar6 = (ulong)(*pbVar3 & 0x7f);\n  if ((char)*pbVar3 < '\0') {\n    bVar5 = 0;\n    pbVar3 = pbVar2;\n    do {\n      pbVar2 = pbVar3 + 1;\n      bVar1 = *pbVar3;\n      bVar5 = bVar5 + 7;\n      uVar6 = uVar6 | (ulong)(bVar1 & 0x7f) << (bVar5 & 0x3f);\n      pbVar3 = pbVar2;\n    } while ((char)bVar1 < '\0');\n  }\n  bVar5 = *param_1 & 0x7f;\n  if (-1 < (char)*param_1) {\n    FUN_0013bae0(auStack_48,bVar5);\n    printf("\t%s:spill_psprel(reg=%s,t=%lu,pspoff=0x10-0x%lx)\n",&DAT_0015ef55,auStack_48,uVar4,\n           uVar6 * 4);\n    return pbVar2;\n  }\n  FUN_0013bae0(auStack_48,bVar5);\n  printf("\t%s:spill_sprel(reg=%s,t=%lu,spoff=0x%lx)\n",&DAT_0015ef55,auStack_48,uVar4,uVar6 * 4);\n  return pbVar2;\n}" (type_identifier "byte") (pointer_declarator "* FUN_0013bb60(byte *param_1)" (* "*") (function_declarator "FUN_0013bb60(byte *param_1)" (identifier "FUN_0013bb60") (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 *pbVar2;\n  ulong uVar4;\n  byte bVar5;\n  ulong uVar6;\n  undefined1 auStack_48 [40];\n  byte *pbVar3;\n  \n  bVar1 = 0;\n  bVar5 = param_1[1];\n  uVar4 = (ulong)(bVar5 & 0x7f);\n  pbVar3 = param_1 + 2;\n  while ((char)bVar5 < '\0') {\n    bVar5 = *pbVar3;\n    bVar1 = bVar1 + 7;\n    uVar4 = uVar4 | (ulong)(bVar5 & 0x7f) << (bVar1 & 0x3f);\n    pbVar3 = pbVar3 + 1;\n  }\n  pbVar2 = pbVar3 + 1;\n  uVar6 = (ulong)(*pbVar3 & 0x7f);\n  if ((char)*pbVar3 < '\0') {\n    bVar5 = 0;\n    pbVar3 = pbVar2;\n    do {\n      pbVar2 = pbVar3 + 1;\n      bVar1 = *pbVar3;\n      bVar5 = bVar5 + 7;\n      uVar6 = uVar6 | (ulong)(bVar1 & 0x7f) << (bVar5 & 0x3f);\n      pbVar3 = pbVar2;\n    } while ((char)bVar1 < '\0');\n  }\n  bVar5 = *param_1 & 0x7f;\n  if (-1 < (char)*param_1) {\n    FUN_0013bae0(auStack_48,bVar5);\n    printf("\t%s:spill_psprel(reg=%s,t=%lu,pspoff=0x10-0x%lx)\n",&DAT_0015ef55,auStack_48,uVar4,\n           uVar6 * 4);\n    return pbVar2;\n  }\n  FUN_0013bae0(auStack_48,bVar5);\n  printf("\t%s:spill_sprel(reg=%s,t=%lu,spoff=0x%lx)\n",&DAT_0015ef55,auStack_48,uVar4,uVar6 * 4);\n  return pbVar2;\n}" ({ "{") (declaration "byte bVar1;" (type_identifier "byte") (identifier "bVar1") (; ";")) (declaration "byte *pbVar2;" (type_identifier "byte") (pointer_declarator "*pbVar2" (* "*") (identifier "pbVar2")) (; ";")) (declaration "ulong uVar4;" (type_identifier "ulong") (identifier "uVar4") (; ";")) (declaration "byte bVar5;" (type_identifier "byte") (identifier "bVar5") (; ";")) (declaration "ulong uVar6;" (type_identifier "ulong") (identifier "uVar6") (; ";")) (declaration "undefined1 auStack_48 [40];" (type_identifier "undefined1") (array_declarator "auStack_48 [40]" (identifier "auStack_48") ([ "[") (number_literal "40") (] "]")) (; ";")) (declaration "byte *pbVar3;" (type_identifier "byte") (pointer_declarator "*pbVar3" (* "*") (identifier "pbVar3")) (; ";")) (expression_statement "bVar1 = 0;" (assignment_expression "bVar1 = 0" (identifier "bVar1") (= "=") (number_literal "0")) (; ";")) (expression_statement "bVar5 = param_1[1];" (assignment_expression "bVar5 = param_1[1]" (identifier "bVar5") (= "=") (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "uVar4 = (ulong)(bVar5 & 0x7f);" (assignment_expression "uVar4 = (ulong)(bVar5 & 0x7f)" (identifier "uVar4") (= "=") (call_expression "(ulong)(bVar5 & 0x7f)" (parenthesized_expression "(ulong)" (( "(") (identifier "ulong") () ")")) (argument_list "(bVar5 & 0x7f)" (( "(") (binary_expression "bVar5 & 0x7f" (identifier "bVar5") (& "&") (number_literal "0x7f")) () ")")))) (; ";")) (expression_statement "pbVar3 = param_1 + 2;" (assignment_expression "pbVar3 = param_1 + 2" (identifier "pbVar3") (= "=") (binary_expression "param_1 + 2" (identifier "param_1") (+ "+") (number_literal "2"))) (; ";")) (while_statement "while ((char)bVar5 < '\0') {\n    bVar5 = *pbVar3;\n    bVar1 = bVar1 + 7;\n    uVar4 = uVar4 | (ulong)(bVar5 & 0x7f) << (bVar1 & 0x3f);\n    pbVar3 = pbVar3 + 1;\n  }" (while "while") (parenthesized_expression "((char)bVar5 < '\0')" (( "(") (binary_expression "(char)bVar5 < '\0'" (cast_expression "(char)bVar5" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (identifier "bVar5")) (< "<") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n    bVar5 = *pbVar3;\n    bVar1 = bVar1 + 7;\n    uVar4 = uVar4 | (ulong)(bVar5 & 0x7f) << (bVar1 & 0x3f);\n    pbVar3 = pbVar3 + 1;\n  }" ({ "{") (expression_statement "bVar5 = *pbVar3;" (assignment_expression "bVar5 = *pbVar3" (identifier "bVar5") (= "=") (pointer_expression "*pbVar3" (* "*") (identifier "pbVar3"))) (; ";")) (expression_statement "bVar1 = bVar1 + 7;" (assignment_expression "bVar1 = bVar1 + 7" (identifier "bVar1") (= "=") (binary_expression "bVar1 + 7" (identifier "bVar1") (+ "+") (number_literal "7"))) (; ";")) (expression_statement "uVar4 = uVar4 | (ulong)(bVar5 & 0x7f) << (bVar1 & 0x3f);" (assignment_expression "uVar4 = uVar4 | (ulong)(bVar5 & 0x7f) << (bVar1 & 0x3f)" (identifier "uVar4") (= "=") (binary_expression "uVar4 | (ulong)(bVar5 & 0x7f) << (bVar1 & 0x3f)" (identifier "uVar4") (| "|") (binary_expression "(ulong)(bVar5 & 0x7f) << (bVar1 & 0x3f)" (call_expression "(ulong)(bVar5 & 0x7f)" (parenthesized_expression "(ulong)" (( "(") (identifier "ulong") () ")")) (argument_list "(bVar5 & 0x7f)" (( "(") (binary_expression "bVar5 & 0x7f" (identifier "bVar5") (& "&") (number_literal "0x7f")) () ")"))) (<< "<<") (parenthesized_expression "(bVar1 & 0x3f)" (( "(") (binary_expression "bVar1 & 0x3f" (identifier "bVar1") (& "&") (number_literal "0x3f")) () ")"))))) (; ";")) (expression_statement "pbVar3 = pbVar3 + 1;" (assignment_expression "pbVar3 = pbVar3 + 1" (identifier "pbVar3") (= "=") (binary_expression "pbVar3 + 1" (identifier "pbVar3") (+ "+") (number_literal "1"))) (; ";")) (} "}"))) (expression_statement "pbVar2 = pbVar3 + 1;" (assignment_expression "pbVar2 = pbVar3 + 1" (identifier "pbVar2") (= "=") (binary_expression "pbVar3 + 1" (identifier "pbVar3") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "uVar6 = (ulong)(*pbVar3 & 0x7f);" (assignment_expression "uVar6 = (ulong)(*pbVar3 & 0x7f)" (identifier "uVar6") (= "=") (call_expression "(ulong)(*pbVar3 & 0x7f)" (parenthesized_expression "(ulong)" (( "(") (identifier "ulong") () ")")) (argument_list "(*pbVar3 & 0x7f)" (( "(") (binary_expression "*pbVar3 & 0x7f" (pointer_expression "*pbVar3" (* "*") (identifier "pbVar3")) (& "&") (number_literal "0x7f")) () ")")))) (; ";")) (if_statement "if ((char)*pbVar3 < '\0') {\n    bVar5 = 0;\n    pbVar3 = pbVar2;\n    do {\n      pbVar2 = pbVar3 + 1;\n      bVar1 = *pbVar3;\n      bVar5 = bVar5 + 7;\n      uVar6 = uVar6 | (ulong)(bVar1 & 0x7f) << (bVar5 & 0x3f);\n      pbVar3 = pbVar2;\n    } while ((char)bVar1 < '\0');\n  }" (if "if") (parenthesized_expression "((char)*pbVar3 < '\0')" (( "(") (binary_expression "(char)*pbVar3 < '\0'" (cast_expression "(char)*pbVar3" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (pointer_expression "*pbVar3" (* "*") (identifier "pbVar3"))) (< "<") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n    bVar5 = 0;\n    pbVar3 = pbVar2;\n    do {\n      pbVar2 = pbVar3 + 1;\n      bVar1 = *pbVar3;\n      bVar5 = bVar5 + 7;\n      uVar6 = uVar6 | (ulong)(bVar1 & 0x7f) << (bVar5 & 0x3f);\n      pbVar3 = pbVar2;\n    } while ((char)bVar1 < '\0');\n  }" ({ "{") (expression_statement "bVar5 = 0;" (assignment_expression "bVar5 = 0" (identifier "bVar5") (= "=") (number_literal "0")) (; ";")) (expression_statement "pbVar3 = pbVar2;" (assignment_expression "pbVar3 = pbVar2" (identifier "pbVar3") (= "=") (identifier "pbVar2")) (; ";")) (do_statement "do {\n      pbVar2 = pbVar3 + 1;\n      bVar1 = *pbVar3;\n      bVar5 = bVar5 + 7;\n      uVar6 = uVar6 | (ulong)(bVar1 & 0x7f) << (bVar5 & 0x3f);\n      pbVar3 = pbVar2;\n    } while ((char)bVar1 < '\0');" (do "do") (compound_statement "{\n      pbVar2 = pbVar3 + 1;\n      bVar1 = *pbVar3;\n      bVar5 = bVar5 + 7;\n      uVar6 = uVar6 | (ulong)(bVar1 & 0x7f) << (bVar5 & 0x3f);\n      pbVar3 = pbVar2;\n    }" ({ "{") (expression_statement "pbVar2 = pbVar3 + 1;" (assignment_expression "pbVar2 = pbVar3 + 1" (identifier "pbVar2") (= "=") (binary_expression "pbVar3 + 1" (identifier "pbVar3") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "bVar1 = *pbVar3;" (assignment_expression "bVar1 = *pbVar3" (identifier "bVar1") (= "=") (pointer_expression "*pbVar3" (* "*") (identifier "pbVar3"))) (; ";")) (expression_statement "bVar5 = bVar5 + 7;" (assignment_expression "bVar5 = bVar5 + 7" (identifier "bVar5") (= "=") (binary_expression "bVar5 + 7" (identifier "bVar5") (+ "+") (number_literal "7"))) (; ";")) (expression_statement "uVar6 = uVar6 | (ulong)(bVar1 & 0x7f) << (bVar5 & 0x3f);" (assignment_expression "uVar6 = uVar6 | (ulong)(bVar1 & 0x7f) << (bVar5 & 0x3f)" (identifier "uVar6") (= "=") (binary_expression "uVar6 | (ulong)(bVar1 & 0x7f) << (bVar5 & 0x3f)" (identifier "uVar6") (| "|") (binary_expression "(ulong)(bVar1 & 0x7f) << (bVar5 & 0x3f)" (call_expression "(ulong)(bVar1 & 0x7f)" (parenthesized_expression "(ulong)" (( "(") (identifier "ulong") () ")")) (argument_list "(bVar1 & 0x7f)" (( "(") (binary_expression "bVar1 & 0x7f" (identifier "bVar1") (& "&") (number_literal "0x7f")) () ")"))) (<< "<<") (parenthesized_expression "(bVar5 & 0x3f)" (( "(") (binary_expression "bVar5 & 0x3f" (identifier "bVar5") (& "&") (number_literal "0x3f")) () ")"))))) (; ";")) (expression_statement "pbVar3 = pbVar2;" (assignment_expression "pbVar3 = pbVar2" (identifier "pbVar3") (= "=") (identifier "pbVar2")) (; ";")) (} "}")) (while "while") (parenthesized_expression "((char)bVar1 < '\0')" (( "(") (binary_expression "(char)bVar1 < '\0'" (cast_expression "(char)bVar1" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (identifier "bVar1")) (< "<") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (; ";")) (} "}"))) (expression_statement "bVar5 = *param_1 & 0x7f;" (assignment_expression "bVar5 = *param_1 & 0x7f" (identifier "bVar5") (= "=") (binary_expression "*param_1 & 0x7f" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (& "&") (number_literal "0x7f"))) (; ";")) (if_statement "if (-1 < (char)*param_1) {\n    FUN_0013bae0(auStack_48,bVar5);\n    printf("\t%s:spill_psprel(reg=%s,t=%lu,pspoff=0x10-0x%lx)\n",&DAT_0015ef55,auStack_48,uVar4,\n           uVar6 * 4);\n    return pbVar2;\n  }" (if "if") (parenthesized_expression "(-1 < (char)*param_1)" (( "(") (binary_expression "-1 < (char)*param_1" (number_literal "-1") (< "<") (cast_expression "(char)*param_1" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (pointer_expression "*param_1" (* "*") (identifier "param_1")))) () ")")) (compound_statement "{\n    FUN_0013bae0(auStack_48,bVar5);\n    printf("\t%s:spill_psprel(reg=%s,t=%lu,pspoff=0x10-0x%lx)\n",&DAT_0015ef55,auStack_48,uVar4,\n           uVar6 * 4);\n    return pbVar2;\n  }" ({ "{") (expression_statement "FUN_0013bae0(auStack_48,bVar5);" (call_expression "FUN_0013bae0(auStack_48,bVar5)" (identifier "FUN_0013bae0") (argument_list "(auStack_48,bVar5)" (( "(") (identifier "auStack_48") (, ",") (identifier "bVar5") () ")"))) (; ";")) (expression_statement "printf("\t%s:spill_psprel(reg=%s,t=%lu,pspoff=0x10-0x%lx)\n",&DAT_0015ef55,auStack_48,uVar4,\n           uVar6 * 4);" (call_expression "printf("\t%s:spill_psprel(reg=%s,t=%lu,pspoff=0x10-0x%lx)\n",&DAT_0015ef55,auStack_48,uVar4,\n           uVar6 * 4)" (identifier "printf") (argument_list "("\t%s:spill_psprel(reg=%s,t=%lu,pspoff=0x10-0x%lx)\n",&DAT_0015ef55,auStack_48,uVar4,\n           uVar6 * 4)" (( "(") (string_literal ""\t%s:spill_psprel(reg=%s,t=%lu,pspoff=0x10-0x%lx)\n"" (" """) (escape_sequence "\t") (string_content "%s:spill_psprel(reg=%s,t=%lu,pspoff=0x10-0x%lx)") (escape_sequence "\n") (" """)) (, ",") (pointer_expression "&DAT_0015ef55" (& "&") (identifier "DAT_0015ef55")) (, ",") (identifier "auStack_48") (, ",") (identifier "uVar4") (, ",") (binary_expression "uVar6 * 4" (identifier "uVar6") (* "*") (number_literal "4")) () ")"))) (; ";")) (return_statement "return pbVar2;" (return "return") (identifier "pbVar2") (; ";")) (} "}"))) (expression_statement "FUN_0013bae0(auStack_48,bVar5);" (call_expression "FUN_0013bae0(auStack_48,bVar5)" (identifier "FUN_0013bae0") (argument_list "(auStack_48,bVar5)" (( "(") (identifier "auStack_48") (, ",") (identifier "bVar5") () ")"))) (; ";")) (expression_statement "printf("\t%s:spill_sprel(reg=%s,t=%lu,spoff=0x%lx)\n",&DAT_0015ef55,auStack_48,uVar4,uVar6 * 4);" (call_expression "printf("\t%s:spill_sprel(reg=%s,t=%lu,spoff=0x%lx)\n",&DAT_0015ef55,auStack_48,uVar4,uVar6 * 4)" (identifier "printf") (argument_list "("\t%s:spill_sprel(reg=%s,t=%lu,spoff=0x%lx)\n",&DAT_0015ef55,auStack_48,uVar4,uVar6 * 4)" (( "(") (string_literal ""\t%s:spill_sprel(reg=%s,t=%lu,spoff=0x%lx)\n"" (" """) (escape_sequence "\t") (string_content "%s:spill_sprel(reg=%s,t=%lu,spoff=0x%lx)") (escape_sequence "\n") (" """)) (, ",") (pointer_expression "&DAT_0015ef55" (& "&") (identifier "DAT_0015ef55")) (, ",") (identifier "auStack_48") (, ",") (identifier "uVar4") (, ",") (binary_expression "uVar6 * 4" (identifier "uVar6") (* "*") (number_literal "4")) () ")"))) (; ";")) (return_statement "return pbVar2;" (return "return") (identifier "pbVar2") (; ";")) (} "}")))

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

{
  type_3 var_3;
  type_3 var_1;
  type_3 *pbVar3;
  type_4 var_4;
  type_2 abreg;
  type_4 var_6;
  char regname [20];
  type_3 *var_5;
  
  var_3 = 0;
  var_1 = var_2[1];
  var_4 = (type_4)(var_1 & 0x7f);
  var_5 = var_2 + 2;
  while ((char)var_1 < '\0') {
    var_1 = *var_5;
    var_3 = var_3 + 7;
    var_4 = var_4 | (type_4)(var_1 & 0x7f) << (var_3 & 0x3f);
    var_5 = var_5 + 1;
  }
  pbVar3 = var_5 + 1;
  var_6 = (type_4)(*var_5 & 0x7f);
  if ((char)*var_5 < '\0') {
    var_1 = 0;
    var_5 = pbVar3;
    do {
      pbVar3 = var_5 + 1;
      var_3 = *var_5;
      var_1 = var_1 + 7;
      var_6 = var_6 | (type_4)(var_3 & 0x7f) << (var_1 & 0x3f);
      var_5 = pbVar3;
    } while ((char)var_3 < '\0');
  }
  abreg = *var_2 & 0x7f;
  if (-1 < (char)*var_2) {
    var_7(regname,abreg);
    var_8("\t%s:spill_psprel(reg=%s,t=%lu,pspoff=0x10-0x%lx)\n",&DAT_0015ef55,regname,var_4,
           var_6 * 4);
    return pbVar3;
  }
  var_7(regname,abreg);
  var_8("\t%s:spill_sprel(reg=%s,t=%lu,spoff=0x%lx)\n",&DAT_0015ef55,regname,var_4,var_6 * 4);
  return pbVar3;
}


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

byte * MASKED(byte *param_1)

{
  byte bVar1;
  byte *pbVar2;
  ulong uVar4;
  byte bVar5;
  ulong uVar6;
  undefined1 auStack_48 [40];
  byte *pbVar3;
  
  bVar1 = 0;
  bVar5 = param_1[1];
  uVar4 = (ulong)(bVar5 & 0x7f);
  pbVar3 = param_1 + 2;
  while ((char)bVar5 < '\0') {
    bVar5 = *pbVar3;
    bVar1 = bVar1 + 7;
    uVar4 = uVar4 | (ulong)(bVar5 & 0x7f) << (bVar1 & 0x3f);
    pbVar3 = pbVar3 + 1;
  }
  pbVar2 = pbVar3 + 1;
  uVar6 = (ulong)(*pbVar3 & 0x7f);
  if ((char)*pbVar3 < '\0') {
    bVar5 = 0;
    pbVar3 = pbVar2;
    do {
      pbVar2 = pbVar3 + 1;
      bVar1 = *pbVar3;
      bVar5 = bVar5 + 7;
      uVar6 = uVar6 | (ulong)(bVar1 & 0x7f) << (bVar5 & 0x3f);
      pbVar3 = pbVar2;
    } while ((char)bVar1 < '\0');
  }
  bVar5 = *param_1 & 0x7f;
  if (-1 < (char)*param_1) {
    FUN_0013bae0(auStack_48,bVar5);
    printf("\t%s:spill_psprel(reg=%s,t=%lu,pspoff=0x10-0x%lx)\n",&DAT_0015ef55,auStack_48,uVar4,
           uVar6 * 4);
    return pbVar2;
  }
  FUN_0013bae0(auStack_48,bVar5);
  printf("\t%s:spill_sprel(reg=%s,t=%lu,spoff=0x%lx)\n",&DAT_0015ef55,auStack_48,uVar4,uVar6 * 4);
  return pbVar2;
}

