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

int vdbeRecordCompareInt(int nKey1,void *pKey1,UnpackedRecord *pPKey2)

{
  uint uVar1;
  int iVar2;
  int iVar3;
  char *pcVar4;
  char *pcVar5;
  uint *puVar6;
  uint uVar7;
  
  iVar2 = nKey1;
                    /* WARNING: Load size is inaccurate */
  puVar6 = (uint *)((*pKey1 & 0x3f) + (int)pKey1);
  switch(*(undefined1 *)((int)pKey1 + 1)) {
  default:
    nKey1 = 0;
    goto LAB_000712a8;
  case 1:
    pcVar5 = (char *)(int)(char)*puVar6;
    uVar7 = (int)pcVar5 >> 0x1f;
    break;
  case 2:
    pcVar5 = (char *)(int)CONCAT11((char)*puVar6,*(char *)((int)puVar6 + 1));
    uVar7 = (int)pcVar5 >> 0x1f;
    break;
  case 3:
    pcVar5 = (char *)(int)CONCAT12((char)*puVar6,
                                   *(ushort *)((int)puVar6 + 1) << 8 |
                                   *(ushort *)((int)puVar6 + 1) >> 8);
    uVar7 = (int)pcVar5 >> 0x1f;
    break;
  case 4:
    uVar7 = *puVar6;
    pcVar5 = (char *)(uVar7 >> 0x18 | (uVar7 & 0xff0000) >> 8 | (uVar7 & 0xff00) << 8 |
                     uVar7 << 0x18);
    uVar7 = (int)pcVar5 >> 0x1f;
    break;
  case 5:
    uVar7 = *(uint *)((int)puVar6 + 2);
    pcVar5 = (char *)(uVar7 >> 0x18 | (uVar7 & 0xff0000) >> 8 | (uVar7 & 0xff00) << 8 |
                     uVar7 << 0x18);
    uVar7 = (uint)CONCAT11((char)*puVar6,*(char *)((int)puVar6 + 1));
    break;
  case 6:
    uVar7 = *puVar6;
    uVar1 = puVar6[1];
    uVar7 = uVar7 >> 0x18 | (uVar7 & 0xff0000) >> 8 | (uVar7 & 0xff00) << 8 | uVar7 << 0x18;
    pcVar5 = (char *)(uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8 | (uVar1 & 0xff00) << 8 |
                     uVar1 << 0x18);
    break;
  case 8:
    uVar7 = 0;
    pcVar5 = (char *)0x0;
    break;
  case 9:
    uVar7 = 0;
    pcVar4 = (pPKey2->aMem->u).zPType;
    iVar3 = *(int *)((int)&pPKey2->aMem->u + 4);
    if (-iVar3 < (int)(uint)((char *)0x1 < pcVar4)) goto LAB_000712dc;
    pcVar5 = (char *)0x1;
    goto LAB_00071360;
  }
  pcVar4 = (pPKey2->aMem->u).zPType;
  iVar3 = *(int *)((int)&pPKey2->aMem->u + 4);
  if ((SBORROW4(uVar7,iVar3) != SBORROW4(uVar7 - iVar3,(uint)(pcVar5 < pcVar4))) !=
      (int)((uVar7 - iVar3) - (uint)(pcVar5 < pcVar4)) < 0) {
LAB_000712dc:
    return (int)pPKey2->r1;
  }
LAB_00071360:
  if ((SBORROW4(iVar3,uVar7) != SBORROW4(iVar3 - uVar7,(uint)(pcVar4 < pcVar5))) !=
      (int)((iVar3 - uVar7) - (uint)(pcVar4 < pcVar5)) < 0) {
    return (int)pPKey2->r2;
  }
  if (pPKey2->nField < 2) {
    pPKey2->eqSeen = '\x01';
    return (int)pPKey2->default_rc;
  }
  nKey1 = 1;
LAB_000712a8:
  iVar2 = sqlite3VdbeRecordCompareWithSkip(iVar2,pKey1,pPKey2,nKey1);
  return iVar2;
}



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

int FUN_00071260(undefined4 param_1,byte *param_2,int param_3)

{
  int iVar1;
  uint uVar2;
  uint uVar3;
  uint uVar4;
  uint *puVar5;
  uint uVar6;
  
  puVar5 = (uint *)(param_2 + (*param_2 & 0x3f));
  switch(param_2[1]) {
  default:
    goto code_r0x000712a8;
  case 1:
    uVar4 = (uint)(char)(byte)*puVar5;
    uVar6 = (int)uVar4 >> 0x1f;
    break;
  case 2:
    uVar4 = (uint)CONCAT11((byte)*puVar5,*(byte *)((int)puVar5 + 1));
    uVar6 = (int)uVar4 >> 0x1f;
    break;
  case 3:
    uVar4 = (uint)CONCAT12((byte)*puVar5,
                           *(ushort *)((int)puVar5 + 1) << 8 | *(ushort *)((int)puVar5 + 1) >> 8);
    uVar6 = (int)uVar4 >> 0x1f;
    break;
  case 4:
    uVar3 = *puVar5;
    uVar4 = uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 | uVar3 << 0x18;
    uVar6 = (int)uVar4 >> 0x1f;
    break;
  case 5:
    uVar3 = *(uint *)((int)puVar5 + 2);
    uVar4 = uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 | uVar3 << 0x18;
    uVar6 = (uint)CONCAT11((byte)*puVar5,*(byte *)((int)puVar5 + 1));
    break;
  case 6:
    uVar3 = *puVar5;
    uVar2 = puVar5[1];
    uVar6 = uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 | uVar3 << 0x18;
    uVar4 = uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 | uVar2 << 0x18;
    break;
  case 8:
    uVar6 = 0;
    uVar4 = 0;
    break;
  case 9:
    uVar6 = 0;
    uVar3 = **(uint **)(param_3 + 4);
    uVar2 = (*(uint **)(param_3 + 4))[1];
    if ((int)-uVar2 < (int)(uint)(1 < uVar3)) goto code_r0x000712dc;
    uVar4 = 1;
    goto code_r0x00071360;
  }
  uVar3 = **(uint **)(param_3 + 4);
  uVar2 = (*(uint **)(param_3 + 4))[1];
  if ((SBORROW4(uVar6,uVar2) != SBORROW4(uVar6 - uVar2,(uint)(uVar4 < uVar3))) !=
      (int)((uVar6 - uVar2) - (uint)(uVar4 < uVar3)) < 0) {
code_r0x000712dc:
    return (int)*(char *)(param_3 + 0xc);
  }
code_r0x00071360:
  if ((SBORROW4(uVar2,uVar6) != SBORROW4(uVar2 - uVar6,(uint)(uVar3 < uVar4))) !=
      (int)((uVar2 - uVar6) - (uint)(uVar3 < uVar4)) < 0) {
    return (int)*(char *)(param_3 + 0xd);
  }
  if (*(ushort *)(param_3 + 8) < 2) {
    *(undefined1 *)(param_3 + 0xe) = 1;
    return (int)*(char *)(param_3 + 10);
  }
code_r0x000712a8:
  iVar1 = FUN_00070ba0();
  return iVar1;
}


