
/* WARNING: Function: __x86.get_pc_thunk.si replaced with injection: get_pc_thunk_si */

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

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



/* WARNING: Function: __i686.get_pc_thunk.si replaced with injection: get_pc_thunk_si */

byte * __regparm3 FUN_0004bcd0(byte *param_1)

{
  byte bVar1;
  byte bVar2;
  uint uVar3;
  uint uVar4;
  byte bVar5;
  byte *pbVar6;
  uint uVar8;
  uint uVar9;
  undefined1 *puVar10;
  uint uVar11;
  undefined1 local_44 [20];
  undefined1 local_30 [32];
  byte *pbVar7;
  
  bVar1 = *param_1;
  uVar11 = 0;
  pbVar6 = param_1 + 4;
  uVar3 = param_1[3] & 0x7f;
  if ((char)param_1[3] < '\0') {
    bVar5 = 0;
    pbVar7 = pbVar6;
    do {
      pbVar6 = pbVar7 + 1;
      bVar2 = *pbVar7;
      bVar5 = bVar5 + 7;
      uVar4 = bVar2 & 0x7f;
      uVar8 = uVar4 << (bVar5 & 0x1f);
      uVar9 = uVar8;
      uVar4 = 0 << (bVar5 & 0x1f) | uVar4 >> 0x20 - (bVar5 & 0x1f);
      if ((bVar5 & 0x20) != 0) {
        uVar9 = 0;
        uVar4 = uVar8;
      }
      uVar11 = uVar4 | uVar11;
      uVar3 = uVar9 | uVar3;
      pbVar7 = pbVar6;
    } while ((char)bVar2 < '\0');
  }
  if ((-1 < (char)param_1[1]) && (param_1[2] == 0)) {
    FUN_0004b2e0(uVar3,uVar11);
    printf("\t%s:restore_p(qp=p%u,t=%lu,reg=%s)\n",&DAT_0008e715,bVar1 & 0x3f,uVar3,local_30);
    return pbVar6;
  }
  puVar10 = local_44;
  FUN_0004b2e0(puVar10,uVar11);
  FUN_0004bb00();
  printf("\t%s:spill_reg_p(qp=p%u,t=%lu,reg=%s,treg=%s)\n",&DAT_0008e715,bVar1 & 0x3f,uVar3,puVar10,
         local_30);
  return pbVar6;
}


