
/* std::(anonymous namespace)::read_utf8_code_point(std::(anonymous namespace)::range<char const,
   true>&, unsigned long) */

uint __regparm3 std::(anonymous_namespace)::read_utf8_code_point(range *param_1,ulong param_2)

{
  byte bVar1;
  byte bVar2;
  byte *pbVar3;
  uint uVar4;
  uint uVar5;
  uint uVar6;
  
  pbVar3 = *(byte **)param_1;
  uVar6 = (int)*(byte **)(param_1 + 4) - (int)pbVar3;
  if (*(byte **)(param_1 + 4) == pbVar3) {
    return 0xfffffffe;
  }
  bVar1 = *pbVar3;
  uVar5 = (uint)bVar1;
  if ((char)bVar1 < '\0') {
    uVar4 = 0xffffffff;
    if (0xc1 < bVar1) {
      if (bVar1 < 0xe0) {
        if (uVar6 == 1) {
          return 0xfffffffe;
        }
        if (((pbVar3[1] & 0xc0) == 0x80) &&
           (uVar4 = uVar5 * 0x40 + -0x3080 + (uint)pbVar3[1], uVar4 <= param_2)) {
          *(byte **)param_1 = pbVar3 + 2;
        }
      }
      else if (bVar1 < 0xf0) {
        uVar4 = 0xfffffffe;
        if (2 < uVar6) {
          bVar2 = pbVar3[1];
          uVar4 = 0xffffffff;
          if (((bVar2 & 0xc0) == 0x80) && ((bVar1 != 0xe0 || (0x9f < bVar2)))) {
            uVar4 = 0xffffffff;
            if (((pbVar3[2] & 0xc0) == 0x80) &&
               (uVar4 = (uint)bVar2 * 0x40 + uVar5 * 0x1000 + -0xe2080 + (uint)pbVar3[2],
               uVar4 <= param_2)) {
              *(byte **)param_1 = pbVar3 + 3;
            }
          }
        }
      }
      else if ((bVar1 < 0xf5) && (uVar4 = 0xfffffffe, 3 < uVar6)) {
        bVar2 = pbVar3[1];
        uVar4 = 0xffffffff;
        if ((((bVar2 & 0xc0) == 0x80) && ((bVar1 != 0xf0 || (0x8f < bVar2)))) &&
           ((bVar1 != 0xf4 || (uVar4 = 0xffffffff, bVar2 < 0x90)))) {
          uVar4 = 0xffffffff;
          if ((((pbVar3[2] & 0xc0) == 0x80) && ((pbVar3[3] & 0xc0) == 0x80)) &&
             (uVar4 = uVar5 * 0x40000 + (uint)bVar2 * 0x1000 + (uint)pbVar3[2] * 0x40 + -0x3c82080 +
                      (uint)pbVar3[3], uVar4 <= param_2)) {
            *(byte **)param_1 = pbVar3 + 4;
          }
        }
      }
    }
  }
  else {
    *(byte **)param_1 = pbVar3 + 1;
    uVar4 = (uint)bVar1;
  }
  return uVar4;
}



uint __regparm3 FUN_002072d0(undefined4 *param_1,uint param_2)

{
  byte bVar1;
  byte bVar2;
  byte *pbVar3;
  uint uVar4;
  uint uVar5;
  uint uVar6;
  
  pbVar3 = (byte *)*param_1;
  uVar6 = (int)param_1[1] - (int)pbVar3;
  if ((byte *)param_1[1] == pbVar3) {
    return 0xfffffffe;
  }
  bVar1 = *pbVar3;
  uVar5 = (uint)bVar1;
  if ((char)bVar1 < '\0') {
    uVar4 = 0xffffffff;
    if (0xc1 < bVar1) {
      if (bVar1 < 0xe0) {
        if (uVar6 == 1) {
          return 0xfffffffe;
        }
        if (((pbVar3[1] & 0xc0) == 0x80) &&
           (uVar4 = uVar5 * 0x40 + -0x3080 + (uint)pbVar3[1], uVar4 <= param_2)) {
          *param_1 = pbVar3 + 2;
        }
      }
      else if (bVar1 < 0xf0) {
        uVar4 = 0xfffffffe;
        if (2 < uVar6) {
          bVar2 = pbVar3[1];
          uVar4 = 0xffffffff;
          if (((bVar2 & 0xc0) == 0x80) && ((bVar1 != 0xe0 || (0x9f < bVar2)))) {
            uVar4 = 0xffffffff;
            if (((pbVar3[2] & 0xc0) == 0x80) &&
               (uVar4 = (uint)bVar2 * 0x40 + uVar5 * 0x1000 + -0xe2080 + (uint)pbVar3[2],
               uVar4 <= param_2)) {
              *param_1 = pbVar3 + 3;
            }
          }
        }
      }
      else if ((bVar1 < 0xf5) && (uVar4 = 0xfffffffe, 3 < uVar6)) {
        bVar2 = pbVar3[1];
        uVar4 = 0xffffffff;
        if ((((bVar2 & 0xc0) == 0x80) && ((bVar1 != 0xf0 || (0x8f < bVar2)))) &&
           ((bVar1 != 0xf4 || (uVar4 = 0xffffffff, bVar2 < 0x90)))) {
          uVar4 = 0xffffffff;
          if ((((pbVar3[2] & 0xc0) == 0x80) && ((pbVar3[3] & 0xc0) == 0x80)) &&
             (uVar4 = uVar5 * 0x40000 + (uint)bVar2 * 0x1000 + (uint)pbVar3[2] * 0x40 + -0x3c82080 +
                      (uint)pbVar3[3], uVar4 <= param_2)) {
            *param_1 = pbVar3 + 4;
          }
        }
      }
    }
  }
  else {
    *param_1 = pbVar3 + 1;
    uVar4 = (uint)bVar1;
  }
  return uVar4;
}