PUSH EBP
PUSH EDI
PUSH ESI
PUSH EBX
CALL 0x00017230
ADD EBX,0x10abbf
SUB ESP,0x1c
MOV EDX,dword ptr [ESP + 0x34]
MOV EAX,dword ptr [ESP + 0x30]
MOV ECX,dword ptr [ESP + 0x38]
MOVZX EDI,byte ptr [EDX]
MOV dword ptr [ESP + 0x4],EAX
AND EDI,0x3f
ADD EDI,EDX
CMP byte ptr [EDX + 0x1],0x9
JA 0x000712a0
MOVZX ESI,byte ptr [EDX + 0x1]
ADD EBX,dword ptr [EBX + ESI*0x4 + 0xfffa7f68]
JMP EBX
MOV dword ptr [ESP + 0x30],0x0
MOV EAX,dword ptr [ESP + 0x4]
ADD ESP,0x1c
POP EBX
POP ESI
POP EDI
POP EBP
JMP 0x00070ba0
(translation_unit "/* WARNING: Function: __i686.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n\nint FUN_00071260(undefined4 param_1,byte *param_2,int param_3)\n\n{\n  int iVar1;\n  uint uVar2;\n  uint uVar3;\n  uint uVar4;\n  uint *puVar5;\n  uint uVar6;\n  \n  puVar5 = (uint *)(param_2 + (*param_2 & 0x3f));\n  switch(param_2[1]) {\n  default:\n    goto code_r0x000712a8;\n  case 1:\n    uVar4 = (uint)(char)(byte)*puVar5;\n    uVar6 = (int)uVar4 >> 0x1f;\n    break;\n  case 2:\n    uVar4 = (uint)CONCAT11((byte)*puVar5,*(byte *)((int)puVar5 + 1));\n    uVar6 = (int)uVar4 >> 0x1f;\n    break;\n  case 3:\n    uVar4 = (uint)CONCAT12((byte)*puVar5,\n                           *(ushort *)((int)puVar5 + 1) << 8 | *(ushort *)((int)puVar5 + 1) >> 8);\n    uVar6 = (int)uVar4 >> 0x1f;\n    break;\n  case 4:\n    uVar3 = *puVar5;\n    uVar4 = uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 | uVar3 << 0x18;\n    uVar6 = (int)uVar4 >> 0x1f;\n    break;\n  case 5:\n    uVar3 = *(uint *)((int)puVar5 + 2);\n    uVar4 = uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 | uVar3 << 0x18;\n    uVar6 = (uint)CONCAT11((byte)*puVar5,*(byte *)((int)puVar5 + 1));\n    break;\n  case 6:\n    uVar3 = *puVar5;\n    uVar2 = puVar5[1];\n    uVar6 = uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 | uVar3 << 0x18;\n    uVar4 = uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 | uVar2 << 0x18;\n    break;\n  case 8:\n    uVar6 = 0;\n    uVar4 = 0;\n    break;\n  case 9:\n    uVar6 = 0;\n    uVar3 = **(uint **)(param_3 + 4);\n    uVar2 = (*(uint **)(param_3 + 4))[1];\n    if ((int)-uVar2 < (int)(uint)(1 < uVar3)) goto code_r0x000712dc;\n    uVar4 = 1;\n    goto code_r0x00071360;\n  }\n  uVar3 = **(uint **)(param_3 + 4);\n  uVar2 = (*(uint **)(param_3 + 4))[1];\n  if ((SBORROW4(uVar6,uVar2) != SBORROW4(uVar6 - uVar2,(uint)(uVar4 < uVar3))) !=\n      (int)((uVar6 - uVar2) - (uint)(uVar4 < uVar3)) < 0) {\ncode_r0x000712dc:\n    return (int)*(char *)(param_3 + 0xc);\n  }\ncode_r0x00071360:\n  if ((SBORROW4(uVar2,uVar6) != SBORROW4(uVar2 - uVar6,(uint)(uVar3 < uVar4))) !=\n      (int)((uVar2 - uVar6) - (uint)(uVar3 < uVar4)) < 0) {\n    return (int)*(char *)(param_3 + 0xd);\n  }\n  if (*(ushort *)(param_3 + 8) < 2) {\n    *(undefined1 *)(param_3 + 0xe) = 1;\n    return (int)*(char *)(param_3 + 10);\n  }\ncode_r0x000712a8:\n  iVar1 = FUN_00070ba0();\n  return iVar1;\n}\n\n" comment (function_definition "int FUN_00071260(undefined4 param_1,byte *param_2,int param_3)\n\n{\n  int iVar1;\n  uint uVar2;\n  uint uVar3;\n  uint uVar4;\n  uint *puVar5;\n  uint uVar6;\n  \n  puVar5 = (uint *)(param_2 + (*param_2 & 0x3f));\n  switch(param_2[1]) {\n  default:\n    goto code_r0x000712a8;\n  case 1:\n    uVar4 = (uint)(char)(byte)*puVar5;\n    uVar6 = (int)uVar4 >> 0x1f;\n    break;\n  case 2:\n    uVar4 = (uint)CONCAT11((byte)*puVar5,*(byte *)((int)puVar5 + 1));\n    uVar6 = (int)uVar4 >> 0x1f;\n    break;\n  case 3:\n    uVar4 = (uint)CONCAT12((byte)*puVar5,\n                           *(ushort *)((int)puVar5 + 1) << 8 | *(ushort *)((int)puVar5 + 1) >> 8);\n    uVar6 = (int)uVar4 >> 0x1f;\n    break;\n  case 4:\n    uVar3 = *puVar5;\n    uVar4 = uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 | uVar3 << 0x18;\n    uVar6 = (int)uVar4 >> 0x1f;\n    break;\n  case 5:\n    uVar3 = *(uint *)((int)puVar5 + 2);\n    uVar4 = uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 | uVar3 << 0x18;\n    uVar6 = (uint)CONCAT11((byte)*puVar5,*(byte *)((int)puVar5 + 1));\n    break;\n  case 6:\n    uVar3 = *puVar5;\n    uVar2 = puVar5[1];\n    uVar6 = uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 | uVar3 << 0x18;\n    uVar4 = uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 | uVar2 << 0x18;\n    break;\n  case 8:\n    uVar6 = 0;\n    uVar4 = 0;\n    break;\n  case 9:\n    uVar6 = 0;\n    uVar3 = **(uint **)(param_3 + 4);\n    uVar2 = (*(uint **)(param_3 + 4))[1];\n    if ((int)-uVar2 < (int)(uint)(1 < uVar3)) goto code_r0x000712dc;\n    uVar4 = 1;\n    goto code_r0x00071360;\n  }\n  uVar3 = **(uint **)(param_3 + 4);\n  uVar2 = (*(uint **)(param_3 + 4))[1];\n  if ((SBORROW4(uVar6,uVar2) != SBORROW4(uVar6 - uVar2,(uint)(uVar4 < uVar3))) !=\n      (int)((uVar6 - uVar2) - (uint)(uVar4 < uVar3)) < 0) {\ncode_r0x000712dc:\n    return (int)*(char *)(param_3 + 0xc);\n  }\ncode_r0x00071360:\n  if ((SBORROW4(uVar2,uVar6) != SBORROW4(uVar2 - uVar6,(uint)(uVar3 < uVar4))) !=\n      (int)((uVar2 - uVar6) - (uint)(uVar3 < uVar4)) < 0) {\n    return (int)*(char *)(param_3 + 0xd);\n  }\n  if (*(ushort *)(param_3 + 8) < 2) {\n    *(undefined1 *)(param_3 + 0xe) = 1;\n    return (int)*(char *)(param_3 + 10);\n  }\ncode_r0x000712a8:\n  iVar1 = FUN_00070ba0();\n  return iVar1;\n}" primitive_type (function_declarator "FUN_00071260(undefined4 param_1,byte *param_2,int param_3)" identifier (parameter_list "(undefined4 param_1,byte *param_2,int param_3)" ( (parameter_declaration "undefined4 param_1" type_identifier identifier) , (parameter_declaration "byte *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "int param_3" primitive_type identifier) ))) (compound_statement "{\n  int iVar1;\n  uint uVar2;\n  uint uVar3;\n  uint uVar4;\n  uint *puVar5;\n  uint uVar6;\n  \n  puVar5 = (uint *)(param_2 + (*param_2 & 0x3f));\n  switch(param_2[1]) {\n  default:\n    goto code_r0x000712a8;\n  case 1:\n    uVar4 = (uint)(char)(byte)*puVar5;\n    uVar6 = (int)uVar4 >> 0x1f;\n    break;\n  case 2:\n    uVar4 = (uint)CONCAT11((byte)*puVar5,*(byte *)((int)puVar5 + 1));\n    uVar6 = (int)uVar4 >> 0x1f;\n    break;\n  case 3:\n    uVar4 = (uint)CONCAT12((byte)*puVar5,\n                           *(ushort *)((int)puVar5 + 1) << 8 | *(ushort *)((int)puVar5 + 1) >> 8);\n    uVar6 = (int)uVar4 >> 0x1f;\n    break;\n  case 4:\n    uVar3 = *puVar5;\n    uVar4 = uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 | uVar3 << 0x18;\n    uVar6 = (int)uVar4 >> 0x1f;\n    break;\n  case 5:\n    uVar3 = *(uint *)((int)puVar5 + 2);\n    uVar4 = uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 | uVar3 << 0x18;\n    uVar6 = (uint)CONCAT11((byte)*puVar5,*(byte *)((int)puVar5 + 1));\n    break;\n  case 6:\n    uVar3 = *puVar5;\n    uVar2 = puVar5[1];\n    uVar6 = uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 | uVar3 << 0x18;\n    uVar4 = uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 | uVar2 << 0x18;\n    break;\n  case 8:\n    uVar6 = 0;\n    uVar4 = 0;\n    break;\n  case 9:\n    uVar6 = 0;\n    uVar3 = **(uint **)(param_3 + 4);\n    uVar2 = (*(uint **)(param_3 + 4))[1];\n    if ((int)-uVar2 < (int)(uint)(1 < uVar3)) goto code_r0x000712dc;\n    uVar4 = 1;\n    goto code_r0x00071360;\n  }\n  uVar3 = **(uint **)(param_3 + 4);\n  uVar2 = (*(uint **)(param_3 + 4))[1];\n  if ((SBORROW4(uVar6,uVar2) != SBORROW4(uVar6 - uVar2,(uint)(uVar4 < uVar3))) !=\n      (int)((uVar6 - uVar2) - (uint)(uVar4 < uVar3)) < 0) {\ncode_r0x000712dc:\n    return (int)*(char *)(param_3 + 0xc);\n  }\ncode_r0x00071360:\n  if ((SBORROW4(uVar2,uVar6) != SBORROW4(uVar2 - uVar6,(uint)(uVar3 < uVar4))) !=\n      (int)((uVar2 - uVar6) - (uint)(uVar3 < uVar4)) < 0) {\n    return (int)*(char *)(param_3 + 0xd);\n  }\n  if (*(ushort *)(param_3 + 8) < 2) {\n    *(undefined1 *)(param_3 + 0xe) = 1;\n    return (int)*(char *)(param_3 + 10);\n  }\ncode_r0x000712a8:\n  iVar1 = FUN_00070ba0();\n  return iVar1;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "uint uVar2;" type_identifier identifier ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "uint uVar4;" type_identifier identifier ;) (declaration "uint *puVar5;" type_identifier (pointer_declarator "*puVar5" * identifier) ;) (declaration "uint uVar6;" type_identifier identifier ;) (expression_statement "puVar5 = (uint *)(param_2 + (*param_2 & 0x3f));" (assignment_expression "puVar5 = (uint *)(param_2 + (*param_2 & 0x3f))" identifier = (cast_expression "(uint *)(param_2 + (*param_2 & 0x3f))" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + (*param_2 & 0x3f))" ( (binary_expression "param_2 + (*param_2 & 0x3f)" identifier + (parenthesized_expression "(*param_2 & 0x3f)" ( (binary_expression "*param_2 & 0x3f" (pointer_expression "*param_2" * identifier) & number_literal) ))) )))) ;) (switch_statement "switch(param_2[1]) {\n  default:\n    goto code_r0x000712a8;\n  case 1:\n    uVar4 = (uint)(char)(byte)*puVar5;\n    uVar6 = (int)uVar4 >> 0x1f;\n    break;\n  case 2:\n    uVar4 = (uint)CONCAT11((byte)*puVar5,*(byte *)((int)puVar5 + 1));\n    uVar6 = (int)uVar4 >> 0x1f;\n    break;\n  case 3:\n    uVar4 = (uint)CONCAT12((byte)*puVar5,\n                           *(ushort *)((int)puVar5 + 1) << 8 | *(ushort *)((int)puVar5 + 1) >> 8);\n    uVar6 = (int)uVar4 >> 0x1f;\n    break;\n  case 4:\n    uVar3 = *puVar5;\n    uVar4 = uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 | uVar3 << 0x18;\n    uVar6 = (int)uVar4 >> 0x1f;\n    break;\n  case 5:\n    uVar3 = *(uint *)((int)puVar5 + 2);\n    uVar4 = uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 | uVar3 << 0x18;\n    uVar6 = (uint)CONCAT11((byte)*puVar5,*(byte *)((int)puVar5 + 1));\n    break;\n  case 6:\n    uVar3 = *puVar5;\n    uVar2 = puVar5[1];\n    uVar6 = uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 | uVar3 << 0x18;\n    uVar4 = uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 | uVar2 << 0x18;\n    break;\n  case 8:\n    uVar6 = 0;\n    uVar4 = 0;\n    break;\n  case 9:\n    uVar6 = 0;\n    uVar3 = **(uint **)(param_3 + 4);\n    uVar2 = (*(uint **)(param_3 + 4))[1];\n    if ((int)-uVar2 < (int)(uint)(1 < uVar3)) goto code_r0x000712dc;\n    uVar4 = 1;\n    goto code_r0x00071360;\n  }" switch (parenthesized_expression "(param_2[1])" ( (subscript_expression "param_2[1]" identifier [ number_literal ]) )) (compound_statement "{\n  default:\n    goto code_r0x000712a8;\n  case 1:\n    uVar4 = (uint)(char)(byte)*puVar5;\n    uVar6 = (int)uVar4 >> 0x1f;\n    break;\n  case 2:\n    uVar4 = (uint)CONCAT11((byte)*puVar5,*(byte *)((int)puVar5 + 1));\n    uVar6 = (int)uVar4 >> 0x1f;\n    break;\n  case 3:\n    uVar4 = (uint)CONCAT12((byte)*puVar5,\n                           *(ushort *)((int)puVar5 + 1) << 8 | *(ushort *)((int)puVar5 + 1) >> 8);\n    uVar6 = (int)uVar4 >> 0x1f;\n    break;\n  case 4:\n    uVar3 = *puVar5;\n    uVar4 = uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 | uVar3 << 0x18;\n    uVar6 = (int)uVar4 >> 0x1f;\n    break;\n  case 5:\n    uVar3 = *(uint *)((int)puVar5 + 2);\n    uVar4 = uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 | uVar3 << 0x18;\n    uVar6 = (uint)CONCAT11((byte)*puVar5,*(byte *)((int)puVar5 + 1));\n    break;\n  case 6:\n    uVar3 = *puVar5;\n    uVar2 = puVar5[1];\n    uVar6 = uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 | uVar3 << 0x18;\n    uVar4 = uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 | uVar2 << 0x18;\n    break;\n  case 8:\n    uVar6 = 0;\n    uVar4 = 0;\n    break;\n  case 9:\n    uVar6 = 0;\n    uVar3 = **(uint **)(param_3 + 4);\n    uVar2 = (*(uint **)(param_3 + 4))[1];\n    if ((int)-uVar2 < (int)(uint)(1 < uVar3)) goto code_r0x000712dc;\n    uVar4 = 1;\n    goto code_r0x00071360;\n  }" { (case_statement "default:\n    goto code_r0x000712a8;" default : (goto_statement "goto code_r0x000712a8;" goto statement_identifier ;)) (case_statement "case 1:\n    uVar4 = (uint)(char)(byte)*puVar5;\n    uVar6 = (int)uVar4 >> 0x1f;\n    break;" case number_literal : (expression_statement "uVar4 = (uint)(char)(byte)*puVar5;" (assignment_expression "uVar4 = (uint)(char)(byte)*puVar5" identifier = (binary_expression "(uint)(char)(byte)*puVar5" (call_expression "(uint)(char)(byte)" (call_expression "(uint)(char)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(char)" ( identifier ))) (argument_list "(byte)" ( identifier ))) * identifier)) ;) (expression_statement "uVar6 = (int)uVar4 >> 0x1f;" (assignment_expression "uVar6 = (int)uVar4 >> 0x1f" identifier = (binary_expression "(int)uVar4 >> 0x1f" (cast_expression "(int)uVar4" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal)) ;) (break_statement "break;" break ;)) (case_statement "case 2:\n    uVar4 = (uint)CONCAT11((byte)*puVar5,*(byte *)((int)puVar5 + 1));\n    uVar6 = (int)uVar4 >> 0x1f;\n    break;" case number_literal : (expression_statement "uVar4 = (uint)CONCAT11((byte)*puVar5,*(byte *)((int)puVar5 + 1));" (assignment_expression "uVar4 = (uint)CONCAT11((byte)*puVar5,*(byte *)((int)puVar5 + 1))" identifier = (cast_expression "(uint)CONCAT11((byte)*puVar5,*(byte *)((int)puVar5 + 1))" ( (type_descriptor "uint" type_identifier) ) (call_expression "CONCAT11((byte)*puVar5,*(byte *)((int)puVar5 + 1))" identifier (argument_list "((byte)*puVar5,*(byte *)((int)puVar5 + 1))" ( (binary_expression "(byte)*puVar5" (parenthesized_expression "(byte)" ( identifier )) * identifier) , (pointer_expression "*(byte *)((int)puVar5 + 1)" * (cast_expression "(byte *)((int)puVar5 + 1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar5 + 1)" ( (binary_expression "(int)puVar5 + 1" (cast_expression "(int)puVar5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ))))) ;) (expression_statement "uVar6 = (int)uVar4 >> 0x1f;" (assignment_expression "uVar6 = (int)uVar4 >> 0x1f" identifier = (binary_expression "(int)uVar4 >> 0x1f" (cast_expression "(int)uVar4" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal)) ;) (break_statement "break;" break ;)) (case_statement "case 3:\n    uVar4 = (uint)CONCAT12((byte)*puVar5,\n                           *(ushort *)((int)puVar5 + 1) << 8 | *(ushort *)((int)puVar5 + 1) >> 8);\n    uVar6 = (int)uVar4 >> 0x1f;\n    break;" case number_literal : (expression_statement "uVar4 = (uint)CONCAT12((byte)*puVar5,\n                           *(ushort *)((int)puVar5 + 1) << 8 | *(ushort *)((int)puVar5 + 1) >> 8);" (assignment_expression "uVar4 = (uint)CONCAT12((byte)*puVar5,\n                           *(ushort *)((int)puVar5 + 1) << 8 | *(ushort *)((int)puVar5 + 1) >> 8)" identifier = (cast_expression "(uint)CONCAT12((byte)*puVar5,\n                           *(ushort *)((int)puVar5 + 1) << 8 | *(ushort *)((int)puVar5 + 1) >> 8)" ( (type_descriptor "uint" type_identifier) ) (call_expression "CONCAT12((byte)*puVar5,\n                           *(ushort *)((int)puVar5 + 1) << 8 | *(ushort *)((int)puVar5 + 1) >> 8)" identifier (argument_list "((byte)*puVar5,\n                           *(ushort *)((int)puVar5 + 1) << 8 | *(ushort *)((int)puVar5 + 1) >> 8)" ( (binary_expression "(byte)*puVar5" (parenthesized_expression "(byte)" ( identifier )) * identifier) , (binary_expression "*(ushort *)((int)puVar5 + 1) << 8 | *(ushort *)((int)puVar5 + 1) >> 8" (binary_expression "*(ushort *)((int)puVar5 + 1) << 8" (pointer_expression "*(ushort *)((int)puVar5 + 1)" * (cast_expression "(ushort *)((int)puVar5 + 1)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar5 + 1)" ( (binary_expression "(int)puVar5 + 1" (cast_expression "(int)puVar5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) << number_literal) | (binary_expression "*(ushort *)((int)puVar5 + 1) >> 8" (pointer_expression "*(ushort *)((int)puVar5 + 1)" * (cast_expression "(ushort *)((int)puVar5 + 1)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar5 + 1)" ( (binary_expression "(int)puVar5 + 1" (cast_expression "(int)puVar5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) >> number_literal)) ))))) ;) (expression_statement "uVar6 = (int)uVar4 >> 0x1f;" (assignment_expression "uVar6 = (int)uVar4 >> 0x1f" identifier = (binary_expression "(int)uVar4 >> 0x1f" (cast_expression "(int)uVar4" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal)) ;) (break_statement "break;" break ;)) (case_statement "case 4:\n    uVar3 = *puVar5;\n    uVar4 = uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 | uVar3 << 0x18;\n    uVar6 = (int)uVar4 >> 0x1f;\n    break;" case number_literal : (expression_statement "uVar3 = *puVar5;" (assignment_expression "uVar3 = *puVar5" identifier = (pointer_expression "*puVar5" * identifier)) ;) (expression_statement "uVar4 = uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 | uVar3 << 0x18;" (assignment_expression "uVar4 = uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 | uVar3 << 0x18" identifier = (binary_expression "uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 | uVar3 << 0x18" (binary_expression "uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8" (binary_expression "uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8" (binary_expression "uVar3 >> 0x18" identifier >> number_literal) | (binary_expression "(uVar3 & 0xff0000) >> 8" (parenthesized_expression "(uVar3 & 0xff0000)" ( (binary_expression "uVar3 & 0xff0000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar3 & 0xff00) << 8" (parenthesized_expression "(uVar3 & 0xff00)" ( (binary_expression "uVar3 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "uVar3 << 0x18" identifier << number_literal))) ;) (expression_statement "uVar6 = (int)uVar4 >> 0x1f;" (assignment_expression "uVar6 = (int)uVar4 >> 0x1f" identifier = (binary_expression "(int)uVar4 >> 0x1f" (cast_expression "(int)uVar4" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal)) ;) (break_statement "break;" break ;)) (case_statement "case 5:\n    uVar3 = *(uint *)((int)puVar5 + 2);\n    uVar4 = uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 | uVar3 << 0x18;\n    uVar6 = (uint)CONCAT11((byte)*puVar5,*(byte *)((int)puVar5 + 1));\n    break;" case number_literal : (expression_statement "uVar3 = *(uint *)((int)puVar5 + 2);" (assignment_expression "uVar3 = *(uint *)((int)puVar5 + 2)" identifier = (pointer_expression "*(uint *)((int)puVar5 + 2)" * (cast_expression "(uint *)((int)puVar5 + 2)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar5 + 2)" ( (binary_expression "(int)puVar5 + 2" (cast_expression "(int)puVar5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (expression_statement "uVar4 = uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 | uVar3 << 0x18;" (assignment_expression "uVar4 = uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 | uVar3 << 0x18" identifier = (binary_expression "uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 | uVar3 << 0x18" (binary_expression "uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8" (binary_expression "uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8" (binary_expression "uVar3 >> 0x18" identifier >> number_literal) | (binary_expression "(uVar3 & 0xff0000) >> 8" (parenthesized_expression "(uVar3 & 0xff0000)" ( (binary_expression "uVar3 & 0xff0000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar3 & 0xff00) << 8" (parenthesized_expression "(uVar3 & 0xff00)" ( (binary_expression "uVar3 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "uVar3 << 0x18" identifier << number_literal))) ;) (expression_statement "uVar6 = (uint)CONCAT11((byte)*puVar5,*(byte *)((int)puVar5 + 1));" (assignment_expression "uVar6 = (uint)CONCAT11((byte)*puVar5,*(byte *)((int)puVar5 + 1))" identifier = (cast_expression "(uint)CONCAT11((byte)*puVar5,*(byte *)((int)puVar5 + 1))" ( (type_descriptor "uint" type_identifier) ) (call_expression "CONCAT11((byte)*puVar5,*(byte *)((int)puVar5 + 1))" identifier (argument_list "((byte)*puVar5,*(byte *)((int)puVar5 + 1))" ( (binary_expression "(byte)*puVar5" (parenthesized_expression "(byte)" ( identifier )) * identifier) , (pointer_expression "*(byte *)((int)puVar5 + 1)" * (cast_expression "(byte *)((int)puVar5 + 1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar5 + 1)" ( (binary_expression "(int)puVar5 + 1" (cast_expression "(int)puVar5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ))))) ;) (break_statement "break;" break ;)) (case_statement "case 6:\n    uVar3 = *puVar5;\n    uVar2 = puVar5[1];\n    uVar6 = uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 | uVar3 << 0x18;\n    uVar4 = uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 | uVar2 << 0x18;\n    break;" case number_literal : (expression_statement "uVar3 = *puVar5;" (assignment_expression "uVar3 = *puVar5" identifier = (pointer_expression "*puVar5" * identifier)) ;) (expression_statement "uVar2 = puVar5[1];" (assignment_expression "uVar2 = puVar5[1]" identifier = (subscript_expression "puVar5[1]" identifier [ number_literal ])) ;) (expression_statement "uVar6 = uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 | uVar3 << 0x18;" (assignment_expression "uVar6 = uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 | uVar3 << 0x18" identifier = (binary_expression "uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 | uVar3 << 0x18" (binary_expression "uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8" (binary_expression "uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8" (binary_expression "uVar3 >> 0x18" identifier >> number_literal) | (binary_expression "(uVar3 & 0xff0000) >> 8" (parenthesized_expression "(uVar3 & 0xff0000)" ( (binary_expression "uVar3 & 0xff0000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar3 & 0xff00) << 8" (parenthesized_expression "(uVar3 & 0xff00)" ( (binary_expression "uVar3 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "uVar3 << 0x18" identifier << number_literal))) ;) (expression_statement "uVar4 = uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 | uVar2 << 0x18;" (assignment_expression "uVar4 = uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 | uVar2 << 0x18" identifier = (binary_expression "uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 | uVar2 << 0x18" (binary_expression "uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8" (binary_expression "uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8" (binary_expression "uVar2 >> 0x18" identifier >> number_literal) | (binary_expression "(uVar2 & 0xff0000) >> 8" (parenthesized_expression "(uVar2 & 0xff0000)" ( (binary_expression "uVar2 & 0xff0000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar2 & 0xff00) << 8" (parenthesized_expression "(uVar2 & 0xff00)" ( (binary_expression "uVar2 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "uVar2 << 0x18" identifier << number_literal))) ;) (break_statement "break;" break ;)) (case_statement "case 8:\n    uVar6 = 0;\n    uVar4 = 0;\n    break;" case number_literal : (expression_statement "uVar6 = 0;" (assignment_expression "uVar6 = 0" identifier = number_literal) ;) (expression_statement "uVar4 = 0;" (assignment_expression "uVar4 = 0" identifier = number_literal) ;) (break_statement "break;" break ;)) (case_statement "case 9:\n    uVar6 = 0;\n    uVar3 = **(uint **)(param_3 + 4);\n    uVar2 = (*(uint **)(param_3 + 4))[1];\n    if ((int)-uVar2 < (int)(uint)(1 < uVar3)) goto code_r0x000712dc;\n    uVar4 = 1;\n    goto code_r0x00071360;" case number_literal : (expression_statement "uVar6 = 0;" (assignment_expression "uVar6 = 0" identifier = number_literal) ;) (expression_statement "uVar3 = **(uint **)(param_3 + 4);" (assignment_expression "uVar3 = **(uint **)(param_3 + 4)" identifier = (pointer_expression "**(uint **)(param_3 + 4)" * (pointer_expression "*(uint **)(param_3 + 4)" * (cast_expression "(uint **)(param_3 + 4)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_3 + 4)" ( (binary_expression "param_3 + 4" identifier + number_literal) )))))) ;) (expression_statement "uVar2 = (*(uint **)(param_3 + 4))[1];" (assignment_expression "uVar2 = (*(uint **)(param_3 + 4))[1]" identifier = (subscript_expression "(*(uint **)(param_3 + 4))[1]" (parenthesized_expression "(*(uint **)(param_3 + 4))" ( (pointer_expression "*(uint **)(param_3 + 4)" * (cast_expression "(uint **)(param_3 + 4)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_3 + 4)" ( (binary_expression "param_3 + 4" identifier + number_literal) )))) )) [ number_literal ])) ;) (if_statement "if ((int)-uVar2 < (int)(uint)(1 < uVar3)) goto code_r0x000712dc;" if (parenthesized_expression "((int)-uVar2 < (int)(uint)(1 < uVar3))" ( (binary_expression "(int)-uVar2 < (int)(uint)(1 < uVar3)" (cast_expression "(int)-uVar2" ( (type_descriptor "int" primitive_type) ) (unary_expression "-uVar2" - identifier)) < (cast_expression "(int)(uint)(1 < uVar3)" ( (type_descriptor "int" primitive_type) ) (call_expression "(uint)(1 < uVar3)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(1 < uVar3)" ( (binary_expression "1 < uVar3" number_literal < identifier) ))))) )) (goto_statement "goto code_r0x000712dc;" goto statement_identifier ;)) (expression_statement "uVar4 = 1;" (assignment_expression "uVar4 = 1" identifier = number_literal) ;) (goto_statement "goto code_r0x00071360;" goto statement_identifier ;)) })) (expression_statement "uVar3 = **(uint **)(param_3 + 4);" (assignment_expression "uVar3 = **(uint **)(param_3 + 4)" identifier = (pointer_expression "**(uint **)(param_3 + 4)" * (pointer_expression "*(uint **)(param_3 + 4)" * (cast_expression "(uint **)(param_3 + 4)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_3 + 4)" ( (binary_expression "param_3 + 4" identifier + number_literal) )))))) ;) (expression_statement "uVar2 = (*(uint **)(param_3 + 4))[1];" (assignment_expression "uVar2 = (*(uint **)(param_3 + 4))[1]" identifier = (subscript_expression "(*(uint **)(param_3 + 4))[1]" (parenthesized_expression "(*(uint **)(param_3 + 4))" ( (pointer_expression "*(uint **)(param_3 + 4)" * (cast_expression "(uint **)(param_3 + 4)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_3 + 4)" ( (binary_expression "param_3 + 4" identifier + number_literal) )))) )) [ number_literal ])) ;) (if_statement "if ((SBORROW4(uVar6,uVar2) != SBORROW4(uVar6 - uVar2,(uint)(uVar4 < uVar3))) !=\n      (int)((uVar6 - uVar2) - (uint)(uVar4 < uVar3)) < 0) {\ncode_r0x000712dc:\n    return (int)*(char *)(param_3 + 0xc);\n  }" if (parenthesized_expression "((SBORROW4(uVar6,uVar2) != SBORROW4(uVar6 - uVar2,(uint)(uVar4 < uVar3))) !=\n      (int)((uVar6 - uVar2) - (uint)(uVar4 < uVar3)) < 0)" ( (binary_expression "(SBORROW4(uVar6,uVar2) != SBORROW4(uVar6 - uVar2,(uint)(uVar4 < uVar3))) !=\n      (int)((uVar6 - uVar2) - (uint)(uVar4 < uVar3)) < 0" (parenthesized_expression "(SBORROW4(uVar6,uVar2) != SBORROW4(uVar6 - uVar2,(uint)(uVar4 < uVar3)))" ( (binary_expression "SBORROW4(uVar6,uVar2) != SBORROW4(uVar6 - uVar2,(uint)(uVar4 < uVar3))" (call_expression "SBORROW4(uVar6,uVar2)" identifier (argument_list "(uVar6,uVar2)" ( identifier , identifier ))) != (call_expression "SBORROW4(uVar6 - uVar2,(uint)(uVar4 < uVar3))" identifier (argument_list "(uVar6 - uVar2,(uint)(uVar4 < uVar3))" ( (binary_expression "uVar6 - uVar2" identifier - identifier) , (call_expression "(uint)(uVar4 < uVar3)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar4 < uVar3)" ( (binary_expression "uVar4 < uVar3" identifier < identifier) ))) )))) )) != (binary_expression "(int)((uVar6 - uVar2) - (uint)(uVar4 < uVar3)) < 0" (cast_expression "(int)((uVar6 - uVar2) - (uint)(uVar4 < uVar3))" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((uVar6 - uVar2) - (uint)(uVar4 < uVar3))" ( (binary_expression "(uVar6 - uVar2) - (uint)(uVar4 < uVar3)" (parenthesized_expression "(uVar6 - uVar2)" ( (binary_expression "uVar6 - uVar2" identifier - identifier) )) - (call_expression "(uint)(uVar4 < uVar3)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar4 < uVar3)" ( (binary_expression "uVar4 < uVar3" identifier < identifier) )))) ))) < number_literal)) )) (compound_statement "{\ncode_r0x000712dc:\n    return (int)*(char *)(param_3 + 0xc);\n  }" { (labeled_statement "code_r0x000712dc:\n    return (int)*(char *)(param_3 + 0xc);" statement_identifier : (return_statement "return (int)*(char *)(param_3 + 0xc);" return (cast_expression "(int)*(char *)(param_3 + 0xc)" ( (type_descriptor "int" primitive_type) ) (pointer_expression "*(char *)(param_3 + 0xc)" * (cast_expression "(char *)(param_3 + 0xc)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0xc)" ( (binary_expression "param_3 + 0xc" identifier + number_literal) ))))) ;)) })) (labeled_statement "code_r0x00071360:\n  if ((SBORROW4(uVar2,uVar6) != SBORROW4(uVar2 - uVar6,(uint)(uVar3 < uVar4))) !=\n      (int)((uVar2 - uVar6) - (uint)(uVar3 < uVar4)) < 0) {\n    return (int)*(char *)(param_3 + 0xd);\n  }" statement_identifier : (if_statement "if ((SBORROW4(uVar2,uVar6) != SBORROW4(uVar2 - uVar6,(uint)(uVar3 < uVar4))) !=\n      (int)((uVar2 - uVar6) - (uint)(uVar3 < uVar4)) < 0) {\n    return (int)*(char *)(param_3 + 0xd);\n  }" if (parenthesized_expression "((SBORROW4(uVar2,uVar6) != SBORROW4(uVar2 - uVar6,(uint)(uVar3 < uVar4))) !=\n      (int)((uVar2 - uVar6) - (uint)(uVar3 < uVar4)) < 0)" ( (binary_expression "(SBORROW4(uVar2,uVar6) != SBORROW4(uVar2 - uVar6,(uint)(uVar3 < uVar4))) !=\n      (int)((uVar2 - uVar6) - (uint)(uVar3 < uVar4)) < 0" (parenthesized_expression "(SBORROW4(uVar2,uVar6) != SBORROW4(uVar2 - uVar6,(uint)(uVar3 < uVar4)))" ( (binary_expression "SBORROW4(uVar2,uVar6) != SBORROW4(uVar2 - uVar6,(uint)(uVar3 < uVar4))" (call_expression "SBORROW4(uVar2,uVar6)" identifier (argument_list "(uVar2,uVar6)" ( identifier , identifier ))) != (call_expression "SBORROW4(uVar2 - uVar6,(uint)(uVar3 < uVar4))" identifier (argument_list "(uVar2 - uVar6,(uint)(uVar3 < uVar4))" ( (binary_expression "uVar2 - uVar6" identifier - identifier) , (call_expression "(uint)(uVar3 < uVar4)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar3 < uVar4)" ( (binary_expression "uVar3 < uVar4" identifier < identifier) ))) )))) )) != (binary_expression "(int)((uVar2 - uVar6) - (uint)(uVar3 < uVar4)) < 0" (cast_expression "(int)((uVar2 - uVar6) - (uint)(uVar3 < uVar4))" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((uVar2 - uVar6) - (uint)(uVar3 < uVar4))" ( (binary_expression "(uVar2 - uVar6) - (uint)(uVar3 < uVar4)" (parenthesized_expression "(uVar2 - uVar6)" ( (binary_expression "uVar2 - uVar6" identifier - identifier) )) - (call_expression "(uint)(uVar3 < uVar4)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar3 < uVar4)" ( (binary_expression "uVar3 < uVar4" identifier < identifier) )))) ))) < number_literal)) )) (compound_statement "{\n    return (int)*(char *)(param_3 + 0xd);\n  }" { (return_statement "return (int)*(char *)(param_3 + 0xd);" return (cast_expression "(int)*(char *)(param_3 + 0xd)" ( (type_descriptor "int" primitive_type) ) (pointer_expression "*(char *)(param_3 + 0xd)" * (cast_expression "(char *)(param_3 + 0xd)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0xd)" ( (binary_expression "param_3 + 0xd" identifier + number_literal) ))))) ;) }))) (if_statement "if (*(ushort *)(param_3 + 8) < 2) {\n    *(undefined1 *)(param_3 + 0xe) = 1;\n    return (int)*(char *)(param_3 + 10);\n  }" if (parenthesized_expression "(*(ushort *)(param_3 + 8) < 2)" ( (binary_expression "*(ushort *)(param_3 + 8) < 2" (pointer_expression "*(ushort *)(param_3 + 8)" * (cast_expression "(ushort *)(param_3 + 8)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 8)" ( (binary_expression "param_3 + 8" identifier + number_literal) )))) < number_literal) )) (compound_statement "{\n    *(undefined1 *)(param_3 + 0xe) = 1;\n    return (int)*(char *)(param_3 + 10);\n  }" { (expression_statement "*(undefined1 *)(param_3 + 0xe) = 1;" (assignment_expression "*(undefined1 *)(param_3 + 0xe) = 1" (pointer_expression "*(undefined1 *)(param_3 + 0xe)" * (cast_expression "(undefined1 *)(param_3 + 0xe)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0xe)" ( (binary_expression "param_3 + 0xe" identifier + number_literal) )))) = number_literal) ;) (return_statement "return (int)*(char *)(param_3 + 10);" return (cast_expression "(int)*(char *)(param_3 + 10)" ( (type_descriptor "int" primitive_type) ) (pointer_expression "*(char *)(param_3 + 10)" * (cast_expression "(char *)(param_3 + 10)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 10)" ( (binary_expression "param_3 + 10" identifier + number_literal) ))))) ;) })) (labeled_statement "code_r0x000712a8:\n  iVar1 = FUN_00070ba0();" statement_identifier : (expression_statement "iVar1 = FUN_00070ba0();" (assignment_expression "iVar1 = FUN_00070ba0()" identifier = (call_expression "FUN_00070ba0()" identifier (argument_list "()" ( )))) ;)) (return_statement "return iVar1;" return identifier ;) })))
(translation_unit "/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n\nint vdbeRecordCompareInt(int nKey1,void *pKey1,UnpackedRecord *pPKey2)\n\n{\n  uint uVar1;\n  int iVar2;\n  int iVar3;\n  char *pcVar4;\n  char *pcVar5;\n  uint *puVar6;\n  uint uVar7;\n  \n  iVar2 = nKey1;\n                    /* WARNING: Load size is inaccurate */\n  puVar6 = (uint *)((*pKey1 & 0x3f) + (int)pKey1);\n  switch(*(undefined1 *)((int)pKey1 + 1)) {\n  default:\n    nKey1 = 0;\n    goto LAB_000712a8;\n  case 1:\n    pcVar5 = (char *)(int)(char)*puVar6;\n    uVar7 = (int)pcVar5 >> 0x1f;\n    break;\n  case 2:\n    pcVar5 = (char *)(int)CONCAT11((char)*puVar6,*(char *)((int)puVar6 + 1));\n    uVar7 = (int)pcVar5 >> 0x1f;\n    break;\n  case 3:\n    pcVar5 = (char *)(int)CONCAT12((char)*puVar6,\n                                   *(ushort *)((int)puVar6 + 1) << 8 |\n                                   *(ushort *)((int)puVar6 + 1) >> 8);\n    uVar7 = (int)pcVar5 >> 0x1f;\n    break;\n  case 4:\n    uVar7 = *puVar6;\n    pcVar5 = (char *)(uVar7 >> 0x18 | (uVar7 & 0xff0000) >> 8 | (uVar7 & 0xff00) << 8 |\n                     uVar7 << 0x18);\n    uVar7 = (int)pcVar5 >> 0x1f;\n    break;\n  case 5:\n    uVar7 = *(uint *)((int)puVar6 + 2);\n    pcVar5 = (char *)(uVar7 >> 0x18 | (uVar7 & 0xff0000) >> 8 | (uVar7 & 0xff00) << 8 |\n                     uVar7 << 0x18);\n    uVar7 = (uint)CONCAT11((char)*puVar6,*(char *)((int)puVar6 + 1));\n    break;\n  case 6:\n    uVar7 = *puVar6;\n    uVar1 = puVar6[1];\n    uVar7 = uVar7 >> 0x18 | (uVar7 & 0xff0000) >> 8 | (uVar7 & 0xff00) << 8 | uVar7 << 0x18;\n    pcVar5 = (char *)(uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8 | (uVar1 & 0xff00) << 8 |\n                     uVar1 << 0x18);\n    break;\n  case 8:\n    uVar7 = 0;\n    pcVar5 = (char *)0x0;\n    break;\n  case 9:\n    uVar7 = 0;\n    pcVar4 = (pPKey2->aMem->u).zPType;\n    iVar3 = *(int *)((int)&pPKey2->aMem->u + 4);\n    if (-iVar3 < (int)(uint)((char *)0x1 < pcVar4)) goto LAB_000712dc;\n    pcVar5 = (char *)0x1;\n    goto LAB_00071360;\n  }\n  pcVar4 = (pPKey2->aMem->u).zPType;\n  iVar3 = *(int *)((int)&pPKey2->aMem->u + 4);\n  if ((SBORROW4(uVar7,iVar3) != SBORROW4(uVar7 - iVar3,(uint)(pcVar5 < pcVar4))) !=\n      (int)((uVar7 - iVar3) - (uint)(pcVar5 < pcVar4)) < 0) {\nLAB_000712dc:\n    return (int)pPKey2->r1;\n  }\nLAB_00071360:\n  if ((SBORROW4(iVar3,uVar7) != SBORROW4(iVar3 - uVar7,(uint)(pcVar4 < pcVar5))) !=\n      (int)((iVar3 - uVar7) - (uint)(pcVar4 < pcVar5)) < 0) {\n    return (int)pPKey2->r2;\n  }\n  if (pPKey2->nField < 2) {\n    pPKey2->eqSeen = '\x01';\n    return (int)pPKey2->default_rc;\n  }\n  nKey1 = 1;\nLAB_000712a8:\n  iVar2 = sqlite3VdbeRecordCompareWithSkip(iVar2,pKey1,pPKey2,nKey1);\n  return iVar2;\n}\n\n" comment (function_definition "int vdbeRecordCompareInt(int nKey1,void *pKey1,UnpackedRecord *pPKey2)\n\n{\n  uint uVar1;\n  int iVar2;\n  int iVar3;\n  char *pcVar4;\n  char *pcVar5;\n  uint *puVar6;\n  uint uVar7;\n  \n  iVar2 = nKey1;\n                    /* WARNING: Load size is inaccurate */\n  puVar6 = (uint *)((*pKey1 & 0x3f) + (int)pKey1);\n  switch(*(undefined1 *)((int)pKey1 + 1)) {\n  default:\n    nKey1 = 0;\n    goto LAB_000712a8;\n  case 1:\n    pcVar5 = (char *)(int)(char)*puVar6;\n    uVar7 = (int)pcVar5 >> 0x1f;\n    break;\n  case 2:\n    pcVar5 = (char *)(int)CONCAT11((char)*puVar6,*(char *)((int)puVar6 + 1));\n    uVar7 = (int)pcVar5 >> 0x1f;\n    break;\n  case 3:\n    pcVar5 = (char *)(int)CONCAT12((char)*puVar6,\n                                   *(ushort *)((int)puVar6 + 1) << 8 |\n                                   *(ushort *)((int)puVar6 + 1) >> 8);\n    uVar7 = (int)pcVar5 >> 0x1f;\n    break;\n  case 4:\n    uVar7 = *puVar6;\n    pcVar5 = (char *)(uVar7 >> 0x18 | (uVar7 & 0xff0000) >> 8 | (uVar7 & 0xff00) << 8 |\n                     uVar7 << 0x18);\n    uVar7 = (int)pcVar5 >> 0x1f;\n    break;\n  case 5:\n    uVar7 = *(uint *)((int)puVar6 + 2);\n    pcVar5 = (char *)(uVar7 >> 0x18 | (uVar7 & 0xff0000) >> 8 | (uVar7 & 0xff00) << 8 |\n                     uVar7 << 0x18);\n    uVar7 = (uint)CONCAT11((char)*puVar6,*(char *)((int)puVar6 + 1));\n    break;\n  case 6:\n    uVar7 = *puVar6;\n    uVar1 = puVar6[1];\n    uVar7 = uVar7 >> 0x18 | (uVar7 & 0xff0000) >> 8 | (uVar7 & 0xff00) << 8 | uVar7 << 0x18;\n    pcVar5 = (char *)(uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8 | (uVar1 & 0xff00) << 8 |\n                     uVar1 << 0x18);\n    break;\n  case 8:\n    uVar7 = 0;\n    pcVar5 = (char *)0x0;\n    break;\n  case 9:\n    uVar7 = 0;\n    pcVar4 = (pPKey2->aMem->u).zPType;\n    iVar3 = *(int *)((int)&pPKey2->aMem->u + 4);\n    if (-iVar3 < (int)(uint)((char *)0x1 < pcVar4)) goto LAB_000712dc;\n    pcVar5 = (char *)0x1;\n    goto LAB_00071360;\n  }\n  pcVar4 = (pPKey2->aMem->u).zPType;\n  iVar3 = *(int *)((int)&pPKey2->aMem->u + 4);\n  if ((SBORROW4(uVar7,iVar3) != SBORROW4(uVar7 - iVar3,(uint)(pcVar5 < pcVar4))) !=\n      (int)((uVar7 - iVar3) - (uint)(pcVar5 < pcVar4)) < 0) {\nLAB_000712dc:\n    return (int)pPKey2->r1;\n  }\nLAB_00071360:\n  if ((SBORROW4(iVar3,uVar7) != SBORROW4(iVar3 - uVar7,(uint)(pcVar4 < pcVar5))) !=\n      (int)((iVar3 - uVar7) - (uint)(pcVar4 < pcVar5)) < 0) {\n    return (int)pPKey2->r2;\n  }\n  if (pPKey2->nField < 2) {\n    pPKey2->eqSeen = '\x01';\n    return (int)pPKey2->default_rc;\n  }\n  nKey1 = 1;\nLAB_000712a8:\n  iVar2 = sqlite3VdbeRecordCompareWithSkip(iVar2,pKey1,pPKey2,nKey1);\n  return iVar2;\n}" primitive_type (function_declarator "vdbeRecordCompareInt(int nKey1,void *pKey1,UnpackedRecord *pPKey2)" identifier (parameter_list "(int nKey1,void *pKey1,UnpackedRecord *pPKey2)" ( (parameter_declaration "int nKey1" primitive_type identifier) , (parameter_declaration "void *pKey1" primitive_type (pointer_declarator "*pKey1" * identifier)) , (parameter_declaration "UnpackedRecord *pPKey2" type_identifier (pointer_declarator "*pPKey2" * identifier)) ))) (compound_statement "{\n  uint uVar1;\n  int iVar2;\n  int iVar3;\n  char *pcVar4;\n  char *pcVar5;\n  uint *puVar6;\n  uint uVar7;\n  \n  iVar2 = nKey1;\n                    /* WARNING: Load size is inaccurate */\n  puVar6 = (uint *)((*pKey1 & 0x3f) + (int)pKey1);\n  switch(*(undefined1 *)((int)pKey1 + 1)) {\n  default:\n    nKey1 = 0;\n    goto LAB_000712a8;\n  case 1:\n    pcVar5 = (char *)(int)(char)*puVar6;\n    uVar7 = (int)pcVar5 >> 0x1f;\n    break;\n  case 2:\n    pcVar5 = (char *)(int)CONCAT11((char)*puVar6,*(char *)((int)puVar6 + 1));\n    uVar7 = (int)pcVar5 >> 0x1f;\n    break;\n  case 3:\n    pcVar5 = (char *)(int)CONCAT12((char)*puVar6,\n                                   *(ushort *)((int)puVar6 + 1) << 8 |\n                                   *(ushort *)((int)puVar6 + 1) >> 8);\n    uVar7 = (int)pcVar5 >> 0x1f;\n    break;\n  case 4:\n    uVar7 = *puVar6;\n    pcVar5 = (char *)(uVar7 >> 0x18 | (uVar7 & 0xff0000) >> 8 | (uVar7 & 0xff00) << 8 |\n                     uVar7 << 0x18);\n    uVar7 = (int)pcVar5 >> 0x1f;\n    break;\n  case 5:\n    uVar7 = *(uint *)((int)puVar6 + 2);\n    pcVar5 = (char *)(uVar7 >> 0x18 | (uVar7 & 0xff0000) >> 8 | (uVar7 & 0xff00) << 8 |\n                     uVar7 << 0x18);\n    uVar7 = (uint)CONCAT11((char)*puVar6,*(char *)((int)puVar6 + 1));\n    break;\n  case 6:\n    uVar7 = *puVar6;\n    uVar1 = puVar6[1];\n    uVar7 = uVar7 >> 0x18 | (uVar7 & 0xff0000) >> 8 | (uVar7 & 0xff00) << 8 | uVar7 << 0x18;\n    pcVar5 = (char *)(uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8 | (uVar1 & 0xff00) << 8 |\n                     uVar1 << 0x18);\n    break;\n  case 8:\n    uVar7 = 0;\n    pcVar5 = (char *)0x0;\n    break;\n  case 9:\n    uVar7 = 0;\n    pcVar4 = (pPKey2->aMem->u).zPType;\n    iVar3 = *(int *)((int)&pPKey2->aMem->u + 4);\n    if (-iVar3 < (int)(uint)((char *)0x1 < pcVar4)) goto LAB_000712dc;\n    pcVar5 = (char *)0x1;\n    goto LAB_00071360;\n  }\n  pcVar4 = (pPKey2->aMem->u).zPType;\n  iVar3 = *(int *)((int)&pPKey2->aMem->u + 4);\n  if ((SBORROW4(uVar7,iVar3) != SBORROW4(uVar7 - iVar3,(uint)(pcVar5 < pcVar4))) !=\n      (int)((uVar7 - iVar3) - (uint)(pcVar5 < pcVar4)) < 0) {\nLAB_000712dc:\n    return (int)pPKey2->r1;\n  }\nLAB_00071360:\n  if ((SBORROW4(iVar3,uVar7) != SBORROW4(iVar3 - uVar7,(uint)(pcVar4 < pcVar5))) !=\n      (int)((iVar3 - uVar7) - (uint)(pcVar4 < pcVar5)) < 0) {\n    return (int)pPKey2->r2;\n  }\n  if (pPKey2->nField < 2) {\n    pPKey2->eqSeen = '\x01';\n    return (int)pPKey2->default_rc;\n  }\n  nKey1 = 1;\nLAB_000712a8:\n  iVar2 = sqlite3VdbeRecordCompareWithSkip(iVar2,pKey1,pPKey2,nKey1);\n  return iVar2;\n}" { (declaration "uint uVar1;" type_identifier identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "char *pcVar4;" primitive_type (pointer_declarator "*pcVar4" * identifier) ;) (declaration "char *pcVar5;" primitive_type (pointer_declarator "*pcVar5" * identifier) ;) (declaration "uint *puVar6;" type_identifier (pointer_declarator "*puVar6" * identifier) ;) (declaration "uint uVar7;" type_identifier identifier ;) (expression_statement "iVar2 = nKey1;" (assignment_expression "iVar2 = nKey1" identifier = identifier) ;) comment (expression_statement "puVar6 = (uint *)((*pKey1 & 0x3f) + (int)pKey1);" (assignment_expression "puVar6 = (uint *)((*pKey1 & 0x3f) + (int)pKey1)" identifier = (cast_expression "(uint *)((*pKey1 & 0x3f) + (int)pKey1)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((*pKey1 & 0x3f) + (int)pKey1)" ( (binary_expression "(*pKey1 & 0x3f) + (int)pKey1" (parenthesized_expression "(*pKey1 & 0x3f)" ( (binary_expression "*pKey1 & 0x3f" (pointer_expression "*pKey1" * identifier) & number_literal) )) + (cast_expression "(int)pKey1" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;) (switch_statement "switch(*(undefined1 *)((int)pKey1 + 1)) {\n  default:\n    nKey1 = 0;\n    goto LAB_000712a8;\n  case 1:\n    pcVar5 = (char *)(int)(char)*puVar6;\n    uVar7 = (int)pcVar5 >> 0x1f;\n    break;\n  case 2:\n    pcVar5 = (char *)(int)CONCAT11((char)*puVar6,*(char *)((int)puVar6 + 1));\n    uVar7 = (int)pcVar5 >> 0x1f;\n    break;\n  case 3:\n    pcVar5 = (char *)(int)CONCAT12((char)*puVar6,\n                                   *(ushort *)((int)puVar6 + 1) << 8 |\n                                   *(ushort *)((int)puVar6 + 1) >> 8);\n    uVar7 = (int)pcVar5 >> 0x1f;\n    break;\n  case 4:\n    uVar7 = *puVar6;\n    pcVar5 = (char *)(uVar7 >> 0x18 | (uVar7 & 0xff0000) >> 8 | (uVar7 & 0xff00) << 8 |\n                     uVar7 << 0x18);\n    uVar7 = (int)pcVar5 >> 0x1f;\n    break;\n  case 5:\n    uVar7 = *(uint *)((int)puVar6 + 2);\n    pcVar5 = (char *)(uVar7 >> 0x18 | (uVar7 & 0xff0000) >> 8 | (uVar7 & 0xff00) << 8 |\n                     uVar7 << 0x18);\n    uVar7 = (uint)CONCAT11((char)*puVar6,*(char *)((int)puVar6 + 1));\n    break;\n  case 6:\n    uVar7 = *puVar6;\n    uVar1 = puVar6[1];\n    uVar7 = uVar7 >> 0x18 | (uVar7 & 0xff0000) >> 8 | (uVar7 & 0xff00) << 8 | uVar7 << 0x18;\n    pcVar5 = (char *)(uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8 | (uVar1 & 0xff00) << 8 |\n                     uVar1 << 0x18);\n    break;\n  case 8:\n    uVar7 = 0;\n    pcVar5 = (char *)0x0;\n    break;\n  case 9:\n    uVar7 = 0;\n    pcVar4 = (pPKey2->aMem->u).zPType;\n    iVar3 = *(int *)((int)&pPKey2->aMem->u + 4);\n    if (-iVar3 < (int)(uint)((char *)0x1 < pcVar4)) goto LAB_000712dc;\n    pcVar5 = (char *)0x1;\n    goto LAB_00071360;\n  }" switch (parenthesized_expression "(*(undefined1 *)((int)pKey1 + 1))" ( (pointer_expression "*(undefined1 *)((int)pKey1 + 1)" * (cast_expression "(undefined1 *)((int)pKey1 + 1)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pKey1 + 1)" ( (binary_expression "(int)pKey1 + 1" (cast_expression "(int)pKey1" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) )) (compound_statement "{\n  default:\n    nKey1 = 0;\n    goto LAB_000712a8;\n  case 1:\n    pcVar5 = (char *)(int)(char)*puVar6;\n    uVar7 = (int)pcVar5 >> 0x1f;\n    break;\n  case 2:\n    pcVar5 = (char *)(int)CONCAT11((char)*puVar6,*(char *)((int)puVar6 + 1));\n    uVar7 = (int)pcVar5 >> 0x1f;\n    break;\n  case 3:\n    pcVar5 = (char *)(int)CONCAT12((char)*puVar6,\n                                   *(ushort *)((int)puVar6 + 1) << 8 |\n                                   *(ushort *)((int)puVar6 + 1) >> 8);\n    uVar7 = (int)pcVar5 >> 0x1f;\n    break;\n  case 4:\n    uVar7 = *puVar6;\n    pcVar5 = (char *)(uVar7 >> 0x18 | (uVar7 & 0xff0000) >> 8 | (uVar7 & 0xff00) << 8 |\n                     uVar7 << 0x18);\n    uVar7 = (int)pcVar5 >> 0x1f;\n    break;\n  case 5:\n    uVar7 = *(uint *)((int)puVar6 + 2);\n    pcVar5 = (char *)(uVar7 >> 0x18 | (uVar7 & 0xff0000) >> 8 | (uVar7 & 0xff00) << 8 |\n                     uVar7 << 0x18);\n    uVar7 = (uint)CONCAT11((char)*puVar6,*(char *)((int)puVar6 + 1));\n    break;\n  case 6:\n    uVar7 = *puVar6;\n    uVar1 = puVar6[1];\n    uVar7 = uVar7 >> 0x18 | (uVar7 & 0xff0000) >> 8 | (uVar7 & 0xff00) << 8 | uVar7 << 0x18;\n    pcVar5 = (char *)(uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8 | (uVar1 & 0xff00) << 8 |\n                     uVar1 << 0x18);\n    break;\n  case 8:\n    uVar7 = 0;\n    pcVar5 = (char *)0x0;\n    break;\n  case 9:\n    uVar7 = 0;\n    pcVar4 = (pPKey2->aMem->u).zPType;\n    iVar3 = *(int *)((int)&pPKey2->aMem->u + 4);\n    if (-iVar3 < (int)(uint)((char *)0x1 < pcVar4)) goto LAB_000712dc;\n    pcVar5 = (char *)0x1;\n    goto LAB_00071360;\n  }" { (case_statement "default:\n    nKey1 = 0;\n    goto LAB_000712a8;" default : (expression_statement "nKey1 = 0;" (assignment_expression "nKey1 = 0" identifier = number_literal) ;) (goto_statement "goto LAB_000712a8;" goto statement_identifier ;)) (case_statement "case 1:\n    pcVar5 = (char *)(int)(char)*puVar6;\n    uVar7 = (int)pcVar5 >> 0x1f;\n    break;" case number_literal : (expression_statement "pcVar5 = (char *)(int)(char)*puVar6;" (assignment_expression "pcVar5 = (char *)(int)(char)*puVar6" identifier = (cast_expression "(char *)(int)(char)*puVar6" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (cast_expression "(int)(char)*puVar6" ( (type_descriptor "int" primitive_type) ) (cast_expression "(char)*puVar6" ( (type_descriptor "char" primitive_type) ) (pointer_expression "*puVar6" * identifier))))) ;) (expression_statement "uVar7 = (int)pcVar5 >> 0x1f;" (assignment_expression "uVar7 = (int)pcVar5 >> 0x1f" identifier = (binary_expression "(int)pcVar5 >> 0x1f" (cast_expression "(int)pcVar5" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal)) ;) (break_statement "break;" break ;)) (case_statement "case 2:\n    pcVar5 = (char *)(int)CONCAT11((char)*puVar6,*(char *)((int)puVar6 + 1));\n    uVar7 = (int)pcVar5 >> 0x1f;\n    break;" case number_literal : (expression_statement "pcVar5 = (char *)(int)CONCAT11((char)*puVar6,*(char *)((int)puVar6 + 1));" (assignment_expression "pcVar5 = (char *)(int)CONCAT11((char)*puVar6,*(char *)((int)puVar6 + 1))" identifier = (cast_expression "(char *)(int)CONCAT11((char)*puVar6,*(char *)((int)puVar6 + 1))" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (cast_expression "(int)CONCAT11((char)*puVar6,*(char *)((int)puVar6 + 1))" ( (type_descriptor "int" primitive_type) ) (call_expression "CONCAT11((char)*puVar6,*(char *)((int)puVar6 + 1))" identifier (argument_list "((char)*puVar6,*(char *)((int)puVar6 + 1))" ( (cast_expression "(char)*puVar6" ( (type_descriptor "char" primitive_type) ) (pointer_expression "*puVar6" * identifier)) , (pointer_expression "*(char *)((int)puVar6 + 1)" * (cast_expression "(char *)((int)puVar6 + 1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar6 + 1)" ( (binary_expression "(int)puVar6 + 1" (cast_expression "(int)puVar6" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) )))))) ;) (expression_statement "uVar7 = (int)pcVar5 >> 0x1f;" (assignment_expression "uVar7 = (int)pcVar5 >> 0x1f" identifier = (binary_expression "(int)pcVar5 >> 0x1f" (cast_expression "(int)pcVar5" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal)) ;) (break_statement "break;" break ;)) (case_statement "case 3:\n    pcVar5 = (char *)(int)CONCAT12((char)*puVar6,\n                                   *(ushort *)((int)puVar6 + 1) << 8 |\n                                   *(ushort *)((int)puVar6 + 1) >> 8);\n    uVar7 = (int)pcVar5 >> 0x1f;\n    break;" case number_literal : (expression_statement "pcVar5 = (char *)(int)CONCAT12((char)*puVar6,\n                                   *(ushort *)((int)puVar6 + 1) << 8 |\n                                   *(ushort *)((int)puVar6 + 1) >> 8);" (assignment_expression "pcVar5 = (char *)(int)CONCAT12((char)*puVar6,\n                                   *(ushort *)((int)puVar6 + 1) << 8 |\n                                   *(ushort *)((int)puVar6 + 1) >> 8)" identifier = (cast_expression "(char *)(int)CONCAT12((char)*puVar6,\n                                   *(ushort *)((int)puVar6 + 1) << 8 |\n                                   *(ushort *)((int)puVar6 + 1) >> 8)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (cast_expression "(int)CONCAT12((char)*puVar6,\n                                   *(ushort *)((int)puVar6 + 1) << 8 |\n                                   *(ushort *)((int)puVar6 + 1) >> 8)" ( (type_descriptor "int" primitive_type) ) (call_expression "CONCAT12((char)*puVar6,\n                                   *(ushort *)((int)puVar6 + 1) << 8 |\n                                   *(ushort *)((int)puVar6 + 1) >> 8)" identifier (argument_list "((char)*puVar6,\n                                   *(ushort *)((int)puVar6 + 1) << 8 |\n                                   *(ushort *)((int)puVar6 + 1) >> 8)" ( (cast_expression "(char)*puVar6" ( (type_descriptor "char" primitive_type) ) (pointer_expression "*puVar6" * identifier)) , (binary_expression "*(ushort *)((int)puVar6 + 1) << 8 |\n                                   *(ushort *)((int)puVar6 + 1) >> 8" (binary_expression "*(ushort *)((int)puVar6 + 1) << 8" (pointer_expression "*(ushort *)((int)puVar6 + 1)" * (cast_expression "(ushort *)((int)puVar6 + 1)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar6 + 1)" ( (binary_expression "(int)puVar6 + 1" (cast_expression "(int)puVar6" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) << number_literal) | (binary_expression "*(ushort *)((int)puVar6 + 1) >> 8" (pointer_expression "*(ushort *)((int)puVar6 + 1)" * (cast_expression "(ushort *)((int)puVar6 + 1)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar6 + 1)" ( (binary_expression "(int)puVar6 + 1" (cast_expression "(int)puVar6" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) >> number_literal)) )))))) ;) (expression_statement "uVar7 = (int)pcVar5 >> 0x1f;" (assignment_expression "uVar7 = (int)pcVar5 >> 0x1f" identifier = (binary_expression "(int)pcVar5 >> 0x1f" (cast_expression "(int)pcVar5" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal)) ;) (break_statement "break;" break ;)) (case_statement "case 4:\n    uVar7 = *puVar6;\n    pcVar5 = (char *)(uVar7 >> 0x18 | (uVar7 & 0xff0000) >> 8 | (uVar7 & 0xff00) << 8 |\n                     uVar7 << 0x18);\n    uVar7 = (int)pcVar5 >> 0x1f;\n    break;" case number_literal : (expression_statement "uVar7 = *puVar6;" (assignment_expression "uVar7 = *puVar6" identifier = (pointer_expression "*puVar6" * identifier)) ;) (expression_statement "pcVar5 = (char *)(uVar7 >> 0x18 | (uVar7 & 0xff0000) >> 8 | (uVar7 & 0xff00) << 8 |\n                     uVar7 << 0x18);" (assignment_expression "pcVar5 = (char *)(uVar7 >> 0x18 | (uVar7 & 0xff0000) >> 8 | (uVar7 & 0xff00) << 8 |\n                     uVar7 << 0x18)" identifier = (cast_expression "(char *)(uVar7 >> 0x18 | (uVar7 & 0xff0000) >> 8 | (uVar7 & 0xff00) << 8 |\n                     uVar7 << 0x18)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar7 >> 0x18 | (uVar7 & 0xff0000) >> 8 | (uVar7 & 0xff00) << 8 |\n                     uVar7 << 0x18)" ( (binary_expression "uVar7 >> 0x18 | (uVar7 & 0xff0000) >> 8 | (uVar7 & 0xff00) << 8 |\n                     uVar7 << 0x18" (binary_expression "uVar7 >> 0x18 | (uVar7 & 0xff0000) >> 8 | (uVar7 & 0xff00) << 8" (binary_expression "uVar7 >> 0x18 | (uVar7 & 0xff0000) >> 8" (binary_expression "uVar7 >> 0x18" identifier >> number_literal) | (binary_expression "(uVar7 & 0xff0000) >> 8" (parenthesized_expression "(uVar7 & 0xff0000)" ( (binary_expression "uVar7 & 0xff0000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar7 & 0xff00) << 8" (parenthesized_expression "(uVar7 & 0xff00)" ( (binary_expression "uVar7 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "uVar7 << 0x18" identifier << number_literal)) )))) ;) (expression_statement "uVar7 = (int)pcVar5 >> 0x1f;" (assignment_expression "uVar7 = (int)pcVar5 >> 0x1f" identifier = (binary_expression "(int)pcVar5 >> 0x1f" (cast_expression "(int)pcVar5" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal)) ;) (break_statement "break;" break ;)) (case_statement "case 5:\n    uVar7 = *(uint *)((int)puVar6 + 2);\n    pcVar5 = (char *)(uVar7 >> 0x18 | (uVar7 & 0xff0000) >> 8 | (uVar7 & 0xff00) << 8 |\n                     uVar7 << 0x18);\n    uVar7 = (uint)CONCAT11((char)*puVar6,*(char *)((int)puVar6 + 1));\n    break;" case number_literal : (expression_statement "uVar7 = *(uint *)((int)puVar6 + 2);" (assignment_expression "uVar7 = *(uint *)((int)puVar6 + 2)" identifier = (pointer_expression "*(uint *)((int)puVar6 + 2)" * (cast_expression "(uint *)((int)puVar6 + 2)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar6 + 2)" ( (binary_expression "(int)puVar6 + 2" (cast_expression "(int)puVar6" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (expression_statement "pcVar5 = (char *)(uVar7 >> 0x18 | (uVar7 & 0xff0000) >> 8 | (uVar7 & 0xff00) << 8 |\n                     uVar7 << 0x18);" (assignment_expression "pcVar5 = (char *)(uVar7 >> 0x18 | (uVar7 & 0xff0000) >> 8 | (uVar7 & 0xff00) << 8 |\n                     uVar7 << 0x18)" identifier = (cast_expression "(char *)(uVar7 >> 0x18 | (uVar7 & 0xff0000) >> 8 | (uVar7 & 0xff00) << 8 |\n                     uVar7 << 0x18)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar7 >> 0x18 | (uVar7 & 0xff0000) >> 8 | (uVar7 & 0xff00) << 8 |\n                     uVar7 << 0x18)" ( (binary_expression "uVar7 >> 0x18 | (uVar7 & 0xff0000) >> 8 | (uVar7 & 0xff00) << 8 |\n                     uVar7 << 0x18" (binary_expression "uVar7 >> 0x18 | (uVar7 & 0xff0000) >> 8 | (uVar7 & 0xff00) << 8" (binary_expression "uVar7 >> 0x18 | (uVar7 & 0xff0000) >> 8" (binary_expression "uVar7 >> 0x18" identifier >> number_literal) | (binary_expression "(uVar7 & 0xff0000) >> 8" (parenthesized_expression "(uVar7 & 0xff0000)" ( (binary_expression "uVar7 & 0xff0000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar7 & 0xff00) << 8" (parenthesized_expression "(uVar7 & 0xff00)" ( (binary_expression "uVar7 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "uVar7 << 0x18" identifier << number_literal)) )))) ;) (expression_statement "uVar7 = (uint)CONCAT11((char)*puVar6,*(char *)((int)puVar6 + 1));" (assignment_expression "uVar7 = (uint)CONCAT11((char)*puVar6,*(char *)((int)puVar6 + 1))" identifier = (cast_expression "(uint)CONCAT11((char)*puVar6,*(char *)((int)puVar6 + 1))" ( (type_descriptor "uint" type_identifier) ) (call_expression "CONCAT11((char)*puVar6,*(char *)((int)puVar6 + 1))" identifier (argument_list "((char)*puVar6,*(char *)((int)puVar6 + 1))" ( (cast_expression "(char)*puVar6" ( (type_descriptor "char" primitive_type) ) (pointer_expression "*puVar6" * identifier)) , (pointer_expression "*(char *)((int)puVar6 + 1)" * (cast_expression "(char *)((int)puVar6 + 1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar6 + 1)" ( (binary_expression "(int)puVar6 + 1" (cast_expression "(int)puVar6" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ))))) ;) (break_statement "break;" break ;)) (case_statement "case 6:\n    uVar7 = *puVar6;\n    uVar1 = puVar6[1];\n    uVar7 = uVar7 >> 0x18 | (uVar7 & 0xff0000) >> 8 | (uVar7 & 0xff00) << 8 | uVar7 << 0x18;\n    pcVar5 = (char *)(uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8 | (uVar1 & 0xff00) << 8 |\n                     uVar1 << 0x18);\n    break;" case number_literal : (expression_statement "uVar7 = *puVar6;" (assignment_expression "uVar7 = *puVar6" identifier = (pointer_expression "*puVar6" * identifier)) ;) (expression_statement "uVar1 = puVar6[1];" (assignment_expression "uVar1 = puVar6[1]" identifier = (subscript_expression "puVar6[1]" identifier [ number_literal ])) ;) (expression_statement "uVar7 = uVar7 >> 0x18 | (uVar7 & 0xff0000) >> 8 | (uVar7 & 0xff00) << 8 | uVar7 << 0x18;" (assignment_expression "uVar7 = uVar7 >> 0x18 | (uVar7 & 0xff0000) >> 8 | (uVar7 & 0xff00) << 8 | uVar7 << 0x18" identifier = (binary_expression "uVar7 >> 0x18 | (uVar7 & 0xff0000) >> 8 | (uVar7 & 0xff00) << 8 | uVar7 << 0x18" (binary_expression "uVar7 >> 0x18 | (uVar7 & 0xff0000) >> 8 | (uVar7 & 0xff00) << 8" (binary_expression "uVar7 >> 0x18 | (uVar7 & 0xff0000) >> 8" (binary_expression "uVar7 >> 0x18" identifier >> number_literal) | (binary_expression "(uVar7 & 0xff0000) >> 8" (parenthesized_expression "(uVar7 & 0xff0000)" ( (binary_expression "uVar7 & 0xff0000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar7 & 0xff00) << 8" (parenthesized_expression "(uVar7 & 0xff00)" ( (binary_expression "uVar7 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "uVar7 << 0x18" identifier << number_literal))) ;) (expression_statement "pcVar5 = (char *)(uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8 | (uVar1 & 0xff00) << 8 |\n                     uVar1 << 0x18);" (assignment_expression "pcVar5 = (char *)(uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8 | (uVar1 & 0xff00) << 8 |\n                     uVar1 << 0x18)" identifier = (cast_expression "(char *)(uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8 | (uVar1 & 0xff00) << 8 |\n                     uVar1 << 0x18)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8 | (uVar1 & 0xff00) << 8 |\n                     uVar1 << 0x18)" ( (binary_expression "uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8 | (uVar1 & 0xff00) << 8 |\n                     uVar1 << 0x18" (binary_expression "uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8 | (uVar1 & 0xff00) << 8" (binary_expression "uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8" (binary_expression "uVar1 >> 0x18" identifier >> number_literal) | (binary_expression "(uVar1 & 0xff0000) >> 8" (parenthesized_expression "(uVar1 & 0xff0000)" ( (binary_expression "uVar1 & 0xff0000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar1 & 0xff00) << 8" (parenthesized_expression "(uVar1 & 0xff00)" ( (binary_expression "uVar1 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "uVar1 << 0x18" identifier << number_literal)) )))) ;) (break_statement "break;" break ;)) (case_statement "case 8:\n    uVar7 = 0;\n    pcVar5 = (char *)0x0;\n    break;" case number_literal : (expression_statement "uVar7 = 0;" (assignment_expression "uVar7 = 0" identifier = number_literal) ;) (expression_statement "pcVar5 = (char *)0x0;" (assignment_expression "pcVar5 = (char *)0x0" identifier = (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (break_statement "break;" break ;)) (case_statement "case 9:\n    uVar7 = 0;\n    pcVar4 = (pPKey2->aMem->u).zPType;\n    iVar3 = *(int *)((int)&pPKey2->aMem->u + 4);\n    if (-iVar3 < (int)(uint)((char *)0x1 < pcVar4)) goto LAB_000712dc;\n    pcVar5 = (char *)0x1;\n    goto LAB_00071360;" case number_literal : (expression_statement "uVar7 = 0;" (assignment_expression "uVar7 = 0" identifier = number_literal) ;) (expression_statement "pcVar4 = (pPKey2->aMem->u).zPType;" (assignment_expression "pcVar4 = (pPKey2->aMem->u).zPType" identifier = (field_expression "(pPKey2->aMem->u).zPType" (parenthesized_expression "(pPKey2->aMem->u)" ( (field_expression "pPKey2->aMem->u" (field_expression "pPKey2->aMem" identifier -> field_identifier) -> field_identifier) )) . field_identifier)) ;) (expression_statement "iVar3 = *(int *)((int)&pPKey2->aMem->u + 4);" (assignment_expression "iVar3 = *(int *)((int)&pPKey2->aMem->u + 4)" identifier = (pointer_expression "*(int *)((int)&pPKey2->aMem->u + 4)" * (cast_expression "(int *)((int)&pPKey2->aMem->u + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&pPKey2->aMem->u + 4)" ( (binary_expression "(int)&pPKey2->aMem->u + 4" (cast_expression "(int)&pPKey2->aMem->u" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&pPKey2->aMem->u" & (field_expression "pPKey2->aMem->u" (field_expression "pPKey2->aMem" identifier -> field_identifier) -> field_identifier))) + number_literal) ))))) ;) (if_statement "if (-iVar3 < (int)(uint)((char *)0x1 < pcVar4)) goto LAB_000712dc;" if (parenthesized_expression "(-iVar3 < (int)(uint)((char *)0x1 < pcVar4))" ( (binary_expression "-iVar3 < (int)(uint)((char *)0x1 < pcVar4)" (unary_expression "-iVar3" - identifier) < (cast_expression "(int)(uint)((char *)0x1 < pcVar4)" ( (type_descriptor "int" primitive_type) ) (call_expression "(uint)((char *)0x1 < pcVar4)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((char *)0x1 < pcVar4)" ( (binary_expression "(char *)0x1 < pcVar4" (cast_expression "(char *)0x1" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal) < identifier) ))))) )) (goto_statement "goto LAB_000712dc;" goto statement_identifier ;)) (expression_statement "pcVar5 = (char *)0x1;" (assignment_expression "pcVar5 = (char *)0x1" identifier = (cast_expression "(char *)0x1" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (goto_statement "goto LAB_00071360;" goto statement_identifier ;)) })) (expression_statement "pcVar4 = (pPKey2->aMem->u).zPType;" (assignment_expression "pcVar4 = (pPKey2->aMem->u).zPType" identifier = (field_expression "(pPKey2->aMem->u).zPType" (parenthesized_expression "(pPKey2->aMem->u)" ( (field_expression "pPKey2->aMem->u" (field_expression "pPKey2->aMem" identifier -> field_identifier) -> field_identifier) )) . field_identifier)) ;) (expression_statement "iVar3 = *(int *)((int)&pPKey2->aMem->u + 4);" (assignment_expression "iVar3 = *(int *)((int)&pPKey2->aMem->u + 4)" identifier = (pointer_expression "*(int *)((int)&pPKey2->aMem->u + 4)" * (cast_expression "(int *)((int)&pPKey2->aMem->u + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&pPKey2->aMem->u + 4)" ( (binary_expression "(int)&pPKey2->aMem->u + 4" (cast_expression "(int)&pPKey2->aMem->u" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&pPKey2->aMem->u" & (field_expression "pPKey2->aMem->u" (field_expression "pPKey2->aMem" identifier -> field_identifier) -> field_identifier))) + number_literal) ))))) ;) (if_statement "if ((SBORROW4(uVar7,iVar3) != SBORROW4(uVar7 - iVar3,(uint)(pcVar5 < pcVar4))) !=\n      (int)((uVar7 - iVar3) - (uint)(pcVar5 < pcVar4)) < 0) {\nLAB_000712dc:\n    return (int)pPKey2->r1;\n  }" if (parenthesized_expression "((SBORROW4(uVar7,iVar3) != SBORROW4(uVar7 - iVar3,(uint)(pcVar5 < pcVar4))) !=\n      (int)((uVar7 - iVar3) - (uint)(pcVar5 < pcVar4)) < 0)" ( (binary_expression "(SBORROW4(uVar7,iVar3) != SBORROW4(uVar7 - iVar3,(uint)(pcVar5 < pcVar4))) !=\n      (int)((uVar7 - iVar3) - (uint)(pcVar5 < pcVar4)) < 0" (parenthesized_expression "(SBORROW4(uVar7,iVar3) != SBORROW4(uVar7 - iVar3,(uint)(pcVar5 < pcVar4)))" ( (binary_expression "SBORROW4(uVar7,iVar3) != SBORROW4(uVar7 - iVar3,(uint)(pcVar5 < pcVar4))" (call_expression "SBORROW4(uVar7,iVar3)" identifier (argument_list "(uVar7,iVar3)" ( identifier , identifier ))) != (call_expression "SBORROW4(uVar7 - iVar3,(uint)(pcVar5 < pcVar4))" identifier (argument_list "(uVar7 - iVar3,(uint)(pcVar5 < pcVar4))" ( (binary_expression "uVar7 - iVar3" identifier - identifier) , (call_expression "(uint)(pcVar5 < pcVar4)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(pcVar5 < pcVar4)" ( (binary_expression "pcVar5 < pcVar4" identifier < identifier) ))) )))) )) != (binary_expression "(int)((uVar7 - iVar3) - (uint)(pcVar5 < pcVar4)) < 0" (cast_expression "(int)((uVar7 - iVar3) - (uint)(pcVar5 < pcVar4))" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((uVar7 - iVar3) - (uint)(pcVar5 < pcVar4))" ( (binary_expression "(uVar7 - iVar3) - (uint)(pcVar5 < pcVar4)" (parenthesized_expression "(uVar7 - iVar3)" ( (binary_expression "uVar7 - iVar3" identifier - identifier) )) - (call_expression "(uint)(pcVar5 < pcVar4)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(pcVar5 < pcVar4)" ( (binary_expression "pcVar5 < pcVar4" identifier < identifier) )))) ))) < number_literal)) )) (compound_statement "{\nLAB_000712dc:\n    return (int)pPKey2->r1;\n  }" { (labeled_statement "LAB_000712dc:\n    return (int)pPKey2->r1;" statement_identifier : (return_statement "return (int)pPKey2->r1;" return (cast_expression "(int)pPKey2->r1" ( (type_descriptor "int" primitive_type) ) (field_expression "pPKey2->r1" identifier -> field_identifier)) ;)) })) (labeled_statement "LAB_00071360:\n  if ((SBORROW4(iVar3,uVar7) != SBORROW4(iVar3 - uVar7,(uint)(pcVar4 < pcVar5))) !=\n      (int)((iVar3 - uVar7) - (uint)(pcVar4 < pcVar5)) < 0) {\n    return (int)pPKey2->r2;\n  }" statement_identifier : (if_statement "if ((SBORROW4(iVar3,uVar7) != SBORROW4(iVar3 - uVar7,(uint)(pcVar4 < pcVar5))) !=\n      (int)((iVar3 - uVar7) - (uint)(pcVar4 < pcVar5)) < 0) {\n    return (int)pPKey2->r2;\n  }" if (parenthesized_expression "((SBORROW4(iVar3,uVar7) != SBORROW4(iVar3 - uVar7,(uint)(pcVar4 < pcVar5))) !=\n      (int)((iVar3 - uVar7) - (uint)(pcVar4 < pcVar5)) < 0)" ( (binary_expression "(SBORROW4(iVar3,uVar7) != SBORROW4(iVar3 - uVar7,(uint)(pcVar4 < pcVar5))) !=\n      (int)((iVar3 - uVar7) - (uint)(pcVar4 < pcVar5)) < 0" (parenthesized_expression "(SBORROW4(iVar3,uVar7) != SBORROW4(iVar3 - uVar7,(uint)(pcVar4 < pcVar5)))" ( (binary_expression "SBORROW4(iVar3,uVar7) != SBORROW4(iVar3 - uVar7,(uint)(pcVar4 < pcVar5))" (call_expression "SBORROW4(iVar3,uVar7)" identifier (argument_list "(iVar3,uVar7)" ( identifier , identifier ))) != (call_expression "SBORROW4(iVar3 - uVar7,(uint)(pcVar4 < pcVar5))" identifier (argument_list "(iVar3 - uVar7,(uint)(pcVar4 < pcVar5))" ( (binary_expression "iVar3 - uVar7" identifier - identifier) , (call_expression "(uint)(pcVar4 < pcVar5)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(pcVar4 < pcVar5)" ( (binary_expression "pcVar4 < pcVar5" identifier < identifier) ))) )))) )) != (binary_expression "(int)((iVar3 - uVar7) - (uint)(pcVar4 < pcVar5)) < 0" (cast_expression "(int)((iVar3 - uVar7) - (uint)(pcVar4 < pcVar5))" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((iVar3 - uVar7) - (uint)(pcVar4 < pcVar5))" ( (binary_expression "(iVar3 - uVar7) - (uint)(pcVar4 < pcVar5)" (parenthesized_expression "(iVar3 - uVar7)" ( (binary_expression "iVar3 - uVar7" identifier - identifier) )) - (call_expression "(uint)(pcVar4 < pcVar5)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(pcVar4 < pcVar5)" ( (binary_expression "pcVar4 < pcVar5" identifier < identifier) )))) ))) < number_literal)) )) (compound_statement "{\n    return (int)pPKey2->r2;\n  }" { (return_statement "return (int)pPKey2->r2;" return (cast_expression "(int)pPKey2->r2" ( (type_descriptor "int" primitive_type) ) (field_expression "pPKey2->r2" identifier -> field_identifier)) ;) }))) (if_statement "if (pPKey2->nField < 2) {\n    pPKey2->eqSeen = '\x01';\n    return (int)pPKey2->default_rc;\n  }" if (parenthesized_expression "(pPKey2->nField < 2)" ( (binary_expression "pPKey2->nField < 2" (field_expression "pPKey2->nField" identifier -> field_identifier) < number_literal) )) (compound_statement "{\n    pPKey2->eqSeen = '\x01';\n    return (int)pPKey2->default_rc;\n  }" { (expression_statement "pPKey2->eqSeen = '\x01';" (assignment_expression "pPKey2->eqSeen = '\x01'" (field_expression "pPKey2->eqSeen" identifier -> field_identifier) = (char_literal "'\x01'" ' escape_sequence ')) ;) (return_statement "return (int)pPKey2->default_rc;" return (cast_expression "(int)pPKey2->default_rc" ( (type_descriptor "int" primitive_type) ) (field_expression "pPKey2->default_rc" identifier -> field_identifier)) ;) })) (expression_statement "nKey1 = 1;" (assignment_expression "nKey1 = 1" identifier = number_literal) ;) (labeled_statement "LAB_000712a8:\n  iVar2 = sqlite3VdbeRecordCompareWithSkip(iVar2,pKey1,pPKey2,nKey1);" statement_identifier : (expression_statement "iVar2 = sqlite3VdbeRecordCompareWithSkip(iVar2,pKey1,pPKey2,nKey1);" (assignment_expression "iVar2 = sqlite3VdbeRecordCompareWithSkip(iVar2,pKey1,pPKey2,nKey1)" identifier = (call_expression "sqlite3VdbeRecordCompareWithSkip(iVar2,pKey1,pPKey2,nKey1)" identifier (argument_list "(iVar2,pKey1,pPKey2,nKey1)" ( identifier , identifier , identifier , identifier )))) ;)) (return_statement "return iVar2;" return identifier ;) })))
(translation_unit "int FUN_00071260(undefined4 param_1,byte *param_2,int param_3)\n\n{\n  int iVar1;\n  uint uVar2;\n  uint uVar3;\n  uint uVar4;\n  uint *puVar5;\n  uint uVar6;\n  \n  puVar5 = (uint *)(param_2 + (*param_2 & 0x3f));\n  switch(param_2[1]) {\n  default:\n    goto code_r0x000712a8;\n  case 1:\n    uVar4 = (uint)(char)(byte)*puVar5;\n    uVar6 = (int)uVar4 >> 0x1f;\n    break;\n  case 2:\n    uVar4 = (uint)CONCAT11((byte)*puVar5,*(byte *)((int)puVar5 + 1));\n    uVar6 = (int)uVar4 >> 0x1f;\n    break;\n  case 3:\n    uVar4 = (uint)CONCAT12((byte)*puVar5,\n                           *(ushort *)((int)puVar5 + 1) << 8 | *(ushort *)((int)puVar5 + 1) >> 8);\n    uVar6 = (int)uVar4 >> 0x1f;\n    break;\n  case 4:\n    uVar3 = *puVar5;\n    uVar4 = uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 | uVar3 << 0x18;\n    uVar6 = (int)uVar4 >> 0x1f;\n    break;\n  case 5:\n    uVar3 = *(uint *)((int)puVar5 + 2);\n    uVar4 = uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 | uVar3 << 0x18;\n    uVar6 = (uint)CONCAT11((byte)*puVar5,*(byte *)((int)puVar5 + 1));\n    break;\n  case 6:\n    uVar3 = *puVar5;\n    uVar2 = puVar5[1];\n    uVar6 = uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 | uVar3 << 0x18;\n    uVar4 = uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 | uVar2 << 0x18;\n    break;\n  case 8:\n    uVar6 = 0;\n    uVar4 = 0;\n    break;\n  case 9:\n    uVar6 = 0;\n    uVar3 = **(uint **)(param_3 + 4);\n    uVar2 = (*(uint **)(param_3 + 4))[1];\n    if ((int)-uVar2 < (int)(uint)(1 < uVar3)) goto code_r0x000712dc;\n    uVar4 = 1;\n    goto code_r0x00071360;\n  }\n  uVar3 = **(uint **)(param_3 + 4);\n  uVar2 = (*(uint **)(param_3 + 4))[1];\n  if ((SBORROW4(uVar6,uVar2) != SBORROW4(uVar6 - uVar2,(uint)(uVar4 < uVar3))) !=\n      (int)((uVar6 - uVar2) - (uint)(uVar4 < uVar3)) < 0) {\ncode_r0x000712dc:\n    return (int)*(char *)(param_3 + 0xc);\n  }\ncode_r0x00071360:\n  if ((SBORROW4(uVar2,uVar6) != SBORROW4(uVar2 - uVar6,(uint)(uVar3 < uVar4))) !=\n      (int)((uVar2 - uVar6) - (uint)(uVar3 < uVar4)) < 0) {\n    return (int)*(char *)(param_3 + 0xd);\n  }\n  if (*(ushort *)(param_3 + 8) < 2) {\n    *(undefined1 *)(param_3 + 0xe) = 1;\n    return (int)*(char *)(param_3 + 10);\n  }\ncode_r0x000712a8:\n  iVar1 = FUN_00070ba0();\n  return iVar1;\n}\n\n" (function_definition "int FUN_00071260(undefined4 param_1,byte *param_2,int param_3)\n\n{\n  int iVar1;\n  uint uVar2;\n  uint uVar3;\n  uint uVar4;\n  uint *puVar5;\n  uint uVar6;\n  \n  puVar5 = (uint *)(param_2 + (*param_2 & 0x3f));\n  switch(param_2[1]) {\n  default:\n    goto code_r0x000712a8;\n  case 1:\n    uVar4 = (uint)(char)(byte)*puVar5;\n    uVar6 = (int)uVar4 >> 0x1f;\n    break;\n  case 2:\n    uVar4 = (uint)CONCAT11((byte)*puVar5,*(byte *)((int)puVar5 + 1));\n    uVar6 = (int)uVar4 >> 0x1f;\n    break;\n  case 3:\n    uVar4 = (uint)CONCAT12((byte)*puVar5,\n                           *(ushort *)((int)puVar5 + 1) << 8 | *(ushort *)((int)puVar5 + 1) >> 8);\n    uVar6 = (int)uVar4 >> 0x1f;\n    break;\n  case 4:\n    uVar3 = *puVar5;\n    uVar4 = uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 | uVar3 << 0x18;\n    uVar6 = (int)uVar4 >> 0x1f;\n    break;\n  case 5:\n    uVar3 = *(uint *)((int)puVar5 + 2);\n    uVar4 = uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 | uVar3 << 0x18;\n    uVar6 = (uint)CONCAT11((byte)*puVar5,*(byte *)((int)puVar5 + 1));\n    break;\n  case 6:\n    uVar3 = *puVar5;\n    uVar2 = puVar5[1];\n    uVar6 = uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 | uVar3 << 0x18;\n    uVar4 = uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 | uVar2 << 0x18;\n    break;\n  case 8:\n    uVar6 = 0;\n    uVar4 = 0;\n    break;\n  case 9:\n    uVar6 = 0;\n    uVar3 = **(uint **)(param_3 + 4);\n    uVar2 = (*(uint **)(param_3 + 4))[1];\n    if ((int)-uVar2 < (int)(uint)(1 < uVar3)) goto code_r0x000712dc;\n    uVar4 = 1;\n    goto code_r0x00071360;\n  }\n  uVar3 = **(uint **)(param_3 + 4);\n  uVar2 = (*(uint **)(param_3 + 4))[1];\n  if ((SBORROW4(uVar6,uVar2) != SBORROW4(uVar6 - uVar2,(uint)(uVar4 < uVar3))) !=\n      (int)((uVar6 - uVar2) - (uint)(uVar4 < uVar3)) < 0) {\ncode_r0x000712dc:\n    return (int)*(char *)(param_3 + 0xc);\n  }\ncode_r0x00071360:\n  if ((SBORROW4(uVar2,uVar6) != SBORROW4(uVar2 - uVar6,(uint)(uVar3 < uVar4))) !=\n      (int)((uVar2 - uVar6) - (uint)(uVar3 < uVar4)) < 0) {\n    return (int)*(char *)(param_3 + 0xd);\n  }\n  if (*(ushort *)(param_3 + 8) < 2) {\n    *(undefined1 *)(param_3 + 0xe) = 1;\n    return (int)*(char *)(param_3 + 10);\n  }\ncode_r0x000712a8:\n  iVar1 = FUN_00070ba0();\n  return iVar1;\n}" primitive_type (function_declarator "FUN_00071260(undefined4 param_1,byte *param_2,int param_3)" identifier (parameter_list "(undefined4 param_1,byte *param_2,int param_3)" ( (parameter_declaration "undefined4 param_1" type_identifier identifier) , (parameter_declaration "byte *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "int param_3" primitive_type identifier) ))) (compound_statement "{\n  int iVar1;\n  uint uVar2;\n  uint uVar3;\n  uint uVar4;\n  uint *puVar5;\n  uint uVar6;\n  \n  puVar5 = (uint *)(param_2 + (*param_2 & 0x3f));\n  switch(param_2[1]) {\n  default:\n    goto code_r0x000712a8;\n  case 1:\n    uVar4 = (uint)(char)(byte)*puVar5;\n    uVar6 = (int)uVar4 >> 0x1f;\n    break;\n  case 2:\n    uVar4 = (uint)CONCAT11((byte)*puVar5,*(byte *)((int)puVar5 + 1));\n    uVar6 = (int)uVar4 >> 0x1f;\n    break;\n  case 3:\n    uVar4 = (uint)CONCAT12((byte)*puVar5,\n                           *(ushort *)((int)puVar5 + 1) << 8 | *(ushort *)((int)puVar5 + 1) >> 8);\n    uVar6 = (int)uVar4 >> 0x1f;\n    break;\n  case 4:\n    uVar3 = *puVar5;\n    uVar4 = uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 | uVar3 << 0x18;\n    uVar6 = (int)uVar4 >> 0x1f;\n    break;\n  case 5:\n    uVar3 = *(uint *)((int)puVar5 + 2);\n    uVar4 = uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 | uVar3 << 0x18;\n    uVar6 = (uint)CONCAT11((byte)*puVar5,*(byte *)((int)puVar5 + 1));\n    break;\n  case 6:\n    uVar3 = *puVar5;\n    uVar2 = puVar5[1];\n    uVar6 = uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 | uVar3 << 0x18;\n    uVar4 = uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 | uVar2 << 0x18;\n    break;\n  case 8:\n    uVar6 = 0;\n    uVar4 = 0;\n    break;\n  case 9:\n    uVar6 = 0;\n    uVar3 = **(uint **)(param_3 + 4);\n    uVar2 = (*(uint **)(param_3 + 4))[1];\n    if ((int)-uVar2 < (int)(uint)(1 < uVar3)) goto code_r0x000712dc;\n    uVar4 = 1;\n    goto code_r0x00071360;\n  }\n  uVar3 = **(uint **)(param_3 + 4);\n  uVar2 = (*(uint **)(param_3 + 4))[1];\n  if ((SBORROW4(uVar6,uVar2) != SBORROW4(uVar6 - uVar2,(uint)(uVar4 < uVar3))) !=\n      (int)((uVar6 - uVar2) - (uint)(uVar4 < uVar3)) < 0) {\ncode_r0x000712dc:\n    return (int)*(char *)(param_3 + 0xc);\n  }\ncode_r0x00071360:\n  if ((SBORROW4(uVar2,uVar6) != SBORROW4(uVar2 - uVar6,(uint)(uVar3 < uVar4))) !=\n      (int)((uVar2 - uVar6) - (uint)(uVar3 < uVar4)) < 0) {\n    return (int)*(char *)(param_3 + 0xd);\n  }\n  if (*(ushort *)(param_3 + 8) < 2) {\n    *(undefined1 *)(param_3 + 0xe) = 1;\n    return (int)*(char *)(param_3 + 10);\n  }\ncode_r0x000712a8:\n  iVar1 = FUN_00070ba0();\n  return iVar1;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "uint uVar2;" type_identifier identifier ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "uint uVar4;" type_identifier identifier ;) (declaration "uint *puVar5;" type_identifier (pointer_declarator "*puVar5" * identifier) ;) (declaration "uint uVar6;" type_identifier identifier ;) (expression_statement "puVar5 = (uint *)(param_2 + (*param_2 & 0x3f));" (assignment_expression "puVar5 = (uint *)(param_2 + (*param_2 & 0x3f))" identifier = (cast_expression "(uint *)(param_2 + (*param_2 & 0x3f))" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + (*param_2 & 0x3f))" ( (binary_expression "param_2 + (*param_2 & 0x3f)" identifier + (parenthesized_expression "(*param_2 & 0x3f)" ( (binary_expression "*param_2 & 0x3f" (pointer_expression "*param_2" * identifier) & number_literal) ))) )))) ;) (switch_statement "switch(param_2[1]) {\n  default:\n    goto code_r0x000712a8;\n  case 1:\n    uVar4 = (uint)(char)(byte)*puVar5;\n    uVar6 = (int)uVar4 >> 0x1f;\n    break;\n  case 2:\n    uVar4 = (uint)CONCAT11((byte)*puVar5,*(byte *)((int)puVar5 + 1));\n    uVar6 = (int)uVar4 >> 0x1f;\n    break;\n  case 3:\n    uVar4 = (uint)CONCAT12((byte)*puVar5,\n                           *(ushort *)((int)puVar5 + 1) << 8 | *(ushort *)((int)puVar5 + 1) >> 8);\n    uVar6 = (int)uVar4 >> 0x1f;\n    break;\n  case 4:\n    uVar3 = *puVar5;\n    uVar4 = uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 | uVar3 << 0x18;\n    uVar6 = (int)uVar4 >> 0x1f;\n    break;\n  case 5:\n    uVar3 = *(uint *)((int)puVar5 + 2);\n    uVar4 = uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 | uVar3 << 0x18;\n    uVar6 = (uint)CONCAT11((byte)*puVar5,*(byte *)((int)puVar5 + 1));\n    break;\n  case 6:\n    uVar3 = *puVar5;\n    uVar2 = puVar5[1];\n    uVar6 = uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 | uVar3 << 0x18;\n    uVar4 = uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 | uVar2 << 0x18;\n    break;\n  case 8:\n    uVar6 = 0;\n    uVar4 = 0;\n    break;\n  case 9:\n    uVar6 = 0;\n    uVar3 = **(uint **)(param_3 + 4);\n    uVar2 = (*(uint **)(param_3 + 4))[1];\n    if ((int)-uVar2 < (int)(uint)(1 < uVar3)) goto code_r0x000712dc;\n    uVar4 = 1;\n    goto code_r0x00071360;\n  }" switch (parenthesized_expression "(param_2[1])" ( (subscript_expression "param_2[1]" identifier [ number_literal ]) )) (compound_statement "{\n  default:\n    goto code_r0x000712a8;\n  case 1:\n    uVar4 = (uint)(char)(byte)*puVar5;\n    uVar6 = (int)uVar4 >> 0x1f;\n    break;\n  case 2:\n    uVar4 = (uint)CONCAT11((byte)*puVar5,*(byte *)((int)puVar5 + 1));\n    uVar6 = (int)uVar4 >> 0x1f;\n    break;\n  case 3:\n    uVar4 = (uint)CONCAT12((byte)*puVar5,\n                           *(ushort *)((int)puVar5 + 1) << 8 | *(ushort *)((int)puVar5 + 1) >> 8);\n    uVar6 = (int)uVar4 >> 0x1f;\n    break;\n  case 4:\n    uVar3 = *puVar5;\n    uVar4 = uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 | uVar3 << 0x18;\n    uVar6 = (int)uVar4 >> 0x1f;\n    break;\n  case 5:\n    uVar3 = *(uint *)((int)puVar5 + 2);\n    uVar4 = uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 | uVar3 << 0x18;\n    uVar6 = (uint)CONCAT11((byte)*puVar5,*(byte *)((int)puVar5 + 1));\n    break;\n  case 6:\n    uVar3 = *puVar5;\n    uVar2 = puVar5[1];\n    uVar6 = uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 | uVar3 << 0x18;\n    uVar4 = uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 | uVar2 << 0x18;\n    break;\n  case 8:\n    uVar6 = 0;\n    uVar4 = 0;\n    break;\n  case 9:\n    uVar6 = 0;\n    uVar3 = **(uint **)(param_3 + 4);\n    uVar2 = (*(uint **)(param_3 + 4))[1];\n    if ((int)-uVar2 < (int)(uint)(1 < uVar3)) goto code_r0x000712dc;\n    uVar4 = 1;\n    goto code_r0x00071360;\n  }" { (case_statement "default:\n    goto code_r0x000712a8;" default : (goto_statement "goto code_r0x000712a8;" goto statement_identifier ;)) (case_statement "case 1:\n    uVar4 = (uint)(char)(byte)*puVar5;\n    uVar6 = (int)uVar4 >> 0x1f;\n    break;" case number_literal : (expression_statement "uVar4 = (uint)(char)(byte)*puVar5;" (assignment_expression "uVar4 = (uint)(char)(byte)*puVar5" identifier = (binary_expression "(uint)(char)(byte)*puVar5" (call_expression "(uint)(char)(byte)" (call_expression "(uint)(char)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(char)" ( identifier ))) (argument_list "(byte)" ( identifier ))) * identifier)) ;) (expression_statement "uVar6 = (int)uVar4 >> 0x1f;" (assignment_expression "uVar6 = (int)uVar4 >> 0x1f" identifier = (binary_expression "(int)uVar4 >> 0x1f" (cast_expression "(int)uVar4" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal)) ;) (break_statement "break;" break ;)) (case_statement "case 2:\n    uVar4 = (uint)CONCAT11((byte)*puVar5,*(byte *)((int)puVar5 + 1));\n    uVar6 = (int)uVar4 >> 0x1f;\n    break;" case number_literal : (expression_statement "uVar4 = (uint)CONCAT11((byte)*puVar5,*(byte *)((int)puVar5 + 1));" (assignment_expression "uVar4 = (uint)CONCAT11((byte)*puVar5,*(byte *)((int)puVar5 + 1))" identifier = (cast_expression "(uint)CONCAT11((byte)*puVar5,*(byte *)((int)puVar5 + 1))" ( (type_descriptor "uint" type_identifier) ) (call_expression "CONCAT11((byte)*puVar5,*(byte *)((int)puVar5 + 1))" identifier (argument_list "((byte)*puVar5,*(byte *)((int)puVar5 + 1))" ( (binary_expression "(byte)*puVar5" (parenthesized_expression "(byte)" ( identifier )) * identifier) , (pointer_expression "*(byte *)((int)puVar5 + 1)" * (cast_expression "(byte *)((int)puVar5 + 1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar5 + 1)" ( (binary_expression "(int)puVar5 + 1" (cast_expression "(int)puVar5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ))))) ;) (expression_statement "uVar6 = (int)uVar4 >> 0x1f;" (assignment_expression "uVar6 = (int)uVar4 >> 0x1f" identifier = (binary_expression "(int)uVar4 >> 0x1f" (cast_expression "(int)uVar4" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal)) ;) (break_statement "break;" break ;)) (case_statement "case 3:\n    uVar4 = (uint)CONCAT12((byte)*puVar5,\n                           *(ushort *)((int)puVar5 + 1) << 8 | *(ushort *)((int)puVar5 + 1) >> 8);\n    uVar6 = (int)uVar4 >> 0x1f;\n    break;" case number_literal : (expression_statement "uVar4 = (uint)CONCAT12((byte)*puVar5,\n                           *(ushort *)((int)puVar5 + 1) << 8 | *(ushort *)((int)puVar5 + 1) >> 8);" (assignment_expression "uVar4 = (uint)CONCAT12((byte)*puVar5,\n                           *(ushort *)((int)puVar5 + 1) << 8 | *(ushort *)((int)puVar5 + 1) >> 8)" identifier = (cast_expression "(uint)CONCAT12((byte)*puVar5,\n                           *(ushort *)((int)puVar5 + 1) << 8 | *(ushort *)((int)puVar5 + 1) >> 8)" ( (type_descriptor "uint" type_identifier) ) (call_expression "CONCAT12((byte)*puVar5,\n                           *(ushort *)((int)puVar5 + 1) << 8 | *(ushort *)((int)puVar5 + 1) >> 8)" identifier (argument_list "((byte)*puVar5,\n                           *(ushort *)((int)puVar5 + 1) << 8 | *(ushort *)((int)puVar5 + 1) >> 8)" ( (binary_expression "(byte)*puVar5" (parenthesized_expression "(byte)" ( identifier )) * identifier) , (binary_expression "*(ushort *)((int)puVar5 + 1) << 8 | *(ushort *)((int)puVar5 + 1) >> 8" (binary_expression "*(ushort *)((int)puVar5 + 1) << 8" (pointer_expression "*(ushort *)((int)puVar5 + 1)" * (cast_expression "(ushort *)((int)puVar5 + 1)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar5 + 1)" ( (binary_expression "(int)puVar5 + 1" (cast_expression "(int)puVar5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) << number_literal) | (binary_expression "*(ushort *)((int)puVar5 + 1) >> 8" (pointer_expression "*(ushort *)((int)puVar5 + 1)" * (cast_expression "(ushort *)((int)puVar5 + 1)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar5 + 1)" ( (binary_expression "(int)puVar5 + 1" (cast_expression "(int)puVar5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) >> number_literal)) ))))) ;) (expression_statement "uVar6 = (int)uVar4 >> 0x1f;" (assignment_expression "uVar6 = (int)uVar4 >> 0x1f" identifier = (binary_expression "(int)uVar4 >> 0x1f" (cast_expression "(int)uVar4" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal)) ;) (break_statement "break;" break ;)) (case_statement "case 4:\n    uVar3 = *puVar5;\n    uVar4 = uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 | uVar3 << 0x18;\n    uVar6 = (int)uVar4 >> 0x1f;\n    break;" case number_literal : (expression_statement "uVar3 = *puVar5;" (assignment_expression "uVar3 = *puVar5" identifier = (pointer_expression "*puVar5" * identifier)) ;) (expression_statement "uVar4 = uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 | uVar3 << 0x18;" (assignment_expression "uVar4 = uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 | uVar3 << 0x18" identifier = (binary_expression "uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 | uVar3 << 0x18" (binary_expression "uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8" (binary_expression "uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8" (binary_expression "uVar3 >> 0x18" identifier >> number_literal) | (binary_expression "(uVar3 & 0xff0000) >> 8" (parenthesized_expression "(uVar3 & 0xff0000)" ( (binary_expression "uVar3 & 0xff0000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar3 & 0xff00) << 8" (parenthesized_expression "(uVar3 & 0xff00)" ( (binary_expression "uVar3 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "uVar3 << 0x18" identifier << number_literal))) ;) (expression_statement "uVar6 = (int)uVar4 >> 0x1f;" (assignment_expression "uVar6 = (int)uVar4 >> 0x1f" identifier = (binary_expression "(int)uVar4 >> 0x1f" (cast_expression "(int)uVar4" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal)) ;) (break_statement "break;" break ;)) (case_statement "case 5:\n    uVar3 = *(uint *)((int)puVar5 + 2);\n    uVar4 = uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 | uVar3 << 0x18;\n    uVar6 = (uint)CONCAT11((byte)*puVar5,*(byte *)((int)puVar5 + 1));\n    break;" case number_literal : (expression_statement "uVar3 = *(uint *)((int)puVar5 + 2);" (assignment_expression "uVar3 = *(uint *)((int)puVar5 + 2)" identifier = (pointer_expression "*(uint *)((int)puVar5 + 2)" * (cast_expression "(uint *)((int)puVar5 + 2)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar5 + 2)" ( (binary_expression "(int)puVar5 + 2" (cast_expression "(int)puVar5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (expression_statement "uVar4 = uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 | uVar3 << 0x18;" (assignment_expression "uVar4 = uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 | uVar3 << 0x18" identifier = (binary_expression "uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 | uVar3 << 0x18" (binary_expression "uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8" (binary_expression "uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8" (binary_expression "uVar3 >> 0x18" identifier >> number_literal) | (binary_expression "(uVar3 & 0xff0000) >> 8" (parenthesized_expression "(uVar3 & 0xff0000)" ( (binary_expression "uVar3 & 0xff0000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar3 & 0xff00) << 8" (parenthesized_expression "(uVar3 & 0xff00)" ( (binary_expression "uVar3 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "uVar3 << 0x18" identifier << number_literal))) ;) (expression_statement "uVar6 = (uint)CONCAT11((byte)*puVar5,*(byte *)((int)puVar5 + 1));" (assignment_expression "uVar6 = (uint)CONCAT11((byte)*puVar5,*(byte *)((int)puVar5 + 1))" identifier = (cast_expression "(uint)CONCAT11((byte)*puVar5,*(byte *)((int)puVar5 + 1))" ( (type_descriptor "uint" type_identifier) ) (call_expression "CONCAT11((byte)*puVar5,*(byte *)((int)puVar5 + 1))" identifier (argument_list "((byte)*puVar5,*(byte *)((int)puVar5 + 1))" ( (binary_expression "(byte)*puVar5" (parenthesized_expression "(byte)" ( identifier )) * identifier) , (pointer_expression "*(byte *)((int)puVar5 + 1)" * (cast_expression "(byte *)((int)puVar5 + 1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar5 + 1)" ( (binary_expression "(int)puVar5 + 1" (cast_expression "(int)puVar5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ))))) ;) (break_statement "break;" break ;)) (case_statement "case 6:\n    uVar3 = *puVar5;\n    uVar2 = puVar5[1];\n    uVar6 = uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 | uVar3 << 0x18;\n    uVar4 = uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 | uVar2 << 0x18;\n    break;" case number_literal : (expression_statement "uVar3 = *puVar5;" (assignment_expression "uVar3 = *puVar5" identifier = (pointer_expression "*puVar5" * identifier)) ;) (expression_statement "uVar2 = puVar5[1];" (assignment_expression "uVar2 = puVar5[1]" identifier = (subscript_expression "puVar5[1]" identifier [ number_literal ])) ;) (expression_statement "uVar6 = uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 | uVar3 << 0x18;" (assignment_expression "uVar6 = uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 | uVar3 << 0x18" identifier = (binary_expression "uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 | uVar3 << 0x18" (binary_expression "uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8" (binary_expression "uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8" (binary_expression "uVar3 >> 0x18" identifier >> number_literal) | (binary_expression "(uVar3 & 0xff0000) >> 8" (parenthesized_expression "(uVar3 & 0xff0000)" ( (binary_expression "uVar3 & 0xff0000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar3 & 0xff00) << 8" (parenthesized_expression "(uVar3 & 0xff00)" ( (binary_expression "uVar3 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "uVar3 << 0x18" identifier << number_literal))) ;) (expression_statement "uVar4 = uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 | uVar2 << 0x18;" (assignment_expression "uVar4 = uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 | uVar2 << 0x18" identifier = (binary_expression "uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 | uVar2 << 0x18" (binary_expression "uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8" (binary_expression "uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8" (binary_expression "uVar2 >> 0x18" identifier >> number_literal) | (binary_expression "(uVar2 & 0xff0000) >> 8" (parenthesized_expression "(uVar2 & 0xff0000)" ( (binary_expression "uVar2 & 0xff0000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar2 & 0xff00) << 8" (parenthesized_expression "(uVar2 & 0xff00)" ( (binary_expression "uVar2 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "uVar2 << 0x18" identifier << number_literal))) ;) (break_statement "break;" break ;)) (case_statement "case 8:\n    uVar6 = 0;\n    uVar4 = 0;\n    break;" case number_literal : (expression_statement "uVar6 = 0;" (assignment_expression "uVar6 = 0" identifier = number_literal) ;) (expression_statement "uVar4 = 0;" (assignment_expression "uVar4 = 0" identifier = number_literal) ;) (break_statement "break;" break ;)) (case_statement "case 9:\n    uVar6 = 0;\n    uVar3 = **(uint **)(param_3 + 4);\n    uVar2 = (*(uint **)(param_3 + 4))[1];\n    if ((int)-uVar2 < (int)(uint)(1 < uVar3)) goto code_r0x000712dc;\n    uVar4 = 1;\n    goto code_r0x00071360;" case number_literal : (expression_statement "uVar6 = 0;" (assignment_expression "uVar6 = 0" identifier = number_literal) ;) (expression_statement "uVar3 = **(uint **)(param_3 + 4);" (assignment_expression "uVar3 = **(uint **)(param_3 + 4)" identifier = (pointer_expression "**(uint **)(param_3 + 4)" * (pointer_expression "*(uint **)(param_3 + 4)" * (cast_expression "(uint **)(param_3 + 4)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_3 + 4)" ( (binary_expression "param_3 + 4" identifier + number_literal) )))))) ;) (expression_statement "uVar2 = (*(uint **)(param_3 + 4))[1];" (assignment_expression "uVar2 = (*(uint **)(param_3 + 4))[1]" identifier = (subscript_expression "(*(uint **)(param_3 + 4))[1]" (parenthesized_expression "(*(uint **)(param_3 + 4))" ( (pointer_expression "*(uint **)(param_3 + 4)" * (cast_expression "(uint **)(param_3 + 4)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_3 + 4)" ( (binary_expression "param_3 + 4" identifier + number_literal) )))) )) [ number_literal ])) ;) (if_statement "if ((int)-uVar2 < (int)(uint)(1 < uVar3)) goto code_r0x000712dc;" if (parenthesized_expression "((int)-uVar2 < (int)(uint)(1 < uVar3))" ( (binary_expression "(int)-uVar2 < (int)(uint)(1 < uVar3)" (cast_expression "(int)-uVar2" ( (type_descriptor "int" primitive_type) ) (unary_expression "-uVar2" - identifier)) < (cast_expression "(int)(uint)(1 < uVar3)" ( (type_descriptor "int" primitive_type) ) (call_expression "(uint)(1 < uVar3)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(1 < uVar3)" ( (binary_expression "1 < uVar3" number_literal < identifier) ))))) )) (goto_statement "goto code_r0x000712dc;" goto statement_identifier ;)) (expression_statement "uVar4 = 1;" (assignment_expression "uVar4 = 1" identifier = number_literal) ;) (goto_statement "goto code_r0x00071360;" goto statement_identifier ;)) })) (expression_statement "uVar3 = **(uint **)(param_3 + 4);" (assignment_expression "uVar3 = **(uint **)(param_3 + 4)" identifier = (pointer_expression "**(uint **)(param_3 + 4)" * (pointer_expression "*(uint **)(param_3 + 4)" * (cast_expression "(uint **)(param_3 + 4)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_3 + 4)" ( (binary_expression "param_3 + 4" identifier + number_literal) )))))) ;) (expression_statement "uVar2 = (*(uint **)(param_3 + 4))[1];" (assignment_expression "uVar2 = (*(uint **)(param_3 + 4))[1]" identifier = (subscript_expression "(*(uint **)(param_3 + 4))[1]" (parenthesized_expression "(*(uint **)(param_3 + 4))" ( (pointer_expression "*(uint **)(param_3 + 4)" * (cast_expression "(uint **)(param_3 + 4)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_3 + 4)" ( (binary_expression "param_3 + 4" identifier + number_literal) )))) )) [ number_literal ])) ;) (if_statement "if ((SBORROW4(uVar6,uVar2) != SBORROW4(uVar6 - uVar2,(uint)(uVar4 < uVar3))) !=\n      (int)((uVar6 - uVar2) - (uint)(uVar4 < uVar3)) < 0) {\ncode_r0x000712dc:\n    return (int)*(char *)(param_3 + 0xc);\n  }" if (parenthesized_expression "((SBORROW4(uVar6,uVar2) != SBORROW4(uVar6 - uVar2,(uint)(uVar4 < uVar3))) !=\n      (int)((uVar6 - uVar2) - (uint)(uVar4 < uVar3)) < 0)" ( (binary_expression "(SBORROW4(uVar6,uVar2) != SBORROW4(uVar6 - uVar2,(uint)(uVar4 < uVar3))) !=\n      (int)((uVar6 - uVar2) - (uint)(uVar4 < uVar3)) < 0" (parenthesized_expression "(SBORROW4(uVar6,uVar2) != SBORROW4(uVar6 - uVar2,(uint)(uVar4 < uVar3)))" ( (binary_expression "SBORROW4(uVar6,uVar2) != SBORROW4(uVar6 - uVar2,(uint)(uVar4 < uVar3))" (call_expression "SBORROW4(uVar6,uVar2)" identifier (argument_list "(uVar6,uVar2)" ( identifier , identifier ))) != (call_expression "SBORROW4(uVar6 - uVar2,(uint)(uVar4 < uVar3))" identifier (argument_list "(uVar6 - uVar2,(uint)(uVar4 < uVar3))" ( (binary_expression "uVar6 - uVar2" identifier - identifier) , (call_expression "(uint)(uVar4 < uVar3)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar4 < uVar3)" ( (binary_expression "uVar4 < uVar3" identifier < identifier) ))) )))) )) != (binary_expression "(int)((uVar6 - uVar2) - (uint)(uVar4 < uVar3)) < 0" (cast_expression "(int)((uVar6 - uVar2) - (uint)(uVar4 < uVar3))" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((uVar6 - uVar2) - (uint)(uVar4 < uVar3))" ( (binary_expression "(uVar6 - uVar2) - (uint)(uVar4 < uVar3)" (parenthesized_expression "(uVar6 - uVar2)" ( (binary_expression "uVar6 - uVar2" identifier - identifier) )) - (call_expression "(uint)(uVar4 < uVar3)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar4 < uVar3)" ( (binary_expression "uVar4 < uVar3" identifier < identifier) )))) ))) < number_literal)) )) (compound_statement "{\ncode_r0x000712dc:\n    return (int)*(char *)(param_3 + 0xc);\n  }" { (labeled_statement "code_r0x000712dc:\n    return (int)*(char *)(param_3 + 0xc);" statement_identifier : (return_statement "return (int)*(char *)(param_3 + 0xc);" return (cast_expression "(int)*(char *)(param_3 + 0xc)" ( (type_descriptor "int" primitive_type) ) (pointer_expression "*(char *)(param_3 + 0xc)" * (cast_expression "(char *)(param_3 + 0xc)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0xc)" ( (binary_expression "param_3 + 0xc" identifier + number_literal) ))))) ;)) })) (labeled_statement "code_r0x00071360:\n  if ((SBORROW4(uVar2,uVar6) != SBORROW4(uVar2 - uVar6,(uint)(uVar3 < uVar4))) !=\n      (int)((uVar2 - uVar6) - (uint)(uVar3 < uVar4)) < 0) {\n    return (int)*(char *)(param_3 + 0xd);\n  }" statement_identifier : (if_statement "if ((SBORROW4(uVar2,uVar6) != SBORROW4(uVar2 - uVar6,(uint)(uVar3 < uVar4))) !=\n      (int)((uVar2 - uVar6) - (uint)(uVar3 < uVar4)) < 0) {\n    return (int)*(char *)(param_3 + 0xd);\n  }" if (parenthesized_expression "((SBORROW4(uVar2,uVar6) != SBORROW4(uVar2 - uVar6,(uint)(uVar3 < uVar4))) !=\n      (int)((uVar2 - uVar6) - (uint)(uVar3 < uVar4)) < 0)" ( (binary_expression "(SBORROW4(uVar2,uVar6) != SBORROW4(uVar2 - uVar6,(uint)(uVar3 < uVar4))) !=\n      (int)((uVar2 - uVar6) - (uint)(uVar3 < uVar4)) < 0" (parenthesized_expression "(SBORROW4(uVar2,uVar6) != SBORROW4(uVar2 - uVar6,(uint)(uVar3 < uVar4)))" ( (binary_expression "SBORROW4(uVar2,uVar6) != SBORROW4(uVar2 - uVar6,(uint)(uVar3 < uVar4))" (call_expression "SBORROW4(uVar2,uVar6)" identifier (argument_list "(uVar2,uVar6)" ( identifier , identifier ))) != (call_expression "SBORROW4(uVar2 - uVar6,(uint)(uVar3 < uVar4))" identifier (argument_list "(uVar2 - uVar6,(uint)(uVar3 < uVar4))" ( (binary_expression "uVar2 - uVar6" identifier - identifier) , (call_expression "(uint)(uVar3 < uVar4)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar3 < uVar4)" ( (binary_expression "uVar3 < uVar4" identifier < identifier) ))) )))) )) != (binary_expression "(int)((uVar2 - uVar6) - (uint)(uVar3 < uVar4)) < 0" (cast_expression "(int)((uVar2 - uVar6) - (uint)(uVar3 < uVar4))" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((uVar2 - uVar6) - (uint)(uVar3 < uVar4))" ( (binary_expression "(uVar2 - uVar6) - (uint)(uVar3 < uVar4)" (parenthesized_expression "(uVar2 - uVar6)" ( (binary_expression "uVar2 - uVar6" identifier - identifier) )) - (call_expression "(uint)(uVar3 < uVar4)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar3 < uVar4)" ( (binary_expression "uVar3 < uVar4" identifier < identifier) )))) ))) < number_literal)) )) (compound_statement "{\n    return (int)*(char *)(param_3 + 0xd);\n  }" { (return_statement "return (int)*(char *)(param_3 + 0xd);" return (cast_expression "(int)*(char *)(param_3 + 0xd)" ( (type_descriptor "int" primitive_type) ) (pointer_expression "*(char *)(param_3 + 0xd)" * (cast_expression "(char *)(param_3 + 0xd)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0xd)" ( (binary_expression "param_3 + 0xd" identifier + number_literal) ))))) ;) }))) (if_statement "if (*(ushort *)(param_3 + 8) < 2) {\n    *(undefined1 *)(param_3 + 0xe) = 1;\n    return (int)*(char *)(param_3 + 10);\n  }" if (parenthesized_expression "(*(ushort *)(param_3 + 8) < 2)" ( (binary_expression "*(ushort *)(param_3 + 8) < 2" (pointer_expression "*(ushort *)(param_3 + 8)" * (cast_expression "(ushort *)(param_3 + 8)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 8)" ( (binary_expression "param_3 + 8" identifier + number_literal) )))) < number_literal) )) (compound_statement "{\n    *(undefined1 *)(param_3 + 0xe) = 1;\n    return (int)*(char *)(param_3 + 10);\n  }" { (expression_statement "*(undefined1 *)(param_3 + 0xe) = 1;" (assignment_expression "*(undefined1 *)(param_3 + 0xe) = 1" (pointer_expression "*(undefined1 *)(param_3 + 0xe)" * (cast_expression "(undefined1 *)(param_3 + 0xe)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0xe)" ( (binary_expression "param_3 + 0xe" identifier + number_literal) )))) = number_literal) ;) (return_statement "return (int)*(char *)(param_3 + 10);" return (cast_expression "(int)*(char *)(param_3 + 10)" ( (type_descriptor "int" primitive_type) ) (pointer_expression "*(char *)(param_3 + 10)" * (cast_expression "(char *)(param_3 + 10)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 10)" ( (binary_expression "param_3 + 10" identifier + number_literal) ))))) ;) })) (labeled_statement "code_r0x000712a8:\n  iVar1 = FUN_00070ba0();" statement_identifier : (expression_statement "iVar1 = FUN_00070ba0();" (assignment_expression "iVar1 = FUN_00070ba0()" identifier = (call_expression "FUN_00070ba0()" identifier (argument_list "()" ( )))) ;)) (return_statement "return iVar1;" return identifier ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) & LIT) ))) )))) ;) (switch_statement switch (parenthesized_expression ( (subscript_expression IDENT [ LIT ]) )) (compound_statement { (case_statement default : (goto_statement goto statement_identifier ;)) (case_statement case LIT : (expression_statement (assignment_expression IDENT = (binary_expression (call_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( IDENT ))) (argument_list ( IDENT ))) * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT)) ;) (break_statement break ;)) (case_statement case LIT : (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (call_expression IDENT (argument_list ( (binary_expression (parenthesized_expression ( IDENT )) * IDENT) , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT)) ;) (break_statement break ;)) (case_statement case LIT : (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (call_expression IDENT (argument_list ( (binary_expression (parenthesized_expression ( IDENT )) * IDENT) , (binary_expression (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) << LIT) | (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) >> LIT)) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT)) ;) (break_statement break ;)) (case_statement case LIT : (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (binary_expression (binary_expression IDENT >> LIT) | (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) >> LIT)) | (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) << LIT)) | (binary_expression IDENT << LIT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT)) ;) (break_statement break ;)) (case_statement case LIT : (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (binary_expression (binary_expression IDENT >> LIT) | (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) >> LIT)) | (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) << LIT)) | (binary_expression IDENT << LIT))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (call_expression IDENT (argument_list ( (binary_expression (parenthesized_expression ( IDENT )) * IDENT) , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) ))))) ;) (break_statement break ;)) (case_statement case 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 (binary_expression (binary_expression (binary_expression IDENT >> LIT) | (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) >> LIT)) | (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) << LIT)) | (binary_expression IDENT << LIT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (binary_expression (binary_expression IDENT >> LIT) | (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) >> LIT)) | (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) << LIT)) | (binary_expression IDENT << LIT))) ;) (break_statement break ;)) (case_statement case LIT : (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (break_statement break ;)) (case_statement case LIT : (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))))) ;) (expression_statement (assignment_expression IDENT = (subscript_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) )) [ LIT ])) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (unary_expression - IDENT)) < (cast_expression ( (type_descriptor TYPE) ) (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression LIT < IDENT) ))))) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = LIT) ;) (goto_statement goto statement_identifier ;)) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))))) ;) (expression_statement (assignment_expression IDENT = (subscript_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) )) [ LIT ])) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (call_expression IDENT (argument_list ( IDENT , IDENT ))) != (call_expression IDENT (argument_list ( (binary_expression IDENT - IDENT) , (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT < IDENT) ))) )))) )) != (binary_expression (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT - IDENT) )) - (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT < IDENT) )))) ))) < LIT)) )) (compound_statement { (labeled_statement statement_identifier : (return_statement return (cast_expression ( (type_descriptor TYPE) ) (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;)) })) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (call_expression IDENT (argument_list ( IDENT , IDENT ))) != (call_expression IDENT (argument_list ( (binary_expression IDENT - IDENT) , (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT < IDENT) ))) )))) )) != (binary_expression (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT - IDENT) )) - (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT < IDENT) )))) ))) < LIT)) )) (compound_statement { (return_statement return (cast_expression ( (type_descriptor TYPE) ) (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) }))) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) < LIT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (return_statement return (cast_expression ( (type_descriptor TYPE) ) (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) })) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;)) (return_statement return IDENT ;) })))
(function_definition "int FUN_00071260(undefined4 param_1,byte *param_2,int param_3)\n\n{\n  int iVar1;\n  uint uVar2;\n  uint uVar3;\n  uint uVar4;\n  uint *puVar5;\n  uint uVar6;\n  \n  puVar5 = (uint *)(param_2 + (*param_2 & 0x3f));\n  switch(param_2[1]) {\n  default:\n    goto code_r0x000712a8;\n  case 1:\n    uVar4 = (uint)(char)(byte)*puVar5;\n    uVar6 = (int)uVar4 >> 0x1f;\n    break;\n  case 2:\n    uVar4 = (uint)CONCAT11((byte)*puVar5,*(byte *)((int)puVar5 + 1));\n    uVar6 = (int)uVar4 >> 0x1f;\n    break;\n  case 3:\n    uVar4 = (uint)CONCAT12((byte)*puVar5,\n                           *(ushort *)((int)puVar5 + 1) << 8 | *(ushort *)((int)puVar5 + 1) >> 8);\n    uVar6 = (int)uVar4 >> 0x1f;\n    break;\n  case 4:\n    uVar3 = *puVar5;\n    uVar4 = uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 | uVar3 << 0x18;\n    uVar6 = (int)uVar4 >> 0x1f;\n    break;\n  case 5:\n    uVar3 = *(uint *)((int)puVar5 + 2);\n    uVar4 = uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 | uVar3 << 0x18;\n    uVar6 = (uint)CONCAT11((byte)*puVar5,*(byte *)((int)puVar5 + 1));\n    break;\n  case 6:\n    uVar3 = *puVar5;\n    uVar2 = puVar5[1];\n    uVar6 = uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 | uVar3 << 0x18;\n    uVar4 = uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 | uVar2 << 0x18;\n    break;\n  case 8:\n    uVar6 = 0;\n    uVar4 = 0;\n    break;\n  case 9:\n    uVar6 = 0;\n    uVar3 = **(uint **)(param_3 + 4);\n    uVar2 = (*(uint **)(param_3 + 4))[1];\n    if ((int)-uVar2 < (int)(uint)(1 < uVar3)) goto code_r0x000712dc;\n    uVar4 = 1;\n    goto code_r0x00071360;\n  }\n  uVar3 = **(uint **)(param_3 + 4);\n  uVar2 = (*(uint **)(param_3 + 4))[1];\n  if ((SBORROW4(uVar6,uVar2) != SBORROW4(uVar6 - uVar2,(uint)(uVar4 < uVar3))) !=\n      (int)((uVar6 - uVar2) - (uint)(uVar4 < uVar3)) < 0) {\ncode_r0x000712dc:\n    return (int)*(char *)(param_3 + 0xc);\n  }\ncode_r0x00071360:\n  if ((SBORROW4(uVar2,uVar6) != SBORROW4(uVar2 - uVar6,(uint)(uVar3 < uVar4))) !=\n      (int)((uVar2 - uVar6) - (uint)(uVar3 < uVar4)) < 0) {\n    return (int)*(char *)(param_3 + 0xd);\n  }\n  if (*(ushort *)(param_3 + 8) < 2) {\n    *(undefined1 *)(param_3 + 0xe) = 1;\n    return (int)*(char *)(param_3 + 10);\n  }\ncode_r0x000712a8:\n  iVar1 = FUN_00070ba0();\n  return iVar1;\n}" (primitive_type "int") (function_declarator "FUN_00071260(undefined4 param_1,byte *param_2,int param_3)" (identifier "FUN_00071260") (parameter_list "(undefined4 param_1,byte *param_2,int param_3)" (( "(") (parameter_declaration "undefined4 param_1" (type_identifier "undefined4") (identifier "param_1")) (, ",") (parameter_declaration "byte *param_2" (type_identifier "byte") (pointer_declarator "*param_2" (* "*") (identifier "param_2"))) (, ",") (parameter_declaration "int param_3" (primitive_type "int") (identifier "param_3")) () ")"))) (compound_statement "{\n  int iVar1;\n  uint uVar2;\n  uint uVar3;\n  uint uVar4;\n  uint *puVar5;\n  uint uVar6;\n  \n  puVar5 = (uint *)(param_2 + (*param_2 & 0x3f));\n  switch(param_2[1]) {\n  default:\n    goto code_r0x000712a8;\n  case 1:\n    uVar4 = (uint)(char)(byte)*puVar5;\n    uVar6 = (int)uVar4 >> 0x1f;\n    break;\n  case 2:\n    uVar4 = (uint)CONCAT11((byte)*puVar5,*(byte *)((int)puVar5 + 1));\n    uVar6 = (int)uVar4 >> 0x1f;\n    break;\n  case 3:\n    uVar4 = (uint)CONCAT12((byte)*puVar5,\n                           *(ushort *)((int)puVar5 + 1) << 8 | *(ushort *)((int)puVar5 + 1) >> 8);\n    uVar6 = (int)uVar4 >> 0x1f;\n    break;\n  case 4:\n    uVar3 = *puVar5;\n    uVar4 = uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 | uVar3 << 0x18;\n    uVar6 = (int)uVar4 >> 0x1f;\n    break;\n  case 5:\n    uVar3 = *(uint *)((int)puVar5 + 2);\n    uVar4 = uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 | uVar3 << 0x18;\n    uVar6 = (uint)CONCAT11((byte)*puVar5,*(byte *)((int)puVar5 + 1));\n    break;\n  case 6:\n    uVar3 = *puVar5;\n    uVar2 = puVar5[1];\n    uVar6 = uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 | uVar3 << 0x18;\n    uVar4 = uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 | uVar2 << 0x18;\n    break;\n  case 8:\n    uVar6 = 0;\n    uVar4 = 0;\n    break;\n  case 9:\n    uVar6 = 0;\n    uVar3 = **(uint **)(param_3 + 4);\n    uVar2 = (*(uint **)(param_3 + 4))[1];\n    if ((int)-uVar2 < (int)(uint)(1 < uVar3)) goto code_r0x000712dc;\n    uVar4 = 1;\n    goto code_r0x00071360;\n  }\n  uVar3 = **(uint **)(param_3 + 4);\n  uVar2 = (*(uint **)(param_3 + 4))[1];\n  if ((SBORROW4(uVar6,uVar2) != SBORROW4(uVar6 - uVar2,(uint)(uVar4 < uVar3))) !=\n      (int)((uVar6 - uVar2) - (uint)(uVar4 < uVar3)) < 0) {\ncode_r0x000712dc:\n    return (int)*(char *)(param_3 + 0xc);\n  }\ncode_r0x00071360:\n  if ((SBORROW4(uVar2,uVar6) != SBORROW4(uVar2 - uVar6,(uint)(uVar3 < uVar4))) !=\n      (int)((uVar2 - uVar6) - (uint)(uVar3 < uVar4)) < 0) {\n    return (int)*(char *)(param_3 + 0xd);\n  }\n  if (*(ushort *)(param_3 + 8) < 2) {\n    *(undefined1 *)(param_3 + 0xe) = 1;\n    return (int)*(char *)(param_3 + 10);\n  }\ncode_r0x000712a8:\n  iVar1 = FUN_00070ba0();\n  return iVar1;\n}" ({ "{") (declaration "int iVar1;" (primitive_type "int") (identifier "iVar1") (; ";")) (declaration "uint uVar2;" (type_identifier "uint") (identifier "uVar2") (; ";")) (declaration "uint uVar3;" (type_identifier "uint") (identifier "uVar3") (; ";")) (declaration "uint uVar4;" (type_identifier "uint") (identifier "uVar4") (; ";")) (declaration "uint *puVar5;" (type_identifier "uint") (pointer_declarator "*puVar5" (* "*") (identifier "puVar5")) (; ";")) (declaration "uint uVar6;" (type_identifier "uint") (identifier "uVar6") (; ";")) (expression_statement "puVar5 = (uint *)(param_2 + (*param_2 & 0x3f));" (assignment_expression "puVar5 = (uint *)(param_2 + (*param_2 & 0x3f))" (identifier "puVar5") (= "=") (cast_expression "(uint *)(param_2 + (*param_2 & 0x3f))" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + (*param_2 & 0x3f))" (( "(") (binary_expression "param_2 + (*param_2 & 0x3f)" (identifier "param_2") (+ "+") (parenthesized_expression "(*param_2 & 0x3f)" (( "(") (binary_expression "*param_2 & 0x3f" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (& "&") (number_literal "0x3f")) () ")"))) () ")")))) (; ";")) (switch_statement "switch(param_2[1]) {\n  default:\n    goto code_r0x000712a8;\n  case 1:\n    uVar4 = (uint)(char)(byte)*puVar5;\n    uVar6 = (int)uVar4 >> 0x1f;\n    break;\n  case 2:\n    uVar4 = (uint)CONCAT11((byte)*puVar5,*(byte *)((int)puVar5 + 1));\n    uVar6 = (int)uVar4 >> 0x1f;\n    break;\n  case 3:\n    uVar4 = (uint)CONCAT12((byte)*puVar5,\n                           *(ushort *)((int)puVar5 + 1) << 8 | *(ushort *)((int)puVar5 + 1) >> 8);\n    uVar6 = (int)uVar4 >> 0x1f;\n    break;\n  case 4:\n    uVar3 = *puVar5;\n    uVar4 = uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 | uVar3 << 0x18;\n    uVar6 = (int)uVar4 >> 0x1f;\n    break;\n  case 5:\n    uVar3 = *(uint *)((int)puVar5 + 2);\n    uVar4 = uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 | uVar3 << 0x18;\n    uVar6 = (uint)CONCAT11((byte)*puVar5,*(byte *)((int)puVar5 + 1));\n    break;\n  case 6:\n    uVar3 = *puVar5;\n    uVar2 = puVar5[1];\n    uVar6 = uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 | uVar3 << 0x18;\n    uVar4 = uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 | uVar2 << 0x18;\n    break;\n  case 8:\n    uVar6 = 0;\n    uVar4 = 0;\n    break;\n  case 9:\n    uVar6 = 0;\n    uVar3 = **(uint **)(param_3 + 4);\n    uVar2 = (*(uint **)(param_3 + 4))[1];\n    if ((int)-uVar2 < (int)(uint)(1 < uVar3)) goto code_r0x000712dc;\n    uVar4 = 1;\n    goto code_r0x00071360;\n  }" (switch "switch") (parenthesized_expression "(param_2[1])" (( "(") (subscript_expression "param_2[1]" (identifier "param_2") ([ "[") (number_literal "1") (] "]")) () ")")) (compound_statement "{\n  default:\n    goto code_r0x000712a8;\n  case 1:\n    uVar4 = (uint)(char)(byte)*puVar5;\n    uVar6 = (int)uVar4 >> 0x1f;\n    break;\n  case 2:\n    uVar4 = (uint)CONCAT11((byte)*puVar5,*(byte *)((int)puVar5 + 1));\n    uVar6 = (int)uVar4 >> 0x1f;\n    break;\n  case 3:\n    uVar4 = (uint)CONCAT12((byte)*puVar5,\n                           *(ushort *)((int)puVar5 + 1) << 8 | *(ushort *)((int)puVar5 + 1) >> 8);\n    uVar6 = (int)uVar4 >> 0x1f;\n    break;\n  case 4:\n    uVar3 = *puVar5;\n    uVar4 = uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 | uVar3 << 0x18;\n    uVar6 = (int)uVar4 >> 0x1f;\n    break;\n  case 5:\n    uVar3 = *(uint *)((int)puVar5 + 2);\n    uVar4 = uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 | uVar3 << 0x18;\n    uVar6 = (uint)CONCAT11((byte)*puVar5,*(byte *)((int)puVar5 + 1));\n    break;\n  case 6:\n    uVar3 = *puVar5;\n    uVar2 = puVar5[1];\n    uVar6 = uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 | uVar3 << 0x18;\n    uVar4 = uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 | uVar2 << 0x18;\n    break;\n  case 8:\n    uVar6 = 0;\n    uVar4 = 0;\n    break;\n  case 9:\n    uVar6 = 0;\n    uVar3 = **(uint **)(param_3 + 4);\n    uVar2 = (*(uint **)(param_3 + 4))[1];\n    if ((int)-uVar2 < (int)(uint)(1 < uVar3)) goto code_r0x000712dc;\n    uVar4 = 1;\n    goto code_r0x00071360;\n  }" ({ "{") (case_statement "default:\n    goto code_r0x000712a8;" (default "default") (: ":") (goto_statement "goto code_r0x000712a8;" (goto "goto") (statement_identifier "code_r0x000712a8") (; ";"))) (case_statement "case 1:\n    uVar4 = (uint)(char)(byte)*puVar5;\n    uVar6 = (int)uVar4 >> 0x1f;\n    break;" (case "case") (number_literal "1") (: ":") (expression_statement "uVar4 = (uint)(char)(byte)*puVar5;" (assignment_expression "uVar4 = (uint)(char)(byte)*puVar5" (identifier "uVar4") (= "=") (binary_expression "(uint)(char)(byte)*puVar5" (call_expression "(uint)(char)(byte)" (call_expression "(uint)(char)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(char)" (( "(") (identifier "char") () ")"))) (argument_list "(byte)" (( "(") (identifier "byte") () ")"))) (* "*") (identifier "puVar5"))) (; ";")) (expression_statement "uVar6 = (int)uVar4 >> 0x1f;" (assignment_expression "uVar6 = (int)uVar4 >> 0x1f" (identifier "uVar6") (= "=") (binary_expression "(int)uVar4 >> 0x1f" (cast_expression "(int)uVar4" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar4")) (>> ">>") (number_literal "0x1f"))) (; ";")) (break_statement "break;" (break "break") (; ";"))) (case_statement "case 2:\n    uVar4 = (uint)CONCAT11((byte)*puVar5,*(byte *)((int)puVar5 + 1));\n    uVar6 = (int)uVar4 >> 0x1f;\n    break;" (case "case") (number_literal "2") (: ":") (expression_statement "uVar4 = (uint)CONCAT11((byte)*puVar5,*(byte *)((int)puVar5 + 1));" (assignment_expression "uVar4 = (uint)CONCAT11((byte)*puVar5,*(byte *)((int)puVar5 + 1))" (identifier "uVar4") (= "=") (cast_expression "(uint)CONCAT11((byte)*puVar5,*(byte *)((int)puVar5 + 1))" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (call_expression "CONCAT11((byte)*puVar5,*(byte *)((int)puVar5 + 1))" (identifier "CONCAT11") (argument_list "((byte)*puVar5,*(byte *)((int)puVar5 + 1))" (( "(") (binary_expression "(byte)*puVar5" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (* "*") (identifier "puVar5")) (, ",") (pointer_expression "*(byte *)((int)puVar5 + 1)" (* "*") (cast_expression "(byte *)((int)puVar5 + 1)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar5 + 1)" (( "(") (binary_expression "(int)puVar5 + 1" (cast_expression "(int)puVar5" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar5")) (+ "+") (number_literal "1")) () ")")))) () ")"))))) (; ";")) (expression_statement "uVar6 = (int)uVar4 >> 0x1f;" (assignment_expression "uVar6 = (int)uVar4 >> 0x1f" (identifier "uVar6") (= "=") (binary_expression "(int)uVar4 >> 0x1f" (cast_expression "(int)uVar4" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar4")) (>> ">>") (number_literal "0x1f"))) (; ";")) (break_statement "break;" (break "break") (; ";"))) (case_statement "case 3:\n    uVar4 = (uint)CONCAT12((byte)*puVar5,\n                           *(ushort *)((int)puVar5 + 1) << 8 | *(ushort *)((int)puVar5 + 1) >> 8);\n    uVar6 = (int)uVar4 >> 0x1f;\n    break;" (case "case") (number_literal "3") (: ":") (expression_statement "uVar4 = (uint)CONCAT12((byte)*puVar5,\n                           *(ushort *)((int)puVar5 + 1) << 8 | *(ushort *)((int)puVar5 + 1) >> 8);" (assignment_expression "uVar4 = (uint)CONCAT12((byte)*puVar5,\n                           *(ushort *)((int)puVar5 + 1) << 8 | *(ushort *)((int)puVar5 + 1) >> 8)" (identifier "uVar4") (= "=") (cast_expression "(uint)CONCAT12((byte)*puVar5,\n                           *(ushort *)((int)puVar5 + 1) << 8 | *(ushort *)((int)puVar5 + 1) >> 8)" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (call_expression "CONCAT12((byte)*puVar5,\n                           *(ushort *)((int)puVar5 + 1) << 8 | *(ushort *)((int)puVar5 + 1) >> 8)" (identifier "CONCAT12") (argument_list "((byte)*puVar5,\n                           *(ushort *)((int)puVar5 + 1) << 8 | *(ushort *)((int)puVar5 + 1) >> 8)" (( "(") (binary_expression "(byte)*puVar5" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (* "*") (identifier "puVar5")) (, ",") (binary_expression "*(ushort *)((int)puVar5 + 1) << 8 | *(ushort *)((int)puVar5 + 1) >> 8" (binary_expression "*(ushort *)((int)puVar5 + 1) << 8" (pointer_expression "*(ushort *)((int)puVar5 + 1)" (* "*") (cast_expression "(ushort *)((int)puVar5 + 1)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar5 + 1)" (( "(") (binary_expression "(int)puVar5 + 1" (cast_expression "(int)puVar5" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar5")) (+ "+") (number_literal "1")) () ")")))) (<< "<<") (number_literal "8")) (| "|") (binary_expression "*(ushort *)((int)puVar5 + 1) >> 8" (pointer_expression "*(ushort *)((int)puVar5 + 1)" (* "*") (cast_expression "(ushort *)((int)puVar5 + 1)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar5 + 1)" (( "(") (binary_expression "(int)puVar5 + 1" (cast_expression "(int)puVar5" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar5")) (+ "+") (number_literal "1")) () ")")))) (>> ">>") (number_literal "8"))) () ")"))))) (; ";")) (expression_statement "uVar6 = (int)uVar4 >> 0x1f;" (assignment_expression "uVar6 = (int)uVar4 >> 0x1f" (identifier "uVar6") (= "=") (binary_expression "(int)uVar4 >> 0x1f" (cast_expression "(int)uVar4" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar4")) (>> ">>") (number_literal "0x1f"))) (; ";")) (break_statement "break;" (break "break") (; ";"))) (case_statement "case 4:\n    uVar3 = *puVar5;\n    uVar4 = uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 | uVar3 << 0x18;\n    uVar6 = (int)uVar4 >> 0x1f;\n    break;" (case "case") (number_literal "4") (: ":") (expression_statement "uVar3 = *puVar5;" (assignment_expression "uVar3 = *puVar5" (identifier "uVar3") (= "=") (pointer_expression "*puVar5" (* "*") (identifier "puVar5"))) (; ";")) (expression_statement "uVar4 = uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 | uVar3 << 0x18;" (assignment_expression "uVar4 = uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 | uVar3 << 0x18" (identifier "uVar4") (= "=") (binary_expression "uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 | uVar3 << 0x18" (binary_expression "uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8" (binary_expression "uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8" (binary_expression "uVar3 >> 0x18" (identifier "uVar3") (>> ">>") (number_literal "0x18")) (| "|") (binary_expression "(uVar3 & 0xff0000) >> 8" (parenthesized_expression "(uVar3 & 0xff0000)" (( "(") (binary_expression "uVar3 & 0xff0000" (identifier "uVar3") (& "&") (number_literal "0xff0000")) () ")")) (>> ">>") (number_literal "8"))) (| "|") (binary_expression "(uVar3 & 0xff00) << 8" (parenthesized_expression "(uVar3 & 0xff00)" (( "(") (binary_expression "uVar3 & 0xff00" (identifier "uVar3") (& "&") (number_literal "0xff00")) () ")")) (<< "<<") (number_literal "8"))) (| "|") (binary_expression "uVar3 << 0x18" (identifier "uVar3") (<< "<<") (number_literal "0x18")))) (; ";")) (expression_statement "uVar6 = (int)uVar4 >> 0x1f;" (assignment_expression "uVar6 = (int)uVar4 >> 0x1f" (identifier "uVar6") (= "=") (binary_expression "(int)uVar4 >> 0x1f" (cast_expression "(int)uVar4" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar4")) (>> ">>") (number_literal "0x1f"))) (; ";")) (break_statement "break;" (break "break") (; ";"))) (case_statement "case 5:\n    uVar3 = *(uint *)((int)puVar5 + 2);\n    uVar4 = uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 | uVar3 << 0x18;\n    uVar6 = (uint)CONCAT11((byte)*puVar5,*(byte *)((int)puVar5 + 1));\n    break;" (case "case") (number_literal "5") (: ":") (expression_statement "uVar3 = *(uint *)((int)puVar5 + 2);" (assignment_expression "uVar3 = *(uint *)((int)puVar5 + 2)" (identifier "uVar3") (= "=") (pointer_expression "*(uint *)((int)puVar5 + 2)" (* "*") (cast_expression "(uint *)((int)puVar5 + 2)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar5 + 2)" (( "(") (binary_expression "(int)puVar5 + 2" (cast_expression "(int)puVar5" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar5")) (+ "+") (number_literal "2")) () ")"))))) (; ";")) (expression_statement "uVar4 = uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 | uVar3 << 0x18;" (assignment_expression "uVar4 = uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 | uVar3 << 0x18" (identifier "uVar4") (= "=") (binary_expression "uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 | uVar3 << 0x18" (binary_expression "uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8" (binary_expression "uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8" (binary_expression "uVar3 >> 0x18" (identifier "uVar3") (>> ">>") (number_literal "0x18")) (| "|") (binary_expression "(uVar3 & 0xff0000) >> 8" (parenthesized_expression "(uVar3 & 0xff0000)" (( "(") (binary_expression "uVar3 & 0xff0000" (identifier "uVar3") (& "&") (number_literal "0xff0000")) () ")")) (>> ">>") (number_literal "8"))) (| "|") (binary_expression "(uVar3 & 0xff00) << 8" (parenthesized_expression "(uVar3 & 0xff00)" (( "(") (binary_expression "uVar3 & 0xff00" (identifier "uVar3") (& "&") (number_literal "0xff00")) () ")")) (<< "<<") (number_literal "8"))) (| "|") (binary_expression "uVar3 << 0x18" (identifier "uVar3") (<< "<<") (number_literal "0x18")))) (; ";")) (expression_statement "uVar6 = (uint)CONCAT11((byte)*puVar5,*(byte *)((int)puVar5 + 1));" (assignment_expression "uVar6 = (uint)CONCAT11((byte)*puVar5,*(byte *)((int)puVar5 + 1))" (identifier "uVar6") (= "=") (cast_expression "(uint)CONCAT11((byte)*puVar5,*(byte *)((int)puVar5 + 1))" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (call_expression "CONCAT11((byte)*puVar5,*(byte *)((int)puVar5 + 1))" (identifier "CONCAT11") (argument_list "((byte)*puVar5,*(byte *)((int)puVar5 + 1))" (( "(") (binary_expression "(byte)*puVar5" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (* "*") (identifier "puVar5")) (, ",") (pointer_expression "*(byte *)((int)puVar5 + 1)" (* "*") (cast_expression "(byte *)((int)puVar5 + 1)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar5 + 1)" (( "(") (binary_expression "(int)puVar5 + 1" (cast_expression "(int)puVar5" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar5")) (+ "+") (number_literal "1")) () ")")))) () ")"))))) (; ";")) (break_statement "break;" (break "break") (; ";"))) (case_statement "case 6:\n    uVar3 = *puVar5;\n    uVar2 = puVar5[1];\n    uVar6 = uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 | uVar3 << 0x18;\n    uVar4 = uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 | uVar2 << 0x18;\n    break;" (case "case") (number_literal "6") (: ":") (expression_statement "uVar3 = *puVar5;" (assignment_expression "uVar3 = *puVar5" (identifier "uVar3") (= "=") (pointer_expression "*puVar5" (* "*") (identifier "puVar5"))) (; ";")) (expression_statement "uVar2 = puVar5[1];" (assignment_expression "uVar2 = puVar5[1]" (identifier "uVar2") (= "=") (subscript_expression "puVar5[1]" (identifier "puVar5") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "uVar6 = uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 | uVar3 << 0x18;" (assignment_expression "uVar6 = uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 | uVar3 << 0x18" (identifier "uVar6") (= "=") (binary_expression "uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 | uVar3 << 0x18" (binary_expression "uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8" (binary_expression "uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8" (binary_expression "uVar3 >> 0x18" (identifier "uVar3") (>> ">>") (number_literal "0x18")) (| "|") (binary_expression "(uVar3 & 0xff0000) >> 8" (parenthesized_expression "(uVar3 & 0xff0000)" (( "(") (binary_expression "uVar3 & 0xff0000" (identifier "uVar3") (& "&") (number_literal "0xff0000")) () ")")) (>> ">>") (number_literal "8"))) (| "|") (binary_expression "(uVar3 & 0xff00) << 8" (parenthesized_expression "(uVar3 & 0xff00)" (( "(") (binary_expression "uVar3 & 0xff00" (identifier "uVar3") (& "&") (number_literal "0xff00")) () ")")) (<< "<<") (number_literal "8"))) (| "|") (binary_expression "uVar3 << 0x18" (identifier "uVar3") (<< "<<") (number_literal "0x18")))) (; ";")) (expression_statement "uVar4 = uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 | uVar2 << 0x18;" (assignment_expression "uVar4 = uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 | uVar2 << 0x18" (identifier "uVar4") (= "=") (binary_expression "uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 | uVar2 << 0x18" (binary_expression "uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8" (binary_expression "uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8" (binary_expression "uVar2 >> 0x18" (identifier "uVar2") (>> ">>") (number_literal "0x18")) (| "|") (binary_expression "(uVar2 & 0xff0000) >> 8" (parenthesized_expression "(uVar2 & 0xff0000)" (( "(") (binary_expression "uVar2 & 0xff0000" (identifier "uVar2") (& "&") (number_literal "0xff0000")) () ")")) (>> ">>") (number_literal "8"))) (| "|") (binary_expression "(uVar2 & 0xff00) << 8" (parenthesized_expression "(uVar2 & 0xff00)" (( "(") (binary_expression "uVar2 & 0xff00" (identifier "uVar2") (& "&") (number_literal "0xff00")) () ")")) (<< "<<") (number_literal "8"))) (| "|") (binary_expression "uVar2 << 0x18" (identifier "uVar2") (<< "<<") (number_literal "0x18")))) (; ";")) (break_statement "break;" (break "break") (; ";"))) (case_statement "case 8:\n    uVar6 = 0;\n    uVar4 = 0;\n    break;" (case "case") (number_literal "8") (: ":") (expression_statement "uVar6 = 0;" (assignment_expression "uVar6 = 0" (identifier "uVar6") (= "=") (number_literal "0")) (; ";")) (expression_statement "uVar4 = 0;" (assignment_expression "uVar4 = 0" (identifier "uVar4") (= "=") (number_literal "0")) (; ";")) (break_statement "break;" (break "break") (; ";"))) (case_statement "case 9:\n    uVar6 = 0;\n    uVar3 = **(uint **)(param_3 + 4);\n    uVar2 = (*(uint **)(param_3 + 4))[1];\n    if ((int)-uVar2 < (int)(uint)(1 < uVar3)) goto code_r0x000712dc;\n    uVar4 = 1;\n    goto code_r0x00071360;" (case "case") (number_literal "9") (: ":") (expression_statement "uVar6 = 0;" (assignment_expression "uVar6 = 0" (identifier "uVar6") (= "=") (number_literal "0")) (; ";")) (expression_statement "uVar3 = **(uint **)(param_3 + 4);" (assignment_expression "uVar3 = **(uint **)(param_3 + 4)" (identifier "uVar3") (= "=") (pointer_expression "**(uint **)(param_3 + 4)" (* "*") (pointer_expression "*(uint **)(param_3 + 4)" (* "*") (cast_expression "(uint **)(param_3 + 4)" (( "(") (type_descriptor "uint **" (type_identifier "uint") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_3 + 4)" (( "(") (binary_expression "param_3 + 4" (identifier "param_3") (+ "+") (number_literal "4")) () ")")))))) (; ";")) (expression_statement "uVar2 = (*(uint **)(param_3 + 4))[1];" (assignment_expression "uVar2 = (*(uint **)(param_3 + 4))[1]" (identifier "uVar2") (= "=") (subscript_expression "(*(uint **)(param_3 + 4))[1]" (parenthesized_expression "(*(uint **)(param_3 + 4))" (( "(") (pointer_expression "*(uint **)(param_3 + 4)" (* "*") (cast_expression "(uint **)(param_3 + 4)" (( "(") (type_descriptor "uint **" (type_identifier "uint") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_3 + 4)" (( "(") (binary_expression "param_3 + 4" (identifier "param_3") (+ "+") (number_literal "4")) () ")")))) () ")")) ([ "[") (number_literal "1") (] "]"))) (; ";")) (if_statement "if ((int)-uVar2 < (int)(uint)(1 < uVar3)) goto code_r0x000712dc;" (if "if") (parenthesized_expression "((int)-uVar2 < (int)(uint)(1 < uVar3))" (( "(") (binary_expression "(int)-uVar2 < (int)(uint)(1 < uVar3)" (cast_expression "(int)-uVar2" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (unary_expression "-uVar2" (- "-") (identifier "uVar2"))) (< "<") (cast_expression "(int)(uint)(1 < uVar3)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (call_expression "(uint)(1 < uVar3)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(1 < uVar3)" (( "(") (binary_expression "1 < uVar3" (number_literal "1") (< "<") (identifier "uVar3")) () ")"))))) () ")")) (goto_statement "goto code_r0x000712dc;" (goto "goto") (statement_identifier "code_r0x000712dc") (; ";"))) (expression_statement "uVar4 = 1;" (assignment_expression "uVar4 = 1" (identifier "uVar4") (= "=") (number_literal "1")) (; ";")) (goto_statement "goto code_r0x00071360;" (goto "goto") (statement_identifier "code_r0x00071360") (; ";"))) (} "}"))) (expression_statement "uVar3 = **(uint **)(param_3 + 4);" (assignment_expression "uVar3 = **(uint **)(param_3 + 4)" (identifier "uVar3") (= "=") (pointer_expression "**(uint **)(param_3 + 4)" (* "*") (pointer_expression "*(uint **)(param_3 + 4)" (* "*") (cast_expression "(uint **)(param_3 + 4)" (( "(") (type_descriptor "uint **" (type_identifier "uint") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_3 + 4)" (( "(") (binary_expression "param_3 + 4" (identifier "param_3") (+ "+") (number_literal "4")) () ")")))))) (; ";")) (expression_statement "uVar2 = (*(uint **)(param_3 + 4))[1];" (assignment_expression "uVar2 = (*(uint **)(param_3 + 4))[1]" (identifier "uVar2") (= "=") (subscript_expression "(*(uint **)(param_3 + 4))[1]" (parenthesized_expression "(*(uint **)(param_3 + 4))" (( "(") (pointer_expression "*(uint **)(param_3 + 4)" (* "*") (cast_expression "(uint **)(param_3 + 4)" (( "(") (type_descriptor "uint **" (type_identifier "uint") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_3 + 4)" (( "(") (binary_expression "param_3 + 4" (identifier "param_3") (+ "+") (number_literal "4")) () ")")))) () ")")) ([ "[") (number_literal "1") (] "]"))) (; ";")) (if_statement "if ((SBORROW4(uVar6,uVar2) != SBORROW4(uVar6 - uVar2,(uint)(uVar4 < uVar3))) !=\n      (int)((uVar6 - uVar2) - (uint)(uVar4 < uVar3)) < 0) {\ncode_r0x000712dc:\n    return (int)*(char *)(param_3 + 0xc);\n  }" (if "if") (parenthesized_expression "((SBORROW4(uVar6,uVar2) != SBORROW4(uVar6 - uVar2,(uint)(uVar4 < uVar3))) !=\n      (int)((uVar6 - uVar2) - (uint)(uVar4 < uVar3)) < 0)" (( "(") (binary_expression "(SBORROW4(uVar6,uVar2) != SBORROW4(uVar6 - uVar2,(uint)(uVar4 < uVar3))) !=\n      (int)((uVar6 - uVar2) - (uint)(uVar4 < uVar3)) < 0" (parenthesized_expression "(SBORROW4(uVar6,uVar2) != SBORROW4(uVar6 - uVar2,(uint)(uVar4 < uVar3)))" (( "(") (binary_expression "SBORROW4(uVar6,uVar2) != SBORROW4(uVar6 - uVar2,(uint)(uVar4 < uVar3))" (call_expression "SBORROW4(uVar6,uVar2)" (identifier "SBORROW4") (argument_list "(uVar6,uVar2)" (( "(") (identifier "uVar6") (, ",") (identifier "uVar2") () ")"))) (!= "!=") (call_expression "SBORROW4(uVar6 - uVar2,(uint)(uVar4 < uVar3))" (identifier "SBORROW4") (argument_list "(uVar6 - uVar2,(uint)(uVar4 < uVar3))" (( "(") (binary_expression "uVar6 - uVar2" (identifier "uVar6") (- "-") (identifier "uVar2")) (, ",") (call_expression "(uint)(uVar4 < uVar3)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(uVar4 < uVar3)" (( "(") (binary_expression "uVar4 < uVar3" (identifier "uVar4") (< "<") (identifier "uVar3")) () ")"))) () ")")))) () ")")) (!= "!=") (binary_expression "(int)((uVar6 - uVar2) - (uint)(uVar4 < uVar3)) < 0" (cast_expression "(int)((uVar6 - uVar2) - (uint)(uVar4 < uVar3))" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "((uVar6 - uVar2) - (uint)(uVar4 < uVar3))" (( "(") (binary_expression "(uVar6 - uVar2) - (uint)(uVar4 < uVar3)" (parenthesized_expression "(uVar6 - uVar2)" (( "(") (binary_expression "uVar6 - uVar2" (identifier "uVar6") (- "-") (identifier "uVar2")) () ")")) (- "-") (call_expression "(uint)(uVar4 < uVar3)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(uVar4 < uVar3)" (( "(") (binary_expression "uVar4 < uVar3" (identifier "uVar4") (< "<") (identifier "uVar3")) () ")")))) () ")"))) (< "<") (number_literal "0"))) () ")")) (compound_statement "{\ncode_r0x000712dc:\n    return (int)*(char *)(param_3 + 0xc);\n  }" ({ "{") (labeled_statement "code_r0x000712dc:\n    return (int)*(char *)(param_3 + 0xc);" (statement_identifier "code_r0x000712dc") (: ":") (return_statement "return (int)*(char *)(param_3 + 0xc);" (return "return") (cast_expression "(int)*(char *)(param_3 + 0xc)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (pointer_expression "*(char *)(param_3 + 0xc)" (* "*") (cast_expression "(char *)(param_3 + 0xc)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + 0xc)" (( "(") (binary_expression "param_3 + 0xc" (identifier "param_3") (+ "+") (number_literal "0xc")) () ")"))))) (; ";"))) (} "}"))) (labeled_statement "code_r0x00071360:\n  if ((SBORROW4(uVar2,uVar6) != SBORROW4(uVar2 - uVar6,(uint)(uVar3 < uVar4))) !=\n      (int)((uVar2 - uVar6) - (uint)(uVar3 < uVar4)) < 0) {\n    return (int)*(char *)(param_3 + 0xd);\n  }" (statement_identifier "code_r0x00071360") (: ":") (if_statement "if ((SBORROW4(uVar2,uVar6) != SBORROW4(uVar2 - uVar6,(uint)(uVar3 < uVar4))) !=\n      (int)((uVar2 - uVar6) - (uint)(uVar3 < uVar4)) < 0) {\n    return (int)*(char *)(param_3 + 0xd);\n  }" (if "if") (parenthesized_expression "((SBORROW4(uVar2,uVar6) != SBORROW4(uVar2 - uVar6,(uint)(uVar3 < uVar4))) !=\n      (int)((uVar2 - uVar6) - (uint)(uVar3 < uVar4)) < 0)" (( "(") (binary_expression "(SBORROW4(uVar2,uVar6) != SBORROW4(uVar2 - uVar6,(uint)(uVar3 < uVar4))) !=\n      (int)((uVar2 - uVar6) - (uint)(uVar3 < uVar4)) < 0" (parenthesized_expression "(SBORROW4(uVar2,uVar6) != SBORROW4(uVar2 - uVar6,(uint)(uVar3 < uVar4)))" (( "(") (binary_expression "SBORROW4(uVar2,uVar6) != SBORROW4(uVar2 - uVar6,(uint)(uVar3 < uVar4))" (call_expression "SBORROW4(uVar2,uVar6)" (identifier "SBORROW4") (argument_list "(uVar2,uVar6)" (( "(") (identifier "uVar2") (, ",") (identifier "uVar6") () ")"))) (!= "!=") (call_expression "SBORROW4(uVar2 - uVar6,(uint)(uVar3 < uVar4))" (identifier "SBORROW4") (argument_list "(uVar2 - uVar6,(uint)(uVar3 < uVar4))" (( "(") (binary_expression "uVar2 - uVar6" (identifier "uVar2") (- "-") (identifier "uVar6")) (, ",") (call_expression "(uint)(uVar3 < uVar4)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(uVar3 < uVar4)" (( "(") (binary_expression "uVar3 < uVar4" (identifier "uVar3") (< "<") (identifier "uVar4")) () ")"))) () ")")))) () ")")) (!= "!=") (binary_expression "(int)((uVar2 - uVar6) - (uint)(uVar3 < uVar4)) < 0" (cast_expression "(int)((uVar2 - uVar6) - (uint)(uVar3 < uVar4))" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "((uVar2 - uVar6) - (uint)(uVar3 < uVar4))" (( "(") (binary_expression "(uVar2 - uVar6) - (uint)(uVar3 < uVar4)" (parenthesized_expression "(uVar2 - uVar6)" (( "(") (binary_expression "uVar2 - uVar6" (identifier "uVar2") (- "-") (identifier "uVar6")) () ")")) (- "-") (call_expression "(uint)(uVar3 < uVar4)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(uVar3 < uVar4)" (( "(") (binary_expression "uVar3 < uVar4" (identifier "uVar3") (< "<") (identifier "uVar4")) () ")")))) () ")"))) (< "<") (number_literal "0"))) () ")")) (compound_statement "{\n    return (int)*(char *)(param_3 + 0xd);\n  }" ({ "{") (return_statement "return (int)*(char *)(param_3 + 0xd);" (return "return") (cast_expression "(int)*(char *)(param_3 + 0xd)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (pointer_expression "*(char *)(param_3 + 0xd)" (* "*") (cast_expression "(char *)(param_3 + 0xd)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + 0xd)" (( "(") (binary_expression "param_3 + 0xd" (identifier "param_3") (+ "+") (number_literal "0xd")) () ")"))))) (; ";")) (} "}")))) (if_statement "if (*(ushort *)(param_3 + 8) < 2) {\n    *(undefined1 *)(param_3 + 0xe) = 1;\n    return (int)*(char *)(param_3 + 10);\n  }" (if "if") (parenthesized_expression "(*(ushort *)(param_3 + 8) < 2)" (( "(") (binary_expression "*(ushort *)(param_3 + 8) < 2" (pointer_expression "*(ushort *)(param_3 + 8)" (* "*") (cast_expression "(ushort *)(param_3 + 8)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + 8)" (( "(") (binary_expression "param_3 + 8" (identifier "param_3") (+ "+") (number_literal "8")) () ")")))) (< "<") (number_literal "2")) () ")")) (compound_statement "{\n    *(undefined1 *)(param_3 + 0xe) = 1;\n    return (int)*(char *)(param_3 + 10);\n  }" ({ "{") (expression_statement "*(undefined1 *)(param_3 + 0xe) = 1;" (assignment_expression "*(undefined1 *)(param_3 + 0xe) = 1" (pointer_expression "*(undefined1 *)(param_3 + 0xe)" (* "*") (cast_expression "(undefined1 *)(param_3 + 0xe)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + 0xe)" (( "(") (binary_expression "param_3 + 0xe" (identifier "param_3") (+ "+") (number_literal "0xe")) () ")")))) (= "=") (number_literal "1")) (; ";")) (return_statement "return (int)*(char *)(param_3 + 10);" (return "return") (cast_expression "(int)*(char *)(param_3 + 10)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (pointer_expression "*(char *)(param_3 + 10)" (* "*") (cast_expression "(char *)(param_3 + 10)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + 10)" (( "(") (binary_expression "param_3 + 10" (identifier "param_3") (+ "+") (number_literal "10")) () ")"))))) (; ";")) (} "}"))) (labeled_statement "code_r0x000712a8:\n  iVar1 = FUN_00070ba0();" (statement_identifier "code_r0x000712a8") (: ":") (expression_statement "iVar1 = FUN_00070ba0();" (assignment_expression "iVar1 = FUN_00070ba0()" (identifier "iVar1") (= "=") (call_expression "FUN_00070ba0()" (identifier "FUN_00070ba0") (argument_list "()" (( "(") () ")")))) (; ";"))) (return_statement "return iVar1;" (return "return") (identifier "iVar1") (; ";")) (} "}")))

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

