
u8 * __regparm3 pageFindSlot(MemPage *pPg,int nByte,int *pRc)

{
  u8 *puVar1;
  u8 *puVar2;
  byte *pbVar3;
  u8 *puVar4;
  uint uVar5;
  uint uVar6;
  int iVar7;
  int iVar8;
  uint uVar9;
  uint uVar10;
  uint uVar11;
  
  uVar10 = (uint)pPg->hdrOffset;
  puVar4 = pPg->aData;
  iVar7 = pPg->pBt->usableSize - nByte;
  uVar11 = (uint)CONCAT11(puVar4[uVar10 + 1],puVar4[uVar10 + 2]);
  if (iVar7 < (int)uVar11) {
LAB_00038eb0:
    if (iVar7 + -3 + nByte <= (int)uVar11) {
      iVar7 = sqlite3CorruptError(0x1021d);
      *pRc = iVar7;
      return (u8 *)0x0;
    }
  }
  else {
    puVar1 = puVar4 + uVar11 + 2;
    puVar2 = puVar4 + uVar11 + 3;
    uVar9 = (uint)CONCAT11(*puVar1,*puVar2);
    iVar8 = uVar9 - nByte;
    uVar5 = uVar10 + 1;
    uVar6 = uVar11;
    while (iVar8 < 0) {
      uVar11 = (uint)CONCAT11(puVar4[uVar6],puVar4[uVar6 + 1]);
      if (uVar11 <= uVar9 + uVar6) {
        if (uVar11 == 0) {
          return (u8 *)0x0;
        }
        iVar7 = sqlite3CorruptError(0x10216);
        *pRc = iVar7;
        return (u8 *)0x0;
      }
      if (iVar7 < (int)uVar11) goto LAB_00038eb0;
      puVar1 = puVar4 + uVar11 + 2;
      puVar2 = puVar4 + uVar11 + 3;
      uVar9 = (uint)CONCAT11(*puVar1,puVar4[uVar11 + 3]);
      uVar5 = uVar6;
      uVar6 = uVar11;
      iVar8 = uVar9 - nByte;
    }
    if (iVar8 < 4) {
      pbVar3 = puVar4 + uVar10 + 7;
      if (*pbVar3 < 0x3a) {
        *(undefined2 *)(puVar4 + uVar5) = *(undefined2 *)(puVar4 + uVar6);
        *pbVar3 = *pbVar3 + (u8)iVar8;
LAB_00038f08:
        return puVar4 + uVar6 + iVar8;
      }
    }
    else {
      if ((int)(uVar6 + iVar8) <= iVar7) {
        *puVar1 = (u8)((uint)iVar8 >> 8);
        *puVar2 = (u8)iVar8;
        goto LAB_00038f08;
      }
      iVar7 = sqlite3CorruptError(0x10208);
      *pRc = iVar7;
    }
  }
  return (u8 *)0x0;
}



int __regparm3 FUN_00038de0(int param_1,int param_2,undefined4 *param_3)

{
  undefined1 *puVar1;
  char *pcVar2;
  byte *pbVar3;
  int iVar4;
  uint uVar5;
  uint uVar6;
  int iVar7;
  undefined4 uVar8;
  int iVar9;
  uint uVar10;
  uint uVar11;
  uint uVar12;
  
  uVar11 = (uint)*(byte *)(param_1 + 9);
  iVar4 = *(int *)(param_1 + 0x38);
  iVar7 = *(int *)(*(int *)(param_1 + 0x34) + 0x28) - param_2;
  uVar12 = (uint)CONCAT11(*(undefined1 *)(iVar4 + 1 + uVar11),*(undefined1 *)(iVar4 + 2 + uVar11));
  if (iVar7 < (int)uVar12) {
LAB_00038eb0:
    if (iVar7 + -3 + param_2 <= (int)uVar12) {
      uVar8 = FUN_000383f0();
      *param_3 = uVar8;
      return 0;
    }
  }
  else {
    puVar1 = (undefined1 *)(iVar4 + 2 + uVar12);
    pcVar2 = (char *)(iVar4 + 3 + uVar12);
    uVar10 = (uint)CONCAT11(*puVar1,*pcVar2);
    iVar9 = uVar10 - param_2;
    uVar5 = uVar11 + 1;
    uVar6 = uVar12;
    while (iVar9 < 0) {
      uVar12 = (uint)CONCAT11(*(undefined1 *)(iVar4 + uVar6),*(undefined1 *)(iVar4 + 1 + uVar6));
      if (uVar12 <= uVar10 + uVar6) {
        if (uVar12 == 0) {
          return 0;
        }
        uVar8 = FUN_000383f0();
        *param_3 = uVar8;
        return 0;
      }
      if (iVar7 < (int)uVar12) goto LAB_00038eb0;
      puVar1 = (undefined1 *)(iVar4 + 2 + uVar12);
      pcVar2 = (char *)(iVar4 + 3 + uVar12);
      uVar10 = (uint)CONCAT11(*puVar1,*(undefined1 *)(iVar4 + 3 + uVar12));
      uVar5 = uVar6;
      uVar6 = uVar12;
      iVar9 = uVar10 - param_2;
    }
    if (iVar9 < 4) {
      pbVar3 = (byte *)(iVar4 + 7 + uVar11);
      if (*pbVar3 < 0x3a) {
        *(undefined2 *)(iVar4 + uVar5) = *(undefined2 *)(iVar4 + uVar6);
        *pbVar3 = *pbVar3 + (char)iVar9;
LAB_00038f08:
        return iVar4 + uVar6 + iVar9;
      }
    }
    else {
      if ((int)(uVar6 + iVar9) <= iVar7) {
        *puVar1 = (char)((uint)iVar9 >> 8);
        *pcVar2 = (char)iVar9;
        goto LAB_00038f08;
      }
      uVar8 = FUN_000383f0();
      *param_3 = uVar8;
    }
  }
  return 0;
}