PUSH EBP
PUSH EDI
PUSH ESI
CALL 0x0004ab81
ADD ESI,0x68328
PUSH EBX
SUB ESP,0x5c
MOVZX EBX,byte ptr [EAX]
MOV dword ptr [ESP + 0x4],0x0
MOV byte ptr [ESP + 0x1c],BL
MOVZX EBX,byte ptr [EAX + 0x1]
MOV dword ptr [ESP + 0x18],ESI
LEA ESI,[EAX + 0x4]
MOV byte ptr [ESP + 0x16],BL
MOVZX EBX,byte ptr [EAX + 0x2]
MOVZX EAX,byte ptr [EAX + 0x3]
MOV byte ptr [ESP + 0x17],BL
MOV EDX,EAX
AND EDX,0x7f
MOV dword ptr [ESP],EDX
TEST AL,AL
JNS 0x0004bd6b
XOR EBX,EBX
LEA ESI,[ESI]
ADD ESI,0x1
MOVZX EAX,byte ptr [ESI + -0x1]
ADD EBX,0x7
XOR EBP,EBP
MOV ECX,EBX
MOV EDX,EAX
AND EDX,0x7f
MOV EDI,EDX
SHLD EBP,EDX,CL
XOR EDX,EDX
SHL EDI,CL
TEST BL,0x20
CMOVNZ EBP,EDI
CMOVNZ EDI,EDX
MOV dword ptr [ESP + 0xc],EBP
MOV EBP,dword ptr [ESP + 0x4]
MOV dword ptr [ESP + 0x8],EDI
MOV ECX,dword ptr [ESP + 0xc]
MOV EDI,dword ptr [ESP]
MOV EDX,dword ptr [ESP + 0x8]
OR ECX,EBP
OR EDX,EDI
MOV dword ptr [ESP + 0x4],ECX
MOV dword ptr [ESP],EDX
TEST AL,AL
JS 0x0004bd20
MOVZX EAX,byte ptr [ESP + 0x16]
MOV EBX,dword ptr [ESP + 0x1c]
MOV EDI,dword ptr [ESP]
MOV EDX,EAX
AND EBX,0x3f
AND EDX,0x7f
TEST AL,AL
JS 0x0004bdc8
CMP byte ptr [ESP + 0x17],0x0
JNZ 0x0004bdc8
LEA EDI,[ESP + 0x3c]
MOV EAX,EDI
CALL 0x0004b2e0
SUB ESP,0xc
PUSH EDI
PUSH dword ptr [ESP + 0x10]
PUSH EBX
MOV EBX,dword ptr [ESP + 0x30]
LEA EAX,[EBX + 0xfffda715]
PUSH EAX
LEA EAX,[EBX + 0xfffdaa08]
PUSH EAX
CALL 0x00013060
ADD ESP,0x20
MOV EAX,ESI
ADD ESP,0x5c
POP EBX
POP ESI
POP EDI
POP EBP
RET
LEA EAX,[ESP + 0x28]
LEA EBP,[ESP + 0x3c]
MOV dword ptr [ESP],EAX
CALL 0x0004b2e0
MOVZX EDX,byte ptr [ESP + 0x16]
MOVZX ECX,byte ptr [ESP + 0x17]
MOV EAX,EBP
SHR DL,0x7
MOVZX EDX,DL
CALL 0x0004bb00
SUB ESP,0x8
PUSH EBP
PUSH dword ptr [ESP + 0xc]
PUSH EDI
PUSH EBX
MOV EBX,dword ptr [ESP + 0x30]
LEA EAX,[EBX + 0xfffda715]
PUSH EAX
LEA EAX,[EBX + 0xfffdaa2c]
PUSH EAX
CALL 0x00013060
ADD ESP,0x20
MOV EAX,ESI
ADD ESP,0x5c
POP EBX
POP ESI
POP EDI
POP EBP
RET
(translation_unit "/* WARNING: Function: __i686.get_pc_thunk.si replaced with injection: get_pc_thunk_si */\n\nbyte * __regparm3 FUN_0004bcd0(byte *param_1)\n\n{\n  byte bVar1;\n  byte bVar2;\n  uint uVar3;\n  uint uVar4;\n  byte bVar5;\n  byte *pbVar6;\n  uint uVar8;\n  uint uVar9;\n  undefined1 *puVar10;\n  uint uVar11;\n  undefined1 local_44 [20];\n  undefined1 local_30 [32];\n  byte *pbVar7;\n  \n  bVar1 = *param_1;\n  uVar11 = 0;\n  pbVar6 = param_1 + 4;\n  uVar3 = param_1[3] & 0x7f;\n  if ((char)param_1[3] < '\0') {\n    bVar5 = 0;\n    pbVar7 = pbVar6;\n    do {\n      pbVar6 = pbVar7 + 1;\n      bVar2 = *pbVar7;\n      bVar5 = bVar5 + 7;\n      uVar4 = bVar2 & 0x7f;\n      uVar8 = uVar4 << (bVar5 & 0x1f);\n      uVar9 = uVar8;\n      uVar4 = 0 << (bVar5 & 0x1f) | uVar4 >> 0x20 - (bVar5 & 0x1f);\n      if ((bVar5 & 0x20) != 0) {\n        uVar9 = 0;\n        uVar4 = uVar8;\n      }\n      uVar11 = uVar4 | uVar11;\n      uVar3 = uVar9 | uVar3;\n      pbVar7 = pbVar6;\n    } while ((char)bVar2 < '\0');\n  }\n  if ((-1 < (char)param_1[1]) && (param_1[2] == 0)) {\n    FUN_0004b2e0(uVar3,uVar11);\n    printf("\t%s:restore_p(qp=p%u,t=%lu,reg=%s)\n",&DAT_0008e715,bVar1 & 0x3f,uVar3,local_30);\n    return pbVar6;\n  }\n  puVar10 = local_44;\n  FUN_0004b2e0(puVar10,uVar11);\n  FUN_0004bb00();\n  printf("\t%s:spill_reg_p(qp=p%u,t=%lu,reg=%s,treg=%s)\n",&DAT_0008e715,bVar1 & 0x3f,uVar3,puVar10,\n         local_30);\n  return pbVar6;\n}\n\n" comment (ERROR "byte * __regparm3 FUN_0004bcd0(byte *param_1)" (binary_expression "byte * __regparm3 FUN_0004bcd0(byte *param_1)" identifier * (ERROR "__regparm3" identifier) (call_expression "FUN_0004bcd0(byte *param_1)" identifier (argument_list "(byte *param_1)" ( (binary_expression "byte *param_1" identifier * identifier) ))))) (compound_statement "{\n  byte bVar1;\n  byte bVar2;\n  uint uVar3;\n  uint uVar4;\n  byte bVar5;\n  byte *pbVar6;\n  uint uVar8;\n  uint uVar9;\n  undefined1 *puVar10;\n  uint uVar11;\n  undefined1 local_44 [20];\n  undefined1 local_30 [32];\n  byte *pbVar7;\n  \n  bVar1 = *param_1;\n  uVar11 = 0;\n  pbVar6 = param_1 + 4;\n  uVar3 = param_1[3] & 0x7f;\n  if ((char)param_1[3] < '\0') {\n    bVar5 = 0;\n    pbVar7 = pbVar6;\n    do {\n      pbVar6 = pbVar7 + 1;\n      bVar2 = *pbVar7;\n      bVar5 = bVar5 + 7;\n      uVar4 = bVar2 & 0x7f;\n      uVar8 = uVar4 << (bVar5 & 0x1f);\n      uVar9 = uVar8;\n      uVar4 = 0 << (bVar5 & 0x1f) | uVar4 >> 0x20 - (bVar5 & 0x1f);\n      if ((bVar5 & 0x20) != 0) {\n        uVar9 = 0;\n        uVar4 = uVar8;\n      }\n      uVar11 = uVar4 | uVar11;\n      uVar3 = uVar9 | uVar3;\n      pbVar7 = pbVar6;\n    } while ((char)bVar2 < '\0');\n  }\n  if ((-1 < (char)param_1[1]) && (param_1[2] == 0)) {\n    FUN_0004b2e0(uVar3,uVar11);\n    printf("\t%s:restore_p(qp=p%u,t=%lu,reg=%s)\n",&DAT_0008e715,bVar1 & 0x3f,uVar3,local_30);\n    return pbVar6;\n  }\n  puVar10 = local_44;\n  FUN_0004b2e0(puVar10,uVar11);\n  FUN_0004bb00();\n  printf("\t%s:spill_reg_p(qp=p%u,t=%lu,reg=%s,treg=%s)\n",&DAT_0008e715,bVar1 & 0x3f,uVar3,puVar10,\n         local_30);\n  return pbVar6;\n}" { (declaration "byte bVar1;" type_identifier identifier ;) (declaration "byte bVar2;" type_identifier identifier ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "uint uVar4;" type_identifier identifier ;) (declaration "byte bVar5;" type_identifier identifier ;) (declaration "byte *pbVar6;" type_identifier (pointer_declarator "*pbVar6" * identifier) ;) (declaration "uint uVar8;" type_identifier identifier ;) (declaration "uint uVar9;" type_identifier identifier ;) (declaration "undefined1 *puVar10;" type_identifier (pointer_declarator "*puVar10" * identifier) ;) (declaration "uint uVar11;" type_identifier identifier ;) (declaration "undefined1 local_44 [20];" type_identifier (array_declarator "local_44 [20]" identifier [ number_literal ]) ;) (declaration "undefined1 local_30 [32];" type_identifier (array_declarator "local_30 [32]" identifier [ number_literal ]) ;) (declaration "byte *pbVar7;" type_identifier (pointer_declarator "*pbVar7" * identifier) ;) (expression_statement "bVar1 = *param_1;" (assignment_expression "bVar1 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (expression_statement "uVar11 = 0;" (assignment_expression "uVar11 = 0" identifier = number_literal) ;) (expression_statement "pbVar6 = param_1 + 4;" (assignment_expression "pbVar6 = param_1 + 4" identifier = (binary_expression "param_1 + 4" identifier + number_literal)) ;) (expression_statement "uVar3 = param_1[3] & 0x7f;" (assignment_expression "uVar3 = param_1[3] & 0x7f" identifier = (binary_expression "param_1[3] & 0x7f" (subscript_expression "param_1[3]" identifier [ number_literal ]) & number_literal)) ;) (if_statement "if ((char)param_1[3] < '\0') {\n    bVar5 = 0;\n    pbVar7 = pbVar6;\n    do {\n      pbVar6 = pbVar7 + 1;\n      bVar2 = *pbVar7;\n      bVar5 = bVar5 + 7;\n      uVar4 = bVar2 & 0x7f;\n      uVar8 = uVar4 << (bVar5 & 0x1f);\n      uVar9 = uVar8;\n      uVar4 = 0 << (bVar5 & 0x1f) | uVar4 >> 0x20 - (bVar5 & 0x1f);\n      if ((bVar5 & 0x20) != 0) {\n        uVar9 = 0;\n        uVar4 = uVar8;\n      }\n      uVar11 = uVar4 | uVar11;\n      uVar3 = uVar9 | uVar3;\n      pbVar7 = pbVar6;\n    } while ((char)bVar2 < '\0');\n  }" if (parenthesized_expression "((char)param_1[3] < '\0')" ( (binary_expression "(char)param_1[3] < '\0'" (cast_expression "(char)param_1[3]" ( (type_descriptor "char" primitive_type) ) (subscript_expression "param_1[3]" identifier [ number_literal ])) < (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    bVar5 = 0;\n    pbVar7 = pbVar6;\n    do {\n      pbVar6 = pbVar7 + 1;\n      bVar2 = *pbVar7;\n      bVar5 = bVar5 + 7;\n      uVar4 = bVar2 & 0x7f;\n      uVar8 = uVar4 << (bVar5 & 0x1f);\n      uVar9 = uVar8;\n      uVar4 = 0 << (bVar5 & 0x1f) | uVar4 >> 0x20 - (bVar5 & 0x1f);\n      if ((bVar5 & 0x20) != 0) {\n        uVar9 = 0;\n        uVar4 = uVar8;\n      }\n      uVar11 = uVar4 | uVar11;\n      uVar3 = uVar9 | uVar3;\n      pbVar7 = pbVar6;\n    } while ((char)bVar2 < '\0');\n  }" { (expression_statement "bVar5 = 0;" (assignment_expression "bVar5 = 0" identifier = number_literal) ;) (expression_statement "pbVar7 = pbVar6;" (assignment_expression "pbVar7 = pbVar6" identifier = identifier) ;) (do_statement "do {\n      pbVar6 = pbVar7 + 1;\n      bVar2 = *pbVar7;\n      bVar5 = bVar5 + 7;\n      uVar4 = bVar2 & 0x7f;\n      uVar8 = uVar4 << (bVar5 & 0x1f);\n      uVar9 = uVar8;\n      uVar4 = 0 << (bVar5 & 0x1f) | uVar4 >> 0x20 - (bVar5 & 0x1f);\n      if ((bVar5 & 0x20) != 0) {\n        uVar9 = 0;\n        uVar4 = uVar8;\n      }\n      uVar11 = uVar4 | uVar11;\n      uVar3 = uVar9 | uVar3;\n      pbVar7 = pbVar6;\n    } while ((char)bVar2 < '\0');" do (compound_statement "{\n      pbVar6 = pbVar7 + 1;\n      bVar2 = *pbVar7;\n      bVar5 = bVar5 + 7;\n      uVar4 = bVar2 & 0x7f;\n      uVar8 = uVar4 << (bVar5 & 0x1f);\n      uVar9 = uVar8;\n      uVar4 = 0 << (bVar5 & 0x1f) | uVar4 >> 0x20 - (bVar5 & 0x1f);\n      if ((bVar5 & 0x20) != 0) {\n        uVar9 = 0;\n        uVar4 = uVar8;\n      }\n      uVar11 = uVar4 | uVar11;\n      uVar3 = uVar9 | uVar3;\n      pbVar7 = pbVar6;\n    }" { (expression_statement "pbVar6 = pbVar7 + 1;" (assignment_expression "pbVar6 = pbVar7 + 1" identifier = (binary_expression "pbVar7 + 1" identifier + number_literal)) ;) (expression_statement "bVar2 = *pbVar7;" (assignment_expression "bVar2 = *pbVar7" identifier = (pointer_expression "*pbVar7" * identifier)) ;) (expression_statement "bVar5 = bVar5 + 7;" (assignment_expression "bVar5 = bVar5 + 7" identifier = (binary_expression "bVar5 + 7" identifier + number_literal)) ;) (expression_statement "uVar4 = bVar2 & 0x7f;" (assignment_expression "uVar4 = bVar2 & 0x7f" identifier = (binary_expression "bVar2 & 0x7f" identifier & number_literal)) ;) (expression_statement "uVar8 = uVar4 << (bVar5 & 0x1f);" (assignment_expression "uVar8 = uVar4 << (bVar5 & 0x1f)" identifier = (binary_expression "uVar4 << (bVar5 & 0x1f)" identifier << (parenthesized_expression "(bVar5 & 0x1f)" ( (binary_expression "bVar5 & 0x1f" identifier & number_literal) )))) ;) (expression_statement "uVar9 = uVar8;" (assignment_expression "uVar9 = uVar8" identifier = identifier) ;) (expression_statement "uVar4 = 0 << (bVar5 & 0x1f) | uVar4 >> 0x20 - (bVar5 & 0x1f);" (assignment_expression "uVar4 = 0 << (bVar5 & 0x1f) | uVar4 >> 0x20 - (bVar5 & 0x1f)" identifier = (binary_expression "0 << (bVar5 & 0x1f) | uVar4 >> 0x20 - (bVar5 & 0x1f)" (binary_expression "0 << (bVar5 & 0x1f)" number_literal << (parenthesized_expression "(bVar5 & 0x1f)" ( (binary_expression "bVar5 & 0x1f" identifier & number_literal) ))) | (binary_expression "uVar4 >> 0x20 - (bVar5 & 0x1f)" identifier >> (binary_expression "0x20 - (bVar5 & 0x1f)" number_literal - (parenthesized_expression "(bVar5 & 0x1f)" ( (binary_expression "bVar5 & 0x1f" identifier & number_literal) )))))) ;) (if_statement "if ((bVar5 & 0x20) != 0) {\n        uVar9 = 0;\n        uVar4 = uVar8;\n      }" if (parenthesized_expression "((bVar5 & 0x20) != 0)" ( (binary_expression "(bVar5 & 0x20) != 0" (parenthesized_expression "(bVar5 & 0x20)" ( (binary_expression "bVar5 & 0x20" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n        uVar9 = 0;\n        uVar4 = uVar8;\n      }" { (expression_statement "uVar9 = 0;" (assignment_expression "uVar9 = 0" identifier = number_literal) ;) (expression_statement "uVar4 = uVar8;" (assignment_expression "uVar4 = uVar8" identifier = identifier) ;) })) (expression_statement "uVar11 = uVar4 | uVar11;" (assignment_expression "uVar11 = uVar4 | uVar11" identifier = (binary_expression "uVar4 | uVar11" identifier | identifier)) ;) (expression_statement "uVar3 = uVar9 | uVar3;" (assignment_expression "uVar3 = uVar9 | uVar3" identifier = (binary_expression "uVar9 | uVar3" identifier | identifier)) ;) (expression_statement "pbVar7 = pbVar6;" (assignment_expression "pbVar7 = pbVar6" identifier = identifier) ;) }) 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 ')) )) ;) })) (if_statement "if ((-1 < (char)param_1[1]) && (param_1[2] == 0)) {\n    FUN_0004b2e0(uVar3,uVar11);\n    printf("\t%s:restore_p(qp=p%u,t=%lu,reg=%s)\n",&DAT_0008e715,bVar1 & 0x3f,uVar3,local_30);\n    return pbVar6;\n  }" if (parenthesized_expression "((-1 < (char)param_1[1]) && (param_1[2] == 0))" ( (binary_expression "(-1 < (char)param_1[1]) && (param_1[2] == 0)" (parenthesized_expression "(-1 < (char)param_1[1])" ( (binary_expression "-1 < (char)param_1[1]" number_literal < (cast_expression "(char)param_1[1]" ( (type_descriptor "char" primitive_type) ) (subscript_expression "param_1[1]" identifier [ number_literal ]))) )) && (parenthesized_expression "(param_1[2] == 0)" ( (binary_expression "param_1[2] == 0" (subscript_expression "param_1[2]" identifier [ number_literal ]) == number_literal) ))) )) (compound_statement "{\n    FUN_0004b2e0(uVar3,uVar11);\n    printf("\t%s:restore_p(qp=p%u,t=%lu,reg=%s)\n",&DAT_0008e715,bVar1 & 0x3f,uVar3,local_30);\n    return pbVar6;\n  }" { (expression_statement "FUN_0004b2e0(uVar3,uVar11);" (call_expression "FUN_0004b2e0(uVar3,uVar11)" identifier (argument_list "(uVar3,uVar11)" ( identifier , identifier ))) ;) (expression_statement "printf("\t%s:restore_p(qp=p%u,t=%lu,reg=%s)\n",&DAT_0008e715,bVar1 & 0x3f,uVar3,local_30);" (call_expression "printf("\t%s:restore_p(qp=p%u,t=%lu,reg=%s)\n",&DAT_0008e715,bVar1 & 0x3f,uVar3,local_30)" identifier (argument_list "("\t%s:restore_p(qp=p%u,t=%lu,reg=%s)\n",&DAT_0008e715,bVar1 & 0x3f,uVar3,local_30)" ( (string_literal ""\t%s:restore_p(qp=p%u,t=%lu,reg=%s)\n"" " escape_sequence string_content escape_sequence ") , (pointer_expression "&DAT_0008e715" & identifier) , (binary_expression "bVar1 & 0x3f" identifier & number_literal) , identifier , identifier ))) ;) (return_statement "return pbVar6;" return identifier ;) })) (expression_statement "puVar10 = local_44;" (assignment_expression "puVar10 = local_44" identifier = identifier) ;) (expression_statement "FUN_0004b2e0(puVar10,uVar11);" (call_expression "FUN_0004b2e0(puVar10,uVar11)" identifier (argument_list "(puVar10,uVar11)" ( identifier , identifier ))) ;) (expression_statement "FUN_0004bb00();" (call_expression "FUN_0004bb00()" identifier (argument_list "()" ( ))) ;) (expression_statement "printf("\t%s:spill_reg_p(qp=p%u,t=%lu,reg=%s,treg=%s)\n",&DAT_0008e715,bVar1 & 0x3f,uVar3,puVar10,\n         local_30);" (call_expression "printf("\t%s:spill_reg_p(qp=p%u,t=%lu,reg=%s,treg=%s)\n",&DAT_0008e715,bVar1 & 0x3f,uVar3,puVar10,\n         local_30)" identifier (argument_list "("\t%s:spill_reg_p(qp=p%u,t=%lu,reg=%s,treg=%s)\n",&DAT_0008e715,bVar1 & 0x3f,uVar3,puVar10,\n         local_30)" ( (string_literal ""\t%s:spill_reg_p(qp=p%u,t=%lu,reg=%s,treg=%s)\n"" " escape_sequence string_content escape_sequence ") , (pointer_expression "&DAT_0008e715" & identifier) , (binary_expression "bVar1 & 0x3f" identifier & number_literal) , identifier , identifier , identifier ))) ;) (return_statement "return pbVar6;" return identifier ;) }))
(translation_unit "/* WARNING: Function: __x86.get_pc_thunk.si replaced with injection: get_pc_thunk_si */\n\nuchar * __regparm3 unw_decode_x4(uchar *dp,uint code,void *arg)\n\n{\n  byte bVar1;\n  byte bVar2;\n  byte bVar3;\n  byte bVar4;\n  byte bVar5;\n  byte *pbVar6;\n  uint uVar8;\n  uint local_6c;\n  char regname_1 [20];\n  char regname [20];\n  byte *pbVar7;\n  \n  bVar1 = *dp;\n  bVar2 = dp[1];\n  pbVar6 = dp + 4;\n  bVar3 = dp[2];\n  local_6c = dp[3] & 0x7f;\n  if ((char)dp[3] < '\0') {\n    bVar5 = 0;\n    pbVar7 = pbVar6;\n    do {\n      pbVar6 = pbVar7 + 1;\n      bVar4 = *pbVar7;\n      bVar5 = bVar5 + 7;\n      uVar8 = (bVar4 & 0x7f) << (bVar5 & 0x1f);\n      if ((bVar5 & 0x20) != 0) {\n        uVar8 = 0;\n      }\n      local_6c = uVar8 | local_6c;\n      pbVar7 = pbVar6;\n    } while ((char)bVar4 < '\0');\n  }\n  if ((-1 < (char)bVar2) && (bVar3 == 0)) {\n    unw_print_abreg(regname,bVar2 & 0x7f);\n    printf("\t%s:restore_p(qp=p%u,t=%lu,reg=%s)\n",&DAT_0008e715,bVar1 & 0x3f,local_6c,regname);\n    return pbVar6;\n  }\n  unw_print_abreg(regname_1,bVar2 & 0x7f);\n  unw_print_xyreg(regname,(uint)(bVar2 >> 7),(uint)bVar3);\n  printf("\t%s:spill_reg_p(qp=p%u,t=%lu,reg=%s,treg=%s)\n",&DAT_0008e715,bVar1 & 0x3f,local_6c,\n         regname_1,regname);\n  return pbVar6;\n}\n\n" comment (ERROR "uchar * __regparm3 unw_decode_x4(uchar *dp,uint code,void *arg)" (binary_expression "uchar * __regparm3 unw_decode_x4(uchar *dp,uint code,void *arg)" identifier * (ERROR "__regparm3" identifier) (call_expression "unw_decode_x4(uchar *dp,uint code,void *arg)" identifier (argument_list "(uchar *dp,uint code,void *arg)" ( (binary_expression "uchar *dp" identifier * identifier) , identifier (ERROR "code" identifier) , (binary_expression "void *arg" identifier * identifier) ))))) (compound_statement "{\n  byte bVar1;\n  byte bVar2;\n  byte bVar3;\n  byte bVar4;\n  byte bVar5;\n  byte *pbVar6;\n  uint uVar8;\n  uint local_6c;\n  char regname_1 [20];\n  char regname [20];\n  byte *pbVar7;\n  \n  bVar1 = *dp;\n  bVar2 = dp[1];\n  pbVar6 = dp + 4;\n  bVar3 = dp[2];\n  local_6c = dp[3] & 0x7f;\n  if ((char)dp[3] < '\0') {\n    bVar5 = 0;\n    pbVar7 = pbVar6;\n    do {\n      pbVar6 = pbVar7 + 1;\n      bVar4 = *pbVar7;\n      bVar5 = bVar5 + 7;\n      uVar8 = (bVar4 & 0x7f) << (bVar5 & 0x1f);\n      if ((bVar5 & 0x20) != 0) {\n        uVar8 = 0;\n      }\n      local_6c = uVar8 | local_6c;\n      pbVar7 = pbVar6;\n    } while ((char)bVar4 < '\0');\n  }\n  if ((-1 < (char)bVar2) && (bVar3 == 0)) {\n    unw_print_abreg(regname,bVar2 & 0x7f);\n    printf("\t%s:restore_p(qp=p%u,t=%lu,reg=%s)\n",&DAT_0008e715,bVar1 & 0x3f,local_6c,regname);\n    return pbVar6;\n  }\n  unw_print_abreg(regname_1,bVar2 & 0x7f);\n  unw_print_xyreg(regname,(uint)(bVar2 >> 7),(uint)bVar3);\n  printf("\t%s:spill_reg_p(qp=p%u,t=%lu,reg=%s,treg=%s)\n",&DAT_0008e715,bVar1 & 0x3f,local_6c,\n         regname_1,regname);\n  return pbVar6;\n}" { (declaration "byte bVar1;" type_identifier identifier ;) (declaration "byte bVar2;" type_identifier identifier ;) (declaration "byte bVar3;" type_identifier identifier ;) (declaration "byte bVar4;" type_identifier identifier ;) (declaration "byte bVar5;" type_identifier identifier ;) (declaration "byte *pbVar6;" type_identifier (pointer_declarator "*pbVar6" * identifier) ;) (declaration "uint uVar8;" type_identifier identifier ;) (declaration "uint local_6c;" type_identifier identifier ;) (declaration "char regname_1 [20];" primitive_type (array_declarator "regname_1 [20]" identifier [ number_literal ]) ;) (declaration "char regname [20];" primitive_type (array_declarator "regname [20]" identifier [ number_literal ]) ;) (declaration "byte *pbVar7;" type_identifier (pointer_declarator "*pbVar7" * identifier) ;) (expression_statement "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 "pbVar6 = dp + 4;" (assignment_expression "pbVar6 = dp + 4" identifier = (binary_expression "dp + 4" identifier + number_literal)) ;) (expression_statement "bVar3 = dp[2];" (assignment_expression "bVar3 = dp[2]" identifier = (subscript_expression "dp[2]" identifier [ number_literal ])) ;) (expression_statement "local_6c = dp[3] & 0x7f;" (assignment_expression "local_6c = dp[3] & 0x7f" identifier = (binary_expression "dp[3] & 0x7f" (subscript_expression "dp[3]" identifier [ number_literal ]) & number_literal)) ;) (if_statement "if ((char)dp[3] < '\0') {\n    bVar5 = 0;\n    pbVar7 = pbVar6;\n    do {\n      pbVar6 = pbVar7 + 1;\n      bVar4 = *pbVar7;\n      bVar5 = bVar5 + 7;\n      uVar8 = (bVar4 & 0x7f) << (bVar5 & 0x1f);\n      if ((bVar5 & 0x20) != 0) {\n        uVar8 = 0;\n      }\n      local_6c = uVar8 | local_6c;\n      pbVar7 = pbVar6;\n    } while ((char)bVar4 < '\0');\n  }" if (parenthesized_expression "((char)dp[3] < '\0')" ( (binary_expression "(char)dp[3] < '\0'" (cast_expression "(char)dp[3]" ( (type_descriptor "char" primitive_type) ) (subscript_expression "dp[3]" identifier [ number_literal ])) < (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    bVar5 = 0;\n    pbVar7 = pbVar6;\n    do {\n      pbVar6 = pbVar7 + 1;\n      bVar4 = *pbVar7;\n      bVar5 = bVar5 + 7;\n      uVar8 = (bVar4 & 0x7f) << (bVar5 & 0x1f);\n      if ((bVar5 & 0x20) != 0) {\n        uVar8 = 0;\n      }\n      local_6c = uVar8 | local_6c;\n      pbVar7 = pbVar6;\n    } while ((char)bVar4 < '\0');\n  }" { (expression_statement "bVar5 = 0;" (assignment_expression "bVar5 = 0" identifier = number_literal) ;) (expression_statement "pbVar7 = pbVar6;" (assignment_expression "pbVar7 = pbVar6" identifier = identifier) ;) (do_statement "do {\n      pbVar6 = pbVar7 + 1;\n      bVar4 = *pbVar7;\n      bVar5 = bVar5 + 7;\n      uVar8 = (bVar4 & 0x7f) << (bVar5 & 0x1f);\n      if ((bVar5 & 0x20) != 0) {\n        uVar8 = 0;\n      }\n      local_6c = uVar8 | local_6c;\n      pbVar7 = pbVar6;\n    } while ((char)bVar4 < '\0');" do (compound_statement "{\n      pbVar6 = pbVar7 + 1;\n      bVar4 = *pbVar7;\n      bVar5 = bVar5 + 7;\n      uVar8 = (bVar4 & 0x7f) << (bVar5 & 0x1f);\n      if ((bVar5 & 0x20) != 0) {\n        uVar8 = 0;\n      }\n      local_6c = uVar8 | local_6c;\n      pbVar7 = pbVar6;\n    }" { (expression_statement "pbVar6 = pbVar7 + 1;" (assignment_expression "pbVar6 = pbVar7 + 1" identifier = (binary_expression "pbVar7 + 1" identifier + number_literal)) ;) (expression_statement "bVar4 = *pbVar7;" (assignment_expression "bVar4 = *pbVar7" identifier = (pointer_expression "*pbVar7" * identifier)) ;) (expression_statement "bVar5 = bVar5 + 7;" (assignment_expression "bVar5 = bVar5 + 7" identifier = (binary_expression "bVar5 + 7" identifier + number_literal)) ;) (expression_statement "uVar8 = (bVar4 & 0x7f) << (bVar5 & 0x1f);" (assignment_expression "uVar8 = (bVar4 & 0x7f) << (bVar5 & 0x1f)" identifier = (binary_expression "(bVar4 & 0x7f) << (bVar5 & 0x1f)" (parenthesized_expression "(bVar4 & 0x7f)" ( (binary_expression "bVar4 & 0x7f" identifier & number_literal) )) << (parenthesized_expression "(bVar5 & 0x1f)" ( (binary_expression "bVar5 & 0x1f" identifier & number_literal) )))) ;) (if_statement "if ((bVar5 & 0x20) != 0) {\n        uVar8 = 0;\n      }" if (parenthesized_expression "((bVar5 & 0x20) != 0)" ( (binary_expression "(bVar5 & 0x20) != 0" (parenthesized_expression "(bVar5 & 0x20)" ( (binary_expression "bVar5 & 0x20" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n        uVar8 = 0;\n      }" { (expression_statement "uVar8 = 0;" (assignment_expression "uVar8 = 0" identifier = number_literal) ;) })) (expression_statement "local_6c = uVar8 | local_6c;" (assignment_expression "local_6c = uVar8 | local_6c" identifier = (binary_expression "uVar8 | local_6c" identifier | identifier)) ;) (expression_statement "pbVar7 = pbVar6;" (assignment_expression "pbVar7 = pbVar6" identifier = identifier) ;) }) while (parenthesized_expression "((char)bVar4 < '\0')" ( (binary_expression "(char)bVar4 < '\0'" (cast_expression "(char)bVar4" ( (type_descriptor "char" primitive_type) ) identifier) < (char_literal "'\0'" ' escape_sequence ')) )) ;) })) (if_statement "if ((-1 < (char)bVar2) && (bVar3 == 0)) {\n    unw_print_abreg(regname,bVar2 & 0x7f);\n    printf("\t%s:restore_p(qp=p%u,t=%lu,reg=%s)\n",&DAT_0008e715,bVar1 & 0x3f,local_6c,regname);\n    return pbVar6;\n  }" if (parenthesized_expression "((-1 < (char)bVar2) && (bVar3 == 0))" ( (binary_expression "(-1 < (char)bVar2) && (bVar3 == 0)" (parenthesized_expression "(-1 < (char)bVar2)" ( (binary_expression "-1 < (char)bVar2" number_literal < (cast_expression "(char)bVar2" ( (type_descriptor "char" primitive_type) ) identifier)) )) && (parenthesized_expression "(bVar3 == 0)" ( (binary_expression "bVar3 == 0" identifier == number_literal) ))) )) (compound_statement "{\n    unw_print_abreg(regname,bVar2 & 0x7f);\n    printf("\t%s:restore_p(qp=p%u,t=%lu,reg=%s)\n",&DAT_0008e715,bVar1 & 0x3f,local_6c,regname);\n    return pbVar6;\n  }" { (expression_statement "unw_print_abreg(regname,bVar2 & 0x7f);" (call_expression "unw_print_abreg(regname,bVar2 & 0x7f)" identifier (argument_list "(regname,bVar2 & 0x7f)" ( identifier , (binary_expression "bVar2 & 0x7f" identifier & number_literal) ))) ;) (expression_statement "printf("\t%s:restore_p(qp=p%u,t=%lu,reg=%s)\n",&DAT_0008e715,bVar1 & 0x3f,local_6c,regname);" (call_expression "printf("\t%s:restore_p(qp=p%u,t=%lu,reg=%s)\n",&DAT_0008e715,bVar1 & 0x3f,local_6c,regname)" identifier (argument_list "("\t%s:restore_p(qp=p%u,t=%lu,reg=%s)\n",&DAT_0008e715,bVar1 & 0x3f,local_6c,regname)" ( (string_literal ""\t%s:restore_p(qp=p%u,t=%lu,reg=%s)\n"" " escape_sequence string_content escape_sequence ") , (pointer_expression "&DAT_0008e715" & identifier) , (binary_expression "bVar1 & 0x3f" identifier & number_literal) , identifier , identifier ))) ;) (return_statement "return pbVar6;" return identifier ;) })) (expression_statement "unw_print_abreg(regname_1,bVar2 & 0x7f);" (call_expression "unw_print_abreg(regname_1,bVar2 & 0x7f)" identifier (argument_list "(regname_1,bVar2 & 0x7f)" ( identifier , (binary_expression "bVar2 & 0x7f" identifier & number_literal) ))) ;) (expression_statement "unw_print_xyreg(regname,(uint)(bVar2 >> 7),(uint)bVar3);" (call_expression "unw_print_xyreg(regname,(uint)(bVar2 >> 7),(uint)bVar3)" identifier (argument_list "(regname,(uint)(bVar2 >> 7),(uint)bVar3)" ( identifier , (call_expression "(uint)(bVar2 >> 7)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(bVar2 >> 7)" ( (binary_expression "bVar2 >> 7" identifier >> number_literal) ))) , (cast_expression "(uint)bVar3" ( (type_descriptor "uint" type_identifier) ) identifier) ))) ;) (expression_statement "printf("\t%s:spill_reg_p(qp=p%u,t=%lu,reg=%s,treg=%s)\n",&DAT_0008e715,bVar1 & 0x3f,local_6c,\n         regname_1,regname);" (call_expression "printf("\t%s:spill_reg_p(qp=p%u,t=%lu,reg=%s,treg=%s)\n",&DAT_0008e715,bVar1 & 0x3f,local_6c,\n         regname_1,regname)" identifier (argument_list "("\t%s:spill_reg_p(qp=p%u,t=%lu,reg=%s,treg=%s)\n",&DAT_0008e715,bVar1 & 0x3f,local_6c,\n         regname_1,regname)" ( (string_literal ""\t%s:spill_reg_p(qp=p%u,t=%lu,reg=%s,treg=%s)\n"" " escape_sequence string_content escape_sequence ") , (pointer_expression "&DAT_0008e715" & identifier) , (binary_expression "bVar1 & 0x3f" identifier & number_literal) , identifier , identifier , identifier ))) ;) (return_statement "return pbVar6;" return identifier ;) }))
(translation_unit "byte * __regparm3 FUN_0004bcd0(byte *param_1)\n\n{\n  byte bVar1;\n  byte bVar2;\n  uint uVar3;\n  uint uVar4;\n  byte bVar5;\n  byte *pbVar6;\n  uint uVar8;\n  uint uVar9;\n  undefined1 *puVar10;\n  uint uVar11;\n  undefined1 local_44 [20];\n  undefined1 local_30 [32];\n  byte *pbVar7;\n  \n  bVar1 = *param_1;\n  uVar11 = 0;\n  pbVar6 = param_1 + 4;\n  uVar3 = param_1[3] & 0x7f;\n  if ((char)param_1[3] < '\0') {\n    bVar5 = 0;\n    pbVar7 = pbVar6;\n    do {\n      pbVar6 = pbVar7 + 1;\n      bVar2 = *pbVar7;\n      bVar5 = bVar5 + 7;\n      uVar4 = bVar2 & 0x7f;\n      uVar8 = uVar4 << (bVar5 & 0x1f);\n      uVar9 = uVar8;\n      uVar4 = 0 << (bVar5 & 0x1f) | uVar4 >> 0x20 - (bVar5 & 0x1f);\n      if ((bVar5 & 0x20) != 0) {\n        uVar9 = 0;\n        uVar4 = uVar8;\n      }\n      uVar11 = uVar4 | uVar11;\n      uVar3 = uVar9 | uVar3;\n      pbVar7 = pbVar6;\n    } while ((char)bVar2 < '\0');\n  }\n  if ((-1 < (char)param_1[1]) && (param_1[2] == 0)) {\n    FUN_0004b2e0(uVar3,uVar11);\n    printf("\t%s:restore_p(qp=p%u,t=%lu,reg=%s)\n",&DAT_0008e715,bVar1 & 0x3f,uVar3,local_30);\n    return pbVar6;\n  }\n  puVar10 = local_44;\n  FUN_0004b2e0(puVar10,uVar11);\n  FUN_0004bb00();\n  printf("\t%s:spill_reg_p(qp=p%u,t=%lu,reg=%s,treg=%s)\n",&DAT_0008e715,bVar1 & 0x3f,uVar3,puVar10,\n         local_30);\n  return pbVar6;\n}\n\n" (ERROR "byte * __regparm3 FUN_0004bcd0(byte *param_1)" (binary_expression "byte * __regparm3 FUN_0004bcd0(byte *param_1)" identifier * (ERROR "__regparm3" identifier) (call_expression "FUN_0004bcd0(byte *param_1)" identifier (argument_list "(byte *param_1)" ( (binary_expression "byte *param_1" identifier * identifier) ))))) (compound_statement "{\n  byte bVar1;\n  byte bVar2;\n  uint uVar3;\n  uint uVar4;\n  byte bVar5;\n  byte *pbVar6;\n  uint uVar8;\n  uint uVar9;\n  undefined1 *puVar10;\n  uint uVar11;\n  undefined1 local_44 [20];\n  undefined1 local_30 [32];\n  byte *pbVar7;\n  \n  bVar1 = *param_1;\n  uVar11 = 0;\n  pbVar6 = param_1 + 4;\n  uVar3 = param_1[3] & 0x7f;\n  if ((char)param_1[3] < '\0') {\n    bVar5 = 0;\n    pbVar7 = pbVar6;\n    do {\n      pbVar6 = pbVar7 + 1;\n      bVar2 = *pbVar7;\n      bVar5 = bVar5 + 7;\n      uVar4 = bVar2 & 0x7f;\n      uVar8 = uVar4 << (bVar5 & 0x1f);\n      uVar9 = uVar8;\n      uVar4 = 0 << (bVar5 & 0x1f) | uVar4 >> 0x20 - (bVar5 & 0x1f);\n      if ((bVar5 & 0x20) != 0) {\n        uVar9 = 0;\n        uVar4 = uVar8;\n      }\n      uVar11 = uVar4 | uVar11;\n      uVar3 = uVar9 | uVar3;\n      pbVar7 = pbVar6;\n    } while ((char)bVar2 < '\0');\n  }\n  if ((-1 < (char)param_1[1]) && (param_1[2] == 0)) {\n    FUN_0004b2e0(uVar3,uVar11);\n    printf("\t%s:restore_p(qp=p%u,t=%lu,reg=%s)\n",&DAT_0008e715,bVar1 & 0x3f,uVar3,local_30);\n    return pbVar6;\n  }\n  puVar10 = local_44;\n  FUN_0004b2e0(puVar10,uVar11);\n  FUN_0004bb00();\n  printf("\t%s:spill_reg_p(qp=p%u,t=%lu,reg=%s,treg=%s)\n",&DAT_0008e715,bVar1 & 0x3f,uVar3,puVar10,\n         local_30);\n  return pbVar6;\n}" { (declaration "byte bVar1;" type_identifier identifier ;) (declaration "byte bVar2;" type_identifier identifier ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "uint uVar4;" type_identifier identifier ;) (declaration "byte bVar5;" type_identifier identifier ;) (declaration "byte *pbVar6;" type_identifier (pointer_declarator "*pbVar6" * identifier) ;) (declaration "uint uVar8;" type_identifier identifier ;) (declaration "uint uVar9;" type_identifier identifier ;) (declaration "undefined1 *puVar10;" type_identifier (pointer_declarator "*puVar10" * identifier) ;) (declaration "uint uVar11;" type_identifier identifier ;) (declaration "undefined1 local_44 [20];" type_identifier (array_declarator "local_44 [20]" identifier [ number_literal ]) ;) (declaration "undefined1 local_30 [32];" type_identifier (array_declarator "local_30 [32]" identifier [ number_literal ]) ;) (declaration "byte *pbVar7;" type_identifier (pointer_declarator "*pbVar7" * identifier) ;) (expression_statement "bVar1 = *param_1;" (assignment_expression "bVar1 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (expression_statement "uVar11 = 0;" (assignment_expression "uVar11 = 0" identifier = number_literal) ;) (expression_statement "pbVar6 = param_1 + 4;" (assignment_expression "pbVar6 = param_1 + 4" identifier = (binary_expression "param_1 + 4" identifier + number_literal)) ;) (expression_statement "uVar3 = param_1[3] & 0x7f;" (assignment_expression "uVar3 = param_1[3] & 0x7f" identifier = (binary_expression "param_1[3] & 0x7f" (subscript_expression "param_1[3]" identifier [ number_literal ]) & number_literal)) ;) (if_statement "if ((char)param_1[3] < '\0') {\n    bVar5 = 0;\n    pbVar7 = pbVar6;\n    do {\n      pbVar6 = pbVar7 + 1;\n      bVar2 = *pbVar7;\n      bVar5 = bVar5 + 7;\n      uVar4 = bVar2 & 0x7f;\n      uVar8 = uVar4 << (bVar5 & 0x1f);\n      uVar9 = uVar8;\n      uVar4 = 0 << (bVar5 & 0x1f) | uVar4 >> 0x20 - (bVar5 & 0x1f);\n      if ((bVar5 & 0x20) != 0) {\n        uVar9 = 0;\n        uVar4 = uVar8;\n      }\n      uVar11 = uVar4 | uVar11;\n      uVar3 = uVar9 | uVar3;\n      pbVar7 = pbVar6;\n    } while ((char)bVar2 < '\0');\n  }" if (parenthesized_expression "((char)param_1[3] < '\0')" ( (binary_expression "(char)param_1[3] < '\0'" (cast_expression "(char)param_1[3]" ( (type_descriptor "char" primitive_type) ) (subscript_expression "param_1[3]" identifier [ number_literal ])) < (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    bVar5 = 0;\n    pbVar7 = pbVar6;\n    do {\n      pbVar6 = pbVar7 + 1;\n      bVar2 = *pbVar7;\n      bVar5 = bVar5 + 7;\n      uVar4 = bVar2 & 0x7f;\n      uVar8 = uVar4 << (bVar5 & 0x1f);\n      uVar9 = uVar8;\n      uVar4 = 0 << (bVar5 & 0x1f) | uVar4 >> 0x20 - (bVar5 & 0x1f);\n      if ((bVar5 & 0x20) != 0) {\n        uVar9 = 0;\n        uVar4 = uVar8;\n      }\n      uVar11 = uVar4 | uVar11;\n      uVar3 = uVar9 | uVar3;\n      pbVar7 = pbVar6;\n    } while ((char)bVar2 < '\0');\n  }" { (expression_statement "bVar5 = 0;" (assignment_expression "bVar5 = 0" identifier = number_literal) ;) (expression_statement "pbVar7 = pbVar6;" (assignment_expression "pbVar7 = pbVar6" identifier = identifier) ;) (do_statement "do {\n      pbVar6 = pbVar7 + 1;\n      bVar2 = *pbVar7;\n      bVar5 = bVar5 + 7;\n      uVar4 = bVar2 & 0x7f;\n      uVar8 = uVar4 << (bVar5 & 0x1f);\n      uVar9 = uVar8;\n      uVar4 = 0 << (bVar5 & 0x1f) | uVar4 >> 0x20 - (bVar5 & 0x1f);\n      if ((bVar5 & 0x20) != 0) {\n        uVar9 = 0;\n        uVar4 = uVar8;\n      }\n      uVar11 = uVar4 | uVar11;\n      uVar3 = uVar9 | uVar3;\n      pbVar7 = pbVar6;\n    } while ((char)bVar2 < '\0');" do (compound_statement "{\n      pbVar6 = pbVar7 + 1;\n      bVar2 = *pbVar7;\n      bVar5 = bVar5 + 7;\n      uVar4 = bVar2 & 0x7f;\n      uVar8 = uVar4 << (bVar5 & 0x1f);\n      uVar9 = uVar8;\n      uVar4 = 0 << (bVar5 & 0x1f) | uVar4 >> 0x20 - (bVar5 & 0x1f);\n      if ((bVar5 & 0x20) != 0) {\n        uVar9 = 0;\n        uVar4 = uVar8;\n      }\n      uVar11 = uVar4 | uVar11;\n      uVar3 = uVar9 | uVar3;\n      pbVar7 = pbVar6;\n    }" { (expression_statement "pbVar6 = pbVar7 + 1;" (assignment_expression "pbVar6 = pbVar7 + 1" identifier = (binary_expression "pbVar7 + 1" identifier + number_literal)) ;) (expression_statement "bVar2 = *pbVar7;" (assignment_expression "bVar2 = *pbVar7" identifier = (pointer_expression "*pbVar7" * identifier)) ;) (expression_statement "bVar5 = bVar5 + 7;" (assignment_expression "bVar5 = bVar5 + 7" identifier = (binary_expression "bVar5 + 7" identifier + number_literal)) ;) (expression_statement "uVar4 = bVar2 & 0x7f;" (assignment_expression "uVar4 = bVar2 & 0x7f" identifier = (binary_expression "bVar2 & 0x7f" identifier & number_literal)) ;) (expression_statement "uVar8 = uVar4 << (bVar5 & 0x1f);" (assignment_expression "uVar8 = uVar4 << (bVar5 & 0x1f)" identifier = (binary_expression "uVar4 << (bVar5 & 0x1f)" identifier << (parenthesized_expression "(bVar5 & 0x1f)" ( (binary_expression "bVar5 & 0x1f" identifier & number_literal) )))) ;) (expression_statement "uVar9 = uVar8;" (assignment_expression "uVar9 = uVar8" identifier = identifier) ;) (expression_statement "uVar4 = 0 << (bVar5 & 0x1f) | uVar4 >> 0x20 - (bVar5 & 0x1f);" (assignment_expression "uVar4 = 0 << (bVar5 & 0x1f) | uVar4 >> 0x20 - (bVar5 & 0x1f)" identifier = (binary_expression "0 << (bVar5 & 0x1f) | uVar4 >> 0x20 - (bVar5 & 0x1f)" (binary_expression "0 << (bVar5 & 0x1f)" number_literal << (parenthesized_expression "(bVar5 & 0x1f)" ( (binary_expression "bVar5 & 0x1f" identifier & number_literal) ))) | (binary_expression "uVar4 >> 0x20 - (bVar5 & 0x1f)" identifier >> (binary_expression "0x20 - (bVar5 & 0x1f)" number_literal - (parenthesized_expression "(bVar5 & 0x1f)" ( (binary_expression "bVar5 & 0x1f" identifier & number_literal) )))))) ;) (if_statement "if ((bVar5 & 0x20) != 0) {\n        uVar9 = 0;\n        uVar4 = uVar8;\n      }" if (parenthesized_expression "((bVar5 & 0x20) != 0)" ( (binary_expression "(bVar5 & 0x20) != 0" (parenthesized_expression "(bVar5 & 0x20)" ( (binary_expression "bVar5 & 0x20" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n        uVar9 = 0;\n        uVar4 = uVar8;\n      }" { (expression_statement "uVar9 = 0;" (assignment_expression "uVar9 = 0" identifier = number_literal) ;) (expression_statement "uVar4 = uVar8;" (assignment_expression "uVar4 = uVar8" identifier = identifier) ;) })) (expression_statement "uVar11 = uVar4 | uVar11;" (assignment_expression "uVar11 = uVar4 | uVar11" identifier = (binary_expression "uVar4 | uVar11" identifier | identifier)) ;) (expression_statement "uVar3 = uVar9 | uVar3;" (assignment_expression "uVar3 = uVar9 | uVar3" identifier = (binary_expression "uVar9 | uVar3" identifier | identifier)) ;) (expression_statement "pbVar7 = pbVar6;" (assignment_expression "pbVar7 = pbVar6" identifier = identifier) ;) }) 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 ')) )) ;) })) (if_statement "if ((-1 < (char)param_1[1]) && (param_1[2] == 0)) {\n    FUN_0004b2e0(uVar3,uVar11);\n    printf("\t%s:restore_p(qp=p%u,t=%lu,reg=%s)\n",&DAT_0008e715,bVar1 & 0x3f,uVar3,local_30);\n    return pbVar6;\n  }" if (parenthesized_expression "((-1 < (char)param_1[1]) && (param_1[2] == 0))" ( (binary_expression "(-1 < (char)param_1[1]) && (param_1[2] == 0)" (parenthesized_expression "(-1 < (char)param_1[1])" ( (binary_expression "-1 < (char)param_1[1]" number_literal < (cast_expression "(char)param_1[1]" ( (type_descriptor "char" primitive_type) ) (subscript_expression "param_1[1]" identifier [ number_literal ]))) )) && (parenthesized_expression "(param_1[2] == 0)" ( (binary_expression "param_1[2] == 0" (subscript_expression "param_1[2]" identifier [ number_literal ]) == number_literal) ))) )) (compound_statement "{\n    FUN_0004b2e0(uVar3,uVar11);\n    printf("\t%s:restore_p(qp=p%u,t=%lu,reg=%s)\n",&DAT_0008e715,bVar1 & 0x3f,uVar3,local_30);\n    return pbVar6;\n  }" { (expression_statement "FUN_0004b2e0(uVar3,uVar11);" (call_expression "FUN_0004b2e0(uVar3,uVar11)" identifier (argument_list "(uVar3,uVar11)" ( identifier , identifier ))) ;) (expression_statement "printf("\t%s:restore_p(qp=p%u,t=%lu,reg=%s)\n",&DAT_0008e715,bVar1 & 0x3f,uVar3,local_30);" (call_expression "printf("\t%s:restore_p(qp=p%u,t=%lu,reg=%s)\n",&DAT_0008e715,bVar1 & 0x3f,uVar3,local_30)" identifier (argument_list "("\t%s:restore_p(qp=p%u,t=%lu,reg=%s)\n",&DAT_0008e715,bVar1 & 0x3f,uVar3,local_30)" ( (string_literal ""\t%s:restore_p(qp=p%u,t=%lu,reg=%s)\n"" " escape_sequence string_content escape_sequence ") , (pointer_expression "&DAT_0008e715" & identifier) , (binary_expression "bVar1 & 0x3f" identifier & number_literal) , identifier , identifier ))) ;) (return_statement "return pbVar6;" return identifier ;) })) (expression_statement "puVar10 = local_44;" (assignment_expression "puVar10 = local_44" identifier = identifier) ;) (expression_statement "FUN_0004b2e0(puVar10,uVar11);" (call_expression "FUN_0004b2e0(puVar10,uVar11)" identifier (argument_list "(puVar10,uVar11)" ( identifier , identifier ))) ;) (expression_statement "FUN_0004bb00();" (call_expression "FUN_0004bb00()" identifier (argument_list "()" ( ))) ;) (expression_statement "printf("\t%s:spill_reg_p(qp=p%u,t=%lu,reg=%s,treg=%s)\n",&DAT_0008e715,bVar1 & 0x3f,uVar3,puVar10,\n         local_30);" (call_expression "printf("\t%s:spill_reg_p(qp=p%u,t=%lu,reg=%s,treg=%s)\n",&DAT_0008e715,bVar1 & 0x3f,uVar3,puVar10,\n         local_30)" identifier (argument_list "("\t%s:spill_reg_p(qp=p%u,t=%lu,reg=%s,treg=%s)\n",&DAT_0008e715,bVar1 & 0x3f,uVar3,puVar10,\n         local_30)" ( (string_literal ""\t%s:spill_reg_p(qp=p%u,t=%lu,reg=%s,treg=%s)\n"" " escape_sequence string_content escape_sequence ") , (pointer_expression "&DAT_0008e715" & identifier) , (binary_expression "bVar1 & 0x3f" identifier & number_literal) , identifier , identifier , identifier ))) ;) (return_statement "return pbVar6;" return identifier ;) }))
(translation_unit (ERROR (binary_expression IDENT * (ERROR IDENT) (call_expression IDENT (argument_list ( (binary_expression IDENT * IDENT) ))))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (binary_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 IDENT & LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT << (parenthesized_expression ( (binary_expression IDENT & LIT) )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression LIT << (parenthesized_expression ( (binary_expression IDENT & LIT) ))) | (binary_expression IDENT >> (binary_expression 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 = IDENT) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT | IDENT)) ;) (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) ) (subscript_expression IDENT [ LIT ]))) )) && (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == LIT) ))) )) (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) , (binary_expression IDENT & LIT) , IDENT , IDENT ))) ;) (return_statement return IDENT ;) })) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT ))) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (call_expression IDENT (argument_list ( (string_literal " escape_sequence string_content escape_sequence ") , (pointer_expression & IDENT) , (binary_expression IDENT & LIT) , IDENT , IDENT , IDENT ))) ;) (return_statement return IDENT ;) }))
(ERROR "byte * __regparm3 FUN_0004bcd0(byte *param_1)" (binary_expression "byte * __regparm3 FUN_0004bcd0(byte *param_1)" (identifier "byte") (* "*") (ERROR "__regparm3" (identifier "__regparm3")) (call_expression "FUN_0004bcd0(byte *param_1)" (identifier "FUN_0004bcd0") (argument_list "(byte *param_1)" (( "(") (binary_expression "byte *param_1" (identifier "byte") (* "*") (identifier "param_1")) () ")"))))) (compound_statement "{\n  byte bVar1;\n  byte bVar2;\n  uint uVar3;\n  uint uVar4;\n  byte bVar5;\n  byte *pbVar6;\n  uint uVar8;\n  uint uVar9;\n  undefined1 *puVar10;\n  uint uVar11;\n  undefined1 local_44 [20];\n  undefined1 local_30 [32];\n  byte *pbVar7;\n  \n  bVar1 = *param_1;\n  uVar11 = 0;\n  pbVar6 = param_1 + 4;\n  uVar3 = param_1[3] & 0x7f;\n  if ((char)param_1[3] < '\0') {\n    bVar5 = 0;\n    pbVar7 = pbVar6;\n    do {\n      pbVar6 = pbVar7 + 1;\n      bVar2 = *pbVar7;\n      bVar5 = bVar5 + 7;\n      uVar4 = bVar2 & 0x7f;\n      uVar8 = uVar4 << (bVar5 & 0x1f);\n      uVar9 = uVar8;\n      uVar4 = 0 << (bVar5 & 0x1f) | uVar4 >> 0x20 - (bVar5 & 0x1f);\n      if ((bVar5 & 0x20) != 0) {\n        uVar9 = 0;\n        uVar4 = uVar8;\n      }\n      uVar11 = uVar4 | uVar11;\n      uVar3 = uVar9 | uVar3;\n      pbVar7 = pbVar6;\n    } while ((char)bVar2 < '\0');\n  }\n  if ((-1 < (char)param_1[1]) && (param_1[2] == 0)) {\n    FUN_0004b2e0(uVar3,uVar11);\n    printf("\t%s:restore_p(qp=p%u,t=%lu,reg=%s)\n",&DAT_0008e715,bVar1 & 0x3f,uVar3,local_30);\n    return pbVar6;\n  }\n  puVar10 = local_44;\n  FUN_0004b2e0(puVar10,uVar11);\n  FUN_0004bb00();\n  printf("\t%s:spill_reg_p(qp=p%u,t=%lu,reg=%s,treg=%s)\n",&DAT_0008e715,bVar1 & 0x3f,uVar3,puVar10,\n         local_30);\n  return pbVar6;\n}" ({ "{") (declaration "byte bVar1;" (type_identifier "byte") (identifier "bVar1") (; ";")) (declaration "byte bVar2;" (type_identifier "byte") (identifier "bVar2") (; ";")) (declaration "uint uVar3;" (type_identifier "uint") (identifier "uVar3") (; ";")) (declaration "uint uVar4;" (type_identifier "uint") (identifier "uVar4") (; ";")) (declaration "byte bVar5;" (type_identifier "byte") (identifier "bVar5") (; ";")) (declaration "byte *pbVar6;" (type_identifier "byte") (pointer_declarator "*pbVar6" (* "*") (identifier "pbVar6")) (; ";")) (declaration "uint uVar8;" (type_identifier "uint") (identifier "uVar8") (; ";")) (declaration "uint uVar9;" (type_identifier "uint") (identifier "uVar9") (; ";")) (declaration "undefined1 *puVar10;" (type_identifier "undefined1") (pointer_declarator "*puVar10" (* "*") (identifier "puVar10")) (; ";")) (declaration "uint uVar11;" (type_identifier "uint") (identifier "uVar11") (; ";")) (declaration "undefined1 local_44 [20];" (type_identifier "undefined1") (array_declarator "local_44 [20]" (identifier "local_44") ([ "[") (number_literal "20") (] "]")) (; ";")) (declaration "undefined1 local_30 [32];" (type_identifier "undefined1") (array_declarator "local_30 [32]" (identifier "local_30") ([ "[") (number_literal "32") (] "]")) (; ";")) (declaration "byte *pbVar7;" (type_identifier "byte") (pointer_declarator "*pbVar7" (* "*") (identifier "pbVar7")) (; ";")) (expression_statement "bVar1 = *param_1;" (assignment_expression "bVar1 = *param_1" (identifier "bVar1") (= "=") (pointer_expression "*param_1" (* "*") (identifier "param_1"))) (; ";")) (expression_statement "uVar11 = 0;" (assignment_expression "uVar11 = 0" (identifier "uVar11") (= "=") (number_literal "0")) (; ";")) (expression_statement "pbVar6 = param_1 + 4;" (assignment_expression "pbVar6 = param_1 + 4" (identifier "pbVar6") (= "=") (binary_expression "param_1 + 4" (identifier "param_1") (+ "+") (number_literal "4"))) (; ";")) (expression_statement "uVar3 = param_1[3] & 0x7f;" (assignment_expression "uVar3 = param_1[3] & 0x7f" (identifier "uVar3") (= "=") (binary_expression "param_1[3] & 0x7f" (subscript_expression "param_1[3]" (identifier "param_1") ([ "[") (number_literal "3") (] "]")) (& "&") (number_literal "0x7f"))) (; ";")) (if_statement "if ((char)param_1[3] < '\0') {\n    bVar5 = 0;\n    pbVar7 = pbVar6;\n    do {\n      pbVar6 = pbVar7 + 1;\n      bVar2 = *pbVar7;\n      bVar5 = bVar5 + 7;\n      uVar4 = bVar2 & 0x7f;\n      uVar8 = uVar4 << (bVar5 & 0x1f);\n      uVar9 = uVar8;\n      uVar4 = 0 << (bVar5 & 0x1f) | uVar4 >> 0x20 - (bVar5 & 0x1f);\n      if ((bVar5 & 0x20) != 0) {\n        uVar9 = 0;\n        uVar4 = uVar8;\n      }\n      uVar11 = uVar4 | uVar11;\n      uVar3 = uVar9 | uVar3;\n      pbVar7 = pbVar6;\n    } while ((char)bVar2 < '\0');\n  }" (if "if") (parenthesized_expression "((char)param_1[3] < '\0')" (( "(") (binary_expression "(char)param_1[3] < '\0'" (cast_expression "(char)param_1[3]" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (subscript_expression "param_1[3]" (identifier "param_1") ([ "[") (number_literal "3") (] "]"))) (< "<") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n    bVar5 = 0;\n    pbVar7 = pbVar6;\n    do {\n      pbVar6 = pbVar7 + 1;\n      bVar2 = *pbVar7;\n      bVar5 = bVar5 + 7;\n      uVar4 = bVar2 & 0x7f;\n      uVar8 = uVar4 << (bVar5 & 0x1f);\n      uVar9 = uVar8;\n      uVar4 = 0 << (bVar5 & 0x1f) | uVar4 >> 0x20 - (bVar5 & 0x1f);\n      if ((bVar5 & 0x20) != 0) {\n        uVar9 = 0;\n        uVar4 = uVar8;\n      }\n      uVar11 = uVar4 | uVar11;\n      uVar3 = uVar9 | uVar3;\n      pbVar7 = pbVar6;\n    } while ((char)bVar2 < '\0');\n  }" ({ "{") (expression_statement "bVar5 = 0;" (assignment_expression "bVar5 = 0" (identifier "bVar5") (= "=") (number_literal "0")) (; ";")) (expression_statement "pbVar7 = pbVar6;" (assignment_expression "pbVar7 = pbVar6" (identifier "pbVar7") (= "=") (identifier "pbVar6")) (; ";")) (do_statement "do {\n      pbVar6 = pbVar7 + 1;\n      bVar2 = *pbVar7;\n      bVar5 = bVar5 + 7;\n      uVar4 = bVar2 & 0x7f;\n      uVar8 = uVar4 << (bVar5 & 0x1f);\n      uVar9 = uVar8;\n      uVar4 = 0 << (bVar5 & 0x1f) | uVar4 >> 0x20 - (bVar5 & 0x1f);\n      if ((bVar5 & 0x20) != 0) {\n        uVar9 = 0;\n        uVar4 = uVar8;\n      }\n      uVar11 = uVar4 | uVar11;\n      uVar3 = uVar9 | uVar3;\n      pbVar7 = pbVar6;\n    } while ((char)bVar2 < '\0');" (do "do") (compound_statement "{\n      pbVar6 = pbVar7 + 1;\n      bVar2 = *pbVar7;\n      bVar5 = bVar5 + 7;\n      uVar4 = bVar2 & 0x7f;\n      uVar8 = uVar4 << (bVar5 & 0x1f);\n      uVar9 = uVar8;\n      uVar4 = 0 << (bVar5 & 0x1f) | uVar4 >> 0x20 - (bVar5 & 0x1f);\n      if ((bVar5 & 0x20) != 0) {\n        uVar9 = 0;\n        uVar4 = uVar8;\n      }\n      uVar11 = uVar4 | uVar11;\n      uVar3 = uVar9 | uVar3;\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 "bVar2 = *pbVar7;" (assignment_expression "bVar2 = *pbVar7" (identifier "bVar2") (= "=") (pointer_expression "*pbVar7" (* "*") (identifier "pbVar7"))) (; ";")) (expression_statement "bVar5 = bVar5 + 7;" (assignment_expression "bVar5 = bVar5 + 7" (identifier "bVar5") (= "=") (binary_expression "bVar5 + 7" (identifier "bVar5") (+ "+") (number_literal "7"))) (; ";")) (expression_statement "uVar4 = bVar2 & 0x7f;" (assignment_expression "uVar4 = bVar2 & 0x7f" (identifier "uVar4") (= "=") (binary_expression "bVar2 & 0x7f" (identifier "bVar2") (& "&") (number_literal "0x7f"))) (; ";")) (expression_statement "uVar8 = uVar4 << (bVar5 & 0x1f);" (assignment_expression "uVar8 = uVar4 << (bVar5 & 0x1f)" (identifier "uVar8") (= "=") (binary_expression "uVar4 << (bVar5 & 0x1f)" (identifier "uVar4") (<< "<<") (parenthesized_expression "(bVar5 & 0x1f)" (( "(") (binary_expression "bVar5 & 0x1f" (identifier "bVar5") (& "&") (number_literal "0x1f")) () ")")))) (; ";")) (expression_statement "uVar9 = uVar8;" (assignment_expression "uVar9 = uVar8" (identifier "uVar9") (= "=") (identifier "uVar8")) (; ";")) (expression_statement "uVar4 = 0 << (bVar5 & 0x1f) | uVar4 >> 0x20 - (bVar5 & 0x1f);" (assignment_expression "uVar4 = 0 << (bVar5 & 0x1f) | uVar4 >> 0x20 - (bVar5 & 0x1f)" (identifier "uVar4") (= "=") (binary_expression "0 << (bVar5 & 0x1f) | uVar4 >> 0x20 - (bVar5 & 0x1f)" (binary_expression "0 << (bVar5 & 0x1f)" (number_literal "0") (<< "<<") (parenthesized_expression "(bVar5 & 0x1f)" (( "(") (binary_expression "bVar5 & 0x1f" (identifier "bVar5") (& "&") (number_literal "0x1f")) () ")"))) (| "|") (binary_expression "uVar4 >> 0x20 - (bVar5 & 0x1f)" (identifier "uVar4") (>> ">>") (binary_expression "0x20 - (bVar5 & 0x1f)" (number_literal "0x20") (- "-") (parenthesized_expression "(bVar5 & 0x1f)" (( "(") (binary_expression "bVar5 & 0x1f" (identifier "bVar5") (& "&") (number_literal "0x1f")) () ")")))))) (; ";")) (if_statement "if ((bVar5 & 0x20) != 0) {\n        uVar9 = 0;\n        uVar4 = uVar8;\n      }" (if "if") (parenthesized_expression "((bVar5 & 0x20) != 0)" (( "(") (binary_expression "(bVar5 & 0x20) != 0" (parenthesized_expression "(bVar5 & 0x20)" (( "(") (binary_expression "bVar5 & 0x20" (identifier "bVar5") (& "&") (number_literal "0x20")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n        uVar9 = 0;\n        uVar4 = uVar8;\n      }" ({ "{") (expression_statement "uVar9 = 0;" (assignment_expression "uVar9 = 0" (identifier "uVar9") (= "=") (number_literal "0")) (; ";")) (expression_statement "uVar4 = uVar8;" (assignment_expression "uVar4 = uVar8" (identifier "uVar4") (= "=") (identifier "uVar8")) (; ";")) (} "}"))) (expression_statement "uVar11 = uVar4 | uVar11;" (assignment_expression "uVar11 = uVar4 | uVar11" (identifier "uVar11") (= "=") (binary_expression "uVar4 | uVar11" (identifier "uVar4") (| "|") (identifier "uVar11"))) (; ";")) (expression_statement "uVar3 = uVar9 | uVar3;" (assignment_expression "uVar3 = uVar9 | uVar3" (identifier "uVar3") (= "=") (binary_expression "uVar9 | uVar3" (identifier "uVar9") (| "|") (identifier "uVar3"))) (; ";")) (expression_statement "pbVar7 = pbVar6;" (assignment_expression "pbVar7 = pbVar6" (identifier "pbVar7") (= "=") (identifier "pbVar6")) (; ";")) (} "}")) (while "while") (parenthesized_expression "((char)bVar2 < '\0')" (( "(") (binary_expression "(char)bVar2 < '\0'" (cast_expression "(char)bVar2" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (identifier "bVar2")) (< "<") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (; ";")) (} "}"))) (if_statement "if ((-1 < (char)param_1[1]) && (param_1[2] == 0)) {\n    FUN_0004b2e0(uVar3,uVar11);\n    printf("\t%s:restore_p(qp=p%u,t=%lu,reg=%s)\n",&DAT_0008e715,bVar1 & 0x3f,uVar3,local_30);\n    return pbVar6;\n  }" (if "if") (parenthesized_expression "((-1 < (char)param_1[1]) && (param_1[2] == 0))" (( "(") (binary_expression "(-1 < (char)param_1[1]) && (param_1[2] == 0)" (parenthesized_expression "(-1 < (char)param_1[1])" (( "(") (binary_expression "-1 < (char)param_1[1]" (number_literal "-1") (< "<") (cast_expression "(char)param_1[1]" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]")))) () ")")) (&& "&&") (parenthesized_expression "(param_1[2] == 0)" (( "(") (binary_expression "param_1[2] == 0" (subscript_expression "param_1[2]" (identifier "param_1") ([ "[") (number_literal "2") (] "]")) (== "==") (number_literal "0")) () ")"))) () ")")) (compound_statement "{\n    FUN_0004b2e0(uVar3,uVar11);\n    printf("\t%s:restore_p(qp=p%u,t=%lu,reg=%s)\n",&DAT_0008e715,bVar1 & 0x3f,uVar3,local_30);\n    return pbVar6;\n  }" ({ "{") (expression_statement "FUN_0004b2e0(uVar3,uVar11);" (call_expression "FUN_0004b2e0(uVar3,uVar11)" (identifier "FUN_0004b2e0") (argument_list "(uVar3,uVar11)" (( "(") (identifier "uVar3") (, ",") (identifier "uVar11") () ")"))) (; ";")) (expression_statement "printf("\t%s:restore_p(qp=p%u,t=%lu,reg=%s)\n",&DAT_0008e715,bVar1 & 0x3f,uVar3,local_30);" (call_expression "printf("\t%s:restore_p(qp=p%u,t=%lu,reg=%s)\n",&DAT_0008e715,bVar1 & 0x3f,uVar3,local_30)" (identifier "printf") (argument_list "("\t%s:restore_p(qp=p%u,t=%lu,reg=%s)\n",&DAT_0008e715,bVar1 & 0x3f,uVar3,local_30)" (( "(") (string_literal ""\t%s:restore_p(qp=p%u,t=%lu,reg=%s)\n"" (" """) (escape_sequence "\t") (string_content "%s:restore_p(qp=p%u,t=%lu,reg=%s)") (escape_sequence "\n") (" """)) (, ",") (pointer_expression "&DAT_0008e715" (& "&") (identifier "DAT_0008e715")) (, ",") (binary_expression "bVar1 & 0x3f" (identifier "bVar1") (& "&") (number_literal "0x3f")) (, ",") (identifier "uVar3") (, ",") (identifier "local_30") () ")"))) (; ";")) (return_statement "return pbVar6;" (return "return") (identifier "pbVar6") (; ";")) (} "}"))) (expression_statement "puVar10 = local_44;" (assignment_expression "puVar10 = local_44" (identifier "puVar10") (= "=") (identifier "local_44")) (; ";")) (expression_statement "FUN_0004b2e0(puVar10,uVar11);" (call_expression "FUN_0004b2e0(puVar10,uVar11)" (identifier "FUN_0004b2e0") (argument_list "(puVar10,uVar11)" (( "(") (identifier "puVar10") (, ",") (identifier "uVar11") () ")"))) (; ";")) (expression_statement "FUN_0004bb00();" (call_expression "FUN_0004bb00()" (identifier "FUN_0004bb00") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "printf("\t%s:spill_reg_p(qp=p%u,t=%lu,reg=%s,treg=%s)\n",&DAT_0008e715,bVar1 & 0x3f,uVar3,puVar10,\n         local_30);" (call_expression "printf("\t%s:spill_reg_p(qp=p%u,t=%lu,reg=%s,treg=%s)\n",&DAT_0008e715,bVar1 & 0x3f,uVar3,puVar10,\n         local_30)" (identifier "printf") (argument_list "("\t%s:spill_reg_p(qp=p%u,t=%lu,reg=%s,treg=%s)\n",&DAT_0008e715,bVar1 & 0x3f,uVar3,puVar10,\n         local_30)" (( "(") (string_literal ""\t%s:spill_reg_p(qp=p%u,t=%lu,reg=%s,treg=%s)\n"" (" """) (escape_sequence "\t") (string_content "%s:spill_reg_p(qp=p%u,t=%lu,reg=%s,treg=%s)") (escape_sequence "\n") (" """)) (, ",") (pointer_expression "&DAT_0008e715" (& "&") (identifier "DAT_0008e715")) (, ",") (binary_expression "bVar1 & 0x3f" (identifier "bVar1") (& "&") (number_literal "0x3f")) (, ",") (identifier "uVar3") (, ",") (identifier "puVar10") (, ",") (identifier "local_30") () ")"))) (; ";")) (return_statement "return pbVar6;" (return "return") (identifier "pbVar6") (; ";")) (} "}"))

/* WARNING: Function: __x86.get_pc_thunk.si replaced with injection: get_pc_thunk_si */

uchar * __regparm3 unw_decode_x4(uchar *var_1,type_2 code,void *arg)

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


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

/* WARNING: Function: __i686.get_pc_thunk.si replaced with injection: get_pc_thunk_si */

byte * __regparm3 MASKED(byte *param_1)

{
  byte bVar1;
  byte bVar2;
  uint uVar3;
  uint uVar4;
  byte bVar5;
  byte *pbVar6;
  uint uVar8;
  uint uVar9;
  undefined1 *puVar10;
  uint uVar11;
  undefined1 local_44 [20];
  undefined1 local_30 [32];
  byte *pbVar7;
  
  bVar1 = *param_1;
  uVar11 = 0;
  pbVar6 = param_1 + 4;
  uVar3 = param_1[3] & 0x7f;
  if ((char)param_1[3] < '\0') {
    bVar5 = 0;
    pbVar7 = pbVar6;
    do {
      pbVar6 = pbVar7 + 1;
      bVar2 = *pbVar7;
      bVar5 = bVar5 + 7;
      uVar4 = bVar2 & 0x7f;
      uVar8 = uVar4 << (bVar5 & 0x1f);
      uVar9 = uVar8;
      uVar4 = 0 << (bVar5 & 0x1f) | uVar4 >> 0x20 - (bVar5 & 0x1f);
      if ((bVar5 & 0x20) != 0) {
        uVar9 = 0;
        uVar4 = uVar8;
      }
      uVar11 = uVar4 | uVar11;
      uVar3 = uVar9 | uVar3;
      pbVar7 = pbVar6;
    } while ((char)bVar2 < '\0');
  }
  if ((-1 < (char)param_1[1]) && (param_1[2] == 0)) {
    FUN_0004b2e0(uVar3,uVar11);
    printf("\t%s:restore_p(qp=p%u,t=%lu,reg=%s)\n",&DAT_0008e715,bVar1 & 0x3f,uVar3,local_30);
    return pbVar6;
  }
  puVar10 = local_44;
  FUN_0004b2e0(puVar10,uVar11);
  FUN_0004bb00();
  printf("\t%s:spill_reg_p(qp=p%u,t=%lu,reg=%s,treg=%s)\n",&DAT_0008e715,bVar1 & 0x3f,uVar3,puVar10,
         local_30);
  return pbVar6;
}