PUSH EBP
PUSH EDI
PUSH ESI
PUSH EBX
SUB ESP,0x8
MOV ECX,dword ptr [EAX]
MOV EDI,dword ptr [EAX + 0x4]
MOV dword ptr [ESP],EDX
SUB EDI,ECX
JZ 0x00207340
MOVZX EBX,byte ptr [ECX]
MOV ESI,EAX
TEST BL,BL
JNS 0x00207330
MOV EAX,0xffffffff
CMP BL,0xc1
JBE 0x00207338
CMP BL,0xdf
JA 0x00207350
CMP EDI,0x1
JZ 0x00207340
MOVZX EDI,byte ptr [ECX + 0x1]
MOV EBP,EDI
AND EBP,0xffffffc0
MOV EDX,EBP
CMP DL,0x80
JNZ 0x00207338
MOV EAX,EDI
SHL EBX,0x6
MOVZX EDI,AL
LEA EAX,[EBX + EDI*0x1 + 0xffffcf80]
CMP EAX,dword ptr [ESP]
JA 0x00207338
ADD ECX,0x2
MOV dword ptr [ESI],ECX
JMP 0x00207338
ADD ECX,0x1
MOV dword ptr [EAX],ECX
MOVZX EAX,BL
ADD ESP,0x8
POP EBX
POP ESI
POP EDI
POP EBP
RET
ADD ESP,0x8
MOV EAX,0xfffffffe
POP EBX
POP ESI
POP EDI
POP EBP
RET
CMP BL,0xef
JA 0x002073c0
MOV EAX,0xfffffffe
CMP EDI,0x2
JBE 0x00207338
MOVZX EDI,byte ptr [ECX + 0x1]
MOV EAX,0xffffffff
MOV EBP,EDI
AND EBP,0xffffffc0
MOV EDX,EBP
CMP DL,0x80
JNZ 0x00207338
CMP BL,0xe0
JNZ 0x00207380
MOV EDX,EDI
CMP DL,0x9f
JBE 0x00207338
MOVZX EBP,byte ptr [ECX + 0x2]
MOV EAX,EBP
AND EAX,0xffffffc0
MOV EDX,EAX
MOV EAX,0xffffffff
CMP DL,0x80
JNZ 0x00207338
MOV EAX,EDI
SHL EBX,0xc
MOVZX EDI,AL
MOV EAX,EBP
SHL EDI,0x6
MOVZX EBP,AL
ADD EDI,EBX
LEA EAX,[EDI + EBP*0x1 + 0xfff1df80]
CMP dword ptr [ESP],EAX
JC 0x00207338
ADD ECX,0x3
MOV dword ptr [ESI],ECX
JMP 0x00207338
CMP BL,0xf4
JA 0x00207338
MOV EAX,0xfffffffe
CMP EDI,0x3
JBE 0x00207338
MOVZX EDI,byte ptr [ECX + 0x1]
MOV EAX,0xffffffff
MOV EBP,EDI
AND EBP,0xffffffc0
MOV EDX,EBP
CMP DL,0x80
JNZ 0x00207338
CMP BL,0xf0
JNZ 0x00207400
MOV EDX,EDI
CMP DL,0x8f
JBE 0x00207338
CMP BL,0xf4
JNZ 0x00207415
MOV EDX,EDI
MOV EAX,0xffffffff
CMP DL,0x8f
JA 0x00207338
MOVZX EAX,byte ptr [ECX + 0x2]
MOV EBP,EAX
MOV byte ptr [ESP + 0x7],AL
MOV EAX,0xffffffff
AND EBP,0xffffffc0
MOV EDX,EBP
CMP DL,0x80
JNZ 0x00207338
MOVZX EBP,byte ptr [ECX + 0x3]
MOV EDX,EBP
AND EDX,0xffffffc0
CMP DL,0x80
JNZ 0x00207338
MOV EDX,EDI
MOVZX EAX,byte ptr [ESP + 0x7]
SHL EBX,0x12
MOVZX EDI,DL
SHL EDI,0xc
SHL EAX,0x6
ADD EBX,EDI
ADD EBX,EAX
MOV EAX,EBP
MOVZX EAX,AL
LEA EAX,[EBX + EAX*0x1 + 0xfc37df80]
CMP dword ptr [ESP],EAX
JC 0x00207338
ADD ECX,0x4
MOV dword ptr [ESI],ECX
JMP 0x00207338
(translation_unit "uint __regparm3 FUN_002072d0(undefined4 *param_1,uint param_2)\n\n{\n  byte bVar1;\n  byte bVar2;\n  byte *pbVar3;\n  uint uVar4;\n  uint uVar5;\n  uint uVar6;\n  \n  pbVar3 = (byte *)*param_1;\n  uVar6 = (int)param_1[1] - (int)pbVar3;\n  if ((byte *)param_1[1] == pbVar3) {\n    return 0xfffffffe;\n  }\n  bVar1 = *pbVar3;\n  uVar5 = (uint)bVar1;\n  if ((char)bVar1 < '\0') {\n    uVar4 = 0xffffffff;\n    if (0xc1 < bVar1) {\n      if (bVar1 < 0xe0) {\n        if (uVar6 == 1) {\n          return 0xfffffffe;\n        }\n        if (((pbVar3[1] & 0xc0) == 0x80) &&\n           (uVar4 = uVar5 * 0x40 + -0x3080 + (uint)pbVar3[1], uVar4 <= param_2)) {\n          *param_1 = pbVar3 + 2;\n        }\n      }\n      else if (bVar1 < 0xf0) {\n        uVar4 = 0xfffffffe;\n        if (2 < uVar6) {\n          bVar2 = pbVar3[1];\n          uVar4 = 0xffffffff;\n          if (((bVar2 & 0xc0) == 0x80) && ((bVar1 != 0xe0 || (0x9f < bVar2)))) {\n            uVar4 = 0xffffffff;\n            if (((pbVar3[2] & 0xc0) == 0x80) &&\n               (uVar4 = (uint)bVar2 * 0x40 + uVar5 * 0x1000 + -0xe2080 + (uint)pbVar3[2],\n               uVar4 <= param_2)) {\n              *param_1 = pbVar3 + 3;\n            }\n          }\n        }\n      }\n      else if ((bVar1 < 0xf5) && (uVar4 = 0xfffffffe, 3 < uVar6)) {\n        bVar2 = pbVar3[1];\n        uVar4 = 0xffffffff;\n        if ((((bVar2 & 0xc0) == 0x80) && ((bVar1 != 0xf0 || (0x8f < bVar2)))) &&\n           ((bVar1 != 0xf4 || (uVar4 = 0xffffffff, bVar2 < 0x90)))) {\n          uVar4 = 0xffffffff;\n          if ((((pbVar3[2] & 0xc0) == 0x80) && ((pbVar3[3] & 0xc0) == 0x80)) &&\n             (uVar4 = uVar5 * 0x40000 + (uint)bVar2 * 0x1000 + (uint)pbVar3[2] * 0x40 + -0x3c82080 +\n                      (uint)pbVar3[3], uVar4 <= param_2)) {\n            *param_1 = pbVar3 + 4;\n          }\n        }\n      }\n    }\n  }\n  else {\n    *param_1 = pbVar3 + 1;\n    uVar4 = (uint)bVar1;\n  }\n  return uVar4;\n}\n\n" (function_definition "uint __regparm3 FUN_002072d0(undefined4 *param_1,uint param_2)\n\n{\n  byte bVar1;\n  byte bVar2;\n  byte *pbVar3;\n  uint uVar4;\n  uint uVar5;\n  uint uVar6;\n  \n  pbVar3 = (byte *)*param_1;\n  uVar6 = (int)param_1[1] - (int)pbVar3;\n  if ((byte *)param_1[1] == pbVar3) {\n    return 0xfffffffe;\n  }\n  bVar1 = *pbVar3;\n  uVar5 = (uint)bVar1;\n  if ((char)bVar1 < '\0') {\n    uVar4 = 0xffffffff;\n    if (0xc1 < bVar1) {\n      if (bVar1 < 0xe0) {\n        if (uVar6 == 1) {\n          return 0xfffffffe;\n        }\n        if (((pbVar3[1] & 0xc0) == 0x80) &&\n           (uVar4 = uVar5 * 0x40 + -0x3080 + (uint)pbVar3[1], uVar4 <= param_2)) {\n          *param_1 = pbVar3 + 2;\n        }\n      }\n      else if (bVar1 < 0xf0) {\n        uVar4 = 0xfffffffe;\n        if (2 < uVar6) {\n          bVar2 = pbVar3[1];\n          uVar4 = 0xffffffff;\n          if (((bVar2 & 0xc0) == 0x80) && ((bVar1 != 0xe0 || (0x9f < bVar2)))) {\n            uVar4 = 0xffffffff;\n            if (((pbVar3[2] & 0xc0) == 0x80) &&\n               (uVar4 = (uint)bVar2 * 0x40 + uVar5 * 0x1000 + -0xe2080 + (uint)pbVar3[2],\n               uVar4 <= param_2)) {\n              *param_1 = pbVar3 + 3;\n            }\n          }\n        }\n      }\n      else if ((bVar1 < 0xf5) && (uVar4 = 0xfffffffe, 3 < uVar6)) {\n        bVar2 = pbVar3[1];\n        uVar4 = 0xffffffff;\n        if ((((bVar2 & 0xc0) == 0x80) && ((bVar1 != 0xf0 || (0x8f < bVar2)))) &&\n           ((bVar1 != 0xf4 || (uVar4 = 0xffffffff, bVar2 < 0x90)))) {\n          uVar4 = 0xffffffff;\n          if ((((pbVar3[2] & 0xc0) == 0x80) && ((pbVar3[3] & 0xc0) == 0x80)) &&\n             (uVar4 = uVar5 * 0x40000 + (uint)bVar2 * 0x1000 + (uint)pbVar3[2] * 0x40 + -0x3c82080 +\n                      (uint)pbVar3[3], uVar4 <= param_2)) {\n            *param_1 = pbVar3 + 4;\n          }\n        }\n      }\n    }\n  }\n  else {\n    *param_1 = pbVar3 + 1;\n    uVar4 = (uint)bVar1;\n  }\n  return uVar4;\n}" type_identifier (ERROR "__regparm3" identifier) (function_declarator "FUN_002072d0(undefined4 *param_1,uint param_2)" identifier (parameter_list "(undefined4 *param_1,uint param_2)" ( (parameter_declaration "undefined4 *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "uint param_2" type_identifier identifier) ))) (compound_statement "{\n  byte bVar1;\n  byte bVar2;\n  byte *pbVar3;\n  uint uVar4;\n  uint uVar5;\n  uint uVar6;\n  \n  pbVar3 = (byte *)*param_1;\n  uVar6 = (int)param_1[1] - (int)pbVar3;\n  if ((byte *)param_1[1] == pbVar3) {\n    return 0xfffffffe;\n  }\n  bVar1 = *pbVar3;\n  uVar5 = (uint)bVar1;\n  if ((char)bVar1 < '\0') {\n    uVar4 = 0xffffffff;\n    if (0xc1 < bVar1) {\n      if (bVar1 < 0xe0) {\n        if (uVar6 == 1) {\n          return 0xfffffffe;\n        }\n        if (((pbVar3[1] & 0xc0) == 0x80) &&\n           (uVar4 = uVar5 * 0x40 + -0x3080 + (uint)pbVar3[1], uVar4 <= param_2)) {\n          *param_1 = pbVar3 + 2;\n        }\n      }\n      else if (bVar1 < 0xf0) {\n        uVar4 = 0xfffffffe;\n        if (2 < uVar6) {\n          bVar2 = pbVar3[1];\n          uVar4 = 0xffffffff;\n          if (((bVar2 & 0xc0) == 0x80) && ((bVar1 != 0xe0 || (0x9f < bVar2)))) {\n            uVar4 = 0xffffffff;\n            if (((pbVar3[2] & 0xc0) == 0x80) &&\n               (uVar4 = (uint)bVar2 * 0x40 + uVar5 * 0x1000 + -0xe2080 + (uint)pbVar3[2],\n               uVar4 <= param_2)) {\n              *param_1 = pbVar3 + 3;\n            }\n          }\n        }\n      }\n      else if ((bVar1 < 0xf5) && (uVar4 = 0xfffffffe, 3 < uVar6)) {\n        bVar2 = pbVar3[1];\n        uVar4 = 0xffffffff;\n        if ((((bVar2 & 0xc0) == 0x80) && ((bVar1 != 0xf0 || (0x8f < bVar2)))) &&\n           ((bVar1 != 0xf4 || (uVar4 = 0xffffffff, bVar2 < 0x90)))) {\n          uVar4 = 0xffffffff;\n          if ((((pbVar3[2] & 0xc0) == 0x80) && ((pbVar3[3] & 0xc0) == 0x80)) &&\n             (uVar4 = uVar5 * 0x40000 + (uint)bVar2 * 0x1000 + (uint)pbVar3[2] * 0x40 + -0x3c82080 +\n                      (uint)pbVar3[3], uVar4 <= param_2)) {\n            *param_1 = pbVar3 + 4;\n          }\n        }\n      }\n    }\n  }\n  else {\n    *param_1 = pbVar3 + 1;\n    uVar4 = (uint)bVar1;\n  }\n  return uVar4;\n}" { (declaration "byte bVar1;" type_identifier identifier ;) (declaration "byte bVar2;" type_identifier identifier ;) (declaration "byte *pbVar3;" type_identifier (pointer_declarator "*pbVar3" * identifier) ;) (declaration "uint uVar4;" type_identifier identifier ;) (declaration "uint uVar5;" type_identifier identifier ;) (declaration "uint uVar6;" type_identifier identifier ;) (expression_statement "pbVar3 = (byte *)*param_1;" (assignment_expression "pbVar3 = (byte *)*param_1" identifier = (cast_expression "(byte *)*param_1" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_1" * identifier))) ;) (expression_statement "uVar6 = (int)param_1[1] - (int)pbVar3;" (assignment_expression "uVar6 = (int)param_1[1] - (int)pbVar3" identifier = (binary_expression "(int)param_1[1] - (int)pbVar3" (cast_expression "(int)param_1[1]" ( (type_descriptor "int" primitive_type) ) (subscript_expression "param_1[1]" identifier [ number_literal ])) - (cast_expression "(int)pbVar3" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (if_statement "if ((byte *)param_1[1] == pbVar3) {\n    return 0xfffffffe;\n  }" if (parenthesized_expression "((byte *)param_1[1] == pbVar3)" ( (binary_expression "(byte *)param_1[1] == pbVar3" (cast_expression "(byte *)param_1[1]" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[1]" identifier [ number_literal ])) == identifier) )) (compound_statement "{\n    return 0xfffffffe;\n  }" { (return_statement "return 0xfffffffe;" return number_literal ;) })) (expression_statement "bVar1 = *pbVar3;" (assignment_expression "bVar1 = *pbVar3" identifier = (pointer_expression "*pbVar3" * identifier)) ;) (expression_statement "uVar5 = (uint)bVar1;" (assignment_expression "uVar5 = (uint)bVar1" identifier = (cast_expression "(uint)bVar1" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (if_statement "if ((char)bVar1 < '\0') {\n    uVar4 = 0xffffffff;\n    if (0xc1 < bVar1) {\n      if (bVar1 < 0xe0) {\n        if (uVar6 == 1) {\n          return 0xfffffffe;\n        }\n        if (((pbVar3[1] & 0xc0) == 0x80) &&\n           (uVar4 = uVar5 * 0x40 + -0x3080 + (uint)pbVar3[1], uVar4 <= param_2)) {\n          *param_1 = pbVar3 + 2;\n        }\n      }\n      else if (bVar1 < 0xf0) {\n        uVar4 = 0xfffffffe;\n        if (2 < uVar6) {\n          bVar2 = pbVar3[1];\n          uVar4 = 0xffffffff;\n          if (((bVar2 & 0xc0) == 0x80) && ((bVar1 != 0xe0 || (0x9f < bVar2)))) {\n            uVar4 = 0xffffffff;\n            if (((pbVar3[2] & 0xc0) == 0x80) &&\n               (uVar4 = (uint)bVar2 * 0x40 + uVar5 * 0x1000 + -0xe2080 + (uint)pbVar3[2],\n               uVar4 <= param_2)) {\n              *param_1 = pbVar3 + 3;\n            }\n          }\n        }\n      }\n      else if ((bVar1 < 0xf5) && (uVar4 = 0xfffffffe, 3 < uVar6)) {\n        bVar2 = pbVar3[1];\n        uVar4 = 0xffffffff;\n        if ((((bVar2 & 0xc0) == 0x80) && ((bVar1 != 0xf0 || (0x8f < bVar2)))) &&\n           ((bVar1 != 0xf4 || (uVar4 = 0xffffffff, bVar2 < 0x90)))) {\n          uVar4 = 0xffffffff;\n          if ((((pbVar3[2] & 0xc0) == 0x80) && ((pbVar3[3] & 0xc0) == 0x80)) &&\n             (uVar4 = uVar5 * 0x40000 + (uint)bVar2 * 0x1000 + (uint)pbVar3[2] * 0x40 + -0x3c82080 +\n                      (uint)pbVar3[3], uVar4 <= param_2)) {\n            *param_1 = pbVar3 + 4;\n          }\n        }\n      }\n    }\n  }\n  else {\n    *param_1 = pbVar3 + 1;\n    uVar4 = (uint)bVar1;\n  }" if (parenthesized_expression "((char)bVar1 < '\0')" ( (binary_expression "(char)bVar1 < '\0'" (cast_expression "(char)bVar1" ( (type_descriptor "char" primitive_type) ) identifier) < (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    uVar4 = 0xffffffff;\n    if (0xc1 < bVar1) {\n      if (bVar1 < 0xe0) {\n        if (uVar6 == 1) {\n          return 0xfffffffe;\n        }\n        if (((pbVar3[1] & 0xc0) == 0x80) &&\n           (uVar4 = uVar5 * 0x40 + -0x3080 + (uint)pbVar3[1], uVar4 <= param_2)) {\n          *param_1 = pbVar3 + 2;\n        }\n      }\n      else if (bVar1 < 0xf0) {\n        uVar4 = 0xfffffffe;\n        if (2 < uVar6) {\n          bVar2 = pbVar3[1];\n          uVar4 = 0xffffffff;\n          if (((bVar2 & 0xc0) == 0x80) && ((bVar1 != 0xe0 || (0x9f < bVar2)))) {\n            uVar4 = 0xffffffff;\n            if (((pbVar3[2] & 0xc0) == 0x80) &&\n               (uVar4 = (uint)bVar2 * 0x40 + uVar5 * 0x1000 + -0xe2080 + (uint)pbVar3[2],\n               uVar4 <= param_2)) {\n              *param_1 = pbVar3 + 3;\n            }\n          }\n        }\n      }\n      else if ((bVar1 < 0xf5) && (uVar4 = 0xfffffffe, 3 < uVar6)) {\n        bVar2 = pbVar3[1];\n        uVar4 = 0xffffffff;\n        if ((((bVar2 & 0xc0) == 0x80) && ((bVar1 != 0xf0 || (0x8f < bVar2)))) &&\n           ((bVar1 != 0xf4 || (uVar4 = 0xffffffff, bVar2 < 0x90)))) {\n          uVar4 = 0xffffffff;\n          if ((((pbVar3[2] & 0xc0) == 0x80) && ((pbVar3[3] & 0xc0) == 0x80)) &&\n             (uVar4 = uVar5 * 0x40000 + (uint)bVar2 * 0x1000 + (uint)pbVar3[2] * 0x40 + -0x3c82080 +\n                      (uint)pbVar3[3], uVar4 <= param_2)) {\n            *param_1 = pbVar3 + 4;\n          }\n        }\n      }\n    }\n  }" { (expression_statement "uVar4 = 0xffffffff;" (assignment_expression "uVar4 = 0xffffffff" identifier = number_literal) ;) (if_statement "if (0xc1 < bVar1) {\n      if (bVar1 < 0xe0) {\n        if (uVar6 == 1) {\n          return 0xfffffffe;\n        }\n        if (((pbVar3[1] & 0xc0) == 0x80) &&\n           (uVar4 = uVar5 * 0x40 + -0x3080 + (uint)pbVar3[1], uVar4 <= param_2)) {\n          *param_1 = pbVar3 + 2;\n        }\n      }\n      else if (bVar1 < 0xf0) {\n        uVar4 = 0xfffffffe;\n        if (2 < uVar6) {\n          bVar2 = pbVar3[1];\n          uVar4 = 0xffffffff;\n          if (((bVar2 & 0xc0) == 0x80) && ((bVar1 != 0xe0 || (0x9f < bVar2)))) {\n            uVar4 = 0xffffffff;\n            if (((pbVar3[2] & 0xc0) == 0x80) &&\n               (uVar4 = (uint)bVar2 * 0x40 + uVar5 * 0x1000 + -0xe2080 + (uint)pbVar3[2],\n               uVar4 <= param_2)) {\n              *param_1 = pbVar3 + 3;\n            }\n          }\n        }\n      }\n      else if ((bVar1 < 0xf5) && (uVar4 = 0xfffffffe, 3 < uVar6)) {\n        bVar2 = pbVar3[1];\n        uVar4 = 0xffffffff;\n        if ((((bVar2 & 0xc0) == 0x80) && ((bVar1 != 0xf0 || (0x8f < bVar2)))) &&\n           ((bVar1 != 0xf4 || (uVar4 = 0xffffffff, bVar2 < 0x90)))) {\n          uVar4 = 0xffffffff;\n          if ((((pbVar3[2] & 0xc0) == 0x80) && ((pbVar3[3] & 0xc0) == 0x80)) &&\n             (uVar4 = uVar5 * 0x40000 + (uint)bVar2 * 0x1000 + (uint)pbVar3[2] * 0x40 + -0x3c82080 +\n                      (uint)pbVar3[3], uVar4 <= param_2)) {\n            *param_1 = pbVar3 + 4;\n          }\n        }\n      }\n    }" if (parenthesized_expression "(0xc1 < bVar1)" ( (binary_expression "0xc1 < bVar1" number_literal < identifier) )) (compound_statement "{\n      if (bVar1 < 0xe0) {\n        if (uVar6 == 1) {\n          return 0xfffffffe;\n        }\n        if (((pbVar3[1] & 0xc0) == 0x80) &&\n           (uVar4 = uVar5 * 0x40 + -0x3080 + (uint)pbVar3[1], uVar4 <= param_2)) {\n          *param_1 = pbVar3 + 2;\n        }\n      }\n      else if (bVar1 < 0xf0) {\n        uVar4 = 0xfffffffe;\n        if (2 < uVar6) {\n          bVar2 = pbVar3[1];\n          uVar4 = 0xffffffff;\n          if (((bVar2 & 0xc0) == 0x80) && ((bVar1 != 0xe0 || (0x9f < bVar2)))) {\n            uVar4 = 0xffffffff;\n            if (((pbVar3[2] & 0xc0) == 0x80) &&\n               (uVar4 = (uint)bVar2 * 0x40 + uVar5 * 0x1000 + -0xe2080 + (uint)pbVar3[2],\n               uVar4 <= param_2)) {\n              *param_1 = pbVar3 + 3;\n            }\n          }\n        }\n      }\n      else if ((bVar1 < 0xf5) && (uVar4 = 0xfffffffe, 3 < uVar6)) {\n        bVar2 = pbVar3[1];\n        uVar4 = 0xffffffff;\n        if ((((bVar2 & 0xc0) == 0x80) && ((bVar1 != 0xf0 || (0x8f < bVar2)))) &&\n           ((bVar1 != 0xf4 || (uVar4 = 0xffffffff, bVar2 < 0x90)))) {\n          uVar4 = 0xffffffff;\n          if ((((pbVar3[2] & 0xc0) == 0x80) && ((pbVar3[3] & 0xc0) == 0x80)) &&\n             (uVar4 = uVar5 * 0x40000 + (uint)bVar2 * 0x1000 + (uint)pbVar3[2] * 0x40 + -0x3c82080 +\n                      (uint)pbVar3[3], uVar4 <= param_2)) {\n            *param_1 = pbVar3 + 4;\n          }\n        }\n      }\n    }" { (if_statement "if (bVar1 < 0xe0) {\n        if (uVar6 == 1) {\n          return 0xfffffffe;\n        }\n        if (((pbVar3[1] & 0xc0) == 0x80) &&\n           (uVar4 = uVar5 * 0x40 + -0x3080 + (uint)pbVar3[1], uVar4 <= param_2)) {\n          *param_1 = pbVar3 + 2;\n        }\n      }\n      else if (bVar1 < 0xf0) {\n        uVar4 = 0xfffffffe;\n        if (2 < uVar6) {\n          bVar2 = pbVar3[1];\n          uVar4 = 0xffffffff;\n          if (((bVar2 & 0xc0) == 0x80) && ((bVar1 != 0xe0 || (0x9f < bVar2)))) {\n            uVar4 = 0xffffffff;\n            if (((pbVar3[2] & 0xc0) == 0x80) &&\n               (uVar4 = (uint)bVar2 * 0x40 + uVar5 * 0x1000 + -0xe2080 + (uint)pbVar3[2],\n               uVar4 <= param_2)) {\n              *param_1 = pbVar3 + 3;\n            }\n          }\n        }\n      }\n      else if ((bVar1 < 0xf5) && (uVar4 = 0xfffffffe, 3 < uVar6)) {\n        bVar2 = pbVar3[1];\n        uVar4 = 0xffffffff;\n        if ((((bVar2 & 0xc0) == 0x80) && ((bVar1 != 0xf0 || (0x8f < bVar2)))) &&\n           ((bVar1 != 0xf4 || (uVar4 = 0xffffffff, bVar2 < 0x90)))) {\n          uVar4 = 0xffffffff;\n          if ((((pbVar3[2] & 0xc0) == 0x80) && ((pbVar3[3] & 0xc0) == 0x80)) &&\n             (uVar4 = uVar5 * 0x40000 + (uint)bVar2 * 0x1000 + (uint)pbVar3[2] * 0x40 + -0x3c82080 +\n                      (uint)pbVar3[3], uVar4 <= param_2)) {\n            *param_1 = pbVar3 + 4;\n          }\n        }\n      }" if (parenthesized_expression "(bVar1 < 0xe0)" ( (binary_expression "bVar1 < 0xe0" identifier < number_literal) )) (compound_statement "{\n        if (uVar6 == 1) {\n          return 0xfffffffe;\n        }\n        if (((pbVar3[1] & 0xc0) == 0x80) &&\n           (uVar4 = uVar5 * 0x40 + -0x3080 + (uint)pbVar3[1], uVar4 <= param_2)) {\n          *param_1 = pbVar3 + 2;\n        }\n      }" { (if_statement "if (uVar6 == 1) {\n          return 0xfffffffe;\n        }" if (parenthesized_expression "(uVar6 == 1)" ( (binary_expression "uVar6 == 1" identifier == number_literal) )) (compound_statement "{\n          return 0xfffffffe;\n        }" { (return_statement "return 0xfffffffe;" return number_literal ;) })) (if_statement "if (((pbVar3[1] & 0xc0) == 0x80) &&\n           (uVar4 = uVar5 * 0x40 + -0x3080 + (uint)pbVar3[1], uVar4 <= param_2)) {\n          *param_1 = pbVar3 + 2;\n        }" if (parenthesized_expression "(((pbVar3[1] & 0xc0) == 0x80) &&\n           (uVar4 = uVar5 * 0x40 + -0x3080 + (uint)pbVar3[1], uVar4 <= param_2))" ( (binary_expression "((pbVar3[1] & 0xc0) == 0x80) &&\n           (uVar4 = uVar5 * 0x40 + -0x3080 + (uint)pbVar3[1], uVar4 <= param_2)" (parenthesized_expression "((pbVar3[1] & 0xc0) == 0x80)" ( (binary_expression "(pbVar3[1] & 0xc0) == 0x80" (parenthesized_expression "(pbVar3[1] & 0xc0)" ( (binary_expression "pbVar3[1] & 0xc0" (subscript_expression "pbVar3[1]" identifier [ number_literal ]) & number_literal) )) == number_literal) )) && (parenthesized_expression "(uVar4 = uVar5 * 0x40 + -0x3080 + (uint)pbVar3[1], uVar4 <= param_2)" ( (comma_expression "uVar4 = uVar5 * 0x40 + -0x3080 + (uint)pbVar3[1], uVar4 <= param_2" (assignment_expression "uVar4 = uVar5 * 0x40 + -0x3080 + (uint)pbVar3[1]" identifier = (binary_expression "uVar5 * 0x40 + -0x3080 + (uint)pbVar3[1]" (binary_expression "uVar5 * 0x40 + -0x3080" (binary_expression "uVar5 * 0x40" identifier * number_literal) + number_literal) + (cast_expression "(uint)pbVar3[1]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "pbVar3[1]" identifier [ number_literal ])))) , (binary_expression "uVar4 <= param_2" identifier <= identifier)) ))) )) (compound_statement "{\n          *param_1 = pbVar3 + 2;\n        }" { (expression_statement "*param_1 = pbVar3 + 2;" (assignment_expression "*param_1 = pbVar3 + 2" (pointer_expression "*param_1" * identifier) = (binary_expression "pbVar3 + 2" identifier + number_literal)) ;) })) }) (else_clause "else if (bVar1 < 0xf0) {\n        uVar4 = 0xfffffffe;\n        if (2 < uVar6) {\n          bVar2 = pbVar3[1];\n          uVar4 = 0xffffffff;\n          if (((bVar2 & 0xc0) == 0x80) && ((bVar1 != 0xe0 || (0x9f < bVar2)))) {\n            uVar4 = 0xffffffff;\n            if (((pbVar3[2] & 0xc0) == 0x80) &&\n               (uVar4 = (uint)bVar2 * 0x40 + uVar5 * 0x1000 + -0xe2080 + (uint)pbVar3[2],\n               uVar4 <= param_2)) {\n              *param_1 = pbVar3 + 3;\n            }\n          }\n        }\n      }\n      else if ((bVar1 < 0xf5) && (uVar4 = 0xfffffffe, 3 < uVar6)) {\n        bVar2 = pbVar3[1];\n        uVar4 = 0xffffffff;\n        if ((((bVar2 & 0xc0) == 0x80) && ((bVar1 != 0xf0 || (0x8f < bVar2)))) &&\n           ((bVar1 != 0xf4 || (uVar4 = 0xffffffff, bVar2 < 0x90)))) {\n          uVar4 = 0xffffffff;\n          if ((((pbVar3[2] & 0xc0) == 0x80) && ((pbVar3[3] & 0xc0) == 0x80)) &&\n             (uVar4 = uVar5 * 0x40000 + (uint)bVar2 * 0x1000 + (uint)pbVar3[2] * 0x40 + -0x3c82080 +\n                      (uint)pbVar3[3], uVar4 <= param_2)) {\n            *param_1 = pbVar3 + 4;\n          }\n        }\n      }" else (if_statement "if (bVar1 < 0xf0) {\n        uVar4 = 0xfffffffe;\n        if (2 < uVar6) {\n          bVar2 = pbVar3[1];\n          uVar4 = 0xffffffff;\n          if (((bVar2 & 0xc0) == 0x80) && ((bVar1 != 0xe0 || (0x9f < bVar2)))) {\n            uVar4 = 0xffffffff;\n            if (((pbVar3[2] & 0xc0) == 0x80) &&\n               (uVar4 = (uint)bVar2 * 0x40 + uVar5 * 0x1000 + -0xe2080 + (uint)pbVar3[2],\n               uVar4 <= param_2)) {\n              *param_1 = pbVar3 + 3;\n            }\n          }\n        }\n      }\n      else if ((bVar1 < 0xf5) && (uVar4 = 0xfffffffe, 3 < uVar6)) {\n        bVar2 = pbVar3[1];\n        uVar4 = 0xffffffff;\n        if ((((bVar2 & 0xc0) == 0x80) && ((bVar1 != 0xf0 || (0x8f < bVar2)))) &&\n           ((bVar1 != 0xf4 || (uVar4 = 0xffffffff, bVar2 < 0x90)))) {\n          uVar4 = 0xffffffff;\n          if ((((pbVar3[2] & 0xc0) == 0x80) && ((pbVar3[3] & 0xc0) == 0x80)) &&\n             (uVar4 = uVar5 * 0x40000 + (uint)bVar2 * 0x1000 + (uint)pbVar3[2] * 0x40 + -0x3c82080 +\n                      (uint)pbVar3[3], uVar4 <= param_2)) {\n            *param_1 = pbVar3 + 4;\n          }\n        }\n      }" if (parenthesized_expression "(bVar1 < 0xf0)" ( (binary_expression "bVar1 < 0xf0" identifier < number_literal) )) (compound_statement "{\n        uVar4 = 0xfffffffe;\n        if (2 < uVar6) {\n          bVar2 = pbVar3[1];\n          uVar4 = 0xffffffff;\n          if (((bVar2 & 0xc0) == 0x80) && ((bVar1 != 0xe0 || (0x9f < bVar2)))) {\n            uVar4 = 0xffffffff;\n            if (((pbVar3[2] & 0xc0) == 0x80) &&\n               (uVar4 = (uint)bVar2 * 0x40 + uVar5 * 0x1000 + -0xe2080 + (uint)pbVar3[2],\n               uVar4 <= param_2)) {\n              *param_1 = pbVar3 + 3;\n            }\n          }\n        }\n      }" { (expression_statement "uVar4 = 0xfffffffe;" (assignment_expression "uVar4 = 0xfffffffe" identifier = number_literal) ;) (if_statement "if (2 < uVar6) {\n          bVar2 = pbVar3[1];\n          uVar4 = 0xffffffff;\n          if (((bVar2 & 0xc0) == 0x80) && ((bVar1 != 0xe0 || (0x9f < bVar2)))) {\n            uVar4 = 0xffffffff;\n            if (((pbVar3[2] & 0xc0) == 0x80) &&\n               (uVar4 = (uint)bVar2 * 0x40 + uVar5 * 0x1000 + -0xe2080 + (uint)pbVar3[2],\n               uVar4 <= param_2)) {\n              *param_1 = pbVar3 + 3;\n            }\n          }\n        }" if (parenthesized_expression "(2 < uVar6)" ( (binary_expression "2 < uVar6" number_literal < identifier) )) (compound_statement "{\n          bVar2 = pbVar3[1];\n          uVar4 = 0xffffffff;\n          if (((bVar2 & 0xc0) == 0x80) && ((bVar1 != 0xe0 || (0x9f < bVar2)))) {\n            uVar4 = 0xffffffff;\n            if (((pbVar3[2] & 0xc0) == 0x80) &&\n               (uVar4 = (uint)bVar2 * 0x40 + uVar5 * 0x1000 + -0xe2080 + (uint)pbVar3[2],\n               uVar4 <= param_2)) {\n              *param_1 = pbVar3 + 3;\n            }\n          }\n        }" { (expression_statement "bVar2 = pbVar3[1];" (assignment_expression "bVar2 = pbVar3[1]" identifier = (subscript_expression "pbVar3[1]" identifier [ number_literal ])) ;) (expression_statement "uVar4 = 0xffffffff;" (assignment_expression "uVar4 = 0xffffffff" identifier = number_literal) ;) (if_statement "if (((bVar2 & 0xc0) == 0x80) && ((bVar1 != 0xe0 || (0x9f < bVar2)))) {\n            uVar4 = 0xffffffff;\n            if (((pbVar3[2] & 0xc0) == 0x80) &&\n               (uVar4 = (uint)bVar2 * 0x40 + uVar5 * 0x1000 + -0xe2080 + (uint)pbVar3[2],\n               uVar4 <= param_2)) {\n              *param_1 = pbVar3 + 3;\n            }\n          }" if (parenthesized_expression "(((bVar2 & 0xc0) == 0x80) && ((bVar1 != 0xe0 || (0x9f < bVar2))))" ( (binary_expression "((bVar2 & 0xc0) == 0x80) && ((bVar1 != 0xe0 || (0x9f < bVar2)))" (parenthesized_expression "((bVar2 & 0xc0) == 0x80)" ( (binary_expression "(bVar2 & 0xc0) == 0x80" (parenthesized_expression "(bVar2 & 0xc0)" ( (binary_expression "bVar2 & 0xc0" identifier & number_literal) )) == number_literal) )) && (parenthesized_expression "((bVar1 != 0xe0 || (0x9f < bVar2)))" ( (parenthesized_expression "(bVar1 != 0xe0 || (0x9f < bVar2))" ( (binary_expression "bVar1 != 0xe0 || (0x9f < bVar2)" (binary_expression "bVar1 != 0xe0" identifier != number_literal) || (parenthesized_expression "(0x9f < bVar2)" ( (binary_expression "0x9f < bVar2" number_literal < identifier) ))) )) ))) )) (compound_statement "{\n            uVar4 = 0xffffffff;\n            if (((pbVar3[2] & 0xc0) == 0x80) &&\n               (uVar4 = (uint)bVar2 * 0x40 + uVar5 * 0x1000 + -0xe2080 + (uint)pbVar3[2],\n               uVar4 <= param_2)) {\n              *param_1 = pbVar3 + 3;\n            }\n          }" { (expression_statement "uVar4 = 0xffffffff;" (assignment_expression "uVar4 = 0xffffffff" identifier = number_literal) ;) (if_statement "if (((pbVar3[2] & 0xc0) == 0x80) &&\n               (uVar4 = (uint)bVar2 * 0x40 + uVar5 * 0x1000 + -0xe2080 + (uint)pbVar3[2],\n               uVar4 <= param_2)) {\n              *param_1 = pbVar3 + 3;\n            }" if (parenthesized_expression "(((pbVar3[2] & 0xc0) == 0x80) &&\n               (uVar4 = (uint)bVar2 * 0x40 + uVar5 * 0x1000 + -0xe2080 + (uint)pbVar3[2],\n               uVar4 <= param_2))" ( (binary_expression "((pbVar3[2] & 0xc0) == 0x80) &&\n               (uVar4 = (uint)bVar2 * 0x40 + uVar5 * 0x1000 + -0xe2080 + (uint)pbVar3[2],\n               uVar4 <= param_2)" (parenthesized_expression "((pbVar3[2] & 0xc0) == 0x80)" ( (binary_expression "(pbVar3[2] & 0xc0) == 0x80" (parenthesized_expression "(pbVar3[2] & 0xc0)" ( (binary_expression "pbVar3[2] & 0xc0" (subscript_expression "pbVar3[2]" identifier [ number_literal ]) & number_literal) )) == number_literal) )) && (parenthesized_expression "(uVar4 = (uint)bVar2 * 0x40 + uVar5 * 0x1000 + -0xe2080 + (uint)pbVar3[2],\n               uVar4 <= param_2)" ( (comma_expression "uVar4 = (uint)bVar2 * 0x40 + uVar5 * 0x1000 + -0xe2080 + (uint)pbVar3[2],\n               uVar4 <= param_2" (assignment_expression "uVar4 = (uint)bVar2 * 0x40 + uVar5 * 0x1000 + -0xe2080 + (uint)pbVar3[2]" identifier = (binary_expression "(uint)bVar2 * 0x40 + uVar5 * 0x1000 + -0xe2080 + (uint)pbVar3[2]" (binary_expression "(uint)bVar2 * 0x40 + uVar5 * 0x1000 + -0xe2080" (binary_expression "(uint)bVar2 * 0x40 + uVar5 * 0x1000" (binary_expression "(uint)bVar2 * 0x40" (cast_expression "(uint)bVar2" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal) + (binary_expression "uVar5 * 0x1000" identifier * number_literal)) + number_literal) + (cast_expression "(uint)pbVar3[2]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "pbVar3[2]" identifier [ number_literal ])))) , (binary_expression "uVar4 <= param_2" identifier <= identifier)) ))) )) (compound_statement "{\n              *param_1 = pbVar3 + 3;\n            }" { (expression_statement "*param_1 = pbVar3 + 3;" (assignment_expression "*param_1 = pbVar3 + 3" (pointer_expression "*param_1" * identifier) = (binary_expression "pbVar3 + 3" identifier + number_literal)) ;) })) })) })) }) (else_clause "else if ((bVar1 < 0xf5) && (uVar4 = 0xfffffffe, 3 < uVar6)) {\n        bVar2 = pbVar3[1];\n        uVar4 = 0xffffffff;\n        if ((((bVar2 & 0xc0) == 0x80) && ((bVar1 != 0xf0 || (0x8f < bVar2)))) &&\n           ((bVar1 != 0xf4 || (uVar4 = 0xffffffff, bVar2 < 0x90)))) {\n          uVar4 = 0xffffffff;\n          if ((((pbVar3[2] & 0xc0) == 0x80) && ((pbVar3[3] & 0xc0) == 0x80)) &&\n             (uVar4 = uVar5 * 0x40000 + (uint)bVar2 * 0x1000 + (uint)pbVar3[2] * 0x40 + -0x3c82080 +\n                      (uint)pbVar3[3], uVar4 <= param_2)) {\n            *param_1 = pbVar3 + 4;\n          }\n        }\n      }" else (if_statement "if ((bVar1 < 0xf5) && (uVar4 = 0xfffffffe, 3 < uVar6)) {\n        bVar2 = pbVar3[1];\n        uVar4 = 0xffffffff;\n        if ((((bVar2 & 0xc0) == 0x80) && ((bVar1 != 0xf0 || (0x8f < bVar2)))) &&\n           ((bVar1 != 0xf4 || (uVar4 = 0xffffffff, bVar2 < 0x90)))) {\n          uVar4 = 0xffffffff;\n          if ((((pbVar3[2] & 0xc0) == 0x80) && ((pbVar3[3] & 0xc0) == 0x80)) &&\n             (uVar4 = uVar5 * 0x40000 + (uint)bVar2 * 0x1000 + (uint)pbVar3[2] * 0x40 + -0x3c82080 +\n                      (uint)pbVar3[3], uVar4 <= param_2)) {\n            *param_1 = pbVar3 + 4;\n          }\n        }\n      }" if (parenthesized_expression "((bVar1 < 0xf5) && (uVar4 = 0xfffffffe, 3 < uVar6))" ( (binary_expression "(bVar1 < 0xf5) && (uVar4 = 0xfffffffe, 3 < uVar6)" (parenthesized_expression "(bVar1 < 0xf5)" ( (binary_expression "bVar1 < 0xf5" identifier < number_literal) )) && (parenthesized_expression "(uVar4 = 0xfffffffe, 3 < uVar6)" ( (comma_expression "uVar4 = 0xfffffffe, 3 < uVar6" (assignment_expression "uVar4 = 0xfffffffe" identifier = number_literal) , (binary_expression "3 < uVar6" number_literal < identifier)) ))) )) (compound_statement "{\n        bVar2 = pbVar3[1];\n        uVar4 = 0xffffffff;\n        if ((((bVar2 & 0xc0) == 0x80) && ((bVar1 != 0xf0 || (0x8f < bVar2)))) &&\n           ((bVar1 != 0xf4 || (uVar4 = 0xffffffff, bVar2 < 0x90)))) {\n          uVar4 = 0xffffffff;\n          if ((((pbVar3[2] & 0xc0) == 0x80) && ((pbVar3[3] & 0xc0) == 0x80)) &&\n             (uVar4 = uVar5 * 0x40000 + (uint)bVar2 * 0x1000 + (uint)pbVar3[2] * 0x40 + -0x3c82080 +\n                      (uint)pbVar3[3], uVar4 <= param_2)) {\n            *param_1 = pbVar3 + 4;\n          }\n        }\n      }" { (expression_statement "bVar2 = pbVar3[1];" (assignment_expression "bVar2 = pbVar3[1]" identifier = (subscript_expression "pbVar3[1]" identifier [ number_literal ])) ;) (expression_statement "uVar4 = 0xffffffff;" (assignment_expression "uVar4 = 0xffffffff" identifier = number_literal) ;) (if_statement "if ((((bVar2 & 0xc0) == 0x80) && ((bVar1 != 0xf0 || (0x8f < bVar2)))) &&\n           ((bVar1 != 0xf4 || (uVar4 = 0xffffffff, bVar2 < 0x90)))) {\n          uVar4 = 0xffffffff;\n          if ((((pbVar3[2] & 0xc0) == 0x80) && ((pbVar3[3] & 0xc0) == 0x80)) &&\n             (uVar4 = uVar5 * 0x40000 + (uint)bVar2 * 0x1000 + (uint)pbVar3[2] * 0x40 + -0x3c82080 +\n                      (uint)pbVar3[3], uVar4 <= param_2)) {\n            *param_1 = pbVar3 + 4;\n          }\n        }" if (parenthesized_expression "((((bVar2 & 0xc0) == 0x80) && ((bVar1 != 0xf0 || (0x8f < bVar2)))) &&\n           ((bVar1 != 0xf4 || (uVar4 = 0xffffffff, bVar2 < 0x90))))" ( (binary_expression "(((bVar2 & 0xc0) == 0x80) && ((bVar1 != 0xf0 || (0x8f < bVar2)))) &&\n           ((bVar1 != 0xf4 || (uVar4 = 0xffffffff, bVar2 < 0x90)))" (parenthesized_expression "(((bVar2 & 0xc0) == 0x80) && ((bVar1 != 0xf0 || (0x8f < bVar2))))" ( (binary_expression "((bVar2 & 0xc0) == 0x80) && ((bVar1 != 0xf0 || (0x8f < bVar2)))" (parenthesized_expression "((bVar2 & 0xc0) == 0x80)" ( (binary_expression "(bVar2 & 0xc0) == 0x80" (parenthesized_expression "(bVar2 & 0xc0)" ( (binary_expression "bVar2 & 0xc0" identifier & number_literal) )) == number_literal) )) && (parenthesized_expression "((bVar1 != 0xf0 || (0x8f < bVar2)))" ( (parenthesized_expression "(bVar1 != 0xf0 || (0x8f < bVar2))" ( (binary_expression "bVar1 != 0xf0 || (0x8f < bVar2)" (binary_expression "bVar1 != 0xf0" identifier != number_literal) || (parenthesized_expression "(0x8f < bVar2)" ( (binary_expression "0x8f < bVar2" number_literal < identifier) ))) )) ))) )) && (parenthesized_expression "((bVar1 != 0xf4 || (uVar4 = 0xffffffff, bVar2 < 0x90)))" ( (parenthesized_expression "(bVar1 != 0xf4 || (uVar4 = 0xffffffff, bVar2 < 0x90))" ( (binary_expression "bVar1 != 0xf4 || (uVar4 = 0xffffffff, bVar2 < 0x90)" (binary_expression "bVar1 != 0xf4" identifier != number_literal) || (parenthesized_expression "(uVar4 = 0xffffffff, bVar2 < 0x90)" ( (comma_expression "uVar4 = 0xffffffff, bVar2 < 0x90" (assignment_expression "uVar4 = 0xffffffff" identifier = number_literal) , (binary_expression "bVar2 < 0x90" identifier < number_literal)) ))) )) ))) )) (compound_statement "{\n          uVar4 = 0xffffffff;\n          if ((((pbVar3[2] & 0xc0) == 0x80) && ((pbVar3[3] & 0xc0) == 0x80)) &&\n             (uVar4 = uVar5 * 0x40000 + (uint)bVar2 * 0x1000 + (uint)pbVar3[2] * 0x40 + -0x3c82080 +\n                      (uint)pbVar3[3], uVar4 <= param_2)) {\n            *param_1 = pbVar3 + 4;\n          }\n        }" { (expression_statement "uVar4 = 0xffffffff;" (assignment_expression "uVar4 = 0xffffffff" identifier = number_literal) ;) (if_statement "if ((((pbVar3[2] & 0xc0) == 0x80) && ((pbVar3[3] & 0xc0) == 0x80)) &&\n             (uVar4 = uVar5 * 0x40000 + (uint)bVar2 * 0x1000 + (uint)pbVar3[2] * 0x40 + -0x3c82080 +\n                      (uint)pbVar3[3], uVar4 <= param_2)) {\n            *param_1 = pbVar3 + 4;\n          }" if (parenthesized_expression "((((pbVar3[2] & 0xc0) == 0x80) && ((pbVar3[3] & 0xc0) == 0x80)) &&\n             (uVar4 = uVar5 * 0x40000 + (uint)bVar2 * 0x1000 + (uint)pbVar3[2] * 0x40 + -0x3c82080 +\n                      (uint)pbVar3[3], uVar4 <= param_2))" ( (binary_expression "(((pbVar3[2] & 0xc0) == 0x80) && ((pbVar3[3] & 0xc0) == 0x80)) &&\n             (uVar4 = uVar5 * 0x40000 + (uint)bVar2 * 0x1000 + (uint)pbVar3[2] * 0x40 + -0x3c82080 +\n                      (uint)pbVar3[3], uVar4 <= param_2)" (parenthesized_expression "(((pbVar3[2] & 0xc0) == 0x80) && ((pbVar3[3] & 0xc0) == 0x80))" ( (binary_expression "((pbVar3[2] & 0xc0) == 0x80) && ((pbVar3[3] & 0xc0) == 0x80)" (parenthesized_expression "((pbVar3[2] & 0xc0) == 0x80)" ( (binary_expression "(pbVar3[2] & 0xc0) == 0x80" (parenthesized_expression "(pbVar3[2] & 0xc0)" ( (binary_expression "pbVar3[2] & 0xc0" (subscript_expression "pbVar3[2]" identifier [ number_literal ]) & number_literal) )) == number_literal) )) && (parenthesized_expression "((pbVar3[3] & 0xc0) == 0x80)" ( (binary_expression "(pbVar3[3] & 0xc0) == 0x80" (parenthesized_expression "(pbVar3[3] & 0xc0)" ( (binary_expression "pbVar3[3] & 0xc0" (subscript_expression "pbVar3[3]" identifier [ number_literal ]) & number_literal) )) == number_literal) ))) )) && (parenthesized_expression "(uVar4 = uVar5 * 0x40000 + (uint)bVar2 * 0x1000 + (uint)pbVar3[2] * 0x40 + -0x3c82080 +\n                      (uint)pbVar3[3], uVar4 <= param_2)" ( (comma_expression "uVar4 = uVar5 * 0x40000 + (uint)bVar2 * 0x1000 + (uint)pbVar3[2] * 0x40 + -0x3c82080 +\n                      (uint)pbVar3[3], uVar4 <= param_2" (assignment_expression "uVar4 = uVar5 * 0x40000 + (uint)bVar2 * 0x1000 + (uint)pbVar3[2] * 0x40 + -0x3c82080 +\n                      (uint)pbVar3[3]" identifier = (binary_expression "uVar5 * 0x40000 + (uint)bVar2 * 0x1000 + (uint)pbVar3[2] * 0x40 + -0x3c82080 +\n                      (uint)pbVar3[3]" (binary_expression "uVar5 * 0x40000 + (uint)bVar2 * 0x1000 + (uint)pbVar3[2] * 0x40 + -0x3c82080" (binary_expression "uVar5 * 0x40000 + (uint)bVar2 * 0x1000 + (uint)pbVar3[2] * 0x40" (binary_expression "uVar5 * 0x40000 + (uint)bVar2 * 0x1000" (binary_expression "uVar5 * 0x40000" identifier * number_literal) + (binary_expression "(uint)bVar2 * 0x1000" (cast_expression "(uint)bVar2" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + (binary_expression "(uint)pbVar3[2] * 0x40" (cast_expression "(uint)pbVar3[2]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "pbVar3[2]" identifier [ number_literal ])) * number_literal)) + number_literal) + (cast_expression "(uint)pbVar3[3]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "pbVar3[3]" identifier [ number_literal ])))) , (binary_expression "uVar4 <= param_2" identifier <= identifier)) ))) )) (compound_statement "{\n            *param_1 = pbVar3 + 4;\n          }" { (expression_statement "*param_1 = pbVar3 + 4;" (assignment_expression "*param_1 = pbVar3 + 4" (pointer_expression "*param_1" * identifier) = (binary_expression "pbVar3 + 4" identifier + number_literal)) ;) })) })) })))))) })) }) (else_clause "else {\n    *param_1 = pbVar3 + 1;\n    uVar4 = (uint)bVar1;\n  }" else (compound_statement "{\n    *param_1 = pbVar3 + 1;\n    uVar4 = (uint)bVar1;\n  }" { (expression_statement "*param_1 = pbVar3 + 1;" (assignment_expression "*param_1 = pbVar3 + 1" (pointer_expression "*param_1" * identifier) = (binary_expression "pbVar3 + 1" identifier + number_literal)) ;) (expression_statement "uVar4 = (uint)bVar1;" (assignment_expression "uVar4 = (uint)bVar1" identifier = (cast_expression "(uint)bVar1" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) }))) (return_statement "return uVar4;" return identifier ;) })))
(translation_unit "/* std::(anonymous namespace)::read_utf8_code_point(std::(anonymous namespace)::range<char const,\n   true>&, unsigned long) */\n\nuint __regparm3 std::(anonymous_namespace)::read_utf8_code_point(range *param_1,ulong param_2)\n\n{\n  byte bVar1;\n  byte bVar2;\n  byte *pbVar3;\n  uint uVar4;\n  uint uVar5;\n  uint uVar6;\n  \n  pbVar3 = *(byte **)param_1;\n  uVar6 = (int)*(byte **)(param_1 + 4) - (int)pbVar3;\n  if (*(byte **)(param_1 + 4) == pbVar3) {\n    return 0xfffffffe;\n  }\n  bVar1 = *pbVar3;\n  uVar5 = (uint)bVar1;\n  if ((char)bVar1 < '\0') {\n    uVar4 = 0xffffffff;\n    if (0xc1 < bVar1) {\n      if (bVar1 < 0xe0) {\n        if (uVar6 == 1) {\n          return 0xfffffffe;\n        }\n        if (((pbVar3[1] & 0xc0) == 0x80) &&\n           (uVar4 = uVar5 * 0x40 + -0x3080 + (uint)pbVar3[1], uVar4 <= param_2)) {\n          *(byte **)param_1 = pbVar3 + 2;\n        }\n      }\n      else if (bVar1 < 0xf0) {\n        uVar4 = 0xfffffffe;\n        if (2 < uVar6) {\n          bVar2 = pbVar3[1];\n          uVar4 = 0xffffffff;\n          if (((bVar2 & 0xc0) == 0x80) && ((bVar1 != 0xe0 || (0x9f < bVar2)))) {\n            uVar4 = 0xffffffff;\n            if (((pbVar3[2] & 0xc0) == 0x80) &&\n               (uVar4 = (uint)bVar2 * 0x40 + uVar5 * 0x1000 + -0xe2080 + (uint)pbVar3[2],\n               uVar4 <= param_2)) {\n              *(byte **)param_1 = pbVar3 + 3;\n            }\n          }\n        }\n      }\n      else if ((bVar1 < 0xf5) && (uVar4 = 0xfffffffe, 3 < uVar6)) {\n        bVar2 = pbVar3[1];\n        uVar4 = 0xffffffff;\n        if ((((bVar2 & 0xc0) == 0x80) && ((bVar1 != 0xf0 || (0x8f < bVar2)))) &&\n           ((bVar1 != 0xf4 || (uVar4 = 0xffffffff, bVar2 < 0x90)))) {\n          uVar4 = 0xffffffff;\n          if ((((pbVar3[2] & 0xc0) == 0x80) && ((pbVar3[3] & 0xc0) == 0x80)) &&\n             (uVar4 = uVar5 * 0x40000 + (uint)bVar2 * 0x1000 + (uint)pbVar3[2] * 0x40 + -0x3c82080 +\n                      (uint)pbVar3[3], uVar4 <= param_2)) {\n            *(byte **)param_1 = pbVar3 + 4;\n          }\n        }\n      }\n    }\n  }\n  else {\n    *(byte **)param_1 = pbVar3 + 1;\n    uVar4 = (uint)bVar1;\n  }\n  return uVar4;\n}\n\n" comment (declaration "uint __regparm3" type_identifier identifier ;) (labeled_statement "std::(anonymous_namespace)::read_utf8_code_point(range *param_1,ulong param_2)" statement_identifier (ERROR "::(anonymous_namespace):" : : (parenthesized_expression "(anonymous_namespace)" ( identifier )) :) : (expression_statement "read_utf8_code_point(range *param_1,ulong param_2)" (call_expression "read_utf8_code_point(range *param_1,ulong param_2)" identifier (argument_list "(range *param_1,ulong param_2)" ( (binary_expression "range *param_1" identifier * identifier) , (ERROR "ulong" identifier) identifier ))) ;)) (compound_statement "{\n  byte bVar1;\n  byte bVar2;\n  byte *pbVar3;\n  uint uVar4;\n  uint uVar5;\n  uint uVar6;\n  \n  pbVar3 = *(byte **)param_1;\n  uVar6 = (int)*(byte **)(param_1 + 4) - (int)pbVar3;\n  if (*(byte **)(param_1 + 4) == pbVar3) {\n    return 0xfffffffe;\n  }\n  bVar1 = *pbVar3;\n  uVar5 = (uint)bVar1;\n  if ((char)bVar1 < '\0') {\n    uVar4 = 0xffffffff;\n    if (0xc1 < bVar1) {\n      if (bVar1 < 0xe0) {\n        if (uVar6 == 1) {\n          return 0xfffffffe;\n        }\n        if (((pbVar3[1] & 0xc0) == 0x80) &&\n           (uVar4 = uVar5 * 0x40 + -0x3080 + (uint)pbVar3[1], uVar4 <= param_2)) {\n          *(byte **)param_1 = pbVar3 + 2;\n        }\n      }\n      else if (bVar1 < 0xf0) {\n        uVar4 = 0xfffffffe;\n        if (2 < uVar6) {\n          bVar2 = pbVar3[1];\n          uVar4 = 0xffffffff;\n          if (((bVar2 & 0xc0) == 0x80) && ((bVar1 != 0xe0 || (0x9f < bVar2)))) {\n            uVar4 = 0xffffffff;\n            if (((pbVar3[2] & 0xc0) == 0x80) &&\n               (uVar4 = (uint)bVar2 * 0x40 + uVar5 * 0x1000 + -0xe2080 + (uint)pbVar3[2],\n               uVar4 <= param_2)) {\n              *(byte **)param_1 = pbVar3 + 3;\n            }\n          }\n        }\n      }\n      else if ((bVar1 < 0xf5) && (uVar4 = 0xfffffffe, 3 < uVar6)) {\n        bVar2 = pbVar3[1];\n        uVar4 = 0xffffffff;\n        if ((((bVar2 & 0xc0) == 0x80) && ((bVar1 != 0xf0 || (0x8f < bVar2)))) &&\n           ((bVar1 != 0xf4 || (uVar4 = 0xffffffff, bVar2 < 0x90)))) {\n          uVar4 = 0xffffffff;\n          if ((((pbVar3[2] & 0xc0) == 0x80) && ((pbVar3[3] & 0xc0) == 0x80)) &&\n             (uVar4 = uVar5 * 0x40000 + (uint)bVar2 * 0x1000 + (uint)pbVar3[2] * 0x40 + -0x3c82080 +\n                      (uint)pbVar3[3], uVar4 <= param_2)) {\n            *(byte **)param_1 = pbVar3 + 4;\n          }\n        }\n      }\n    }\n  }\n  else {\n    *(byte **)param_1 = pbVar3 + 1;\n    uVar4 = (uint)bVar1;\n  }\n  return uVar4;\n}" { (declaration "byte bVar1;" type_identifier identifier ;) (declaration "byte bVar2;" type_identifier identifier ;) (declaration "byte *pbVar3;" type_identifier (pointer_declarator "*pbVar3" * identifier) ;) (declaration "uint uVar4;" type_identifier identifier ;) (declaration "uint uVar5;" type_identifier identifier ;) (declaration "uint uVar6;" type_identifier identifier ;) (expression_statement "pbVar3 = *(byte **)param_1;" (assignment_expression "pbVar3 = *(byte **)param_1" identifier = (pointer_expression "*(byte **)param_1" * (cast_expression "(byte **)param_1" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier))) ;) (expression_statement "uVar6 = (int)*(byte **)(param_1 + 4) - (int)pbVar3;" (assignment_expression "uVar6 = (int)*(byte **)(param_1 + 4) - (int)pbVar3" identifier = (binary_expression "(int)*(byte **)(param_1 + 4) - (int)pbVar3" (cast_expression "(int)*(byte **)(param_1 + 4)" ( (type_descriptor "int" primitive_type) ) (pointer_expression "*(byte **)(param_1 + 4)" * (cast_expression "(byte **)(param_1 + 4)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) ))))) - (cast_expression "(int)pbVar3" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (if_statement "if (*(byte **)(param_1 + 4) == pbVar3) {\n    return 0xfffffffe;\n  }" if (parenthesized_expression "(*(byte **)(param_1 + 4) == pbVar3)" ( (binary_expression "*(byte **)(param_1 + 4) == pbVar3" (pointer_expression "*(byte **)(param_1 + 4)" * (cast_expression "(byte **)(param_1 + 4)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) )))) == identifier) )) (compound_statement "{\n    return 0xfffffffe;\n  }" { (return_statement "return 0xfffffffe;" return number_literal ;) })) (expression_statement "bVar1 = *pbVar3;" (assignment_expression "bVar1 = *pbVar3" identifier = (pointer_expression "*pbVar3" * identifier)) ;) (expression_statement "uVar5 = (uint)bVar1;" (assignment_expression "uVar5 = (uint)bVar1" identifier = (cast_expression "(uint)bVar1" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (if_statement "if ((char)bVar1 < '\0') {\n    uVar4 = 0xffffffff;\n    if (0xc1 < bVar1) {\n      if (bVar1 < 0xe0) {\n        if (uVar6 == 1) {\n          return 0xfffffffe;\n        }\n        if (((pbVar3[1] & 0xc0) == 0x80) &&\n           (uVar4 = uVar5 * 0x40 + -0x3080 + (uint)pbVar3[1], uVar4 <= param_2)) {\n          *(byte **)param_1 = pbVar3 + 2;\n        }\n      }\n      else if (bVar1 < 0xf0) {\n        uVar4 = 0xfffffffe;\n        if (2 < uVar6) {\n          bVar2 = pbVar3[1];\n          uVar4 = 0xffffffff;\n          if (((bVar2 & 0xc0) == 0x80) && ((bVar1 != 0xe0 || (0x9f < bVar2)))) {\n            uVar4 = 0xffffffff;\n            if (((pbVar3[2] & 0xc0) == 0x80) &&\n               (uVar4 = (uint)bVar2 * 0x40 + uVar5 * 0x1000 + -0xe2080 + (uint)pbVar3[2],\n               uVar4 <= param_2)) {\n              *(byte **)param_1 = pbVar3 + 3;\n            }\n          }\n        }\n      }\n      else if ((bVar1 < 0xf5) && (uVar4 = 0xfffffffe, 3 < uVar6)) {\n        bVar2 = pbVar3[1];\n        uVar4 = 0xffffffff;\n        if ((((bVar2 & 0xc0) == 0x80) && ((bVar1 != 0xf0 || (0x8f < bVar2)))) &&\n           ((bVar1 != 0xf4 || (uVar4 = 0xffffffff, bVar2 < 0x90)))) {\n          uVar4 = 0xffffffff;\n          if ((((pbVar3[2] & 0xc0) == 0x80) && ((pbVar3[3] & 0xc0) == 0x80)) &&\n             (uVar4 = uVar5 * 0x40000 + (uint)bVar2 * 0x1000 + (uint)pbVar3[2] * 0x40 + -0x3c82080 +\n                      (uint)pbVar3[3], uVar4 <= param_2)) {\n            *(byte **)param_1 = pbVar3 + 4;\n          }\n        }\n      }\n    }\n  }\n  else {\n    *(byte **)param_1 = pbVar3 + 1;\n    uVar4 = (uint)bVar1;\n  }" if (parenthesized_expression "((char)bVar1 < '\0')" ( (binary_expression "(char)bVar1 < '\0'" (cast_expression "(char)bVar1" ( (type_descriptor "char" primitive_type) ) identifier) < (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    uVar4 = 0xffffffff;\n    if (0xc1 < bVar1) {\n      if (bVar1 < 0xe0) {\n        if (uVar6 == 1) {\n          return 0xfffffffe;\n        }\n        if (((pbVar3[1] & 0xc0) == 0x80) &&\n           (uVar4 = uVar5 * 0x40 + -0x3080 + (uint)pbVar3[1], uVar4 <= param_2)) {\n          *(byte **)param_1 = pbVar3 + 2;\n        }\n      }\n      else if (bVar1 < 0xf0) {\n        uVar4 = 0xfffffffe;\n        if (2 < uVar6) {\n          bVar2 = pbVar3[1];\n          uVar4 = 0xffffffff;\n          if (((bVar2 & 0xc0) == 0x80) && ((bVar1 != 0xe0 || (0x9f < bVar2)))) {\n            uVar4 = 0xffffffff;\n            if (((pbVar3[2] & 0xc0) == 0x80) &&\n               (uVar4 = (uint)bVar2 * 0x40 + uVar5 * 0x1000 + -0xe2080 + (uint)pbVar3[2],\n               uVar4 <= param_2)) {\n              *(byte **)param_1 = pbVar3 + 3;\n            }\n          }\n        }\n      }\n      else if ((bVar1 < 0xf5) && (uVar4 = 0xfffffffe, 3 < uVar6)) {\n        bVar2 = pbVar3[1];\n        uVar4 = 0xffffffff;\n        if ((((bVar2 & 0xc0) == 0x80) && ((bVar1 != 0xf0 || (0x8f < bVar2)))) &&\n           ((bVar1 != 0xf4 || (uVar4 = 0xffffffff, bVar2 < 0x90)))) {\n          uVar4 = 0xffffffff;\n          if ((((pbVar3[2] & 0xc0) == 0x80) && ((pbVar3[3] & 0xc0) == 0x80)) &&\n             (uVar4 = uVar5 * 0x40000 + (uint)bVar2 * 0x1000 + (uint)pbVar3[2] * 0x40 + -0x3c82080 +\n                      (uint)pbVar3[3], uVar4 <= param_2)) {\n            *(byte **)param_1 = pbVar3 + 4;\n          }\n        }\n      }\n    }\n  }" { (expression_statement "uVar4 = 0xffffffff;" (assignment_expression "uVar4 = 0xffffffff" identifier = number_literal) ;) (if_statement "if (0xc1 < bVar1) {\n      if (bVar1 < 0xe0) {\n        if (uVar6 == 1) {\n          return 0xfffffffe;\n        }\n        if (((pbVar3[1] & 0xc0) == 0x80) &&\n           (uVar4 = uVar5 * 0x40 + -0x3080 + (uint)pbVar3[1], uVar4 <= param_2)) {\n          *(byte **)param_1 = pbVar3 + 2;\n        }\n      }\n      else if (bVar1 < 0xf0) {\n        uVar4 = 0xfffffffe;\n        if (2 < uVar6) {\n          bVar2 = pbVar3[1];\n          uVar4 = 0xffffffff;\n          if (((bVar2 & 0xc0) == 0x80) && ((bVar1 != 0xe0 || (0x9f < bVar2)))) {\n            uVar4 = 0xffffffff;\n            if (((pbVar3[2] & 0xc0) == 0x80) &&\n               (uVar4 = (uint)bVar2 * 0x40 + uVar5 * 0x1000 + -0xe2080 + (uint)pbVar3[2],\n               uVar4 <= param_2)) {\n              *(byte **)param_1 = pbVar3 + 3;\n            }\n          }\n        }\n      }\n      else if ((bVar1 < 0xf5) && (uVar4 = 0xfffffffe, 3 < uVar6)) {\n        bVar2 = pbVar3[1];\n        uVar4 = 0xffffffff;\n        if ((((bVar2 & 0xc0) == 0x80) && ((bVar1 != 0xf0 || (0x8f < bVar2)))) &&\n           ((bVar1 != 0xf4 || (uVar4 = 0xffffffff, bVar2 < 0x90)))) {\n          uVar4 = 0xffffffff;\n          if ((((pbVar3[2] & 0xc0) == 0x80) && ((pbVar3[3] & 0xc0) == 0x80)) &&\n             (uVar4 = uVar5 * 0x40000 + (uint)bVar2 * 0x1000 + (uint)pbVar3[2] * 0x40 + -0x3c82080 +\n                      (uint)pbVar3[3], uVar4 <= param_2)) {\n            *(byte **)param_1 = pbVar3 + 4;\n          }\n        }\n      }\n    }" if (parenthesized_expression "(0xc1 < bVar1)" ( (binary_expression "0xc1 < bVar1" number_literal < identifier) )) (compound_statement "{\n      if (bVar1 < 0xe0) {\n        if (uVar6 == 1) {\n          return 0xfffffffe;\n        }\n        if (((pbVar3[1] & 0xc0) == 0x80) &&\n           (uVar4 = uVar5 * 0x40 + -0x3080 + (uint)pbVar3[1], uVar4 <= param_2)) {\n          *(byte **)param_1 = pbVar3 + 2;\n        }\n      }\n      else if (bVar1 < 0xf0) {\n        uVar4 = 0xfffffffe;\n        if (2 < uVar6) {\n          bVar2 = pbVar3[1];\n          uVar4 = 0xffffffff;\n          if (((bVar2 & 0xc0) == 0x80) && ((bVar1 != 0xe0 || (0x9f < bVar2)))) {\n            uVar4 = 0xffffffff;\n            if (((pbVar3[2] & 0xc0) == 0x80) &&\n               (uVar4 = (uint)bVar2 * 0x40 + uVar5 * 0x1000 + -0xe2080 + (uint)pbVar3[2],\n               uVar4 <= param_2)) {\n              *(byte **)param_1 = pbVar3 + 3;\n            }\n          }\n        }\n      }\n      else if ((bVar1 < 0xf5) && (uVar4 = 0xfffffffe, 3 < uVar6)) {\n        bVar2 = pbVar3[1];\n        uVar4 = 0xffffffff;\n        if ((((bVar2 & 0xc0) == 0x80) && ((bVar1 != 0xf0 || (0x8f < bVar2)))) &&\n           ((bVar1 != 0xf4 || (uVar4 = 0xffffffff, bVar2 < 0x90)))) {\n          uVar4 = 0xffffffff;\n          if ((((pbVar3[2] & 0xc0) == 0x80) && ((pbVar3[3] & 0xc0) == 0x80)) &&\n             (uVar4 = uVar5 * 0x40000 + (uint)bVar2 * 0x1000 + (uint)pbVar3[2] * 0x40 + -0x3c82080 +\n                      (uint)pbVar3[3], uVar4 <= param_2)) {\n            *(byte **)param_1 = pbVar3 + 4;\n          }\n        }\n      }\n    }" { (if_statement "if (bVar1 < 0xe0) {\n        if (uVar6 == 1) {\n          return 0xfffffffe;\n        }\n        if (((pbVar3[1] & 0xc0) == 0x80) &&\n           (uVar4 = uVar5 * 0x40 + -0x3080 + (uint)pbVar3[1], uVar4 <= param_2)) {\n          *(byte **)param_1 = pbVar3 + 2;\n        }\n      }\n      else if (bVar1 < 0xf0) {\n        uVar4 = 0xfffffffe;\n        if (2 < uVar6) {\n          bVar2 = pbVar3[1];\n          uVar4 = 0xffffffff;\n          if (((bVar2 & 0xc0) == 0x80) && ((bVar1 != 0xe0 || (0x9f < bVar2)))) {\n            uVar4 = 0xffffffff;\n            if (((pbVar3[2] & 0xc0) == 0x80) &&\n               (uVar4 = (uint)bVar2 * 0x40 + uVar5 * 0x1000 + -0xe2080 + (uint)pbVar3[2],\n               uVar4 <= param_2)) {\n              *(byte **)param_1 = pbVar3 + 3;\n            }\n          }\n        }\n      }\n      else if ((bVar1 < 0xf5) && (uVar4 = 0xfffffffe, 3 < uVar6)) {\n        bVar2 = pbVar3[1];\n        uVar4 = 0xffffffff;\n        if ((((bVar2 & 0xc0) == 0x80) && ((bVar1 != 0xf0 || (0x8f < bVar2)))) &&\n           ((bVar1 != 0xf4 || (uVar4 = 0xffffffff, bVar2 < 0x90)))) {\n          uVar4 = 0xffffffff;\n          if ((((pbVar3[2] & 0xc0) == 0x80) && ((pbVar3[3] & 0xc0) == 0x80)) &&\n             (uVar4 = uVar5 * 0x40000 + (uint)bVar2 * 0x1000 + (uint)pbVar3[2] * 0x40 + -0x3c82080 +\n                      (uint)pbVar3[3], uVar4 <= param_2)) {\n            *(byte **)param_1 = pbVar3 + 4;\n          }\n        }\n      }" if (parenthesized_expression "(bVar1 < 0xe0)" ( (binary_expression "bVar1 < 0xe0" identifier < number_literal) )) (compound_statement "{\n        if (uVar6 == 1) {\n          return 0xfffffffe;\n        }\n        if (((pbVar3[1] & 0xc0) == 0x80) &&\n           (uVar4 = uVar5 * 0x40 + -0x3080 + (uint)pbVar3[1], uVar4 <= param_2)) {\n          *(byte **)param_1 = pbVar3 + 2;\n        }\n      }" { (if_statement "if (uVar6 == 1) {\n          return 0xfffffffe;\n        }" if (parenthesized_expression "(uVar6 == 1)" ( (binary_expression "uVar6 == 1" identifier == number_literal) )) (compound_statement "{\n          return 0xfffffffe;\n        }" { (return_statement "return 0xfffffffe;" return number_literal ;) })) (if_statement "if (((pbVar3[1] & 0xc0) == 0x80) &&\n           (uVar4 = uVar5 * 0x40 + -0x3080 + (uint)pbVar3[1], uVar4 <= param_2)) {\n          *(byte **)param_1 = pbVar3 + 2;\n        }" if (parenthesized_expression "(((pbVar3[1] & 0xc0) == 0x80) &&\n           (uVar4 = uVar5 * 0x40 + -0x3080 + (uint)pbVar3[1], uVar4 <= param_2))" ( (binary_expression "((pbVar3[1] & 0xc0) == 0x80) &&\n           (uVar4 = uVar5 * 0x40 + -0x3080 + (uint)pbVar3[1], uVar4 <= param_2)" (parenthesized_expression "((pbVar3[1] & 0xc0) == 0x80)" ( (binary_expression "(pbVar3[1] & 0xc0) == 0x80" (parenthesized_expression "(pbVar3[1] & 0xc0)" ( (binary_expression "pbVar3[1] & 0xc0" (subscript_expression "pbVar3[1]" identifier [ number_literal ]) & number_literal) )) == number_literal) )) && (parenthesized_expression "(uVar4 = uVar5 * 0x40 + -0x3080 + (uint)pbVar3[1], uVar4 <= param_2)" ( (comma_expression "uVar4 = uVar5 * 0x40 + -0x3080 + (uint)pbVar3[1], uVar4 <= param_2" (assignment_expression "uVar4 = uVar5 * 0x40 + -0x3080 + (uint)pbVar3[1]" identifier = (binary_expression "uVar5 * 0x40 + -0x3080 + (uint)pbVar3[1]" (binary_expression "uVar5 * 0x40 + -0x3080" (binary_expression "uVar5 * 0x40" identifier * number_literal) + number_literal) + (cast_expression "(uint)pbVar3[1]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "pbVar3[1]" identifier [ number_literal ])))) , (binary_expression "uVar4 <= param_2" identifier <= identifier)) ))) )) (compound_statement "{\n          *(byte **)param_1 = pbVar3 + 2;\n        }" { (expression_statement "*(byte **)param_1 = pbVar3 + 2;" (assignment_expression "*(byte **)param_1 = pbVar3 + 2" (pointer_expression "*(byte **)param_1" * (cast_expression "(byte **)param_1" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier)) = (binary_expression "pbVar3 + 2" identifier + number_literal)) ;) })) }) (else_clause "else if (bVar1 < 0xf0) {\n        uVar4 = 0xfffffffe;\n        if (2 < uVar6) {\n          bVar2 = pbVar3[1];\n          uVar4 = 0xffffffff;\n          if (((bVar2 & 0xc0) == 0x80) && ((bVar1 != 0xe0 || (0x9f < bVar2)))) {\n            uVar4 = 0xffffffff;\n            if (((pbVar3[2] & 0xc0) == 0x80) &&\n               (uVar4 = (uint)bVar2 * 0x40 + uVar5 * 0x1000 + -0xe2080 + (uint)pbVar3[2],\n               uVar4 <= param_2)) {\n              *(byte **)param_1 = pbVar3 + 3;\n            }\n          }\n        }\n      }\n      else if ((bVar1 < 0xf5) && (uVar4 = 0xfffffffe, 3 < uVar6)) {\n        bVar2 = pbVar3[1];\n        uVar4 = 0xffffffff;\n        if ((((bVar2 & 0xc0) == 0x80) && ((bVar1 != 0xf0 || (0x8f < bVar2)))) &&\n           ((bVar1 != 0xf4 || (uVar4 = 0xffffffff, bVar2 < 0x90)))) {\n          uVar4 = 0xffffffff;\n          if ((((pbVar3[2] & 0xc0) == 0x80) && ((pbVar3[3] & 0xc0) == 0x80)) &&\n             (uVar4 = uVar5 * 0x40000 + (uint)bVar2 * 0x1000 + (uint)pbVar3[2] * 0x40 + -0x3c82080 +\n                      (uint)pbVar3[3], uVar4 <= param_2)) {\n            *(byte **)param_1 = pbVar3 + 4;\n          }\n        }\n      }" else (if_statement "if (bVar1 < 0xf0) {\n        uVar4 = 0xfffffffe;\n        if (2 < uVar6) {\n          bVar2 = pbVar3[1];\n          uVar4 = 0xffffffff;\n          if (((bVar2 & 0xc0) == 0x80) && ((bVar1 != 0xe0 || (0x9f < bVar2)))) {\n            uVar4 = 0xffffffff;\n            if (((pbVar3[2] & 0xc0) == 0x80) &&\n               (uVar4 = (uint)bVar2 * 0x40 + uVar5 * 0x1000 + -0xe2080 + (uint)pbVar3[2],\n               uVar4 <= param_2)) {\n              *(byte **)param_1 = pbVar3 + 3;\n            }\n          }\n        }\n      }\n      else if ((bVar1 < 0xf5) && (uVar4 = 0xfffffffe, 3 < uVar6)) {\n        bVar2 = pbVar3[1];\n        uVar4 = 0xffffffff;\n        if ((((bVar2 & 0xc0) == 0x80) && ((bVar1 != 0xf0 || (0x8f < bVar2)))) &&\n           ((bVar1 != 0xf4 || (uVar4 = 0xffffffff, bVar2 < 0x90)))) {\n          uVar4 = 0xffffffff;\n          if ((((pbVar3[2] & 0xc0) == 0x80) && ((pbVar3[3] & 0xc0) == 0x80)) &&\n             (uVar4 = uVar5 * 0x40000 + (uint)bVar2 * 0x1000 + (uint)pbVar3[2] * 0x40 + -0x3c82080 +\n                      (uint)pbVar3[3], uVar4 <= param_2)) {\n            *(byte **)param_1 = pbVar3 + 4;\n          }\n        }\n      }" if (parenthesized_expression "(bVar1 < 0xf0)" ( (binary_expression "bVar1 < 0xf0" identifier < number_literal) )) (compound_statement "{\n        uVar4 = 0xfffffffe;\n        if (2 < uVar6) {\n          bVar2 = pbVar3[1];\n          uVar4 = 0xffffffff;\n          if (((bVar2 & 0xc0) == 0x80) && ((bVar1 != 0xe0 || (0x9f < bVar2)))) {\n            uVar4 = 0xffffffff;\n            if (((pbVar3[2] & 0xc0) == 0x80) &&\n               (uVar4 = (uint)bVar2 * 0x40 + uVar5 * 0x1000 + -0xe2080 + (uint)pbVar3[2],\n               uVar4 <= param_2)) {\n              *(byte **)param_1 = pbVar3 + 3;\n            }\n          }\n        }\n      }" { (expression_statement "uVar4 = 0xfffffffe;" (assignment_expression "uVar4 = 0xfffffffe" identifier = number_literal) ;) (if_statement "if (2 < uVar6) {\n          bVar2 = pbVar3[1];\n          uVar4 = 0xffffffff;\n          if (((bVar2 & 0xc0) == 0x80) && ((bVar1 != 0xe0 || (0x9f < bVar2)))) {\n            uVar4 = 0xffffffff;\n            if (((pbVar3[2] & 0xc0) == 0x80) &&\n               (uVar4 = (uint)bVar2 * 0x40 + uVar5 * 0x1000 + -0xe2080 + (uint)pbVar3[2],\n               uVar4 <= param_2)) {\n              *(byte **)param_1 = pbVar3 + 3;\n            }\n          }\n        }" if (parenthesized_expression "(2 < uVar6)" ( (binary_expression "2 < uVar6" number_literal < identifier) )) (compound_statement "{\n          bVar2 = pbVar3[1];\n          uVar4 = 0xffffffff;\n          if (((bVar2 & 0xc0) == 0x80) && ((bVar1 != 0xe0 || (0x9f < bVar2)))) {\n            uVar4 = 0xffffffff;\n            if (((pbVar3[2] & 0xc0) == 0x80) &&\n               (uVar4 = (uint)bVar2 * 0x40 + uVar5 * 0x1000 + -0xe2080 + (uint)pbVar3[2],\n               uVar4 <= param_2)) {\n              *(byte **)param_1 = pbVar3 + 3;\n            }\n          }\n        }" { (expression_statement "bVar2 = pbVar3[1];" (assignment_expression "bVar2 = pbVar3[1]" identifier = (subscript_expression "pbVar3[1]" identifier [ number_literal ])) ;) (expression_statement "uVar4 = 0xffffffff;" (assignment_expression "uVar4 = 0xffffffff" identifier = number_literal) ;) (if_statement "if (((bVar2 & 0xc0) == 0x80) && ((bVar1 != 0xe0 || (0x9f < bVar2)))) {\n            uVar4 = 0xffffffff;\n            if (((pbVar3[2] & 0xc0) == 0x80) &&\n               (uVar4 = (uint)bVar2 * 0x40 + uVar5 * 0x1000 + -0xe2080 + (uint)pbVar3[2],\n               uVar4 <= param_2)) {\n              *(byte **)param_1 = pbVar3 + 3;\n            }\n          }" if (parenthesized_expression "(((bVar2 & 0xc0) == 0x80) && ((bVar1 != 0xe0 || (0x9f < bVar2))))" ( (binary_expression "((bVar2 & 0xc0) == 0x80) && ((bVar1 != 0xe0 || (0x9f < bVar2)))" (parenthesized_expression "((bVar2 & 0xc0) == 0x80)" ( (binary_expression "(bVar2 & 0xc0) == 0x80" (parenthesized_expression "(bVar2 & 0xc0)" ( (binary_expression "bVar2 & 0xc0" identifier & number_literal) )) == number_literal) )) && (parenthesized_expression "((bVar1 != 0xe0 || (0x9f < bVar2)))" ( (parenthesized_expression "(bVar1 != 0xe0 || (0x9f < bVar2))" ( (binary_expression "bVar1 != 0xe0 || (0x9f < bVar2)" (binary_expression "bVar1 != 0xe0" identifier != number_literal) || (parenthesized_expression "(0x9f < bVar2)" ( (binary_expression "0x9f < bVar2" number_literal < identifier) ))) )) ))) )) (compound_statement "{\n            uVar4 = 0xffffffff;\n            if (((pbVar3[2] & 0xc0) == 0x80) &&\n               (uVar4 = (uint)bVar2 * 0x40 + uVar5 * 0x1000 + -0xe2080 + (uint)pbVar3[2],\n               uVar4 <= param_2)) {\n              *(byte **)param_1 = pbVar3 + 3;\n            }\n          }" { (expression_statement "uVar4 = 0xffffffff;" (assignment_expression "uVar4 = 0xffffffff" identifier = number_literal) ;) (if_statement "if (((pbVar3[2] & 0xc0) == 0x80) &&\n               (uVar4 = (uint)bVar2 * 0x40 + uVar5 * 0x1000 + -0xe2080 + (uint)pbVar3[2],\n               uVar4 <= param_2)) {\n              *(byte **)param_1 = pbVar3 + 3;\n            }" if (parenthesized_expression "(((pbVar3[2] & 0xc0) == 0x80) &&\n               (uVar4 = (uint)bVar2 * 0x40 + uVar5 * 0x1000 + -0xe2080 + (uint)pbVar3[2],\n               uVar4 <= param_2))" ( (binary_expression "((pbVar3[2] & 0xc0) == 0x80) &&\n               (uVar4 = (uint)bVar2 * 0x40 + uVar5 * 0x1000 + -0xe2080 + (uint)pbVar3[2],\n               uVar4 <= param_2)" (parenthesized_expression "((pbVar3[2] & 0xc0) == 0x80)" ( (binary_expression "(pbVar3[2] & 0xc0) == 0x80" (parenthesized_expression "(pbVar3[2] & 0xc0)" ( (binary_expression "pbVar3[2] & 0xc0" (subscript_expression "pbVar3[2]" identifier [ number_literal ]) & number_literal) )) == number_literal) )) && (parenthesized_expression "(uVar4 = (uint)bVar2 * 0x40 + uVar5 * 0x1000 + -0xe2080 + (uint)pbVar3[2],\n               uVar4 <= param_2)" ( (comma_expression "uVar4 = (uint)bVar2 * 0x40 + uVar5 * 0x1000 + -0xe2080 + (uint)pbVar3[2],\n               uVar4 <= param_2" (assignment_expression "uVar4 = (uint)bVar2 * 0x40 + uVar5 * 0x1000 + -0xe2080 + (uint)pbVar3[2]" identifier = (binary_expression "(uint)bVar2 * 0x40 + uVar5 * 0x1000 + -0xe2080 + (uint)pbVar3[2]" (binary_expression "(uint)bVar2 * 0x40 + uVar5 * 0x1000 + -0xe2080" (binary_expression "(uint)bVar2 * 0x40 + uVar5 * 0x1000" (binary_expression "(uint)bVar2 * 0x40" (cast_expression "(uint)bVar2" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal) + (binary_expression "uVar5 * 0x1000" identifier * number_literal)) + number_literal) + (cast_expression "(uint)pbVar3[2]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "pbVar3[2]" identifier [ number_literal ])))) , (binary_expression "uVar4 <= param_2" identifier <= identifier)) ))) )) (compound_statement "{\n              *(byte **)param_1 = pbVar3 + 3;\n            }" { (expression_statement "*(byte **)param_1 = pbVar3 + 3;" (assignment_expression "*(byte **)param_1 = pbVar3 + 3" (pointer_expression "*(byte **)param_1" * (cast_expression "(byte **)param_1" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier)) = (binary_expression "pbVar3 + 3" identifier + number_literal)) ;) })) })) })) }) (else_clause "else if ((bVar1 < 0xf5) && (uVar4 = 0xfffffffe, 3 < uVar6)) {\n        bVar2 = pbVar3[1];\n        uVar4 = 0xffffffff;\n        if ((((bVar2 & 0xc0) == 0x80) && ((bVar1 != 0xf0 || (0x8f < bVar2)))) &&\n           ((bVar1 != 0xf4 || (uVar4 = 0xffffffff, bVar2 < 0x90)))) {\n          uVar4 = 0xffffffff;\n          if ((((pbVar3[2] & 0xc0) == 0x80) && ((pbVar3[3] & 0xc0) == 0x80)) &&\n             (uVar4 = uVar5 * 0x40000 + (uint)bVar2 * 0x1000 + (uint)pbVar3[2] * 0x40 + -0x3c82080 +\n                      (uint)pbVar3[3], uVar4 <= param_2)) {\n            *(byte **)param_1 = pbVar3 + 4;\n          }\n        }\n      }" else (if_statement "if ((bVar1 < 0xf5) && (uVar4 = 0xfffffffe, 3 < uVar6)) {\n        bVar2 = pbVar3[1];\n        uVar4 = 0xffffffff;\n        if ((((bVar2 & 0xc0) == 0x80) && ((bVar1 != 0xf0 || (0x8f < bVar2)))) &&\n           ((bVar1 != 0xf4 || (uVar4 = 0xffffffff, bVar2 < 0x90)))) {\n          uVar4 = 0xffffffff;\n          if ((((pbVar3[2] & 0xc0) == 0x80) && ((pbVar3[3] & 0xc0) == 0x80)) &&\n             (uVar4 = uVar5 * 0x40000 + (uint)bVar2 * 0x1000 + (uint)pbVar3[2] * 0x40 + -0x3c82080 +\n                      (uint)pbVar3[3], uVar4 <= param_2)) {\n            *(byte **)param_1 = pbVar3 + 4;\n          }\n        }\n      }" if (parenthesized_expression "((bVar1 < 0xf5) && (uVar4 = 0xfffffffe, 3 < uVar6))" ( (binary_expression "(bVar1 < 0xf5) && (uVar4 = 0xfffffffe, 3 < uVar6)" (parenthesized_expression "(bVar1 < 0xf5)" ( (binary_expression "bVar1 < 0xf5" identifier < number_literal) )) && (parenthesized_expression "(uVar4 = 0xfffffffe, 3 < uVar6)" ( (comma_expression "uVar4 = 0xfffffffe, 3 < uVar6" (assignment_expression "uVar4 = 0xfffffffe" identifier = number_literal) , (binary_expression "3 < uVar6" number_literal < identifier)) ))) )) (compound_statement "{\n        bVar2 = pbVar3[1];\n        uVar4 = 0xffffffff;\n        if ((((bVar2 & 0xc0) == 0x80) && ((bVar1 != 0xf0 || (0x8f < bVar2)))) &&\n           ((bVar1 != 0xf4 || (uVar4 = 0xffffffff, bVar2 < 0x90)))) {\n          uVar4 = 0xffffffff;\n          if ((((pbVar3[2] & 0xc0) == 0x80) && ((pbVar3[3] & 0xc0) == 0x80)) &&\n             (uVar4 = uVar5 * 0x40000 + (uint)bVar2 * 0x1000 + (uint)pbVar3[2] * 0x40 + -0x3c82080 +\n                      (uint)pbVar3[3], uVar4 <= param_2)) {\n            *(byte **)param_1 = pbVar3 + 4;\n          }\n        }\n      }" { (expression_statement "bVar2 = pbVar3[1];" (assignment_expression "bVar2 = pbVar3[1]" identifier = (subscript_expression "pbVar3[1]" identifier [ number_literal ])) ;) (expression_statement "uVar4 = 0xffffffff;" (assignment_expression "uVar4 = 0xffffffff" identifier = number_literal) ;) (if_statement "if ((((bVar2 & 0xc0) == 0x80) && ((bVar1 != 0xf0 || (0x8f < bVar2)))) &&\n           ((bVar1 != 0xf4 || (uVar4 = 0xffffffff, bVar2 < 0x90)))) {\n          uVar4 = 0xffffffff;\n          if ((((pbVar3[2] & 0xc0) == 0x80) && ((pbVar3[3] & 0xc0) == 0x80)) &&\n             (uVar4 = uVar5 * 0x40000 + (uint)bVar2 * 0x1000 + (uint)pbVar3[2] * 0x40 + -0x3c82080 +\n                      (uint)pbVar3[3], uVar4 <= param_2)) {\n            *(byte **)param_1 = pbVar3 + 4;\n          }\n        }" if (parenthesized_expression "((((bVar2 & 0xc0) == 0x80) && ((bVar1 != 0xf0 || (0x8f < bVar2)))) &&\n           ((bVar1 != 0xf4 || (uVar4 = 0xffffffff, bVar2 < 0x90))))" ( (binary_expression "(((bVar2 & 0xc0) == 0x80) && ((bVar1 != 0xf0 || (0x8f < bVar2)))) &&\n           ((bVar1 != 0xf4 || (uVar4 = 0xffffffff, bVar2 < 0x90)))" (parenthesized_expression "(((bVar2 & 0xc0) == 0x80) && ((bVar1 != 0xf0 || (0x8f < bVar2))))" ( (binary_expression "((bVar2 & 0xc0) == 0x80) && ((bVar1 != 0xf0 || (0x8f < bVar2)))" (parenthesized_expression "((bVar2 & 0xc0) == 0x80)" ( (binary_expression "(bVar2 & 0xc0) == 0x80" (parenthesized_expression "(bVar2 & 0xc0)" ( (binary_expression "bVar2 & 0xc0" identifier & number_literal) )) == number_literal) )) && (parenthesized_expression "((bVar1 != 0xf0 || (0x8f < bVar2)))" ( (parenthesized_expression "(bVar1 != 0xf0 || (0x8f < bVar2))" ( (binary_expression "bVar1 != 0xf0 || (0x8f < bVar2)" (binary_expression "bVar1 != 0xf0" identifier != number_literal) || (parenthesized_expression "(0x8f < bVar2)" ( (binary_expression "0x8f < bVar2" number_literal < identifier) ))) )) ))) )) && (parenthesized_expression "((bVar1 != 0xf4 || (uVar4 = 0xffffffff, bVar2 < 0x90)))" ( (parenthesized_expression "(bVar1 != 0xf4 || (uVar4 = 0xffffffff, bVar2 < 0x90))" ( (binary_expression "bVar1 != 0xf4 || (uVar4 = 0xffffffff, bVar2 < 0x90)" (binary_expression "bVar1 != 0xf4" identifier != number_literal) || (parenthesized_expression "(uVar4 = 0xffffffff, bVar2 < 0x90)" ( (comma_expression "uVar4 = 0xffffffff, bVar2 < 0x90" (assignment_expression "uVar4 = 0xffffffff" identifier = number_literal) , (binary_expression "bVar2 < 0x90" identifier < number_literal)) ))) )) ))) )) (compound_statement "{\n          uVar4 = 0xffffffff;\n          if ((((pbVar3[2] & 0xc0) == 0x80) && ((pbVar3[3] & 0xc0) == 0x80)) &&\n             (uVar4 = uVar5 * 0x40000 + (uint)bVar2 * 0x1000 + (uint)pbVar3[2] * 0x40 + -0x3c82080 +\n                      (uint)pbVar3[3], uVar4 <= param_2)) {\n            *(byte **)param_1 = pbVar3 + 4;\n          }\n        }" { (expression_statement "uVar4 = 0xffffffff;" (assignment_expression "uVar4 = 0xffffffff" identifier = number_literal) ;) (if_statement "if ((((pbVar3[2] & 0xc0) == 0x80) && ((pbVar3[3] & 0xc0) == 0x80)) &&\n             (uVar4 = uVar5 * 0x40000 + (uint)bVar2 * 0x1000 + (uint)pbVar3[2] * 0x40 + -0x3c82080 +\n                      (uint)pbVar3[3], uVar4 <= param_2)) {\n            *(byte **)param_1 = pbVar3 + 4;\n          }" if (parenthesized_expression "((((pbVar3[2] & 0xc0) == 0x80) && ((pbVar3[3] & 0xc0) == 0x80)) &&\n             (uVar4 = uVar5 * 0x40000 + (uint)bVar2 * 0x1000 + (uint)pbVar3[2] * 0x40 + -0x3c82080 +\n                      (uint)pbVar3[3], uVar4 <= param_2))" ( (binary_expression "(((pbVar3[2] & 0xc0) == 0x80) && ((pbVar3[3] & 0xc0) == 0x80)) &&\n             (uVar4 = uVar5 * 0x40000 + (uint)bVar2 * 0x1000 + (uint)pbVar3[2] * 0x40 + -0x3c82080 +\n                      (uint)pbVar3[3], uVar4 <= param_2)" (parenthesized_expression "(((pbVar3[2] & 0xc0) == 0x80) && ((pbVar3[3] & 0xc0) == 0x80))" ( (binary_expression "((pbVar3[2] & 0xc0) == 0x80) && ((pbVar3[3] & 0xc0) == 0x80)" (parenthesized_expression "((pbVar3[2] & 0xc0) == 0x80)" ( (binary_expression "(pbVar3[2] & 0xc0) == 0x80" (parenthesized_expression "(pbVar3[2] & 0xc0)" ( (binary_expression "pbVar3[2] & 0xc0" (subscript_expression "pbVar3[2]" identifier [ number_literal ]) & number_literal) )) == number_literal) )) && (parenthesized_expression "((pbVar3[3] & 0xc0) == 0x80)" ( (binary_expression "(pbVar3[3] & 0xc0) == 0x80" (parenthesized_expression "(pbVar3[3] & 0xc0)" ( (binary_expression "pbVar3[3] & 0xc0" (subscript_expression "pbVar3[3]" identifier [ number_literal ]) & number_literal) )) == number_literal) ))) )) && (parenthesized_expression "(uVar4 = uVar5 * 0x40000 + (uint)bVar2 * 0x1000 + (uint)pbVar3[2] * 0x40 + -0x3c82080 +\n                      (uint)pbVar3[3], uVar4 <= param_2)" ( (comma_expression "uVar4 = uVar5 * 0x40000 + (uint)bVar2 * 0x1000 + (uint)pbVar3[2] * 0x40 + -0x3c82080 +\n                      (uint)pbVar3[3], uVar4 <= param_2" (assignment_expression "uVar4 = uVar5 * 0x40000 + (uint)bVar2 * 0x1000 + (uint)pbVar3[2] * 0x40 + -0x3c82080 +\n                      (uint)pbVar3[3]" identifier = (binary_expression "uVar5 * 0x40000 + (uint)bVar2 * 0x1000 + (uint)pbVar3[2] * 0x40 + -0x3c82080 +\n                      (uint)pbVar3[3]" (binary_expression "uVar5 * 0x40000 + (uint)bVar2 * 0x1000 + (uint)pbVar3[2] * 0x40 + -0x3c82080" (binary_expression "uVar5 * 0x40000 + (uint)bVar2 * 0x1000 + (uint)pbVar3[2] * 0x40" (binary_expression "uVar5 * 0x40000 + (uint)bVar2 * 0x1000" (binary_expression "uVar5 * 0x40000" identifier * number_literal) + (binary_expression "(uint)bVar2 * 0x1000" (cast_expression "(uint)bVar2" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + (binary_expression "(uint)pbVar3[2] * 0x40" (cast_expression "(uint)pbVar3[2]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "pbVar3[2]" identifier [ number_literal ])) * number_literal)) + number_literal) + (cast_expression "(uint)pbVar3[3]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "pbVar3[3]" identifier [ number_literal ])))) , (binary_expression "uVar4 <= param_2" identifier <= identifier)) ))) )) (compound_statement "{\n            *(byte **)param_1 = pbVar3 + 4;\n          }" { (expression_statement "*(byte **)param_1 = pbVar3 + 4;" (assignment_expression "*(byte **)param_1 = pbVar3 + 4" (pointer_expression "*(byte **)param_1" * (cast_expression "(byte **)param_1" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier)) = (binary_expression "pbVar3 + 4" identifier + number_literal)) ;) })) })) })))))) })) }) (else_clause "else {\n    *(byte **)param_1 = pbVar3 + 1;\n    uVar4 = (uint)bVar1;\n  }" else (compound_statement "{\n    *(byte **)param_1 = pbVar3 + 1;\n    uVar4 = (uint)bVar1;\n  }" { (expression_statement "*(byte **)param_1 = pbVar3 + 1;" (assignment_expression "*(byte **)param_1 = pbVar3 + 1" (pointer_expression "*(byte **)param_1" * (cast_expression "(byte **)param_1" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier)) = (binary_expression "pbVar3 + 1" identifier + number_literal)) ;) (expression_statement "uVar4 = (uint)bVar1;" (assignment_expression "uVar4 = (uint)bVar1" identifier = (cast_expression "(uint)bVar1" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) }))) (return_statement "return uVar4;" return identifier ;) }))
(translation_unit "uint __regparm3 FUN_002072d0(undefined4 *param_1,uint param_2)\n\n{\n  byte bVar1;\n  byte bVar2;\n  byte *pbVar3;\n  uint uVar4;\n  uint uVar5;\n  uint uVar6;\n  \n  pbVar3 = (byte *)*param_1;\n  uVar6 = (int)param_1[1] - (int)pbVar3;\n  if ((byte *)param_1[1] == pbVar3) {\n    return 0xfffffffe;\n  }\n  bVar1 = *pbVar3;\n  uVar5 = (uint)bVar1;\n  if ((char)bVar1 < '\0') {\n    uVar4 = 0xffffffff;\n    if (0xc1 < bVar1) {\n      if (bVar1 < 0xe0) {\n        if (uVar6 == 1) {\n          return 0xfffffffe;\n        }\n        if (((pbVar3[1] & 0xc0) == 0x80) &&\n           (uVar4 = uVar5 * 0x40 + -0x3080 + (uint)pbVar3[1], uVar4 <= param_2)) {\n          *param_1 = pbVar3 + 2;\n        }\n      }\n      else if (bVar1 < 0xf0) {\n        uVar4 = 0xfffffffe;\n        if (2 < uVar6) {\n          bVar2 = pbVar3[1];\n          uVar4 = 0xffffffff;\n          if (((bVar2 & 0xc0) == 0x80) && ((bVar1 != 0xe0 || (0x9f < bVar2)))) {\n            uVar4 = 0xffffffff;\n            if (((pbVar3[2] & 0xc0) == 0x80) &&\n               (uVar4 = (uint)bVar2 * 0x40 + uVar5 * 0x1000 + -0xe2080 + (uint)pbVar3[2],\n               uVar4 <= param_2)) {\n              *param_1 = pbVar3 + 3;\n            }\n          }\n        }\n      }\n      else if ((bVar1 < 0xf5) && (uVar4 = 0xfffffffe, 3 < uVar6)) {\n        bVar2 = pbVar3[1];\n        uVar4 = 0xffffffff;\n        if ((((bVar2 & 0xc0) == 0x80) && ((bVar1 != 0xf0 || (0x8f < bVar2)))) &&\n           ((bVar1 != 0xf4 || (uVar4 = 0xffffffff, bVar2 < 0x90)))) {\n          uVar4 = 0xffffffff;\n          if ((((pbVar3[2] & 0xc0) == 0x80) && ((pbVar3[3] & 0xc0) == 0x80)) &&\n             (uVar4 = uVar5 * 0x40000 + (uint)bVar2 * 0x1000 + (uint)pbVar3[2] * 0x40 + -0x3c82080 +\n                      (uint)pbVar3[3], uVar4 <= param_2)) {\n            *param_1 = pbVar3 + 4;\n          }\n        }\n      }\n    }\n  }\n  else {\n    *param_1 = pbVar3 + 1;\n    uVar4 = (uint)bVar1;\n  }\n  return uVar4;\n}\n\n" (function_definition "uint __regparm3 FUN_002072d0(undefined4 *param_1,uint param_2)\n\n{\n  byte bVar1;\n  byte bVar2;\n  byte *pbVar3;\n  uint uVar4;\n  uint uVar5;\n  uint uVar6;\n  \n  pbVar3 = (byte *)*param_1;\n  uVar6 = (int)param_1[1] - (int)pbVar3;\n  if ((byte *)param_1[1] == pbVar3) {\n    return 0xfffffffe;\n  }\n  bVar1 = *pbVar3;\n  uVar5 = (uint)bVar1;\n  if ((char)bVar1 < '\0') {\n    uVar4 = 0xffffffff;\n    if (0xc1 < bVar1) {\n      if (bVar1 < 0xe0) {\n        if (uVar6 == 1) {\n          return 0xfffffffe;\n        }\n        if (((pbVar3[1] & 0xc0) == 0x80) &&\n           (uVar4 = uVar5 * 0x40 + -0x3080 + (uint)pbVar3[1], uVar4 <= param_2)) {\n          *param_1 = pbVar3 + 2;\n        }\n      }\n      else if (bVar1 < 0xf0) {\n        uVar4 = 0xfffffffe;\n        if (2 < uVar6) {\n          bVar2 = pbVar3[1];\n          uVar4 = 0xffffffff;\n          if (((bVar2 & 0xc0) == 0x80) && ((bVar1 != 0xe0 || (0x9f < bVar2)))) {\n            uVar4 = 0xffffffff;\n            if (((pbVar3[2] & 0xc0) == 0x80) &&\n               (uVar4 = (uint)bVar2 * 0x40 + uVar5 * 0x1000 + -0xe2080 + (uint)pbVar3[2],\n               uVar4 <= param_2)) {\n              *param_1 = pbVar3 + 3;\n            }\n          }\n        }\n      }\n      else if ((bVar1 < 0xf5) && (uVar4 = 0xfffffffe, 3 < uVar6)) {\n        bVar2 = pbVar3[1];\n        uVar4 = 0xffffffff;\n        if ((((bVar2 & 0xc0) == 0x80) && ((bVar1 != 0xf0 || (0x8f < bVar2)))) &&\n           ((bVar1 != 0xf4 || (uVar4 = 0xffffffff, bVar2 < 0x90)))) {\n          uVar4 = 0xffffffff;\n          if ((((pbVar3[2] & 0xc0) == 0x80) && ((pbVar3[3] & 0xc0) == 0x80)) &&\n             (uVar4 = uVar5 * 0x40000 + (uint)bVar2 * 0x1000 + (uint)pbVar3[2] * 0x40 + -0x3c82080 +\n                      (uint)pbVar3[3], uVar4 <= param_2)) {\n            *param_1 = pbVar3 + 4;\n          }\n        }\n      }\n    }\n  }\n  else {\n    *param_1 = pbVar3 + 1;\n    uVar4 = (uint)bVar1;\n  }\n  return uVar4;\n}" type_identifier (ERROR "__regparm3" identifier) (function_declarator "FUN_002072d0(undefined4 *param_1,uint param_2)" identifier (parameter_list "(undefined4 *param_1,uint param_2)" ( (parameter_declaration "undefined4 *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "uint param_2" type_identifier identifier) ))) (compound_statement "{\n  byte bVar1;\n  byte bVar2;\n  byte *pbVar3;\n  uint uVar4;\n  uint uVar5;\n  uint uVar6;\n  \n  pbVar3 = (byte *)*param_1;\n  uVar6 = (int)param_1[1] - (int)pbVar3;\n  if ((byte *)param_1[1] == pbVar3) {\n    return 0xfffffffe;\n  }\n  bVar1 = *pbVar3;\n  uVar5 = (uint)bVar1;\n  if ((char)bVar1 < '\0') {\n    uVar4 = 0xffffffff;\n    if (0xc1 < bVar1) {\n      if (bVar1 < 0xe0) {\n        if (uVar6 == 1) {\n          return 0xfffffffe;\n        }\n        if (((pbVar3[1] & 0xc0) == 0x80) &&\n           (uVar4 = uVar5 * 0x40 + -0x3080 + (uint)pbVar3[1], uVar4 <= param_2)) {\n          *param_1 = pbVar3 + 2;\n        }\n      }\n      else if (bVar1 < 0xf0) {\n        uVar4 = 0xfffffffe;\n        if (2 < uVar6) {\n          bVar2 = pbVar3[1];\n          uVar4 = 0xffffffff;\n          if (((bVar2 & 0xc0) == 0x80) && ((bVar1 != 0xe0 || (0x9f < bVar2)))) {\n            uVar4 = 0xffffffff;\n            if (((pbVar3[2] & 0xc0) == 0x80) &&\n               (uVar4 = (uint)bVar2 * 0x40 + uVar5 * 0x1000 + -0xe2080 + (uint)pbVar3[2],\n               uVar4 <= param_2)) {\n              *param_1 = pbVar3 + 3;\n            }\n          }\n        }\n      }\n      else if ((bVar1 < 0xf5) && (uVar4 = 0xfffffffe, 3 < uVar6)) {\n        bVar2 = pbVar3[1];\n        uVar4 = 0xffffffff;\n        if ((((bVar2 & 0xc0) == 0x80) && ((bVar1 != 0xf0 || (0x8f < bVar2)))) &&\n           ((bVar1 != 0xf4 || (uVar4 = 0xffffffff, bVar2 < 0x90)))) {\n          uVar4 = 0xffffffff;\n          if ((((pbVar3[2] & 0xc0) == 0x80) && ((pbVar3[3] & 0xc0) == 0x80)) &&\n             (uVar4 = uVar5 * 0x40000 + (uint)bVar2 * 0x1000 + (uint)pbVar3[2] * 0x40 + -0x3c82080 +\n                      (uint)pbVar3[3], uVar4 <= param_2)) {\n            *param_1 = pbVar3 + 4;\n          }\n        }\n      }\n    }\n  }\n  else {\n    *param_1 = pbVar3 + 1;\n    uVar4 = (uint)bVar1;\n  }\n  return uVar4;\n}" { (declaration "byte bVar1;" type_identifier identifier ;) (declaration "byte bVar2;" type_identifier identifier ;) (declaration "byte *pbVar3;" type_identifier (pointer_declarator "*pbVar3" * identifier) ;) (declaration "uint uVar4;" type_identifier identifier ;) (declaration "uint uVar5;" type_identifier identifier ;) (declaration "uint uVar6;" type_identifier identifier ;) (expression_statement "pbVar3 = (byte *)*param_1;" (assignment_expression "pbVar3 = (byte *)*param_1" identifier = (cast_expression "(byte *)*param_1" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_1" * identifier))) ;) (expression_statement "uVar6 = (int)param_1[1] - (int)pbVar3;" (assignment_expression "uVar6 = (int)param_1[1] - (int)pbVar3" identifier = (binary_expression "(int)param_1[1] - (int)pbVar3" (cast_expression "(int)param_1[1]" ( (type_descriptor "int" primitive_type) ) (subscript_expression "param_1[1]" identifier [ number_literal ])) - (cast_expression "(int)pbVar3" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (if_statement "if ((byte *)param_1[1] == pbVar3) {\n    return 0xfffffffe;\n  }" if (parenthesized_expression "((byte *)param_1[1] == pbVar3)" ( (binary_expression "(byte *)param_1[1] == pbVar3" (cast_expression "(byte *)param_1[1]" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[1]" identifier [ number_literal ])) == identifier) )) (compound_statement "{\n    return 0xfffffffe;\n  }" { (return_statement "return 0xfffffffe;" return number_literal ;) })) (expression_statement "bVar1 = *pbVar3;" (assignment_expression "bVar1 = *pbVar3" identifier = (pointer_expression "*pbVar3" * identifier)) ;) (expression_statement "uVar5 = (uint)bVar1;" (assignment_expression "uVar5 = (uint)bVar1" identifier = (cast_expression "(uint)bVar1" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (if_statement "if ((char)bVar1 < '\0') {\n    uVar4 = 0xffffffff;\n    if (0xc1 < bVar1) {\n      if (bVar1 < 0xe0) {\n        if (uVar6 == 1) {\n          return 0xfffffffe;\n        }\n        if (((pbVar3[1] & 0xc0) == 0x80) &&\n           (uVar4 = uVar5 * 0x40 + -0x3080 + (uint)pbVar3[1], uVar4 <= param_2)) {\n          *param_1 = pbVar3 + 2;\n        }\n      }\n      else if (bVar1 < 0xf0) {\n        uVar4 = 0xfffffffe;\n        if (2 < uVar6) {\n          bVar2 = pbVar3[1];\n          uVar4 = 0xffffffff;\n          if (((bVar2 & 0xc0) == 0x80) && ((bVar1 != 0xe0 || (0x9f < bVar2)))) {\n            uVar4 = 0xffffffff;\n            if (((pbVar3[2] & 0xc0) == 0x80) &&\n               (uVar4 = (uint)bVar2 * 0x40 + uVar5 * 0x1000 + -0xe2080 + (uint)pbVar3[2],\n               uVar4 <= param_2)) {\n              *param_1 = pbVar3 + 3;\n            }\n          }\n        }\n      }\n      else if ((bVar1 < 0xf5) && (uVar4 = 0xfffffffe, 3 < uVar6)) {\n        bVar2 = pbVar3[1];\n        uVar4 = 0xffffffff;\n        if ((((bVar2 & 0xc0) == 0x80) && ((bVar1 != 0xf0 || (0x8f < bVar2)))) &&\n           ((bVar1 != 0xf4 || (uVar4 = 0xffffffff, bVar2 < 0x90)))) {\n          uVar4 = 0xffffffff;\n          if ((((pbVar3[2] & 0xc0) == 0x80) && ((pbVar3[3] & 0xc0) == 0x80)) &&\n             (uVar4 = uVar5 * 0x40000 + (uint)bVar2 * 0x1000 + (uint)pbVar3[2] * 0x40 + -0x3c82080 +\n                      (uint)pbVar3[3], uVar4 <= param_2)) {\n            *param_1 = pbVar3 + 4;\n          }\n        }\n      }\n    }\n  }\n  else {\n    *param_1 = pbVar3 + 1;\n    uVar4 = (uint)bVar1;\n  }" if (parenthesized_expression "((char)bVar1 < '\0')" ( (binary_expression "(char)bVar1 < '\0'" (cast_expression "(char)bVar1" ( (type_descriptor "char" primitive_type) ) identifier) < (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    uVar4 = 0xffffffff;\n    if (0xc1 < bVar1) {\n      if (bVar1 < 0xe0) {\n        if (uVar6 == 1) {\n          return 0xfffffffe;\n        }\n        if (((pbVar3[1] & 0xc0) == 0x80) &&\n           (uVar4 = uVar5 * 0x40 + -0x3080 + (uint)pbVar3[1], uVar4 <= param_2)) {\n          *param_1 = pbVar3 + 2;\n        }\n      }\n      else if (bVar1 < 0xf0) {\n        uVar4 = 0xfffffffe;\n        if (2 < uVar6) {\n          bVar2 = pbVar3[1];\n          uVar4 = 0xffffffff;\n          if (((bVar2 & 0xc0) == 0x80) && ((bVar1 != 0xe0 || (0x9f < bVar2)))) {\n            uVar4 = 0xffffffff;\n            if (((pbVar3[2] & 0xc0) == 0x80) &&\n               (uVar4 = (uint)bVar2 * 0x40 + uVar5 * 0x1000 + -0xe2080 + (uint)pbVar3[2],\n               uVar4 <= param_2)) {\n              *param_1 = pbVar3 + 3;\n            }\n          }\n        }\n      }\n      else if ((bVar1 < 0xf5) && (uVar4 = 0xfffffffe, 3 < uVar6)) {\n        bVar2 = pbVar3[1];\n        uVar4 = 0xffffffff;\n        if ((((bVar2 & 0xc0) == 0x80) && ((bVar1 != 0xf0 || (0x8f < bVar2)))) &&\n           ((bVar1 != 0xf4 || (uVar4 = 0xffffffff, bVar2 < 0x90)))) {\n          uVar4 = 0xffffffff;\n          if ((((pbVar3[2] & 0xc0) == 0x80) && ((pbVar3[3] & 0xc0) == 0x80)) &&\n             (uVar4 = uVar5 * 0x40000 + (uint)bVar2 * 0x1000 + (uint)pbVar3[2] * 0x40 + -0x3c82080 +\n                      (uint)pbVar3[3], uVar4 <= param_2)) {\n            *param_1 = pbVar3 + 4;\n          }\n        }\n      }\n    }\n  }" { (expression_statement "uVar4 = 0xffffffff;" (assignment_expression "uVar4 = 0xffffffff" identifier = number_literal) ;) (if_statement "if (0xc1 < bVar1) {\n      if (bVar1 < 0xe0) {\n        if (uVar6 == 1) {\n          return 0xfffffffe;\n        }\n        if (((pbVar3[1] & 0xc0) == 0x80) &&\n           (uVar4 = uVar5 * 0x40 + -0x3080 + (uint)pbVar3[1], uVar4 <= param_2)) {\n          *param_1 = pbVar3 + 2;\n        }\n      }\n      else if (bVar1 < 0xf0) {\n        uVar4 = 0xfffffffe;\n        if (2 < uVar6) {\n          bVar2 = pbVar3[1];\n          uVar4 = 0xffffffff;\n          if (((bVar2 & 0xc0) == 0x80) && ((bVar1 != 0xe0 || (0x9f < bVar2)))) {\n            uVar4 = 0xffffffff;\n            if (((pbVar3[2] & 0xc0) == 0x80) &&\n               (uVar4 = (uint)bVar2 * 0x40 + uVar5 * 0x1000 + -0xe2080 + (uint)pbVar3[2],\n               uVar4 <= param_2)) {\n              *param_1 = pbVar3 + 3;\n            }\n          }\n        }\n      }\n      else if ((bVar1 < 0xf5) && (uVar4 = 0xfffffffe, 3 < uVar6)) {\n        bVar2 = pbVar3[1];\n        uVar4 = 0xffffffff;\n        if ((((bVar2 & 0xc0) == 0x80) && ((bVar1 != 0xf0 || (0x8f < bVar2)))) &&\n           ((bVar1 != 0xf4 || (uVar4 = 0xffffffff, bVar2 < 0x90)))) {\n          uVar4 = 0xffffffff;\n          if ((((pbVar3[2] & 0xc0) == 0x80) && ((pbVar3[3] & 0xc0) == 0x80)) &&\n             (uVar4 = uVar5 * 0x40000 + (uint)bVar2 * 0x1000 + (uint)pbVar3[2] * 0x40 + -0x3c82080 +\n                      (uint)pbVar3[3], uVar4 <= param_2)) {\n            *param_1 = pbVar3 + 4;\n          }\n        }\n      }\n    }" if (parenthesized_expression "(0xc1 < bVar1)" ( (binary_expression "0xc1 < bVar1" number_literal < identifier) )) (compound_statement "{\n      if (bVar1 < 0xe0) {\n        if (uVar6 == 1) {\n          return 0xfffffffe;\n        }\n        if (((pbVar3[1] & 0xc0) == 0x80) &&\n           (uVar4 = uVar5 * 0x40 + -0x3080 + (uint)pbVar3[1], uVar4 <= param_2)) {\n          *param_1 = pbVar3 + 2;\n        }\n      }\n      else if (bVar1 < 0xf0) {\n        uVar4 = 0xfffffffe;\n        if (2 < uVar6) {\n          bVar2 = pbVar3[1];\n          uVar4 = 0xffffffff;\n          if (((bVar2 & 0xc0) == 0x80) && ((bVar1 != 0xe0 || (0x9f < bVar2)))) {\n            uVar4 = 0xffffffff;\n            if (((pbVar3[2] & 0xc0) == 0x80) &&\n               (uVar4 = (uint)bVar2 * 0x40 + uVar5 * 0x1000 + -0xe2080 + (uint)pbVar3[2],\n               uVar4 <= param_2)) {\n              *param_1 = pbVar3 + 3;\n            }\n          }\n        }\n      }\n      else if ((bVar1 < 0xf5) && (uVar4 = 0xfffffffe, 3 < uVar6)) {\n        bVar2 = pbVar3[1];\n        uVar4 = 0xffffffff;\n        if ((((bVar2 & 0xc0) == 0x80) && ((bVar1 != 0xf0 || (0x8f < bVar2)))) &&\n           ((bVar1 != 0xf4 || (uVar4 = 0xffffffff, bVar2 < 0x90)))) {\n          uVar4 = 0xffffffff;\n          if ((((pbVar3[2] & 0xc0) == 0x80) && ((pbVar3[3] & 0xc0) == 0x80)) &&\n             (uVar4 = uVar5 * 0x40000 + (uint)bVar2 * 0x1000 + (uint)pbVar3[2] * 0x40 + -0x3c82080 +\n                      (uint)pbVar3[3], uVar4 <= param_2)) {\n            *param_1 = pbVar3 + 4;\n          }\n        }\n      }\n    }" { (if_statement "if (bVar1 < 0xe0) {\n        if (uVar6 == 1) {\n          return 0xfffffffe;\n        }\n        if (((pbVar3[1] & 0xc0) == 0x80) &&\n           (uVar4 = uVar5 * 0x40 + -0x3080 + (uint)pbVar3[1], uVar4 <= param_2)) {\n          *param_1 = pbVar3 + 2;\n        }\n      }\n      else if (bVar1 < 0xf0) {\n        uVar4 = 0xfffffffe;\n        if (2 < uVar6) {\n          bVar2 = pbVar3[1];\n          uVar4 = 0xffffffff;\n          if (((bVar2 & 0xc0) == 0x80) && ((bVar1 != 0xe0 || (0x9f < bVar2)))) {\n            uVar4 = 0xffffffff;\n            if (((pbVar3[2] & 0xc0) == 0x80) &&\n               (uVar4 = (uint)bVar2 * 0x40 + uVar5 * 0x1000 + -0xe2080 + (uint)pbVar3[2],\n               uVar4 <= param_2)) {\n              *param_1 = pbVar3 + 3;\n            }\n          }\n        }\n      }\n      else if ((bVar1 < 0xf5) && (uVar4 = 0xfffffffe, 3 < uVar6)) {\n        bVar2 = pbVar3[1];\n        uVar4 = 0xffffffff;\n        if ((((bVar2 & 0xc0) == 0x80) && ((bVar1 != 0xf0 || (0x8f < bVar2)))) &&\n           ((bVar1 != 0xf4 || (uVar4 = 0xffffffff, bVar2 < 0x90)))) {\n          uVar4 = 0xffffffff;\n          if ((((pbVar3[2] & 0xc0) == 0x80) && ((pbVar3[3] & 0xc0) == 0x80)) &&\n             (uVar4 = uVar5 * 0x40000 + (uint)bVar2 * 0x1000 + (uint)pbVar3[2] * 0x40 + -0x3c82080 +\n                      (uint)pbVar3[3], uVar4 <= param_2)) {\n            *param_1 = pbVar3 + 4;\n          }\n        }\n      }" if (parenthesized_expression "(bVar1 < 0xe0)" ( (binary_expression "bVar1 < 0xe0" identifier < number_literal) )) (compound_statement "{\n        if (uVar6 == 1) {\n          return 0xfffffffe;\n        }\n        if (((pbVar3[1] & 0xc0) == 0x80) &&\n           (uVar4 = uVar5 * 0x40 + -0x3080 + (uint)pbVar3[1], uVar4 <= param_2)) {\n          *param_1 = pbVar3 + 2;\n        }\n      }" { (if_statement "if (uVar6 == 1) {\n          return 0xfffffffe;\n        }" if (parenthesized_expression "(uVar6 == 1)" ( (binary_expression "uVar6 == 1" identifier == number_literal) )) (compound_statement "{\n          return 0xfffffffe;\n        }" { (return_statement "return 0xfffffffe;" return number_literal ;) })) (if_statement "if (((pbVar3[1] & 0xc0) == 0x80) &&\n           (uVar4 = uVar5 * 0x40 + -0x3080 + (uint)pbVar3[1], uVar4 <= param_2)) {\n          *param_1 = pbVar3 + 2;\n        }" if (parenthesized_expression "(((pbVar3[1] & 0xc0) == 0x80) &&\n           (uVar4 = uVar5 * 0x40 + -0x3080 + (uint)pbVar3[1], uVar4 <= param_2))" ( (binary_expression "((pbVar3[1] & 0xc0) == 0x80) &&\n           (uVar4 = uVar5 * 0x40 + -0x3080 + (uint)pbVar3[1], uVar4 <= param_2)" (parenthesized_expression "((pbVar3[1] & 0xc0) == 0x80)" ( (binary_expression "(pbVar3[1] & 0xc0) == 0x80" (parenthesized_expression "(pbVar3[1] & 0xc0)" ( (binary_expression "pbVar3[1] & 0xc0" (subscript_expression "pbVar3[1]" identifier [ number_literal ]) & number_literal) )) == number_literal) )) && (parenthesized_expression "(uVar4 = uVar5 * 0x40 + -0x3080 + (uint)pbVar3[1], uVar4 <= param_2)" ( (comma_expression "uVar4 = uVar5 * 0x40 + -0x3080 + (uint)pbVar3[1], uVar4 <= param_2" (assignment_expression "uVar4 = uVar5 * 0x40 + -0x3080 + (uint)pbVar3[1]" identifier = (binary_expression "uVar5 * 0x40 + -0x3080 + (uint)pbVar3[1]" (binary_expression "uVar5 * 0x40 + -0x3080" (binary_expression "uVar5 * 0x40" identifier * number_literal) + number_literal) + (cast_expression "(uint)pbVar3[1]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "pbVar3[1]" identifier [ number_literal ])))) , (binary_expression "uVar4 <= param_2" identifier <= identifier)) ))) )) (compound_statement "{\n          *param_1 = pbVar3 + 2;\n        }" { (expression_statement "*param_1 = pbVar3 + 2;" (assignment_expression "*param_1 = pbVar3 + 2" (pointer_expression "*param_1" * identifier) = (binary_expression "pbVar3 + 2" identifier + number_literal)) ;) })) }) (else_clause "else if (bVar1 < 0xf0) {\n        uVar4 = 0xfffffffe;\n        if (2 < uVar6) {\n          bVar2 = pbVar3[1];\n          uVar4 = 0xffffffff;\n          if (((bVar2 & 0xc0) == 0x80) && ((bVar1 != 0xe0 || (0x9f < bVar2)))) {\n            uVar4 = 0xffffffff;\n            if (((pbVar3[2] & 0xc0) == 0x80) &&\n               (uVar4 = (uint)bVar2 * 0x40 + uVar5 * 0x1000 + -0xe2080 + (uint)pbVar3[2],\n               uVar4 <= param_2)) {\n              *param_1 = pbVar3 + 3;\n            }\n          }\n        }\n      }\n      else if ((bVar1 < 0xf5) && (uVar4 = 0xfffffffe, 3 < uVar6)) {\n        bVar2 = pbVar3[1];\n        uVar4 = 0xffffffff;\n        if ((((bVar2 & 0xc0) == 0x80) && ((bVar1 != 0xf0 || (0x8f < bVar2)))) &&\n           ((bVar1 != 0xf4 || (uVar4 = 0xffffffff, bVar2 < 0x90)))) {\n          uVar4 = 0xffffffff;\n          if ((((pbVar3[2] & 0xc0) == 0x80) && ((pbVar3[3] & 0xc0) == 0x80)) &&\n             (uVar4 = uVar5 * 0x40000 + (uint)bVar2 * 0x1000 + (uint)pbVar3[2] * 0x40 + -0x3c82080 +\n                      (uint)pbVar3[3], uVar4 <= param_2)) {\n            *param_1 = pbVar3 + 4;\n          }\n        }\n      }" else (if_statement "if (bVar1 < 0xf0) {\n        uVar4 = 0xfffffffe;\n        if (2 < uVar6) {\n          bVar2 = pbVar3[1];\n          uVar4 = 0xffffffff;\n          if (((bVar2 & 0xc0) == 0x80) && ((bVar1 != 0xe0 || (0x9f < bVar2)))) {\n            uVar4 = 0xffffffff;\n            if (((pbVar3[2] & 0xc0) == 0x80) &&\n               (uVar4 = (uint)bVar2 * 0x40 + uVar5 * 0x1000 + -0xe2080 + (uint)pbVar3[2],\n               uVar4 <= param_2)) {\n              *param_1 = pbVar3 + 3;\n            }\n          }\n        }\n      }\n      else if ((bVar1 < 0xf5) && (uVar4 = 0xfffffffe, 3 < uVar6)) {\n        bVar2 = pbVar3[1];\n        uVar4 = 0xffffffff;\n        if ((((bVar2 & 0xc0) == 0x80) && ((bVar1 != 0xf0 || (0x8f < bVar2)))) &&\n           ((bVar1 != 0xf4 || (uVar4 = 0xffffffff, bVar2 < 0x90)))) {\n          uVar4 = 0xffffffff;\n          if ((((pbVar3[2] & 0xc0) == 0x80) && ((pbVar3[3] & 0xc0) == 0x80)) &&\n             (uVar4 = uVar5 * 0x40000 + (uint)bVar2 * 0x1000 + (uint)pbVar3[2] * 0x40 + -0x3c82080 +\n                      (uint)pbVar3[3], uVar4 <= param_2)) {\n            *param_1 = pbVar3 + 4;\n          }\n        }\n      }" if (parenthesized_expression "(bVar1 < 0xf0)" ( (binary_expression "bVar1 < 0xf0" identifier < number_literal) )) (compound_statement "{\n        uVar4 = 0xfffffffe;\n        if (2 < uVar6) {\n          bVar2 = pbVar3[1];\n          uVar4 = 0xffffffff;\n          if (((bVar2 & 0xc0) == 0x80) && ((bVar1 != 0xe0 || (0x9f < bVar2)))) {\n            uVar4 = 0xffffffff;\n            if (((pbVar3[2] & 0xc0) == 0x80) &&\n               (uVar4 = (uint)bVar2 * 0x40 + uVar5 * 0x1000 + -0xe2080 + (uint)pbVar3[2],\n               uVar4 <= param_2)) {\n              *param_1 = pbVar3 + 3;\n            }\n          }\n        }\n      }" { (expression_statement "uVar4 = 0xfffffffe;" (assignment_expression "uVar4 = 0xfffffffe" identifier = number_literal) ;) (if_statement "if (2 < uVar6) {\n          bVar2 = pbVar3[1];\n          uVar4 = 0xffffffff;\n          if (((bVar2 & 0xc0) == 0x80) && ((bVar1 != 0xe0 || (0x9f < bVar2)))) {\n            uVar4 = 0xffffffff;\n            if (((pbVar3[2] & 0xc0) == 0x80) &&\n               (uVar4 = (uint)bVar2 * 0x40 + uVar5 * 0x1000 + -0xe2080 + (uint)pbVar3[2],\n               uVar4 <= param_2)) {\n              *param_1 = pbVar3 + 3;\n            }\n          }\n        }" if (parenthesized_expression "(2 < uVar6)" ( (binary_expression "2 < uVar6" number_literal < identifier) )) (compound_statement "{\n          bVar2 = pbVar3[1];\n          uVar4 = 0xffffffff;\n          if (((bVar2 & 0xc0) == 0x80) && ((bVar1 != 0xe0 || (0x9f < bVar2)))) {\n            uVar4 = 0xffffffff;\n            if (((pbVar3[2] & 0xc0) == 0x80) &&\n               (uVar4 = (uint)bVar2 * 0x40 + uVar5 * 0x1000 + -0xe2080 + (uint)pbVar3[2],\n               uVar4 <= param_2)) {\n              *param_1 = pbVar3 + 3;\n            }\n          }\n        }" { (expression_statement "bVar2 = pbVar3[1];" (assignment_expression "bVar2 = pbVar3[1]" identifier = (subscript_expression "pbVar3[1]" identifier [ number_literal ])) ;) (expression_statement "uVar4 = 0xffffffff;" (assignment_expression "uVar4 = 0xffffffff" identifier = number_literal) ;) (if_statement "if (((bVar2 & 0xc0) == 0x80) && ((bVar1 != 0xe0 || (0x9f < bVar2)))) {\n            uVar4 = 0xffffffff;\n            if (((pbVar3[2] & 0xc0) == 0x80) &&\n               (uVar4 = (uint)bVar2 * 0x40 + uVar5 * 0x1000 + -0xe2080 + (uint)pbVar3[2],\n               uVar4 <= param_2)) {\n              *param_1 = pbVar3 + 3;\n            }\n          }" if (parenthesized_expression "(((bVar2 & 0xc0) == 0x80) && ((bVar1 != 0xe0 || (0x9f < bVar2))))" ( (binary_expression "((bVar2 & 0xc0) == 0x80) && ((bVar1 != 0xe0 || (0x9f < bVar2)))" (parenthesized_expression "((bVar2 & 0xc0) == 0x80)" ( (binary_expression "(bVar2 & 0xc0) == 0x80" (parenthesized_expression "(bVar2 & 0xc0)" ( (binary_expression "bVar2 & 0xc0" identifier & number_literal) )) == number_literal) )) && (parenthesized_expression "((bVar1 != 0xe0 || (0x9f < bVar2)))" ( (parenthesized_expression "(bVar1 != 0xe0 || (0x9f < bVar2))" ( (binary_expression "bVar1 != 0xe0 || (0x9f < bVar2)" (binary_expression "bVar1 != 0xe0" identifier != number_literal) || (parenthesized_expression "(0x9f < bVar2)" ( (binary_expression "0x9f < bVar2" number_literal < identifier) ))) )) ))) )) (compound_statement "{\n            uVar4 = 0xffffffff;\n            if (((pbVar3[2] & 0xc0) == 0x80) &&\n               (uVar4 = (uint)bVar2 * 0x40 + uVar5 * 0x1000 + -0xe2080 + (uint)pbVar3[2],\n               uVar4 <= param_2)) {\n              *param_1 = pbVar3 + 3;\n            }\n          }" { (expression_statement "uVar4 = 0xffffffff;" (assignment_expression "uVar4 = 0xffffffff" identifier = number_literal) ;) (if_statement "if (((pbVar3[2] & 0xc0) == 0x80) &&\n               (uVar4 = (uint)bVar2 * 0x40 + uVar5 * 0x1000 + -0xe2080 + (uint)pbVar3[2],\n               uVar4 <= param_2)) {\n              *param_1 = pbVar3 + 3;\n            }" if (parenthesized_expression "(((pbVar3[2] & 0xc0) == 0x80) &&\n               (uVar4 = (uint)bVar2 * 0x40 + uVar5 * 0x1000 + -0xe2080 + (uint)pbVar3[2],\n               uVar4 <= param_2))" ( (binary_expression "((pbVar3[2] & 0xc0) == 0x80) &&\n               (uVar4 = (uint)bVar2 * 0x40 + uVar5 * 0x1000 + -0xe2080 + (uint)pbVar3[2],\n               uVar4 <= param_2)" (parenthesized_expression "((pbVar3[2] & 0xc0) == 0x80)" ( (binary_expression "(pbVar3[2] & 0xc0) == 0x80" (parenthesized_expression "(pbVar3[2] & 0xc0)" ( (binary_expression "pbVar3[2] & 0xc0" (subscript_expression "pbVar3[2]" identifier [ number_literal ]) & number_literal) )) == number_literal) )) && (parenthesized_expression "(uVar4 = (uint)bVar2 * 0x40 + uVar5 * 0x1000 + -0xe2080 + (uint)pbVar3[2],\n               uVar4 <= param_2)" ( (comma_expression "uVar4 = (uint)bVar2 * 0x40 + uVar5 * 0x1000 + -0xe2080 + (uint)pbVar3[2],\n               uVar4 <= param_2" (assignment_expression "uVar4 = (uint)bVar2 * 0x40 + uVar5 * 0x1000 + -0xe2080 + (uint)pbVar3[2]" identifier = (binary_expression "(uint)bVar2 * 0x40 + uVar5 * 0x1000 + -0xe2080 + (uint)pbVar3[2]" (binary_expression "(uint)bVar2 * 0x40 + uVar5 * 0x1000 + -0xe2080" (binary_expression "(uint)bVar2 * 0x40 + uVar5 * 0x1000" (binary_expression "(uint)bVar2 * 0x40" (cast_expression "(uint)bVar2" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal) + (binary_expression "uVar5 * 0x1000" identifier * number_literal)) + number_literal) + (cast_expression "(uint)pbVar3[2]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "pbVar3[2]" identifier [ number_literal ])))) , (binary_expression "uVar4 <= param_2" identifier <= identifier)) ))) )) (compound_statement "{\n              *param_1 = pbVar3 + 3;\n            }" { (expression_statement "*param_1 = pbVar3 + 3;" (assignment_expression "*param_1 = pbVar3 + 3" (pointer_expression "*param_1" * identifier) = (binary_expression "pbVar3 + 3" identifier + number_literal)) ;) })) })) })) }) (else_clause "else if ((bVar1 < 0xf5) && (uVar4 = 0xfffffffe, 3 < uVar6)) {\n        bVar2 = pbVar3[1];\n        uVar4 = 0xffffffff;\n        if ((((bVar2 & 0xc0) == 0x80) && ((bVar1 != 0xf0 || (0x8f < bVar2)))) &&\n           ((bVar1 != 0xf4 || (uVar4 = 0xffffffff, bVar2 < 0x90)))) {\n          uVar4 = 0xffffffff;\n          if ((((pbVar3[2] & 0xc0) == 0x80) && ((pbVar3[3] & 0xc0) == 0x80)) &&\n             (uVar4 = uVar5 * 0x40000 + (uint)bVar2 * 0x1000 + (uint)pbVar3[2] * 0x40 + -0x3c82080 +\n                      (uint)pbVar3[3], uVar4 <= param_2)) {\n            *param_1 = pbVar3 + 4;\n          }\n        }\n      }" else (if_statement "if ((bVar1 < 0xf5) && (uVar4 = 0xfffffffe, 3 < uVar6)) {\n        bVar2 = pbVar3[1];\n        uVar4 = 0xffffffff;\n        if ((((bVar2 & 0xc0) == 0x80) && ((bVar1 != 0xf0 || (0x8f < bVar2)))) &&\n           ((bVar1 != 0xf4 || (uVar4 = 0xffffffff, bVar2 < 0x90)))) {\n          uVar4 = 0xffffffff;\n          if ((((pbVar3[2] & 0xc0) == 0x80) && ((pbVar3[3] & 0xc0) == 0x80)) &&\n             (uVar4 = uVar5 * 0x40000 + (uint)bVar2 * 0x1000 + (uint)pbVar3[2] * 0x40 + -0x3c82080 +\n                      (uint)pbVar3[3], uVar4 <= param_2)) {\n            *param_1 = pbVar3 + 4;\n          }\n        }\n      }" if (parenthesized_expression "((bVar1 < 0xf5) && (uVar4 = 0xfffffffe, 3 < uVar6))" ( (binary_expression "(bVar1 < 0xf5) && (uVar4 = 0xfffffffe, 3 < uVar6)" (parenthesized_expression "(bVar1 < 0xf5)" ( (binary_expression "bVar1 < 0xf5" identifier < number_literal) )) && (parenthesized_expression "(uVar4 = 0xfffffffe, 3 < uVar6)" ( (comma_expression "uVar4 = 0xfffffffe, 3 < uVar6" (assignment_expression "uVar4 = 0xfffffffe" identifier = number_literal) , (binary_expression "3 < uVar6" number_literal < identifier)) ))) )) (compound_statement "{\n        bVar2 = pbVar3[1];\n        uVar4 = 0xffffffff;\n        if ((((bVar2 & 0xc0) == 0x80) && ((bVar1 != 0xf0 || (0x8f < bVar2)))) &&\n           ((bVar1 != 0xf4 || (uVar4 = 0xffffffff, bVar2 < 0x90)))) {\n          uVar4 = 0xffffffff;\n          if ((((pbVar3[2] & 0xc0) == 0x80) && ((pbVar3[3] & 0xc0) == 0x80)) &&\n             (uVar4 = uVar5 * 0x40000 + (uint)bVar2 * 0x1000 + (uint)pbVar3[2] * 0x40 + -0x3c82080 +\n                      (uint)pbVar3[3], uVar4 <= param_2)) {\n            *param_1 = pbVar3 + 4;\n          }\n        }\n      }" { (expression_statement "bVar2 = pbVar3[1];" (assignment_expression "bVar2 = pbVar3[1]" identifier = (subscript_expression "pbVar3[1]" identifier [ number_literal ])) ;) (expression_statement "uVar4 = 0xffffffff;" (assignment_expression "uVar4 = 0xffffffff" identifier = number_literal) ;) (if_statement "if ((((bVar2 & 0xc0) == 0x80) && ((bVar1 != 0xf0 || (0x8f < bVar2)))) &&\n           ((bVar1 != 0xf4 || (uVar4 = 0xffffffff, bVar2 < 0x90)))) {\n          uVar4 = 0xffffffff;\n          if ((((pbVar3[2] & 0xc0) == 0x80) && ((pbVar3[3] & 0xc0) == 0x80)) &&\n             (uVar4 = uVar5 * 0x40000 + (uint)bVar2 * 0x1000 + (uint)pbVar3[2] * 0x40 + -0x3c82080 +\n                      (uint)pbVar3[3], uVar4 <= param_2)) {\n            *param_1 = pbVar3 + 4;\n          }\n        }" if (parenthesized_expression "((((bVar2 & 0xc0) == 0x80) && ((bVar1 != 0xf0 || (0x8f < bVar2)))) &&\n           ((bVar1 != 0xf4 || (uVar4 = 0xffffffff, bVar2 < 0x90))))" ( (binary_expression "(((bVar2 & 0xc0) == 0x80) && ((bVar1 != 0xf0 || (0x8f < bVar2)))) &&\n           ((bVar1 != 0xf4 || (uVar4 = 0xffffffff, bVar2 < 0x90)))" (parenthesized_expression "(((bVar2 & 0xc0) == 0x80) && ((bVar1 != 0xf0 || (0x8f < bVar2))))" ( (binary_expression "((bVar2 & 0xc0) == 0x80) && ((bVar1 != 0xf0 || (0x8f < bVar2)))" (parenthesized_expression "((bVar2 & 0xc0) == 0x80)" ( (binary_expression "(bVar2 & 0xc0) == 0x80" (parenthesized_expression "(bVar2 & 0xc0)" ( (binary_expression "bVar2 & 0xc0" identifier & number_literal) )) == number_literal) )) && (parenthesized_expression "((bVar1 != 0xf0 || (0x8f < bVar2)))" ( (parenthesized_expression "(bVar1 != 0xf0 || (0x8f < bVar2))" ( (binary_expression "bVar1 != 0xf0 || (0x8f < bVar2)" (binary_expression "bVar1 != 0xf0" identifier != number_literal) || (parenthesized_expression "(0x8f < bVar2)" ( (binary_expression "0x8f < bVar2" number_literal < identifier) ))) )) ))) )) && (parenthesized_expression "((bVar1 != 0xf4 || (uVar4 = 0xffffffff, bVar2 < 0x90)))" ( (parenthesized_expression "(bVar1 != 0xf4 || (uVar4 = 0xffffffff, bVar2 < 0x90))" ( (binary_expression "bVar1 != 0xf4 || (uVar4 = 0xffffffff, bVar2 < 0x90)" (binary_expression "bVar1 != 0xf4" identifier != number_literal) || (parenthesized_expression "(uVar4 = 0xffffffff, bVar2 < 0x90)" ( (comma_expression "uVar4 = 0xffffffff, bVar2 < 0x90" (assignment_expression "uVar4 = 0xffffffff" identifier = number_literal) , (binary_expression "bVar2 < 0x90" identifier < number_literal)) ))) )) ))) )) (compound_statement "{\n          uVar4 = 0xffffffff;\n          if ((((pbVar3[2] & 0xc0) == 0x80) && ((pbVar3[3] & 0xc0) == 0x80)) &&\n             (uVar4 = uVar5 * 0x40000 + (uint)bVar2 * 0x1000 + (uint)pbVar3[2] * 0x40 + -0x3c82080 +\n                      (uint)pbVar3[3], uVar4 <= param_2)) {\n            *param_1 = pbVar3 + 4;\n          }\n        }" { (expression_statement "uVar4 = 0xffffffff;" (assignment_expression "uVar4 = 0xffffffff" identifier = number_literal) ;) (if_statement "if ((((pbVar3[2] & 0xc0) == 0x80) && ((pbVar3[3] & 0xc0) == 0x80)) &&\n             (uVar4 = uVar5 * 0x40000 + (uint)bVar2 * 0x1000 + (uint)pbVar3[2] * 0x40 + -0x3c82080 +\n                      (uint)pbVar3[3], uVar4 <= param_2)) {\n            *param_1 = pbVar3 + 4;\n          }" if (parenthesized_expression "((((pbVar3[2] & 0xc0) == 0x80) && ((pbVar3[3] & 0xc0) == 0x80)) &&\n             (uVar4 = uVar5 * 0x40000 + (uint)bVar2 * 0x1000 + (uint)pbVar3[2] * 0x40 + -0x3c82080 +\n                      (uint)pbVar3[3], uVar4 <= param_2))" ( (binary_expression "(((pbVar3[2] & 0xc0) == 0x80) && ((pbVar3[3] & 0xc0) == 0x80)) &&\n             (uVar4 = uVar5 * 0x40000 + (uint)bVar2 * 0x1000 + (uint)pbVar3[2] * 0x40 + -0x3c82080 +\n                      (uint)pbVar3[3], uVar4 <= param_2)" (parenthesized_expression "(((pbVar3[2] & 0xc0) == 0x80) && ((pbVar3[3] & 0xc0) == 0x80))" ( (binary_expression "((pbVar3[2] & 0xc0) == 0x80) && ((pbVar3[3] & 0xc0) == 0x80)" (parenthesized_expression "((pbVar3[2] & 0xc0) == 0x80)" ( (binary_expression "(pbVar3[2] & 0xc0) == 0x80" (parenthesized_expression "(pbVar3[2] & 0xc0)" ( (binary_expression "pbVar3[2] & 0xc0" (subscript_expression "pbVar3[2]" identifier [ number_literal ]) & number_literal) )) == number_literal) )) && (parenthesized_expression "((pbVar3[3] & 0xc0) == 0x80)" ( (binary_expression "(pbVar3[3] & 0xc0) == 0x80" (parenthesized_expression "(pbVar3[3] & 0xc0)" ( (binary_expression "pbVar3[3] & 0xc0" (subscript_expression "pbVar3[3]" identifier [ number_literal ]) & number_literal) )) == number_literal) ))) )) && (parenthesized_expression "(uVar4 = uVar5 * 0x40000 + (uint)bVar2 * 0x1000 + (uint)pbVar3[2] * 0x40 + -0x3c82080 +\n                      (uint)pbVar3[3], uVar4 <= param_2)" ( (comma_expression "uVar4 = uVar5 * 0x40000 + (uint)bVar2 * 0x1000 + (uint)pbVar3[2] * 0x40 + -0x3c82080 +\n                      (uint)pbVar3[3], uVar4 <= param_2" (assignment_expression "uVar4 = uVar5 * 0x40000 + (uint)bVar2 * 0x1000 + (uint)pbVar3[2] * 0x40 + -0x3c82080 +\n                      (uint)pbVar3[3]" identifier = (binary_expression "uVar5 * 0x40000 + (uint)bVar2 * 0x1000 + (uint)pbVar3[2] * 0x40 + -0x3c82080 +\n                      (uint)pbVar3[3]" (binary_expression "uVar5 * 0x40000 + (uint)bVar2 * 0x1000 + (uint)pbVar3[2] * 0x40 + -0x3c82080" (binary_expression "uVar5 * 0x40000 + (uint)bVar2 * 0x1000 + (uint)pbVar3[2] * 0x40" (binary_expression "uVar5 * 0x40000 + (uint)bVar2 * 0x1000" (binary_expression "uVar5 * 0x40000" identifier * number_literal) + (binary_expression "(uint)bVar2 * 0x1000" (cast_expression "(uint)bVar2" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + (binary_expression "(uint)pbVar3[2] * 0x40" (cast_expression "(uint)pbVar3[2]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "pbVar3[2]" identifier [ number_literal ])) * number_literal)) + number_literal) + (cast_expression "(uint)pbVar3[3]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "pbVar3[3]" identifier [ number_literal ])))) , (binary_expression "uVar4 <= param_2" identifier <= identifier)) ))) )) (compound_statement "{\n            *param_1 = pbVar3 + 4;\n          }" { (expression_statement "*param_1 = pbVar3 + 4;" (assignment_expression "*param_1 = pbVar3 + 4" (pointer_expression "*param_1" * identifier) = (binary_expression "pbVar3 + 4" identifier + number_literal)) ;) })) })) })))))) })) }) (else_clause "else {\n    *param_1 = pbVar3 + 1;\n    uVar4 = (uint)bVar1;\n  }" else (compound_statement "{\n    *param_1 = pbVar3 + 1;\n    uVar4 = (uint)bVar1;\n  }" { (expression_statement "*param_1 = pbVar3 + 1;" (assignment_expression "*param_1 = pbVar3 + 1" (pointer_expression "*param_1" * identifier) = (binary_expression "pbVar3 + 1" identifier + number_literal)) ;) (expression_statement "uVar4 = (uint)bVar1;" (assignment_expression "uVar4 = (uint)bVar1" identifier = (cast_expression "(uint)bVar1" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) }))) (return_statement "return uVar4;" return identifier ;) })))
(translation_unit (function_definition TYPE (ERROR IDENT) (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ])) - (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ])) == IDENT) )) (compound_statement { (return_statement return LIT ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (return_statement return LIT ;) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) & LIT) )) == LIT) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (binary_expression (binary_expression (binary_expression IDENT * LIT) + LIT) + (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ])))) , (binary_expression IDENT <= IDENT)) ))) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression IDENT + LIT)) ;) })) }) (else_clause else (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) == LIT) )) && (parenthesized_expression ( (parenthesized_expression ( (binary_expression (binary_expression IDENT != LIT) || (parenthesized_expression ( (binary_expression LIT < IDENT) ))) )) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) & LIT) )) == LIT) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (binary_expression (binary_expression (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT) + (binary_expression IDENT * LIT)) + LIT) + (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ])))) , (binary_expression IDENT <= IDENT)) ))) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression IDENT + LIT)) ;) })) })) })) }) (else_clause else (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT < LIT) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = LIT) , (binary_expression LIT < IDENT)) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) == LIT) )) && (parenthesized_expression ( (parenthesized_expression ( (binary_expression (binary_expression IDENT != LIT) || (parenthesized_expression ( (binary_expression LIT < IDENT) ))) )) ))) )) && (parenthesized_expression ( (parenthesized_expression ( (binary_expression (binary_expression IDENT != LIT) || (parenthesized_expression ( (comma_expression (assignment_expression IDENT = LIT) , (binary_expression IDENT < LIT)) ))) )) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) & LIT) )) == LIT) )) && (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) & LIT) )) == LIT) ))) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (binary_expression (binary_expression (binary_expression (binary_expression (binary_expression IDENT * LIT) + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) + (binary_expression (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ])) * LIT)) + LIT) + (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ])))) , (binary_expression IDENT <= IDENT)) ))) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression IDENT + LIT)) ;) })) })) })))))) })) }) (else_clause else (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) }))) (return_statement return IDENT ;) })))
(function_definition "uint __regparm3 FUN_002072d0(undefined4 *param_1,uint param_2)\n\n{\n  byte bVar1;\n  byte bVar2;\n  byte *pbVar3;\n  uint uVar4;\n  uint uVar5;\n  uint uVar6;\n  \n  pbVar3 = (byte *)*param_1;\n  uVar6 = (int)param_1[1] - (int)pbVar3;\n  if ((byte *)param_1[1] == pbVar3) {\n    return 0xfffffffe;\n  }\n  bVar1 = *pbVar3;\n  uVar5 = (uint)bVar1;\n  if ((char)bVar1 < '\0') {\n    uVar4 = 0xffffffff;\n    if (0xc1 < bVar1) {\n      if (bVar1 < 0xe0) {\n        if (uVar6 == 1) {\n          return 0xfffffffe;\n        }\n        if (((pbVar3[1] & 0xc0) == 0x80) &&\n           (uVar4 = uVar5 * 0x40 + -0x3080 + (uint)pbVar3[1], uVar4 <= param_2)) {\n          *param_1 = pbVar3 + 2;\n        }\n      }\n      else if (bVar1 < 0xf0) {\n        uVar4 = 0xfffffffe;\n        if (2 < uVar6) {\n          bVar2 = pbVar3[1];\n          uVar4 = 0xffffffff;\n          if (((bVar2 & 0xc0) == 0x80) && ((bVar1 != 0xe0 || (0x9f < bVar2)))) {\n            uVar4 = 0xffffffff;\n            if (((pbVar3[2] & 0xc0) == 0x80) &&\n               (uVar4 = (uint)bVar2 * 0x40 + uVar5 * 0x1000 + -0xe2080 + (uint)pbVar3[2],\n               uVar4 <= param_2)) {\n              *param_1 = pbVar3 + 3;\n            }\n          }\n        }\n      }\n      else if ((bVar1 < 0xf5) && (uVar4 = 0xfffffffe, 3 < uVar6)) {\n        bVar2 = pbVar3[1];\n        uVar4 = 0xffffffff;\n        if ((((bVar2 & 0xc0) == 0x80) && ((bVar1 != 0xf0 || (0x8f < bVar2)))) &&\n           ((bVar1 != 0xf4 || (uVar4 = 0xffffffff, bVar2 < 0x90)))) {\n          uVar4 = 0xffffffff;\n          if ((((pbVar3[2] & 0xc0) == 0x80) && ((pbVar3[3] & 0xc0) == 0x80)) &&\n             (uVar4 = uVar5 * 0x40000 + (uint)bVar2 * 0x1000 + (uint)pbVar3[2] * 0x40 + -0x3c82080 +\n                      (uint)pbVar3[3], uVar4 <= param_2)) {\n            *param_1 = pbVar3 + 4;\n          }\n        }\n      }\n    }\n  }\n  else {\n    *param_1 = pbVar3 + 1;\n    uVar4 = (uint)bVar1;\n  }\n  return uVar4;\n}" (type_identifier "uint") (ERROR "__regparm3" (identifier "__regparm3")) (function_declarator "FUN_002072d0(undefined4 *param_1,uint param_2)" (identifier "FUN_002072d0") (parameter_list "(undefined4 *param_1,uint param_2)" (( "(") (parameter_declaration "undefined4 *param_1" (type_identifier "undefined4") (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) (, ",") (parameter_declaration "uint param_2" (type_identifier "uint") (identifier "param_2")) () ")"))) (compound_statement "{\n  byte bVar1;\n  byte bVar2;\n  byte *pbVar3;\n  uint uVar4;\n  uint uVar5;\n  uint uVar6;\n  \n  pbVar3 = (byte *)*param_1;\n  uVar6 = (int)param_1[1] - (int)pbVar3;\n  if ((byte *)param_1[1] == pbVar3) {\n    return 0xfffffffe;\n  }\n  bVar1 = *pbVar3;\n  uVar5 = (uint)bVar1;\n  if ((char)bVar1 < '\0') {\n    uVar4 = 0xffffffff;\n    if (0xc1 < bVar1) {\n      if (bVar1 < 0xe0) {\n        if (uVar6 == 1) {\n          return 0xfffffffe;\n        }\n        if (((pbVar3[1] & 0xc0) == 0x80) &&\n           (uVar4 = uVar5 * 0x40 + -0x3080 + (uint)pbVar3[1], uVar4 <= param_2)) {\n          *param_1 = pbVar3 + 2;\n        }\n      }\n      else if (bVar1 < 0xf0) {\n        uVar4 = 0xfffffffe;\n        if (2 < uVar6) {\n          bVar2 = pbVar3[1];\n          uVar4 = 0xffffffff;\n          if (((bVar2 & 0xc0) == 0x80) && ((bVar1 != 0xe0 || (0x9f < bVar2)))) {\n            uVar4 = 0xffffffff;\n            if (((pbVar3[2] & 0xc0) == 0x80) &&\n               (uVar4 = (uint)bVar2 * 0x40 + uVar5 * 0x1000 + -0xe2080 + (uint)pbVar3[2],\n               uVar4 <= param_2)) {\n              *param_1 = pbVar3 + 3;\n            }\n          }\n        }\n      }\n      else if ((bVar1 < 0xf5) && (uVar4 = 0xfffffffe, 3 < uVar6)) {\n        bVar2 = pbVar3[1];\n        uVar4 = 0xffffffff;\n        if ((((bVar2 & 0xc0) == 0x80) && ((bVar1 != 0xf0 || (0x8f < bVar2)))) &&\n           ((bVar1 != 0xf4 || (uVar4 = 0xffffffff, bVar2 < 0x90)))) {\n          uVar4 = 0xffffffff;\n          if ((((pbVar3[2] & 0xc0) == 0x80) && ((pbVar3[3] & 0xc0) == 0x80)) &&\n             (uVar4 = uVar5 * 0x40000 + (uint)bVar2 * 0x1000 + (uint)pbVar3[2] * 0x40 + -0x3c82080 +\n                      (uint)pbVar3[3], uVar4 <= param_2)) {\n            *param_1 = pbVar3 + 4;\n          }\n        }\n      }\n    }\n  }\n  else {\n    *param_1 = pbVar3 + 1;\n    uVar4 = (uint)bVar1;\n  }\n  return uVar4;\n}" ({ "{") (declaration "byte bVar1;" (type_identifier "byte") (identifier "bVar1") (; ";")) (declaration "byte bVar2;" (type_identifier "byte") (identifier "bVar2") (; ";")) (declaration "byte *pbVar3;" (type_identifier "byte") (pointer_declarator "*pbVar3" (* "*") (identifier "pbVar3")) (; ";")) (declaration "uint uVar4;" (type_identifier "uint") (identifier "uVar4") (; ";")) (declaration "uint uVar5;" (type_identifier "uint") (identifier "uVar5") (; ";")) (declaration "uint uVar6;" (type_identifier "uint") (identifier "uVar6") (; ";")) (expression_statement "pbVar3 = (byte *)*param_1;" (assignment_expression "pbVar3 = (byte *)*param_1" (identifier "pbVar3") (= "=") (cast_expression "(byte *)*param_1" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*param_1" (* "*") (identifier "param_1")))) (; ";")) (expression_statement "uVar6 = (int)param_1[1] - (int)pbVar3;" (assignment_expression "uVar6 = (int)param_1[1] - (int)pbVar3" (identifier "uVar6") (= "=") (binary_expression "(int)param_1[1] - (int)pbVar3" (cast_expression "(int)param_1[1]" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]"))) (- "-") (cast_expression "(int)pbVar3" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pbVar3")))) (; ";")) (if_statement "if ((byte *)param_1[1] == pbVar3) {\n    return 0xfffffffe;\n  }" (if "if") (parenthesized_expression "((byte *)param_1[1] == pbVar3)" (( "(") (binary_expression "(byte *)param_1[1] == pbVar3" (cast_expression "(byte *)param_1[1]" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]"))) (== "==") (identifier "pbVar3")) () ")")) (compound_statement "{\n    return 0xfffffffe;\n  }" ({ "{") (return_statement "return 0xfffffffe;" (return "return") (number_literal "0xfffffffe") (; ";")) (} "}"))) (expression_statement "bVar1 = *pbVar3;" (assignment_expression "bVar1 = *pbVar3" (identifier "bVar1") (= "=") (pointer_expression "*pbVar3" (* "*") (identifier "pbVar3"))) (; ";")) (expression_statement "uVar5 = (uint)bVar1;" (assignment_expression "uVar5 = (uint)bVar1" (identifier "uVar5") (= "=") (cast_expression "(uint)bVar1" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar1"))) (; ";")) (if_statement "if ((char)bVar1 < '\0') {\n    uVar4 = 0xffffffff;\n    if (0xc1 < bVar1) {\n      if (bVar1 < 0xe0) {\n        if (uVar6 == 1) {\n          return 0xfffffffe;\n        }\n        if (((pbVar3[1] & 0xc0) == 0x80) &&\n           (uVar4 = uVar5 * 0x40 + -0x3080 + (uint)pbVar3[1], uVar4 <= param_2)) {\n          *param_1 = pbVar3 + 2;\n        }\n      }\n      else if (bVar1 < 0xf0) {\n        uVar4 = 0xfffffffe;\n        if (2 < uVar6) {\n          bVar2 = pbVar3[1];\n          uVar4 = 0xffffffff;\n          if (((bVar2 & 0xc0) == 0x80) && ((bVar1 != 0xe0 || (0x9f < bVar2)))) {\n            uVar4 = 0xffffffff;\n            if (((pbVar3[2] & 0xc0) == 0x80) &&\n               (uVar4 = (uint)bVar2 * 0x40 + uVar5 * 0x1000 + -0xe2080 + (uint)pbVar3[2],\n               uVar4 <= param_2)) {\n              *param_1 = pbVar3 + 3;\n            }\n          }\n        }\n      }\n      else if ((bVar1 < 0xf5) && (uVar4 = 0xfffffffe, 3 < uVar6)) {\n        bVar2 = pbVar3[1];\n        uVar4 = 0xffffffff;\n        if ((((bVar2 & 0xc0) == 0x80) && ((bVar1 != 0xf0 || (0x8f < bVar2)))) &&\n           ((bVar1 != 0xf4 || (uVar4 = 0xffffffff, bVar2 < 0x90)))) {\n          uVar4 = 0xffffffff;\n          if ((((pbVar3[2] & 0xc0) == 0x80) && ((pbVar3[3] & 0xc0) == 0x80)) &&\n             (uVar4 = uVar5 * 0x40000 + (uint)bVar2 * 0x1000 + (uint)pbVar3[2] * 0x40 + -0x3c82080 +\n                      (uint)pbVar3[3], uVar4 <= param_2)) {\n            *param_1 = pbVar3 + 4;\n          }\n        }\n      }\n    }\n  }\n  else {\n    *param_1 = pbVar3 + 1;\n    uVar4 = (uint)bVar1;\n  }" (if "if") (parenthesized_expression "((char)bVar1 < '\0')" (( "(") (binary_expression "(char)bVar1 < '\0'" (cast_expression "(char)bVar1" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (identifier "bVar1")) (< "<") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n    uVar4 = 0xffffffff;\n    if (0xc1 < bVar1) {\n      if (bVar1 < 0xe0) {\n        if (uVar6 == 1) {\n          return 0xfffffffe;\n        }\n        if (((pbVar3[1] & 0xc0) == 0x80) &&\n           (uVar4 = uVar5 * 0x40 + -0x3080 + (uint)pbVar3[1], uVar4 <= param_2)) {\n          *param_1 = pbVar3 + 2;\n        }\n      }\n      else if (bVar1 < 0xf0) {\n        uVar4 = 0xfffffffe;\n        if (2 < uVar6) {\n          bVar2 = pbVar3[1];\n          uVar4 = 0xffffffff;\n          if (((bVar2 & 0xc0) == 0x80) && ((bVar1 != 0xe0 || (0x9f < bVar2)))) {\n            uVar4 = 0xffffffff;\n            if (((pbVar3[2] & 0xc0) == 0x80) &&\n               (uVar4 = (uint)bVar2 * 0x40 + uVar5 * 0x1000 + -0xe2080 + (uint)pbVar3[2],\n               uVar4 <= param_2)) {\n              *param_1 = pbVar3 + 3;\n            }\n          }\n        }\n      }\n      else if ((bVar1 < 0xf5) && (uVar4 = 0xfffffffe, 3 < uVar6)) {\n        bVar2 = pbVar3[1];\n        uVar4 = 0xffffffff;\n        if ((((bVar2 & 0xc0) == 0x80) && ((bVar1 != 0xf0 || (0x8f < bVar2)))) &&\n           ((bVar1 != 0xf4 || (uVar4 = 0xffffffff, bVar2 < 0x90)))) {\n          uVar4 = 0xffffffff;\n          if ((((pbVar3[2] & 0xc0) == 0x80) && ((pbVar3[3] & 0xc0) == 0x80)) &&\n             (uVar4 = uVar5 * 0x40000 + (uint)bVar2 * 0x1000 + (uint)pbVar3[2] * 0x40 + -0x3c82080 +\n                      (uint)pbVar3[3], uVar4 <= param_2)) {\n            *param_1 = pbVar3 + 4;\n          }\n        }\n      }\n    }\n  }" ({ "{") (expression_statement "uVar4 = 0xffffffff;" (assignment_expression "uVar4 = 0xffffffff" (identifier "uVar4") (= "=") (number_literal "0xffffffff")) (; ";")) (if_statement "if (0xc1 < bVar1) {\n      if (bVar1 < 0xe0) {\n        if (uVar6 == 1) {\n          return 0xfffffffe;\n        }\n        if (((pbVar3[1] & 0xc0) == 0x80) &&\n           (uVar4 = uVar5 * 0x40 + -0x3080 + (uint)pbVar3[1], uVar4 <= param_2)) {\n          *param_1 = pbVar3 + 2;\n        }\n      }\n      else if (bVar1 < 0xf0) {\n        uVar4 = 0xfffffffe;\n        if (2 < uVar6) {\n          bVar2 = pbVar3[1];\n          uVar4 = 0xffffffff;\n          if (((bVar2 & 0xc0) == 0x80) && ((bVar1 != 0xe0 || (0x9f < bVar2)))) {\n            uVar4 = 0xffffffff;\n            if (((pbVar3[2] & 0xc0) == 0x80) &&\n               (uVar4 = (uint)bVar2 * 0x40 + uVar5 * 0x1000 + -0xe2080 + (uint)pbVar3[2],\n               uVar4 <= param_2)) {\n              *param_1 = pbVar3 + 3;\n            }\n          }\n        }\n      }\n      else if ((bVar1 < 0xf5) && (uVar4 = 0xfffffffe, 3 < uVar6)) {\n        bVar2 = pbVar3[1];\n        uVar4 = 0xffffffff;\n        if ((((bVar2 & 0xc0) == 0x80) && ((bVar1 != 0xf0 || (0x8f < bVar2)))) &&\n           ((bVar1 != 0xf4 || (uVar4 = 0xffffffff, bVar2 < 0x90)))) {\n          uVar4 = 0xffffffff;\n          if ((((pbVar3[2] & 0xc0) == 0x80) && ((pbVar3[3] & 0xc0) == 0x80)) &&\n             (uVar4 = uVar5 * 0x40000 + (uint)bVar2 * 0x1000 + (uint)pbVar3[2] * 0x40 + -0x3c82080 +\n                      (uint)pbVar3[3], uVar4 <= param_2)) {\n            *param_1 = pbVar3 + 4;\n          }\n        }\n      }\n    }" (if "if") (parenthesized_expression "(0xc1 < bVar1)" (( "(") (binary_expression "0xc1 < bVar1" (number_literal "0xc1") (< "<") (identifier "bVar1")) () ")")) (compound_statement "{\n      if (bVar1 < 0xe0) {\n        if (uVar6 == 1) {\n          return 0xfffffffe;\n        }\n        if (((pbVar3[1] & 0xc0) == 0x80) &&\n           (uVar4 = uVar5 * 0x40 + -0x3080 + (uint)pbVar3[1], uVar4 <= param_2)) {\n          *param_1 = pbVar3 + 2;\n        }\n      }\n      else if (bVar1 < 0xf0) {\n        uVar4 = 0xfffffffe;\n        if (2 < uVar6) {\n          bVar2 = pbVar3[1];\n          uVar4 = 0xffffffff;\n          if (((bVar2 & 0xc0) == 0x80) && ((bVar1 != 0xe0 || (0x9f < bVar2)))) {\n            uVar4 = 0xffffffff;\n            if (((pbVar3[2] & 0xc0) == 0x80) &&\n               (uVar4 = (uint)bVar2 * 0x40 + uVar5 * 0x1000 + -0xe2080 + (uint)pbVar3[2],\n               uVar4 <= param_2)) {\n              *param_1 = pbVar3 + 3;\n            }\n          }\n        }\n      }\n      else if ((bVar1 < 0xf5) && (uVar4 = 0xfffffffe, 3 < uVar6)) {\n        bVar2 = pbVar3[1];\n        uVar4 = 0xffffffff;\n        if ((((bVar2 & 0xc0) == 0x80) && ((bVar1 != 0xf0 || (0x8f < bVar2)))) &&\n           ((bVar1 != 0xf4 || (uVar4 = 0xffffffff, bVar2 < 0x90)))) {\n          uVar4 = 0xffffffff;\n          if ((((pbVar3[2] & 0xc0) == 0x80) && ((pbVar3[3] & 0xc0) == 0x80)) &&\n             (uVar4 = uVar5 * 0x40000 + (uint)bVar2 * 0x1000 + (uint)pbVar3[2] * 0x40 + -0x3c82080 +\n                      (uint)pbVar3[3], uVar4 <= param_2)) {\n            *param_1 = pbVar3 + 4;\n          }\n        }\n      }\n    }" ({ "{") (if_statement "if (bVar1 < 0xe0) {\n        if (uVar6 == 1) {\n          return 0xfffffffe;\n        }\n        if (((pbVar3[1] & 0xc0) == 0x80) &&\n           (uVar4 = uVar5 * 0x40 + -0x3080 + (uint)pbVar3[1], uVar4 <= param_2)) {\n          *param_1 = pbVar3 + 2;\n        }\n      }\n      else if (bVar1 < 0xf0) {\n        uVar4 = 0xfffffffe;\n        if (2 < uVar6) {\n          bVar2 = pbVar3[1];\n          uVar4 = 0xffffffff;\n          if (((bVar2 & 0xc0) == 0x80) && ((bVar1 != 0xe0 || (0x9f < bVar2)))) {\n            uVar4 = 0xffffffff;\n            if (((pbVar3[2] & 0xc0) == 0x80) &&\n               (uVar4 = (uint)bVar2 * 0x40 + uVar5 * 0x1000 + -0xe2080 + (uint)pbVar3[2],\n               uVar4 <= param_2)) {\n              *param_1 = pbVar3 + 3;\n            }\n          }\n        }\n      }\n      else if ((bVar1 < 0xf5) && (uVar4 = 0xfffffffe, 3 < uVar6)) {\n        bVar2 = pbVar3[1];\n        uVar4 = 0xffffffff;\n        if ((((bVar2 & 0xc0) == 0x80) && ((bVar1 != 0xf0 || (0x8f < bVar2)))) &&\n           ((bVar1 != 0xf4 || (uVar4 = 0xffffffff, bVar2 < 0x90)))) {\n          uVar4 = 0xffffffff;\n          if ((((pbVar3[2] & 0xc0) == 0x80) && ((pbVar3[3] & 0xc0) == 0x80)) &&\n             (uVar4 = uVar5 * 0x40000 + (uint)bVar2 * 0x1000 + (uint)pbVar3[2] * 0x40 + -0x3c82080 +\n                      (uint)pbVar3[3], uVar4 <= param_2)) {\n            *param_1 = pbVar3 + 4;\n          }\n        }\n      }" (if "if") (parenthesized_expression "(bVar1 < 0xe0)" (( "(") (binary_expression "bVar1 < 0xe0" (identifier "bVar1") (< "<") (number_literal "0xe0")) () ")")) (compound_statement "{\n        if (uVar6 == 1) {\n          return 0xfffffffe;\n        }\n        if (((pbVar3[1] & 0xc0) == 0x80) &&\n           (uVar4 = uVar5 * 0x40 + -0x3080 + (uint)pbVar3[1], uVar4 <= param_2)) {\n          *param_1 = pbVar3 + 2;\n        }\n      }" ({ "{") (if_statement "if (uVar6 == 1) {\n          return 0xfffffffe;\n        }" (if "if") (parenthesized_expression "(uVar6 == 1)" (( "(") (binary_expression "uVar6 == 1" (identifier "uVar6") (== "==") (number_literal "1")) () ")")) (compound_statement "{\n          return 0xfffffffe;\n        }" ({ "{") (return_statement "return 0xfffffffe;" (return "return") (number_literal "0xfffffffe") (; ";")) (} "}"))) (if_statement "if (((pbVar3[1] & 0xc0) == 0x80) &&\n           (uVar4 = uVar5 * 0x40 + -0x3080 + (uint)pbVar3[1], uVar4 <= param_2)) {\n          *param_1 = pbVar3 + 2;\n        }" (if "if") (parenthesized_expression "(((pbVar3[1] & 0xc0) == 0x80) &&\n           (uVar4 = uVar5 * 0x40 + -0x3080 + (uint)pbVar3[1], uVar4 <= param_2))" (( "(") (binary_expression "((pbVar3[1] & 0xc0) == 0x80) &&\n           (uVar4 = uVar5 * 0x40 + -0x3080 + (uint)pbVar3[1], uVar4 <= param_2)" (parenthesized_expression "((pbVar3[1] & 0xc0) == 0x80)" (( "(") (binary_expression "(pbVar3[1] & 0xc0) == 0x80" (parenthesized_expression "(pbVar3[1] & 0xc0)" (( "(") (binary_expression "pbVar3[1] & 0xc0" (subscript_expression "pbVar3[1]" (identifier "pbVar3") ([ "[") (number_literal "1") (] "]")) (& "&") (number_literal "0xc0")) () ")")) (== "==") (number_literal "0x80")) () ")")) (&& "&&") (parenthesized_expression "(uVar4 = uVar5 * 0x40 + -0x3080 + (uint)pbVar3[1], uVar4 <= param_2)" (( "(") (comma_expression "uVar4 = uVar5 * 0x40 + -0x3080 + (uint)pbVar3[1], uVar4 <= param_2" (assignment_expression "uVar4 = uVar5 * 0x40 + -0x3080 + (uint)pbVar3[1]" (identifier "uVar4") (= "=") (binary_expression "uVar5 * 0x40 + -0x3080 + (uint)pbVar3[1]" (binary_expression "uVar5 * 0x40 + -0x3080" (binary_expression "uVar5 * 0x40" (identifier "uVar5") (* "*") (number_literal "0x40")) (+ "+") (number_literal "-0x3080")) (+ "+") (cast_expression "(uint)pbVar3[1]" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (subscript_expression "pbVar3[1]" (identifier "pbVar3") ([ "[") (number_literal "1") (] "]"))))) (, ",") (binary_expression "uVar4 <= param_2" (identifier "uVar4") (<= "<=") (identifier "param_2"))) () ")"))) () ")")) (compound_statement "{\n          *param_1 = pbVar3 + 2;\n        }" ({ "{") (expression_statement "*param_1 = pbVar3 + 2;" (assignment_expression "*param_1 = pbVar3 + 2" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (= "=") (binary_expression "pbVar3 + 2" (identifier "pbVar3") (+ "+") (number_literal "2"))) (; ";")) (} "}"))) (} "}")) (else_clause "else if (bVar1 < 0xf0) {\n        uVar4 = 0xfffffffe;\n        if (2 < uVar6) {\n          bVar2 = pbVar3[1];\n          uVar4 = 0xffffffff;\n          if (((bVar2 & 0xc0) == 0x80) && ((bVar1 != 0xe0 || (0x9f < bVar2)))) {\n            uVar4 = 0xffffffff;\n            if (((pbVar3[2] & 0xc0) == 0x80) &&\n               (uVar4 = (uint)bVar2 * 0x40 + uVar5 * 0x1000 + -0xe2080 + (uint)pbVar3[2],\n               uVar4 <= param_2)) {\n              *param_1 = pbVar3 + 3;\n            }\n          }\n        }\n      }\n      else if ((bVar1 < 0xf5) && (uVar4 = 0xfffffffe, 3 < uVar6)) {\n        bVar2 = pbVar3[1];\n        uVar4 = 0xffffffff;\n        if ((((bVar2 & 0xc0) == 0x80) && ((bVar1 != 0xf0 || (0x8f < bVar2)))) &&\n           ((bVar1 != 0xf4 || (uVar4 = 0xffffffff, bVar2 < 0x90)))) {\n          uVar4 = 0xffffffff;\n          if ((((pbVar3[2] & 0xc0) == 0x80) && ((pbVar3[3] & 0xc0) == 0x80)) &&\n             (uVar4 = uVar5 * 0x40000 + (uint)bVar2 * 0x1000 + (uint)pbVar3[2] * 0x40 + -0x3c82080 +\n                      (uint)pbVar3[3], uVar4 <= param_2)) {\n            *param_1 = pbVar3 + 4;\n          }\n        }\n      }" (else "else") (if_statement "if (bVar1 < 0xf0) {\n        uVar4 = 0xfffffffe;\n        if (2 < uVar6) {\n          bVar2 = pbVar3[1];\n          uVar4 = 0xffffffff;\n          if (((bVar2 & 0xc0) == 0x80) && ((bVar1 != 0xe0 || (0x9f < bVar2)))) {\n            uVar4 = 0xffffffff;\n            if (((pbVar3[2] & 0xc0) == 0x80) &&\n               (uVar4 = (uint)bVar2 * 0x40 + uVar5 * 0x1000 + -0xe2080 + (uint)pbVar3[2],\n               uVar4 <= param_2)) {\n              *param_1 = pbVar3 + 3;\n            }\n          }\n        }\n      }\n      else if ((bVar1 < 0xf5) && (uVar4 = 0xfffffffe, 3 < uVar6)) {\n        bVar2 = pbVar3[1];\n        uVar4 = 0xffffffff;\n        if ((((bVar2 & 0xc0) == 0x80) && ((bVar1 != 0xf0 || (0x8f < bVar2)))) &&\n           ((bVar1 != 0xf4 || (uVar4 = 0xffffffff, bVar2 < 0x90)))) {\n          uVar4 = 0xffffffff;\n          if ((((pbVar3[2] & 0xc0) == 0x80) && ((pbVar3[3] & 0xc0) == 0x80)) &&\n             (uVar4 = uVar5 * 0x40000 + (uint)bVar2 * 0x1000 + (uint)pbVar3[2] * 0x40 + -0x3c82080 +\n                      (uint)pbVar3[3], uVar4 <= param_2)) {\n            *param_1 = pbVar3 + 4;\n          }\n        }\n      }" (if "if") (parenthesized_expression "(bVar1 < 0xf0)" (( "(") (binary_expression "bVar1 < 0xf0" (identifier "bVar1") (< "<") (number_literal "0xf0")) () ")")) (compound_statement "{\n        uVar4 = 0xfffffffe;\n        if (2 < uVar6) {\n          bVar2 = pbVar3[1];\n          uVar4 = 0xffffffff;\n          if (((bVar2 & 0xc0) == 0x80) && ((bVar1 != 0xe0 || (0x9f < bVar2)))) {\n            uVar4 = 0xffffffff;\n            if (((pbVar3[2] & 0xc0) == 0x80) &&\n               (uVar4 = (uint)bVar2 * 0x40 + uVar5 * 0x1000 + -0xe2080 + (uint)pbVar3[2],\n               uVar4 <= param_2)) {\n              *param_1 = pbVar3 + 3;\n            }\n          }\n        }\n      }" ({ "{") (expression_statement "uVar4 = 0xfffffffe;" (assignment_expression "uVar4 = 0xfffffffe" (identifier "uVar4") (= "=") (number_literal "0xfffffffe")) (; ";")) (if_statement "if (2 < uVar6) {\n          bVar2 = pbVar3[1];\n          uVar4 = 0xffffffff;\n          if (((bVar2 & 0xc0) == 0x80) && ((bVar1 != 0xe0 || (0x9f < bVar2)))) {\n            uVar4 = 0xffffffff;\n            if (((pbVar3[2] & 0xc0) == 0x80) &&\n               (uVar4 = (uint)bVar2 * 0x40 + uVar5 * 0x1000 + -0xe2080 + (uint)pbVar3[2],\n               uVar4 <= param_2)) {\n              *param_1 = pbVar3 + 3;\n            }\n          }\n        }" (if "if") (parenthesized_expression "(2 < uVar6)" (( "(") (binary_expression "2 < uVar6" (number_literal "2") (< "<") (identifier "uVar6")) () ")")) (compound_statement "{\n          bVar2 = pbVar3[1];\n          uVar4 = 0xffffffff;\n          if (((bVar2 & 0xc0) == 0x80) && ((bVar1 != 0xe0 || (0x9f < bVar2)))) {\n            uVar4 = 0xffffffff;\n            if (((pbVar3[2] & 0xc0) == 0x80) &&\n               (uVar4 = (uint)bVar2 * 0x40 + uVar5 * 0x1000 + -0xe2080 + (uint)pbVar3[2],\n               uVar4 <= param_2)) {\n              *param_1 = pbVar3 + 3;\n            }\n          }\n        }" ({ "{") (expression_statement "bVar2 = pbVar3[1];" (assignment_expression "bVar2 = pbVar3[1]" (identifier "bVar2") (= "=") (subscript_expression "pbVar3[1]" (identifier "pbVar3") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "uVar4 = 0xffffffff;" (assignment_expression "uVar4 = 0xffffffff" (identifier "uVar4") (= "=") (number_literal "0xffffffff")) (; ";")) (if_statement "if (((bVar2 & 0xc0) == 0x80) && ((bVar1 != 0xe0 || (0x9f < bVar2)))) {\n            uVar4 = 0xffffffff;\n            if (((pbVar3[2] & 0xc0) == 0x80) &&\n               (uVar4 = (uint)bVar2 * 0x40 + uVar5 * 0x1000 + -0xe2080 + (uint)pbVar3[2],\n               uVar4 <= param_2)) {\n              *param_1 = pbVar3 + 3;\n            }\n          }" (if "if") (parenthesized_expression "(((bVar2 & 0xc0) == 0x80) && ((bVar1 != 0xe0 || (0x9f < bVar2))))" (( "(") (binary_expression "((bVar2 & 0xc0) == 0x80) && ((bVar1 != 0xe0 || (0x9f < bVar2)))" (parenthesized_expression "((bVar2 & 0xc0) == 0x80)" (( "(") (binary_expression "(bVar2 & 0xc0) == 0x80" (parenthesized_expression "(bVar2 & 0xc0)" (( "(") (binary_expression "bVar2 & 0xc0" (identifier "bVar2") (& "&") (number_literal "0xc0")) () ")")) (== "==") (number_literal "0x80")) () ")")) (&& "&&") (parenthesized_expression "((bVar1 != 0xe0 || (0x9f < bVar2)))" (( "(") (parenthesized_expression "(bVar1 != 0xe0 || (0x9f < bVar2))" (( "(") (binary_expression "bVar1 != 0xe0 || (0x9f < bVar2)" (binary_expression "bVar1 != 0xe0" (identifier "bVar1") (!= "!=") (number_literal "0xe0")) (|| "||") (parenthesized_expression "(0x9f < bVar2)" (( "(") (binary_expression "0x9f < bVar2" (number_literal "0x9f") (< "<") (identifier "bVar2")) () ")"))) () ")")) () ")"))) () ")")) (compound_statement "{\n            uVar4 = 0xffffffff;\n            if (((pbVar3[2] & 0xc0) == 0x80) &&\n               (uVar4 = (uint)bVar2 * 0x40 + uVar5 * 0x1000 + -0xe2080 + (uint)pbVar3[2],\n               uVar4 <= param_2)) {\n              *param_1 = pbVar3 + 3;\n            }\n          }" ({ "{") (expression_statement "uVar4 = 0xffffffff;" (assignment_expression "uVar4 = 0xffffffff" (identifier "uVar4") (= "=") (number_literal "0xffffffff")) (; ";")) (if_statement "if (((pbVar3[2] & 0xc0) == 0x80) &&\n               (uVar4 = (uint)bVar2 * 0x40 + uVar5 * 0x1000 + -0xe2080 + (uint)pbVar3[2],\n               uVar4 <= param_2)) {\n              *param_1 = pbVar3 + 3;\n            }" (if "if") (parenthesized_expression "(((pbVar3[2] & 0xc0) == 0x80) &&\n               (uVar4 = (uint)bVar2 * 0x40 + uVar5 * 0x1000 + -0xe2080 + (uint)pbVar3[2],\n               uVar4 <= param_2))" (( "(") (binary_expression "((pbVar3[2] & 0xc0) == 0x80) &&\n               (uVar4 = (uint)bVar2 * 0x40 + uVar5 * 0x1000 + -0xe2080 + (uint)pbVar3[2],\n               uVar4 <= param_2)" (parenthesized_expression "((pbVar3[2] & 0xc0) == 0x80)" (( "(") (binary_expression "(pbVar3[2] & 0xc0) == 0x80" (parenthesized_expression "(pbVar3[2] & 0xc0)" (( "(") (binary_expression "pbVar3[2] & 0xc0" (subscript_expression "pbVar3[2]" (identifier "pbVar3") ([ "[") (number_literal "2") (] "]")) (& "&") (number_literal "0xc0")) () ")")) (== "==") (number_literal "0x80")) () ")")) (&& "&&") (parenthesized_expression "(uVar4 = (uint)bVar2 * 0x40 + uVar5 * 0x1000 + -0xe2080 + (uint)pbVar3[2],\n               uVar4 <= param_2)" (( "(") (comma_expression "uVar4 = (uint)bVar2 * 0x40 + uVar5 * 0x1000 + -0xe2080 + (uint)pbVar3[2],\n               uVar4 <= param_2" (assignment_expression "uVar4 = (uint)bVar2 * 0x40 + uVar5 * 0x1000 + -0xe2080 + (uint)pbVar3[2]" (identifier "uVar4") (= "=") (binary_expression "(uint)bVar2 * 0x40 + uVar5 * 0x1000 + -0xe2080 + (uint)pbVar3[2]" (binary_expression "(uint)bVar2 * 0x40 + uVar5 * 0x1000 + -0xe2080" (binary_expression "(uint)bVar2 * 0x40 + uVar5 * 0x1000" (binary_expression "(uint)bVar2 * 0x40" (cast_expression "(uint)bVar2" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar2")) (* "*") (number_literal "0x40")) (+ "+") (binary_expression "uVar5 * 0x1000" (identifier "uVar5") (* "*") (number_literal "0x1000"))) (+ "+") (number_literal "-0xe2080")) (+ "+") (cast_expression "(uint)pbVar3[2]" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (subscript_expression "pbVar3[2]" (identifier "pbVar3") ([ "[") (number_literal "2") (] "]"))))) (, ",") (binary_expression "uVar4 <= param_2" (identifier "uVar4") (<= "<=") (identifier "param_2"))) () ")"))) () ")")) (compound_statement "{\n              *param_1 = pbVar3 + 3;\n            }" ({ "{") (expression_statement "*param_1 = pbVar3 + 3;" (assignment_expression "*param_1 = pbVar3 + 3" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (= "=") (binary_expression "pbVar3 + 3" (identifier "pbVar3") (+ "+") (number_literal "3"))) (; ";")) (} "}"))) (} "}"))) (} "}"))) (} "}")) (else_clause "else if ((bVar1 < 0xf5) && (uVar4 = 0xfffffffe, 3 < uVar6)) {\n        bVar2 = pbVar3[1];\n        uVar4 = 0xffffffff;\n        if ((((bVar2 & 0xc0) == 0x80) && ((bVar1 != 0xf0 || (0x8f < bVar2)))) &&\n           ((bVar1 != 0xf4 || (uVar4 = 0xffffffff, bVar2 < 0x90)))) {\n          uVar4 = 0xffffffff;\n          if ((((pbVar3[2] & 0xc0) == 0x80) && ((pbVar3[3] & 0xc0) == 0x80)) &&\n             (uVar4 = uVar5 * 0x40000 + (uint)bVar2 * 0x1000 + (uint)pbVar3[2] * 0x40 + -0x3c82080 +\n                      (uint)pbVar3[3], uVar4 <= param_2)) {\n            *param_1 = pbVar3 + 4;\n          }\n        }\n      }" (else "else") (if_statement "if ((bVar1 < 0xf5) && (uVar4 = 0xfffffffe, 3 < uVar6)) {\n        bVar2 = pbVar3[1];\n        uVar4 = 0xffffffff;\n        if ((((bVar2 & 0xc0) == 0x80) && ((bVar1 != 0xf0 || (0x8f < bVar2)))) &&\n           ((bVar1 != 0xf4 || (uVar4 = 0xffffffff, bVar2 < 0x90)))) {\n          uVar4 = 0xffffffff;\n          if ((((pbVar3[2] & 0xc0) == 0x80) && ((pbVar3[3] & 0xc0) == 0x80)) &&\n             (uVar4 = uVar5 * 0x40000 + (uint)bVar2 * 0x1000 + (uint)pbVar3[2] * 0x40 + -0x3c82080 +\n                      (uint)pbVar3[3], uVar4 <= param_2)) {\n            *param_1 = pbVar3 + 4;\n          }\n        }\n      }" (if "if") (parenthesized_expression "((bVar1 < 0xf5) && (uVar4 = 0xfffffffe, 3 < uVar6))" (( "(") (binary_expression "(bVar1 < 0xf5) && (uVar4 = 0xfffffffe, 3 < uVar6)" (parenthesized_expression "(bVar1 < 0xf5)" (( "(") (binary_expression "bVar1 < 0xf5" (identifier "bVar1") (< "<") (number_literal "0xf5")) () ")")) (&& "&&") (parenthesized_expression "(uVar4 = 0xfffffffe, 3 < uVar6)" (( "(") (comma_expression "uVar4 = 0xfffffffe, 3 < uVar6" (assignment_expression "uVar4 = 0xfffffffe" (identifier "uVar4") (= "=") (number_literal "0xfffffffe")) (, ",") (binary_expression "3 < uVar6" (number_literal "3") (< "<") (identifier "uVar6"))) () ")"))) () ")")) (compound_statement "{\n        bVar2 = pbVar3[1];\n        uVar4 = 0xffffffff;\n        if ((((bVar2 & 0xc0) == 0x80) && ((bVar1 != 0xf0 || (0x8f < bVar2)))) &&\n           ((bVar1 != 0xf4 || (uVar4 = 0xffffffff, bVar2 < 0x90)))) {\n          uVar4 = 0xffffffff;\n          if ((((pbVar3[2] & 0xc0) == 0x80) && ((pbVar3[3] & 0xc0) == 0x80)) &&\n             (uVar4 = uVar5 * 0x40000 + (uint)bVar2 * 0x1000 + (uint)pbVar3[2] * 0x40 + -0x3c82080 +\n                      (uint)pbVar3[3], uVar4 <= param_2)) {\n            *param_1 = pbVar3 + 4;\n          }\n        }\n      }" ({ "{") (expression_statement "bVar2 = pbVar3[1];" (assignment_expression "bVar2 = pbVar3[1]" (identifier "bVar2") (= "=") (subscript_expression "pbVar3[1]" (identifier "pbVar3") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "uVar4 = 0xffffffff;" (assignment_expression "uVar4 = 0xffffffff" (identifier "uVar4") (= "=") (number_literal "0xffffffff")) (; ";")) (if_statement "if ((((bVar2 & 0xc0) == 0x80) && ((bVar1 != 0xf0 || (0x8f < bVar2)))) &&\n           ((bVar1 != 0xf4 || (uVar4 = 0xffffffff, bVar2 < 0x90)))) {\n          uVar4 = 0xffffffff;\n          if ((((pbVar3[2] & 0xc0) == 0x80) && ((pbVar3[3] & 0xc0) == 0x80)) &&\n             (uVar4 = uVar5 * 0x40000 + (uint)bVar2 * 0x1000 + (uint)pbVar3[2] * 0x40 + -0x3c82080 +\n                      (uint)pbVar3[3], uVar4 <= param_2)) {\n            *param_1 = pbVar3 + 4;\n          }\n        }" (if "if") (parenthesized_expression "((((bVar2 & 0xc0) == 0x80) && ((bVar1 != 0xf0 || (0x8f < bVar2)))) &&\n           ((bVar1 != 0xf4 || (uVar4 = 0xffffffff, bVar2 < 0x90))))" (( "(") (binary_expression "(((bVar2 & 0xc0) == 0x80) && ((bVar1 != 0xf0 || (0x8f < bVar2)))) &&\n           ((bVar1 != 0xf4 || (uVar4 = 0xffffffff, bVar2 < 0x90)))" (parenthesized_expression "(((bVar2 & 0xc0) == 0x80) && ((bVar1 != 0xf0 || (0x8f < bVar2))))" (( "(") (binary_expression "((bVar2 & 0xc0) == 0x80) && ((bVar1 != 0xf0 || (0x8f < bVar2)))" (parenthesized_expression "((bVar2 & 0xc0) == 0x80)" (( "(") (binary_expression "(bVar2 & 0xc0) == 0x80" (parenthesized_expression "(bVar2 & 0xc0)" (( "(") (binary_expression "bVar2 & 0xc0" (identifier "bVar2") (& "&") (number_literal "0xc0")) () ")")) (== "==") (number_literal "0x80")) () ")")) (&& "&&") (parenthesized_expression "((bVar1 != 0xf0 || (0x8f < bVar2)))" (( "(") (parenthesized_expression "(bVar1 != 0xf0 || (0x8f < bVar2))" (( "(") (binary_expression "bVar1 != 0xf0 || (0x8f < bVar2)" (binary_expression "bVar1 != 0xf0" (identifier "bVar1") (!= "!=") (number_literal "0xf0")) (|| "||") (parenthesized_expression "(0x8f < bVar2)" (( "(") (binary_expression "0x8f < bVar2" (number_literal "0x8f") (< "<") (identifier "bVar2")) () ")"))) () ")")) () ")"))) () ")")) (&& "&&") (parenthesized_expression "((bVar1 != 0xf4 || (uVar4 = 0xffffffff, bVar2 < 0x90)))" (( "(") (parenthesized_expression "(bVar1 != 0xf4 || (uVar4 = 0xffffffff, bVar2 < 0x90))" (( "(") (binary_expression "bVar1 != 0xf4 || (uVar4 = 0xffffffff, bVar2 < 0x90)" (binary_expression "bVar1 != 0xf4" (identifier "bVar1") (!= "!=") (number_literal "0xf4")) (|| "||") (parenthesized_expression "(uVar4 = 0xffffffff, bVar2 < 0x90)" (( "(") (comma_expression "uVar4 = 0xffffffff, bVar2 < 0x90" (assignment_expression "uVar4 = 0xffffffff" (identifier "uVar4") (= "=") (number_literal "0xffffffff")) (, ",") (binary_expression "bVar2 < 0x90" (identifier "bVar2") (< "<") (number_literal "0x90"))) () ")"))) () ")")) () ")"))) () ")")) (compound_statement "{\n          uVar4 = 0xffffffff;\n          if ((((pbVar3[2] & 0xc0) == 0x80) && ((pbVar3[3] & 0xc0) == 0x80)) &&\n             (uVar4 = uVar5 * 0x40000 + (uint)bVar2 * 0x1000 + (uint)pbVar3[2] * 0x40 + -0x3c82080 +\n                      (uint)pbVar3[3], uVar4 <= param_2)) {\n            *param_1 = pbVar3 + 4;\n          }\n        }" ({ "{") (expression_statement "uVar4 = 0xffffffff;" (assignment_expression "uVar4 = 0xffffffff" (identifier "uVar4") (= "=") (number_literal "0xffffffff")) (; ";")) (if_statement "if ((((pbVar3[2] & 0xc0) == 0x80) && ((pbVar3[3] & 0xc0) == 0x80)) &&\n             (uVar4 = uVar5 * 0x40000 + (uint)bVar2 * 0x1000 + (uint)pbVar3[2] * 0x40 + -0x3c82080 +\n                      (uint)pbVar3[3], uVar4 <= param_2)) {\n            *param_1 = pbVar3 + 4;\n          }" (if "if") (parenthesized_expression "((((pbVar3[2] & 0xc0) == 0x80) && ((pbVar3[3] & 0xc0) == 0x80)) &&\n             (uVar4 = uVar5 * 0x40000 + (uint)bVar2 * 0x1000 + (uint)pbVar3[2] * 0x40 + -0x3c82080 +\n                      (uint)pbVar3[3], uVar4 <= param_2))" (( "(") (binary_expression "(((pbVar3[2] & 0xc0) == 0x80) && ((pbVar3[3] & 0xc0) == 0x80)) &&\n             (uVar4 = uVar5 * 0x40000 + (uint)bVar2 * 0x1000 + (uint)pbVar3[2] * 0x40 + -0x3c82080 +\n                      (uint)pbVar3[3], uVar4 <= param_2)" (parenthesized_expression "(((pbVar3[2] & 0xc0) == 0x80) && ((pbVar3[3] & 0xc0) == 0x80))" (( "(") (binary_expression "((pbVar3[2] & 0xc0) == 0x80) && ((pbVar3[3] & 0xc0) == 0x80)" (parenthesized_expression "((pbVar3[2] & 0xc0) == 0x80)" (( "(") (binary_expression "(pbVar3[2] & 0xc0) == 0x80" (parenthesized_expression "(pbVar3[2] & 0xc0)" (( "(") (binary_expression "pbVar3[2] & 0xc0" (subscript_expression "pbVar3[2]" (identifier "pbVar3") ([ "[") (number_literal "2") (] "]")) (& "&") (number_literal "0xc0")) () ")")) (== "==") (number_literal "0x80")) () ")")) (&& "&&") (parenthesized_expression "((pbVar3[3] & 0xc0) == 0x80)" (( "(") (binary_expression "(pbVar3[3] & 0xc0) == 0x80" (parenthesized_expression "(pbVar3[3] & 0xc0)" (( "(") (binary_expression "pbVar3[3] & 0xc0" (subscript_expression "pbVar3[3]" (identifier "pbVar3") ([ "[") (number_literal "3") (] "]")) (& "&") (number_literal "0xc0")) () ")")) (== "==") (number_literal "0x80")) () ")"))) () ")")) (&& "&&") (parenthesized_expression "(uVar4 = uVar5 * 0x40000 + (uint)bVar2 * 0x1000 + (uint)pbVar3[2] * 0x40 + -0x3c82080 +\n                      (uint)pbVar3[3], uVar4 <= param_2)" (( "(") (comma_expression "uVar4 = uVar5 * 0x40000 + (uint)bVar2 * 0x1000 + (uint)pbVar3[2] * 0x40 + -0x3c82080 +\n                      (uint)pbVar3[3], uVar4 <= param_2" (assignment_expression "uVar4 = uVar5 * 0x40000 + (uint)bVar2 * 0x1000 + (uint)pbVar3[2] * 0x40 + -0x3c82080 +\n                      (uint)pbVar3[3]" (identifier "uVar4") (= "=") (binary_expression "uVar5 * 0x40000 + (uint)bVar2 * 0x1000 + (uint)pbVar3[2] * 0x40 + -0x3c82080 +\n                      (uint)pbVar3[3]" (binary_expression "uVar5 * 0x40000 + (uint)bVar2 * 0x1000 + (uint)pbVar3[2] * 0x40 + -0x3c82080" (binary_expression "uVar5 * 0x40000 + (uint)bVar2 * 0x1000 + (uint)pbVar3[2] * 0x40" (binary_expression "uVar5 * 0x40000 + (uint)bVar2 * 0x1000" (binary_expression "uVar5 * 0x40000" (identifier "uVar5") (* "*") (number_literal "0x40000")) (+ "+") (binary_expression "(uint)bVar2 * 0x1000" (cast_expression "(uint)bVar2" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar2")) (* "*") (number_literal "0x1000"))) (+ "+") (binary_expression "(uint)pbVar3[2] * 0x40" (cast_expression "(uint)pbVar3[2]" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (subscript_expression "pbVar3[2]" (identifier "pbVar3") ([ "[") (number_literal "2") (] "]"))) (* "*") (number_literal "0x40"))) (+ "+") (number_literal "-0x3c82080")) (+ "+") (cast_expression "(uint)pbVar3[3]" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (subscript_expression "pbVar3[3]" (identifier "pbVar3") ([ "[") (number_literal "3") (] "]"))))) (, ",") (binary_expression "uVar4 <= param_2" (identifier "uVar4") (<= "<=") (identifier "param_2"))) () ")"))) () ")")) (compound_statement "{\n            *param_1 = pbVar3 + 4;\n          }" ({ "{") (expression_statement "*param_1 = pbVar3 + 4;" (assignment_expression "*param_1 = pbVar3 + 4" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (= "=") (binary_expression "pbVar3 + 4" (identifier "pbVar3") (+ "+") (number_literal "4"))) (; ";")) (} "}"))) (} "}"))) (} "}"))))))) (} "}"))) (} "}")) (else_clause "else {\n    *param_1 = pbVar3 + 1;\n    uVar4 = (uint)bVar1;\n  }" (else "else") (compound_statement "{\n    *param_1 = pbVar3 + 1;\n    uVar4 = (uint)bVar1;\n  }" ({ "{") (expression_statement "*param_1 = pbVar3 + 1;" (assignment_expression "*param_1 = pbVar3 + 1" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (= "=") (binary_expression "pbVar3 + 1" (identifier "pbVar3") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "uVar4 = (uint)bVar1;" (assignment_expression "uVar4 = (uint)bVar1" (identifier "uVar4") (= "=") (cast_expression "(uint)bVar1" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar1"))) (; ";")) (} "}")))) (return_statement "return uVar4;" (return "return") (identifier "uVar4") (; ";")) (} "}")))

/* std::(anonymous namespace)::read_utf8_code_point(std::(anonymous namespace)::range<char const,
   true>&, unsigned long) */

type_1 __regparm3 std::(anonymous_namespace)::var_1(var_2 *var_3,ulong var_9)

{
  type_2 var_5;
  type_2 var_10;
  type_2 *var_4;
  type_1 var_8;
  type_1 var_7;
  type_1 var_6;
  
  var_4 = *(type_2 **)var_3;
  var_6 = (int)*(type_2 **)(var_3 + 4) - (int)var_4;
  if (*(type_2 **)(var_3 + 4) == var_4) {
    return 0xfffffffe;
  }
  var_5 = *var_4;
  var_7 = (type_1)var_5;
  if ((char)var_5 < '\0') {
    var_8 = 0xffffffff;
    if (0xc1 < var_5) {
      if (var_5 < 0xe0) {
        if (var_6 == 1) {
          return 0xfffffffe;
        }
        if (((var_4[1] & 0xc0) == 0x80) &&
           (var_8 = var_7 * 0x40 + -0x3080 + (type_1)var_4[1], var_8 <= var_9)) {
          *(type_2 **)var_3 = var_4 + 2;
        }
      }
      else if (var_5 < 0xf0) {
        var_8 = 0xfffffffe;
        if (2 < var_6) {
          var_10 = var_4[1];
          var_8 = 0xffffffff;
          if (((var_10 & 0xc0) == 0x80) && ((var_5 != 0xe0 || (0x9f < var_10)))) {
            var_8 = 0xffffffff;
            if (((var_4[2] & 0xc0) == 0x80) &&
               (var_8 = (type_1)var_10 * 0x40 + var_7 * 0x1000 + -0xe2080 + (type_1)var_4[2],
               var_8 <= var_9)) {
              *(type_2 **)var_3 = var_4 + 3;
            }
          }
        }
      }
      else if ((var_5 < 0xf5) && (var_8 = 0xfffffffe, 3 < var_6)) {
        var_10 = var_4[1];
        var_8 = 0xffffffff;
        if ((((var_10 & 0xc0) == 0x80) && ((var_5 != 0xf0 || (0x8f < var_10)))) &&
           ((var_5 != 0xf4 || (var_8 = 0xffffffff, var_10 < 0x90)))) {
          var_8 = 0xffffffff;
          if ((((var_4[2] & 0xc0) == 0x80) && ((var_4[3] & 0xc0) == 0x80)) &&
             (var_8 = var_7 * 0x40000 + (type_1)var_10 * 0x1000 + (type_1)var_4[2] * 0x40 + -0x3c82080 +
                      (type_1)var_4[3], var_8 <= var_9)) {
            *(type_2 **)var_3 = var_4 + 4;
          }
        }
      }
    }
  }
  else {
    *(type_2 **)var_3 = var_4 + 1;
    var_8 = (type_1)var_5;
  }
  return var_8;
}


(translation_unit (function_definition type: (type_identifier) (ERROR (identifier)) declarator: (function_declarator declarator: (identifier) parameters: (parameter_list (parameter_declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (parameter_declaration type: (type_identifier) declarator: (identifier)))) body: (compound_statement (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (pointer_expression argument: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (subscript_expression argument: (identifier) index: (number_literal))) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (subscript_expression argument: (identifier) index: (number_literal))) right: (identifier))) consequence: (compound_statement (return_statement (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (char_literal (escape_sequence)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (if_statement condition: (parenthesized_expression (binary_expression left: (number_literal) right: (identifier))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (return_statement (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) right: (number_literal))) right: (parenthesized_expression (comma_expression left: (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (number_literal)) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (subscript_expression argument: (identifier) index: (number_literal))))) right: (binary_expression left: (identifier) right: (identifier)))))) consequence: (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (binary_expression left: (identifier) right: (number_literal))))))) alternative: (else_clause (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (if_statement condition: (parenthesized_expression (binary_expression left: (number_literal) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal))) right: (parenthesized_expression (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (parenthesized_expression (binary_expression left: (number_literal) right: (identifier)))))))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) right: (number_literal))) right: (parenthesized_expression (comma_expression left: (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (binary_expression left: (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (number_literal)) right: (binary_expression left: (identifier) right: (number_literal))) right: (number_literal)) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (subscript_expression argument: (identifier) index: (number_literal))))) right: (binary_expression left: (identifier) right: (identifier)))))) consequence: (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (binary_expression left: (identifier) right: (number_literal))))))))))) alternative: (else_clause (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (parenthesized_expression (comma_expression left: (assignment_expression left: (identifier) right: (number_literal)) right: (binary_expression left: (number_literal) right: (identifier)))))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal))) right: (parenthesized_expression (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (parenthesized_expression (binary_expression left: (number_literal) right: (identifier)))))))) right: (parenthesized_expression (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (parenthesized_expression (comma_expression left: (assignment_expression left: (identifier) right: (number_literal)) right: (binary_expression left: (identifier) right: (number_literal))))))))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) right: (number_literal))) right: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) right: (number_literal))))) right: (parenthesized_expression (comma_expression left: (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (binary_expression left: (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (number_literal))) right: (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (subscript_expression argument: (identifier) index: (number_literal))) right: (number_literal))) right: (number_literal)) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (subscript_expression argument: (identifier) index: (number_literal))))) right: (binary_expression left: (identifier) right: (identifier)))))) consequence: (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (binary_expression left: (identifier) right: (number_literal))))))))))))))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier))))))) (return_statement (identifier)))))