int function_1(int nKey1,void *pKey1,type_1 *pPKey2)

{
  type_2 var_4;
  int iVar2;
  int var_7;
  char *var_5;
  char *var_8;
  type_2 *puVar6;
  type_2 var_3;
  
  iVar2 = nKey1;
                    /* WARNING: Load size is inaccurate */
  puVar6 = (type_2 *)((*pKey1 & 0x3f) + (int)pKey1);
  switch(*(type_3 *)((int)pKey1 + 1)) {
  default:
    nKey1 = 0;
    goto LAB_000712a8;
  case 1:
    var_8 = (char *)(int)(char)*puVar6;
    var_3 = (int)var_8 >> 0x1f;
    break;
  case 2:
    var_8 = (char *)(int)var_1((char)*puVar6,*(char *)((int)puVar6 + 1));
    var_3 = (int)var_8 >> 0x1f;
    break;
  case 3:
    var_8 = (char *)(int)var_2((char)*puVar6,
                                   *(type_4 *)((int)puVar6 + 1) << 8 |
                                   *(type_4 *)((int)puVar6 + 1) >> 8);
    var_3 = (int)var_8 >> 0x1f;
    break;
  case 4:
    var_3 = *puVar6;
    var_8 = (char *)(var_3 >> 0x18 | (var_3 & 0xff0000) >> 8 | (var_3 & 0xff00) << 8 |
                     var_3 << 0x18);
    var_3 = (int)var_8 >> 0x1f;
    break;
  case 5:
    var_3 = *(type_2 *)((int)puVar6 + 2);
    var_8 = (char *)(var_3 >> 0x18 | (var_3 & 0xff0000) >> 8 | (var_3 & 0xff00) << 8 |
                     var_3 << 0x18);
    var_3 = (type_2)var_1((char)*puVar6,*(char *)((int)puVar6 + 1));
    break;
  case 6:
    var_3 = *puVar6;
    var_4 = puVar6[1];
    var_3 = var_3 >> 0x18 | (var_3 & 0xff0000) >> 8 | (var_3 & 0xff00) << 8 | var_3 << 0x18;
    var_8 = (char *)(var_4 >> 0x18 | (var_4 & 0xff0000) >> 8 | (var_4 & 0xff00) << 8 |
                     var_4 << 0x18);
    break;
  case 8:
    var_3 = 0;
    var_8 = (char *)0x0;
    break;
  case 9:
    var_3 = 0;
    var_5 = (pPKey2->aMem->u).zPType;
    var_7 = *(int *)((int)&pPKey2->aMem->u + 4);
    if (-var_7 < (int)(type_2)((char *)0x1 < var_5)) goto LAB_000712dc;
    var_8 = (char *)0x1;
    goto LAB_00071360;
  }
  var_5 = (pPKey2->aMem->u).zPType;
  var_7 = *(int *)((int)&pPKey2->aMem->u + 4);
  if ((var_6(var_3,var_7) != var_6(var_3 - var_7,(type_2)(var_8 < var_5))) !=
      (int)((var_3 - var_7) - (type_2)(var_8 < var_5)) < 0) {
LAB_000712dc:
    return (int)pPKey2->r1;
  }
LAB_00071360:
  if ((var_6(var_7,var_3) != var_6(var_7 - var_3,(type_2)(var_5 < var_8))) !=
      (int)((var_7 - var_3) - (type_2)(var_5 < var_8)) < 0) {
    return (int)pPKey2->r2;
  }
  if (pPKey2->nField < 2) {
    pPKey2->eqSeen = '\x01';
    return (int)pPKey2->default_rc;
  }
  nKey1 = 1;
LAB_000712a8:
  iVar2 = var_9(iVar2,pKey1,pPKey2,nKey1);
  return iVar2;
}


