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

void * __regparm3 pcache1Alloc(int nByte)

{
  sqlite3_mutex *psVar1;
  PgFreeslot *pPVar2;
  int iVar3;
  u64 in_stack_ffffffe4;
  
  if (pcache1_g.szSlot < nByte) {
LAB_00042511:
    pPVar2 = (PgFreeslot *)sqlite3Malloc(in_stack_ffffffe4);
    if (pPVar2 != (PgFreeslot *)0x0) {
      iVar3 = (*sqlite3Config.m.xSize)(pPVar2);
      if (pcache1_g.mutex != (sqlite3_mutex *)0x0) {
        (*sqlite3Config.mutex.xMutexEnter)(pcache1_g.mutex);
      }
      if (sqlite3Stat.mxValue[7] < (uint)nByte) {
        sqlite3Stat.mxValue[7] = nByte;
      }
      sqlite3Stat.nowValue[2] = sqlite3Stat.nowValue[2] + iVar3;
      if (sqlite3Stat.mxValue[2] < sqlite3Stat.nowValue[2]) {
        sqlite3Stat.mxValue[2] = sqlite3Stat.nowValue[2];
      }
      if (pcache1_g.mutex != (sqlite3_mutex *)0x0) {
        (*sqlite3Config.mutex.xMutexLeave)(pcache1_g.mutex);
        return pPVar2;
      }
    }
  }
  else {
    if (pcache1_g.mutex == (sqlite3_mutex *)0x0) {
      psVar1 = (sqlite3_mutex *)0x0;
      pPVar2 = pcache1_g.pFree;
      if (pcache1_g.pFree == (PgFreeslot *)0x0) goto LAB_00042511;
    }
    else {
      (*sqlite3Config.mutex.xMutexEnter)(pcache1_g.mutex);
      psVar1 = pcache1_g.mutex;
      pPVar2 = pcache1_g.pFree;
      if (pcache1_g.pFree == (PgFreeslot *)0x0) {
        if (pcache1_g.mutex != (sqlite3_mutex *)0x0) {
          (*sqlite3Config.mutex.xMutexLeave)(pcache1_g.mutex);
        }
        goto LAB_00042511;
      }
    }
    pcache1_g.pFree = pPVar2->pNext;
    pcache1_g.nFreeSlot = pcache1_g.nFreeSlot + -1;
    pcache1_g.bUnderPressure = (int)(pcache1_g.nFreeSlot < pcache1_g.nReserve);
    if (sqlite3Stat.mxValue[7] < (uint)nByte) {
      sqlite3Stat.mxValue[7] = nByte;
    }
    sqlite3Stat.nowValue[1] = sqlite3Stat.nowValue[1] + 1;
    if (sqlite3Stat.mxValue[1] < sqlite3Stat.nowValue[1]) {
      sqlite3Stat.mxValue[1] = sqlite3Stat.nowValue[1];
    }
    if (psVar1 != (sqlite3_mutex *)0x0) {
      (*sqlite3Config.mutex.xMutexLeave)(psVar1);
    }
  }
  return pPVar2;
}



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

undefined4 * __regparm3 FUN_00042440(uint param_1)

{
  undefined4 *puVar1;
  int iVar2;
  
  if (DAT_0017db60 < (int)param_1) {
LAB_00042511:
    puVar1 = (undefined4 *)FUN_000421f0();
    if (puVar1 != (undefined4 *)0x0) {
      iVar2 = (*DAT_0017c418)(puVar1);
      if (DAT_0017db74 != 0) {
        (*DAT_0017c43c)(DAT_0017db74);
      }
      if (DAT_0017de24 < param_1) {
        DAT_0017de24 = param_1;
      }
      DAT_0017dde8 = DAT_0017dde8 + iVar2;
      if (DAT_0017de10 < DAT_0017dde8) {
        DAT_0017de10 = DAT_0017dde8;
      }
      if (DAT_0017db74 != 0) {
        (*DAT_0017c444)(DAT_0017db74);
        return puVar1;
      }
    }
  }
  else {
    if (DAT_0017db74 == 0) {
      iVar2 = 0;
      puVar1 = DAT_0017db78;
      if (DAT_0017db78 == (undefined4 *)0x0) goto LAB_00042511;
    }
    else {
      (*DAT_0017c43c)(DAT_0017db74);
      iVar2 = DAT_0017db74;
      puVar1 = DAT_0017db78;
      if (DAT_0017db78 == (undefined4 *)0x0) {
        if (DAT_0017db74 != 0) {
          (*DAT_0017c444)(DAT_0017db74);
        }
        goto LAB_00042511;
      }
    }
    DAT_0017db78 = (undefined4 *)*puVar1;
    DAT_0017db7c = DAT_0017db7c + -1;
    DAT_0017db80 = (uint)(DAT_0017db7c < DAT_0017db68);
    if (DAT_0017de24 < param_1) {
      DAT_0017de24 = param_1;
    }
    DAT_0017dde4 = DAT_0017dde4 + 1;
    if (DAT_0017de0c < DAT_0017dde4) {
      DAT_0017de0c = DAT_0017dde4;
    }
    if (iVar2 != 0) {
      (*DAT_0017c444)(iVar2);
    }
  }
  return puVar1;
}


