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

{
  byte bVar1;
  byte bVar2;
  byte bVar3;
  uint uVar4;
  uint uVar5;
  byte *pbVar6;
  byte *pbVar7;
  uint uVar8;
  char tregname [20];
  char abregname [20];
  
  pbVar6 = dp + 3;
  bVar1 = *dp;
  bVar2 = dp[1];
  uVar8 = dp[2] & 0x7f;
  if ((char)dp[2] < '\0') {
    uVar5 = 0;
    pbVar7 = pbVar6;
    do {
      pbVar6 = pbVar7 + 1;
      bVar3 = *pbVar7;
      uVar5 = uVar5 + 7;
      uVar4 = (bVar3 & 0x7f) << (uVar5 & 0x1f);
      if ((uVar5 & 0x20) != 0) {
        uVar4 = 0;
      }
      uVar8 = uVar8 | uVar4;
      pbVar7 = pbVar6;
    } while ((char)bVar3 < '\0');
  }
  if ((-1 < (char)bVar1) && (bVar2 == 0)) {
    unw_print_abreg(tregname,bVar1 & 0x7f);
    (*(code *)PTR_printf_000c3634)
              (PTR_DAT_000c338c + 0x4dbc,PTR_DAT_000c338c + 0x4db8,uVar8,tregname);
    return pbVar6;
  }
  unw_print_abreg(abregname,bVar1 & 0x7f);
  unw_print_xyreg(tregname,(uint)(bVar1 >> 7),(uint)bVar2);
  (*(code *)PTR_printf_000c3634)
            (PTR_DAT_000c338c + 0x4dd8,PTR_DAT_000c338c + 0x4db8,uVar8,abregname,tregname);
  return pbVar6;
}



byte * FUN_00054118(byte *param_1)

{
  byte bVar1;
  byte bVar2;
  byte bVar3;
  uint uVar4;
  uint uVar5;
  byte *pbVar6;
  byte *pbVar7;
  uint uVar8;
  undefined1 auStack_40 [20];
  undefined1 auStack_2c [20];
  
  pbVar6 = param_1 + 3;
  bVar1 = *param_1;
  bVar2 = param_1[1];
  uVar8 = param_1[2] & 0x7f;
  if ((char)param_1[2] < '\0') {
    uVar5 = 0;
    pbVar7 = pbVar6;
    do {
      pbVar6 = pbVar7 + 1;
      bVar3 = *pbVar7;
      uVar5 = uVar5 + 7;
      uVar4 = (bVar3 & 0x7f) << (uVar5 & 0x1f);
      if ((uVar5 & 0x20) != 0) {
        uVar4 = 0;
      }
      uVar8 = uVar8 | uVar4;
      pbVar7 = pbVar6;
    } while ((char)bVar3 < '\0');
  }
  if ((-1 < (char)bVar1) && (bVar2 == 0)) {
    FUN_0005379c(auStack_40,bVar1 & 0x7f);
    (*(code *)PTR_printf_000c3634)
              (PTR_UINT_000c338c + 0x4dbc,PTR_UINT_000c338c + 0x4db8,uVar8,auStack_40);
    return pbVar6;
  }
  FUN_0005379c(auStack_2c,bVar1 & 0x7f);
  FUN_000540a8(auStack_40,bVar1 >> 7,bVar2);
  (*(code *)PTR_printf_000c3634)
            (PTR_UINT_000c338c + 0x4dd8,PTR_UINT_000c338c + 0x4db8,uVar8,auStack_2c,auStack_40);
  return pbVar6;
}