(translation_unit (function_definition type: (primitive_type) declarator: (function_declarator declarator: (identifier) parameters: (parameter_list (parameter_declaration type: (type_identifier) declarator: (identifier)) (parameter_declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (parameter_declaration type: (primitive_type) declarator: (identifier)))) body: (compound_statement (declaration type: (primitive_type) 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)) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (number_literal)))))))) (switch_statement condition: (parenthesized_expression (subscript_expression argument: (identifier) index: (number_literal))) body: (compound_statement (case_statement (goto_statement label: (statement_identifier))) (case_statement value: (number_literal) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (call_expression function: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (identifier))) arguments: (argument_list (identifier))) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal)))) (break_statement)) (case_statement value: (number_literal) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (call_expression function: (identifier) arguments: (argument_list (binary_expression left: (parenthesized_expression (identifier)) right: (identifier)) (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal)))))))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal)))) (break_statement)) (case_statement value: (number_literal) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (call_expression function: (identifier) arguments: (argument_list (binary_expression left: (parenthesized_expression (identifier)) right: (identifier)) (binary_expression left: (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))))) right: (number_literal)) right: (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))))) right: (number_literal)))))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal)))) (break_statement)) (case_statement value: (number_literal) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal))) right: (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal))) right: (binary_expression left: (identifier) right: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal)))) (break_statement)) (case_statement value: (number_literal) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal))) right: (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal))) right: (binary_expression left: (identifier) right: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (call_expression function: (identifier) arguments: (argument_list (binary_expression left: (parenthesized_expression (identifier)) right: (identifier)) (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal)))))))))) (break_statement)) (case_statement value: (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: (binary_expression left: (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal))) right: (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal))) right: (binary_expression left: (identifier) right: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal))) right: (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal))) right: (binary_expression left: (identifier) right: (number_literal))))) (break_statement)) (case_statement value: (number_literal) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (break_statement)) (case_statement value: (number_literal) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) index: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (unary_expression argument: (identifier))) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (number_literal) right: (identifier))))))) consequence: (goto_statement label: (statement_identifier))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (goto_statement label: (statement_identifier))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) index: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier))) right: (call_expression function: (identifier) arguments: (argument_list (binary_expression left: (identifier) right: (identifier)) (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (identifier) right: (identifier)))))))) right: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) right: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (identifier) right: (identifier))))))) right: (number_literal)))) consequence: (compound_statement (labeled_statement label: (statement_identifier) (return_statement (cast_expression type: (type_descriptor type: (primitive_type)) value: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))))))) (labeled_statement label: (statement_identifier) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier))) right: (call_expression function: (identifier) arguments: (argument_list (binary_expression left: (identifier) right: (identifier)) (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (identifier) right: (identifier)))))))) right: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) right: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (identifier) right: (identifier))))))) right: (number_literal)))) consequence: (compound_statement (return_statement (cast_expression type: (type_descriptor type: (primitive_type)) value: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (return_statement (cast_expression type: (type_descriptor type: (primitive_type)) value: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list))))) (return_statement (identifier)))))

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