PUSH EBP
PUSH EDI
MOV EDI,EAX
PUSH ESI
PUSH EBX
CALL 0x00017230
ADD EBX,0x1399dd
SUB ESP,0xc
CMP dword ptr [EBX + 0x1d38],EAX
JL 0x00042511
MOV EAX,dword ptr [EBX + 0x1d4c]
TEST EAX,EAX
JZ 0x00042590
SUB ESP,0xc
PUSH EAX
CALL dword ptr [EBX + 0x614]
MOV ESI,dword ptr [EBX + 0x1d50]
MOV EAX,dword ptr [EBX + 0x1d4c]
ADD ESP,0x10
TEST ESI,ESI
JZ 0x00042500
MOV EDX,dword ptr [ESI]
MOV dword ptr [EBX + 0x1d50],EDX
MOV EDX,dword ptr [EBX + 0x1d54]
SUB EDX,0x1
CMP EDX,dword ptr [EBX + 0x1d40]
MOV dword ptr [EBX + 0x1d54],EDX
SETL DL
MOVZX EDX,DL
MOV dword ptr [EBX + 0x1d58],EDX
CMP EDI,dword ptr [EBX + 0x1ffc]
JBE 0x000424c2
MOV dword ptr [EBX + 0x1ffc],EDI
MOV EDX,dword ptr [EBX + 0x1fbc]
ADD EDX,0x1
MOV dword ptr [EBX + 0x1fbc],EDX
CMP EDX,dword ptr [EBX + 0x1fe4]
JBE 0x000424df
MOV dword ptr [EBX + 0x1fe4],EDX
TEST EAX,EAX
JZ 0x000424f0
SUB ESP,0xc
PUSH EAX
CALL dword ptr [EBX + 0x61c]
ADD ESP,0x10
ADD ESP,0xc
MOV EAX,ESI
POP EBX
POP ESI
POP EDI
POP EBP
RET
TEST EAX,EAX
JZ 0x00042511
SUB ESP,0xc
PUSH EAX
CALL dword ptr [EBX + 0x61c]
ADD ESP,0x10
MOV EAX,EDI
CDQ
CALL 0x000421f0
MOV ESI,EAX
TEST EAX,EAX
JZ 0x000424f0
SUB ESP,0xc
PUSH EAX
CALL dword ptr [EBX + 0x5f0]
MOV EDX,dword ptr [EBX + 0x1d4c]
MOV EBP,EAX
ADD ESP,0x10
TEST EDX,EDX
JZ 0x0004254b
SUB ESP,0xc
PUSH EDX
CALL dword ptr [EBX + 0x614]
MOV EDX,dword ptr [EBX + 0x1d4c]
ADD ESP,0x10
CMP EDI,dword ptr [EBX + 0x1ffc]
JBE 0x00042559
MOV dword ptr [EBX + 0x1ffc],EDI
MOV EAX,dword ptr [EBX + 0x1fc0]
ADD EAX,EBP
MOV dword ptr [EBX + 0x1fc0],EAX
CMP EAX,dword ptr [EBX + 0x1fe8]
JA 0x000425a8
TEST EDX,EDX
JZ 0x000424f0
SUB ESP,0xc
PUSH EDX
CALL dword ptr [EBX + 0x61c]
MOV EAX,ESI
ADD ESP,0x10
ADD ESP,0xc
POP EBX
POP ESI
POP EDI
POP EBP
RET
MOV ESI,dword ptr [EBX + 0x1d50]
TEST ESI,ESI
JNZ 0x0004248b
JMP 0x00042511
MOV dword ptr [EBX + 0x1fe8],EAX
JMP 0x0004256f
(translation_unit "/* WARNING: Function: __i686.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n\nundefined4 * __regparm3 FUN_00042440(uint param_1)\n\n{\n  undefined4 *puVar1;\n  int iVar2;\n  \n  if (DAT_0017db60 < (int)param_1) {\nLAB_00042511:\n    puVar1 = (undefined4 *)FUN_000421f0();\n    if (puVar1 != (undefined4 *)0x0) {\n      iVar2 = (*DAT_0017c418)(puVar1);\n      if (DAT_0017db74 != 0) {\n        (*DAT_0017c43c)(DAT_0017db74);\n      }\n      if (DAT_0017de24 < param_1) {\n        DAT_0017de24 = param_1;\n      }\n      DAT_0017dde8 = DAT_0017dde8 + iVar2;\n      if (DAT_0017de10 < DAT_0017dde8) {\n        DAT_0017de10 = DAT_0017dde8;\n      }\n      if (DAT_0017db74 != 0) {\n        (*DAT_0017c444)(DAT_0017db74);\n        return puVar1;\n      }\n    }\n  }\n  else {\n    if (DAT_0017db74 == 0) {\n      iVar2 = 0;\n      puVar1 = DAT_0017db78;\n      if (DAT_0017db78 == (undefined4 *)0x0) goto LAB_00042511;\n    }\n    else {\n      (*DAT_0017c43c)(DAT_0017db74);\n      iVar2 = DAT_0017db74;\n      puVar1 = DAT_0017db78;\n      if (DAT_0017db78 == (undefined4 *)0x0) {\n        if (DAT_0017db74 != 0) {\n          (*DAT_0017c444)(DAT_0017db74);\n        }\n        goto LAB_00042511;\n      }\n    }\n    DAT_0017db78 = (undefined4 *)*puVar1;\n    DAT_0017db7c = DAT_0017db7c + -1;\n    DAT_0017db80 = (uint)(DAT_0017db7c < DAT_0017db68);\n    if (DAT_0017de24 < param_1) {\n      DAT_0017de24 = param_1;\n    }\n    DAT_0017dde4 = DAT_0017dde4 + 1;\n    if (DAT_0017de0c < DAT_0017dde4) {\n      DAT_0017de0c = DAT_0017dde4;\n    }\n    if (iVar2 != 0) {\n      (*DAT_0017c444)(iVar2);\n    }\n  }\n  return puVar1;\n}\n\n" comment (ERROR "undefined4 * __regparm3 FUN_00042440(uint param_1)" (binary_expression "undefined4 * __regparm3 FUN_00042440(uint param_1)" identifier * (ERROR "__regparm3" identifier) (call_expression "FUN_00042440(uint param_1)" identifier (argument_list "(uint param_1)" ( (ERROR "uint" identifier) identifier ))))) (compound_statement "{\n  undefined4 *puVar1;\n  int iVar2;\n  \n  if (DAT_0017db60 < (int)param_1) {\nLAB_00042511:\n    puVar1 = (undefined4 *)FUN_000421f0();\n    if (puVar1 != (undefined4 *)0x0) {\n      iVar2 = (*DAT_0017c418)(puVar1);\n      if (DAT_0017db74 != 0) {\n        (*DAT_0017c43c)(DAT_0017db74);\n      }\n      if (DAT_0017de24 < param_1) {\n        DAT_0017de24 = param_1;\n      }\n      DAT_0017dde8 = DAT_0017dde8 + iVar2;\n      if (DAT_0017de10 < DAT_0017dde8) {\n        DAT_0017de10 = DAT_0017dde8;\n      }\n      if (DAT_0017db74 != 0) {\n        (*DAT_0017c444)(DAT_0017db74);\n        return puVar1;\n      }\n    }\n  }\n  else {\n    if (DAT_0017db74 == 0) {\n      iVar2 = 0;\n      puVar1 = DAT_0017db78;\n      if (DAT_0017db78 == (undefined4 *)0x0) goto LAB_00042511;\n    }\n    else {\n      (*DAT_0017c43c)(DAT_0017db74);\n      iVar2 = DAT_0017db74;\n      puVar1 = DAT_0017db78;\n      if (DAT_0017db78 == (undefined4 *)0x0) {\n        if (DAT_0017db74 != 0) {\n          (*DAT_0017c444)(DAT_0017db74);\n        }\n        goto LAB_00042511;\n      }\n    }\n    DAT_0017db78 = (undefined4 *)*puVar1;\n    DAT_0017db7c = DAT_0017db7c + -1;\n    DAT_0017db80 = (uint)(DAT_0017db7c < DAT_0017db68);\n    if (DAT_0017de24 < param_1) {\n      DAT_0017de24 = param_1;\n    }\n    DAT_0017dde4 = DAT_0017dde4 + 1;\n    if (DAT_0017de0c < DAT_0017dde4) {\n      DAT_0017de0c = DAT_0017dde4;\n    }\n    if (iVar2 != 0) {\n      (*DAT_0017c444)(iVar2);\n    }\n  }\n  return puVar1;\n}" { (declaration "undefined4 *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "int iVar2;" primitive_type identifier ;) (if_statement "if (DAT_0017db60 < (int)param_1) {\nLAB_00042511:\n    puVar1 = (undefined4 *)FUN_000421f0();\n    if (puVar1 != (undefined4 *)0x0) {\n      iVar2 = (*DAT_0017c418)(puVar1);\n      if (DAT_0017db74 != 0) {\n        (*DAT_0017c43c)(DAT_0017db74);\n      }\n      if (DAT_0017de24 < param_1) {\n        DAT_0017de24 = param_1;\n      }\n      DAT_0017dde8 = DAT_0017dde8 + iVar2;\n      if (DAT_0017de10 < DAT_0017dde8) {\n        DAT_0017de10 = DAT_0017dde8;\n      }\n      if (DAT_0017db74 != 0) {\n        (*DAT_0017c444)(DAT_0017db74);\n        return puVar1;\n      }\n    }\n  }\n  else {\n    if (DAT_0017db74 == 0) {\n      iVar2 = 0;\n      puVar1 = DAT_0017db78;\n      if (DAT_0017db78 == (undefined4 *)0x0) goto LAB_00042511;\n    }\n    else {\n      (*DAT_0017c43c)(DAT_0017db74);\n      iVar2 = DAT_0017db74;\n      puVar1 = DAT_0017db78;\n      if (DAT_0017db78 == (undefined4 *)0x0) {\n        if (DAT_0017db74 != 0) {\n          (*DAT_0017c444)(DAT_0017db74);\n        }\n        goto LAB_00042511;\n      }\n    }\n    DAT_0017db78 = (undefined4 *)*puVar1;\n    DAT_0017db7c = DAT_0017db7c + -1;\n    DAT_0017db80 = (uint)(DAT_0017db7c < DAT_0017db68);\n    if (DAT_0017de24 < param_1) {\n      DAT_0017de24 = param_1;\n    }\n    DAT_0017dde4 = DAT_0017dde4 + 1;\n    if (DAT_0017de0c < DAT_0017dde4) {\n      DAT_0017de0c = DAT_0017dde4;\n    }\n    if (iVar2 != 0) {\n      (*DAT_0017c444)(iVar2);\n    }\n  }" if (parenthesized_expression "(DAT_0017db60 < (int)param_1)" ( (binary_expression "DAT_0017db60 < (int)param_1" identifier < (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\nLAB_00042511:\n    puVar1 = (undefined4 *)FUN_000421f0();\n    if (puVar1 != (undefined4 *)0x0) {\n      iVar2 = (*DAT_0017c418)(puVar1);\n      if (DAT_0017db74 != 0) {\n        (*DAT_0017c43c)(DAT_0017db74);\n      }\n      if (DAT_0017de24 < param_1) {\n        DAT_0017de24 = param_1;\n      }\n      DAT_0017dde8 = DAT_0017dde8 + iVar2;\n      if (DAT_0017de10 < DAT_0017dde8) {\n        DAT_0017de10 = DAT_0017dde8;\n      }\n      if (DAT_0017db74 != 0) {\n        (*DAT_0017c444)(DAT_0017db74);\n        return puVar1;\n      }\n    }\n  }" { (labeled_statement "LAB_00042511:\n    puVar1 = (undefined4 *)FUN_000421f0();" statement_identifier : (expression_statement "puVar1 = (undefined4 *)FUN_000421f0();" (assignment_expression "puVar1 = (undefined4 *)FUN_000421f0()" identifier = (cast_expression "(undefined4 *)FUN_000421f0()" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_000421f0()" identifier (argument_list "()" ( ))))) ;)) (if_statement "if (puVar1 != (undefined4 *)0x0) {\n      iVar2 = (*DAT_0017c418)(puVar1);\n      if (DAT_0017db74 != 0) {\n        (*DAT_0017c43c)(DAT_0017db74);\n      }\n      if (DAT_0017de24 < param_1) {\n        DAT_0017de24 = param_1;\n      }\n      DAT_0017dde8 = DAT_0017dde8 + iVar2;\n      if (DAT_0017de10 < DAT_0017dde8) {\n        DAT_0017de10 = DAT_0017dde8;\n      }\n      if (DAT_0017db74 != 0) {\n        (*DAT_0017c444)(DAT_0017db74);\n        return puVar1;\n      }\n    }" if (parenthesized_expression "(puVar1 != (undefined4 *)0x0)" ( (binary_expression "puVar1 != (undefined4 *)0x0" identifier != (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      iVar2 = (*DAT_0017c418)(puVar1);\n      if (DAT_0017db74 != 0) {\n        (*DAT_0017c43c)(DAT_0017db74);\n      }\n      if (DAT_0017de24 < param_1) {\n        DAT_0017de24 = param_1;\n      }\n      DAT_0017dde8 = DAT_0017dde8 + iVar2;\n      if (DAT_0017de10 < DAT_0017dde8) {\n        DAT_0017de10 = DAT_0017dde8;\n      }\n      if (DAT_0017db74 != 0) {\n        (*DAT_0017c444)(DAT_0017db74);\n        return puVar1;\n      }\n    }" { (expression_statement "iVar2 = (*DAT_0017c418)(puVar1);" (assignment_expression "iVar2 = (*DAT_0017c418)(puVar1)" identifier = (call_expression "(*DAT_0017c418)(puVar1)" (parenthesized_expression "(*DAT_0017c418)" ( (pointer_expression "*DAT_0017c418" * identifier) )) (argument_list "(puVar1)" ( identifier )))) ;) (if_statement "if (DAT_0017db74 != 0) {\n        (*DAT_0017c43c)(DAT_0017db74);\n      }" if (parenthesized_expression "(DAT_0017db74 != 0)" ( (binary_expression "DAT_0017db74 != 0" identifier != number_literal) )) (compound_statement "{\n        (*DAT_0017c43c)(DAT_0017db74);\n      }" { (expression_statement "(*DAT_0017c43c)(DAT_0017db74);" (call_expression "(*DAT_0017c43c)(DAT_0017db74)" (parenthesized_expression "(*DAT_0017c43c)" ( (pointer_expression "*DAT_0017c43c" * identifier) )) (argument_list "(DAT_0017db74)" ( identifier ))) ;) })) (if_statement "if (DAT_0017de24 < param_1) {\n        DAT_0017de24 = param_1;\n      }" if (parenthesized_expression "(DAT_0017de24 < param_1)" ( (binary_expression "DAT_0017de24 < param_1" identifier < identifier) )) (compound_statement "{\n        DAT_0017de24 = param_1;\n      }" { (expression_statement "DAT_0017de24 = param_1;" (assignment_expression "DAT_0017de24 = param_1" identifier = identifier) ;) })) (expression_statement "DAT_0017dde8 = DAT_0017dde8 + iVar2;" (assignment_expression "DAT_0017dde8 = DAT_0017dde8 + iVar2" identifier = (binary_expression "DAT_0017dde8 + iVar2" identifier + identifier)) ;) (if_statement "if (DAT_0017de10 < DAT_0017dde8) {\n        DAT_0017de10 = DAT_0017dde8;\n      }" if (parenthesized_expression "(DAT_0017de10 < DAT_0017dde8)" ( (binary_expression "DAT_0017de10 < DAT_0017dde8" identifier < identifier) )) (compound_statement "{\n        DAT_0017de10 = DAT_0017dde8;\n      }" { (expression_statement "DAT_0017de10 = DAT_0017dde8;" (assignment_expression "DAT_0017de10 = DAT_0017dde8" identifier = identifier) ;) })) (if_statement "if (DAT_0017db74 != 0) {\n        (*DAT_0017c444)(DAT_0017db74);\n        return puVar1;\n      }" if (parenthesized_expression "(DAT_0017db74 != 0)" ( (binary_expression "DAT_0017db74 != 0" identifier != number_literal) )) (compound_statement "{\n        (*DAT_0017c444)(DAT_0017db74);\n        return puVar1;\n      }" { (expression_statement "(*DAT_0017c444)(DAT_0017db74);" (call_expression "(*DAT_0017c444)(DAT_0017db74)" (parenthesized_expression "(*DAT_0017c444)" ( (pointer_expression "*DAT_0017c444" * identifier) )) (argument_list "(DAT_0017db74)" ( identifier ))) ;) (return_statement "return puVar1;" return identifier ;) })) })) }) (else_clause "else {\n    if (DAT_0017db74 == 0) {\n      iVar2 = 0;\n      puVar1 = DAT_0017db78;\n      if (DAT_0017db78 == (undefined4 *)0x0) goto LAB_00042511;\n    }\n    else {\n      (*DAT_0017c43c)(DAT_0017db74);\n      iVar2 = DAT_0017db74;\n      puVar1 = DAT_0017db78;\n      if (DAT_0017db78 == (undefined4 *)0x0) {\n        if (DAT_0017db74 != 0) {\n          (*DAT_0017c444)(DAT_0017db74);\n        }\n        goto LAB_00042511;\n      }\n    }\n    DAT_0017db78 = (undefined4 *)*puVar1;\n    DAT_0017db7c = DAT_0017db7c + -1;\n    DAT_0017db80 = (uint)(DAT_0017db7c < DAT_0017db68);\n    if (DAT_0017de24 < param_1) {\n      DAT_0017de24 = param_1;\n    }\n    DAT_0017dde4 = DAT_0017dde4 + 1;\n    if (DAT_0017de0c < DAT_0017dde4) {\n      DAT_0017de0c = DAT_0017dde4;\n    }\n    if (iVar2 != 0) {\n      (*DAT_0017c444)(iVar2);\n    }\n  }" else (compound_statement "{\n    if (DAT_0017db74 == 0) {\n      iVar2 = 0;\n      puVar1 = DAT_0017db78;\n      if (DAT_0017db78 == (undefined4 *)0x0) goto LAB_00042511;\n    }\n    else {\n      (*DAT_0017c43c)(DAT_0017db74);\n      iVar2 = DAT_0017db74;\n      puVar1 = DAT_0017db78;\n      if (DAT_0017db78 == (undefined4 *)0x0) {\n        if (DAT_0017db74 != 0) {\n          (*DAT_0017c444)(DAT_0017db74);\n        }\n        goto LAB_00042511;\n      }\n    }\n    DAT_0017db78 = (undefined4 *)*puVar1;\n    DAT_0017db7c = DAT_0017db7c + -1;\n    DAT_0017db80 = (uint)(DAT_0017db7c < DAT_0017db68);\n    if (DAT_0017de24 < param_1) {\n      DAT_0017de24 = param_1;\n    }\n    DAT_0017dde4 = DAT_0017dde4 + 1;\n    if (DAT_0017de0c < DAT_0017dde4) {\n      DAT_0017de0c = DAT_0017dde4;\n    }\n    if (iVar2 != 0) {\n      (*DAT_0017c444)(iVar2);\n    }\n  }" { (if_statement "if (DAT_0017db74 == 0) {\n      iVar2 = 0;\n      puVar1 = DAT_0017db78;\n      if (DAT_0017db78 == (undefined4 *)0x0) goto LAB_00042511;\n    }\n    else {\n      (*DAT_0017c43c)(DAT_0017db74);\n      iVar2 = DAT_0017db74;\n      puVar1 = DAT_0017db78;\n      if (DAT_0017db78 == (undefined4 *)0x0) {\n        if (DAT_0017db74 != 0) {\n          (*DAT_0017c444)(DAT_0017db74);\n        }\n        goto LAB_00042511;\n      }\n    }" if (parenthesized_expression "(DAT_0017db74 == 0)" ( (binary_expression "DAT_0017db74 == 0" identifier == number_literal) )) (compound_statement "{\n      iVar2 = 0;\n      puVar1 = DAT_0017db78;\n      if (DAT_0017db78 == (undefined4 *)0x0) goto LAB_00042511;\n    }" { (expression_statement "iVar2 = 0;" (assignment_expression "iVar2 = 0" identifier = number_literal) ;) (expression_statement "puVar1 = DAT_0017db78;" (assignment_expression "puVar1 = DAT_0017db78" identifier = identifier) ;) (if_statement "if (DAT_0017db78 == (undefined4 *)0x0) goto LAB_00042511;" if (parenthesized_expression "(DAT_0017db78 == (undefined4 *)0x0)" ( (binary_expression "DAT_0017db78 == (undefined4 *)0x0" identifier == (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_00042511;" goto statement_identifier ;)) }) (else_clause "else {\n      (*DAT_0017c43c)(DAT_0017db74);\n      iVar2 = DAT_0017db74;\n      puVar1 = DAT_0017db78;\n      if (DAT_0017db78 == (undefined4 *)0x0) {\n        if (DAT_0017db74 != 0) {\n          (*DAT_0017c444)(DAT_0017db74);\n        }\n        goto LAB_00042511;\n      }\n    }" else (compound_statement "{\n      (*DAT_0017c43c)(DAT_0017db74);\n      iVar2 = DAT_0017db74;\n      puVar1 = DAT_0017db78;\n      if (DAT_0017db78 == (undefined4 *)0x0) {\n        if (DAT_0017db74 != 0) {\n          (*DAT_0017c444)(DAT_0017db74);\n        }\n        goto LAB_00042511;\n      }\n    }" { (expression_statement "(*DAT_0017c43c)(DAT_0017db74);" (call_expression "(*DAT_0017c43c)(DAT_0017db74)" (parenthesized_expression "(*DAT_0017c43c)" ( (pointer_expression "*DAT_0017c43c" * identifier) )) (argument_list "(DAT_0017db74)" ( identifier ))) ;) (expression_statement "iVar2 = DAT_0017db74;" (assignment_expression "iVar2 = DAT_0017db74" identifier = identifier) ;) (expression_statement "puVar1 = DAT_0017db78;" (assignment_expression "puVar1 = DAT_0017db78" identifier = identifier) ;) (if_statement "if (DAT_0017db78 == (undefined4 *)0x0) {\n        if (DAT_0017db74 != 0) {\n          (*DAT_0017c444)(DAT_0017db74);\n        }\n        goto LAB_00042511;\n      }" if (parenthesized_expression "(DAT_0017db78 == (undefined4 *)0x0)" ( (binary_expression "DAT_0017db78 == (undefined4 *)0x0" identifier == (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        if (DAT_0017db74 != 0) {\n          (*DAT_0017c444)(DAT_0017db74);\n        }\n        goto LAB_00042511;\n      }" { (if_statement "if (DAT_0017db74 != 0) {\n          (*DAT_0017c444)(DAT_0017db74);\n        }" if (parenthesized_expression "(DAT_0017db74 != 0)" ( (binary_expression "DAT_0017db74 != 0" identifier != number_literal) )) (compound_statement "{\n          (*DAT_0017c444)(DAT_0017db74);\n        }" { (expression_statement "(*DAT_0017c444)(DAT_0017db74);" (call_expression "(*DAT_0017c444)(DAT_0017db74)" (parenthesized_expression "(*DAT_0017c444)" ( (pointer_expression "*DAT_0017c444" * identifier) )) (argument_list "(DAT_0017db74)" ( identifier ))) ;) })) (goto_statement "goto LAB_00042511;" goto statement_identifier ;) })) }))) (expression_statement "DAT_0017db78 = (undefined4 *)*puVar1;" (assignment_expression "DAT_0017db78 = (undefined4 *)*puVar1" identifier = (cast_expression "(undefined4 *)*puVar1" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar1" * identifier))) ;) (expression_statement "DAT_0017db7c = DAT_0017db7c + -1;" (assignment_expression "DAT_0017db7c = DAT_0017db7c + -1" identifier = (binary_expression "DAT_0017db7c + -1" identifier + number_literal)) ;) (expression_statement "DAT_0017db80 = (uint)(DAT_0017db7c < DAT_0017db68);" (assignment_expression "DAT_0017db80 = (uint)(DAT_0017db7c < DAT_0017db68)" identifier = (call_expression "(uint)(DAT_0017db7c < DAT_0017db68)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(DAT_0017db7c < DAT_0017db68)" ( (binary_expression "DAT_0017db7c < DAT_0017db68" identifier < identifier) )))) ;) (if_statement "if (DAT_0017de24 < param_1) {\n      DAT_0017de24 = param_1;\n    }" if (parenthesized_expression "(DAT_0017de24 < param_1)" ( (binary_expression "DAT_0017de24 < param_1" identifier < identifier) )) (compound_statement "{\n      DAT_0017de24 = param_1;\n    }" { (expression_statement "DAT_0017de24 = param_1;" (assignment_expression "DAT_0017de24 = param_1" identifier = identifier) ;) })) (expression_statement "DAT_0017dde4 = DAT_0017dde4 + 1;" (assignment_expression "DAT_0017dde4 = DAT_0017dde4 + 1" identifier = (binary_expression "DAT_0017dde4 + 1" identifier + number_literal)) ;) (if_statement "if (DAT_0017de0c < DAT_0017dde4) {\n      DAT_0017de0c = DAT_0017dde4;\n    }" if (parenthesized_expression "(DAT_0017de0c < DAT_0017dde4)" ( (binary_expression "DAT_0017de0c < DAT_0017dde4" identifier < identifier) )) (compound_statement "{\n      DAT_0017de0c = DAT_0017dde4;\n    }" { (expression_statement "DAT_0017de0c = DAT_0017dde4;" (assignment_expression "DAT_0017de0c = DAT_0017dde4" identifier = identifier) ;) })) (if_statement "if (iVar2 != 0) {\n      (*DAT_0017c444)(iVar2);\n    }" if (parenthesized_expression "(iVar2 != 0)" ( (binary_expression "iVar2 != 0" identifier != number_literal) )) (compound_statement "{\n      (*DAT_0017c444)(iVar2);\n    }" { (expression_statement "(*DAT_0017c444)(iVar2);" (call_expression "(*DAT_0017c444)(iVar2)" (parenthesized_expression "(*DAT_0017c444)" ( (pointer_expression "*DAT_0017c444" * identifier) )) (argument_list "(iVar2)" ( identifier ))) ;) })) }))) (return_statement "return puVar1;" return identifier ;) }))
(translation_unit "/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n\nvoid * __regparm3 pcache1Alloc(int nByte)\n\n{\n  sqlite3_mutex *psVar1;\n  PgFreeslot *pPVar2;\n  int iVar3;\n  u64 in_stack_ffffffe4;\n  \n  if (pcache1_g.szSlot < nByte) {\nLAB_00042511:\n    pPVar2 = (PgFreeslot *)sqlite3Malloc(in_stack_ffffffe4);\n    if (pPVar2 != (PgFreeslot *)0x0) {\n      iVar3 = (*sqlite3Config.m.xSize)(pPVar2);\n      if (pcache1_g.mutex != (sqlite3_mutex *)0x0) {\n        (*sqlite3Config.mutex.xMutexEnter)(pcache1_g.mutex);\n      }\n      if (sqlite3Stat.mxValue[7] < (uint)nByte) {\n        sqlite3Stat.mxValue[7] = nByte;\n      }\n      sqlite3Stat.nowValue[2] = sqlite3Stat.nowValue[2] + iVar3;\n      if (sqlite3Stat.mxValue[2] < sqlite3Stat.nowValue[2]) {\n        sqlite3Stat.mxValue[2] = sqlite3Stat.nowValue[2];\n      }\n      if (pcache1_g.mutex != (sqlite3_mutex *)0x0) {\n        (*sqlite3Config.mutex.xMutexLeave)(pcache1_g.mutex);\n        return pPVar2;\n      }\n    }\n  }\n  else {\n    if (pcache1_g.mutex == (sqlite3_mutex *)0x0) {\n      psVar1 = (sqlite3_mutex *)0x0;\n      pPVar2 = pcache1_g.pFree;\n      if (pcache1_g.pFree == (PgFreeslot *)0x0) goto LAB_00042511;\n    }\n    else {\n      (*sqlite3Config.mutex.xMutexEnter)(pcache1_g.mutex);\n      psVar1 = pcache1_g.mutex;\n      pPVar2 = pcache1_g.pFree;\n      if (pcache1_g.pFree == (PgFreeslot *)0x0) {\n        if (pcache1_g.mutex != (sqlite3_mutex *)0x0) {\n          (*sqlite3Config.mutex.xMutexLeave)(pcache1_g.mutex);\n        }\n        goto LAB_00042511;\n      }\n    }\n    pcache1_g.pFree = pPVar2->pNext;\n    pcache1_g.nFreeSlot = pcache1_g.nFreeSlot + -1;\n    pcache1_g.bUnderPressure = (int)(pcache1_g.nFreeSlot < pcache1_g.nReserve);\n    if (sqlite3Stat.mxValue[7] < (uint)nByte) {\n      sqlite3Stat.mxValue[7] = nByte;\n    }\n    sqlite3Stat.nowValue[1] = sqlite3Stat.nowValue[1] + 1;\n    if (sqlite3Stat.mxValue[1] < sqlite3Stat.nowValue[1]) {\n      sqlite3Stat.mxValue[1] = sqlite3Stat.nowValue[1];\n    }\n    if (psVar1 != (sqlite3_mutex *)0x0) {\n      (*sqlite3Config.mutex.xMutexLeave)(psVar1);\n    }\n  }\n  return pPVar2;\n}\n\n" comment (function_definition "void * __regparm3 pcache1Alloc(int nByte)\n\n{\n  sqlite3_mutex *psVar1;\n  PgFreeslot *pPVar2;\n  int iVar3;\n  u64 in_stack_ffffffe4;\n  \n  if (pcache1_g.szSlot < nByte) {\nLAB_00042511:\n    pPVar2 = (PgFreeslot *)sqlite3Malloc(in_stack_ffffffe4);\n    if (pPVar2 != (PgFreeslot *)0x0) {\n      iVar3 = (*sqlite3Config.m.xSize)(pPVar2);\n      if (pcache1_g.mutex != (sqlite3_mutex *)0x0) {\n        (*sqlite3Config.mutex.xMutexEnter)(pcache1_g.mutex);\n      }\n      if (sqlite3Stat.mxValue[7] < (uint)nByte) {\n        sqlite3Stat.mxValue[7] = nByte;\n      }\n      sqlite3Stat.nowValue[2] = sqlite3Stat.nowValue[2] + iVar3;\n      if (sqlite3Stat.mxValue[2] < sqlite3Stat.nowValue[2]) {\n        sqlite3Stat.mxValue[2] = sqlite3Stat.nowValue[2];\n      }\n      if (pcache1_g.mutex != (sqlite3_mutex *)0x0) {\n        (*sqlite3Config.mutex.xMutexLeave)(pcache1_g.mutex);\n        return pPVar2;\n      }\n    }\n  }\n  else {\n    if (pcache1_g.mutex == (sqlite3_mutex *)0x0) {\n      psVar1 = (sqlite3_mutex *)0x0;\n      pPVar2 = pcache1_g.pFree;\n      if (pcache1_g.pFree == (PgFreeslot *)0x0) goto LAB_00042511;\n    }\n    else {\n      (*sqlite3Config.mutex.xMutexEnter)(pcache1_g.mutex);\n      psVar1 = pcache1_g.mutex;\n      pPVar2 = pcache1_g.pFree;\n      if (pcache1_g.pFree == (PgFreeslot *)0x0) {\n        if (pcache1_g.mutex != (sqlite3_mutex *)0x0) {\n          (*sqlite3Config.mutex.xMutexLeave)(pcache1_g.mutex);\n        }\n        goto LAB_00042511;\n      }\n    }\n    pcache1_g.pFree = pPVar2->pNext;\n    pcache1_g.nFreeSlot = pcache1_g.nFreeSlot + -1;\n    pcache1_g.bUnderPressure = (int)(pcache1_g.nFreeSlot < pcache1_g.nReserve);\n    if (sqlite3Stat.mxValue[7] < (uint)nByte) {\n      sqlite3Stat.mxValue[7] = nByte;\n    }\n    sqlite3Stat.nowValue[1] = sqlite3Stat.nowValue[1] + 1;\n    if (sqlite3Stat.mxValue[1] < sqlite3Stat.nowValue[1]) {\n      sqlite3Stat.mxValue[1] = sqlite3Stat.nowValue[1];\n    }\n    if (psVar1 != (sqlite3_mutex *)0x0) {\n      (*sqlite3Config.mutex.xMutexLeave)(psVar1);\n    }\n  }\n  return pPVar2;\n}" primitive_type (pointer_declarator "* __regparm3 pcache1Alloc(int nByte)" * (ERROR "__regparm3" identifier) (function_declarator "pcache1Alloc(int nByte)" identifier (parameter_list "(int nByte)" ( (parameter_declaration "int nByte" primitive_type identifier) )))) (compound_statement "{\n  sqlite3_mutex *psVar1;\n  PgFreeslot *pPVar2;\n  int iVar3;\n  u64 in_stack_ffffffe4;\n  \n  if (pcache1_g.szSlot < nByte) {\nLAB_00042511:\n    pPVar2 = (PgFreeslot *)sqlite3Malloc(in_stack_ffffffe4);\n    if (pPVar2 != (PgFreeslot *)0x0) {\n      iVar3 = (*sqlite3Config.m.xSize)(pPVar2);\n      if (pcache1_g.mutex != (sqlite3_mutex *)0x0) {\n        (*sqlite3Config.mutex.xMutexEnter)(pcache1_g.mutex);\n      }\n      if (sqlite3Stat.mxValue[7] < (uint)nByte) {\n        sqlite3Stat.mxValue[7] = nByte;\n      }\n      sqlite3Stat.nowValue[2] = sqlite3Stat.nowValue[2] + iVar3;\n      if (sqlite3Stat.mxValue[2] < sqlite3Stat.nowValue[2]) {\n        sqlite3Stat.mxValue[2] = sqlite3Stat.nowValue[2];\n      }\n      if (pcache1_g.mutex != (sqlite3_mutex *)0x0) {\n        (*sqlite3Config.mutex.xMutexLeave)(pcache1_g.mutex);\n        return pPVar2;\n      }\n    }\n  }\n  else {\n    if (pcache1_g.mutex == (sqlite3_mutex *)0x0) {\n      psVar1 = (sqlite3_mutex *)0x0;\n      pPVar2 = pcache1_g.pFree;\n      if (pcache1_g.pFree == (PgFreeslot *)0x0) goto LAB_00042511;\n    }\n    else {\n      (*sqlite3Config.mutex.xMutexEnter)(pcache1_g.mutex);\n      psVar1 = pcache1_g.mutex;\n      pPVar2 = pcache1_g.pFree;\n      if (pcache1_g.pFree == (PgFreeslot *)0x0) {\n        if (pcache1_g.mutex != (sqlite3_mutex *)0x0) {\n          (*sqlite3Config.mutex.xMutexLeave)(pcache1_g.mutex);\n        }\n        goto LAB_00042511;\n      }\n    }\n    pcache1_g.pFree = pPVar2->pNext;\n    pcache1_g.nFreeSlot = pcache1_g.nFreeSlot + -1;\n    pcache1_g.bUnderPressure = (int)(pcache1_g.nFreeSlot < pcache1_g.nReserve);\n    if (sqlite3Stat.mxValue[7] < (uint)nByte) {\n      sqlite3Stat.mxValue[7] = nByte;\n    }\n    sqlite3Stat.nowValue[1] = sqlite3Stat.nowValue[1] + 1;\n    if (sqlite3Stat.mxValue[1] < sqlite3Stat.nowValue[1]) {\n      sqlite3Stat.mxValue[1] = sqlite3Stat.nowValue[1];\n    }\n    if (psVar1 != (sqlite3_mutex *)0x0) {\n      (*sqlite3Config.mutex.xMutexLeave)(psVar1);\n    }\n  }\n  return pPVar2;\n}" { (declaration "sqlite3_mutex *psVar1;" type_identifier (pointer_declarator "*psVar1" * identifier) ;) (declaration "PgFreeslot *pPVar2;" type_identifier (pointer_declarator "*pPVar2" * identifier) ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "u64 in_stack_ffffffe4;" type_identifier identifier ;) (if_statement "if (pcache1_g.szSlot < nByte) {\nLAB_00042511:\n    pPVar2 = (PgFreeslot *)sqlite3Malloc(in_stack_ffffffe4);\n    if (pPVar2 != (PgFreeslot *)0x0) {\n      iVar3 = (*sqlite3Config.m.xSize)(pPVar2);\n      if (pcache1_g.mutex != (sqlite3_mutex *)0x0) {\n        (*sqlite3Config.mutex.xMutexEnter)(pcache1_g.mutex);\n      }\n      if (sqlite3Stat.mxValue[7] < (uint)nByte) {\n        sqlite3Stat.mxValue[7] = nByte;\n      }\n      sqlite3Stat.nowValue[2] = sqlite3Stat.nowValue[2] + iVar3;\n      if (sqlite3Stat.mxValue[2] < sqlite3Stat.nowValue[2]) {\n        sqlite3Stat.mxValue[2] = sqlite3Stat.nowValue[2];\n      }\n      if (pcache1_g.mutex != (sqlite3_mutex *)0x0) {\n        (*sqlite3Config.mutex.xMutexLeave)(pcache1_g.mutex);\n        return pPVar2;\n      }\n    }\n  }\n  else {\n    if (pcache1_g.mutex == (sqlite3_mutex *)0x0) {\n      psVar1 = (sqlite3_mutex *)0x0;\n      pPVar2 = pcache1_g.pFree;\n      if (pcache1_g.pFree == (PgFreeslot *)0x0) goto LAB_00042511;\n    }\n    else {\n      (*sqlite3Config.mutex.xMutexEnter)(pcache1_g.mutex);\n      psVar1 = pcache1_g.mutex;\n      pPVar2 = pcache1_g.pFree;\n      if (pcache1_g.pFree == (PgFreeslot *)0x0) {\n        if (pcache1_g.mutex != (sqlite3_mutex *)0x0) {\n          (*sqlite3Config.mutex.xMutexLeave)(pcache1_g.mutex);\n        }\n        goto LAB_00042511;\n      }\n    }\n    pcache1_g.pFree = pPVar2->pNext;\n    pcache1_g.nFreeSlot = pcache1_g.nFreeSlot + -1;\n    pcache1_g.bUnderPressure = (int)(pcache1_g.nFreeSlot < pcache1_g.nReserve);\n    if (sqlite3Stat.mxValue[7] < (uint)nByte) {\n      sqlite3Stat.mxValue[7] = nByte;\n    }\n    sqlite3Stat.nowValue[1] = sqlite3Stat.nowValue[1] + 1;\n    if (sqlite3Stat.mxValue[1] < sqlite3Stat.nowValue[1]) {\n      sqlite3Stat.mxValue[1] = sqlite3Stat.nowValue[1];\n    }\n    if (psVar1 != (sqlite3_mutex *)0x0) {\n      (*sqlite3Config.mutex.xMutexLeave)(psVar1);\n    }\n  }" if (parenthesized_expression "(pcache1_g.szSlot < nByte)" ( (binary_expression "pcache1_g.szSlot < nByte" (field_expression "pcache1_g.szSlot" identifier . field_identifier) < identifier) )) (compound_statement "{\nLAB_00042511:\n    pPVar2 = (PgFreeslot *)sqlite3Malloc(in_stack_ffffffe4);\n    if (pPVar2 != (PgFreeslot *)0x0) {\n      iVar3 = (*sqlite3Config.m.xSize)(pPVar2);\n      if (pcache1_g.mutex != (sqlite3_mutex *)0x0) {\n        (*sqlite3Config.mutex.xMutexEnter)(pcache1_g.mutex);\n      }\n      if (sqlite3Stat.mxValue[7] < (uint)nByte) {\n        sqlite3Stat.mxValue[7] = nByte;\n      }\n      sqlite3Stat.nowValue[2] = sqlite3Stat.nowValue[2] + iVar3;\n      if (sqlite3Stat.mxValue[2] < sqlite3Stat.nowValue[2]) {\n        sqlite3Stat.mxValue[2] = sqlite3Stat.nowValue[2];\n      }\n      if (pcache1_g.mutex != (sqlite3_mutex *)0x0) {\n        (*sqlite3Config.mutex.xMutexLeave)(pcache1_g.mutex);\n        return pPVar2;\n      }\n    }\n  }" { (labeled_statement "LAB_00042511:\n    pPVar2 = (PgFreeslot *)sqlite3Malloc(in_stack_ffffffe4);" statement_identifier : (expression_statement "pPVar2 = (PgFreeslot *)sqlite3Malloc(in_stack_ffffffe4);" (assignment_expression "pPVar2 = (PgFreeslot *)sqlite3Malloc(in_stack_ffffffe4)" identifier = (cast_expression "(PgFreeslot *)sqlite3Malloc(in_stack_ffffffe4)" ( (type_descriptor "PgFreeslot *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "sqlite3Malloc(in_stack_ffffffe4)" identifier (argument_list "(in_stack_ffffffe4)" ( identifier ))))) ;)) (if_statement "if (pPVar2 != (PgFreeslot *)0x0) {\n      iVar3 = (*sqlite3Config.m.xSize)(pPVar2);\n      if (pcache1_g.mutex != (sqlite3_mutex *)0x0) {\n        (*sqlite3Config.mutex.xMutexEnter)(pcache1_g.mutex);\n      }\n      if (sqlite3Stat.mxValue[7] < (uint)nByte) {\n        sqlite3Stat.mxValue[7] = nByte;\n      }\n      sqlite3Stat.nowValue[2] = sqlite3Stat.nowValue[2] + iVar3;\n      if (sqlite3Stat.mxValue[2] < sqlite3Stat.nowValue[2]) {\n        sqlite3Stat.mxValue[2] = sqlite3Stat.nowValue[2];\n      }\n      if (pcache1_g.mutex != (sqlite3_mutex *)0x0) {\n        (*sqlite3Config.mutex.xMutexLeave)(pcache1_g.mutex);\n        return pPVar2;\n      }\n    }" if (parenthesized_expression "(pPVar2 != (PgFreeslot *)0x0)" ( (binary_expression "pPVar2 != (PgFreeslot *)0x0" identifier != (cast_expression "(PgFreeslot *)0x0" ( (type_descriptor "PgFreeslot *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      iVar3 = (*sqlite3Config.m.xSize)(pPVar2);\n      if (pcache1_g.mutex != (sqlite3_mutex *)0x0) {\n        (*sqlite3Config.mutex.xMutexEnter)(pcache1_g.mutex);\n      }\n      if (sqlite3Stat.mxValue[7] < (uint)nByte) {\n        sqlite3Stat.mxValue[7] = nByte;\n      }\n      sqlite3Stat.nowValue[2] = sqlite3Stat.nowValue[2] + iVar3;\n      if (sqlite3Stat.mxValue[2] < sqlite3Stat.nowValue[2]) {\n        sqlite3Stat.mxValue[2] = sqlite3Stat.nowValue[2];\n      }\n      if (pcache1_g.mutex != (sqlite3_mutex *)0x0) {\n        (*sqlite3Config.mutex.xMutexLeave)(pcache1_g.mutex);\n        return pPVar2;\n      }\n    }" { (expression_statement "iVar3 = (*sqlite3Config.m.xSize)(pPVar2);" (assignment_expression "iVar3 = (*sqlite3Config.m.xSize)(pPVar2)" identifier = (call_expression "(*sqlite3Config.m.xSize)(pPVar2)" (parenthesized_expression "(*sqlite3Config.m.xSize)" ( (pointer_expression "*sqlite3Config.m.xSize" * (field_expression "sqlite3Config.m.xSize" (field_expression "sqlite3Config.m" identifier . field_identifier) . field_identifier)) )) (argument_list "(pPVar2)" ( identifier )))) ;) (if_statement "if (pcache1_g.mutex != (sqlite3_mutex *)0x0) {\n        (*sqlite3Config.mutex.xMutexEnter)(pcache1_g.mutex);\n      }" if (parenthesized_expression "(pcache1_g.mutex != (sqlite3_mutex *)0x0)" ( (binary_expression "pcache1_g.mutex != (sqlite3_mutex *)0x0" (field_expression "pcache1_g.mutex" identifier . field_identifier) != (cast_expression "(sqlite3_mutex *)0x0" ( (type_descriptor "sqlite3_mutex *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        (*sqlite3Config.mutex.xMutexEnter)(pcache1_g.mutex);\n      }" { (expression_statement "(*sqlite3Config.mutex.xMutexEnter)(pcache1_g.mutex);" (call_expression "(*sqlite3Config.mutex.xMutexEnter)(pcache1_g.mutex)" (parenthesized_expression "(*sqlite3Config.mutex.xMutexEnter)" ( (pointer_expression "*sqlite3Config.mutex.xMutexEnter" * (field_expression "sqlite3Config.mutex.xMutexEnter" (field_expression "sqlite3Config.mutex" identifier . field_identifier) . field_identifier)) )) (argument_list "(pcache1_g.mutex)" ( (field_expression "pcache1_g.mutex" identifier . field_identifier) ))) ;) })) (if_statement "if (sqlite3Stat.mxValue[7] < (uint)nByte) {\n        sqlite3Stat.mxValue[7] = nByte;\n      }" if (parenthesized_expression "(sqlite3Stat.mxValue[7] < (uint)nByte)" ( (binary_expression "sqlite3Stat.mxValue[7] < (uint)nByte" (subscript_expression "sqlite3Stat.mxValue[7]" (field_expression "sqlite3Stat.mxValue" identifier . field_identifier) [ number_literal ]) < (cast_expression "(uint)nByte" ( (type_descriptor "uint" type_identifier) ) identifier)) )) (compound_statement "{\n        sqlite3Stat.mxValue[7] = nByte;\n      }" { (expression_statement "sqlite3Stat.mxValue[7] = nByte;" (assignment_expression "sqlite3Stat.mxValue[7] = nByte" (subscript_expression "sqlite3Stat.mxValue[7]" (field_expression "sqlite3Stat.mxValue" identifier . field_identifier) [ number_literal ]) = identifier) ;) })) (expression_statement "sqlite3Stat.nowValue[2] = sqlite3Stat.nowValue[2] + iVar3;" (assignment_expression "sqlite3Stat.nowValue[2] = sqlite3Stat.nowValue[2] + iVar3" (subscript_expression "sqlite3Stat.nowValue[2]" (field_expression "sqlite3Stat.nowValue" identifier . field_identifier) [ number_literal ]) = (binary_expression "sqlite3Stat.nowValue[2] + iVar3" (subscript_expression "sqlite3Stat.nowValue[2]" (field_expression "sqlite3Stat.nowValue" identifier . field_identifier) [ number_literal ]) + identifier)) ;) (if_statement "if (sqlite3Stat.mxValue[2] < sqlite3Stat.nowValue[2]) {\n        sqlite3Stat.mxValue[2] = sqlite3Stat.nowValue[2];\n      }" if (parenthesized_expression "(sqlite3Stat.mxValue[2] < sqlite3Stat.nowValue[2])" ( (binary_expression "sqlite3Stat.mxValue[2] < sqlite3Stat.nowValue[2]" (subscript_expression "sqlite3Stat.mxValue[2]" (field_expression "sqlite3Stat.mxValue" identifier . field_identifier) [ number_literal ]) < (subscript_expression "sqlite3Stat.nowValue[2]" (field_expression "sqlite3Stat.nowValue" identifier . field_identifier) [ number_literal ])) )) (compound_statement "{\n        sqlite3Stat.mxValue[2] = sqlite3Stat.nowValue[2];\n      }" { (expression_statement "sqlite3Stat.mxValue[2] = sqlite3Stat.nowValue[2];" (assignment_expression "sqlite3Stat.mxValue[2] = sqlite3Stat.nowValue[2]" (subscript_expression "sqlite3Stat.mxValue[2]" (field_expression "sqlite3Stat.mxValue" identifier . field_identifier) [ number_literal ]) = (subscript_expression "sqlite3Stat.nowValue[2]" (field_expression "sqlite3Stat.nowValue" identifier . field_identifier) [ number_literal ])) ;) })) (if_statement "if (pcache1_g.mutex != (sqlite3_mutex *)0x0) {\n        (*sqlite3Config.mutex.xMutexLeave)(pcache1_g.mutex);\n        return pPVar2;\n      }" if (parenthesized_expression "(pcache1_g.mutex != (sqlite3_mutex *)0x0)" ( (binary_expression "pcache1_g.mutex != (sqlite3_mutex *)0x0" (field_expression "pcache1_g.mutex" identifier . field_identifier) != (cast_expression "(sqlite3_mutex *)0x0" ( (type_descriptor "sqlite3_mutex *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        (*sqlite3Config.mutex.xMutexLeave)(pcache1_g.mutex);\n        return pPVar2;\n      }" { (expression_statement "(*sqlite3Config.mutex.xMutexLeave)(pcache1_g.mutex);" (call_expression "(*sqlite3Config.mutex.xMutexLeave)(pcache1_g.mutex)" (parenthesized_expression "(*sqlite3Config.mutex.xMutexLeave)" ( (pointer_expression "*sqlite3Config.mutex.xMutexLeave" * (field_expression "sqlite3Config.mutex.xMutexLeave" (field_expression "sqlite3Config.mutex" identifier . field_identifier) . field_identifier)) )) (argument_list "(pcache1_g.mutex)" ( (field_expression "pcache1_g.mutex" identifier . field_identifier) ))) ;) (return_statement "return pPVar2;" return identifier ;) })) })) }) (else_clause "else {\n    if (pcache1_g.mutex == (sqlite3_mutex *)0x0) {\n      psVar1 = (sqlite3_mutex *)0x0;\n      pPVar2 = pcache1_g.pFree;\n      if (pcache1_g.pFree == (PgFreeslot *)0x0) goto LAB_00042511;\n    }\n    else {\n      (*sqlite3Config.mutex.xMutexEnter)(pcache1_g.mutex);\n      psVar1 = pcache1_g.mutex;\n      pPVar2 = pcache1_g.pFree;\n      if (pcache1_g.pFree == (PgFreeslot *)0x0) {\n        if (pcache1_g.mutex != (sqlite3_mutex *)0x0) {\n          (*sqlite3Config.mutex.xMutexLeave)(pcache1_g.mutex);\n        }\n        goto LAB_00042511;\n      }\n    }\n    pcache1_g.pFree = pPVar2->pNext;\n    pcache1_g.nFreeSlot = pcache1_g.nFreeSlot + -1;\n    pcache1_g.bUnderPressure = (int)(pcache1_g.nFreeSlot < pcache1_g.nReserve);\n    if (sqlite3Stat.mxValue[7] < (uint)nByte) {\n      sqlite3Stat.mxValue[7] = nByte;\n    }\n    sqlite3Stat.nowValue[1] = sqlite3Stat.nowValue[1] + 1;\n    if (sqlite3Stat.mxValue[1] < sqlite3Stat.nowValue[1]) {\n      sqlite3Stat.mxValue[1] = sqlite3Stat.nowValue[1];\n    }\n    if (psVar1 != (sqlite3_mutex *)0x0) {\n      (*sqlite3Config.mutex.xMutexLeave)(psVar1);\n    }\n  }" else (compound_statement "{\n    if (pcache1_g.mutex == (sqlite3_mutex *)0x0) {\n      psVar1 = (sqlite3_mutex *)0x0;\n      pPVar2 = pcache1_g.pFree;\n      if (pcache1_g.pFree == (PgFreeslot *)0x0) goto LAB_00042511;\n    }\n    else {\n      (*sqlite3Config.mutex.xMutexEnter)(pcache1_g.mutex);\n      psVar1 = pcache1_g.mutex;\n      pPVar2 = pcache1_g.pFree;\n      if (pcache1_g.pFree == (PgFreeslot *)0x0) {\n        if (pcache1_g.mutex != (sqlite3_mutex *)0x0) {\n          (*sqlite3Config.mutex.xMutexLeave)(pcache1_g.mutex);\n        }\n        goto LAB_00042511;\n      }\n    }\n    pcache1_g.pFree = pPVar2->pNext;\n    pcache1_g.nFreeSlot = pcache1_g.nFreeSlot + -1;\n    pcache1_g.bUnderPressure = (int)(pcache1_g.nFreeSlot < pcache1_g.nReserve);\n    if (sqlite3Stat.mxValue[7] < (uint)nByte) {\n      sqlite3Stat.mxValue[7] = nByte;\n    }\n    sqlite3Stat.nowValue[1] = sqlite3Stat.nowValue[1] + 1;\n    if (sqlite3Stat.mxValue[1] < sqlite3Stat.nowValue[1]) {\n      sqlite3Stat.mxValue[1] = sqlite3Stat.nowValue[1];\n    }\n    if (psVar1 != (sqlite3_mutex *)0x0) {\n      (*sqlite3Config.mutex.xMutexLeave)(psVar1);\n    }\n  }" { (if_statement "if (pcache1_g.mutex == (sqlite3_mutex *)0x0) {\n      psVar1 = (sqlite3_mutex *)0x0;\n      pPVar2 = pcache1_g.pFree;\n      if (pcache1_g.pFree == (PgFreeslot *)0x0) goto LAB_00042511;\n    }\n    else {\n      (*sqlite3Config.mutex.xMutexEnter)(pcache1_g.mutex);\n      psVar1 = pcache1_g.mutex;\n      pPVar2 = pcache1_g.pFree;\n      if (pcache1_g.pFree == (PgFreeslot *)0x0) {\n        if (pcache1_g.mutex != (sqlite3_mutex *)0x0) {\n          (*sqlite3Config.mutex.xMutexLeave)(pcache1_g.mutex);\n        }\n        goto LAB_00042511;\n      }\n    }" if (parenthesized_expression "(pcache1_g.mutex == (sqlite3_mutex *)0x0)" ( (binary_expression "pcache1_g.mutex == (sqlite3_mutex *)0x0" (field_expression "pcache1_g.mutex" identifier . field_identifier) == (cast_expression "(sqlite3_mutex *)0x0" ( (type_descriptor "sqlite3_mutex *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      psVar1 = (sqlite3_mutex *)0x0;\n      pPVar2 = pcache1_g.pFree;\n      if (pcache1_g.pFree == (PgFreeslot *)0x0) goto LAB_00042511;\n    }" { (expression_statement "psVar1 = (sqlite3_mutex *)0x0;" (assignment_expression "psVar1 = (sqlite3_mutex *)0x0" identifier = (cast_expression "(sqlite3_mutex *)0x0" ( (type_descriptor "sqlite3_mutex *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "pPVar2 = pcache1_g.pFree;" (assignment_expression "pPVar2 = pcache1_g.pFree" identifier = (field_expression "pcache1_g.pFree" identifier . field_identifier)) ;) (if_statement "if (pcache1_g.pFree == (PgFreeslot *)0x0) goto LAB_00042511;" if (parenthesized_expression "(pcache1_g.pFree == (PgFreeslot *)0x0)" ( (binary_expression "pcache1_g.pFree == (PgFreeslot *)0x0" (field_expression "pcache1_g.pFree" identifier . field_identifier) == (cast_expression "(PgFreeslot *)0x0" ( (type_descriptor "PgFreeslot *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_00042511;" goto statement_identifier ;)) }) (else_clause "else {\n      (*sqlite3Config.mutex.xMutexEnter)(pcache1_g.mutex);\n      psVar1 = pcache1_g.mutex;\n      pPVar2 = pcache1_g.pFree;\n      if (pcache1_g.pFree == (PgFreeslot *)0x0) {\n        if (pcache1_g.mutex != (sqlite3_mutex *)0x0) {\n          (*sqlite3Config.mutex.xMutexLeave)(pcache1_g.mutex);\n        }\n        goto LAB_00042511;\n      }\n    }" else (compound_statement "{\n      (*sqlite3Config.mutex.xMutexEnter)(pcache1_g.mutex);\n      psVar1 = pcache1_g.mutex;\n      pPVar2 = pcache1_g.pFree;\n      if (pcache1_g.pFree == (PgFreeslot *)0x0) {\n        if (pcache1_g.mutex != (sqlite3_mutex *)0x0) {\n          (*sqlite3Config.mutex.xMutexLeave)(pcache1_g.mutex);\n        }\n        goto LAB_00042511;\n      }\n    }" { (expression_statement "(*sqlite3Config.mutex.xMutexEnter)(pcache1_g.mutex);" (call_expression "(*sqlite3Config.mutex.xMutexEnter)(pcache1_g.mutex)" (parenthesized_expression "(*sqlite3Config.mutex.xMutexEnter)" ( (pointer_expression "*sqlite3Config.mutex.xMutexEnter" * (field_expression "sqlite3Config.mutex.xMutexEnter" (field_expression "sqlite3Config.mutex" identifier . field_identifier) . field_identifier)) )) (argument_list "(pcache1_g.mutex)" ( (field_expression "pcache1_g.mutex" identifier . field_identifier) ))) ;) (expression_statement "psVar1 = pcache1_g.mutex;" (assignment_expression "psVar1 = pcache1_g.mutex" identifier = (field_expression "pcache1_g.mutex" identifier . field_identifier)) ;) (expression_statement "pPVar2 = pcache1_g.pFree;" (assignment_expression "pPVar2 = pcache1_g.pFree" identifier = (field_expression "pcache1_g.pFree" identifier . field_identifier)) ;) (if_statement "if (pcache1_g.pFree == (PgFreeslot *)0x0) {\n        if (pcache1_g.mutex != (sqlite3_mutex *)0x0) {\n          (*sqlite3Config.mutex.xMutexLeave)(pcache1_g.mutex);\n        }\n        goto LAB_00042511;\n      }" if (parenthesized_expression "(pcache1_g.pFree == (PgFreeslot *)0x0)" ( (binary_expression "pcache1_g.pFree == (PgFreeslot *)0x0" (field_expression "pcache1_g.pFree" identifier . field_identifier) == (cast_expression "(PgFreeslot *)0x0" ( (type_descriptor "PgFreeslot *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        if (pcache1_g.mutex != (sqlite3_mutex *)0x0) {\n          (*sqlite3Config.mutex.xMutexLeave)(pcache1_g.mutex);\n        }\n        goto LAB_00042511;\n      }" { (if_statement "if (pcache1_g.mutex != (sqlite3_mutex *)0x0) {\n          (*sqlite3Config.mutex.xMutexLeave)(pcache1_g.mutex);\n        }" if (parenthesized_expression "(pcache1_g.mutex != (sqlite3_mutex *)0x0)" ( (binary_expression "pcache1_g.mutex != (sqlite3_mutex *)0x0" (field_expression "pcache1_g.mutex" identifier . field_identifier) != (cast_expression "(sqlite3_mutex *)0x0" ( (type_descriptor "sqlite3_mutex *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          (*sqlite3Config.mutex.xMutexLeave)(pcache1_g.mutex);\n        }" { (expression_statement "(*sqlite3Config.mutex.xMutexLeave)(pcache1_g.mutex);" (call_expression "(*sqlite3Config.mutex.xMutexLeave)(pcache1_g.mutex)" (parenthesized_expression "(*sqlite3Config.mutex.xMutexLeave)" ( (pointer_expression "*sqlite3Config.mutex.xMutexLeave" * (field_expression "sqlite3Config.mutex.xMutexLeave" (field_expression "sqlite3Config.mutex" identifier . field_identifier) . field_identifier)) )) (argument_list "(pcache1_g.mutex)" ( (field_expression "pcache1_g.mutex" identifier . field_identifier) ))) ;) })) (goto_statement "goto LAB_00042511;" goto statement_identifier ;) })) }))) (expression_statement "pcache1_g.pFree = pPVar2->pNext;" (assignment_expression "pcache1_g.pFree = pPVar2->pNext" (field_expression "pcache1_g.pFree" identifier . field_identifier) = (field_expression "pPVar2->pNext" identifier -> field_identifier)) ;) (expression_statement "pcache1_g.nFreeSlot = pcache1_g.nFreeSlot + -1;" (assignment_expression "pcache1_g.nFreeSlot = pcache1_g.nFreeSlot + -1" (field_expression "pcache1_g.nFreeSlot" identifier . field_identifier) = (binary_expression "pcache1_g.nFreeSlot + -1" (field_expression "pcache1_g.nFreeSlot" identifier . field_identifier) + number_literal)) ;) (expression_statement "pcache1_g.bUnderPressure = (int)(pcache1_g.nFreeSlot < pcache1_g.nReserve);" (assignment_expression "pcache1_g.bUnderPressure = (int)(pcache1_g.nFreeSlot < pcache1_g.nReserve)" (field_expression "pcache1_g.bUnderPressure" identifier . field_identifier) = (cast_expression "(int)(pcache1_g.nFreeSlot < pcache1_g.nReserve)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(pcache1_g.nFreeSlot < pcache1_g.nReserve)" ( (binary_expression "pcache1_g.nFreeSlot < pcache1_g.nReserve" (field_expression "pcache1_g.nFreeSlot" identifier . field_identifier) < (field_expression "pcache1_g.nReserve" identifier . field_identifier)) )))) ;) (if_statement "if (sqlite3Stat.mxValue[7] < (uint)nByte) {\n      sqlite3Stat.mxValue[7] = nByte;\n    }" if (parenthesized_expression "(sqlite3Stat.mxValue[7] < (uint)nByte)" ( (binary_expression "sqlite3Stat.mxValue[7] < (uint)nByte" (subscript_expression "sqlite3Stat.mxValue[7]" (field_expression "sqlite3Stat.mxValue" identifier . field_identifier) [ number_literal ]) < (cast_expression "(uint)nByte" ( (type_descriptor "uint" type_identifier) ) identifier)) )) (compound_statement "{\n      sqlite3Stat.mxValue[7] = nByte;\n    }" { (expression_statement "sqlite3Stat.mxValue[7] = nByte;" (assignment_expression "sqlite3Stat.mxValue[7] = nByte" (subscript_expression "sqlite3Stat.mxValue[7]" (field_expression "sqlite3Stat.mxValue" identifier . field_identifier) [ number_literal ]) = identifier) ;) })) (expression_statement "sqlite3Stat.nowValue[1] = sqlite3Stat.nowValue[1] + 1;" (assignment_expression "sqlite3Stat.nowValue[1] = sqlite3Stat.nowValue[1] + 1" (subscript_expression "sqlite3Stat.nowValue[1]" (field_expression "sqlite3Stat.nowValue" identifier . field_identifier) [ number_literal ]) = (binary_expression "sqlite3Stat.nowValue[1] + 1" (subscript_expression "sqlite3Stat.nowValue[1]" (field_expression "sqlite3Stat.nowValue" identifier . field_identifier) [ number_literal ]) + number_literal)) ;) (if_statement "if (sqlite3Stat.mxValue[1] < sqlite3Stat.nowValue[1]) {\n      sqlite3Stat.mxValue[1] = sqlite3Stat.nowValue[1];\n    }" if (parenthesized_expression "(sqlite3Stat.mxValue[1] < sqlite3Stat.nowValue[1])" ( (binary_expression "sqlite3Stat.mxValue[1] < sqlite3Stat.nowValue[1]" (subscript_expression "sqlite3Stat.mxValue[1]" (field_expression "sqlite3Stat.mxValue" identifier . field_identifier) [ number_literal ]) < (subscript_expression "sqlite3Stat.nowValue[1]" (field_expression "sqlite3Stat.nowValue" identifier . field_identifier) [ number_literal ])) )) (compound_statement "{\n      sqlite3Stat.mxValue[1] = sqlite3Stat.nowValue[1];\n    }" { (expression_statement "sqlite3Stat.mxValue[1] = sqlite3Stat.nowValue[1];" (assignment_expression "sqlite3Stat.mxValue[1] = sqlite3Stat.nowValue[1]" (subscript_expression "sqlite3Stat.mxValue[1]" (field_expression "sqlite3Stat.mxValue" identifier . field_identifier) [ number_literal ]) = (subscript_expression "sqlite3Stat.nowValue[1]" (field_expression "sqlite3Stat.nowValue" identifier . field_identifier) [ number_literal ])) ;) })) (if_statement "if (psVar1 != (sqlite3_mutex *)0x0) {\n      (*sqlite3Config.mutex.xMutexLeave)(psVar1);\n    }" if (parenthesized_expression "(psVar1 != (sqlite3_mutex *)0x0)" ( (binary_expression "psVar1 != (sqlite3_mutex *)0x0" identifier != (cast_expression "(sqlite3_mutex *)0x0" ( (type_descriptor "sqlite3_mutex *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      (*sqlite3Config.mutex.xMutexLeave)(psVar1);\n    }" { (expression_statement "(*sqlite3Config.mutex.xMutexLeave)(psVar1);" (call_expression "(*sqlite3Config.mutex.xMutexLeave)(psVar1)" (parenthesized_expression "(*sqlite3Config.mutex.xMutexLeave)" ( (pointer_expression "*sqlite3Config.mutex.xMutexLeave" * (field_expression "sqlite3Config.mutex.xMutexLeave" (field_expression "sqlite3Config.mutex" identifier . field_identifier) . field_identifier)) )) (argument_list "(psVar1)" ( identifier ))) ;) })) }))) (return_statement "return pPVar2;" return identifier ;) })))
(translation_unit "undefined4 * __regparm3 FUN_00042440(uint param_1)\n\n{\n  undefined4 *puVar1;\n  int iVar2;\n  \n  if (DAT_0017db60 < (int)param_1) {\nLAB_00042511:\n    puVar1 = (undefined4 *)FUN_000421f0();\n    if (puVar1 != (undefined4 *)0x0) {\n      iVar2 = (*DAT_0017c418)(puVar1);\n      if (DAT_0017db74 != 0) {\n        (*DAT_0017c43c)(DAT_0017db74);\n      }\n      if (DAT_0017de24 < param_1) {\n        DAT_0017de24 = param_1;\n      }\n      DAT_0017dde8 = DAT_0017dde8 + iVar2;\n      if (DAT_0017de10 < DAT_0017dde8) {\n        DAT_0017de10 = DAT_0017dde8;\n      }\n      if (DAT_0017db74 != 0) {\n        (*DAT_0017c444)(DAT_0017db74);\n        return puVar1;\n      }\n    }\n  }\n  else {\n    if (DAT_0017db74 == 0) {\n      iVar2 = 0;\n      puVar1 = DAT_0017db78;\n      if (DAT_0017db78 == (undefined4 *)0x0) goto LAB_00042511;\n    }\n    else {\n      (*DAT_0017c43c)(DAT_0017db74);\n      iVar2 = DAT_0017db74;\n      puVar1 = DAT_0017db78;\n      if (DAT_0017db78 == (undefined4 *)0x0) {\n        if (DAT_0017db74 != 0) {\n          (*DAT_0017c444)(DAT_0017db74);\n        }\n        goto LAB_00042511;\n      }\n    }\n    DAT_0017db78 = (undefined4 *)*puVar1;\n    DAT_0017db7c = DAT_0017db7c + -1;\n    DAT_0017db80 = (uint)(DAT_0017db7c < DAT_0017db68);\n    if (DAT_0017de24 < param_1) {\n      DAT_0017de24 = param_1;\n    }\n    DAT_0017dde4 = DAT_0017dde4 + 1;\n    if (DAT_0017de0c < DAT_0017dde4) {\n      DAT_0017de0c = DAT_0017dde4;\n    }\n    if (iVar2 != 0) {\n      (*DAT_0017c444)(iVar2);\n    }\n  }\n  return puVar1;\n}\n\n" (ERROR "undefined4 * __regparm3 FUN_00042440(uint param_1)" (binary_expression "undefined4 * __regparm3 FUN_00042440(uint param_1)" identifier * (ERROR "__regparm3" identifier) (call_expression "FUN_00042440(uint param_1)" identifier (argument_list "(uint param_1)" ( (ERROR "uint" identifier) identifier ))))) (compound_statement "{\n  undefined4 *puVar1;\n  int iVar2;\n  \n  if (DAT_0017db60 < (int)param_1) {\nLAB_00042511:\n    puVar1 = (undefined4 *)FUN_000421f0();\n    if (puVar1 != (undefined4 *)0x0) {\n      iVar2 = (*DAT_0017c418)(puVar1);\n      if (DAT_0017db74 != 0) {\n        (*DAT_0017c43c)(DAT_0017db74);\n      }\n      if (DAT_0017de24 < param_1) {\n        DAT_0017de24 = param_1;\n      }\n      DAT_0017dde8 = DAT_0017dde8 + iVar2;\n      if (DAT_0017de10 < DAT_0017dde8) {\n        DAT_0017de10 = DAT_0017dde8;\n      }\n      if (DAT_0017db74 != 0) {\n        (*DAT_0017c444)(DAT_0017db74);\n        return puVar1;\n      }\n    }\n  }\n  else {\n    if (DAT_0017db74 == 0) {\n      iVar2 = 0;\n      puVar1 = DAT_0017db78;\n      if (DAT_0017db78 == (undefined4 *)0x0) goto LAB_00042511;\n    }\n    else {\n      (*DAT_0017c43c)(DAT_0017db74);\n      iVar2 = DAT_0017db74;\n      puVar1 = DAT_0017db78;\n      if (DAT_0017db78 == (undefined4 *)0x0) {\n        if (DAT_0017db74 != 0) {\n          (*DAT_0017c444)(DAT_0017db74);\n        }\n        goto LAB_00042511;\n      }\n    }\n    DAT_0017db78 = (undefined4 *)*puVar1;\n    DAT_0017db7c = DAT_0017db7c + -1;\n    DAT_0017db80 = (uint)(DAT_0017db7c < DAT_0017db68);\n    if (DAT_0017de24 < param_1) {\n      DAT_0017de24 = param_1;\n    }\n    DAT_0017dde4 = DAT_0017dde4 + 1;\n    if (DAT_0017de0c < DAT_0017dde4) {\n      DAT_0017de0c = DAT_0017dde4;\n    }\n    if (iVar2 != 0) {\n      (*DAT_0017c444)(iVar2);\n    }\n  }\n  return puVar1;\n}" { (declaration "undefined4 *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "int iVar2;" primitive_type identifier ;) (if_statement "if (DAT_0017db60 < (int)param_1) {\nLAB_00042511:\n    puVar1 = (undefined4 *)FUN_000421f0();\n    if (puVar1 != (undefined4 *)0x0) {\n      iVar2 = (*DAT_0017c418)(puVar1);\n      if (DAT_0017db74 != 0) {\n        (*DAT_0017c43c)(DAT_0017db74);\n      }\n      if (DAT_0017de24 < param_1) {\n        DAT_0017de24 = param_1;\n      }\n      DAT_0017dde8 = DAT_0017dde8 + iVar2;\n      if (DAT_0017de10 < DAT_0017dde8) {\n        DAT_0017de10 = DAT_0017dde8;\n      }\n      if (DAT_0017db74 != 0) {\n        (*DAT_0017c444)(DAT_0017db74);\n        return puVar1;\n      }\n    }\n  }\n  else {\n    if (DAT_0017db74 == 0) {\n      iVar2 = 0;\n      puVar1 = DAT_0017db78;\n      if (DAT_0017db78 == (undefined4 *)0x0) goto LAB_00042511;\n    }\n    else {\n      (*DAT_0017c43c)(DAT_0017db74);\n      iVar2 = DAT_0017db74;\n      puVar1 = DAT_0017db78;\n      if (DAT_0017db78 == (undefined4 *)0x0) {\n        if (DAT_0017db74 != 0) {\n          (*DAT_0017c444)(DAT_0017db74);\n        }\n        goto LAB_00042511;\n      }\n    }\n    DAT_0017db78 = (undefined4 *)*puVar1;\n    DAT_0017db7c = DAT_0017db7c + -1;\n    DAT_0017db80 = (uint)(DAT_0017db7c < DAT_0017db68);\n    if (DAT_0017de24 < param_1) {\n      DAT_0017de24 = param_1;\n    }\n    DAT_0017dde4 = DAT_0017dde4 + 1;\n    if (DAT_0017de0c < DAT_0017dde4) {\n      DAT_0017de0c = DAT_0017dde4;\n    }\n    if (iVar2 != 0) {\n      (*DAT_0017c444)(iVar2);\n    }\n  }" if (parenthesized_expression "(DAT_0017db60 < (int)param_1)" ( (binary_expression "DAT_0017db60 < (int)param_1" identifier < (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\nLAB_00042511:\n    puVar1 = (undefined4 *)FUN_000421f0();\n    if (puVar1 != (undefined4 *)0x0) {\n      iVar2 = (*DAT_0017c418)(puVar1);\n      if (DAT_0017db74 != 0) {\n        (*DAT_0017c43c)(DAT_0017db74);\n      }\n      if (DAT_0017de24 < param_1) {\n        DAT_0017de24 = param_1;\n      }\n      DAT_0017dde8 = DAT_0017dde8 + iVar2;\n      if (DAT_0017de10 < DAT_0017dde8) {\n        DAT_0017de10 = DAT_0017dde8;\n      }\n      if (DAT_0017db74 != 0) {\n        (*DAT_0017c444)(DAT_0017db74);\n        return puVar1;\n      }\n    }\n  }" { (labeled_statement "LAB_00042511:\n    puVar1 = (undefined4 *)FUN_000421f0();" statement_identifier : (expression_statement "puVar1 = (undefined4 *)FUN_000421f0();" (assignment_expression "puVar1 = (undefined4 *)FUN_000421f0()" identifier = (cast_expression "(undefined4 *)FUN_000421f0()" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_000421f0()" identifier (argument_list "()" ( ))))) ;)) (if_statement "if (puVar1 != (undefined4 *)0x0) {\n      iVar2 = (*DAT_0017c418)(puVar1);\n      if (DAT_0017db74 != 0) {\n        (*DAT_0017c43c)(DAT_0017db74);\n      }\n      if (DAT_0017de24 < param_1) {\n        DAT_0017de24 = param_1;\n      }\n      DAT_0017dde8 = DAT_0017dde8 + iVar2;\n      if (DAT_0017de10 < DAT_0017dde8) {\n        DAT_0017de10 = DAT_0017dde8;\n      }\n      if (DAT_0017db74 != 0) {\n        (*DAT_0017c444)(DAT_0017db74);\n        return puVar1;\n      }\n    }" if (parenthesized_expression "(puVar1 != (undefined4 *)0x0)" ( (binary_expression "puVar1 != (undefined4 *)0x0" identifier != (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      iVar2 = (*DAT_0017c418)(puVar1);\n      if (DAT_0017db74 != 0) {\n        (*DAT_0017c43c)(DAT_0017db74);\n      }\n      if (DAT_0017de24 < param_1) {\n        DAT_0017de24 = param_1;\n      }\n      DAT_0017dde8 = DAT_0017dde8 + iVar2;\n      if (DAT_0017de10 < DAT_0017dde8) {\n        DAT_0017de10 = DAT_0017dde8;\n      }\n      if (DAT_0017db74 != 0) {\n        (*DAT_0017c444)(DAT_0017db74);\n        return puVar1;\n      }\n    }" { (expression_statement "iVar2 = (*DAT_0017c418)(puVar1);" (assignment_expression "iVar2 = (*DAT_0017c418)(puVar1)" identifier = (call_expression "(*DAT_0017c418)(puVar1)" (parenthesized_expression "(*DAT_0017c418)" ( (pointer_expression "*DAT_0017c418" * identifier) )) (argument_list "(puVar1)" ( identifier )))) ;) (if_statement "if (DAT_0017db74 != 0) {\n        (*DAT_0017c43c)(DAT_0017db74);\n      }" if (parenthesized_expression "(DAT_0017db74 != 0)" ( (binary_expression "DAT_0017db74 != 0" identifier != number_literal) )) (compound_statement "{\n        (*DAT_0017c43c)(DAT_0017db74);\n      }" { (expression_statement "(*DAT_0017c43c)(DAT_0017db74);" (call_expression "(*DAT_0017c43c)(DAT_0017db74)" (parenthesized_expression "(*DAT_0017c43c)" ( (pointer_expression "*DAT_0017c43c" * identifier) )) (argument_list "(DAT_0017db74)" ( identifier ))) ;) })) (if_statement "if (DAT_0017de24 < param_1) {\n        DAT_0017de24 = param_1;\n      }" if (parenthesized_expression "(DAT_0017de24 < param_1)" ( (binary_expression "DAT_0017de24 < param_1" identifier < identifier) )) (compound_statement "{\n        DAT_0017de24 = param_1;\n      }" { (expression_statement "DAT_0017de24 = param_1;" (assignment_expression "DAT_0017de24 = param_1" identifier = identifier) ;) })) (expression_statement "DAT_0017dde8 = DAT_0017dde8 + iVar2;" (assignment_expression "DAT_0017dde8 = DAT_0017dde8 + iVar2" identifier = (binary_expression "DAT_0017dde8 + iVar2" identifier + identifier)) ;) (if_statement "if (DAT_0017de10 < DAT_0017dde8) {\n        DAT_0017de10 = DAT_0017dde8;\n      }" if (parenthesized_expression "(DAT_0017de10 < DAT_0017dde8)" ( (binary_expression "DAT_0017de10 < DAT_0017dde8" identifier < identifier) )) (compound_statement "{\n        DAT_0017de10 = DAT_0017dde8;\n      }" { (expression_statement "DAT_0017de10 = DAT_0017dde8;" (assignment_expression "DAT_0017de10 = DAT_0017dde8" identifier = identifier) ;) })) (if_statement "if (DAT_0017db74 != 0) {\n        (*DAT_0017c444)(DAT_0017db74);\n        return puVar1;\n      }" if (parenthesized_expression "(DAT_0017db74 != 0)" ( (binary_expression "DAT_0017db74 != 0" identifier != number_literal) )) (compound_statement "{\n        (*DAT_0017c444)(DAT_0017db74);\n        return puVar1;\n      }" { (expression_statement "(*DAT_0017c444)(DAT_0017db74);" (call_expression "(*DAT_0017c444)(DAT_0017db74)" (parenthesized_expression "(*DAT_0017c444)" ( (pointer_expression "*DAT_0017c444" * identifier) )) (argument_list "(DAT_0017db74)" ( identifier ))) ;) (return_statement "return puVar1;" return identifier ;) })) })) }) (else_clause "else {\n    if (DAT_0017db74 == 0) {\n      iVar2 = 0;\n      puVar1 = DAT_0017db78;\n      if (DAT_0017db78 == (undefined4 *)0x0) goto LAB_00042511;\n    }\n    else {\n      (*DAT_0017c43c)(DAT_0017db74);\n      iVar2 = DAT_0017db74;\n      puVar1 = DAT_0017db78;\n      if (DAT_0017db78 == (undefined4 *)0x0) {\n        if (DAT_0017db74 != 0) {\n          (*DAT_0017c444)(DAT_0017db74);\n        }\n        goto LAB_00042511;\n      }\n    }\n    DAT_0017db78 = (undefined4 *)*puVar1;\n    DAT_0017db7c = DAT_0017db7c + -1;\n    DAT_0017db80 = (uint)(DAT_0017db7c < DAT_0017db68);\n    if (DAT_0017de24 < param_1) {\n      DAT_0017de24 = param_1;\n    }\n    DAT_0017dde4 = DAT_0017dde4 + 1;\n    if (DAT_0017de0c < DAT_0017dde4) {\n      DAT_0017de0c = DAT_0017dde4;\n    }\n    if (iVar2 != 0) {\n      (*DAT_0017c444)(iVar2);\n    }\n  }" else (compound_statement "{\n    if (DAT_0017db74 == 0) {\n      iVar2 = 0;\n      puVar1 = DAT_0017db78;\n      if (DAT_0017db78 == (undefined4 *)0x0) goto LAB_00042511;\n    }\n    else {\n      (*DAT_0017c43c)(DAT_0017db74);\n      iVar2 = DAT_0017db74;\n      puVar1 = DAT_0017db78;\n      if (DAT_0017db78 == (undefined4 *)0x0) {\n        if (DAT_0017db74 != 0) {\n          (*DAT_0017c444)(DAT_0017db74);\n        }\n        goto LAB_00042511;\n      }\n    }\n    DAT_0017db78 = (undefined4 *)*puVar1;\n    DAT_0017db7c = DAT_0017db7c + -1;\n    DAT_0017db80 = (uint)(DAT_0017db7c < DAT_0017db68);\n    if (DAT_0017de24 < param_1) {\n      DAT_0017de24 = param_1;\n    }\n    DAT_0017dde4 = DAT_0017dde4 + 1;\n    if (DAT_0017de0c < DAT_0017dde4) {\n      DAT_0017de0c = DAT_0017dde4;\n    }\n    if (iVar2 != 0) {\n      (*DAT_0017c444)(iVar2);\n    }\n  }" { (if_statement "if (DAT_0017db74 == 0) {\n      iVar2 = 0;\n      puVar1 = DAT_0017db78;\n      if (DAT_0017db78 == (undefined4 *)0x0) goto LAB_00042511;\n    }\n    else {\n      (*DAT_0017c43c)(DAT_0017db74);\n      iVar2 = DAT_0017db74;\n      puVar1 = DAT_0017db78;\n      if (DAT_0017db78 == (undefined4 *)0x0) {\n        if (DAT_0017db74 != 0) {\n          (*DAT_0017c444)(DAT_0017db74);\n        }\n        goto LAB_00042511;\n      }\n    }" if (parenthesized_expression "(DAT_0017db74 == 0)" ( (binary_expression "DAT_0017db74 == 0" identifier == number_literal) )) (compound_statement "{\n      iVar2 = 0;\n      puVar1 = DAT_0017db78;\n      if (DAT_0017db78 == (undefined4 *)0x0) goto LAB_00042511;\n    }" { (expression_statement "iVar2 = 0;" (assignment_expression "iVar2 = 0" identifier = number_literal) ;) (expression_statement "puVar1 = DAT_0017db78;" (assignment_expression "puVar1 = DAT_0017db78" identifier = identifier) ;) (if_statement "if (DAT_0017db78 == (undefined4 *)0x0) goto LAB_00042511;" if (parenthesized_expression "(DAT_0017db78 == (undefined4 *)0x0)" ( (binary_expression "DAT_0017db78 == (undefined4 *)0x0" identifier == (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_00042511;" goto statement_identifier ;)) }) (else_clause "else {\n      (*DAT_0017c43c)(DAT_0017db74);\n      iVar2 = DAT_0017db74;\n      puVar1 = DAT_0017db78;\n      if (DAT_0017db78 == (undefined4 *)0x0) {\n        if (DAT_0017db74 != 0) {\n          (*DAT_0017c444)(DAT_0017db74);\n        }\n        goto LAB_00042511;\n      }\n    }" else (compound_statement "{\n      (*DAT_0017c43c)(DAT_0017db74);\n      iVar2 = DAT_0017db74;\n      puVar1 = DAT_0017db78;\n      if (DAT_0017db78 == (undefined4 *)0x0) {\n        if (DAT_0017db74 != 0) {\n          (*DAT_0017c444)(DAT_0017db74);\n        }\n        goto LAB_00042511;\n      }\n    }" { (expression_statement "(*DAT_0017c43c)(DAT_0017db74);" (call_expression "(*DAT_0017c43c)(DAT_0017db74)" (parenthesized_expression "(*DAT_0017c43c)" ( (pointer_expression "*DAT_0017c43c" * identifier) )) (argument_list "(DAT_0017db74)" ( identifier ))) ;) (expression_statement "iVar2 = DAT_0017db74;" (assignment_expression "iVar2 = DAT_0017db74" identifier = identifier) ;) (expression_statement "puVar1 = DAT_0017db78;" (assignment_expression "puVar1 = DAT_0017db78" identifier = identifier) ;) (if_statement "if (DAT_0017db78 == (undefined4 *)0x0) {\n        if (DAT_0017db74 != 0) {\n          (*DAT_0017c444)(DAT_0017db74);\n        }\n        goto LAB_00042511;\n      }" if (parenthesized_expression "(DAT_0017db78 == (undefined4 *)0x0)" ( (binary_expression "DAT_0017db78 == (undefined4 *)0x0" identifier == (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        if (DAT_0017db74 != 0) {\n          (*DAT_0017c444)(DAT_0017db74);\n        }\n        goto LAB_00042511;\n      }" { (if_statement "if (DAT_0017db74 != 0) {\n          (*DAT_0017c444)(DAT_0017db74);\n        }" if (parenthesized_expression "(DAT_0017db74 != 0)" ( (binary_expression "DAT_0017db74 != 0" identifier != number_literal) )) (compound_statement "{\n          (*DAT_0017c444)(DAT_0017db74);\n        }" { (expression_statement "(*DAT_0017c444)(DAT_0017db74);" (call_expression "(*DAT_0017c444)(DAT_0017db74)" (parenthesized_expression "(*DAT_0017c444)" ( (pointer_expression "*DAT_0017c444" * identifier) )) (argument_list "(DAT_0017db74)" ( identifier ))) ;) })) (goto_statement "goto LAB_00042511;" goto statement_identifier ;) })) }))) (expression_statement "DAT_0017db78 = (undefined4 *)*puVar1;" (assignment_expression "DAT_0017db78 = (undefined4 *)*puVar1" identifier = (cast_expression "(undefined4 *)*puVar1" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar1" * identifier))) ;) (expression_statement "DAT_0017db7c = DAT_0017db7c + -1;" (assignment_expression "DAT_0017db7c = DAT_0017db7c + -1" identifier = (binary_expression "DAT_0017db7c + -1" identifier + number_literal)) ;) (expression_statement "DAT_0017db80 = (uint)(DAT_0017db7c < DAT_0017db68);" (assignment_expression "DAT_0017db80 = (uint)(DAT_0017db7c < DAT_0017db68)" identifier = (call_expression "(uint)(DAT_0017db7c < DAT_0017db68)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(DAT_0017db7c < DAT_0017db68)" ( (binary_expression "DAT_0017db7c < DAT_0017db68" identifier < identifier) )))) ;) (if_statement "if (DAT_0017de24 < param_1) {\n      DAT_0017de24 = param_1;\n    }" if (parenthesized_expression "(DAT_0017de24 < param_1)" ( (binary_expression "DAT_0017de24 < param_1" identifier < identifier) )) (compound_statement "{\n      DAT_0017de24 = param_1;\n    }" { (expression_statement "DAT_0017de24 = param_1;" (assignment_expression "DAT_0017de24 = param_1" identifier = identifier) ;) })) (expression_statement "DAT_0017dde4 = DAT_0017dde4 + 1;" (assignment_expression "DAT_0017dde4 = DAT_0017dde4 + 1" identifier = (binary_expression "DAT_0017dde4 + 1" identifier + number_literal)) ;) (if_statement "if (DAT_0017de0c < DAT_0017dde4) {\n      DAT_0017de0c = DAT_0017dde4;\n    }" if (parenthesized_expression "(DAT_0017de0c < DAT_0017dde4)" ( (binary_expression "DAT_0017de0c < DAT_0017dde4" identifier < identifier) )) (compound_statement "{\n      DAT_0017de0c = DAT_0017dde4;\n    }" { (expression_statement "DAT_0017de0c = DAT_0017dde4;" (assignment_expression "DAT_0017de0c = DAT_0017dde4" identifier = identifier) ;) })) (if_statement "if (iVar2 != 0) {\n      (*DAT_0017c444)(iVar2);\n    }" if (parenthesized_expression "(iVar2 != 0)" ( (binary_expression "iVar2 != 0" identifier != number_literal) )) (compound_statement "{\n      (*DAT_0017c444)(iVar2);\n    }" { (expression_statement "(*DAT_0017c444)(iVar2);" (call_expression "(*DAT_0017c444)(iVar2)" (parenthesized_expression "(*DAT_0017c444)" ( (pointer_expression "*DAT_0017c444" * identifier) )) (argument_list "(iVar2)" ( identifier ))) ;) })) }))) (return_statement "return puVar1;" return identifier ;) }))
(translation_unit (ERROR (binary_expression IDENT * (ERROR IDENT) (call_expression IDENT (argument_list ( (ERROR IDENT) IDENT ))))) (compound_statement { (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( ))))) ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( IDENT ))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( IDENT ))) ;) (return_statement return IDENT ;) })) })) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (goto_statement goto statement_identifier ;)) }) (else_clause else (compound_statement { (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( IDENT ))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( IDENT ))) ;) })) (goto_statement goto statement_identifier ;) })) }))) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT < IDENT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( IDENT ))) ;) })) }))) (return_statement return IDENT ;) }))
(ERROR "undefined4 * __regparm3 FUN_00042440(uint param_1)" (binary_expression "undefined4 * __regparm3 FUN_00042440(uint param_1)" (identifier "undefined4") (* "*") (ERROR "__regparm3" (identifier "__regparm3")) (call_expression "FUN_00042440(uint param_1)" (identifier "FUN_00042440") (argument_list "(uint param_1)" (( "(") (ERROR "uint" (identifier "uint")) (identifier "param_1") () ")"))))) (compound_statement "{\n  undefined4 *puVar1;\n  int iVar2;\n  \n  if (DAT_0017db60 < (int)param_1) {\nLAB_00042511:\n    puVar1 = (undefined4 *)FUN_000421f0();\n    if (puVar1 != (undefined4 *)0x0) {\n      iVar2 = (*DAT_0017c418)(puVar1);\n      if (DAT_0017db74 != 0) {\n        (*DAT_0017c43c)(DAT_0017db74);\n      }\n      if (DAT_0017de24 < param_1) {\n        DAT_0017de24 = param_1;\n      }\n      DAT_0017dde8 = DAT_0017dde8 + iVar2;\n      if (DAT_0017de10 < DAT_0017dde8) {\n        DAT_0017de10 = DAT_0017dde8;\n      }\n      if (DAT_0017db74 != 0) {\n        (*DAT_0017c444)(DAT_0017db74);\n        return puVar1;\n      }\n    }\n  }\n  else {\n    if (DAT_0017db74 == 0) {\n      iVar2 = 0;\n      puVar1 = DAT_0017db78;\n      if (DAT_0017db78 == (undefined4 *)0x0) goto LAB_00042511;\n    }\n    else {\n      (*DAT_0017c43c)(DAT_0017db74);\n      iVar2 = DAT_0017db74;\n      puVar1 = DAT_0017db78;\n      if (DAT_0017db78 == (undefined4 *)0x0) {\n        if (DAT_0017db74 != 0) {\n          (*DAT_0017c444)(DAT_0017db74);\n        }\n        goto LAB_00042511;\n      }\n    }\n    DAT_0017db78 = (undefined4 *)*puVar1;\n    DAT_0017db7c = DAT_0017db7c + -1;\n    DAT_0017db80 = (uint)(DAT_0017db7c < DAT_0017db68);\n    if (DAT_0017de24 < param_1) {\n      DAT_0017de24 = param_1;\n    }\n    DAT_0017dde4 = DAT_0017dde4 + 1;\n    if (DAT_0017de0c < DAT_0017dde4) {\n      DAT_0017de0c = DAT_0017dde4;\n    }\n    if (iVar2 != 0) {\n      (*DAT_0017c444)(iVar2);\n    }\n  }\n  return puVar1;\n}" ({ "{") (declaration "undefined4 *puVar1;" (type_identifier "undefined4") (pointer_declarator "*puVar1" (* "*") (identifier "puVar1")) (; ";")) (declaration "int iVar2;" (primitive_type "int") (identifier "iVar2") (; ";")) (if_statement "if (DAT_0017db60 < (int)param_1) {\nLAB_00042511:\n    puVar1 = (undefined4 *)FUN_000421f0();\n    if (puVar1 != (undefined4 *)0x0) {\n      iVar2 = (*DAT_0017c418)(puVar1);\n      if (DAT_0017db74 != 0) {\n        (*DAT_0017c43c)(DAT_0017db74);\n      }\n      if (DAT_0017de24 < param_1) {\n        DAT_0017de24 = param_1;\n      }\n      DAT_0017dde8 = DAT_0017dde8 + iVar2;\n      if (DAT_0017de10 < DAT_0017dde8) {\n        DAT_0017de10 = DAT_0017dde8;\n      }\n      if (DAT_0017db74 != 0) {\n        (*DAT_0017c444)(DAT_0017db74);\n        return puVar1;\n      }\n    }\n  }\n  else {\n    if (DAT_0017db74 == 0) {\n      iVar2 = 0;\n      puVar1 = DAT_0017db78;\n      if (DAT_0017db78 == (undefined4 *)0x0) goto LAB_00042511;\n    }\n    else {\n      (*DAT_0017c43c)(DAT_0017db74);\n      iVar2 = DAT_0017db74;\n      puVar1 = DAT_0017db78;\n      if (DAT_0017db78 == (undefined4 *)0x0) {\n        if (DAT_0017db74 != 0) {\n          (*DAT_0017c444)(DAT_0017db74);\n        }\n        goto LAB_00042511;\n      }\n    }\n    DAT_0017db78 = (undefined4 *)*puVar1;\n    DAT_0017db7c = DAT_0017db7c + -1;\n    DAT_0017db80 = (uint)(DAT_0017db7c < DAT_0017db68);\n    if (DAT_0017de24 < param_1) {\n      DAT_0017de24 = param_1;\n    }\n    DAT_0017dde4 = DAT_0017dde4 + 1;\n    if (DAT_0017de0c < DAT_0017dde4) {\n      DAT_0017de0c = DAT_0017dde4;\n    }\n    if (iVar2 != 0) {\n      (*DAT_0017c444)(iVar2);\n    }\n  }" (if "if") (parenthesized_expression "(DAT_0017db60 < (int)param_1)" (( "(") (binary_expression "DAT_0017db60 < (int)param_1" (identifier "DAT_0017db60") (< "<") (cast_expression "(int)param_1" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_1"))) () ")")) (compound_statement "{\nLAB_00042511:\n    puVar1 = (undefined4 *)FUN_000421f0();\n    if (puVar1 != (undefined4 *)0x0) {\n      iVar2 = (*DAT_0017c418)(puVar1);\n      if (DAT_0017db74 != 0) {\n        (*DAT_0017c43c)(DAT_0017db74);\n      }\n      if (DAT_0017de24 < param_1) {\n        DAT_0017de24 = param_1;\n      }\n      DAT_0017dde8 = DAT_0017dde8 + iVar2;\n      if (DAT_0017de10 < DAT_0017dde8) {\n        DAT_0017de10 = DAT_0017dde8;\n      }\n      if (DAT_0017db74 != 0) {\n        (*DAT_0017c444)(DAT_0017db74);\n        return puVar1;\n      }\n    }\n  }" ({ "{") (labeled_statement "LAB_00042511:\n    puVar1 = (undefined4 *)FUN_000421f0();" (statement_identifier "LAB_00042511") (: ":") (expression_statement "puVar1 = (undefined4 *)FUN_000421f0();" (assignment_expression "puVar1 = (undefined4 *)FUN_000421f0()" (identifier "puVar1") (= "=") (cast_expression "(undefined4 *)FUN_000421f0()" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_000421f0()" (identifier "FUN_000421f0") (argument_list "()" (( "(") () ")"))))) (; ";"))) (if_statement "if (puVar1 != (undefined4 *)0x0) {\n      iVar2 = (*DAT_0017c418)(puVar1);\n      if (DAT_0017db74 != 0) {\n        (*DAT_0017c43c)(DAT_0017db74);\n      }\n      if (DAT_0017de24 < param_1) {\n        DAT_0017de24 = param_1;\n      }\n      DAT_0017dde8 = DAT_0017dde8 + iVar2;\n      if (DAT_0017de10 < DAT_0017dde8) {\n        DAT_0017de10 = DAT_0017dde8;\n      }\n      if (DAT_0017db74 != 0) {\n        (*DAT_0017c444)(DAT_0017db74);\n        return puVar1;\n      }\n    }" (if "if") (parenthesized_expression "(puVar1 != (undefined4 *)0x0)" (( "(") (binary_expression "puVar1 != (undefined4 *)0x0" (identifier "puVar1") (!= "!=") (cast_expression "(undefined4 *)0x0" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n      iVar2 = (*DAT_0017c418)(puVar1);\n      if (DAT_0017db74 != 0) {\n        (*DAT_0017c43c)(DAT_0017db74);\n      }\n      if (DAT_0017de24 < param_1) {\n        DAT_0017de24 = param_1;\n      }\n      DAT_0017dde8 = DAT_0017dde8 + iVar2;\n      if (DAT_0017de10 < DAT_0017dde8) {\n        DAT_0017de10 = DAT_0017dde8;\n      }\n      if (DAT_0017db74 != 0) {\n        (*DAT_0017c444)(DAT_0017db74);\n        return puVar1;\n      }\n    }" ({ "{") (expression_statement "iVar2 = (*DAT_0017c418)(puVar1);" (assignment_expression "iVar2 = (*DAT_0017c418)(puVar1)" (identifier "iVar2") (= "=") (call_expression "(*DAT_0017c418)(puVar1)" (parenthesized_expression "(*DAT_0017c418)" (( "(") (pointer_expression "*DAT_0017c418" (* "*") (identifier "DAT_0017c418")) () ")")) (argument_list "(puVar1)" (( "(") (identifier "puVar1") () ")")))) (; ";")) (if_statement "if (DAT_0017db74 != 0) {\n        (*DAT_0017c43c)(DAT_0017db74);\n      }" (if "if") (parenthesized_expression "(DAT_0017db74 != 0)" (( "(") (binary_expression "DAT_0017db74 != 0" (identifier "DAT_0017db74") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n        (*DAT_0017c43c)(DAT_0017db74);\n      }" ({ "{") (expression_statement "(*DAT_0017c43c)(DAT_0017db74);" (call_expression "(*DAT_0017c43c)(DAT_0017db74)" (parenthesized_expression "(*DAT_0017c43c)" (( "(") (pointer_expression "*DAT_0017c43c" (* "*") (identifier "DAT_0017c43c")) () ")")) (argument_list "(DAT_0017db74)" (( "(") (identifier "DAT_0017db74") () ")"))) (; ";")) (} "}"))) (if_statement "if (DAT_0017de24 < param_1) {\n        DAT_0017de24 = param_1;\n      }" (if "if") (parenthesized_expression "(DAT_0017de24 < param_1)" (( "(") (binary_expression "DAT_0017de24 < param_1" (identifier "DAT_0017de24") (< "<") (identifier "param_1")) () ")")) (compound_statement "{\n        DAT_0017de24 = param_1;\n      }" ({ "{") (expression_statement "DAT_0017de24 = param_1;" (assignment_expression "DAT_0017de24 = param_1" (identifier "DAT_0017de24") (= "=") (identifier "param_1")) (; ";")) (} "}"))) (expression_statement "DAT_0017dde8 = DAT_0017dde8 + iVar2;" (assignment_expression "DAT_0017dde8 = DAT_0017dde8 + iVar2" (identifier "DAT_0017dde8") (= "=") (binary_expression "DAT_0017dde8 + iVar2" (identifier "DAT_0017dde8") (+ "+") (identifier "iVar2"))) (; ";")) (if_statement "if (DAT_0017de10 < DAT_0017dde8) {\n        DAT_0017de10 = DAT_0017dde8;\n      }" (if "if") (parenthesized_expression "(DAT_0017de10 < DAT_0017dde8)" (( "(") (binary_expression "DAT_0017de10 < DAT_0017dde8" (identifier "DAT_0017de10") (< "<") (identifier "DAT_0017dde8")) () ")")) (compound_statement "{\n        DAT_0017de10 = DAT_0017dde8;\n      }" ({ "{") (expression_statement "DAT_0017de10 = DAT_0017dde8;" (assignment_expression "DAT_0017de10 = DAT_0017dde8" (identifier "DAT_0017de10") (= "=") (identifier "DAT_0017dde8")) (; ";")) (} "}"))) (if_statement "if (DAT_0017db74 != 0) {\n        (*DAT_0017c444)(DAT_0017db74);\n        return puVar1;\n      }" (if "if") (parenthesized_expression "(DAT_0017db74 != 0)" (( "(") (binary_expression "DAT_0017db74 != 0" (identifier "DAT_0017db74") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n        (*DAT_0017c444)(DAT_0017db74);\n        return puVar1;\n      }" ({ "{") (expression_statement "(*DAT_0017c444)(DAT_0017db74);" (call_expression "(*DAT_0017c444)(DAT_0017db74)" (parenthesized_expression "(*DAT_0017c444)" (( "(") (pointer_expression "*DAT_0017c444" (* "*") (identifier "DAT_0017c444")) () ")")) (argument_list "(DAT_0017db74)" (( "(") (identifier "DAT_0017db74") () ")"))) (; ";")) (return_statement "return puVar1;" (return "return") (identifier "puVar1") (; ";")) (} "}"))) (} "}"))) (} "}")) (else_clause "else {\n    if (DAT_0017db74 == 0) {\n      iVar2 = 0;\n      puVar1 = DAT_0017db78;\n      if (DAT_0017db78 == (undefined4 *)0x0) goto LAB_00042511;\n    }\n    else {\n      (*DAT_0017c43c)(DAT_0017db74);\n      iVar2 = DAT_0017db74;\n      puVar1 = DAT_0017db78;\n      if (DAT_0017db78 == (undefined4 *)0x0) {\n        if (DAT_0017db74 != 0) {\n          (*DAT_0017c444)(DAT_0017db74);\n        }\n        goto LAB_00042511;\n      }\n    }\n    DAT_0017db78 = (undefined4 *)*puVar1;\n    DAT_0017db7c = DAT_0017db7c + -1;\n    DAT_0017db80 = (uint)(DAT_0017db7c < DAT_0017db68);\n    if (DAT_0017de24 < param_1) {\n      DAT_0017de24 = param_1;\n    }\n    DAT_0017dde4 = DAT_0017dde4 + 1;\n    if (DAT_0017de0c < DAT_0017dde4) {\n      DAT_0017de0c = DAT_0017dde4;\n    }\n    if (iVar2 != 0) {\n      (*DAT_0017c444)(iVar2);\n    }\n  }" (else "else") (compound_statement "{\n    if (DAT_0017db74 == 0) {\n      iVar2 = 0;\n      puVar1 = DAT_0017db78;\n      if (DAT_0017db78 == (undefined4 *)0x0) goto LAB_00042511;\n    }\n    else {\n      (*DAT_0017c43c)(DAT_0017db74);\n      iVar2 = DAT_0017db74;\n      puVar1 = DAT_0017db78;\n      if (DAT_0017db78 == (undefined4 *)0x0) {\n        if (DAT_0017db74 != 0) {\n          (*DAT_0017c444)(DAT_0017db74);\n        }\n        goto LAB_00042511;\n      }\n    }\n    DAT_0017db78 = (undefined4 *)*puVar1;\n    DAT_0017db7c = DAT_0017db7c + -1;\n    DAT_0017db80 = (uint)(DAT_0017db7c < DAT_0017db68);\n    if (DAT_0017de24 < param_1) {\n      DAT_0017de24 = param_1;\n    }\n    DAT_0017dde4 = DAT_0017dde4 + 1;\n    if (DAT_0017de0c < DAT_0017dde4) {\n      DAT_0017de0c = DAT_0017dde4;\n    }\n    if (iVar2 != 0) {\n      (*DAT_0017c444)(iVar2);\n    }\n  }" ({ "{") (if_statement "if (DAT_0017db74 == 0) {\n      iVar2 = 0;\n      puVar1 = DAT_0017db78;\n      if (DAT_0017db78 == (undefined4 *)0x0) goto LAB_00042511;\n    }\n    else {\n      (*DAT_0017c43c)(DAT_0017db74);\n      iVar2 = DAT_0017db74;\n      puVar1 = DAT_0017db78;\n      if (DAT_0017db78 == (undefined4 *)0x0) {\n        if (DAT_0017db74 != 0) {\n          (*DAT_0017c444)(DAT_0017db74);\n        }\n        goto LAB_00042511;\n      }\n    }" (if "if") (parenthesized_expression "(DAT_0017db74 == 0)" (( "(") (binary_expression "DAT_0017db74 == 0" (identifier "DAT_0017db74") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      iVar2 = 0;\n      puVar1 = DAT_0017db78;\n      if (DAT_0017db78 == (undefined4 *)0x0) goto LAB_00042511;\n    }" ({ "{") (expression_statement "iVar2 = 0;" (assignment_expression "iVar2 = 0" (identifier "iVar2") (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar1 = DAT_0017db78;" (assignment_expression "puVar1 = DAT_0017db78" (identifier "puVar1") (= "=") (identifier "DAT_0017db78")) (; ";")) (if_statement "if (DAT_0017db78 == (undefined4 *)0x0) goto LAB_00042511;" (if "if") (parenthesized_expression "(DAT_0017db78 == (undefined4 *)0x0)" (( "(") (binary_expression "DAT_0017db78 == (undefined4 *)0x0" (identifier "DAT_0017db78") (== "==") (cast_expression "(undefined4 *)0x0" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (goto_statement "goto LAB_00042511;" (goto "goto") (statement_identifier "LAB_00042511") (; ";"))) (} "}")) (else_clause "else {\n      (*DAT_0017c43c)(DAT_0017db74);\n      iVar2 = DAT_0017db74;\n      puVar1 = DAT_0017db78;\n      if (DAT_0017db78 == (undefined4 *)0x0) {\n        if (DAT_0017db74 != 0) {\n          (*DAT_0017c444)(DAT_0017db74);\n        }\n        goto LAB_00042511;\n      }\n    }" (else "else") (compound_statement "{\n      (*DAT_0017c43c)(DAT_0017db74);\n      iVar2 = DAT_0017db74;\n      puVar1 = DAT_0017db78;\n      if (DAT_0017db78 == (undefined4 *)0x0) {\n        if (DAT_0017db74 != 0) {\n          (*DAT_0017c444)(DAT_0017db74);\n        }\n        goto LAB_00042511;\n      }\n    }" ({ "{") (expression_statement "(*DAT_0017c43c)(DAT_0017db74);" (call_expression "(*DAT_0017c43c)(DAT_0017db74)" (parenthesized_expression "(*DAT_0017c43c)" (( "(") (pointer_expression "*DAT_0017c43c" (* "*") (identifier "DAT_0017c43c")) () ")")) (argument_list "(DAT_0017db74)" (( "(") (identifier "DAT_0017db74") () ")"))) (; ";")) (expression_statement "iVar2 = DAT_0017db74;" (assignment_expression "iVar2 = DAT_0017db74" (identifier "iVar2") (= "=") (identifier "DAT_0017db74")) (; ";")) (expression_statement "puVar1 = DAT_0017db78;" (assignment_expression "puVar1 = DAT_0017db78" (identifier "puVar1") (= "=") (identifier "DAT_0017db78")) (; ";")) (if_statement "if (DAT_0017db78 == (undefined4 *)0x0) {\n        if (DAT_0017db74 != 0) {\n          (*DAT_0017c444)(DAT_0017db74);\n        }\n        goto LAB_00042511;\n      }" (if "if") (parenthesized_expression "(DAT_0017db78 == (undefined4 *)0x0)" (( "(") (binary_expression "DAT_0017db78 == (undefined4 *)0x0" (identifier "DAT_0017db78") (== "==") (cast_expression "(undefined4 *)0x0" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n        if (DAT_0017db74 != 0) {\n          (*DAT_0017c444)(DAT_0017db74);\n        }\n        goto LAB_00042511;\n      }" ({ "{") (if_statement "if (DAT_0017db74 != 0) {\n          (*DAT_0017c444)(DAT_0017db74);\n        }" (if "if") (parenthesized_expression "(DAT_0017db74 != 0)" (( "(") (binary_expression "DAT_0017db74 != 0" (identifier "DAT_0017db74") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n          (*DAT_0017c444)(DAT_0017db74);\n        }" ({ "{") (expression_statement "(*DAT_0017c444)(DAT_0017db74);" (call_expression "(*DAT_0017c444)(DAT_0017db74)" (parenthesized_expression "(*DAT_0017c444)" (( "(") (pointer_expression "*DAT_0017c444" (* "*") (identifier "DAT_0017c444")) () ")")) (argument_list "(DAT_0017db74)" (( "(") (identifier "DAT_0017db74") () ")"))) (; ";")) (} "}"))) (goto_statement "goto LAB_00042511;" (goto "goto") (statement_identifier "LAB_00042511") (; ";")) (} "}"))) (} "}")))) (expression_statement "DAT_0017db78 = (undefined4 *)*puVar1;" (assignment_expression "DAT_0017db78 = (undefined4 *)*puVar1" (identifier "DAT_0017db78") (= "=") (cast_expression "(undefined4 *)*puVar1" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*puVar1" (* "*") (identifier "puVar1")))) (; ";")) (expression_statement "DAT_0017db7c = DAT_0017db7c + -1;" (assignment_expression "DAT_0017db7c = DAT_0017db7c + -1" (identifier "DAT_0017db7c") (= "=") (binary_expression "DAT_0017db7c + -1" (identifier "DAT_0017db7c") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "DAT_0017db80 = (uint)(DAT_0017db7c < DAT_0017db68);" (assignment_expression "DAT_0017db80 = (uint)(DAT_0017db7c < DAT_0017db68)" (identifier "DAT_0017db80") (= "=") (call_expression "(uint)(DAT_0017db7c < DAT_0017db68)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(DAT_0017db7c < DAT_0017db68)" (( "(") (binary_expression "DAT_0017db7c < DAT_0017db68" (identifier "DAT_0017db7c") (< "<") (identifier "DAT_0017db68")) () ")")))) (; ";")) (if_statement "if (DAT_0017de24 < param_1) {\n      DAT_0017de24 = param_1;\n    }" (if "if") (parenthesized_expression "(DAT_0017de24 < param_1)" (( "(") (binary_expression "DAT_0017de24 < param_1" (identifier "DAT_0017de24") (< "<") (identifier "param_1")) () ")")) (compound_statement "{\n      DAT_0017de24 = param_1;\n    }" ({ "{") (expression_statement "DAT_0017de24 = param_1;" (assignment_expression "DAT_0017de24 = param_1" (identifier "DAT_0017de24") (= "=") (identifier "param_1")) (; ";")) (} "}"))) (expression_statement "DAT_0017dde4 = DAT_0017dde4 + 1;" (assignment_expression "DAT_0017dde4 = DAT_0017dde4 + 1" (identifier "DAT_0017dde4") (= "=") (binary_expression "DAT_0017dde4 + 1" (identifier "DAT_0017dde4") (+ "+") (number_literal "1"))) (; ";")) (if_statement "if (DAT_0017de0c < DAT_0017dde4) {\n      DAT_0017de0c = DAT_0017dde4;\n    }" (if "if") (parenthesized_expression "(DAT_0017de0c < DAT_0017dde4)" (( "(") (binary_expression "DAT_0017de0c < DAT_0017dde4" (identifier "DAT_0017de0c") (< "<") (identifier "DAT_0017dde4")) () ")")) (compound_statement "{\n      DAT_0017de0c = DAT_0017dde4;\n    }" ({ "{") (expression_statement "DAT_0017de0c = DAT_0017dde4;" (assignment_expression "DAT_0017de0c = DAT_0017dde4" (identifier "DAT_0017de0c") (= "=") (identifier "DAT_0017dde4")) (; ";")) (} "}"))) (if_statement "if (iVar2 != 0) {\n      (*DAT_0017c444)(iVar2);\n    }" (if "if") (parenthesized_expression "(iVar2 != 0)" (( "(") (binary_expression "iVar2 != 0" (identifier "iVar2") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      (*DAT_0017c444)(iVar2);\n    }" ({ "{") (expression_statement "(*DAT_0017c444)(iVar2);" (call_expression "(*DAT_0017c444)(iVar2)" (parenthesized_expression "(*DAT_0017c444)" (( "(") (pointer_expression "*DAT_0017c444" (* "*") (identifier "DAT_0017c444")) () ")")) (argument_list "(iVar2)" (( "(") (identifier "iVar2") () ")"))) (; ";")) (} "}"))) (} "}")))) (return_statement "return puVar1;" (return "return") (identifier "puVar1") (; ";")) (} "}"))

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

void * __regparm3 function_1(int var_1)

{
  type_1 *var_5;
  type_2 *var_3;
  int var_4;
  type_3 in_stack_ffffffe4;
  
  if (pcache1_g.szSlot < var_1) {
LAB_00042511:
    var_3 = (type_2 *)var_2(in_stack_ffffffe4);
    if (var_3 != (type_2 *)0x0) {
      var_4 = (*sqlite3Config.m.xSize)(var_3);
      if (pcache1_g.mutex != (type_1 *)0x0) {
        (*sqlite3Config.mutex.xMutexEnter)(pcache1_g.mutex);
      }
      if (sqlite3Stat.mxValue[7] < (type_4)var_1) {
        sqlite3Stat.mxValue[7] = var_1;
      }
      sqlite3Stat.nowValue[2] = sqlite3Stat.nowValue[2] + var_4;
      if (sqlite3Stat.mxValue[2] < sqlite3Stat.nowValue[2]) {
        sqlite3Stat.mxValue[2] = sqlite3Stat.nowValue[2];
      }
      if (pcache1_g.mutex != (type_1 *)0x0) {
        (*sqlite3Config.mutex.xMutexLeave)(pcache1_g.mutex);
        return var_3;
      }
    }
  }
  else {
    if (pcache1_g.mutex == (type_1 *)0x0) {
      var_5 = (type_1 *)0x0;
      var_3 = pcache1_g.pFree;
      if (pcache1_g.pFree == (type_2 *)0x0) goto LAB_00042511;
    }
    else {
      (*sqlite3Config.mutex.xMutexEnter)(pcache1_g.mutex);
      var_5 = pcache1_g.mutex;
      var_3 = pcache1_g.pFree;
      if (pcache1_g.pFree == (type_2 *)0x0) {
        if (pcache1_g.mutex != (type_1 *)0x0) {
          (*sqlite3Config.mutex.xMutexLeave)(pcache1_g.mutex);
        }
        goto LAB_00042511;
      }
    }
    pcache1_g.pFree = var_3->pNext;
    pcache1_g.nFreeSlot = pcache1_g.nFreeSlot + -1;
    pcache1_g.bUnderPressure = (int)(pcache1_g.nFreeSlot < pcache1_g.nReserve);
    if (sqlite3Stat.mxValue[7] < (type_4)var_1) {
      sqlite3Stat.mxValue[7] = var_1;
    }
    sqlite3Stat.nowValue[1] = sqlite3Stat.nowValue[1] + 1;
    if (sqlite3Stat.mxValue[1] < sqlite3Stat.nowValue[1]) {
      sqlite3Stat.mxValue[1] = sqlite3Stat.nowValue[1];
    }
    if (var_5 != (type_1 *)0x0) {
      (*sqlite3Config.mutex.xMutexLeave)(var_5);
    }
  }
  return var_3;
}


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

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

undefined4 * __regparm3 MASKED(uint param_1)

{
  undefined4 *puVar1;
  int iVar2;
  
  if (DAT_0017db60 < (int)param_1) {
LAB_00042511:
    puVar1 = (undefined4 *)FUN_000421f0();
    if (puVar1 != (undefined4 *)0x0) {
      iVar2 = (*DAT_0017c418)(puVar1);
      if (DAT_0017db74 != 0) {
        (*DAT_0017c43c)(DAT_0017db74);
      }
      if (DAT_0017de24 < param_1) {
        DAT_0017de24 = param_1;
      }
      DAT_0017dde8 = DAT_0017dde8 + iVar2;
      if (DAT_0017de10 < DAT_0017dde8) {
        DAT_0017de10 = DAT_0017dde8;
      }
      if (DAT_0017db74 != 0) {
        (*DAT_0017c444)(DAT_0017db74);
        return puVar1;
      }
    }
  }
  else {
    if (DAT_0017db74 == 0) {
      iVar2 = 0;
      puVar1 = DAT_0017db78;
      if (DAT_0017db78 == (undefined4 *)0x0) goto LAB_00042511;
    }
    else {
      (*DAT_0017c43c)(DAT_0017db74);
      iVar2 = DAT_0017db74;
      puVar1 = DAT_0017db78;
      if (DAT_0017db78 == (undefined4 *)0x0) {
        if (DAT_0017db74 != 0) {
          (*DAT_0017c444)(DAT_0017db74);
        }
        goto LAB_00042511;
      }
    }
    DAT_0017db78 = (undefined4 *)*puVar1;
    DAT_0017db7c = DAT_0017db7c + -1;
    DAT_0017db80 = (uint)(DAT_0017db7c < DAT_0017db68);
    if (DAT_0017de24 < param_1) {
      DAT_0017de24 = param_1;
    }
    DAT_0017dde4 = DAT_0017dde4 + 1;
    if (DAT_0017de0c < DAT_0017dde4) {
      DAT_0017de0c = DAT_0017dde4;
    }
    if (iVar2 != 0) {
      (*DAT_0017c444)(iVar2);
    }
  }
  return puVar1;
}