lui gp,0x7
addiu gp,gp,0x7238
addu gp,gp,t9
addiu sp,sp,-0x60
sw s0,0x48(sp)
addiu s0,a0,0x3
sw gp,0x18(sp)
sw ra,0x5c(sp)
sw s4,0x58(sp)
sw s3,0x54(sp)
sw s2,0x50(sp)
sw s1,0x4c(sp)
lbu s1,0x2(a0)
lbu a1,0x0(a0)
lbu s2,0x1(a0)
seb v0,s1
bgez v0,0x0005418c
_andi s1,s1,0x7f
or a0,zero,zero
addiu s0,s0,0x1
lbu v1,-0x1(s0)
addiu a0,a0,0x7
andi v0,v1,0x7f
sllv v0,v0,a0
andi a3,a0,0x20
movn v0,zero,a3
seb v1,v1
bltz v1,0x00054164
_or s1,s1,v0
seb v0,a1
srl s4,a1,0x7
bltz v0,0x000541a4
_andi a1,a1,0x7f
beq s2,zero,0x00054224
_lw t9,-0x7f08(gp)
lw t9,-0x7f08(gp)
addiu s3,sp,0x34
addiu t9,t9,0x379c
bal 0x0005379c
_or a0,s3,zero
or a2,s2,zero
lw gp,0x18(sp)
addiu s2,sp,0x20
or a1,s4,zero
lw t9,-0x7f08(gp)
addiu t9,t9,0x40a8
bal 0x000540a8
_or a0,s2,zero
or a3,s3,zero
lw gp,0x18(sp)
or a2,s1,zero
sw s2,0x10(sp)
lw a1,-0x7fc4(gp)
lw a0,-0x7fc4(gp)
lw t9,-0x7d1c(gp)
addiu a1,a1,0x4db8
jalr t9
_addiu a0,a0,0x4dd8
or v0,s0,zero
lw ra,0x5c(sp)
lw s4,0x58(sp)
lw s3,0x54(sp)
lw s2,0x50(sp)
lw s1,0x4c(sp)
lw s0,0x48(sp)
jr ra
_addiu sp,sp,0x60
addiu s2,sp,0x20
addiu t9,t9,0x379c
bal 0x0005379c
_or a0,s2,zero
or a3,s2,zero
lw gp,0x18(sp)
or a2,s1,zero
lw a1,-0x7fc4(gp)
lw a0,-0x7fc4(gp)
lw t9,-0x7d1c(gp)
addiu a1,a1,0x4db8
jalr t9
_addiu a0,a0,0x4dbc
or v0,s0,zero
lw ra,0x5c(sp)
lw s4,0x58(sp)
lw s3,0x54(sp)
lw s2,0x50(sp)
lw s1,0x4c(sp)
lw s0,0x48(sp)
jr ra
_addiu sp,sp,0x60
(translation_unit "byte * FUN_00054118(byte *param_1)\n\n{\n  byte bVar1;\n  byte bVar2;\n  byte bVar3;\n  uint uVar4;\n  uint uVar5;\n  byte *pbVar6;\n  byte *pbVar7;\n  uint uVar8;\n  undefined1 auStack_40 [20];\n  undefined1 auStack_2c [20];\n  \n  pbVar6 = param_1 + 3;\n  bVar1 = *param_1;\n  bVar2 = param_1[1];\n  uVar8 = param_1[2] & 0x7f;\n  if ((char)param_1[2] < '\0') {\n    uVar5 = 0;\n    pbVar7 = pbVar6;\n    do {\n      pbVar6 = pbVar7 + 1;\n      bVar3 = *pbVar7;\n      uVar5 = uVar5 + 7;\n      uVar4 = (bVar3 & 0x7f) << (uVar5 & 0x1f);\n      if ((uVar5 & 0x20) != 0) {\n        uVar4 = 0;\n      }\n      uVar8 = uVar8 | uVar4;\n      pbVar7 = pbVar6;\n    } while ((char)bVar3 < '\0');\n  }\n  if ((-1 < (char)bVar1) && (bVar2 == 0)) {\n    FUN_0005379c(auStack_40,bVar1 & 0x7f);\n    (*(code *)PTR_printf_000c3634)\n              (PTR_UINT_000c338c + 0x4dbc,PTR_UINT_000c338c + 0x4db8,uVar8,auStack_40);\n    return pbVar6;\n  }\n  FUN_0005379c(auStack_2c,bVar1 & 0x7f);\n  FUN_000540a8(auStack_40,bVar1 >> 7,bVar2);\n  (*(code *)PTR_printf_000c3634)\n            (PTR_UINT_000c338c + 0x4dd8,PTR_UINT_000c338c + 0x4db8,uVar8,auStack_2c,auStack_40);\n  return pbVar6;\n}\n\n" (function_definition "byte * FUN_00054118(byte *param_1)\n\n{\n  byte bVar1;\n  byte bVar2;\n  byte bVar3;\n  uint uVar4;\n  uint uVar5;\n  byte *pbVar6;\n  byte *pbVar7;\n  uint uVar8;\n  undefined1 auStack_40 [20];\n  undefined1 auStack_2c [20];\n  \n  pbVar6 = param_1 + 3;\n  bVar1 = *param_1;\n  bVar2 = param_1[1];\n  uVar8 = param_1[2] & 0x7f;\n  if ((char)param_1[2] < '\0') {\n    uVar5 = 0;\n    pbVar7 = pbVar6;\n    do {\n      pbVar6 = pbVar7 + 1;\n      bVar3 = *pbVar7;\n      uVar5 = uVar5 + 7;\n      uVar4 = (bVar3 & 0x7f) << (uVar5 & 0x1f);\n      if ((uVar5 & 0x20) != 0) {\n        uVar4 = 0;\n      }\n      uVar8 = uVar8 | uVar4;\n      pbVar7 = pbVar6;\n    } while ((char)bVar3 < '\0');\n  }\n  if ((-1 < (char)bVar1) && (bVar2 == 0)) {\n    FUN_0005379c(auStack_40,bVar1 & 0x7f);\n    (*(code *)PTR_printf_000c3634)\n              (PTR_UINT_000c338c + 0x4dbc,PTR_UINT_000c338c + 0x4db8,uVar8,auStack_40);\n    return pbVar6;\n  }\n  FUN_0005379c(auStack_2c,bVar1 & 0x7f);\n  FUN_000540a8(auStack_40,bVar1 >> 7,bVar2);\n  (*(code *)PTR_printf_000c3634)\n            (PTR_UINT_000c338c + 0x4dd8,PTR_UINT_000c338c + 0x4db8,uVar8,auStack_2c,auStack_40);\n  return pbVar6;\n}" type_identifier (pointer_declarator "* FUN_00054118(byte *param_1)" * (function_declarator "FUN_00054118(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  uint uVar4;\n  uint uVar5;\n  byte *pbVar6;\n  byte *pbVar7;\n  uint uVar8;\n  undefined1 auStack_40 [20];\n  undefined1 auStack_2c [20];\n  \n  pbVar6 = param_1 + 3;\n  bVar1 = *param_1;\n  bVar2 = param_1[1];\n  uVar8 = param_1[2] & 0x7f;\n  if ((char)param_1[2] < '\0') {\n    uVar5 = 0;\n    pbVar7 = pbVar6;\n    do {\n      pbVar6 = pbVar7 + 1;\n      bVar3 = *pbVar7;\n      uVar5 = uVar5 + 7;\n      uVar4 = (bVar3 & 0x7f) << (uVar5 & 0x1f);\n      if ((uVar5 & 0x20) != 0) {\n        uVar4 = 0;\n      }\n      uVar8 = uVar8 | uVar4;\n      pbVar7 = pbVar6;\n    } while ((char)bVar3 < '\0');\n  }\n  if ((-1 < (char)bVar1) && (bVar2 == 0)) {\n    FUN_0005379c(auStack_40,bVar1 & 0x7f);\n    (*(code *)PTR_printf_000c3634)\n              (PTR_UINT_000c338c + 0x4dbc,PTR_UINT_000c338c + 0x4db8,uVar8,auStack_40);\n    return pbVar6;\n  }\n  FUN_0005379c(auStack_2c,bVar1 & 0x7f);\n  FUN_000540a8(auStack_40,bVar1 >> 7,bVar2);\n  (*(code *)PTR_printf_000c3634)\n            (PTR_UINT_000c338c + 0x4dd8,PTR_UINT_000c338c + 0x4db8,uVar8,auStack_2c,auStack_40);\n  return pbVar6;\n}" { (declaration "byte bVar1;" type_identifier identifier ;) (declaration "byte bVar2;" type_identifier identifier ;) (declaration "byte bVar3;" type_identifier identifier ;) (declaration "uint uVar4;" type_identifier identifier ;) (declaration "uint uVar5;" type_identifier identifier ;) (declaration "byte *pbVar6;" type_identifier (pointer_declarator "*pbVar6" * identifier) ;) (declaration "byte *pbVar7;" type_identifier (pointer_declarator "*pbVar7" * identifier) ;) (declaration "uint uVar8;" type_identifier identifier ;) (declaration "undefined1 auStack_40 [20];" type_identifier (array_declarator "auStack_40 [20]" identifier [ number_literal ]) ;) (declaration "undefined1 auStack_2c [20];" type_identifier (array_declarator "auStack_2c [20]" identifier [ number_literal ]) ;) (expression_statement "pbVar6 = param_1 + 3;" (assignment_expression "pbVar6 = param_1 + 3" identifier = (binary_expression "param_1 + 3" 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 "uVar8 = param_1[2] & 0x7f;" (assignment_expression "uVar8 = param_1[2] & 0x7f" identifier = (binary_expression "param_1[2] & 0x7f" (subscript_expression "param_1[2]" identifier [ number_literal ]) & number_literal)) ;) (if_statement "if ((char)param_1[2] < '\0') {\n    uVar5 = 0;\n    pbVar7 = pbVar6;\n    do {\n      pbVar6 = pbVar7 + 1;\n      bVar3 = *pbVar7;\n      uVar5 = uVar5 + 7;\n      uVar4 = (bVar3 & 0x7f) << (uVar5 & 0x1f);\n      if ((uVar5 & 0x20) != 0) {\n        uVar4 = 0;\n      }\n      uVar8 = uVar8 | uVar4;\n      pbVar7 = pbVar6;\n    } while ((char)bVar3 < '\0');\n  }" if (parenthesized_expression "((char)param_1[2] < '\0')" ( (binary_expression "(char)param_1[2] < '\0'" (cast_expression "(char)param_1[2]" ( (type_descriptor "char" primitive_type) ) (subscript_expression "param_1[2]" identifier [ number_literal ])) < (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    uVar5 = 0;\n    pbVar7 = pbVar6;\n    do {\n      pbVar6 = pbVar7 + 1;\n      bVar3 = *pbVar7;\n      uVar5 = uVar5 + 7;\n      uVar4 = (bVar3 & 0x7f) << (uVar5 & 0x1f);\n      if ((uVar5 & 0x20) != 0) {\n        uVar4 = 0;\n      }\n      uVar8 = uVar8 | uVar4;\n      pbVar7 = pbVar6;\n    } while ((char)bVar3 < '\0');\n  }" { (expression_statement "uVar5 = 0;" (assignment_expression "uVar5 = 0" identifier = number_literal) ;) (expression_statement "pbVar7 = pbVar6;" (assignment_expression "pbVar7 = pbVar6" identifier = identifier) ;) (do_statement "do {\n      pbVar6 = pbVar7 + 1;\n      bVar3 = *pbVar7;\n      uVar5 = uVar5 + 7;\n      uVar4 = (bVar3 & 0x7f) << (uVar5 & 0x1f);\n      if ((uVar5 & 0x20) != 0) {\n        uVar4 = 0;\n      }\n      uVar8 = uVar8 | uVar4;\n      pbVar7 = pbVar6;\n    } while ((char)bVar3 < '\0');" do (compound_statement "{\n      pbVar6 = pbVar7 + 1;\n      bVar3 = *pbVar7;\n      uVar5 = uVar5 + 7;\n      uVar4 = (bVar3 & 0x7f) << (uVar5 & 0x1f);\n      if ((uVar5 & 0x20) != 0) {\n        uVar4 = 0;\n      }\n      uVar8 = uVar8 | uVar4;\n      pbVar7 = pbVar6;\n    }" { (expression_statement "pbVar6 = pbVar7 + 1;" (assignment_expression "pbVar6 = pbVar7 + 1" identifier = (binary_expression "pbVar7 + 1" identifier + number_literal)) ;) (expression_statement "bVar3 = *pbVar7;" (assignment_expression "bVar3 = *pbVar7" identifier = (pointer_expression "*pbVar7" * identifier)) ;) (expression_statement "uVar5 = uVar5 + 7;" (assignment_expression "uVar5 = uVar5 + 7" identifier = (binary_expression "uVar5 + 7" identifier + number_literal)) ;) (expression_statement "uVar4 = (bVar3 & 0x7f) << (uVar5 & 0x1f);" (assignment_expression "uVar4 = (bVar3 & 0x7f) << (uVar5 & 0x1f)" identifier = (binary_expression "(bVar3 & 0x7f) << (uVar5 & 0x1f)" (parenthesized_expression "(bVar3 & 0x7f)" ( (binary_expression "bVar3 & 0x7f" identifier & number_literal) )) << (parenthesized_expression "(uVar5 & 0x1f)" ( (binary_expression "uVar5 & 0x1f" identifier & number_literal) )))) ;) (if_statement "if ((uVar5 & 0x20) != 0) {\n        uVar4 = 0;\n      }" if (parenthesized_expression "((uVar5 & 0x20) != 0)" ( (binary_expression "(uVar5 & 0x20) != 0" (parenthesized_expression "(uVar5 & 0x20)" ( (binary_expression "uVar5 & 0x20" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n        uVar4 = 0;\n      }" { (expression_statement "uVar4 = 0;" (assignment_expression "uVar4 = 0" identifier = number_literal) ;) })) (expression_statement "uVar8 = uVar8 | uVar4;" (assignment_expression "uVar8 = uVar8 | uVar4" identifier = (binary_expression "uVar8 | uVar4" identifier | identifier)) ;) (expression_statement "pbVar7 = pbVar6;" (assignment_expression "pbVar7 = pbVar6" identifier = identifier) ;) }) while (parenthesized_expression "((char)bVar3 < '\0')" ( (binary_expression "(char)bVar3 < '\0'" (cast_expression "(char)bVar3" ( (type_descriptor "char" primitive_type) ) identifier) < (char_literal "'\0'" ' escape_sequence ')) )) ;) })) (if_statement "if ((-1 < (char)bVar1) && (bVar2 == 0)) {\n    FUN_0005379c(auStack_40,bVar1 & 0x7f);\n    (*(code *)PTR_printf_000c3634)\n              (PTR_UINT_000c338c + 0x4dbc,PTR_UINT_000c338c + 0x4db8,uVar8,auStack_40);\n    return pbVar6;\n  }" if (parenthesized_expression "((-1 < (char)bVar1) && (bVar2 == 0))" ( (binary_expression "(-1 < (char)bVar1) && (bVar2 == 0)" (parenthesized_expression "(-1 < (char)bVar1)" ( (binary_expression "-1 < (char)bVar1" number_literal < (cast_expression "(char)bVar1" ( (type_descriptor "char" primitive_type) ) identifier)) )) && (parenthesized_expression "(bVar2 == 0)" ( (binary_expression "bVar2 == 0" identifier == number_literal) ))) )) (compound_statement "{\n    FUN_0005379c(auStack_40,bVar1 & 0x7f);\n    (*(code *)PTR_printf_000c3634)\n              (PTR_UINT_000c338c + 0x4dbc,PTR_UINT_000c338c + 0x4db8,uVar8,auStack_40);\n    return pbVar6;\n  }" { (expression_statement "FUN_0005379c(auStack_40,bVar1 & 0x7f);" (call_expression "FUN_0005379c(auStack_40,bVar1 & 0x7f)" identifier (argument_list "(auStack_40,bVar1 & 0x7f)" ( identifier , (binary_expression "bVar1 & 0x7f" identifier & number_literal) ))) ;) (expression_statement "(*(code *)PTR_printf_000c3634)\n              (PTR_UINT_000c338c + 0x4dbc,PTR_UINT_000c338c + 0x4db8,uVar8,auStack_40);" (call_expression "(*(code *)PTR_printf_000c3634)\n              (PTR_UINT_000c338c + 0x4dbc,PTR_UINT_000c338c + 0x4db8,uVar8,auStack_40)" (parenthesized_expression "(*(code *)PTR_printf_000c3634)" ( (pointer_expression "*(code *)PTR_printf_000c3634" * (cast_expression "(code *)PTR_printf_000c3634" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(PTR_UINT_000c338c + 0x4dbc,PTR_UINT_000c338c + 0x4db8,uVar8,auStack_40)" ( (binary_expression "PTR_UINT_000c338c + 0x4dbc" identifier + number_literal) , (binary_expression "PTR_UINT_000c338c + 0x4db8" identifier + number_literal) , identifier , identifier ))) ;) (return_statement "return pbVar6;" return identifier ;) })) (expression_statement "FUN_0005379c(auStack_2c,bVar1 & 0x7f);" (call_expression "FUN_0005379c(auStack_2c,bVar1 & 0x7f)" identifier (argument_list "(auStack_2c,bVar1 & 0x7f)" ( identifier , (binary_expression "bVar1 & 0x7f" identifier & number_literal) ))) ;) (expression_statement "FUN_000540a8(auStack_40,bVar1 >> 7,bVar2);" (call_expression "FUN_000540a8(auStack_40,bVar1 >> 7,bVar2)" identifier (argument_list "(auStack_40,bVar1 >> 7,bVar2)" ( identifier , (binary_expression "bVar1 >> 7" identifier >> number_literal) , identifier ))) ;) (expression_statement "(*(code *)PTR_printf_000c3634)\n            (PTR_UINT_000c338c + 0x4dd8,PTR_UINT_000c338c + 0x4db8,uVar8,auStack_2c,auStack_40);" (call_expression "(*(code *)PTR_printf_000c3634)\n            (PTR_UINT_000c338c + 0x4dd8,PTR_UINT_000c338c + 0x4db8,uVar8,auStack_2c,auStack_40)" (parenthesized_expression "(*(code *)PTR_printf_000c3634)" ( (pointer_expression "*(code *)PTR_printf_000c3634" * (cast_expression "(code *)PTR_printf_000c3634" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(PTR_UINT_000c338c + 0x4dd8,PTR_UINT_000c338c + 0x4db8,uVar8,auStack_2c,auStack_40)" ( (binary_expression "PTR_UINT_000c338c + 0x4dd8" identifier + number_literal) , (binary_expression "PTR_UINT_000c338c + 0x4db8" identifier + number_literal) , identifier , identifier , identifier ))) ;) (return_statement "return pbVar6;" return identifier ;) })))
(translation_unit "uchar * unw_decode_x2(uchar *dp,uint code,void *arg)\n\n{\n  byte bVar1;\n  byte bVar2;\n  byte bVar3;\n  uint uVar4;\n  uint uVar5;\n  byte *pbVar6;\n  byte *pbVar7;\n  uint uVar8;\n  char tregname [20];\n  char abregname [20];\n  \n  pbVar6 = dp + 3;\n  bVar1 = *dp;\n  bVar2 = dp[1];\n  uVar8 = dp[2] & 0x7f;\n  if ((char)dp[2] < '\0') {\n    uVar5 = 0;\n    pbVar7 = pbVar6;\n    do {\n      pbVar6 = pbVar7 + 1;\n      bVar3 = *pbVar7;\n      uVar5 = uVar5 + 7;\n      uVar4 = (bVar3 & 0x7f) << (uVar5 & 0x1f);\n      if ((uVar5 & 0x20) != 0) {\n        uVar4 = 0;\n      }\n      uVar8 = uVar8 | uVar4;\n      pbVar7 = pbVar6;\n    } while ((char)bVar3 < '\0');\n  }\n  if ((-1 < (char)bVar1) && (bVar2 == 0)) {\n    unw_print_abreg(tregname,bVar1 & 0x7f);\n    (*(code *)PTR_printf_000c3634)\n              (PTR_DAT_000c338c + 0x4dbc,PTR_DAT_000c338c + 0x4db8,uVar8,tregname);\n    return pbVar6;\n  }\n  unw_print_abreg(abregname,bVar1 & 0x7f);\n  unw_print_xyreg(tregname,(uint)(bVar1 >> 7),(uint)bVar2);\n  (*(code *)PTR_printf_000c3634)\n            (PTR_DAT_000c338c + 0x4dd8,PTR_DAT_000c338c + 0x4db8,uVar8,abregname,tregname);\n  return pbVar6;\n}\n\n" (function_definition "uchar * unw_decode_x2(uchar *dp,uint code,void *arg)\n\n{\n  byte bVar1;\n  byte bVar2;\n  byte bVar3;\n  uint uVar4;\n  uint uVar5;\n  byte *pbVar6;\n  byte *pbVar7;\n  uint uVar8;\n  char tregname [20];\n  char abregname [20];\n  \n  pbVar6 = dp + 3;\n  bVar1 = *dp;\n  bVar2 = dp[1];\n  uVar8 = dp[2] & 0x7f;\n  if ((char)dp[2] < '\0') {\n    uVar5 = 0;\n    pbVar7 = pbVar6;\n    do {\n      pbVar6 = pbVar7 + 1;\n      bVar3 = *pbVar7;\n      uVar5 = uVar5 + 7;\n      uVar4 = (bVar3 & 0x7f) << (uVar5 & 0x1f);\n      if ((uVar5 & 0x20) != 0) {\n        uVar4 = 0;\n      }\n      uVar8 = uVar8 | uVar4;\n      pbVar7 = pbVar6;\n    } while ((char)bVar3 < '\0');\n  }\n  if ((-1 < (char)bVar1) && (bVar2 == 0)) {\n    unw_print_abreg(tregname,bVar1 & 0x7f);\n    (*(code *)PTR_printf_000c3634)\n              (PTR_DAT_000c338c + 0x4dbc,PTR_DAT_000c338c + 0x4db8,uVar8,tregname);\n    return pbVar6;\n  }\n  unw_print_abreg(abregname,bVar1 & 0x7f);\n  unw_print_xyreg(tregname,(uint)(bVar1 >> 7),(uint)bVar2);\n  (*(code *)PTR_printf_000c3634)\n            (PTR_DAT_000c338c + 0x4dd8,PTR_DAT_000c338c + 0x4db8,uVar8,abregname,tregname);\n  return pbVar6;\n}" type_identifier (pointer_declarator "* unw_decode_x2(uchar *dp,uint code,void *arg)" * (function_declarator "unw_decode_x2(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  uint uVar4;\n  uint uVar5;\n  byte *pbVar6;\n  byte *pbVar7;\n  uint uVar8;\n  char tregname [20];\n  char abregname [20];\n  \n  pbVar6 = dp + 3;\n  bVar1 = *dp;\n  bVar2 = dp[1];\n  uVar8 = dp[2] & 0x7f;\n  if ((char)dp[2] < '\0') {\n    uVar5 = 0;\n    pbVar7 = pbVar6;\n    do {\n      pbVar6 = pbVar7 + 1;\n      bVar3 = *pbVar7;\n      uVar5 = uVar5 + 7;\n      uVar4 = (bVar3 & 0x7f) << (uVar5 & 0x1f);\n      if ((uVar5 & 0x20) != 0) {\n        uVar4 = 0;\n      }\n      uVar8 = uVar8 | uVar4;\n      pbVar7 = pbVar6;\n    } while ((char)bVar3 < '\0');\n  }\n  if ((-1 < (char)bVar1) && (bVar2 == 0)) {\n    unw_print_abreg(tregname,bVar1 & 0x7f);\n    (*(code *)PTR_printf_000c3634)\n              (PTR_DAT_000c338c + 0x4dbc,PTR_DAT_000c338c + 0x4db8,uVar8,tregname);\n    return pbVar6;\n  }\n  unw_print_abreg(abregname,bVar1 & 0x7f);\n  unw_print_xyreg(tregname,(uint)(bVar1 >> 7),(uint)bVar2);\n  (*(code *)PTR_printf_000c3634)\n            (PTR_DAT_000c338c + 0x4dd8,PTR_DAT_000c338c + 0x4db8,uVar8,abregname,tregname);\n  return pbVar6;\n}" { (declaration "byte bVar1;" type_identifier identifier ;) (declaration "byte bVar2;" type_identifier identifier ;) (declaration "byte bVar3;" type_identifier identifier ;) (declaration "uint uVar4;" type_identifier identifier ;) (declaration "uint uVar5;" type_identifier identifier ;) (declaration "byte *pbVar6;" type_identifier (pointer_declarator "*pbVar6" * identifier) ;) (declaration "byte *pbVar7;" type_identifier (pointer_declarator "*pbVar7" * identifier) ;) (declaration "uint uVar8;" type_identifier identifier ;) (declaration "char tregname [20];" primitive_type (array_declarator "tregname [20]" identifier [ number_literal ]) ;) (declaration "char abregname [20];" primitive_type (array_declarator "abregname [20]" identifier [ number_literal ]) ;) (expression_statement "pbVar6 = dp + 3;" (assignment_expression "pbVar6 = dp + 3" identifier = (binary_expression "dp + 3" 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 "uVar8 = dp[2] & 0x7f;" (assignment_expression "uVar8 = dp[2] & 0x7f" identifier = (binary_expression "dp[2] & 0x7f" (subscript_expression "dp[2]" identifier [ number_literal ]) & number_literal)) ;) (if_statement "if ((char)dp[2] < '\0') {\n    uVar5 = 0;\n    pbVar7 = pbVar6;\n    do {\n      pbVar6 = pbVar7 + 1;\n      bVar3 = *pbVar7;\n      uVar5 = uVar5 + 7;\n      uVar4 = (bVar3 & 0x7f) << (uVar5 & 0x1f);\n      if ((uVar5 & 0x20) != 0) {\n        uVar4 = 0;\n      }\n      uVar8 = uVar8 | uVar4;\n      pbVar7 = pbVar6;\n    } while ((char)bVar3 < '\0');\n  }" if (parenthesized_expression "((char)dp[2] < '\0')" ( (binary_expression "(char)dp[2] < '\0'" (cast_expression "(char)dp[2]" ( (type_descriptor "char" primitive_type) ) (subscript_expression "dp[2]" identifier [ number_literal ])) < (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    uVar5 = 0;\n    pbVar7 = pbVar6;\n    do {\n      pbVar6 = pbVar7 + 1;\n      bVar3 = *pbVar7;\n      uVar5 = uVar5 + 7;\n      uVar4 = (bVar3 & 0x7f) << (uVar5 & 0x1f);\n      if ((uVar5 & 0x20) != 0) {\n        uVar4 = 0;\n      }\n      uVar8 = uVar8 | uVar4;\n      pbVar7 = pbVar6;\n    } while ((char)bVar3 < '\0');\n  }" { (expression_statement "uVar5 = 0;" (assignment_expression "uVar5 = 0" identifier = number_literal) ;) (expression_statement "pbVar7 = pbVar6;" (assignment_expression "pbVar7 = pbVar6" identifier = identifier) ;) (do_statement "do {\n      pbVar6 = pbVar7 + 1;\n      bVar3 = *pbVar7;\n      uVar5 = uVar5 + 7;\n      uVar4 = (bVar3 & 0x7f) << (uVar5 & 0x1f);\n      if ((uVar5 & 0x20) != 0) {\n        uVar4 = 0;\n      }\n      uVar8 = uVar8 | uVar4;\n      pbVar7 = pbVar6;\n    } while ((char)bVar3 < '\0');" do (compound_statement "{\n      pbVar6 = pbVar7 + 1;\n      bVar3 = *pbVar7;\n      uVar5 = uVar5 + 7;\n      uVar4 = (bVar3 & 0x7f) << (uVar5 & 0x1f);\n      if ((uVar5 & 0x20) != 0) {\n        uVar4 = 0;\n      }\n      uVar8 = uVar8 | uVar4;\n      pbVar7 = pbVar6;\n    }" { (expression_statement "pbVar6 = pbVar7 + 1;" (assignment_expression "pbVar6 = pbVar7 + 1" identifier = (binary_expression "pbVar7 + 1" identifier + number_literal)) ;) (expression_statement "bVar3 = *pbVar7;" (assignment_expression "bVar3 = *pbVar7" identifier = (pointer_expression "*pbVar7" * identifier)) ;) (expression_statement "uVar5 = uVar5 + 7;" (assignment_expression "uVar5 = uVar5 + 7" identifier = (binary_expression "uVar5 + 7" identifier + number_literal)) ;) (expression_statement "uVar4 = (bVar3 & 0x7f) << (uVar5 & 0x1f);" (assignment_expression "uVar4 = (bVar3 & 0x7f) << (uVar5 & 0x1f)" identifier = (binary_expression "(bVar3 & 0x7f) << (uVar5 & 0x1f)" (parenthesized_expression "(bVar3 & 0x7f)" ( (binary_expression "bVar3 & 0x7f" identifier & number_literal) )) << (parenthesized_expression "(uVar5 & 0x1f)" ( (binary_expression "uVar5 & 0x1f" identifier & number_literal) )))) ;) (if_statement "if ((uVar5 & 0x20) != 0) {\n        uVar4 = 0;\n      }" if (parenthesized_expression "((uVar5 & 0x20) != 0)" ( (binary_expression "(uVar5 & 0x20) != 0" (parenthesized_expression "(uVar5 & 0x20)" ( (binary_expression "uVar5 & 0x20" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n        uVar4 = 0;\n      }" { (expression_statement "uVar4 = 0;" (assignment_expression "uVar4 = 0" identifier = number_literal) ;) })) (expression_statement "uVar8 = uVar8 | uVar4;" (assignment_expression "uVar8 = uVar8 | uVar4" identifier = (binary_expression "uVar8 | uVar4" identifier | identifier)) ;) (expression_statement "pbVar7 = pbVar6;" (assignment_expression "pbVar7 = pbVar6" identifier = identifier) ;) }) while (parenthesized_expression "((char)bVar3 < '\0')" ( (binary_expression "(char)bVar3 < '\0'" (cast_expression "(char)bVar3" ( (type_descriptor "char" primitive_type) ) identifier) < (char_literal "'\0'" ' escape_sequence ')) )) ;) })) (if_statement "if ((-1 < (char)bVar1) && (bVar2 == 0)) {\n    unw_print_abreg(tregname,bVar1 & 0x7f);\n    (*(code *)PTR_printf_000c3634)\n              (PTR_DAT_000c338c + 0x4dbc,PTR_DAT_000c338c + 0x4db8,uVar8,tregname);\n    return pbVar6;\n  }" if (parenthesized_expression "((-1 < (char)bVar1) && (bVar2 == 0))" ( (binary_expression "(-1 < (char)bVar1) && (bVar2 == 0)" (parenthesized_expression "(-1 < (char)bVar1)" ( (binary_expression "-1 < (char)bVar1" number_literal < (cast_expression "(char)bVar1" ( (type_descriptor "char" primitive_type) ) identifier)) )) && (parenthesized_expression "(bVar2 == 0)" ( (binary_expression "bVar2 == 0" identifier == number_literal) ))) )) (compound_statement "{\n    unw_print_abreg(tregname,bVar1 & 0x7f);\n    (*(code *)PTR_printf_000c3634)\n              (PTR_DAT_000c338c + 0x4dbc,PTR_DAT_000c338c + 0x4db8,uVar8,tregname);\n    return pbVar6;\n  }" { (expression_statement "unw_print_abreg(tregname,bVar1 & 0x7f);" (call_expression "unw_print_abreg(tregname,bVar1 & 0x7f)" identifier (argument_list "(tregname,bVar1 & 0x7f)" ( identifier , (binary_expression "bVar1 & 0x7f" identifier & number_literal) ))) ;) (expression_statement "(*(code *)PTR_printf_000c3634)\n              (PTR_DAT_000c338c + 0x4dbc,PTR_DAT_000c338c + 0x4db8,uVar8,tregname);" (call_expression "(*(code *)PTR_printf_000c3634)\n              (PTR_DAT_000c338c + 0x4dbc,PTR_DAT_000c338c + 0x4db8,uVar8,tregname)" (parenthesized_expression "(*(code *)PTR_printf_000c3634)" ( (pointer_expression "*(code *)PTR_printf_000c3634" * (cast_expression "(code *)PTR_printf_000c3634" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(PTR_DAT_000c338c + 0x4dbc,PTR_DAT_000c338c + 0x4db8,uVar8,tregname)" ( (binary_expression "PTR_DAT_000c338c + 0x4dbc" identifier + number_literal) , (binary_expression "PTR_DAT_000c338c + 0x4db8" identifier + number_literal) , identifier , identifier ))) ;) (return_statement "return pbVar6;" return identifier ;) })) (expression_statement "unw_print_abreg(abregname,bVar1 & 0x7f);" (call_expression "unw_print_abreg(abregname,bVar1 & 0x7f)" identifier (argument_list "(abregname,bVar1 & 0x7f)" ( identifier , (binary_expression "bVar1 & 0x7f" identifier & number_literal) ))) ;) (expression_statement "unw_print_xyreg(tregname,(uint)(bVar1 >> 7),(uint)bVar2);" (call_expression "unw_print_xyreg(tregname,(uint)(bVar1 >> 7),(uint)bVar2)" identifier (argument_list "(tregname,(uint)(bVar1 >> 7),(uint)bVar2)" ( identifier , (call_expression "(uint)(bVar1 >> 7)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(bVar1 >> 7)" ( (binary_expression "bVar1 >> 7" identifier >> number_literal) ))) , (cast_expression "(uint)bVar2" ( (type_descriptor "uint" type_identifier) ) identifier) ))) ;) (expression_statement "(*(code *)PTR_printf_000c3634)\n            (PTR_DAT_000c338c + 0x4dd8,PTR_DAT_000c338c + 0x4db8,uVar8,abregname,tregname);" (call_expression "(*(code *)PTR_printf_000c3634)\n            (PTR_DAT_000c338c + 0x4dd8,PTR_DAT_000c338c + 0x4db8,uVar8,abregname,tregname)" (parenthesized_expression "(*(code *)PTR_printf_000c3634)" ( (pointer_expression "*(code *)PTR_printf_000c3634" * (cast_expression "(code *)PTR_printf_000c3634" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(PTR_DAT_000c338c + 0x4dd8,PTR_DAT_000c338c + 0x4db8,uVar8,abregname,tregname)" ( (binary_expression "PTR_DAT_000c338c + 0x4dd8" identifier + number_literal) , (binary_expression "PTR_DAT_000c338c + 0x4db8" identifier + number_literal) , identifier , identifier , identifier ))) ;) (return_statement "return pbVar6;" return identifier ;) })))
(translation_unit "byte * FUN_00054118(byte *param_1)\n\n{\n  byte bVar1;\n  byte bVar2;\n  byte bVar3;\n  uint uVar4;\n  uint uVar5;\n  byte *pbVar6;\n  byte *pbVar7;\n  uint uVar8;\n  undefined1 auStack_40 [20];\n  undefined1 auStack_2c [20];\n  \n  pbVar6 = param_1 + 3;\n  bVar1 = *param_1;\n  bVar2 = param_1[1];\n  uVar8 = param_1[2] & 0x7f;\n  if ((char)param_1[2] < '\0') {\n    uVar5 = 0;\n    pbVar7 = pbVar6;\n    do {\n      pbVar6 = pbVar7 + 1;\n      bVar3 = *pbVar7;\n      uVar5 = uVar5 + 7;\n      uVar4 = (bVar3 & 0x7f) << (uVar5 & 0x1f);\n      if ((uVar5 & 0x20) != 0) {\n        uVar4 = 0;\n      }\n      uVar8 = uVar8 | uVar4;\n      pbVar7 = pbVar6;\n    } while ((char)bVar3 < '\0');\n  }\n  if ((-1 < (char)bVar1) && (bVar2 == 0)) {\n    FUN_0005379c(auStack_40,bVar1 & 0x7f);\n    (*(code *)PTR_printf_000c3634)\n              (PTR_UINT_000c338c + 0x4dbc,PTR_UINT_000c338c + 0x4db8,uVar8,auStack_40);\n    return pbVar6;\n  }\n  FUN_0005379c(auStack_2c,bVar1 & 0x7f);\n  FUN_000540a8(auStack_40,bVar1 >> 7,bVar2);\n  (*(code *)PTR_printf_000c3634)\n            (PTR_UINT_000c338c + 0x4dd8,PTR_UINT_000c338c + 0x4db8,uVar8,auStack_2c,auStack_40);\n  return pbVar6;\n}\n\n" (function_definition "byte * FUN_00054118(byte *param_1)\n\n{\n  byte bVar1;\n  byte bVar2;\n  byte bVar3;\n  uint uVar4;\n  uint uVar5;\n  byte *pbVar6;\n  byte *pbVar7;\n  uint uVar8;\n  undefined1 auStack_40 [20];\n  undefined1 auStack_2c [20];\n  \n  pbVar6 = param_1 + 3;\n  bVar1 = *param_1;\n  bVar2 = param_1[1];\n  uVar8 = param_1[2] & 0x7f;\n  if ((char)param_1[2] < '\0') {\n    uVar5 = 0;\n    pbVar7 = pbVar6;\n    do {\n      pbVar6 = pbVar7 + 1;\n      bVar3 = *pbVar7;\n      uVar5 = uVar5 + 7;\n      uVar4 = (bVar3 & 0x7f) << (uVar5 & 0x1f);\n      if ((uVar5 & 0x20) != 0) {\n        uVar4 = 0;\n      }\n      uVar8 = uVar8 | uVar4;\n      pbVar7 = pbVar6;\n    } while ((char)bVar3 < '\0');\n  }\n  if ((-1 < (char)bVar1) && (bVar2 == 0)) {\n    FUN_0005379c(auStack_40,bVar1 & 0x7f);\n    (*(code *)PTR_printf_000c3634)\n              (PTR_UINT_000c338c + 0x4dbc,PTR_UINT_000c338c + 0x4db8,uVar8,auStack_40);\n    return pbVar6;\n  }\n  FUN_0005379c(auStack_2c,bVar1 & 0x7f);\n  FUN_000540a8(auStack_40,bVar1 >> 7,bVar2);\n  (*(code *)PTR_printf_000c3634)\n            (PTR_UINT_000c338c + 0x4dd8,PTR_UINT_000c338c + 0x4db8,uVar8,auStack_2c,auStack_40);\n  return pbVar6;\n}" type_identifier (pointer_declarator "* FUN_00054118(byte *param_1)" * (function_declarator "FUN_00054118(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  uint uVar4;\n  uint uVar5;\n  byte *pbVar6;\n  byte *pbVar7;\n  uint uVar8;\n  undefined1 auStack_40 [20];\n  undefined1 auStack_2c [20];\n  \n  pbVar6 = param_1 + 3;\n  bVar1 = *param_1;\n  bVar2 = param_1[1];\n  uVar8 = param_1[2] & 0x7f;\n  if ((char)param_1[2] < '\0') {\n    uVar5 = 0;\n    pbVar7 = pbVar6;\n    do {\n      pbVar6 = pbVar7 + 1;\n      bVar3 = *pbVar7;\n      uVar5 = uVar5 + 7;\n      uVar4 = (bVar3 & 0x7f) << (uVar5 & 0x1f);\n      if ((uVar5 & 0x20) != 0) {\n        uVar4 = 0;\n      }\n      uVar8 = uVar8 | uVar4;\n      pbVar7 = pbVar6;\n    } while ((char)bVar3 < '\0');\n  }\n  if ((-1 < (char)bVar1) && (bVar2 == 0)) {\n    FUN_0005379c(auStack_40,bVar1 & 0x7f);\n    (*(code *)PTR_printf_000c3634)\n              (PTR_UINT_000c338c + 0x4dbc,PTR_UINT_000c338c + 0x4db8,uVar8,auStack_40);\n    return pbVar6;\n  }\n  FUN_0005379c(auStack_2c,bVar1 & 0x7f);\n  FUN_000540a8(auStack_40,bVar1 >> 7,bVar2);\n  (*(code *)PTR_printf_000c3634)\n            (PTR_UINT_000c338c + 0x4dd8,PTR_UINT_000c338c + 0x4db8,uVar8,auStack_2c,auStack_40);\n  return pbVar6;\n}" { (declaration "byte bVar1;" type_identifier identifier ;) (declaration "byte bVar2;" type_identifier identifier ;) (declaration "byte bVar3;" type_identifier identifier ;) (declaration "uint uVar4;" type_identifier identifier ;) (declaration "uint uVar5;" type_identifier identifier ;) (declaration "byte *pbVar6;" type_identifier (pointer_declarator "*pbVar6" * identifier) ;) (declaration "byte *pbVar7;" type_identifier (pointer_declarator "*pbVar7" * identifier) ;) (declaration "uint uVar8;" type_identifier identifier ;) (declaration "undefined1 auStack_40 [20];" type_identifier (array_declarator "auStack_40 [20]" identifier [ number_literal ]) ;) (declaration "undefined1 auStack_2c [20];" type_identifier (array_declarator "auStack_2c [20]" identifier [ number_literal ]) ;) (expression_statement "pbVar6 = param_1 + 3;" (assignment_expression "pbVar6 = param_1 + 3" identifier = (binary_expression "param_1 + 3" 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 "uVar8 = param_1[2] & 0x7f;" (assignment_expression "uVar8 = param_1[2] & 0x7f" identifier = (binary_expression "param_1[2] & 0x7f" (subscript_expression "param_1[2]" identifier [ number_literal ]) & number_literal)) ;) (if_statement "if ((char)param_1[2] < '\0') {\n    uVar5 = 0;\n    pbVar7 = pbVar6;\n    do {\n      pbVar6 = pbVar7 + 1;\n      bVar3 = *pbVar7;\n      uVar5 = uVar5 + 7;\n      uVar4 = (bVar3 & 0x7f) << (uVar5 & 0x1f);\n      if ((uVar5 & 0x20) != 0) {\n        uVar4 = 0;\n      }\n      uVar8 = uVar8 | uVar4;\n      pbVar7 = pbVar6;\n    } while ((char)bVar3 < '\0');\n  }" if (parenthesized_expression "((char)param_1[2] < '\0')" ( (binary_expression "(char)param_1[2] < '\0'" (cast_expression "(char)param_1[2]" ( (type_descriptor "char" primitive_type) ) (subscript_expression "param_1[2]" identifier [ number_literal ])) < (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    uVar5 = 0;\n    pbVar7 = pbVar6;\n    do {\n      pbVar6 = pbVar7 + 1;\n      bVar3 = *pbVar7;\n      uVar5 = uVar5 + 7;\n      uVar4 = (bVar3 & 0x7f) << (uVar5 & 0x1f);\n      if ((uVar5 & 0x20) != 0) {\n        uVar4 = 0;\n      }\n      uVar8 = uVar8 | uVar4;\n      pbVar7 = pbVar6;\n    } while ((char)bVar3 < '\0');\n  }" { (expression_statement "uVar5 = 0;" (assignment_expression "uVar5 = 0" identifier = number_literal) ;) (expression_statement "pbVar7 = pbVar6;" (assignment_expression "pbVar7 = pbVar6" identifier = identifier) ;) (do_statement "do {\n      pbVar6 = pbVar7 + 1;\n      bVar3 = *pbVar7;\n      uVar5 = uVar5 + 7;\n      uVar4 = (bVar3 & 0x7f) << (uVar5 & 0x1f);\n      if ((uVar5 & 0x20) != 0) {\n        uVar4 = 0;\n      }\n      uVar8 = uVar8 | uVar4;\n      pbVar7 = pbVar6;\n    } while ((char)bVar3 < '\0');" do (compound_statement "{\n      pbVar6 = pbVar7 + 1;\n      bVar3 = *pbVar7;\n      uVar5 = uVar5 + 7;\n      uVar4 = (bVar3 & 0x7f) << (uVar5 & 0x1f);\n      if ((uVar5 & 0x20) != 0) {\n        uVar4 = 0;\n      }\n      uVar8 = uVar8 | uVar4;\n      pbVar7 = pbVar6;\n    }" { (expression_statement "pbVar6 = pbVar7 + 1;" (assignment_expression "pbVar6 = pbVar7 + 1" identifier = (binary_expression "pbVar7 + 1" identifier + number_literal)) ;) (expression_statement "bVar3 = *pbVar7;" (assignment_expression "bVar3 = *pbVar7" identifier = (pointer_expression "*pbVar7" * identifier)) ;) (expression_statement "uVar5 = uVar5 + 7;" (assignment_expression "uVar5 = uVar5 + 7" identifier = (binary_expression "uVar5 + 7" identifier + number_literal)) ;) (expression_statement "uVar4 = (bVar3 & 0x7f) << (uVar5 & 0x1f);" (assignment_expression "uVar4 = (bVar3 & 0x7f) << (uVar5 & 0x1f)" identifier = (binary_expression "(bVar3 & 0x7f) << (uVar5 & 0x1f)" (parenthesized_expression "(bVar3 & 0x7f)" ( (binary_expression "bVar3 & 0x7f" identifier & number_literal) )) << (parenthesized_expression "(uVar5 & 0x1f)" ( (binary_expression "uVar5 & 0x1f" identifier & number_literal) )))) ;) (if_statement "if ((uVar5 & 0x20) != 0) {\n        uVar4 = 0;\n      }" if (parenthesized_expression "((uVar5 & 0x20) != 0)" ( (binary_expression "(uVar5 & 0x20) != 0" (parenthesized_expression "(uVar5 & 0x20)" ( (binary_expression "uVar5 & 0x20" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n        uVar4 = 0;\n      }" { (expression_statement "uVar4 = 0;" (assignment_expression "uVar4 = 0" identifier = number_literal) ;) })) (expression_statement "uVar8 = uVar8 | uVar4;" (assignment_expression "uVar8 = uVar8 | uVar4" identifier = (binary_expression "uVar8 | uVar4" identifier | identifier)) ;) (expression_statement "pbVar7 = pbVar6;" (assignment_expression "pbVar7 = pbVar6" identifier = identifier) ;) }) while (parenthesized_expression "((char)bVar3 < '\0')" ( (binary_expression "(char)bVar3 < '\0'" (cast_expression "(char)bVar3" ( (type_descriptor "char" primitive_type) ) identifier) < (char_literal "'\0'" ' escape_sequence ')) )) ;) })) (if_statement "if ((-1 < (char)bVar1) && (bVar2 == 0)) {\n    FUN_0005379c(auStack_40,bVar1 & 0x7f);\n    (*(code *)PTR_printf_000c3634)\n              (PTR_UINT_000c338c + 0x4dbc,PTR_UINT_000c338c + 0x4db8,uVar8,auStack_40);\n    return pbVar6;\n  }" if (parenthesized_expression "((-1 < (char)bVar1) && (bVar2 == 0))" ( (binary_expression "(-1 < (char)bVar1) && (bVar2 == 0)" (parenthesized_expression "(-1 < (char)bVar1)" ( (binary_expression "-1 < (char)bVar1" number_literal < (cast_expression "(char)bVar1" ( (type_descriptor "char" primitive_type) ) identifier)) )) && (parenthesized_expression "(bVar2 == 0)" ( (binary_expression "bVar2 == 0" identifier == number_literal) ))) )) (compound_statement "{\n    FUN_0005379c(auStack_40,bVar1 & 0x7f);\n    (*(code *)PTR_printf_000c3634)\n              (PTR_UINT_000c338c + 0x4dbc,PTR_UINT_000c338c + 0x4db8,uVar8,auStack_40);\n    return pbVar6;\n  }" { (expression_statement "FUN_0005379c(auStack_40,bVar1 & 0x7f);" (call_expression "FUN_0005379c(auStack_40,bVar1 & 0x7f)" identifier (argument_list "(auStack_40,bVar1 & 0x7f)" ( identifier , (binary_expression "bVar1 & 0x7f" identifier & number_literal) ))) ;) (expression_statement "(*(code *)PTR_printf_000c3634)\n              (PTR_UINT_000c338c + 0x4dbc,PTR_UINT_000c338c + 0x4db8,uVar8,auStack_40);" (call_expression "(*(code *)PTR_printf_000c3634)\n              (PTR_UINT_000c338c + 0x4dbc,PTR_UINT_000c338c + 0x4db8,uVar8,auStack_40)" (parenthesized_expression "(*(code *)PTR_printf_000c3634)" ( (pointer_expression "*(code *)PTR_printf_000c3634" * (cast_expression "(code *)PTR_printf_000c3634" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(PTR_UINT_000c338c + 0x4dbc,PTR_UINT_000c338c + 0x4db8,uVar8,auStack_40)" ( (binary_expression "PTR_UINT_000c338c + 0x4dbc" identifier + number_literal) , (binary_expression "PTR_UINT_000c338c + 0x4db8" identifier + number_literal) , identifier , identifier ))) ;) (return_statement "return pbVar6;" return identifier ;) })) (expression_statement "FUN_0005379c(auStack_2c,bVar1 & 0x7f);" (call_expression "FUN_0005379c(auStack_2c,bVar1 & 0x7f)" identifier (argument_list "(auStack_2c,bVar1 & 0x7f)" ( identifier , (binary_expression "bVar1 & 0x7f" identifier & number_literal) ))) ;) (expression_statement "FUN_000540a8(auStack_40,bVar1 >> 7,bVar2);" (call_expression "FUN_000540a8(auStack_40,bVar1 >> 7,bVar2)" identifier (argument_list "(auStack_40,bVar1 >> 7,bVar2)" ( identifier , (binary_expression "bVar1 >> 7" identifier >> number_literal) , identifier ))) ;) (expression_statement "(*(code *)PTR_printf_000c3634)\n            (PTR_UINT_000c338c + 0x4dd8,PTR_UINT_000c338c + 0x4db8,uVar8,auStack_2c,auStack_40);" (call_expression "(*(code *)PTR_printf_000c3634)\n            (PTR_UINT_000c338c + 0x4dd8,PTR_UINT_000c338c + 0x4db8,uVar8,auStack_2c,auStack_40)" (parenthesized_expression "(*(code *)PTR_printf_000c3634)" ( (pointer_expression "*(code *)PTR_printf_000c3634" * (cast_expression "(code *)PTR_printf_000c3634" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(PTR_UINT_000c338c + 0x4dd8,PTR_UINT_000c338c + 0x4db8,uVar8,auStack_2c,auStack_40)" ( (binary_expression "PTR_UINT_000c338c + 0x4dd8" identifier + number_literal) , (binary_expression "PTR_UINT_000c338c + 0x4db8" identifier + number_literal) , identifier , 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 (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (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 = (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 (parenthesized_expression ( (binary_expression IDENT & LIT) )) << (parenthesized_expression ( (binary_expression IDENT & LIT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT | IDENT)) ;) (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 LIT < (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) && (parenthesized_expression ( (binary_expression IDENT == LIT) ))) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT , (binary_expression IDENT & LIT) ))) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( (binary_expression IDENT + LIT) , (binary_expression IDENT + LIT) , IDENT , IDENT ))) ;) (return_statement return IDENT ;) })) (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 (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( (binary_expression IDENT + LIT) , (binary_expression IDENT + LIT) , IDENT , IDENT , IDENT ))) ;) (return_statement return IDENT ;) })))
(function_definition "byte * FUN_00054118(byte *param_1)\n\n{\n  byte bVar1;\n  byte bVar2;\n  byte bVar3;\n  uint uVar4;\n  uint uVar5;\n  byte *pbVar6;\n  byte *pbVar7;\n  uint uVar8;\n  undefined1 auStack_40 [20];\n  undefined1 auStack_2c [20];\n  \n  pbVar6 = param_1 + 3;\n  bVar1 = *param_1;\n  bVar2 = param_1[1];\n  uVar8 = param_1[2] & 0x7f;\n  if ((char)param_1[2] < '\0') {\n    uVar5 = 0;\n    pbVar7 = pbVar6;\n    do {\n      pbVar6 = pbVar7 + 1;\n      bVar3 = *pbVar7;\n      uVar5 = uVar5 + 7;\n      uVar4 = (bVar3 & 0x7f) << (uVar5 & 0x1f);\n      if ((uVar5 & 0x20) != 0) {\n        uVar4 = 0;\n      }\n      uVar8 = uVar8 | uVar4;\n      pbVar7 = pbVar6;\n    } while ((char)bVar3 < '\0');\n  }\n  if ((-1 < (char)bVar1) && (bVar2 == 0)) {\n    FUN_0005379c(auStack_40,bVar1 & 0x7f);\n    (*(code *)PTR_printf_000c3634)\n              (PTR_UINT_000c338c + 0x4dbc,PTR_UINT_000c338c + 0x4db8,uVar8,auStack_40);\n    return pbVar6;\n  }\n  FUN_0005379c(auStack_2c,bVar1 & 0x7f);\n  FUN_000540a8(auStack_40,bVar1 >> 7,bVar2);\n  (*(code *)PTR_printf_000c3634)\n            (PTR_UINT_000c338c + 0x4dd8,PTR_UINT_000c338c + 0x4db8,uVar8,auStack_2c,auStack_40);\n  return pbVar6;\n}" (type_identifier "byte") (pointer_declarator "* FUN_00054118(byte *param_1)" (* "*") (function_declarator "FUN_00054118(byte *param_1)" (identifier "FUN_00054118") (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  uint uVar4;\n  uint uVar5;\n  byte *pbVar6;\n  byte *pbVar7;\n  uint uVar8;\n  undefined1 auStack_40 [20];\n  undefined1 auStack_2c [20];\n  \n  pbVar6 = param_1 + 3;\n  bVar1 = *param_1;\n  bVar2 = param_1[1];\n  uVar8 = param_1[2] & 0x7f;\n  if ((char)param_1[2] < '\0') {\n    uVar5 = 0;\n    pbVar7 = pbVar6;\n    do {\n      pbVar6 = pbVar7 + 1;\n      bVar3 = *pbVar7;\n      uVar5 = uVar5 + 7;\n      uVar4 = (bVar3 & 0x7f) << (uVar5 & 0x1f);\n      if ((uVar5 & 0x20) != 0) {\n        uVar4 = 0;\n      }\n      uVar8 = uVar8 | uVar4;\n      pbVar7 = pbVar6;\n    } while ((char)bVar3 < '\0');\n  }\n  if ((-1 < (char)bVar1) && (bVar2 == 0)) {\n    FUN_0005379c(auStack_40,bVar1 & 0x7f);\n    (*(code *)PTR_printf_000c3634)\n              (PTR_UINT_000c338c + 0x4dbc,PTR_UINT_000c338c + 0x4db8,uVar8,auStack_40);\n    return pbVar6;\n  }\n  FUN_0005379c(auStack_2c,bVar1 & 0x7f);\n  FUN_000540a8(auStack_40,bVar1 >> 7,bVar2);\n  (*(code *)PTR_printf_000c3634)\n            (PTR_UINT_000c338c + 0x4dd8,PTR_UINT_000c338c + 0x4db8,uVar8,auStack_2c,auStack_40);\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 "uint uVar4;" (type_identifier "uint") (identifier "uVar4") (; ";")) (declaration "uint uVar5;" (type_identifier "uint") (identifier "uVar5") (; ";")) (declaration "byte *pbVar6;" (type_identifier "byte") (pointer_declarator "*pbVar6" (* "*") (identifier "pbVar6")) (; ";")) (declaration "byte *pbVar7;" (type_identifier "byte") (pointer_declarator "*pbVar7" (* "*") (identifier "pbVar7")) (; ";")) (declaration "uint uVar8;" (type_identifier "uint") (identifier "uVar8") (; ";")) (declaration "undefined1 auStack_40 [20];" (type_identifier "undefined1") (array_declarator "auStack_40 [20]" (identifier "auStack_40") ([ "[") (number_literal "20") (] "]")) (; ";")) (declaration "undefined1 auStack_2c [20];" (type_identifier "undefined1") (array_declarator "auStack_2c [20]" (identifier "auStack_2c") ([ "[") (number_literal "20") (] "]")) (; ";")) (expression_statement "pbVar6 = param_1 + 3;" (assignment_expression "pbVar6 = param_1 + 3" (identifier "pbVar6") (= "=") (binary_expression "param_1 + 3" (identifier "param_1") (+ "+") (number_literal "3"))) (; ";")) (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 "uVar8 = param_1[2] & 0x7f;" (assignment_expression "uVar8 = param_1[2] & 0x7f" (identifier "uVar8") (= "=") (binary_expression "param_1[2] & 0x7f" (subscript_expression "param_1[2]" (identifier "param_1") ([ "[") (number_literal "2") (] "]")) (& "&") (number_literal "0x7f"))) (; ";")) (if_statement "if ((char)param_1[2] < '\0') {\n    uVar5 = 0;\n    pbVar7 = pbVar6;\n    do {\n      pbVar6 = pbVar7 + 1;\n      bVar3 = *pbVar7;\n      uVar5 = uVar5 + 7;\n      uVar4 = (bVar3 & 0x7f) << (uVar5 & 0x1f);\n      if ((uVar5 & 0x20) != 0) {\n        uVar4 = 0;\n      }\n      uVar8 = uVar8 | uVar4;\n      pbVar7 = pbVar6;\n    } while ((char)bVar3 < '\0');\n  }" (if "if") (parenthesized_expression "((char)param_1[2] < '\0')" (( "(") (binary_expression "(char)param_1[2] < '\0'" (cast_expression "(char)param_1[2]" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (subscript_expression "param_1[2]" (identifier "param_1") ([ "[") (number_literal "2") (] "]"))) (< "<") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n    uVar5 = 0;\n    pbVar7 = pbVar6;\n    do {\n      pbVar6 = pbVar7 + 1;\n      bVar3 = *pbVar7;\n      uVar5 = uVar5 + 7;\n      uVar4 = (bVar3 & 0x7f) << (uVar5 & 0x1f);\n      if ((uVar5 & 0x20) != 0) {\n        uVar4 = 0;\n      }\n      uVar8 = uVar8 | uVar4;\n      pbVar7 = pbVar6;\n    } while ((char)bVar3 < '\0');\n  }" ({ "{") (expression_statement "uVar5 = 0;" (assignment_expression "uVar5 = 0" (identifier "uVar5") (= "=") (number_literal "0")) (; ";")) (expression_statement "pbVar7 = pbVar6;" (assignment_expression "pbVar7 = pbVar6" (identifier "pbVar7") (= "=") (identifier "pbVar6")) (; ";")) (do_statement "do {\n      pbVar6 = pbVar7 + 1;\n      bVar3 = *pbVar7;\n      uVar5 = uVar5 + 7;\n      uVar4 = (bVar3 & 0x7f) << (uVar5 & 0x1f);\n      if ((uVar5 & 0x20) != 0) {\n        uVar4 = 0;\n      }\n      uVar8 = uVar8 | uVar4;\n      pbVar7 = pbVar6;\n    } while ((char)bVar3 < '\0');" (do "do") (compound_statement "{\n      pbVar6 = pbVar7 + 1;\n      bVar3 = *pbVar7;\n      uVar5 = uVar5 + 7;\n      uVar4 = (bVar3 & 0x7f) << (uVar5 & 0x1f);\n      if ((uVar5 & 0x20) != 0) {\n        uVar4 = 0;\n      }\n      uVar8 = uVar8 | uVar4;\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 "bVar3 = *pbVar7;" (assignment_expression "bVar3 = *pbVar7" (identifier "bVar3") (= "=") (pointer_expression "*pbVar7" (* "*") (identifier "pbVar7"))) (; ";")) (expression_statement "uVar5 = uVar5 + 7;" (assignment_expression "uVar5 = uVar5 + 7" (identifier "uVar5") (= "=") (binary_expression "uVar5 + 7" (identifier "uVar5") (+ "+") (number_literal "7"))) (; ";")) (expression_statement "uVar4 = (bVar3 & 0x7f) << (uVar5 & 0x1f);" (assignment_expression "uVar4 = (bVar3 & 0x7f) << (uVar5 & 0x1f)" (identifier "uVar4") (= "=") (binary_expression "(bVar3 & 0x7f) << (uVar5 & 0x1f)" (parenthesized_expression "(bVar3 & 0x7f)" (( "(") (binary_expression "bVar3 & 0x7f" (identifier "bVar3") (& "&") (number_literal "0x7f")) () ")")) (<< "<<") (parenthesized_expression "(uVar5 & 0x1f)" (( "(") (binary_expression "uVar5 & 0x1f" (identifier "uVar5") (& "&") (number_literal "0x1f")) () ")")))) (; ";")) (if_statement "if ((uVar5 & 0x20) != 0) {\n        uVar4 = 0;\n      }" (if "if") (parenthesized_expression "((uVar5 & 0x20) != 0)" (( "(") (binary_expression "(uVar5 & 0x20) != 0" (parenthesized_expression "(uVar5 & 0x20)" (( "(") (binary_expression "uVar5 & 0x20" (identifier "uVar5") (& "&") (number_literal "0x20")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n        uVar4 = 0;\n      }" ({ "{") (expression_statement "uVar4 = 0;" (assignment_expression "uVar4 = 0" (identifier "uVar4") (= "=") (number_literal "0")) (; ";")) (} "}"))) (expression_statement "uVar8 = uVar8 | uVar4;" (assignment_expression "uVar8 = uVar8 | uVar4" (identifier "uVar8") (= "=") (binary_expression "uVar8 | uVar4" (identifier "uVar8") (| "|") (identifier "uVar4"))) (; ";")) (expression_statement "pbVar7 = pbVar6;" (assignment_expression "pbVar7 = pbVar6" (identifier "pbVar7") (= "=") (identifier "pbVar6")) (; ";")) (} "}")) (while "while") (parenthesized_expression "((char)bVar3 < '\0')" (( "(") (binary_expression "(char)bVar3 < '\0'" (cast_expression "(char)bVar3" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (identifier "bVar3")) (< "<") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (; ";")) (} "}"))) (if_statement "if ((-1 < (char)bVar1) && (bVar2 == 0)) {\n    FUN_0005379c(auStack_40,bVar1 & 0x7f);\n    (*(code *)PTR_printf_000c3634)\n              (PTR_UINT_000c338c + 0x4dbc,PTR_UINT_000c338c + 0x4db8,uVar8,auStack_40);\n    return pbVar6;\n  }" (if "if") (parenthesized_expression "((-1 < (char)bVar1) && (bVar2 == 0))" (( "(") (binary_expression "(-1 < (char)bVar1) && (bVar2 == 0)" (parenthesized_expression "(-1 < (char)bVar1)" (( "(") (binary_expression "-1 < (char)bVar1" (number_literal "-1") (< "<") (cast_expression "(char)bVar1" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (identifier "bVar1"))) () ")")) (&& "&&") (parenthesized_expression "(bVar2 == 0)" (( "(") (binary_expression "bVar2 == 0" (identifier "bVar2") (== "==") (number_literal "0")) () ")"))) () ")")) (compound_statement "{\n    FUN_0005379c(auStack_40,bVar1 & 0x7f);\n    (*(code *)PTR_printf_000c3634)\n              (PTR_UINT_000c338c + 0x4dbc,PTR_UINT_000c338c + 0x4db8,uVar8,auStack_40);\n    return pbVar6;\n  }" ({ "{") (expression_statement "FUN_0005379c(auStack_40,bVar1 & 0x7f);" (call_expression "FUN_0005379c(auStack_40,bVar1 & 0x7f)" (identifier "FUN_0005379c") (argument_list "(auStack_40,bVar1 & 0x7f)" (( "(") (identifier "auStack_40") (, ",") (binary_expression "bVar1 & 0x7f" (identifier "bVar1") (& "&") (number_literal "0x7f")) () ")"))) (; ";")) (expression_statement "(*(code *)PTR_printf_000c3634)\n              (PTR_UINT_000c338c + 0x4dbc,PTR_UINT_000c338c + 0x4db8,uVar8,auStack_40);" (call_expression "(*(code *)PTR_printf_000c3634)\n              (PTR_UINT_000c338c + 0x4dbc,PTR_UINT_000c338c + 0x4db8,uVar8,auStack_40)" (parenthesized_expression "(*(code *)PTR_printf_000c3634)" (( "(") (pointer_expression "*(code *)PTR_printf_000c3634" (* "*") (cast_expression "(code *)PTR_printf_000c3634" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_printf_000c3634"))) () ")")) (argument_list "(PTR_UINT_000c338c + 0x4dbc,PTR_UINT_000c338c + 0x4db8,uVar8,auStack_40)" (( "(") (binary_expression "PTR_UINT_000c338c + 0x4dbc" (identifier "PTR_UINT_000c338c") (+ "+") (number_literal "0x4dbc")) (, ",") (binary_expression "PTR_UINT_000c338c + 0x4db8" (identifier "PTR_UINT_000c338c") (+ "+") (number_literal "0x4db8")) (, ",") (identifier "uVar8") (, ",") (identifier "auStack_40") () ")"))) (; ";")) (return_statement "return pbVar6;" (return "return") (identifier "pbVar6") (; ";")) (} "}"))) (expression_statement "FUN_0005379c(auStack_2c,bVar1 & 0x7f);" (call_expression "FUN_0005379c(auStack_2c,bVar1 & 0x7f)" (identifier "FUN_0005379c") (argument_list "(auStack_2c,bVar1 & 0x7f)" (( "(") (identifier "auStack_2c") (, ",") (binary_expression "bVar1 & 0x7f" (identifier "bVar1") (& "&") (number_literal "0x7f")) () ")"))) (; ";")) (expression_statement "FUN_000540a8(auStack_40,bVar1 >> 7,bVar2);" (call_expression "FUN_000540a8(auStack_40,bVar1 >> 7,bVar2)" (identifier "FUN_000540a8") (argument_list "(auStack_40,bVar1 >> 7,bVar2)" (( "(") (identifier "auStack_40") (, ",") (binary_expression "bVar1 >> 7" (identifier "bVar1") (>> ">>") (number_literal "7")) (, ",") (identifier "bVar2") () ")"))) (; ";")) (expression_statement "(*(code *)PTR_printf_000c3634)\n            (PTR_UINT_000c338c + 0x4dd8,PTR_UINT_000c338c + 0x4db8,uVar8,auStack_2c,auStack_40);" (call_expression "(*(code *)PTR_printf_000c3634)\n            (PTR_UINT_000c338c + 0x4dd8,PTR_UINT_000c338c + 0x4db8,uVar8,auStack_2c,auStack_40)" (parenthesized_expression "(*(code *)PTR_printf_000c3634)" (( "(") (pointer_expression "*(code *)PTR_printf_000c3634" (* "*") (cast_expression "(code *)PTR_printf_000c3634" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_printf_000c3634"))) () ")")) (argument_list "(PTR_UINT_000c338c + 0x4dd8,PTR_UINT_000c338c + 0x4db8,uVar8,auStack_2c,auStack_40)" (( "(") (binary_expression "PTR_UINT_000c338c + 0x4dd8" (identifier "PTR_UINT_000c338c") (+ "+") (number_literal "0x4dd8")) (, ",") (binary_expression "PTR_UINT_000c338c + 0x4db8" (identifier "PTR_UINT_000c338c") (+ "+") (number_literal "0x4db8")) (, ",") (identifier "uVar8") (, ",") (identifier "auStack_2c") (, ",") (identifier "auStack_40") () ")"))) (; ";")) (return_statement "return pbVar6;" (return "return") (identifier "pbVar6") (; ";")) (} "}")))

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

{
  type_3 var_9;
  type_3 var_7;
  type_3 var_4;
  type_2 var_6;
  type_2 var_3;
  type_3 *pbVar6;
  type_3 *var_2;
  type_2 var_5;
  char tregname [20];
  char abregname [20];
  
  pbVar6 = var_1 + 3;
  var_9 = *var_1;
  var_7 = var_1[1];
  var_5 = var_1[2] & 0x7f;
  if ((char)var_1[2] < '\0') {
    var_3 = 0;
    var_2 = pbVar6;
    do {
      pbVar6 = var_2 + 1;
      var_4 = *var_2;
      var_3 = var_3 + 7;
      var_6 = (var_4 & 0x7f) << (var_3 & 0x1f);
      if ((var_3 & 0x20) != 0) {
        var_6 = 0;
      }
      var_5 = var_5 | var_6;
      var_2 = pbVar6;
    } while ((char)var_4 < '\0');
  }
  if ((-1 < (char)var_9) && (var_7 == 0)) {
    var_8(tregname,var_9 & 0x7f);
    (*(type_4 *)PTR_printf_000c3634)
              (var_10 + 0x4dbc,var_10 + 0x4db8,var_5,tregname);
    return pbVar6;
  }
  var_8(abregname,var_9 & 0x7f);
  var_11(tregname,(type_2)(var_9 >> 7),(type_2)var_7);
  (*(type_4 *)PTR_printf_000c3634)
            (var_10 + 0x4dd8,var_10 + 0x4db8,var_5,abregname,tregname);
  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: (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))) (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: (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: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier)))) (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: (number_literal) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))) 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: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list (binary_expression left: (identifier) right: (number_literal)) (binary_expression left: (identifier) right: (number_literal)) (identifier) (identifier)))) (return_statement (identifier)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (binary_expression left: (identifier) right: (number_literal))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (binary_expression left: (identifier) right: (number_literal)) (identifier)))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list (binary_expression left: (identifier) right: (number_literal)) (binary_expression left: (identifier) right: (number_literal)) (identifier) (identifier) (identifier)))) (return_statement (identifier)))))

byte * MASKED(byte *param_1)

{
  byte bVar1;
  byte bVar2;
  byte bVar3;
  uint uVar4;
  uint uVar5;
  byte *pbVar6;
  byte *pbVar7;
  uint uVar8;
  undefined1 auStack_40 [20];
  undefined1 auStack_2c [20];
  
  pbVar6 = param_1 + 3;
  bVar1 = *param_1;
  bVar2 = param_1[1];
  uVar8 = param_1[2] & 0x7f;
  if ((char)param_1[2] < '\0') {
    uVar5 = 0;
    pbVar7 = pbVar6;
    do {
      pbVar6 = pbVar7 + 1;
      bVar3 = *pbVar7;
      uVar5 = uVar5 + 7;
      uVar4 = (bVar3 & 0x7f) << (uVar5 & 0x1f);
      if ((uVar5 & 0x20) != 0) {
        uVar4 = 0;
      }
      uVar8 = uVar8 | uVar4;
      pbVar7 = pbVar6;
    } while ((char)bVar3 < '\0');
  }
  if ((-1 < (char)bVar1) && (bVar2 == 0)) {
    FUN_0005379c(auStack_40,bVar1 & 0x7f);
    (*(code *)PTR_printf_000c3634)
              (PTR_UINT_000c338c + 0x4dbc,PTR_UINT_000c338c + 0x4db8,uVar8,auStack_40);
    return pbVar6;
  }
  FUN_0005379c(auStack_2c,bVar1 & 0x7f);
  FUN_000540a8(auStack_40,bVar1 >> 7,bVar2);
  (*(code *)PTR_printf_000c3634)
            (PTR_UINT_000c338c + 0x4dd8,PTR_UINT_000c338c + 0x4db8,uVar8,auStack_2c,auStack_40);
  return pbVar6;
}