int MASKED(undefined4 param_1,byte *param_2,int param_3)

{
  int iVar1;
  uint uVar2;
  uint uVar3;
  uint uVar4;
  uint *puVar5;
  uint uVar6;
  
  puVar5 = (uint *)(param_2 + (*param_2 & 0x3f));
  switch(param_2[1]) {
  default:
    goto code_r0x000712a8;
  case 1:
    uVar4 = (uint)(char)(byte)*puVar5;
    uVar6 = (int)uVar4 >> 0x1f;
    break;
  case 2:
    uVar4 = (uint)CONCAT11((byte)*puVar5,*(byte *)((int)puVar5 + 1));
    uVar6 = (int)uVar4 >> 0x1f;
    break;
  case 3:
    uVar4 = (uint)CONCAT12((byte)*puVar5,
                           *(ushort *)((int)puVar5 + 1) << 8 | *(ushort *)((int)puVar5 + 1) >> 8);
    uVar6 = (int)uVar4 >> 0x1f;
    break;
  case 4:
    uVar3 = *puVar5;
    uVar4 = uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 | uVar3 << 0x18;
    uVar6 = (int)uVar4 >> 0x1f;
    break;
  case 5:
    uVar3 = *(uint *)((int)puVar5 + 2);
    uVar4 = uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 | uVar3 << 0x18;
    uVar6 = (uint)CONCAT11((byte)*puVar5,*(byte *)((int)puVar5 + 1));
    break;
  case 6:
    uVar3 = *puVar5;
    uVar2 = puVar5[1];
    uVar6 = uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 | uVar3 << 0x18;
    uVar4 = uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 | uVar2 << 0x18;
    break;
  case 8:
    uVar6 = 0;
    uVar4 = 0;
    break;
  case 9:
    uVar6 = 0;
    uVar3 = **(uint **)(param_3 + 4);
    uVar2 = (*(uint **)(param_3 + 4))[1];
    if ((int)-uVar2 < (int)(uint)(1 < uVar3)) goto code_r0x000712dc;
    uVar4 = 1;
    goto code_r0x00071360;
  }
  uVar3 = **(uint **)(param_3 + 4);
  uVar2 = (*(uint **)(param_3 + 4))[1];
  if ((SBORROW4(uVar6,uVar2) != SBORROW4(uVar6 - uVar2,(uint)(uVar4 < uVar3))) !=
      (int)((uVar6 - uVar2) - (uint)(uVar4 < uVar3)) < 0) {
code_r0x000712dc:
    return (int)*(char *)(param_3 + 0xc);
  }
code_r0x00071360:
  if ((SBORROW4(uVar2,uVar6) != SBORROW4(uVar2 - uVar6,(uint)(uVar3 < uVar4))) !=
      (int)((uVar2 - uVar6) - (uint)(uVar3 < uVar4)) < 0) {
    return (int)*(char *)(param_3 + 0xd);
  }
  if (*(ushort *)(param_3 + 8) < 2) {
    *(undefined1 *)(param_3 + 0xe) = 1;
    return (int)*(char *)(param_3 + 10);
  }
code_r0x000712a8:
  iVar1 = FUN_00070ba0();
  return iVar1;
}