uint __regparm3 MASKED(undefined4 *param_1,uint param_2)

{
  byte bVar1;
  byte bVar2;
  byte *pbVar3;
  uint uVar4;
  uint uVar5;
  uint uVar6;
  
  pbVar3 = (byte *)*param_1;
  uVar6 = (int)param_1[1] - (int)pbVar3;
  if ((byte *)param_1[1] == pbVar3) {
    return 0xfffffffe;
  }
  bVar1 = *pbVar3;
  uVar5 = (uint)bVar1;
  if ((char)bVar1 < '\0') {
    uVar4 = 0xffffffff;
    if (0xc1 < bVar1) {
      if (bVar1 < 0xe0) {
        if (uVar6 == 1) {
          return 0xfffffffe;
        }
        if (((pbVar3[1] & 0xc0) == 0x80) &&
           (uVar4 = uVar5 * 0x40 + -0x3080 + (uint)pbVar3[1], uVar4 <= param_2)) {
          *param_1 = pbVar3 + 2;
        }
      }
      else if (bVar1 < 0xf0) {
        uVar4 = 0xfffffffe;
        if (2 < uVar6) {
          bVar2 = pbVar3[1];
          uVar4 = 0xffffffff;
          if (((bVar2 & 0xc0) == 0x80) && ((bVar1 != 0xe0 || (0x9f < bVar2)))) {
            uVar4 = 0xffffffff;
            if (((pbVar3[2] & 0xc0) == 0x80) &&
               (uVar4 = (uint)bVar2 * 0x40 + uVar5 * 0x1000 + -0xe2080 + (uint)pbVar3[2],
               uVar4 <= param_2)) {
              *param_1 = pbVar3 + 3;
            }
          }
        }
      }
      else if ((bVar1 < 0xf5) && (uVar4 = 0xfffffffe, 3 < uVar6)) {
        bVar2 = pbVar3[1];
        uVar4 = 0xffffffff;
        if ((((bVar2 & 0xc0) == 0x80) && ((bVar1 != 0xf0 || (0x8f < bVar2)))) &&
           ((bVar1 != 0xf4 || (uVar4 = 0xffffffff, bVar2 < 0x90)))) {
          uVar4 = 0xffffffff;
          if ((((pbVar3[2] & 0xc0) == 0x80) && ((pbVar3[3] & 0xc0) == 0x80)) &&
             (uVar4 = uVar5 * 0x40000 + (uint)bVar2 * 0x1000 + (uint)pbVar3[2] * 0x40 + -0x3c82080 +
                      (uint)pbVar3[3], uVar4 <= param_2)) {
            *param_1 = pbVar3 + 4;
          }
        }
      }
    }
  }
  else {
    *param_1 = pbVar3 + 1;
    uVar4 = (uint)bVar1;
  }
  return uVar4;
}