PUSH EBP
PUSH EDI
PUSH ESI
PUSH EBX
MOV EBX,EDX
SUB ESP,0x2c
MOVZX EDI,byte ptr [EAX + 0x9]
MOV ESI,dword ptr [EAX + 0x38]
MOV dword ptr [ESP + 0x14],ECX
MOV EAX,dword ptr [EAX + 0x34]
MOV dword ptr [ESP + 0x8],EBX
LEA ECX,[EDI + 0x1]
MOVZX EDX,byte ptr [ESI + EDI*0x1 + 0x1]
MOV EAX,dword ptr [EAX + 0x28]
MOV dword ptr [ESP + 0x18],EDI
MOV dword ptr [ESP + 0x1c],ECX
MOVZX ECX,byte ptr [ESI + EDI*0x1 + 0x2]
SUB EAX,EBX
SHL EDX,0x8
MOV dword ptr [ESP + 0xc],EAX
MOV EDI,EDX
OR EDI,ECX
CMP EDI,EAX
JG 0x00038ea8
LEA EBP,[ESI + EDI*0x1 + 0x2]
LEA EAX,[ESI + EDI*0x1 + 0x3]
MOV EBX,EDI
MOVZX EDX,byte ptr [EBP]
MOV dword ptr [ESP + 0x10],EAX
MOVZX EAX,byte ptr [EAX]
SHL EDX,0x8
OR EDX,EAX
MOV ECX,EDX
SUB ECX,dword ptr [ESP + 0x8]
JS 0x00038e80
JMP 0x00038edc
CMP dword ptr [ESP + 0xc],EAX
JL 0x00038eb0
LEA EBP,[ESI + EAX*0x1 + 0x2]
LEA ECX,[ESI + EAX*0x1 + 0x3]
MOV EBX,EAX
MOVZX EDX,byte ptr [EBP]
MOV dword ptr [ESP + 0x10],ECX
MOV ECX,EDX
LEA EDX,[ESI + EAX*0x1 + 0x3]
SHL ECX,0x8
MOVZX EDX,byte ptr [EDX]
OR EDX,ECX
MOV ECX,EDX
SUB ECX,dword ptr [ESP + 0x8]
JNS 0x00038ee8
MOV EDI,EAX
MOVZX EAX,byte ptr [ESI + EBX*0x1]
MOVZX ECX,byte ptr [ESI + EBX*0x1 + 0x1]
ADD EDX,EDI
SHL EAX,0x8
OR EAX,ECX
CMP EDX,EAX
JL 0x00038e50
XOR ESI,ESI
TEST EAX,EAX
JNZ 0x00038f30
ADD ESP,0x2c
MOV EAX,ESI
POP EBX
POP ESI
POP EDI
POP EBP
RET
MOV EAX,EDI
LEA ESI,[ESI]
MOV ESI,dword ptr [ESP + 0xc]
MOV EDI,dword ptr [ESP + 0x8]
LEA EDX,[ESI + EDI*0x1 + -0x3]
XOR ESI,ESI
CMP EDX,EAX
JG 0x00038e9e
MOV EAX,0x1021d
CALL 0x000383f0
MOV EDI,dword ptr [ESP + 0x14]
MOV dword ptr [EDI],EAX
ADD ESP,0x2c
MOV EAX,ESI
POP EBX
POP ESI
POP EDI
POP EBP
RET
MOV EAX,EDI
MOV EDI,dword ptr [ESP + 0x1c]
LEA ESI,[ESI]
CMP ECX,0x3
JG 0x00038f18
MOV EDX,dword ptr [ESP + 0x18]
LEA EDX,[ESI + EDX*0x1 + 0x7]
CMP byte ptr [EDX],0x39
JA 0x00038f4a
MOVZX EBX,word ptr [ESI + EBX*0x1]
ADD EAX,ECX
MOV word ptr [ESI + EDI*0x1],BX
ADD byte ptr [EDX],CL
ADD ESI,EAX
ADD ESP,0x2c
MOV EAX,ESI
POP EBX
POP ESI
POP EDI
POP EBP
RET
ADD EAX,ECX
CMP EAX,dword ptr [ESP + 0xc]
JG 0x00038f51
MOV EDI,dword ptr [ESP + 0x10]
MOV byte ptr [EBP],CH
ADD ESI,EAX
MOV byte ptr [EDI],CL
JMP 0x00038f08
MOV EAX,0x10216
CALL 0x000383f0
MOV EDI,dword ptr [ESP + 0x14]
MOV dword ptr [EDI],EAX
ADD ESP,0x2c
MOV EAX,ESI
POP EBX
POP ESI
POP EDI
POP EBP
RET
XOR ESI,ESI
JMP 0x00038e9e
MOV EAX,0x10208
CALL 0x000383f0
MOV ESI,dword ptr [ESP + 0x14]
MOV dword ptr [ESI],EAX
XOR ESI,ESI
JMP 0x00038e9e
(translation_unit "int __regparm3 FUN_00038de0(int param_1,int param_2,undefined4 *param_3)\n\n{\n  undefined1 *puVar1;\n  char *pcVar2;\n  byte *pbVar3;\n  int iVar4;\n  uint uVar5;\n  uint uVar6;\n  int iVar7;\n  undefined4 uVar8;\n  int iVar9;\n  uint uVar10;\n  uint uVar11;\n  uint uVar12;\n  \n  uVar11 = (uint)*(byte *)(param_1 + 9);\n  iVar4 = *(int *)(param_1 + 0x38);\n  iVar7 = *(int *)(*(int *)(param_1 + 0x34) + 0x28) - param_2;\n  uVar12 = (uint)CONCAT11(*(undefined1 *)(iVar4 + 1 + uVar11),*(undefined1 *)(iVar4 + 2 + uVar11));\n  if (iVar7 < (int)uVar12) {\nLAB_00038eb0:\n    if (iVar7 + -3 + param_2 <= (int)uVar12) {\n      uVar8 = FUN_000383f0();\n      *param_3 = uVar8;\n      return 0;\n    }\n  }\n  else {\n    puVar1 = (undefined1 *)(iVar4 + 2 + uVar12);\n    pcVar2 = (char *)(iVar4 + 3 + uVar12);\n    uVar10 = (uint)CONCAT11(*puVar1,*pcVar2);\n    iVar9 = uVar10 - param_2;\n    uVar5 = uVar11 + 1;\n    uVar6 = uVar12;\n    while (iVar9 < 0) {\n      uVar12 = (uint)CONCAT11(*(undefined1 *)(iVar4 + uVar6),*(undefined1 *)(iVar4 + 1 + uVar6));\n      if (uVar12 <= uVar10 + uVar6) {\n        if (uVar12 == 0) {\n          return 0;\n        }\n        uVar8 = FUN_000383f0();\n        *param_3 = uVar8;\n        return 0;\n      }\n      if (iVar7 < (int)uVar12) goto LAB_00038eb0;\n      puVar1 = (undefined1 *)(iVar4 + 2 + uVar12);\n      pcVar2 = (char *)(iVar4 + 3 + uVar12);\n      uVar10 = (uint)CONCAT11(*puVar1,*(undefined1 *)(iVar4 + 3 + uVar12));\n      uVar5 = uVar6;\n      uVar6 = uVar12;\n      iVar9 = uVar10 - param_2;\n    }\n    if (iVar9 < 4) {\n      pbVar3 = (byte *)(iVar4 + 7 + uVar11);\n      if (*pbVar3 < 0x3a) {\n        *(undefined2 *)(iVar4 + uVar5) = *(undefined2 *)(iVar4 + uVar6);\n        *pbVar3 = *pbVar3 + (char)iVar9;\nLAB_00038f08:\n        return iVar4 + uVar6 + iVar9;\n      }\n    }\n    else {\n      if ((int)(uVar6 + iVar9) <= iVar7) {\n        *puVar1 = (char)((uint)iVar9 >> 8);\n        *pcVar2 = (char)iVar9;\n        goto LAB_00038f08;\n      }\n      uVar8 = FUN_000383f0();\n      *param_3 = uVar8;\n    }\n  }\n  return 0;\n}\n\n" (function_definition "int __regparm3 FUN_00038de0(int param_1,int param_2,undefined4 *param_3)\n\n{\n  undefined1 *puVar1;\n  char *pcVar2;\n  byte *pbVar3;\n  int iVar4;\n  uint uVar5;\n  uint uVar6;\n  int iVar7;\n  undefined4 uVar8;\n  int iVar9;\n  uint uVar10;\n  uint uVar11;\n  uint uVar12;\n  \n  uVar11 = (uint)*(byte *)(param_1 + 9);\n  iVar4 = *(int *)(param_1 + 0x38);\n  iVar7 = *(int *)(*(int *)(param_1 + 0x34) + 0x28) - param_2;\n  uVar12 = (uint)CONCAT11(*(undefined1 *)(iVar4 + 1 + uVar11),*(undefined1 *)(iVar4 + 2 + uVar11));\n  if (iVar7 < (int)uVar12) {\nLAB_00038eb0:\n    if (iVar7 + -3 + param_2 <= (int)uVar12) {\n      uVar8 = FUN_000383f0();\n      *param_3 = uVar8;\n      return 0;\n    }\n  }\n  else {\n    puVar1 = (undefined1 *)(iVar4 + 2 + uVar12);\n    pcVar2 = (char *)(iVar4 + 3 + uVar12);\n    uVar10 = (uint)CONCAT11(*puVar1,*pcVar2);\n    iVar9 = uVar10 - param_2;\n    uVar5 = uVar11 + 1;\n    uVar6 = uVar12;\n    while (iVar9 < 0) {\n      uVar12 = (uint)CONCAT11(*(undefined1 *)(iVar4 + uVar6),*(undefined1 *)(iVar4 + 1 + uVar6));\n      if (uVar12 <= uVar10 + uVar6) {\n        if (uVar12 == 0) {\n          return 0;\n        }\n        uVar8 = FUN_000383f0();\n        *param_3 = uVar8;\n        return 0;\n      }\n      if (iVar7 < (int)uVar12) goto LAB_00038eb0;\n      puVar1 = (undefined1 *)(iVar4 + 2 + uVar12);\n      pcVar2 = (char *)(iVar4 + 3 + uVar12);\n      uVar10 = (uint)CONCAT11(*puVar1,*(undefined1 *)(iVar4 + 3 + uVar12));\n      uVar5 = uVar6;\n      uVar6 = uVar12;\n      iVar9 = uVar10 - param_2;\n    }\n    if (iVar9 < 4) {\n      pbVar3 = (byte *)(iVar4 + 7 + uVar11);\n      if (*pbVar3 < 0x3a) {\n        *(undefined2 *)(iVar4 + uVar5) = *(undefined2 *)(iVar4 + uVar6);\n        *pbVar3 = *pbVar3 + (char)iVar9;\nLAB_00038f08:\n        return iVar4 + uVar6 + iVar9;\n      }\n    }\n    else {\n      if ((int)(uVar6 + iVar9) <= iVar7) {\n        *puVar1 = (char)((uint)iVar9 >> 8);\n        *pcVar2 = (char)iVar9;\n        goto LAB_00038f08;\n      }\n      uVar8 = FUN_000383f0();\n      *param_3 = uVar8;\n    }\n  }\n  return 0;\n}" primitive_type (ERROR "__regparm3" identifier) (function_declarator "FUN_00038de0(int param_1,int param_2,undefined4 *param_3)" identifier (parameter_list "(int param_1,int param_2,undefined4 *param_3)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "int param_2" primitive_type identifier) , (parameter_declaration "undefined4 *param_3" type_identifier (pointer_declarator "*param_3" * identifier)) ))) (compound_statement "{\n  undefined1 *puVar1;\n  char *pcVar2;\n  byte *pbVar3;\n  int iVar4;\n  uint uVar5;\n  uint uVar6;\n  int iVar7;\n  undefined4 uVar8;\n  int iVar9;\n  uint uVar10;\n  uint uVar11;\n  uint uVar12;\n  \n  uVar11 = (uint)*(byte *)(param_1 + 9);\n  iVar4 = *(int *)(param_1 + 0x38);\n  iVar7 = *(int *)(*(int *)(param_1 + 0x34) + 0x28) - param_2;\n  uVar12 = (uint)CONCAT11(*(undefined1 *)(iVar4 + 1 + uVar11),*(undefined1 *)(iVar4 + 2 + uVar11));\n  if (iVar7 < (int)uVar12) {\nLAB_00038eb0:\n    if (iVar7 + -3 + param_2 <= (int)uVar12) {\n      uVar8 = FUN_000383f0();\n      *param_3 = uVar8;\n      return 0;\n    }\n  }\n  else {\n    puVar1 = (undefined1 *)(iVar4 + 2 + uVar12);\n    pcVar2 = (char *)(iVar4 + 3 + uVar12);\n    uVar10 = (uint)CONCAT11(*puVar1,*pcVar2);\n    iVar9 = uVar10 - param_2;\n    uVar5 = uVar11 + 1;\n    uVar6 = uVar12;\n    while (iVar9 < 0) {\n      uVar12 = (uint)CONCAT11(*(undefined1 *)(iVar4 + uVar6),*(undefined1 *)(iVar4 + 1 + uVar6));\n      if (uVar12 <= uVar10 + uVar6) {\n        if (uVar12 == 0) {\n          return 0;\n        }\n        uVar8 = FUN_000383f0();\n        *param_3 = uVar8;\n        return 0;\n      }\n      if (iVar7 < (int)uVar12) goto LAB_00038eb0;\n      puVar1 = (undefined1 *)(iVar4 + 2 + uVar12);\n      pcVar2 = (char *)(iVar4 + 3 + uVar12);\n      uVar10 = (uint)CONCAT11(*puVar1,*(undefined1 *)(iVar4 + 3 + uVar12));\n      uVar5 = uVar6;\n      uVar6 = uVar12;\n      iVar9 = uVar10 - param_2;\n    }\n    if (iVar9 < 4) {\n      pbVar3 = (byte *)(iVar4 + 7 + uVar11);\n      if (*pbVar3 < 0x3a) {\n        *(undefined2 *)(iVar4 + uVar5) = *(undefined2 *)(iVar4 + uVar6);\n        *pbVar3 = *pbVar3 + (char)iVar9;\nLAB_00038f08:\n        return iVar4 + uVar6 + iVar9;\n      }\n    }\n    else {\n      if ((int)(uVar6 + iVar9) <= iVar7) {\n        *puVar1 = (char)((uint)iVar9 >> 8);\n        *pcVar2 = (char)iVar9;\n        goto LAB_00038f08;\n      }\n      uVar8 = FUN_000383f0();\n      *param_3 = uVar8;\n    }\n  }\n  return 0;\n}" { (declaration "undefined1 *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "char *pcVar2;" primitive_type (pointer_declarator "*pcVar2" * identifier) ;) (declaration "byte *pbVar3;" type_identifier (pointer_declarator "*pbVar3" * identifier) ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "uint uVar5;" type_identifier identifier ;) (declaration "uint uVar6;" type_identifier identifier ;) (declaration "int iVar7;" primitive_type identifier ;) (declaration "undefined4 uVar8;" type_identifier identifier ;) (declaration "int iVar9;" primitive_type identifier ;) (declaration "uint uVar10;" type_identifier identifier ;) (declaration "uint uVar11;" type_identifier identifier ;) (declaration "uint uVar12;" type_identifier identifier ;) (expression_statement "uVar11 = (uint)*(byte *)(param_1 + 9);" (assignment_expression "uVar11 = (uint)*(byte *)(param_1 + 9)" identifier = (binary_expression "(uint)*(byte *)(param_1 + 9)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)(param_1 + 9)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 9)" ( (binary_expression "param_1 + 9" identifier + number_literal) ))))) ;) (expression_statement "iVar4 = *(int *)(param_1 + 0x38);" (assignment_expression "iVar4 = *(int *)(param_1 + 0x38)" identifier = (pointer_expression "*(int *)(param_1 + 0x38)" * (cast_expression "(int *)(param_1 + 0x38)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x38)" ( (binary_expression "param_1 + 0x38" identifier + number_literal) ))))) ;) (expression_statement "iVar7 = *(int *)(*(int *)(param_1 + 0x34) + 0x28) - param_2;" (assignment_expression "iVar7 = *(int *)(*(int *)(param_1 + 0x34) + 0x28) - param_2" identifier = (binary_expression "*(int *)(*(int *)(param_1 + 0x34) + 0x28) - param_2" (pointer_expression "*(int *)(*(int *)(param_1 + 0x34) + 0x28)" * (cast_expression "(int *)(*(int *)(param_1 + 0x34) + 0x28)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(param_1 + 0x34) + 0x28)" ( (binary_expression "*(int *)(param_1 + 0x34) + 0x28" (pointer_expression "*(int *)(param_1 + 0x34)" * (cast_expression "(int *)(param_1 + 0x34)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x34)" ( (binary_expression "param_1 + 0x34" identifier + number_literal) )))) + number_literal) )))) - identifier)) ;) (expression_statement "uVar12 = (uint)CONCAT11(*(undefined1 *)(iVar4 + 1 + uVar11),*(undefined1 *)(iVar4 + 2 + uVar11));" (assignment_expression "uVar12 = (uint)CONCAT11(*(undefined1 *)(iVar4 + 1 + uVar11),*(undefined1 *)(iVar4 + 2 + uVar11))" identifier = (cast_expression "(uint)CONCAT11(*(undefined1 *)(iVar4 + 1 + uVar11),*(undefined1 *)(iVar4 + 2 + uVar11))" ( (type_descriptor "uint" type_identifier) ) (call_expression "CONCAT11(*(undefined1 *)(iVar4 + 1 + uVar11),*(undefined1 *)(iVar4 + 2 + uVar11))" identifier (argument_list "(*(undefined1 *)(iVar4 + 1 + uVar11),*(undefined1 *)(iVar4 + 2 + uVar11))" ( (pointer_expression "*(undefined1 *)(iVar4 + 1 + uVar11)" * (cast_expression "(undefined1 *)(iVar4 + 1 + uVar11)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 1 + uVar11)" ( (binary_expression "iVar4 + 1 + uVar11" (binary_expression "iVar4 + 1" identifier + number_literal) + identifier) )))) , (pointer_expression "*(undefined1 *)(iVar4 + 2 + uVar11)" * (cast_expression "(undefined1 *)(iVar4 + 2 + uVar11)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 2 + uVar11)" ( (binary_expression "iVar4 + 2 + uVar11" (binary_expression "iVar4 + 2" identifier + number_literal) + identifier) )))) ))))) ;) (if_statement "if (iVar7 < (int)uVar12) {\nLAB_00038eb0:\n    if (iVar7 + -3 + param_2 <= (int)uVar12) {\n      uVar8 = FUN_000383f0();\n      *param_3 = uVar8;\n      return 0;\n    }\n  }\n  else {\n    puVar1 = (undefined1 *)(iVar4 + 2 + uVar12);\n    pcVar2 = (char *)(iVar4 + 3 + uVar12);\n    uVar10 = (uint)CONCAT11(*puVar1,*pcVar2);\n    iVar9 = uVar10 - param_2;\n    uVar5 = uVar11 + 1;\n    uVar6 = uVar12;\n    while (iVar9 < 0) {\n      uVar12 = (uint)CONCAT11(*(undefined1 *)(iVar4 + uVar6),*(undefined1 *)(iVar4 + 1 + uVar6));\n      if (uVar12 <= uVar10 + uVar6) {\n        if (uVar12 == 0) {\n          return 0;\n        }\n        uVar8 = FUN_000383f0();\n        *param_3 = uVar8;\n        return 0;\n      }\n      if (iVar7 < (int)uVar12) goto LAB_00038eb0;\n      puVar1 = (undefined1 *)(iVar4 + 2 + uVar12);\n      pcVar2 = (char *)(iVar4 + 3 + uVar12);\n      uVar10 = (uint)CONCAT11(*puVar1,*(undefined1 *)(iVar4 + 3 + uVar12));\n      uVar5 = uVar6;\n      uVar6 = uVar12;\n      iVar9 = uVar10 - param_2;\n    }\n    if (iVar9 < 4) {\n      pbVar3 = (byte *)(iVar4 + 7 + uVar11);\n      if (*pbVar3 < 0x3a) {\n        *(undefined2 *)(iVar4 + uVar5) = *(undefined2 *)(iVar4 + uVar6);\n        *pbVar3 = *pbVar3 + (char)iVar9;\nLAB_00038f08:\n        return iVar4 + uVar6 + iVar9;\n      }\n    }\n    else {\n      if ((int)(uVar6 + iVar9) <= iVar7) {\n        *puVar1 = (char)((uint)iVar9 >> 8);\n        *pcVar2 = (char)iVar9;\n        goto LAB_00038f08;\n      }\n      uVar8 = FUN_000383f0();\n      *param_3 = uVar8;\n    }\n  }" if (parenthesized_expression "(iVar7 < (int)uVar12)" ( (binary_expression "iVar7 < (int)uVar12" identifier < (cast_expression "(int)uVar12" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\nLAB_00038eb0:\n    if (iVar7 + -3 + param_2 <= (int)uVar12) {\n      uVar8 = FUN_000383f0();\n      *param_3 = uVar8;\n      return 0;\n    }\n  }" { (labeled_statement "LAB_00038eb0:\n    if (iVar7 + -3 + param_2 <= (int)uVar12) {\n      uVar8 = FUN_000383f0();\n      *param_3 = uVar8;\n      return 0;\n    }" statement_identifier : (if_statement "if (iVar7 + -3 + param_2 <= (int)uVar12) {\n      uVar8 = FUN_000383f0();\n      *param_3 = uVar8;\n      return 0;\n    }" if (parenthesized_expression "(iVar7 + -3 + param_2 <= (int)uVar12)" ( (binary_expression "iVar7 + -3 + param_2 <= (int)uVar12" (binary_expression "iVar7 + -3 + param_2" (binary_expression "iVar7 + -3" identifier + number_literal) + identifier) <= (cast_expression "(int)uVar12" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n      uVar8 = FUN_000383f0();\n      *param_3 = uVar8;\n      return 0;\n    }" { (expression_statement "uVar8 = FUN_000383f0();" (assignment_expression "uVar8 = FUN_000383f0()" identifier = (call_expression "FUN_000383f0()" identifier (argument_list "()" ( )))) ;) (expression_statement "*param_3 = uVar8;" (assignment_expression "*param_3 = uVar8" (pointer_expression "*param_3" * identifier) = identifier) ;) (return_statement "return 0;" return number_literal ;) }))) }) (else_clause "else {\n    puVar1 = (undefined1 *)(iVar4 + 2 + uVar12);\n    pcVar2 = (char *)(iVar4 + 3 + uVar12);\n    uVar10 = (uint)CONCAT11(*puVar1,*pcVar2);\n    iVar9 = uVar10 - param_2;\n    uVar5 = uVar11 + 1;\n    uVar6 = uVar12;\n    while (iVar9 < 0) {\n      uVar12 = (uint)CONCAT11(*(undefined1 *)(iVar4 + uVar6),*(undefined1 *)(iVar4 + 1 + uVar6));\n      if (uVar12 <= uVar10 + uVar6) {\n        if (uVar12 == 0) {\n          return 0;\n        }\n        uVar8 = FUN_000383f0();\n        *param_3 = uVar8;\n        return 0;\n      }\n      if (iVar7 < (int)uVar12) goto LAB_00038eb0;\n      puVar1 = (undefined1 *)(iVar4 + 2 + uVar12);\n      pcVar2 = (char *)(iVar4 + 3 + uVar12);\n      uVar10 = (uint)CONCAT11(*puVar1,*(undefined1 *)(iVar4 + 3 + uVar12));\n      uVar5 = uVar6;\n      uVar6 = uVar12;\n      iVar9 = uVar10 - param_2;\n    }\n    if (iVar9 < 4) {\n      pbVar3 = (byte *)(iVar4 + 7 + uVar11);\n      if (*pbVar3 < 0x3a) {\n        *(undefined2 *)(iVar4 + uVar5) = *(undefined2 *)(iVar4 + uVar6);\n        *pbVar3 = *pbVar3 + (char)iVar9;\nLAB_00038f08:\n        return iVar4 + uVar6 + iVar9;\n      }\n    }\n    else {\n      if ((int)(uVar6 + iVar9) <= iVar7) {\n        *puVar1 = (char)((uint)iVar9 >> 8);\n        *pcVar2 = (char)iVar9;\n        goto LAB_00038f08;\n      }\n      uVar8 = FUN_000383f0();\n      *param_3 = uVar8;\n    }\n  }" else (compound_statement "{\n    puVar1 = (undefined1 *)(iVar4 + 2 + uVar12);\n    pcVar2 = (char *)(iVar4 + 3 + uVar12);\n    uVar10 = (uint)CONCAT11(*puVar1,*pcVar2);\n    iVar9 = uVar10 - param_2;\n    uVar5 = uVar11 + 1;\n    uVar6 = uVar12;\n    while (iVar9 < 0) {\n      uVar12 = (uint)CONCAT11(*(undefined1 *)(iVar4 + uVar6),*(undefined1 *)(iVar4 + 1 + uVar6));\n      if (uVar12 <= uVar10 + uVar6) {\n        if (uVar12 == 0) {\n          return 0;\n        }\n        uVar8 = FUN_000383f0();\n        *param_3 = uVar8;\n        return 0;\n      }\n      if (iVar7 < (int)uVar12) goto LAB_00038eb0;\n      puVar1 = (undefined1 *)(iVar4 + 2 + uVar12);\n      pcVar2 = (char *)(iVar4 + 3 + uVar12);\n      uVar10 = (uint)CONCAT11(*puVar1,*(undefined1 *)(iVar4 + 3 + uVar12));\n      uVar5 = uVar6;\n      uVar6 = uVar12;\n      iVar9 = uVar10 - param_2;\n    }\n    if (iVar9 < 4) {\n      pbVar3 = (byte *)(iVar4 + 7 + uVar11);\n      if (*pbVar3 < 0x3a) {\n        *(undefined2 *)(iVar4 + uVar5) = *(undefined2 *)(iVar4 + uVar6);\n        *pbVar3 = *pbVar3 + (char)iVar9;\nLAB_00038f08:\n        return iVar4 + uVar6 + iVar9;\n      }\n    }\n    else {\n      if ((int)(uVar6 + iVar9) <= iVar7) {\n        *puVar1 = (char)((uint)iVar9 >> 8);\n        *pcVar2 = (char)iVar9;\n        goto LAB_00038f08;\n      }\n      uVar8 = FUN_000383f0();\n      *param_3 = uVar8;\n    }\n  }" { (expression_statement "puVar1 = (undefined1 *)(iVar4 + 2 + uVar12);" (assignment_expression "puVar1 = (undefined1 *)(iVar4 + 2 + uVar12)" identifier = (cast_expression "(undefined1 *)(iVar4 + 2 + uVar12)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 2 + uVar12)" ( (binary_expression "iVar4 + 2 + uVar12" (binary_expression "iVar4 + 2" identifier + number_literal) + identifier) )))) ;) (expression_statement "pcVar2 = (char *)(iVar4 + 3 + uVar12);" (assignment_expression "pcVar2 = (char *)(iVar4 + 3 + uVar12)" identifier = (cast_expression "(char *)(iVar4 + 3 + uVar12)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 3 + uVar12)" ( (binary_expression "iVar4 + 3 + uVar12" (binary_expression "iVar4 + 3" identifier + number_literal) + identifier) )))) ;) (expression_statement "uVar10 = (uint)CONCAT11(*puVar1,*pcVar2);" (assignment_expression "uVar10 = (uint)CONCAT11(*puVar1,*pcVar2)" identifier = (cast_expression "(uint)CONCAT11(*puVar1,*pcVar2)" ( (type_descriptor "uint" type_identifier) ) (call_expression "CONCAT11(*puVar1,*pcVar2)" identifier (argument_list "(*puVar1,*pcVar2)" ( (pointer_expression "*puVar1" * identifier) , (pointer_expression "*pcVar2" * identifier) ))))) ;) (expression_statement "iVar9 = uVar10 - param_2;" (assignment_expression "iVar9 = uVar10 - param_2" identifier = (binary_expression "uVar10 - param_2" identifier - identifier)) ;) (expression_statement "uVar5 = uVar11 + 1;" (assignment_expression "uVar5 = uVar11 + 1" identifier = (binary_expression "uVar11 + 1" identifier + number_literal)) ;) (expression_statement "uVar6 = uVar12;" (assignment_expression "uVar6 = uVar12" identifier = identifier) ;) (while_statement "while (iVar9 < 0) {\n      uVar12 = (uint)CONCAT11(*(undefined1 *)(iVar4 + uVar6),*(undefined1 *)(iVar4 + 1 + uVar6));\n      if (uVar12 <= uVar10 + uVar6) {\n        if (uVar12 == 0) {\n          return 0;\n        }\n        uVar8 = FUN_000383f0();\n        *param_3 = uVar8;\n        return 0;\n      }\n      if (iVar7 < (int)uVar12) goto LAB_00038eb0;\n      puVar1 = (undefined1 *)(iVar4 + 2 + uVar12);\n      pcVar2 = (char *)(iVar4 + 3 + uVar12);\n      uVar10 = (uint)CONCAT11(*puVar1,*(undefined1 *)(iVar4 + 3 + uVar12));\n      uVar5 = uVar6;\n      uVar6 = uVar12;\n      iVar9 = uVar10 - param_2;\n    }" while (parenthesized_expression "(iVar9 < 0)" ( (binary_expression "iVar9 < 0" identifier < number_literal) )) (compound_statement "{\n      uVar12 = (uint)CONCAT11(*(undefined1 *)(iVar4 + uVar6),*(undefined1 *)(iVar4 + 1 + uVar6));\n      if (uVar12 <= uVar10 + uVar6) {\n        if (uVar12 == 0) {\n          return 0;\n        }\n        uVar8 = FUN_000383f0();\n        *param_3 = uVar8;\n        return 0;\n      }\n      if (iVar7 < (int)uVar12) goto LAB_00038eb0;\n      puVar1 = (undefined1 *)(iVar4 + 2 + uVar12);\n      pcVar2 = (char *)(iVar4 + 3 + uVar12);\n      uVar10 = (uint)CONCAT11(*puVar1,*(undefined1 *)(iVar4 + 3 + uVar12));\n      uVar5 = uVar6;\n      uVar6 = uVar12;\n      iVar9 = uVar10 - param_2;\n    }" { (expression_statement "uVar12 = (uint)CONCAT11(*(undefined1 *)(iVar4 + uVar6),*(undefined1 *)(iVar4 + 1 + uVar6));" (assignment_expression "uVar12 = (uint)CONCAT11(*(undefined1 *)(iVar4 + uVar6),*(undefined1 *)(iVar4 + 1 + uVar6))" identifier = (cast_expression "(uint)CONCAT11(*(undefined1 *)(iVar4 + uVar6),*(undefined1 *)(iVar4 + 1 + uVar6))" ( (type_descriptor "uint" type_identifier) ) (call_expression "CONCAT11(*(undefined1 *)(iVar4 + uVar6),*(undefined1 *)(iVar4 + 1 + uVar6))" identifier (argument_list "(*(undefined1 *)(iVar4 + uVar6),*(undefined1 *)(iVar4 + 1 + uVar6))" ( (pointer_expression "*(undefined1 *)(iVar4 + uVar6)" * (cast_expression "(undefined1 *)(iVar4 + uVar6)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + uVar6)" ( (binary_expression "iVar4 + uVar6" identifier + identifier) )))) , (pointer_expression "*(undefined1 *)(iVar4 + 1 + uVar6)" * (cast_expression "(undefined1 *)(iVar4 + 1 + uVar6)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 1 + uVar6)" ( (binary_expression "iVar4 + 1 + uVar6" (binary_expression "iVar4 + 1" identifier + number_literal) + identifier) )))) ))))) ;) (if_statement "if (uVar12 <= uVar10 + uVar6) {\n        if (uVar12 == 0) {\n          return 0;\n        }\n        uVar8 = FUN_000383f0();\n        *param_3 = uVar8;\n        return 0;\n      }" if (parenthesized_expression "(uVar12 <= uVar10 + uVar6)" ( (binary_expression "uVar12 <= uVar10 + uVar6" identifier <= (binary_expression "uVar10 + uVar6" identifier + identifier)) )) (compound_statement "{\n        if (uVar12 == 0) {\n          return 0;\n        }\n        uVar8 = FUN_000383f0();\n        *param_3 = uVar8;\n        return 0;\n      }" { (if_statement "if (uVar12 == 0) {\n          return 0;\n        }" if (parenthesized_expression "(uVar12 == 0)" ( (binary_expression "uVar12 == 0" identifier == number_literal) )) (compound_statement "{\n          return 0;\n        }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "uVar8 = FUN_000383f0();" (assignment_expression "uVar8 = FUN_000383f0()" identifier = (call_expression "FUN_000383f0()" identifier (argument_list "()" ( )))) ;) (expression_statement "*param_3 = uVar8;" (assignment_expression "*param_3 = uVar8" (pointer_expression "*param_3" * identifier) = identifier) ;) (return_statement "return 0;" return number_literal ;) })) (if_statement "if (iVar7 < (int)uVar12) goto LAB_00038eb0;" if (parenthesized_expression "(iVar7 < (int)uVar12)" ( (binary_expression "iVar7 < (int)uVar12" identifier < (cast_expression "(int)uVar12" ( (type_descriptor "int" primitive_type) ) identifier)) )) (goto_statement "goto LAB_00038eb0;" goto statement_identifier ;)) (expression_statement "puVar1 = (undefined1 *)(iVar4 + 2 + uVar12);" (assignment_expression "puVar1 = (undefined1 *)(iVar4 + 2 + uVar12)" identifier = (cast_expression "(undefined1 *)(iVar4 + 2 + uVar12)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 2 + uVar12)" ( (binary_expression "iVar4 + 2 + uVar12" (binary_expression "iVar4 + 2" identifier + number_literal) + identifier) )))) ;) (expression_statement "pcVar2 = (char *)(iVar4 + 3 + uVar12);" (assignment_expression "pcVar2 = (char *)(iVar4 + 3 + uVar12)" identifier = (cast_expression "(char *)(iVar4 + 3 + uVar12)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 3 + uVar12)" ( (binary_expression "iVar4 + 3 + uVar12" (binary_expression "iVar4 + 3" identifier + number_literal) + identifier) )))) ;) (expression_statement "uVar10 = (uint)CONCAT11(*puVar1,*(undefined1 *)(iVar4 + 3 + uVar12));" (assignment_expression "uVar10 = (uint)CONCAT11(*puVar1,*(undefined1 *)(iVar4 + 3 + uVar12))" identifier = (cast_expression "(uint)CONCAT11(*puVar1,*(undefined1 *)(iVar4 + 3 + uVar12))" ( (type_descriptor "uint" type_identifier) ) (call_expression "CONCAT11(*puVar1,*(undefined1 *)(iVar4 + 3 + uVar12))" identifier (argument_list "(*puVar1,*(undefined1 *)(iVar4 + 3 + uVar12))" ( (pointer_expression "*puVar1" * identifier) , (pointer_expression "*(undefined1 *)(iVar4 + 3 + uVar12)" * (cast_expression "(undefined1 *)(iVar4 + 3 + uVar12)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 3 + uVar12)" ( (binary_expression "iVar4 + 3 + uVar12" (binary_expression "iVar4 + 3" identifier + number_literal) + identifier) )))) ))))) ;) (expression_statement "uVar5 = uVar6;" (assignment_expression "uVar5 = uVar6" identifier = identifier) ;) (expression_statement "uVar6 = uVar12;" (assignment_expression "uVar6 = uVar12" identifier = identifier) ;) (expression_statement "iVar9 = uVar10 - param_2;" (assignment_expression "iVar9 = uVar10 - param_2" identifier = (binary_expression "uVar10 - param_2" identifier - identifier)) ;) })) (if_statement "if (iVar9 < 4) {\n      pbVar3 = (byte *)(iVar4 + 7 + uVar11);\n      if (*pbVar3 < 0x3a) {\n        *(undefined2 *)(iVar4 + uVar5) = *(undefined2 *)(iVar4 + uVar6);\n        *pbVar3 = *pbVar3 + (char)iVar9;\nLAB_00038f08:\n        return iVar4 + uVar6 + iVar9;\n      }\n    }\n    else {\n      if ((int)(uVar6 + iVar9) <= iVar7) {\n        *puVar1 = (char)((uint)iVar9 >> 8);\n        *pcVar2 = (char)iVar9;\n        goto LAB_00038f08;\n      }\n      uVar8 = FUN_000383f0();\n      *param_3 = uVar8;\n    }" if (parenthesized_expression "(iVar9 < 4)" ( (binary_expression "iVar9 < 4" identifier < number_literal) )) (compound_statement "{\n      pbVar3 = (byte *)(iVar4 + 7 + uVar11);\n      if (*pbVar3 < 0x3a) {\n        *(undefined2 *)(iVar4 + uVar5) = *(undefined2 *)(iVar4 + uVar6);\n        *pbVar3 = *pbVar3 + (char)iVar9;\nLAB_00038f08:\n        return iVar4 + uVar6 + iVar9;\n      }\n    }" { (expression_statement "pbVar3 = (byte *)(iVar4 + 7 + uVar11);" (assignment_expression "pbVar3 = (byte *)(iVar4 + 7 + uVar11)" identifier = (cast_expression "(byte *)(iVar4 + 7 + uVar11)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 7 + uVar11)" ( (binary_expression "iVar4 + 7 + uVar11" (binary_expression "iVar4 + 7" identifier + number_literal) + identifier) )))) ;) (if_statement "if (*pbVar3 < 0x3a) {\n        *(undefined2 *)(iVar4 + uVar5) = *(undefined2 *)(iVar4 + uVar6);\n        *pbVar3 = *pbVar3 + (char)iVar9;\nLAB_00038f08:\n        return iVar4 + uVar6 + iVar9;\n      }" if (parenthesized_expression "(*pbVar3 < 0x3a)" ( (binary_expression "*pbVar3 < 0x3a" (pointer_expression "*pbVar3" * identifier) < number_literal) )) (compound_statement "{\n        *(undefined2 *)(iVar4 + uVar5) = *(undefined2 *)(iVar4 + uVar6);\n        *pbVar3 = *pbVar3 + (char)iVar9;\nLAB_00038f08:\n        return iVar4 + uVar6 + iVar9;\n      }" { (expression_statement "*(undefined2 *)(iVar4 + uVar5) = *(undefined2 *)(iVar4 + uVar6);" (assignment_expression "*(undefined2 *)(iVar4 + uVar5) = *(undefined2 *)(iVar4 + uVar6)" (pointer_expression "*(undefined2 *)(iVar4 + uVar5)" * (cast_expression "(undefined2 *)(iVar4 + uVar5)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + uVar5)" ( (binary_expression "iVar4 + uVar5" identifier + identifier) )))) = (pointer_expression "*(undefined2 *)(iVar4 + uVar6)" * (cast_expression "(undefined2 *)(iVar4 + uVar6)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + uVar6)" ( (binary_expression "iVar4 + uVar6" identifier + identifier) ))))) ;) (expression_statement "*pbVar3 = *pbVar3 + (char)iVar9;" (assignment_expression "*pbVar3 = *pbVar3 + (char)iVar9" (pointer_expression "*pbVar3" * identifier) = (binary_expression "*pbVar3 + (char)iVar9" (pointer_expression "*pbVar3" * identifier) + (cast_expression "(char)iVar9" ( (type_descriptor "char" primitive_type) ) identifier))) ;) (labeled_statement "LAB_00038f08:\n        return iVar4 + uVar6 + iVar9;" statement_identifier : (return_statement "return iVar4 + uVar6 + iVar9;" return (binary_expression "iVar4 + uVar6 + iVar9" (binary_expression "iVar4 + uVar6" identifier + identifier) + identifier) ;)) })) }) (else_clause "else {\n      if ((int)(uVar6 + iVar9) <= iVar7) {\n        *puVar1 = (char)((uint)iVar9 >> 8);\n        *pcVar2 = (char)iVar9;\n        goto LAB_00038f08;\n      }\n      uVar8 = FUN_000383f0();\n      *param_3 = uVar8;\n    }" else (compound_statement "{\n      if ((int)(uVar6 + iVar9) <= iVar7) {\n        *puVar1 = (char)((uint)iVar9 >> 8);\n        *pcVar2 = (char)iVar9;\n        goto LAB_00038f08;\n      }\n      uVar8 = FUN_000383f0();\n      *param_3 = uVar8;\n    }" { (if_statement "if ((int)(uVar6 + iVar9) <= iVar7) {\n        *puVar1 = (char)((uint)iVar9 >> 8);\n        *pcVar2 = (char)iVar9;\n        goto LAB_00038f08;\n      }" if (parenthesized_expression "((int)(uVar6 + iVar9) <= iVar7)" ( (binary_expression "(int)(uVar6 + iVar9) <= iVar7" (cast_expression "(int)(uVar6 + iVar9)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(uVar6 + iVar9)" ( (binary_expression "uVar6 + iVar9" identifier + identifier) ))) <= identifier) )) (compound_statement "{\n        *puVar1 = (char)((uint)iVar9 >> 8);\n        *pcVar2 = (char)iVar9;\n        goto LAB_00038f08;\n      }" { (expression_statement "*puVar1 = (char)((uint)iVar9 >> 8);" (assignment_expression "*puVar1 = (char)((uint)iVar9 >> 8)" (pointer_expression "*puVar1" * identifier) = (cast_expression "(char)((uint)iVar9 >> 8)" ( (type_descriptor "char" primitive_type) ) (parenthesized_expression "((uint)iVar9 >> 8)" ( (binary_expression "(uint)iVar9 >> 8" (cast_expression "(uint)iVar9" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "*pcVar2 = (char)iVar9;" (assignment_expression "*pcVar2 = (char)iVar9" (pointer_expression "*pcVar2" * identifier) = (cast_expression "(char)iVar9" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (goto_statement "goto LAB_00038f08;" goto statement_identifier ;) })) (expression_statement "uVar8 = FUN_000383f0();" (assignment_expression "uVar8 = FUN_000383f0()" identifier = (call_expression "FUN_000383f0()" identifier (argument_list "()" ( )))) ;) (expression_statement "*param_3 = uVar8;" (assignment_expression "*param_3 = uVar8" (pointer_expression "*param_3" * identifier) = identifier) ;) }))) }))) (return_statement "return 0;" return number_literal ;) })))
(translation_unit "u8 * __regparm3 pageFindSlot(MemPage *pPg,int nByte,int *pRc)\n\n{\n  u8 *puVar1;\n  u8 *puVar2;\n  byte *pbVar3;\n  u8 *puVar4;\n  uint uVar5;\n  uint uVar6;\n  int iVar7;\n  int iVar8;\n  uint uVar9;\n  uint uVar10;\n  uint uVar11;\n  \n  uVar10 = (uint)pPg->hdrOffset;\n  puVar4 = pPg->aData;\n  iVar7 = pPg->pBt->usableSize - nByte;\n  uVar11 = (uint)CONCAT11(puVar4[uVar10 + 1],puVar4[uVar10 + 2]);\n  if (iVar7 < (int)uVar11) {\nLAB_00038eb0:\n    if (iVar7 + -3 + nByte <= (int)uVar11) {\n      iVar7 = sqlite3CorruptError(0x1021d);\n      *pRc = iVar7;\n      return (u8 *)0x0;\n    }\n  }\n  else {\n    puVar1 = puVar4 + uVar11 + 2;\n    puVar2 = puVar4 + uVar11 + 3;\n    uVar9 = (uint)CONCAT11(*puVar1,*puVar2);\n    iVar8 = uVar9 - nByte;\n    uVar5 = uVar10 + 1;\n    uVar6 = uVar11;\n    while (iVar8 < 0) {\n      uVar11 = (uint)CONCAT11(puVar4[uVar6],puVar4[uVar6 + 1]);\n      if (uVar11 <= uVar9 + uVar6) {\n        if (uVar11 == 0) {\n          return (u8 *)0x0;\n        }\n        iVar7 = sqlite3CorruptError(0x10216);\n        *pRc = iVar7;\n        return (u8 *)0x0;\n      }\n      if (iVar7 < (int)uVar11) goto LAB_00038eb0;\n      puVar1 = puVar4 + uVar11 + 2;\n      puVar2 = puVar4 + uVar11 + 3;\n      uVar9 = (uint)CONCAT11(*puVar1,puVar4[uVar11 + 3]);\n      uVar5 = uVar6;\n      uVar6 = uVar11;\n      iVar8 = uVar9 - nByte;\n    }\n    if (iVar8 < 4) {\n      pbVar3 = puVar4 + uVar10 + 7;\n      if (*pbVar3 < 0x3a) {\n        *(undefined2 *)(puVar4 + uVar5) = *(undefined2 *)(puVar4 + uVar6);\n        *pbVar3 = *pbVar3 + (u8)iVar8;\nLAB_00038f08:\n        return puVar4 + uVar6 + iVar8;\n      }\n    }\n    else {\n      if ((int)(uVar6 + iVar8) <= iVar7) {\n        *puVar1 = (u8)((uint)iVar8 >> 8);\n        *puVar2 = (u8)iVar8;\n        goto LAB_00038f08;\n      }\n      iVar7 = sqlite3CorruptError(0x10208);\n      *pRc = iVar7;\n    }\n  }\n  return (u8 *)0x0;\n}\n\n" (ERROR "u8 * __regparm3 pageFindSlot(MemPage *pPg,int nByte,int *pRc)" (binary_expression "u8 * __regparm3 pageFindSlot(MemPage *pPg,int nByte,int *pRc)" identifier * (ERROR "__regparm3" identifier) (call_expression "pageFindSlot(MemPage *pPg,int nByte,int *pRc)" identifier (argument_list "(MemPage *pPg,int nByte,int *pRc)" ( (binary_expression "MemPage *pPg" identifier * identifier) , (ERROR "int" identifier) identifier , (binary_expression "int *pRc" identifier * identifier) ))))) (compound_statement "{\n  u8 *puVar1;\n  u8 *puVar2;\n  byte *pbVar3;\n  u8 *puVar4;\n  uint uVar5;\n  uint uVar6;\n  int iVar7;\n  int iVar8;\n  uint uVar9;\n  uint uVar10;\n  uint uVar11;\n  \n  uVar10 = (uint)pPg->hdrOffset;\n  puVar4 = pPg->aData;\n  iVar7 = pPg->pBt->usableSize - nByte;\n  uVar11 = (uint)CONCAT11(puVar4[uVar10 + 1],puVar4[uVar10 + 2]);\n  if (iVar7 < (int)uVar11) {\nLAB_00038eb0:\n    if (iVar7 + -3 + nByte <= (int)uVar11) {\n      iVar7 = sqlite3CorruptError(0x1021d);\n      *pRc = iVar7;\n      return (u8 *)0x0;\n    }\n  }\n  else {\n    puVar1 = puVar4 + uVar11 + 2;\n    puVar2 = puVar4 + uVar11 + 3;\n    uVar9 = (uint)CONCAT11(*puVar1,*puVar2);\n    iVar8 = uVar9 - nByte;\n    uVar5 = uVar10 + 1;\n    uVar6 = uVar11;\n    while (iVar8 < 0) {\n      uVar11 = (uint)CONCAT11(puVar4[uVar6],puVar4[uVar6 + 1]);\n      if (uVar11 <= uVar9 + uVar6) {\n        if (uVar11 == 0) {\n          return (u8 *)0x0;\n        }\n        iVar7 = sqlite3CorruptError(0x10216);\n        *pRc = iVar7;\n        return (u8 *)0x0;\n      }\n      if (iVar7 < (int)uVar11) goto LAB_00038eb0;\n      puVar1 = puVar4 + uVar11 + 2;\n      puVar2 = puVar4 + uVar11 + 3;\n      uVar9 = (uint)CONCAT11(*puVar1,puVar4[uVar11 + 3]);\n      uVar5 = uVar6;\n      uVar6 = uVar11;\n      iVar8 = uVar9 - nByte;\n    }\n    if (iVar8 < 4) {\n      pbVar3 = puVar4 + uVar10 + 7;\n      if (*pbVar3 < 0x3a) {\n        *(undefined2 *)(puVar4 + uVar5) = *(undefined2 *)(puVar4 + uVar6);\n        *pbVar3 = *pbVar3 + (u8)iVar8;\nLAB_00038f08:\n        return puVar4 + uVar6 + iVar8;\n      }\n    }\n    else {\n      if ((int)(uVar6 + iVar8) <= iVar7) {\n        *puVar1 = (u8)((uint)iVar8 >> 8);\n        *puVar2 = (u8)iVar8;\n        goto LAB_00038f08;\n      }\n      iVar7 = sqlite3CorruptError(0x10208);\n      *pRc = iVar7;\n    }\n  }\n  return (u8 *)0x0;\n}" { (declaration "u8 *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "u8 *puVar2;" type_identifier (pointer_declarator "*puVar2" * identifier) ;) (declaration "byte *pbVar3;" type_identifier (pointer_declarator "*pbVar3" * identifier) ;) (declaration "u8 *puVar4;" type_identifier (pointer_declarator "*puVar4" * identifier) ;) (declaration "uint uVar5;" type_identifier identifier ;) (declaration "uint uVar6;" type_identifier identifier ;) (declaration "int iVar7;" primitive_type identifier ;) (declaration "int iVar8;" primitive_type identifier ;) (declaration "uint uVar9;" type_identifier identifier ;) (declaration "uint uVar10;" type_identifier identifier ;) (declaration "uint uVar11;" type_identifier identifier ;) (expression_statement "uVar10 = (uint)pPg->hdrOffset;" (assignment_expression "uVar10 = (uint)pPg->hdrOffset" identifier = (cast_expression "(uint)pPg->hdrOffset" ( (type_descriptor "uint" type_identifier) ) (field_expression "pPg->hdrOffset" identifier -> field_identifier))) ;) (expression_statement "puVar4 = pPg->aData;" (assignment_expression "puVar4 = pPg->aData" identifier = (field_expression "pPg->aData" identifier -> field_identifier)) ;) (expression_statement "iVar7 = pPg->pBt->usableSize - nByte;" (assignment_expression "iVar7 = pPg->pBt->usableSize - nByte" identifier = (binary_expression "pPg->pBt->usableSize - nByte" (field_expression "pPg->pBt->usableSize" (field_expression "pPg->pBt" identifier -> field_identifier) -> field_identifier) - identifier)) ;) (expression_statement "uVar11 = (uint)CONCAT11(puVar4[uVar10 + 1],puVar4[uVar10 + 2]);" (assignment_expression "uVar11 = (uint)CONCAT11(puVar4[uVar10 + 1],puVar4[uVar10 + 2])" identifier = (cast_expression "(uint)CONCAT11(puVar4[uVar10 + 1],puVar4[uVar10 + 2])" ( (type_descriptor "uint" type_identifier) ) (call_expression "CONCAT11(puVar4[uVar10 + 1],puVar4[uVar10 + 2])" identifier (argument_list "(puVar4[uVar10 + 1],puVar4[uVar10 + 2])" ( (subscript_expression "puVar4[uVar10 + 1]" identifier [ (binary_expression "uVar10 + 1" identifier + number_literal) ]) , (subscript_expression "puVar4[uVar10 + 2]" identifier [ (binary_expression "uVar10 + 2" identifier + number_literal) ]) ))))) ;) (if_statement "if (iVar7 < (int)uVar11) {\nLAB_00038eb0:\n    if (iVar7 + -3 + nByte <= (int)uVar11) {\n      iVar7 = sqlite3CorruptError(0x1021d);\n      *pRc = iVar7;\n      return (u8 *)0x0;\n    }\n  }\n  else {\n    puVar1 = puVar4 + uVar11 + 2;\n    puVar2 = puVar4 + uVar11 + 3;\n    uVar9 = (uint)CONCAT11(*puVar1,*puVar2);\n    iVar8 = uVar9 - nByte;\n    uVar5 = uVar10 + 1;\n    uVar6 = uVar11;\n    while (iVar8 < 0) {\n      uVar11 = (uint)CONCAT11(puVar4[uVar6],puVar4[uVar6 + 1]);\n      if (uVar11 <= uVar9 + uVar6) {\n        if (uVar11 == 0) {\n          return (u8 *)0x0;\n        }\n        iVar7 = sqlite3CorruptError(0x10216);\n        *pRc = iVar7;\n        return (u8 *)0x0;\n      }\n      if (iVar7 < (int)uVar11) goto LAB_00038eb0;\n      puVar1 = puVar4 + uVar11 + 2;\n      puVar2 = puVar4 + uVar11 + 3;\n      uVar9 = (uint)CONCAT11(*puVar1,puVar4[uVar11 + 3]);\n      uVar5 = uVar6;\n      uVar6 = uVar11;\n      iVar8 = uVar9 - nByte;\n    }\n    if (iVar8 < 4) {\n      pbVar3 = puVar4 + uVar10 + 7;\n      if (*pbVar3 < 0x3a) {\n        *(undefined2 *)(puVar4 + uVar5) = *(undefined2 *)(puVar4 + uVar6);\n        *pbVar3 = *pbVar3 + (u8)iVar8;\nLAB_00038f08:\n        return puVar4 + uVar6 + iVar8;\n      }\n    }\n    else {\n      if ((int)(uVar6 + iVar8) <= iVar7) {\n        *puVar1 = (u8)((uint)iVar8 >> 8);\n        *puVar2 = (u8)iVar8;\n        goto LAB_00038f08;\n      }\n      iVar7 = sqlite3CorruptError(0x10208);\n      *pRc = iVar7;\n    }\n  }" if (parenthesized_expression "(iVar7 < (int)uVar11)" ( (binary_expression "iVar7 < (int)uVar11" identifier < (cast_expression "(int)uVar11" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\nLAB_00038eb0:\n    if (iVar7 + -3 + nByte <= (int)uVar11) {\n      iVar7 = sqlite3CorruptError(0x1021d);\n      *pRc = iVar7;\n      return (u8 *)0x0;\n    }\n  }" { (labeled_statement "LAB_00038eb0:\n    if (iVar7 + -3 + nByte <= (int)uVar11) {\n      iVar7 = sqlite3CorruptError(0x1021d);\n      *pRc = iVar7;\n      return (u8 *)0x0;\n    }" statement_identifier : (if_statement "if (iVar7 + -3 + nByte <= (int)uVar11) {\n      iVar7 = sqlite3CorruptError(0x1021d);\n      *pRc = iVar7;\n      return (u8 *)0x0;\n    }" if (parenthesized_expression "(iVar7 + -3 + nByte <= (int)uVar11)" ( (binary_expression "iVar7 + -3 + nByte <= (int)uVar11" (binary_expression "iVar7 + -3 + nByte" (binary_expression "iVar7 + -3" identifier + number_literal) + identifier) <= (cast_expression "(int)uVar11" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n      iVar7 = sqlite3CorruptError(0x1021d);\n      *pRc = iVar7;\n      return (u8 *)0x0;\n    }" { (expression_statement "iVar7 = sqlite3CorruptError(0x1021d);" (assignment_expression "iVar7 = sqlite3CorruptError(0x1021d)" identifier = (call_expression "sqlite3CorruptError(0x1021d)" identifier (argument_list "(0x1021d)" ( number_literal )))) ;) (expression_statement "*pRc = iVar7;" (assignment_expression "*pRc = iVar7" (pointer_expression "*pRc" * identifier) = identifier) ;) (return_statement "return (u8 *)0x0;" return (cast_expression "(u8 *)0x0" ( (type_descriptor "u8 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) ;) }))) }) (else_clause "else {\n    puVar1 = puVar4 + uVar11 + 2;\n    puVar2 = puVar4 + uVar11 + 3;\n    uVar9 = (uint)CONCAT11(*puVar1,*puVar2);\n    iVar8 = uVar9 - nByte;\n    uVar5 = uVar10 + 1;\n    uVar6 = uVar11;\n    while (iVar8 < 0) {\n      uVar11 = (uint)CONCAT11(puVar4[uVar6],puVar4[uVar6 + 1]);\n      if (uVar11 <= uVar9 + uVar6) {\n        if (uVar11 == 0) {\n          return (u8 *)0x0;\n        }\n        iVar7 = sqlite3CorruptError(0x10216);\n        *pRc = iVar7;\n        return (u8 *)0x0;\n      }\n      if (iVar7 < (int)uVar11) goto LAB_00038eb0;\n      puVar1 = puVar4 + uVar11 + 2;\n      puVar2 = puVar4 + uVar11 + 3;\n      uVar9 = (uint)CONCAT11(*puVar1,puVar4[uVar11 + 3]);\n      uVar5 = uVar6;\n      uVar6 = uVar11;\n      iVar8 = uVar9 - nByte;\n    }\n    if (iVar8 < 4) {\n      pbVar3 = puVar4 + uVar10 + 7;\n      if (*pbVar3 < 0x3a) {\n        *(undefined2 *)(puVar4 + uVar5) = *(undefined2 *)(puVar4 + uVar6);\n        *pbVar3 = *pbVar3 + (u8)iVar8;\nLAB_00038f08:\n        return puVar4 + uVar6 + iVar8;\n      }\n    }\n    else {\n      if ((int)(uVar6 + iVar8) <= iVar7) {\n        *puVar1 = (u8)((uint)iVar8 >> 8);\n        *puVar2 = (u8)iVar8;\n        goto LAB_00038f08;\n      }\n      iVar7 = sqlite3CorruptError(0x10208);\n      *pRc = iVar7;\n    }\n  }" else (compound_statement "{\n    puVar1 = puVar4 + uVar11 + 2;\n    puVar2 = puVar4 + uVar11 + 3;\n    uVar9 = (uint)CONCAT11(*puVar1,*puVar2);\n    iVar8 = uVar9 - nByte;\n    uVar5 = uVar10 + 1;\n    uVar6 = uVar11;\n    while (iVar8 < 0) {\n      uVar11 = (uint)CONCAT11(puVar4[uVar6],puVar4[uVar6 + 1]);\n      if (uVar11 <= uVar9 + uVar6) {\n        if (uVar11 == 0) {\n          return (u8 *)0x0;\n        }\n        iVar7 = sqlite3CorruptError(0x10216);\n        *pRc = iVar7;\n        return (u8 *)0x0;\n      }\n      if (iVar7 < (int)uVar11) goto LAB_00038eb0;\n      puVar1 = puVar4 + uVar11 + 2;\n      puVar2 = puVar4 + uVar11 + 3;\n      uVar9 = (uint)CONCAT11(*puVar1,puVar4[uVar11 + 3]);\n      uVar5 = uVar6;\n      uVar6 = uVar11;\n      iVar8 = uVar9 - nByte;\n    }\n    if (iVar8 < 4) {\n      pbVar3 = puVar4 + uVar10 + 7;\n      if (*pbVar3 < 0x3a) {\n        *(undefined2 *)(puVar4 + uVar5) = *(undefined2 *)(puVar4 + uVar6);\n        *pbVar3 = *pbVar3 + (u8)iVar8;\nLAB_00038f08:\n        return puVar4 + uVar6 + iVar8;\n      }\n    }\n    else {\n      if ((int)(uVar6 + iVar8) <= iVar7) {\n        *puVar1 = (u8)((uint)iVar8 >> 8);\n        *puVar2 = (u8)iVar8;\n        goto LAB_00038f08;\n      }\n      iVar7 = sqlite3CorruptError(0x10208);\n      *pRc = iVar7;\n    }\n  }" { (expression_statement "puVar1 = puVar4 + uVar11 + 2;" (assignment_expression "puVar1 = puVar4 + uVar11 + 2" identifier = (binary_expression "puVar4 + uVar11 + 2" (binary_expression "puVar4 + uVar11" identifier + identifier) + number_literal)) ;) (expression_statement "puVar2 = puVar4 + uVar11 + 3;" (assignment_expression "puVar2 = puVar4 + uVar11 + 3" identifier = (binary_expression "puVar4 + uVar11 + 3" (binary_expression "puVar4 + uVar11" identifier + identifier) + number_literal)) ;) (expression_statement "uVar9 = (uint)CONCAT11(*puVar1,*puVar2);" (assignment_expression "uVar9 = (uint)CONCAT11(*puVar1,*puVar2)" identifier = (cast_expression "(uint)CONCAT11(*puVar1,*puVar2)" ( (type_descriptor "uint" type_identifier) ) (call_expression "CONCAT11(*puVar1,*puVar2)" identifier (argument_list "(*puVar1,*puVar2)" ( (pointer_expression "*puVar1" * identifier) , (pointer_expression "*puVar2" * identifier) ))))) ;) (expression_statement "iVar8 = uVar9 - nByte;" (assignment_expression "iVar8 = uVar9 - nByte" identifier = (binary_expression "uVar9 - nByte" identifier - identifier)) ;) (expression_statement "uVar5 = uVar10 + 1;" (assignment_expression "uVar5 = uVar10 + 1" identifier = (binary_expression "uVar10 + 1" identifier + number_literal)) ;) (expression_statement "uVar6 = uVar11;" (assignment_expression "uVar6 = uVar11" identifier = identifier) ;) (while_statement "while (iVar8 < 0) {\n      uVar11 = (uint)CONCAT11(puVar4[uVar6],puVar4[uVar6 + 1]);\n      if (uVar11 <= uVar9 + uVar6) {\n        if (uVar11 == 0) {\n          return (u8 *)0x0;\n        }\n        iVar7 = sqlite3CorruptError(0x10216);\n        *pRc = iVar7;\n        return (u8 *)0x0;\n      }\n      if (iVar7 < (int)uVar11) goto LAB_00038eb0;\n      puVar1 = puVar4 + uVar11 + 2;\n      puVar2 = puVar4 + uVar11 + 3;\n      uVar9 = (uint)CONCAT11(*puVar1,puVar4[uVar11 + 3]);\n      uVar5 = uVar6;\n      uVar6 = uVar11;\n      iVar8 = uVar9 - nByte;\n    }" while (parenthesized_expression "(iVar8 < 0)" ( (binary_expression "iVar8 < 0" identifier < number_literal) )) (compound_statement "{\n      uVar11 = (uint)CONCAT11(puVar4[uVar6],puVar4[uVar6 + 1]);\n      if (uVar11 <= uVar9 + uVar6) {\n        if (uVar11 == 0) {\n          return (u8 *)0x0;\n        }\n        iVar7 = sqlite3CorruptError(0x10216);\n        *pRc = iVar7;\n        return (u8 *)0x0;\n      }\n      if (iVar7 < (int)uVar11) goto LAB_00038eb0;\n      puVar1 = puVar4 + uVar11 + 2;\n      puVar2 = puVar4 + uVar11 + 3;\n      uVar9 = (uint)CONCAT11(*puVar1,puVar4[uVar11 + 3]);\n      uVar5 = uVar6;\n      uVar6 = uVar11;\n      iVar8 = uVar9 - nByte;\n    }" { (expression_statement "uVar11 = (uint)CONCAT11(puVar4[uVar6],puVar4[uVar6 + 1]);" (assignment_expression "uVar11 = (uint)CONCAT11(puVar4[uVar6],puVar4[uVar6 + 1])" identifier = (cast_expression "(uint)CONCAT11(puVar4[uVar6],puVar4[uVar6 + 1])" ( (type_descriptor "uint" type_identifier) ) (call_expression "CONCAT11(puVar4[uVar6],puVar4[uVar6 + 1])" identifier (argument_list "(puVar4[uVar6],puVar4[uVar6 + 1])" ( (subscript_expression "puVar4[uVar6]" identifier [ identifier ]) , (subscript_expression "puVar4[uVar6 + 1]" identifier [ (binary_expression "uVar6 + 1" identifier + number_literal) ]) ))))) ;) (if_statement "if (uVar11 <= uVar9 + uVar6) {\n        if (uVar11 == 0) {\n          return (u8 *)0x0;\n        }\n        iVar7 = sqlite3CorruptError(0x10216);\n        *pRc = iVar7;\n        return (u8 *)0x0;\n      }" if (parenthesized_expression "(uVar11 <= uVar9 + uVar6)" ( (binary_expression "uVar11 <= uVar9 + uVar6" identifier <= (binary_expression "uVar9 + uVar6" identifier + identifier)) )) (compound_statement "{\n        if (uVar11 == 0) {\n          return (u8 *)0x0;\n        }\n        iVar7 = sqlite3CorruptError(0x10216);\n        *pRc = iVar7;\n        return (u8 *)0x0;\n      }" { (if_statement "if (uVar11 == 0) {\n          return (u8 *)0x0;\n        }" if (parenthesized_expression "(uVar11 == 0)" ( (binary_expression "uVar11 == 0" identifier == number_literal) )) (compound_statement "{\n          return (u8 *)0x0;\n        }" { (return_statement "return (u8 *)0x0;" return (cast_expression "(u8 *)0x0" ( (type_descriptor "u8 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) ;) })) (expression_statement "iVar7 = sqlite3CorruptError(0x10216);" (assignment_expression "iVar7 = sqlite3CorruptError(0x10216)" identifier = (call_expression "sqlite3CorruptError(0x10216)" identifier (argument_list "(0x10216)" ( number_literal )))) ;) (expression_statement "*pRc = iVar7;" (assignment_expression "*pRc = iVar7" (pointer_expression "*pRc" * identifier) = identifier) ;) (return_statement "return (u8 *)0x0;" return (cast_expression "(u8 *)0x0" ( (type_descriptor "u8 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) ;) })) (if_statement "if (iVar7 < (int)uVar11) goto LAB_00038eb0;" if (parenthesized_expression "(iVar7 < (int)uVar11)" ( (binary_expression "iVar7 < (int)uVar11" identifier < (cast_expression "(int)uVar11" ( (type_descriptor "int" primitive_type) ) identifier)) )) (goto_statement "goto LAB_00038eb0;" goto statement_identifier ;)) (expression_statement "puVar1 = puVar4 + uVar11 + 2;" (assignment_expression "puVar1 = puVar4 + uVar11 + 2" identifier = (binary_expression "puVar4 + uVar11 + 2" (binary_expression "puVar4 + uVar11" identifier + identifier) + number_literal)) ;) (expression_statement "puVar2 = puVar4 + uVar11 + 3;" (assignment_expression "puVar2 = puVar4 + uVar11 + 3" identifier = (binary_expression "puVar4 + uVar11 + 3" (binary_expression "puVar4 + uVar11" identifier + identifier) + number_literal)) ;) (expression_statement "uVar9 = (uint)CONCAT11(*puVar1,puVar4[uVar11 + 3]);" (assignment_expression "uVar9 = (uint)CONCAT11(*puVar1,puVar4[uVar11 + 3])" identifier = (cast_expression "(uint)CONCAT11(*puVar1,puVar4[uVar11 + 3])" ( (type_descriptor "uint" type_identifier) ) (call_expression "CONCAT11(*puVar1,puVar4[uVar11 + 3])" identifier (argument_list "(*puVar1,puVar4[uVar11 + 3])" ( (pointer_expression "*puVar1" * identifier) , (subscript_expression "puVar4[uVar11 + 3]" identifier [ (binary_expression "uVar11 + 3" identifier + number_literal) ]) ))))) ;) (expression_statement "uVar5 = uVar6;" (assignment_expression "uVar5 = uVar6" identifier = identifier) ;) (expression_statement "uVar6 = uVar11;" (assignment_expression "uVar6 = uVar11" identifier = identifier) ;) (expression_statement "iVar8 = uVar9 - nByte;" (assignment_expression "iVar8 = uVar9 - nByte" identifier = (binary_expression "uVar9 - nByte" identifier - identifier)) ;) })) (if_statement "if (iVar8 < 4) {\n      pbVar3 = puVar4 + uVar10 + 7;\n      if (*pbVar3 < 0x3a) {\n        *(undefined2 *)(puVar4 + uVar5) = *(undefined2 *)(puVar4 + uVar6);\n        *pbVar3 = *pbVar3 + (u8)iVar8;\nLAB_00038f08:\n        return puVar4 + uVar6 + iVar8;\n      }\n    }\n    else {\n      if ((int)(uVar6 + iVar8) <= iVar7) {\n        *puVar1 = (u8)((uint)iVar8 >> 8);\n        *puVar2 = (u8)iVar8;\n        goto LAB_00038f08;\n      }\n      iVar7 = sqlite3CorruptError(0x10208);\n      *pRc = iVar7;\n    }" if (parenthesized_expression "(iVar8 < 4)" ( (binary_expression "iVar8 < 4" identifier < number_literal) )) (compound_statement "{\n      pbVar3 = puVar4 + uVar10 + 7;\n      if (*pbVar3 < 0x3a) {\n        *(undefined2 *)(puVar4 + uVar5) = *(undefined2 *)(puVar4 + uVar6);\n        *pbVar3 = *pbVar3 + (u8)iVar8;\nLAB_00038f08:\n        return puVar4 + uVar6 + iVar8;\n      }\n    }" { (expression_statement "pbVar3 = puVar4 + uVar10 + 7;" (assignment_expression "pbVar3 = puVar4 + uVar10 + 7" identifier = (binary_expression "puVar4 + uVar10 + 7" (binary_expression "puVar4 + uVar10" identifier + identifier) + number_literal)) ;) (if_statement "if (*pbVar3 < 0x3a) {\n        *(undefined2 *)(puVar4 + uVar5) = *(undefined2 *)(puVar4 + uVar6);\n        *pbVar3 = *pbVar3 + (u8)iVar8;\nLAB_00038f08:\n        return puVar4 + uVar6 + iVar8;\n      }" if (parenthesized_expression "(*pbVar3 < 0x3a)" ( (binary_expression "*pbVar3 < 0x3a" (pointer_expression "*pbVar3" * identifier) < number_literal) )) (compound_statement "{\n        *(undefined2 *)(puVar4 + uVar5) = *(undefined2 *)(puVar4 + uVar6);\n        *pbVar3 = *pbVar3 + (u8)iVar8;\nLAB_00038f08:\n        return puVar4 + uVar6 + iVar8;\n      }" { (expression_statement "*(undefined2 *)(puVar4 + uVar5) = *(undefined2 *)(puVar4 + uVar6);" (assignment_expression "*(undefined2 *)(puVar4 + uVar5) = *(undefined2 *)(puVar4 + uVar6)" (pointer_expression "*(undefined2 *)(puVar4 + uVar5)" * (cast_expression "(undefined2 *)(puVar4 + uVar5)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar4 + uVar5)" ( (binary_expression "puVar4 + uVar5" identifier + identifier) )))) = (pointer_expression "*(undefined2 *)(puVar4 + uVar6)" * (cast_expression "(undefined2 *)(puVar4 + uVar6)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar4 + uVar6)" ( (binary_expression "puVar4 + uVar6" identifier + identifier) ))))) ;) (expression_statement "*pbVar3 = *pbVar3 + (u8)iVar8;" (assignment_expression "*pbVar3 = *pbVar3 + (u8)iVar8" (pointer_expression "*pbVar3" * identifier) = (binary_expression "*pbVar3 + (u8)iVar8" (pointer_expression "*pbVar3" * identifier) + (cast_expression "(u8)iVar8" ( (type_descriptor "u8" type_identifier) ) identifier))) ;) (labeled_statement "LAB_00038f08:\n        return puVar4 + uVar6 + iVar8;" statement_identifier : (return_statement "return puVar4 + uVar6 + iVar8;" return (binary_expression "puVar4 + uVar6 + iVar8" (binary_expression "puVar4 + uVar6" identifier + identifier) + identifier) ;)) })) }) (else_clause "else {\n      if ((int)(uVar6 + iVar8) <= iVar7) {\n        *puVar1 = (u8)((uint)iVar8 >> 8);\n        *puVar2 = (u8)iVar8;\n        goto LAB_00038f08;\n      }\n      iVar7 = sqlite3CorruptError(0x10208);\n      *pRc = iVar7;\n    }" else (compound_statement "{\n      if ((int)(uVar6 + iVar8) <= iVar7) {\n        *puVar1 = (u8)((uint)iVar8 >> 8);\n        *puVar2 = (u8)iVar8;\n        goto LAB_00038f08;\n      }\n      iVar7 = sqlite3CorruptError(0x10208);\n      *pRc = iVar7;\n    }" { (if_statement "if ((int)(uVar6 + iVar8) <= iVar7) {\n        *puVar1 = (u8)((uint)iVar8 >> 8);\n        *puVar2 = (u8)iVar8;\n        goto LAB_00038f08;\n      }" if (parenthesized_expression "((int)(uVar6 + iVar8) <= iVar7)" ( (binary_expression "(int)(uVar6 + iVar8) <= iVar7" (cast_expression "(int)(uVar6 + iVar8)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(uVar6 + iVar8)" ( (binary_expression "uVar6 + iVar8" identifier + identifier) ))) <= identifier) )) (compound_statement "{\n        *puVar1 = (u8)((uint)iVar8 >> 8);\n        *puVar2 = (u8)iVar8;\n        goto LAB_00038f08;\n      }" { (expression_statement "*puVar1 = (u8)((uint)iVar8 >> 8);" (assignment_expression "*puVar1 = (u8)((uint)iVar8 >> 8)" (pointer_expression "*puVar1" * identifier) = (call_expression "(u8)((uint)iVar8 >> 8)" (parenthesized_expression "(u8)" ( identifier )) (argument_list "((uint)iVar8 >> 8)" ( (binary_expression "(uint)iVar8 >> 8" (cast_expression "(uint)iVar8" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "*puVar2 = (u8)iVar8;" (assignment_expression "*puVar2 = (u8)iVar8" (pointer_expression "*puVar2" * identifier) = (cast_expression "(u8)iVar8" ( (type_descriptor "u8" type_identifier) ) identifier)) ;) (goto_statement "goto LAB_00038f08;" goto statement_identifier ;) })) (expression_statement "iVar7 = sqlite3CorruptError(0x10208);" (assignment_expression "iVar7 = sqlite3CorruptError(0x10208)" identifier = (call_expression "sqlite3CorruptError(0x10208)" identifier (argument_list "(0x10208)" ( number_literal )))) ;) (expression_statement "*pRc = iVar7;" (assignment_expression "*pRc = iVar7" (pointer_expression "*pRc" * identifier) = identifier) ;) }))) }))) (return_statement "return (u8 *)0x0;" return (cast_expression "(u8 *)0x0" ( (type_descriptor "u8 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) ;) }))
(translation_unit "int __regparm3 FUN_00038de0(int param_1,int param_2,undefined4 *param_3)\n\n{\n  undefined1 *puVar1;\n  char *pcVar2;\n  byte *pbVar3;\n  int iVar4;\n  uint uVar5;\n  uint uVar6;\n  int iVar7;\n  undefined4 uVar8;\n  int iVar9;\n  uint uVar10;\n  uint uVar11;\n  uint uVar12;\n  \n  uVar11 = (uint)*(byte *)(param_1 + 9);\n  iVar4 = *(int *)(param_1 + 0x38);\n  iVar7 = *(int *)(*(int *)(param_1 + 0x34) + 0x28) - param_2;\n  uVar12 = (uint)CONCAT11(*(undefined1 *)(iVar4 + 1 + uVar11),*(undefined1 *)(iVar4 + 2 + uVar11));\n  if (iVar7 < (int)uVar12) {\nLAB_00038eb0:\n    if (iVar7 + -3 + param_2 <= (int)uVar12) {\n      uVar8 = FUN_000383f0();\n      *param_3 = uVar8;\n      return 0;\n    }\n  }\n  else {\n    puVar1 = (undefined1 *)(iVar4 + 2 + uVar12);\n    pcVar2 = (char *)(iVar4 + 3 + uVar12);\n    uVar10 = (uint)CONCAT11(*puVar1,*pcVar2);\n    iVar9 = uVar10 - param_2;\n    uVar5 = uVar11 + 1;\n    uVar6 = uVar12;\n    while (iVar9 < 0) {\n      uVar12 = (uint)CONCAT11(*(undefined1 *)(iVar4 + uVar6),*(undefined1 *)(iVar4 + 1 + uVar6));\n      if (uVar12 <= uVar10 + uVar6) {\n        if (uVar12 == 0) {\n          return 0;\n        }\n        uVar8 = FUN_000383f0();\n        *param_3 = uVar8;\n        return 0;\n      }\n      if (iVar7 < (int)uVar12) goto LAB_00038eb0;\n      puVar1 = (undefined1 *)(iVar4 + 2 + uVar12);\n      pcVar2 = (char *)(iVar4 + 3 + uVar12);\n      uVar10 = (uint)CONCAT11(*puVar1,*(undefined1 *)(iVar4 + 3 + uVar12));\n      uVar5 = uVar6;\n      uVar6 = uVar12;\n      iVar9 = uVar10 - param_2;\n    }\n    if (iVar9 < 4) {\n      pbVar3 = (byte *)(iVar4 + 7 + uVar11);\n      if (*pbVar3 < 0x3a) {\n        *(undefined2 *)(iVar4 + uVar5) = *(undefined2 *)(iVar4 + uVar6);\n        *pbVar3 = *pbVar3 + (char)iVar9;\nLAB_00038f08:\n        return iVar4 + uVar6 + iVar9;\n      }\n    }\n    else {\n      if ((int)(uVar6 + iVar9) <= iVar7) {\n        *puVar1 = (char)((uint)iVar9 >> 8);\n        *pcVar2 = (char)iVar9;\n        goto LAB_00038f08;\n      }\n      uVar8 = FUN_000383f0();\n      *param_3 = uVar8;\n    }\n  }\n  return 0;\n}\n\n" (function_definition "int __regparm3 FUN_00038de0(int param_1,int param_2,undefined4 *param_3)\n\n{\n  undefined1 *puVar1;\n  char *pcVar2;\n  byte *pbVar3;\n  int iVar4;\n  uint uVar5;\n  uint uVar6;\n  int iVar7;\n  undefined4 uVar8;\n  int iVar9;\n  uint uVar10;\n  uint uVar11;\n  uint uVar12;\n  \n  uVar11 = (uint)*(byte *)(param_1 + 9);\n  iVar4 = *(int *)(param_1 + 0x38);\n  iVar7 = *(int *)(*(int *)(param_1 + 0x34) + 0x28) - param_2;\n  uVar12 = (uint)CONCAT11(*(undefined1 *)(iVar4 + 1 + uVar11),*(undefined1 *)(iVar4 + 2 + uVar11));\n  if (iVar7 < (int)uVar12) {\nLAB_00038eb0:\n    if (iVar7 + -3 + param_2 <= (int)uVar12) {\n      uVar8 = FUN_000383f0();\n      *param_3 = uVar8;\n      return 0;\n    }\n  }\n  else {\n    puVar1 = (undefined1 *)(iVar4 + 2 + uVar12);\n    pcVar2 = (char *)(iVar4 + 3 + uVar12);\n    uVar10 = (uint)CONCAT11(*puVar1,*pcVar2);\n    iVar9 = uVar10 - param_2;\n    uVar5 = uVar11 + 1;\n    uVar6 = uVar12;\n    while (iVar9 < 0) {\n      uVar12 = (uint)CONCAT11(*(undefined1 *)(iVar4 + uVar6),*(undefined1 *)(iVar4 + 1 + uVar6));\n      if (uVar12 <= uVar10 + uVar6) {\n        if (uVar12 == 0) {\n          return 0;\n        }\n        uVar8 = FUN_000383f0();\n        *param_3 = uVar8;\n        return 0;\n      }\n      if (iVar7 < (int)uVar12) goto LAB_00038eb0;\n      puVar1 = (undefined1 *)(iVar4 + 2 + uVar12);\n      pcVar2 = (char *)(iVar4 + 3 + uVar12);\n      uVar10 = (uint)CONCAT11(*puVar1,*(undefined1 *)(iVar4 + 3 + uVar12));\n      uVar5 = uVar6;\n      uVar6 = uVar12;\n      iVar9 = uVar10 - param_2;\n    }\n    if (iVar9 < 4) {\n      pbVar3 = (byte *)(iVar4 + 7 + uVar11);\n      if (*pbVar3 < 0x3a) {\n        *(undefined2 *)(iVar4 + uVar5) = *(undefined2 *)(iVar4 + uVar6);\n        *pbVar3 = *pbVar3 + (char)iVar9;\nLAB_00038f08:\n        return iVar4 + uVar6 + iVar9;\n      }\n    }\n    else {\n      if ((int)(uVar6 + iVar9) <= iVar7) {\n        *puVar1 = (char)((uint)iVar9 >> 8);\n        *pcVar2 = (char)iVar9;\n        goto LAB_00038f08;\n      }\n      uVar8 = FUN_000383f0();\n      *param_3 = uVar8;\n    }\n  }\n  return 0;\n}" primitive_type (ERROR "__regparm3" identifier) (function_declarator "FUN_00038de0(int param_1,int param_2,undefined4 *param_3)" identifier (parameter_list "(int param_1,int param_2,undefined4 *param_3)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "int param_2" primitive_type identifier) , (parameter_declaration "undefined4 *param_3" type_identifier (pointer_declarator "*param_3" * identifier)) ))) (compound_statement "{\n  undefined1 *puVar1;\n  char *pcVar2;\n  byte *pbVar3;\n  int iVar4;\n  uint uVar5;\n  uint uVar6;\n  int iVar7;\n  undefined4 uVar8;\n  int iVar9;\n  uint uVar10;\n  uint uVar11;\n  uint uVar12;\n  \n  uVar11 = (uint)*(byte *)(param_1 + 9);\n  iVar4 = *(int *)(param_1 + 0x38);\n  iVar7 = *(int *)(*(int *)(param_1 + 0x34) + 0x28) - param_2;\n  uVar12 = (uint)CONCAT11(*(undefined1 *)(iVar4 + 1 + uVar11),*(undefined1 *)(iVar4 + 2 + uVar11));\n  if (iVar7 < (int)uVar12) {\nLAB_00038eb0:\n    if (iVar7 + -3 + param_2 <= (int)uVar12) {\n      uVar8 = FUN_000383f0();\n      *param_3 = uVar8;\n      return 0;\n    }\n  }\n  else {\n    puVar1 = (undefined1 *)(iVar4 + 2 + uVar12);\n    pcVar2 = (char *)(iVar4 + 3 + uVar12);\n    uVar10 = (uint)CONCAT11(*puVar1,*pcVar2);\n    iVar9 = uVar10 - param_2;\n    uVar5 = uVar11 + 1;\n    uVar6 = uVar12;\n    while (iVar9 < 0) {\n      uVar12 = (uint)CONCAT11(*(undefined1 *)(iVar4 + uVar6),*(undefined1 *)(iVar4 + 1 + uVar6));\n      if (uVar12 <= uVar10 + uVar6) {\n        if (uVar12 == 0) {\n          return 0;\n        }\n        uVar8 = FUN_000383f0();\n        *param_3 = uVar8;\n        return 0;\n      }\n      if (iVar7 < (int)uVar12) goto LAB_00038eb0;\n      puVar1 = (undefined1 *)(iVar4 + 2 + uVar12);\n      pcVar2 = (char *)(iVar4 + 3 + uVar12);\n      uVar10 = (uint)CONCAT11(*puVar1,*(undefined1 *)(iVar4 + 3 + uVar12));\n      uVar5 = uVar6;\n      uVar6 = uVar12;\n      iVar9 = uVar10 - param_2;\n    }\n    if (iVar9 < 4) {\n      pbVar3 = (byte *)(iVar4 + 7 + uVar11);\n      if (*pbVar3 < 0x3a) {\n        *(undefined2 *)(iVar4 + uVar5) = *(undefined2 *)(iVar4 + uVar6);\n        *pbVar3 = *pbVar3 + (char)iVar9;\nLAB_00038f08:\n        return iVar4 + uVar6 + iVar9;\n      }\n    }\n    else {\n      if ((int)(uVar6 + iVar9) <= iVar7) {\n        *puVar1 = (char)((uint)iVar9 >> 8);\n        *pcVar2 = (char)iVar9;\n        goto LAB_00038f08;\n      }\n      uVar8 = FUN_000383f0();\n      *param_3 = uVar8;\n    }\n  }\n  return 0;\n}" { (declaration "undefined1 *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "char *pcVar2;" primitive_type (pointer_declarator "*pcVar2" * identifier) ;) (declaration "byte *pbVar3;" type_identifier (pointer_declarator "*pbVar3" * identifier) ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "uint uVar5;" type_identifier identifier ;) (declaration "uint uVar6;" type_identifier identifier ;) (declaration "int iVar7;" primitive_type identifier ;) (declaration "undefined4 uVar8;" type_identifier identifier ;) (declaration "int iVar9;" primitive_type identifier ;) (declaration "uint uVar10;" type_identifier identifier ;) (declaration "uint uVar11;" type_identifier identifier ;) (declaration "uint uVar12;" type_identifier identifier ;) (expression_statement "uVar11 = (uint)*(byte *)(param_1 + 9);" (assignment_expression "uVar11 = (uint)*(byte *)(param_1 + 9)" identifier = (binary_expression "(uint)*(byte *)(param_1 + 9)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)(param_1 + 9)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 9)" ( (binary_expression "param_1 + 9" identifier + number_literal) ))))) ;) (expression_statement "iVar4 = *(int *)(param_1 + 0x38);" (assignment_expression "iVar4 = *(int *)(param_1 + 0x38)" identifier = (pointer_expression "*(int *)(param_1 + 0x38)" * (cast_expression "(int *)(param_1 + 0x38)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x38)" ( (binary_expression "param_1 + 0x38" identifier + number_literal) ))))) ;) (expression_statement "iVar7 = *(int *)(*(int *)(param_1 + 0x34) + 0x28) - param_2;" (assignment_expression "iVar7 = *(int *)(*(int *)(param_1 + 0x34) + 0x28) - param_2" identifier = (binary_expression "*(int *)(*(int *)(param_1 + 0x34) + 0x28) - param_2" (pointer_expression "*(int *)(*(int *)(param_1 + 0x34) + 0x28)" * (cast_expression "(int *)(*(int *)(param_1 + 0x34) + 0x28)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(param_1 + 0x34) + 0x28)" ( (binary_expression "*(int *)(param_1 + 0x34) + 0x28" (pointer_expression "*(int *)(param_1 + 0x34)" * (cast_expression "(int *)(param_1 + 0x34)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x34)" ( (binary_expression "param_1 + 0x34" identifier + number_literal) )))) + number_literal) )))) - identifier)) ;) (expression_statement "uVar12 = (uint)CONCAT11(*(undefined1 *)(iVar4 + 1 + uVar11),*(undefined1 *)(iVar4 + 2 + uVar11));" (assignment_expression "uVar12 = (uint)CONCAT11(*(undefined1 *)(iVar4 + 1 + uVar11),*(undefined1 *)(iVar4 + 2 + uVar11))" identifier = (cast_expression "(uint)CONCAT11(*(undefined1 *)(iVar4 + 1 + uVar11),*(undefined1 *)(iVar4 + 2 + uVar11))" ( (type_descriptor "uint" type_identifier) ) (call_expression "CONCAT11(*(undefined1 *)(iVar4 + 1 + uVar11),*(undefined1 *)(iVar4 + 2 + uVar11))" identifier (argument_list "(*(undefined1 *)(iVar4 + 1 + uVar11),*(undefined1 *)(iVar4 + 2 + uVar11))" ( (pointer_expression "*(undefined1 *)(iVar4 + 1 + uVar11)" * (cast_expression "(undefined1 *)(iVar4 + 1 + uVar11)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 1 + uVar11)" ( (binary_expression "iVar4 + 1 + uVar11" (binary_expression "iVar4 + 1" identifier + number_literal) + identifier) )))) , (pointer_expression "*(undefined1 *)(iVar4 + 2 + uVar11)" * (cast_expression "(undefined1 *)(iVar4 + 2 + uVar11)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 2 + uVar11)" ( (binary_expression "iVar4 + 2 + uVar11" (binary_expression "iVar4 + 2" identifier + number_literal) + identifier) )))) ))))) ;) (if_statement "if (iVar7 < (int)uVar12) {\nLAB_00038eb0:\n    if (iVar7 + -3 + param_2 <= (int)uVar12) {\n      uVar8 = FUN_000383f0();\n      *param_3 = uVar8;\n      return 0;\n    }\n  }\n  else {\n    puVar1 = (undefined1 *)(iVar4 + 2 + uVar12);\n    pcVar2 = (char *)(iVar4 + 3 + uVar12);\n    uVar10 = (uint)CONCAT11(*puVar1,*pcVar2);\n    iVar9 = uVar10 - param_2;\n    uVar5 = uVar11 + 1;\n    uVar6 = uVar12;\n    while (iVar9 < 0) {\n      uVar12 = (uint)CONCAT11(*(undefined1 *)(iVar4 + uVar6),*(undefined1 *)(iVar4 + 1 + uVar6));\n      if (uVar12 <= uVar10 + uVar6) {\n        if (uVar12 == 0) {\n          return 0;\n        }\n        uVar8 = FUN_000383f0();\n        *param_3 = uVar8;\n        return 0;\n      }\n      if (iVar7 < (int)uVar12) goto LAB_00038eb0;\n      puVar1 = (undefined1 *)(iVar4 + 2 + uVar12);\n      pcVar2 = (char *)(iVar4 + 3 + uVar12);\n      uVar10 = (uint)CONCAT11(*puVar1,*(undefined1 *)(iVar4 + 3 + uVar12));\n      uVar5 = uVar6;\n      uVar6 = uVar12;\n      iVar9 = uVar10 - param_2;\n    }\n    if (iVar9 < 4) {\n      pbVar3 = (byte *)(iVar4 + 7 + uVar11);\n      if (*pbVar3 < 0x3a) {\n        *(undefined2 *)(iVar4 + uVar5) = *(undefined2 *)(iVar4 + uVar6);\n        *pbVar3 = *pbVar3 + (char)iVar9;\nLAB_00038f08:\n        return iVar4 + uVar6 + iVar9;\n      }\n    }\n    else {\n      if ((int)(uVar6 + iVar9) <= iVar7) {\n        *puVar1 = (char)((uint)iVar9 >> 8);\n        *pcVar2 = (char)iVar9;\n        goto LAB_00038f08;\n      }\n      uVar8 = FUN_000383f0();\n      *param_3 = uVar8;\n    }\n  }" if (parenthesized_expression "(iVar7 < (int)uVar12)" ( (binary_expression "iVar7 < (int)uVar12" identifier < (cast_expression "(int)uVar12" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\nLAB_00038eb0:\n    if (iVar7 + -3 + param_2 <= (int)uVar12) {\n      uVar8 = FUN_000383f0();\n      *param_3 = uVar8;\n      return 0;\n    }\n  }" { (labeled_statement "LAB_00038eb0:\n    if (iVar7 + -3 + param_2 <= (int)uVar12) {\n      uVar8 = FUN_000383f0();\n      *param_3 = uVar8;\n      return 0;\n    }" statement_identifier : (if_statement "if (iVar7 + -3 + param_2 <= (int)uVar12) {\n      uVar8 = FUN_000383f0();\n      *param_3 = uVar8;\n      return 0;\n    }" if (parenthesized_expression "(iVar7 + -3 + param_2 <= (int)uVar12)" ( (binary_expression "iVar7 + -3 + param_2 <= (int)uVar12" (binary_expression "iVar7 + -3 + param_2" (binary_expression "iVar7 + -3" identifier + number_literal) + identifier) <= (cast_expression "(int)uVar12" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n      uVar8 = FUN_000383f0();\n      *param_3 = uVar8;\n      return 0;\n    }" { (expression_statement "uVar8 = FUN_000383f0();" (assignment_expression "uVar8 = FUN_000383f0()" identifier = (call_expression "FUN_000383f0()" identifier (argument_list "()" ( )))) ;) (expression_statement "*param_3 = uVar8;" (assignment_expression "*param_3 = uVar8" (pointer_expression "*param_3" * identifier) = identifier) ;) (return_statement "return 0;" return number_literal ;) }))) }) (else_clause "else {\n    puVar1 = (undefined1 *)(iVar4 + 2 + uVar12);\n    pcVar2 = (char *)(iVar4 + 3 + uVar12);\n    uVar10 = (uint)CONCAT11(*puVar1,*pcVar2);\n    iVar9 = uVar10 - param_2;\n    uVar5 = uVar11 + 1;\n    uVar6 = uVar12;\n    while (iVar9 < 0) {\n      uVar12 = (uint)CONCAT11(*(undefined1 *)(iVar4 + uVar6),*(undefined1 *)(iVar4 + 1 + uVar6));\n      if (uVar12 <= uVar10 + uVar6) {\n        if (uVar12 == 0) {\n          return 0;\n        }\n        uVar8 = FUN_000383f0();\n        *param_3 = uVar8;\n        return 0;\n      }\n      if (iVar7 < (int)uVar12) goto LAB_00038eb0;\n      puVar1 = (undefined1 *)(iVar4 + 2 + uVar12);\n      pcVar2 = (char *)(iVar4 + 3 + uVar12);\n      uVar10 = (uint)CONCAT11(*puVar1,*(undefined1 *)(iVar4 + 3 + uVar12));\n      uVar5 = uVar6;\n      uVar6 = uVar12;\n      iVar9 = uVar10 - param_2;\n    }\n    if (iVar9 < 4) {\n      pbVar3 = (byte *)(iVar4 + 7 + uVar11);\n      if (*pbVar3 < 0x3a) {\n        *(undefined2 *)(iVar4 + uVar5) = *(undefined2 *)(iVar4 + uVar6);\n        *pbVar3 = *pbVar3 + (char)iVar9;\nLAB_00038f08:\n        return iVar4 + uVar6 + iVar9;\n      }\n    }\n    else {\n      if ((int)(uVar6 + iVar9) <= iVar7) {\n        *puVar1 = (char)((uint)iVar9 >> 8);\n        *pcVar2 = (char)iVar9;\n        goto LAB_00038f08;\n      }\n      uVar8 = FUN_000383f0();\n      *param_3 = uVar8;\n    }\n  }" else (compound_statement "{\n    puVar1 = (undefined1 *)(iVar4 + 2 + uVar12);\n    pcVar2 = (char *)(iVar4 + 3 + uVar12);\n    uVar10 = (uint)CONCAT11(*puVar1,*pcVar2);\n    iVar9 = uVar10 - param_2;\n    uVar5 = uVar11 + 1;\n    uVar6 = uVar12;\n    while (iVar9 < 0) {\n      uVar12 = (uint)CONCAT11(*(undefined1 *)(iVar4 + uVar6),*(undefined1 *)(iVar4 + 1 + uVar6));\n      if (uVar12 <= uVar10 + uVar6) {\n        if (uVar12 == 0) {\n          return 0;\n        }\n        uVar8 = FUN_000383f0();\n        *param_3 = uVar8;\n        return 0;\n      }\n      if (iVar7 < (int)uVar12) goto LAB_00038eb0;\n      puVar1 = (undefined1 *)(iVar4 + 2 + uVar12);\n      pcVar2 = (char *)(iVar4 + 3 + uVar12);\n      uVar10 = (uint)CONCAT11(*puVar1,*(undefined1 *)(iVar4 + 3 + uVar12));\n      uVar5 = uVar6;\n      uVar6 = uVar12;\n      iVar9 = uVar10 - param_2;\n    }\n    if (iVar9 < 4) {\n      pbVar3 = (byte *)(iVar4 + 7 + uVar11);\n      if (*pbVar3 < 0x3a) {\n        *(undefined2 *)(iVar4 + uVar5) = *(undefined2 *)(iVar4 + uVar6);\n        *pbVar3 = *pbVar3 + (char)iVar9;\nLAB_00038f08:\n        return iVar4 + uVar6 + iVar9;\n      }\n    }\n    else {\n      if ((int)(uVar6 + iVar9) <= iVar7) {\n        *puVar1 = (char)((uint)iVar9 >> 8);\n        *pcVar2 = (char)iVar9;\n        goto LAB_00038f08;\n      }\n      uVar8 = FUN_000383f0();\n      *param_3 = uVar8;\n    }\n  }" { (expression_statement "puVar1 = (undefined1 *)(iVar4 + 2 + uVar12);" (assignment_expression "puVar1 = (undefined1 *)(iVar4 + 2 + uVar12)" identifier = (cast_expression "(undefined1 *)(iVar4 + 2 + uVar12)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 2 + uVar12)" ( (binary_expression "iVar4 + 2 + uVar12" (binary_expression "iVar4 + 2" identifier + number_literal) + identifier) )))) ;) (expression_statement "pcVar2 = (char *)(iVar4 + 3 + uVar12);" (assignment_expression "pcVar2 = (char *)(iVar4 + 3 + uVar12)" identifier = (cast_expression "(char *)(iVar4 + 3 + uVar12)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 3 + uVar12)" ( (binary_expression "iVar4 + 3 + uVar12" (binary_expression "iVar4 + 3" identifier + number_literal) + identifier) )))) ;) (expression_statement "uVar10 = (uint)CONCAT11(*puVar1,*pcVar2);" (assignment_expression "uVar10 = (uint)CONCAT11(*puVar1,*pcVar2)" identifier = (cast_expression "(uint)CONCAT11(*puVar1,*pcVar2)" ( (type_descriptor "uint" type_identifier) ) (call_expression "CONCAT11(*puVar1,*pcVar2)" identifier (argument_list "(*puVar1,*pcVar2)" ( (pointer_expression "*puVar1" * identifier) , (pointer_expression "*pcVar2" * identifier) ))))) ;) (expression_statement "iVar9 = uVar10 - param_2;" (assignment_expression "iVar9 = uVar10 - param_2" identifier = (binary_expression "uVar10 - param_2" identifier - identifier)) ;) (expression_statement "uVar5 = uVar11 + 1;" (assignment_expression "uVar5 = uVar11 + 1" identifier = (binary_expression "uVar11 + 1" identifier + number_literal)) ;) (expression_statement "uVar6 = uVar12;" (assignment_expression "uVar6 = uVar12" identifier = identifier) ;) (while_statement "while (iVar9 < 0) {\n      uVar12 = (uint)CONCAT11(*(undefined1 *)(iVar4 + uVar6),*(undefined1 *)(iVar4 + 1 + uVar6));\n      if (uVar12 <= uVar10 + uVar6) {\n        if (uVar12 == 0) {\n          return 0;\n        }\n        uVar8 = FUN_000383f0();\n        *param_3 = uVar8;\n        return 0;\n      }\n      if (iVar7 < (int)uVar12) goto LAB_00038eb0;\n      puVar1 = (undefined1 *)(iVar4 + 2 + uVar12);\n      pcVar2 = (char *)(iVar4 + 3 + uVar12);\n      uVar10 = (uint)CONCAT11(*puVar1,*(undefined1 *)(iVar4 + 3 + uVar12));\n      uVar5 = uVar6;\n      uVar6 = uVar12;\n      iVar9 = uVar10 - param_2;\n    }" while (parenthesized_expression "(iVar9 < 0)" ( (binary_expression "iVar9 < 0" identifier < number_literal) )) (compound_statement "{\n      uVar12 = (uint)CONCAT11(*(undefined1 *)(iVar4 + uVar6),*(undefined1 *)(iVar4 + 1 + uVar6));\n      if (uVar12 <= uVar10 + uVar6) {\n        if (uVar12 == 0) {\n          return 0;\n        }\n        uVar8 = FUN_000383f0();\n        *param_3 = uVar8;\n        return 0;\n      }\n      if (iVar7 < (int)uVar12) goto LAB_00038eb0;\n      puVar1 = (undefined1 *)(iVar4 + 2 + uVar12);\n      pcVar2 = (char *)(iVar4 + 3 + uVar12);\n      uVar10 = (uint)CONCAT11(*puVar1,*(undefined1 *)(iVar4 + 3 + uVar12));\n      uVar5 = uVar6;\n      uVar6 = uVar12;\n      iVar9 = uVar10 - param_2;\n    }" { (expression_statement "uVar12 = (uint)CONCAT11(*(undefined1 *)(iVar4 + uVar6),*(undefined1 *)(iVar4 + 1 + uVar6));" (assignment_expression "uVar12 = (uint)CONCAT11(*(undefined1 *)(iVar4 + uVar6),*(undefined1 *)(iVar4 + 1 + uVar6))" identifier = (cast_expression "(uint)CONCAT11(*(undefined1 *)(iVar4 + uVar6),*(undefined1 *)(iVar4 + 1 + uVar6))" ( (type_descriptor "uint" type_identifier) ) (call_expression "CONCAT11(*(undefined1 *)(iVar4 + uVar6),*(undefined1 *)(iVar4 + 1 + uVar6))" identifier (argument_list "(*(undefined1 *)(iVar4 + uVar6),*(undefined1 *)(iVar4 + 1 + uVar6))" ( (pointer_expression "*(undefined1 *)(iVar4 + uVar6)" * (cast_expression "(undefined1 *)(iVar4 + uVar6)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + uVar6)" ( (binary_expression "iVar4 + uVar6" identifier + identifier) )))) , (pointer_expression "*(undefined1 *)(iVar4 + 1 + uVar6)" * (cast_expression "(undefined1 *)(iVar4 + 1 + uVar6)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 1 + uVar6)" ( (binary_expression "iVar4 + 1 + uVar6" (binary_expression "iVar4 + 1" identifier + number_literal) + identifier) )))) ))))) ;) (if_statement "if (uVar12 <= uVar10 + uVar6) {\n        if (uVar12 == 0) {\n          return 0;\n        }\n        uVar8 = FUN_000383f0();\n        *param_3 = uVar8;\n        return 0;\n      }" if (parenthesized_expression "(uVar12 <= uVar10 + uVar6)" ( (binary_expression "uVar12 <= uVar10 + uVar6" identifier <= (binary_expression "uVar10 + uVar6" identifier + identifier)) )) (compound_statement "{\n        if (uVar12 == 0) {\n          return 0;\n        }\n        uVar8 = FUN_000383f0();\n        *param_3 = uVar8;\n        return 0;\n      }" { (if_statement "if (uVar12 == 0) {\n          return 0;\n        }" if (parenthesized_expression "(uVar12 == 0)" ( (binary_expression "uVar12 == 0" identifier == number_literal) )) (compound_statement "{\n          return 0;\n        }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "uVar8 = FUN_000383f0();" (assignment_expression "uVar8 = FUN_000383f0()" identifier = (call_expression "FUN_000383f0()" identifier (argument_list "()" ( )))) ;) (expression_statement "*param_3 = uVar8;" (assignment_expression "*param_3 = uVar8" (pointer_expression "*param_3" * identifier) = identifier) ;) (return_statement "return 0;" return number_literal ;) })) (if_statement "if (iVar7 < (int)uVar12) goto LAB_00038eb0;" if (parenthesized_expression "(iVar7 < (int)uVar12)" ( (binary_expression "iVar7 < (int)uVar12" identifier < (cast_expression "(int)uVar12" ( (type_descriptor "int" primitive_type) ) identifier)) )) (goto_statement "goto LAB_00038eb0;" goto statement_identifier ;)) (expression_statement "puVar1 = (undefined1 *)(iVar4 + 2 + uVar12);" (assignment_expression "puVar1 = (undefined1 *)(iVar4 + 2 + uVar12)" identifier = (cast_expression "(undefined1 *)(iVar4 + 2 + uVar12)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 2 + uVar12)" ( (binary_expression "iVar4 + 2 + uVar12" (binary_expression "iVar4 + 2" identifier + number_literal) + identifier) )))) ;) (expression_statement "pcVar2 = (char *)(iVar4 + 3 + uVar12);" (assignment_expression "pcVar2 = (char *)(iVar4 + 3 + uVar12)" identifier = (cast_expression "(char *)(iVar4 + 3 + uVar12)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 3 + uVar12)" ( (binary_expression "iVar4 + 3 + uVar12" (binary_expression "iVar4 + 3" identifier + number_literal) + identifier) )))) ;) (expression_statement "uVar10 = (uint)CONCAT11(*puVar1,*(undefined1 *)(iVar4 + 3 + uVar12));" (assignment_expression "uVar10 = (uint)CONCAT11(*puVar1,*(undefined1 *)(iVar4 + 3 + uVar12))" identifier = (cast_expression "(uint)CONCAT11(*puVar1,*(undefined1 *)(iVar4 + 3 + uVar12))" ( (type_descriptor "uint" type_identifier) ) (call_expression "CONCAT11(*puVar1,*(undefined1 *)(iVar4 + 3 + uVar12))" identifier (argument_list "(*puVar1,*(undefined1 *)(iVar4 + 3 + uVar12))" ( (pointer_expression "*puVar1" * identifier) , (pointer_expression "*(undefined1 *)(iVar4 + 3 + uVar12)" * (cast_expression "(undefined1 *)(iVar4 + 3 + uVar12)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 3 + uVar12)" ( (binary_expression "iVar4 + 3 + uVar12" (binary_expression "iVar4 + 3" identifier + number_literal) + identifier) )))) ))))) ;) (expression_statement "uVar5 = uVar6;" (assignment_expression "uVar5 = uVar6" identifier = identifier) ;) (expression_statement "uVar6 = uVar12;" (assignment_expression "uVar6 = uVar12" identifier = identifier) ;) (expression_statement "iVar9 = uVar10 - param_2;" (assignment_expression "iVar9 = uVar10 - param_2" identifier = (binary_expression "uVar10 - param_2" identifier - identifier)) ;) })) (if_statement "if (iVar9 < 4) {\n      pbVar3 = (byte *)(iVar4 + 7 + uVar11);\n      if (*pbVar3 < 0x3a) {\n        *(undefined2 *)(iVar4 + uVar5) = *(undefined2 *)(iVar4 + uVar6);\n        *pbVar3 = *pbVar3 + (char)iVar9;\nLAB_00038f08:\n        return iVar4 + uVar6 + iVar9;\n      }\n    }\n    else {\n      if ((int)(uVar6 + iVar9) <= iVar7) {\n        *puVar1 = (char)((uint)iVar9 >> 8);\n        *pcVar2 = (char)iVar9;\n        goto LAB_00038f08;\n      }\n      uVar8 = FUN_000383f0();\n      *param_3 = uVar8;\n    }" if (parenthesized_expression "(iVar9 < 4)" ( (binary_expression "iVar9 < 4" identifier < number_literal) )) (compound_statement "{\n      pbVar3 = (byte *)(iVar4 + 7 + uVar11);\n      if (*pbVar3 < 0x3a) {\n        *(undefined2 *)(iVar4 + uVar5) = *(undefined2 *)(iVar4 + uVar6);\n        *pbVar3 = *pbVar3 + (char)iVar9;\nLAB_00038f08:\n        return iVar4 + uVar6 + iVar9;\n      }\n    }" { (expression_statement "pbVar3 = (byte *)(iVar4 + 7 + uVar11);" (assignment_expression "pbVar3 = (byte *)(iVar4 + 7 + uVar11)" identifier = (cast_expression "(byte *)(iVar4 + 7 + uVar11)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 7 + uVar11)" ( (binary_expression "iVar4 + 7 + uVar11" (binary_expression "iVar4 + 7" identifier + number_literal) + identifier) )))) ;) (if_statement "if (*pbVar3 < 0x3a) {\n        *(undefined2 *)(iVar4 + uVar5) = *(undefined2 *)(iVar4 + uVar6);\n        *pbVar3 = *pbVar3 + (char)iVar9;\nLAB_00038f08:\n        return iVar4 + uVar6 + iVar9;\n      }" if (parenthesized_expression "(*pbVar3 < 0x3a)" ( (binary_expression "*pbVar3 < 0x3a" (pointer_expression "*pbVar3" * identifier) < number_literal) )) (compound_statement "{\n        *(undefined2 *)(iVar4 + uVar5) = *(undefined2 *)(iVar4 + uVar6);\n        *pbVar3 = *pbVar3 + (char)iVar9;\nLAB_00038f08:\n        return iVar4 + uVar6 + iVar9;\n      }" { (expression_statement "*(undefined2 *)(iVar4 + uVar5) = *(undefined2 *)(iVar4 + uVar6);" (assignment_expression "*(undefined2 *)(iVar4 + uVar5) = *(undefined2 *)(iVar4 + uVar6)" (pointer_expression "*(undefined2 *)(iVar4 + uVar5)" * (cast_expression "(undefined2 *)(iVar4 + uVar5)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + uVar5)" ( (binary_expression "iVar4 + uVar5" identifier + identifier) )))) = (pointer_expression "*(undefined2 *)(iVar4 + uVar6)" * (cast_expression "(undefined2 *)(iVar4 + uVar6)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + uVar6)" ( (binary_expression "iVar4 + uVar6" identifier + identifier) ))))) ;) (expression_statement "*pbVar3 = *pbVar3 + (char)iVar9;" (assignment_expression "*pbVar3 = *pbVar3 + (char)iVar9" (pointer_expression "*pbVar3" * identifier) = (binary_expression "*pbVar3 + (char)iVar9" (pointer_expression "*pbVar3" * identifier) + (cast_expression "(char)iVar9" ( (type_descriptor "char" primitive_type) ) identifier))) ;) (labeled_statement "LAB_00038f08:\n        return iVar4 + uVar6 + iVar9;" statement_identifier : (return_statement "return iVar4 + uVar6 + iVar9;" return (binary_expression "iVar4 + uVar6 + iVar9" (binary_expression "iVar4 + uVar6" identifier + identifier) + identifier) ;)) })) }) (else_clause "else {\n      if ((int)(uVar6 + iVar9) <= iVar7) {\n        *puVar1 = (char)((uint)iVar9 >> 8);\n        *pcVar2 = (char)iVar9;\n        goto LAB_00038f08;\n      }\n      uVar8 = FUN_000383f0();\n      *param_3 = uVar8;\n    }" else (compound_statement "{\n      if ((int)(uVar6 + iVar9) <= iVar7) {\n        *puVar1 = (char)((uint)iVar9 >> 8);\n        *pcVar2 = (char)iVar9;\n        goto LAB_00038f08;\n      }\n      uVar8 = FUN_000383f0();\n      *param_3 = uVar8;\n    }" { (if_statement "if ((int)(uVar6 + iVar9) <= iVar7) {\n        *puVar1 = (char)((uint)iVar9 >> 8);\n        *pcVar2 = (char)iVar9;\n        goto LAB_00038f08;\n      }" if (parenthesized_expression "((int)(uVar6 + iVar9) <= iVar7)" ( (binary_expression "(int)(uVar6 + iVar9) <= iVar7" (cast_expression "(int)(uVar6 + iVar9)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(uVar6 + iVar9)" ( (binary_expression "uVar6 + iVar9" identifier + identifier) ))) <= identifier) )) (compound_statement "{\n        *puVar1 = (char)((uint)iVar9 >> 8);\n        *pcVar2 = (char)iVar9;\n        goto LAB_00038f08;\n      }" { (expression_statement "*puVar1 = (char)((uint)iVar9 >> 8);" (assignment_expression "*puVar1 = (char)((uint)iVar9 >> 8)" (pointer_expression "*puVar1" * identifier) = (cast_expression "(char)((uint)iVar9 >> 8)" ( (type_descriptor "char" primitive_type) ) (parenthesized_expression "((uint)iVar9 >> 8)" ( (binary_expression "(uint)iVar9 >> 8" (cast_expression "(uint)iVar9" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "*pcVar2 = (char)iVar9;" (assignment_expression "*pcVar2 = (char)iVar9" (pointer_expression "*pcVar2" * identifier) = (cast_expression "(char)iVar9" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (goto_statement "goto LAB_00038f08;" goto statement_identifier ;) })) (expression_statement "uVar8 = FUN_000383f0();" (assignment_expression "uVar8 = FUN_000383f0()" identifier = (call_expression "FUN_000383f0()" identifier (argument_list "()" ( )))) ;) (expression_statement "*param_3 = uVar8;" (assignment_expression "*param_3 = uVar8" (pointer_expression "*param_3" * identifier) = identifier) ;) }))) }))) (return_statement "return 0;" return number_literal ;) })))
(translation_unit (function_definition TYPE (ERROR IDENT) (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE (pointer_declarator * IDENT)) ))) (compound_statement { (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( IDENT )) * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) )))) - IDENT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (call_expression IDENT (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) + IDENT) )))) , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) + IDENT) )))) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) (compound_statement { (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression (binary_expression (binary_expression IDENT + LIT) + IDENT) <= (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (return_statement return LIT ;) }))) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) + IDENT) )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) + IDENT) )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (call_expression IDENT (argument_list ( (pointer_expression * IDENT) , (pointer_expression * IDENT) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (while_statement while (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (call_expression IDENT (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + IDENT) )))) , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) + IDENT) )))) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT <= (binary_expression IDENT + IDENT)) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (return_statement return LIT ;) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (return_statement return LIT ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT < (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) + IDENT) )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) + IDENT) )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (call_expression IDENT (argument_list ( (pointer_expression * IDENT) , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) + IDENT) )))) ))))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - IDENT)) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) + IDENT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) < LIT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + IDENT) )))) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + IDENT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression (pointer_expression * IDENT) + (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) (labeled_statement statement_identifier : (return_statement return (binary_expression (binary_expression IDENT + IDENT) + IDENT) ;)) })) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression IDENT + IDENT) ))) <= IDENT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) )))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) }))) }))) (return_statement return LIT ;) })))
(function_definition "int __regparm3 FUN_00038de0(int param_1,int param_2,undefined4 *param_3)\n\n{\n  undefined1 *puVar1;\n  char *pcVar2;\n  byte *pbVar3;\n  int iVar4;\n  uint uVar5;\n  uint uVar6;\n  int iVar7;\n  undefined4 uVar8;\n  int iVar9;\n  uint uVar10;\n  uint uVar11;\n  uint uVar12;\n  \n  uVar11 = (uint)*(byte *)(param_1 + 9);\n  iVar4 = *(int *)(param_1 + 0x38);\n  iVar7 = *(int *)(*(int *)(param_1 + 0x34) + 0x28) - param_2;\n  uVar12 = (uint)CONCAT11(*(undefined1 *)(iVar4 + 1 + uVar11),*(undefined1 *)(iVar4 + 2 + uVar11));\n  if (iVar7 < (int)uVar12) {\nLAB_00038eb0:\n    if (iVar7 + -3 + param_2 <= (int)uVar12) {\n      uVar8 = FUN_000383f0();\n      *param_3 = uVar8;\n      return 0;\n    }\n  }\n  else {\n    puVar1 = (undefined1 *)(iVar4 + 2 + uVar12);\n    pcVar2 = (char *)(iVar4 + 3 + uVar12);\n    uVar10 = (uint)CONCAT11(*puVar1,*pcVar2);\n    iVar9 = uVar10 - param_2;\n    uVar5 = uVar11 + 1;\n    uVar6 = uVar12;\n    while (iVar9 < 0) {\n      uVar12 = (uint)CONCAT11(*(undefined1 *)(iVar4 + uVar6),*(undefined1 *)(iVar4 + 1 + uVar6));\n      if (uVar12 <= uVar10 + uVar6) {\n        if (uVar12 == 0) {\n          return 0;\n        }\n        uVar8 = FUN_000383f0();\n        *param_3 = uVar8;\n        return 0;\n      }\n      if (iVar7 < (int)uVar12) goto LAB_00038eb0;\n      puVar1 = (undefined1 *)(iVar4 + 2 + uVar12);\n      pcVar2 = (char *)(iVar4 + 3 + uVar12);\n      uVar10 = (uint)CONCAT11(*puVar1,*(undefined1 *)(iVar4 + 3 + uVar12));\n      uVar5 = uVar6;\n      uVar6 = uVar12;\n      iVar9 = uVar10 - param_2;\n    }\n    if (iVar9 < 4) {\n      pbVar3 = (byte *)(iVar4 + 7 + uVar11);\n      if (*pbVar3 < 0x3a) {\n        *(undefined2 *)(iVar4 + uVar5) = *(undefined2 *)(iVar4 + uVar6);\n        *pbVar3 = *pbVar3 + (char)iVar9;\nLAB_00038f08:\n        return iVar4 + uVar6 + iVar9;\n      }\n    }\n    else {\n      if ((int)(uVar6 + iVar9) <= iVar7) {\n        *puVar1 = (char)((uint)iVar9 >> 8);\n        *pcVar2 = (char)iVar9;\n        goto LAB_00038f08;\n      }\n      uVar8 = FUN_000383f0();\n      *param_3 = uVar8;\n    }\n  }\n  return 0;\n}" (primitive_type "int") (ERROR "__regparm3" (identifier "__regparm3")) (function_declarator "FUN_00038de0(int param_1,int param_2,undefined4 *param_3)" (identifier "FUN_00038de0") (parameter_list "(int param_1,int param_2,undefined4 *param_3)" (( "(") (parameter_declaration "int param_1" (primitive_type "int") (identifier "param_1")) (, ",") (parameter_declaration "int param_2" (primitive_type "int") (identifier "param_2")) (, ",") (parameter_declaration "undefined4 *param_3" (type_identifier "undefined4") (pointer_declarator "*param_3" (* "*") (identifier "param_3"))) () ")"))) (compound_statement "{\n  undefined1 *puVar1;\n  char *pcVar2;\n  byte *pbVar3;\n  int iVar4;\n  uint uVar5;\n  uint uVar6;\n  int iVar7;\n  undefined4 uVar8;\n  int iVar9;\n  uint uVar10;\n  uint uVar11;\n  uint uVar12;\n  \n  uVar11 = (uint)*(byte *)(param_1 + 9);\n  iVar4 = *(int *)(param_1 + 0x38);\n  iVar7 = *(int *)(*(int *)(param_1 + 0x34) + 0x28) - param_2;\n  uVar12 = (uint)CONCAT11(*(undefined1 *)(iVar4 + 1 + uVar11),*(undefined1 *)(iVar4 + 2 + uVar11));\n  if (iVar7 < (int)uVar12) {\nLAB_00038eb0:\n    if (iVar7 + -3 + param_2 <= (int)uVar12) {\n      uVar8 = FUN_000383f0();\n      *param_3 = uVar8;\n      return 0;\n    }\n  }\n  else {\n    puVar1 = (undefined1 *)(iVar4 + 2 + uVar12);\n    pcVar2 = (char *)(iVar4 + 3 + uVar12);\n    uVar10 = (uint)CONCAT11(*puVar1,*pcVar2);\n    iVar9 = uVar10 - param_2;\n    uVar5 = uVar11 + 1;\n    uVar6 = uVar12;\n    while (iVar9 < 0) {\n      uVar12 = (uint)CONCAT11(*(undefined1 *)(iVar4 + uVar6),*(undefined1 *)(iVar4 + 1 + uVar6));\n      if (uVar12 <= uVar10 + uVar6) {\n        if (uVar12 == 0) {\n          return 0;\n        }\n        uVar8 = FUN_000383f0();\n        *param_3 = uVar8;\n        return 0;\n      }\n      if (iVar7 < (int)uVar12) goto LAB_00038eb0;\n      puVar1 = (undefined1 *)(iVar4 + 2 + uVar12);\n      pcVar2 = (char *)(iVar4 + 3 + uVar12);\n      uVar10 = (uint)CONCAT11(*puVar1,*(undefined1 *)(iVar4 + 3 + uVar12));\n      uVar5 = uVar6;\n      uVar6 = uVar12;\n      iVar9 = uVar10 - param_2;\n    }\n    if (iVar9 < 4) {\n      pbVar3 = (byte *)(iVar4 + 7 + uVar11);\n      if (*pbVar3 < 0x3a) {\n        *(undefined2 *)(iVar4 + uVar5) = *(undefined2 *)(iVar4 + uVar6);\n        *pbVar3 = *pbVar3 + (char)iVar9;\nLAB_00038f08:\n        return iVar4 + uVar6 + iVar9;\n      }\n    }\n    else {\n      if ((int)(uVar6 + iVar9) <= iVar7) {\n        *puVar1 = (char)((uint)iVar9 >> 8);\n        *pcVar2 = (char)iVar9;\n        goto LAB_00038f08;\n      }\n      uVar8 = FUN_000383f0();\n      *param_3 = uVar8;\n    }\n  }\n  return 0;\n}" ({ "{") (declaration "undefined1 *puVar1;" (type_identifier "undefined1") (pointer_declarator "*puVar1" (* "*") (identifier "puVar1")) (; ";")) (declaration "char *pcVar2;" (primitive_type "char") (pointer_declarator "*pcVar2" (* "*") (identifier "pcVar2")) (; ";")) (declaration "byte *pbVar3;" (type_identifier "byte") (pointer_declarator "*pbVar3" (* "*") (identifier "pbVar3")) (; ";")) (declaration "int iVar4;" (primitive_type "int") (identifier "iVar4") (; ";")) (declaration "uint uVar5;" (type_identifier "uint") (identifier "uVar5") (; ";")) (declaration "uint uVar6;" (type_identifier "uint") (identifier "uVar6") (; ";")) (declaration "int iVar7;" (primitive_type "int") (identifier "iVar7") (; ";")) (declaration "undefined4 uVar8;" (type_identifier "undefined4") (identifier "uVar8") (; ";")) (declaration "int iVar9;" (primitive_type "int") (identifier "iVar9") (; ";")) (declaration "uint uVar10;" (type_identifier "uint") (identifier "uVar10") (; ";")) (declaration "uint uVar11;" (type_identifier "uint") (identifier "uVar11") (; ";")) (declaration "uint uVar12;" (type_identifier "uint") (identifier "uVar12") (; ";")) (expression_statement "uVar11 = (uint)*(byte *)(param_1 + 9);" (assignment_expression "uVar11 = (uint)*(byte *)(param_1 + 9)" (identifier "uVar11") (= "=") (binary_expression "(uint)*(byte *)(param_1 + 9)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (* "*") (cast_expression "(byte *)(param_1 + 9)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 9)" (( "(") (binary_expression "param_1 + 9" (identifier "param_1") (+ "+") (number_literal "9")) () ")"))))) (; ";")) (expression_statement "iVar4 = *(int *)(param_1 + 0x38);" (assignment_expression "iVar4 = *(int *)(param_1 + 0x38)" (identifier "iVar4") (= "=") (pointer_expression "*(int *)(param_1 + 0x38)" (* "*") (cast_expression "(int *)(param_1 + 0x38)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x38)" (( "(") (binary_expression "param_1 + 0x38" (identifier "param_1") (+ "+") (number_literal "0x38")) () ")"))))) (; ";")) (expression_statement "iVar7 = *(int *)(*(int *)(param_1 + 0x34) + 0x28) - param_2;" (assignment_expression "iVar7 = *(int *)(*(int *)(param_1 + 0x34) + 0x28) - param_2" (identifier "iVar7") (= "=") (binary_expression "*(int *)(*(int *)(param_1 + 0x34) + 0x28) - param_2" (pointer_expression "*(int *)(*(int *)(param_1 + 0x34) + 0x28)" (* "*") (cast_expression "(int *)(*(int *)(param_1 + 0x34) + 0x28)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(param_1 + 0x34) + 0x28)" (( "(") (binary_expression "*(int *)(param_1 + 0x34) + 0x28" (pointer_expression "*(int *)(param_1 + 0x34)" (* "*") (cast_expression "(int *)(param_1 + 0x34)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x34)" (( "(") (binary_expression "param_1 + 0x34" (identifier "param_1") (+ "+") (number_literal "0x34")) () ")")))) (+ "+") (number_literal "0x28")) () ")")))) (- "-") (identifier "param_2"))) (; ";")) (expression_statement "uVar12 = (uint)CONCAT11(*(undefined1 *)(iVar4 + 1 + uVar11),*(undefined1 *)(iVar4 + 2 + uVar11));" (assignment_expression "uVar12 = (uint)CONCAT11(*(undefined1 *)(iVar4 + 1 + uVar11),*(undefined1 *)(iVar4 + 2 + uVar11))" (identifier "uVar12") (= "=") (cast_expression "(uint)CONCAT11(*(undefined1 *)(iVar4 + 1 + uVar11),*(undefined1 *)(iVar4 + 2 + uVar11))" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (call_expression "CONCAT11(*(undefined1 *)(iVar4 + 1 + uVar11),*(undefined1 *)(iVar4 + 2 + uVar11))" (identifier "CONCAT11") (argument_list "(*(undefined1 *)(iVar4 + 1 + uVar11),*(undefined1 *)(iVar4 + 2 + uVar11))" (( "(") (pointer_expression "*(undefined1 *)(iVar4 + 1 + uVar11)" (* "*") (cast_expression "(undefined1 *)(iVar4 + 1 + uVar11)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar4 + 1 + uVar11)" (( "(") (binary_expression "iVar4 + 1 + uVar11" (binary_expression "iVar4 + 1" (identifier "iVar4") (+ "+") (number_literal "1")) (+ "+") (identifier "uVar11")) () ")")))) (, ",") (pointer_expression "*(undefined1 *)(iVar4 + 2 + uVar11)" (* "*") (cast_expression "(undefined1 *)(iVar4 + 2 + uVar11)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar4 + 2 + uVar11)" (( "(") (binary_expression "iVar4 + 2 + uVar11" (binary_expression "iVar4 + 2" (identifier "iVar4") (+ "+") (number_literal "2")) (+ "+") (identifier "uVar11")) () ")")))) () ")"))))) (; ";")) (if_statement "if (iVar7 < (int)uVar12) {\nLAB_00038eb0:\n    if (iVar7 + -3 + param_2 <= (int)uVar12) {\n      uVar8 = FUN_000383f0();\n      *param_3 = uVar8;\n      return 0;\n    }\n  }\n  else {\n    puVar1 = (undefined1 *)(iVar4 + 2 + uVar12);\n    pcVar2 = (char *)(iVar4 + 3 + uVar12);\n    uVar10 = (uint)CONCAT11(*puVar1,*pcVar2);\n    iVar9 = uVar10 - param_2;\n    uVar5 = uVar11 + 1;\n    uVar6 = uVar12;\n    while (iVar9 < 0) {\n      uVar12 = (uint)CONCAT11(*(undefined1 *)(iVar4 + uVar6),*(undefined1 *)(iVar4 + 1 + uVar6));\n      if (uVar12 <= uVar10 + uVar6) {\n        if (uVar12 == 0) {\n          return 0;\n        }\n        uVar8 = FUN_000383f0();\n        *param_3 = uVar8;\n        return 0;\n      }\n      if (iVar7 < (int)uVar12) goto LAB_00038eb0;\n      puVar1 = (undefined1 *)(iVar4 + 2 + uVar12);\n      pcVar2 = (char *)(iVar4 + 3 + uVar12);\n      uVar10 = (uint)CONCAT11(*puVar1,*(undefined1 *)(iVar4 + 3 + uVar12));\n      uVar5 = uVar6;\n      uVar6 = uVar12;\n      iVar9 = uVar10 - param_2;\n    }\n    if (iVar9 < 4) {\n      pbVar3 = (byte *)(iVar4 + 7 + uVar11);\n      if (*pbVar3 < 0x3a) {\n        *(undefined2 *)(iVar4 + uVar5) = *(undefined2 *)(iVar4 + uVar6);\n        *pbVar3 = *pbVar3 + (char)iVar9;\nLAB_00038f08:\n        return iVar4 + uVar6 + iVar9;\n      }\n    }\n    else {\n      if ((int)(uVar6 + iVar9) <= iVar7) {\n        *puVar1 = (char)((uint)iVar9 >> 8);\n        *pcVar2 = (char)iVar9;\n        goto LAB_00038f08;\n      }\n      uVar8 = FUN_000383f0();\n      *param_3 = uVar8;\n    }\n  }" (if "if") (parenthesized_expression "(iVar7 < (int)uVar12)" (( "(") (binary_expression "iVar7 < (int)uVar12" (identifier "iVar7") (< "<") (cast_expression "(int)uVar12" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar12"))) () ")")) (compound_statement "{\nLAB_00038eb0:\n    if (iVar7 + -3 + param_2 <= (int)uVar12) {\n      uVar8 = FUN_000383f0();\n      *param_3 = uVar8;\n      return 0;\n    }\n  }" ({ "{") (labeled_statement "LAB_00038eb0:\n    if (iVar7 + -3 + param_2 <= (int)uVar12) {\n      uVar8 = FUN_000383f0();\n      *param_3 = uVar8;\n      return 0;\n    }" (statement_identifier "LAB_00038eb0") (: ":") (if_statement "if (iVar7 + -3 + param_2 <= (int)uVar12) {\n      uVar8 = FUN_000383f0();\n      *param_3 = uVar8;\n      return 0;\n    }" (if "if") (parenthesized_expression "(iVar7 + -3 + param_2 <= (int)uVar12)" (( "(") (binary_expression "iVar7 + -3 + param_2 <= (int)uVar12" (binary_expression "iVar7 + -3 + param_2" (binary_expression "iVar7 + -3" (identifier "iVar7") (+ "+") (number_literal "-3")) (+ "+") (identifier "param_2")) (<= "<=") (cast_expression "(int)uVar12" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar12"))) () ")")) (compound_statement "{\n      uVar8 = FUN_000383f0();\n      *param_3 = uVar8;\n      return 0;\n    }" ({ "{") (expression_statement "uVar8 = FUN_000383f0();" (assignment_expression "uVar8 = FUN_000383f0()" (identifier "uVar8") (= "=") (call_expression "FUN_000383f0()" (identifier "FUN_000383f0") (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "*param_3 = uVar8;" (assignment_expression "*param_3 = uVar8" (pointer_expression "*param_3" (* "*") (identifier "param_3")) (= "=") (identifier "uVar8")) (; ";")) (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}")))) (} "}")) (else_clause "else {\n    puVar1 = (undefined1 *)(iVar4 + 2 + uVar12);\n    pcVar2 = (char *)(iVar4 + 3 + uVar12);\n    uVar10 = (uint)CONCAT11(*puVar1,*pcVar2);\n    iVar9 = uVar10 - param_2;\n    uVar5 = uVar11 + 1;\n    uVar6 = uVar12;\n    while (iVar9 < 0) {\n      uVar12 = (uint)CONCAT11(*(undefined1 *)(iVar4 + uVar6),*(undefined1 *)(iVar4 + 1 + uVar6));\n      if (uVar12 <= uVar10 + uVar6) {\n        if (uVar12 == 0) {\n          return 0;\n        }\n        uVar8 = FUN_000383f0();\n        *param_3 = uVar8;\n        return 0;\n      }\n      if (iVar7 < (int)uVar12) goto LAB_00038eb0;\n      puVar1 = (undefined1 *)(iVar4 + 2 + uVar12);\n      pcVar2 = (char *)(iVar4 + 3 + uVar12);\n      uVar10 = (uint)CONCAT11(*puVar1,*(undefined1 *)(iVar4 + 3 + uVar12));\n      uVar5 = uVar6;\n      uVar6 = uVar12;\n      iVar9 = uVar10 - param_2;\n    }\n    if (iVar9 < 4) {\n      pbVar3 = (byte *)(iVar4 + 7 + uVar11);\n      if (*pbVar3 < 0x3a) {\n        *(undefined2 *)(iVar4 + uVar5) = *(undefined2 *)(iVar4 + uVar6);\n        *pbVar3 = *pbVar3 + (char)iVar9;\nLAB_00038f08:\n        return iVar4 + uVar6 + iVar9;\n      }\n    }\n    else {\n      if ((int)(uVar6 + iVar9) <= iVar7) {\n        *puVar1 = (char)((uint)iVar9 >> 8);\n        *pcVar2 = (char)iVar9;\n        goto LAB_00038f08;\n      }\n      uVar8 = FUN_000383f0();\n      *param_3 = uVar8;\n    }\n  }" (else "else") (compound_statement "{\n    puVar1 = (undefined1 *)(iVar4 + 2 + uVar12);\n    pcVar2 = (char *)(iVar4 + 3 + uVar12);\n    uVar10 = (uint)CONCAT11(*puVar1,*pcVar2);\n    iVar9 = uVar10 - param_2;\n    uVar5 = uVar11 + 1;\n    uVar6 = uVar12;\n    while (iVar9 < 0) {\n      uVar12 = (uint)CONCAT11(*(undefined1 *)(iVar4 + uVar6),*(undefined1 *)(iVar4 + 1 + uVar6));\n      if (uVar12 <= uVar10 + uVar6) {\n        if (uVar12 == 0) {\n          return 0;\n        }\n        uVar8 = FUN_000383f0();\n        *param_3 = uVar8;\n        return 0;\n      }\n      if (iVar7 < (int)uVar12) goto LAB_00038eb0;\n      puVar1 = (undefined1 *)(iVar4 + 2 + uVar12);\n      pcVar2 = (char *)(iVar4 + 3 + uVar12);\n      uVar10 = (uint)CONCAT11(*puVar1,*(undefined1 *)(iVar4 + 3 + uVar12));\n      uVar5 = uVar6;\n      uVar6 = uVar12;\n      iVar9 = uVar10 - param_2;\n    }\n    if (iVar9 < 4) {\n      pbVar3 = (byte *)(iVar4 + 7 + uVar11);\n      if (*pbVar3 < 0x3a) {\n        *(undefined2 *)(iVar4 + uVar5) = *(undefined2 *)(iVar4 + uVar6);\n        *pbVar3 = *pbVar3 + (char)iVar9;\nLAB_00038f08:\n        return iVar4 + uVar6 + iVar9;\n      }\n    }\n    else {\n      if ((int)(uVar6 + iVar9) <= iVar7) {\n        *puVar1 = (char)((uint)iVar9 >> 8);\n        *pcVar2 = (char)iVar9;\n        goto LAB_00038f08;\n      }\n      uVar8 = FUN_000383f0();\n      *param_3 = uVar8;\n    }\n  }" ({ "{") (expression_statement "puVar1 = (undefined1 *)(iVar4 + 2 + uVar12);" (assignment_expression "puVar1 = (undefined1 *)(iVar4 + 2 + uVar12)" (identifier "puVar1") (= "=") (cast_expression "(undefined1 *)(iVar4 + 2 + uVar12)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar4 + 2 + uVar12)" (( "(") (binary_expression "iVar4 + 2 + uVar12" (binary_expression "iVar4 + 2" (identifier "iVar4") (+ "+") (number_literal "2")) (+ "+") (identifier "uVar12")) () ")")))) (; ";")) (expression_statement "pcVar2 = (char *)(iVar4 + 3 + uVar12);" (assignment_expression "pcVar2 = (char *)(iVar4 + 3 + uVar12)" (identifier "pcVar2") (= "=") (cast_expression "(char *)(iVar4 + 3 + uVar12)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar4 + 3 + uVar12)" (( "(") (binary_expression "iVar4 + 3 + uVar12" (binary_expression "iVar4 + 3" (identifier "iVar4") (+ "+") (number_literal "3")) (+ "+") (identifier "uVar12")) () ")")))) (; ";")) (expression_statement "uVar10 = (uint)CONCAT11(*puVar1,*pcVar2);" (assignment_expression "uVar10 = (uint)CONCAT11(*puVar1,*pcVar2)" (identifier "uVar10") (= "=") (cast_expression "(uint)CONCAT11(*puVar1,*pcVar2)" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (call_expression "CONCAT11(*puVar1,*pcVar2)" (identifier "CONCAT11") (argument_list "(*puVar1,*pcVar2)" (( "(") (pointer_expression "*puVar1" (* "*") (identifier "puVar1")) (, ",") (pointer_expression "*pcVar2" (* "*") (identifier "pcVar2")) () ")"))))) (; ";")) (expression_statement "iVar9 = uVar10 - param_2;" (assignment_expression "iVar9 = uVar10 - param_2" (identifier "iVar9") (= "=") (binary_expression "uVar10 - param_2" (identifier "uVar10") (- "-") (identifier "param_2"))) (; ";")) (expression_statement "uVar5 = uVar11 + 1;" (assignment_expression "uVar5 = uVar11 + 1" (identifier "uVar5") (= "=") (binary_expression "uVar11 + 1" (identifier "uVar11") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "uVar6 = uVar12;" (assignment_expression "uVar6 = uVar12" (identifier "uVar6") (= "=") (identifier "uVar12")) (; ";")) (while_statement "while (iVar9 < 0) {\n      uVar12 = (uint)CONCAT11(*(undefined1 *)(iVar4 + uVar6),*(undefined1 *)(iVar4 + 1 + uVar6));\n      if (uVar12 <= uVar10 + uVar6) {\n        if (uVar12 == 0) {\n          return 0;\n        }\n        uVar8 = FUN_000383f0();\n        *param_3 = uVar8;\n        return 0;\n      }\n      if (iVar7 < (int)uVar12) goto LAB_00038eb0;\n      puVar1 = (undefined1 *)(iVar4 + 2 + uVar12);\n      pcVar2 = (char *)(iVar4 + 3 + uVar12);\n      uVar10 = (uint)CONCAT11(*puVar1,*(undefined1 *)(iVar4 + 3 + uVar12));\n      uVar5 = uVar6;\n      uVar6 = uVar12;\n      iVar9 = uVar10 - param_2;\n    }" (while "while") (parenthesized_expression "(iVar9 < 0)" (( "(") (binary_expression "iVar9 < 0" (identifier "iVar9") (< "<") (number_literal "0")) () ")")) (compound_statement "{\n      uVar12 = (uint)CONCAT11(*(undefined1 *)(iVar4 + uVar6),*(undefined1 *)(iVar4 + 1 + uVar6));\n      if (uVar12 <= uVar10 + uVar6) {\n        if (uVar12 == 0) {\n          return 0;\n        }\n        uVar8 = FUN_000383f0();\n        *param_3 = uVar8;\n        return 0;\n      }\n      if (iVar7 < (int)uVar12) goto LAB_00038eb0;\n      puVar1 = (undefined1 *)(iVar4 + 2 + uVar12);\n      pcVar2 = (char *)(iVar4 + 3 + uVar12);\n      uVar10 = (uint)CONCAT11(*puVar1,*(undefined1 *)(iVar4 + 3 + uVar12));\n      uVar5 = uVar6;\n      uVar6 = uVar12;\n      iVar9 = uVar10 - param_2;\n    }" ({ "{") (expression_statement "uVar12 = (uint)CONCAT11(*(undefined1 *)(iVar4 + uVar6),*(undefined1 *)(iVar4 + 1 + uVar6));" (assignment_expression "uVar12 = (uint)CONCAT11(*(undefined1 *)(iVar4 + uVar6),*(undefined1 *)(iVar4 + 1 + uVar6))" (identifier "uVar12") (= "=") (cast_expression "(uint)CONCAT11(*(undefined1 *)(iVar4 + uVar6),*(undefined1 *)(iVar4 + 1 + uVar6))" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (call_expression "CONCAT11(*(undefined1 *)(iVar4 + uVar6),*(undefined1 *)(iVar4 + 1 + uVar6))" (identifier "CONCAT11") (argument_list "(*(undefined1 *)(iVar4 + uVar6),*(undefined1 *)(iVar4 + 1 + uVar6))" (( "(") (pointer_expression "*(undefined1 *)(iVar4 + uVar6)" (* "*") (cast_expression "(undefined1 *)(iVar4 + uVar6)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar4 + uVar6)" (( "(") (binary_expression "iVar4 + uVar6" (identifier "iVar4") (+ "+") (identifier "uVar6")) () ")")))) (, ",") (pointer_expression "*(undefined1 *)(iVar4 + 1 + uVar6)" (* "*") (cast_expression "(undefined1 *)(iVar4 + 1 + uVar6)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar4 + 1 + uVar6)" (( "(") (binary_expression "iVar4 + 1 + uVar6" (binary_expression "iVar4 + 1" (identifier "iVar4") (+ "+") (number_literal "1")) (+ "+") (identifier "uVar6")) () ")")))) () ")"))))) (; ";")) (if_statement "if (uVar12 <= uVar10 + uVar6) {\n        if (uVar12 == 0) {\n          return 0;\n        }\n        uVar8 = FUN_000383f0();\n        *param_3 = uVar8;\n        return 0;\n      }" (if "if") (parenthesized_expression "(uVar12 <= uVar10 + uVar6)" (( "(") (binary_expression "uVar12 <= uVar10 + uVar6" (identifier "uVar12") (<= "<=") (binary_expression "uVar10 + uVar6" (identifier "uVar10") (+ "+") (identifier "uVar6"))) () ")")) (compound_statement "{\n        if (uVar12 == 0) {\n          return 0;\n        }\n        uVar8 = FUN_000383f0();\n        *param_3 = uVar8;\n        return 0;\n      }" ({ "{") (if_statement "if (uVar12 == 0) {\n          return 0;\n        }" (if "if") (parenthesized_expression "(uVar12 == 0)" (( "(") (binary_expression "uVar12 == 0" (identifier "uVar12") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n          return 0;\n        }" ({ "{") (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (expression_statement "uVar8 = FUN_000383f0();" (assignment_expression "uVar8 = FUN_000383f0()" (identifier "uVar8") (= "=") (call_expression "FUN_000383f0()" (identifier "FUN_000383f0") (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "*param_3 = uVar8;" (assignment_expression "*param_3 = uVar8" (pointer_expression "*param_3" (* "*") (identifier "param_3")) (= "=") (identifier "uVar8")) (; ";")) (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (if_statement "if (iVar7 < (int)uVar12) goto LAB_00038eb0;" (if "if") (parenthesized_expression "(iVar7 < (int)uVar12)" (( "(") (binary_expression "iVar7 < (int)uVar12" (identifier "iVar7") (< "<") (cast_expression "(int)uVar12" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar12"))) () ")")) (goto_statement "goto LAB_00038eb0;" (goto "goto") (statement_identifier "LAB_00038eb0") (; ";"))) (expression_statement "puVar1 = (undefined1 *)(iVar4 + 2 + uVar12);" (assignment_expression "puVar1 = (undefined1 *)(iVar4 + 2 + uVar12)" (identifier "puVar1") (= "=") (cast_expression "(undefined1 *)(iVar4 + 2 + uVar12)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar4 + 2 + uVar12)" (( "(") (binary_expression "iVar4 + 2 + uVar12" (binary_expression "iVar4 + 2" (identifier "iVar4") (+ "+") (number_literal "2")) (+ "+") (identifier "uVar12")) () ")")))) (; ";")) (expression_statement "pcVar2 = (char *)(iVar4 + 3 + uVar12);" (assignment_expression "pcVar2 = (char *)(iVar4 + 3 + uVar12)" (identifier "pcVar2") (= "=") (cast_expression "(char *)(iVar4 + 3 + uVar12)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar4 + 3 + uVar12)" (( "(") (binary_expression "iVar4 + 3 + uVar12" (binary_expression "iVar4 + 3" (identifier "iVar4") (+ "+") (number_literal "3")) (+ "+") (identifier "uVar12")) () ")")))) (; ";")) (expression_statement "uVar10 = (uint)CONCAT11(*puVar1,*(undefined1 *)(iVar4 + 3 + uVar12));" (assignment_expression "uVar10 = (uint)CONCAT11(*puVar1,*(undefined1 *)(iVar4 + 3 + uVar12))" (identifier "uVar10") (= "=") (cast_expression "(uint)CONCAT11(*puVar1,*(undefined1 *)(iVar4 + 3 + uVar12))" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (call_expression "CONCAT11(*puVar1,*(undefined1 *)(iVar4 + 3 + uVar12))" (identifier "CONCAT11") (argument_list "(*puVar1,*(undefined1 *)(iVar4 + 3 + uVar12))" (( "(") (pointer_expression "*puVar1" (* "*") (identifier "puVar1")) (, ",") (pointer_expression "*(undefined1 *)(iVar4 + 3 + uVar12)" (* "*") (cast_expression "(undefined1 *)(iVar4 + 3 + uVar12)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar4 + 3 + uVar12)" (( "(") (binary_expression "iVar4 + 3 + uVar12" (binary_expression "iVar4 + 3" (identifier "iVar4") (+ "+") (number_literal "3")) (+ "+") (identifier "uVar12")) () ")")))) () ")"))))) (; ";")) (expression_statement "uVar5 = uVar6;" (assignment_expression "uVar5 = uVar6" (identifier "uVar5") (= "=") (identifier "uVar6")) (; ";")) (expression_statement "uVar6 = uVar12;" (assignment_expression "uVar6 = uVar12" (identifier "uVar6") (= "=") (identifier "uVar12")) (; ";")) (expression_statement "iVar9 = uVar10 - param_2;" (assignment_expression "iVar9 = uVar10 - param_2" (identifier "iVar9") (= "=") (binary_expression "uVar10 - param_2" (identifier "uVar10") (- "-") (identifier "param_2"))) (; ";")) (} "}"))) (if_statement "if (iVar9 < 4) {\n      pbVar3 = (byte *)(iVar4 + 7 + uVar11);\n      if (*pbVar3 < 0x3a) {\n        *(undefined2 *)(iVar4 + uVar5) = *(undefined2 *)(iVar4 + uVar6);\n        *pbVar3 = *pbVar3 + (char)iVar9;\nLAB_00038f08:\n        return iVar4 + uVar6 + iVar9;\n      }\n    }\n    else {\n      if ((int)(uVar6 + iVar9) <= iVar7) {\n        *puVar1 = (char)((uint)iVar9 >> 8);\n        *pcVar2 = (char)iVar9;\n        goto LAB_00038f08;\n      }\n      uVar8 = FUN_000383f0();\n      *param_3 = uVar8;\n    }" (if "if") (parenthesized_expression "(iVar9 < 4)" (( "(") (binary_expression "iVar9 < 4" (identifier "iVar9") (< "<") (number_literal "4")) () ")")) (compound_statement "{\n      pbVar3 = (byte *)(iVar4 + 7 + uVar11);\n      if (*pbVar3 < 0x3a) {\n        *(undefined2 *)(iVar4 + uVar5) = *(undefined2 *)(iVar4 + uVar6);\n        *pbVar3 = *pbVar3 + (char)iVar9;\nLAB_00038f08:\n        return iVar4 + uVar6 + iVar9;\n      }\n    }" ({ "{") (expression_statement "pbVar3 = (byte *)(iVar4 + 7 + uVar11);" (assignment_expression "pbVar3 = (byte *)(iVar4 + 7 + uVar11)" (identifier "pbVar3") (= "=") (cast_expression "(byte *)(iVar4 + 7 + uVar11)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar4 + 7 + uVar11)" (( "(") (binary_expression "iVar4 + 7 + uVar11" (binary_expression "iVar4 + 7" (identifier "iVar4") (+ "+") (number_literal "7")) (+ "+") (identifier "uVar11")) () ")")))) (; ";")) (if_statement "if (*pbVar3 < 0x3a) {\n        *(undefined2 *)(iVar4 + uVar5) = *(undefined2 *)(iVar4 + uVar6);\n        *pbVar3 = *pbVar3 + (char)iVar9;\nLAB_00038f08:\n        return iVar4 + uVar6 + iVar9;\n      }" (if "if") (parenthesized_expression "(*pbVar3 < 0x3a)" (( "(") (binary_expression "*pbVar3 < 0x3a" (pointer_expression "*pbVar3" (* "*") (identifier "pbVar3")) (< "<") (number_literal "0x3a")) () ")")) (compound_statement "{\n        *(undefined2 *)(iVar4 + uVar5) = *(undefined2 *)(iVar4 + uVar6);\n        *pbVar3 = *pbVar3 + (char)iVar9;\nLAB_00038f08:\n        return iVar4 + uVar6 + iVar9;\n      }" ({ "{") (expression_statement "*(undefined2 *)(iVar4 + uVar5) = *(undefined2 *)(iVar4 + uVar6);" (assignment_expression "*(undefined2 *)(iVar4 + uVar5) = *(undefined2 *)(iVar4 + uVar6)" (pointer_expression "*(undefined2 *)(iVar4 + uVar5)" (* "*") (cast_expression "(undefined2 *)(iVar4 + uVar5)" (( "(") (type_descriptor "undefined2 *" (type_identifier "undefined2") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar4 + uVar5)" (( "(") (binary_expression "iVar4 + uVar5" (identifier "iVar4") (+ "+") (identifier "uVar5")) () ")")))) (= "=") (pointer_expression "*(undefined2 *)(iVar4 + uVar6)" (* "*") (cast_expression "(undefined2 *)(iVar4 + uVar6)" (( "(") (type_descriptor "undefined2 *" (type_identifier "undefined2") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar4 + uVar6)" (( "(") (binary_expression "iVar4 + uVar6" (identifier "iVar4") (+ "+") (identifier "uVar6")) () ")"))))) (; ";")) (expression_statement "*pbVar3 = *pbVar3 + (char)iVar9;" (assignment_expression "*pbVar3 = *pbVar3 + (char)iVar9" (pointer_expression "*pbVar3" (* "*") (identifier "pbVar3")) (= "=") (binary_expression "*pbVar3 + (char)iVar9" (pointer_expression "*pbVar3" (* "*") (identifier "pbVar3")) (+ "+") (cast_expression "(char)iVar9" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (identifier "iVar9")))) (; ";")) (labeled_statement "LAB_00038f08:\n        return iVar4 + uVar6 + iVar9;" (statement_identifier "LAB_00038f08") (: ":") (return_statement "return iVar4 + uVar6 + iVar9;" (return "return") (binary_expression "iVar4 + uVar6 + iVar9" (binary_expression "iVar4 + uVar6" (identifier "iVar4") (+ "+") (identifier "uVar6")) (+ "+") (identifier "iVar9")) (; ";"))) (} "}"))) (} "}")) (else_clause "else {\n      if ((int)(uVar6 + iVar9) <= iVar7) {\n        *puVar1 = (char)((uint)iVar9 >> 8);\n        *pcVar2 = (char)iVar9;\n        goto LAB_00038f08;\n      }\n      uVar8 = FUN_000383f0();\n      *param_3 = uVar8;\n    }" (else "else") (compound_statement "{\n      if ((int)(uVar6 + iVar9) <= iVar7) {\n        *puVar1 = (char)((uint)iVar9 >> 8);\n        *pcVar2 = (char)iVar9;\n        goto LAB_00038f08;\n      }\n      uVar8 = FUN_000383f0();\n      *param_3 = uVar8;\n    }" ({ "{") (if_statement "if ((int)(uVar6 + iVar9) <= iVar7) {\n        *puVar1 = (char)((uint)iVar9 >> 8);\n        *pcVar2 = (char)iVar9;\n        goto LAB_00038f08;\n      }" (if "if") (parenthesized_expression "((int)(uVar6 + iVar9) <= iVar7)" (( "(") (binary_expression "(int)(uVar6 + iVar9) <= iVar7" (cast_expression "(int)(uVar6 + iVar9)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "(uVar6 + iVar9)" (( "(") (binary_expression "uVar6 + iVar9" (identifier "uVar6") (+ "+") (identifier "iVar9")) () ")"))) (<= "<=") (identifier "iVar7")) () ")")) (compound_statement "{\n        *puVar1 = (char)((uint)iVar9 >> 8);\n        *pcVar2 = (char)iVar9;\n        goto LAB_00038f08;\n      }" ({ "{") (expression_statement "*puVar1 = (char)((uint)iVar9 >> 8);" (assignment_expression "*puVar1 = (char)((uint)iVar9 >> 8)" (pointer_expression "*puVar1" (* "*") (identifier "puVar1")) (= "=") (cast_expression "(char)((uint)iVar9 >> 8)" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (parenthesized_expression "((uint)iVar9 >> 8)" (( "(") (binary_expression "(uint)iVar9 >> 8" (cast_expression "(uint)iVar9" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "iVar9")) (>> ">>") (number_literal "8")) () ")")))) (; ";")) (expression_statement "*pcVar2 = (char)iVar9;" (assignment_expression "*pcVar2 = (char)iVar9" (pointer_expression "*pcVar2" (* "*") (identifier "pcVar2")) (= "=") (cast_expression "(char)iVar9" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (identifier "iVar9"))) (; ";")) (goto_statement "goto LAB_00038f08;" (goto "goto") (statement_identifier "LAB_00038f08") (; ";")) (} "}"))) (expression_statement "uVar8 = FUN_000383f0();" (assignment_expression "uVar8 = FUN_000383f0()" (identifier "uVar8") (= "=") (call_expression "FUN_000383f0()" (identifier "FUN_000383f0") (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "*param_3 = uVar8;" (assignment_expression "*param_3 = uVar8" (pointer_expression "*param_3" (* "*") (identifier "param_3")) (= "=") (identifier "uVar8")) (; ";")) (} "}")))) (} "}")))) (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}")))

type_1 * __regparm3 pageFindSlot(MemPage *pPg,int var_1,int *pRc)

{
  type_1 *puVar1;
  type_1 *puVar2;
  type_2 *pbVar3;
  type_1 *var_6;
  type_3 var_11;
  type_3 var_10;
  int var_4;
  int var_9;
  type_3 var_8;
  type_3 var_3;
  type_3 var_7;
  
  var_3 = (type_3)pPg->hdrOffset;
  var_6 = pPg->aData;
  var_4 = pPg->pBt->usableSize - var_1;
  var_7 = (type_3)var_2(var_6[var_3 + 1],var_6[var_3 + 2]);
  if (var_4 < (int)var_7) {
LAB_00038eb0:
    if (var_4 + -3 + var_1 <= (int)var_7) {
      var_4 = var_5(0x1021d);
      *pRc = var_4;
      return (type_1 *)0x0;
    }
  }
  else {
    puVar1 = var_6 + var_7 + 2;
    puVar2 = var_6 + var_7 + 3;
    var_8 = (type_3)var_2(*puVar1,*puVar2);
    var_9 = var_8 - var_1;
    var_11 = var_3 + 1;
    var_10 = var_7;
    while (var_9 < 0) {
      var_7 = (type_3)var_2(var_6[var_10],var_6[var_10 + 1]);
      if (var_7 <= var_8 + var_10) {
        if (var_7 == 0) {
          return (type_1 *)0x0;
        }
        var_4 = var_5(0x10216);
        *pRc = var_4;
        return (type_1 *)0x0;
      }
      if (var_4 < (int)var_7) goto LAB_00038eb0;
      puVar1 = var_6 + var_7 + 2;
      puVar2 = var_6 + var_7 + 3;
      var_8 = (type_3)var_2(*puVar1,var_6[var_7 + 3]);
      var_11 = var_10;
      var_10 = var_7;
      var_9 = var_8 - var_1;
    }
    if (var_9 < 4) {
      pbVar3 = var_6 + var_3 + 7;
      if (*pbVar3 < 0x3a) {
        *(type_4 *)(var_6 + var_11) = *(type_4 *)(var_6 + var_10);
        *pbVar3 = *pbVar3 + (type_1)var_9;
LAB_00038f08:
        return var_6 + var_10 + var_9;
      }
    }
    else {
      if ((int)(var_10 + var_9) <= var_4) {
        *puVar1 = (type_1)((type_3)var_9 >> 8);
        *puVar2 = (type_1)var_9;
        goto LAB_00038f08;
      }
      var_4 = var_5(0x10208);
      *pRc = var_4;
    }
  }
  return (type_1 *)0x0;
}


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

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

{
  undefined1 *puVar1;
  char *pcVar2;
  byte *pbVar3;
  int iVar4;
  uint uVar5;
  uint uVar6;
  int iVar7;
  undefined4 uVar8;
  int iVar9;
  uint uVar10;
  uint uVar11;
  uint uVar12;
  
  uVar11 = (uint)*(byte *)(param_1 + 9);
  iVar4 = *(int *)(param_1 + 0x38);
  iVar7 = *(int *)(*(int *)(param_1 + 0x34) + 0x28) - param_2;
  uVar12 = (uint)CONCAT11(*(undefined1 *)(iVar4 + 1 + uVar11),*(undefined1 *)(iVar4 + 2 + uVar11));
  if (iVar7 < (int)uVar12) {
LAB_00038eb0:
    if (iVar7 + -3 + param_2 <= (int)uVar12) {
      uVar8 = FUN_000383f0();
      *param_3 = uVar8;
      return 0;
    }
  }
  else {
    puVar1 = (undefined1 *)(iVar4 + 2 + uVar12);
    pcVar2 = (char *)(iVar4 + 3 + uVar12);
    uVar10 = (uint)CONCAT11(*puVar1,*pcVar2);
    iVar9 = uVar10 - param_2;
    uVar5 = uVar11 + 1;
    uVar6 = uVar12;
    while (iVar9 < 0) {
      uVar12 = (uint)CONCAT11(*(undefined1 *)(iVar4 + uVar6),*(undefined1 *)(iVar4 + 1 + uVar6));
      if (uVar12 <= uVar10 + uVar6) {
        if (uVar12 == 0) {
          return 0;
        }
        uVar8 = FUN_000383f0();
        *param_3 = uVar8;
        return 0;
      }
      if (iVar7 < (int)uVar12) goto LAB_00038eb0;
      puVar1 = (undefined1 *)(iVar4 + 2 + uVar12);
      pcVar2 = (char *)(iVar4 + 3 + uVar12);
      uVar10 = (uint)CONCAT11(*puVar1,*(undefined1 *)(iVar4 + 3 + uVar12));
      uVar5 = uVar6;
      uVar6 = uVar12;
      iVar9 = uVar10 - param_2;
    }
    if (iVar9 < 4) {
      pbVar3 = (byte *)(iVar4 + 7 + uVar11);
      if (*pbVar3 < 0x3a) {
        *(undefined2 *)(iVar4 + uVar5) = *(undefined2 *)(iVar4 + uVar6);
        *pbVar3 = *pbVar3 + (char)iVar9;
LAB_00038f08:
        return iVar4 + uVar6 + iVar9;
      }
    }
    else {
      if ((int)(uVar6 + iVar9) <= iVar7) {
        *puVar1 = (char)((uint)iVar9 >> 8);
        *pcVar2 = (char)iVar9;
        goto LAB_00038f08;
      }
      uVar8 = FUN_000383f0();
      *param_3 = uVar8;
    }
  }
  return 0;
}

