
void sqlite3TableAffinity(Vdbe *v,Table *pTab,int iReg)

{
  sqlite3 *db;
  int iVar1;
  size_t sVar2;
  char *__s;
  long lVar3;
  char *pcVar4;
  char *pcVar5;
  uint uVar6;
  
  __s = pTab->zColAff;
  if (__s == (char *)0x0) {
    db = v->db;
    __s = (char *)sqlite3Malloc((long)(pTab->nCol + 1));
    if (__s == (char *)0x0) {
      uVar6._0_1_ = db->temp_store;
      uVar6._1_1_ = db->mallocFailed;
      uVar6._2_1_ = db->bBenignMalloc;
      uVar6._3_1_ = db->dfltLockMode;
      if ((uVar6 & 0xffff00) != 0) {
        return;
      }
      sqlite3OomFault(db);
      return;
    }
    lVar3 = 0;
    if (pTab->nCol < 1) {
      *__s = '\0';
    }
    else {
      do {
        iVar1 = (int)lVar3;
        __s[lVar3] = pTab->aCol[lVar3].affinity;
        lVar3 = lVar3 + 1;
      } while ((int)lVar3 < (int)pTab->nCol);
      lVar3 = (long)(iVar1 + 1);
      pcVar4 = __s + lVar3;
      pcVar5 = pcVar4 + -lVar3;
      do {
        *pcVar4 = '\0';
        if (pcVar4 == pcVar5) break;
        pcVar4 = pcVar4 + -1;
      } while (*pcVar4 == 'A');
    }
    pTab->zColAff = __s;
  }
  sVar2 = strlen(__s);
  uVar6 = (uint)sVar2 & 0x3fffffff;
  if ((sVar2 & 0x3fffffff) == 0) {
    return;
  }
  if (iReg == 0) {
    iVar1 = -1;
  }
  else {
    iVar1 = sqlite3VdbeAddOp3(v,0x5b,iReg,uVar6,0);
  }
  sqlite3VdbeChangeP4(v,iVar1,__s,uVar6);
  return;
}



void FUN_0013b9d0(long *param_1,long param_2,int param_3)

{
  int iVar1;
  undefined4 uVar2;
  size_t sVar3;
  char *__s;
  long lVar4;
  char *pcVar5;
  char *pcVar6;
  uint uVar7;
  
  __s = *(char **)(param_2 + 0x28);
  if (__s == (char *)0x0) {
    lVar4 = *param_1;
    __s = (char *)FUN_00119a00((long)(*(short *)(param_2 + 0x46) + 1));
    if (__s == (char *)0x0) {
      if ((*(uint *)(lVar4 + 0x60) & 0xffff00) != 0) {
        return;
      }
      FUN_0011b860(lVar4);
      return;
    }
    lVar4 = 0;
    if (*(short *)(param_2 + 0x46) < 1) {
      *__s = '\0';
    }
    else {
      do {
        iVar1 = (int)lVar4;
        __s[lVar4] = *(char *)(lVar4 * 0x20 + *(long *)(param_2 + 8) + 0x19);
        lVar4 = lVar4 + 1;
      } while ((int)lVar4 < (int)*(short *)(param_2 + 0x46));
      lVar4 = (long)(iVar1 + 1);
      pcVar5 = __s + lVar4;
      pcVar6 = pcVar5 + -lVar4;
      do {
        *pcVar5 = '\0';
        if (pcVar5 == pcVar6) break;
        pcVar5 = pcVar5 + -1;
      } while (*pcVar5 == 'A');
    }
    *(char **)(param_2 + 0x28) = __s;
  }
  sVar3 = strlen(__s);
  uVar7 = (uint)sVar3 & 0x3fffffff;
  if ((sVar3 & 0x3fffffff) == 0) {
    return;
  }
  if (param_3 == 0) {
    uVar2 = 0xffffffff;
  }
  else {
    uVar2 = FUN_0013b690(param_1,0x5b,param_3,uVar7,0);
  }
  FUN_00128780(param_1,uVar2,__s,uVar7);
  return;
}


PUSH R13
PUSH R12
MOV R12D,EDX
PUSH RBP
MOV RBP,RDI
PUSH RBX
SUB RSP,0x18
MOV RBX,qword ptr [RSI + 0x28]
TEST RBX,RBX
JZ 0x0013ba58
MOV RDI,RBX
CALL 0x0010a120
MOV R13D,EAX
AND R13D,0x3fffffff
JZ 0x0013ba38
TEST R12D,R12D
JZ 0x0013ba48
MOV ECX,R13D
MOV EDX,R12D
MOV ESI,0x5b
XOR R8D,R8D
MOV RDI,RBP
CALL 0x0013b690
MOV ECX,R13D
MOV RDX,RBX
MOV ESI,EAX
ADD RSP,0x18
MOV RDI,RBP
POP RBX
POP RBP
POP R12
POP R13
JMP 0x00128780
ADD RSP,0x18
POP RBX
POP RBP
POP R12
POP R13
RET
MOV ECX,R13D
MOV RDX,RBX
MOV ESI,0xffffffff
JMP 0x0013ba20
MOV R13,qword ptr [RDI]
MOVSX EDI,word ptr [RSI + 0x46]
MOV qword ptr [RSP + 0x8],RSI
ADD EDI,0x1
MOVSXD RDI,EDI
CALL 0x00119a00
MOV RBX,RAX
TEST RAX,RAX
JZ 0x0013bae0
MOV RSI,qword ptr [RSP + 0x8]
XOR EAX,EAX
CMP word ptr [RSI + 0x46],0x0
JLE 0x0013bb00
NOP dword ptr [RAX]
MOV RCX,RAX
SHL RCX,0x5
ADD RCX,qword ptr [RSI + 0x8]
MOVZX EDX,byte ptr [RCX + 0x19]
LEA ECX,[RAX + 0x1]
MOV byte ptr [RBX + RAX*0x1],DL
MOVSX EDX,word ptr [RSI + 0x46]
ADD RAX,0x1
CMP EDX,EAX
JG 0x0013ba88
MOVSXD RCX,ECX
LEA RAX,[RBX + RCX*0x1]
MOV RDX,RAX
SUB RDX,RCX
NOP word ptr CS:[RAX + RAX*0x1]
MOV byte ptr [RAX],0x0
CMP RAX,RDX
JZ 0x0013bad1
SUB RAX,0x1
CMP byte ptr [RAX],0x41
JZ 0x0013bac0
MOV qword ptr [RSI + 0x28],RBX
JMP 0x0013b9e9
TEST dword ptr [R13 + 0x60],0xffff00
JNZ 0x0013ba38
ADD RSP,0x18
MOV RDI,R13
POP RBX
POP RBP
POP R12
POP R13
JMP 0x0011b860
MOV byte ptr [RBX],0x0
JMP 0x0013bad1
(translation_unit "void FUN_0013b9d0(long *param_1,long param_2,int param_3)\n\n{\n  int iVar1;\n  undefined4 uVar2;\n  size_t sVar3;\n  char *__s;\n  long lVar4;\n  char *pcVar5;\n  char *pcVar6;\n  uint uVar7;\n  \n  __s = *(char **)(param_2 + 0x28);\n  if (__s == (char *)0x0) {\n    lVar4 = *param_1;\n    __s = (char *)FUN_00119a00((long)(*(short *)(param_2 + 0x46) + 1));\n    if (__s == (char *)0x0) {\n      if ((*(uint *)(lVar4 + 0x60) & 0xffff00) != 0) {\n        return;\n      }\n      FUN_0011b860(lVar4);\n      return;\n    }\n    lVar4 = 0;\n    if (*(short *)(param_2 + 0x46) < 1) {\n      *__s = '\0';\n    }\n    else {\n      do {\n        iVar1 = (int)lVar4;\n        __s[lVar4] = *(char *)(lVar4 * 0x20 + *(long *)(param_2 + 8) + 0x19);\n        lVar4 = lVar4 + 1;\n      } while ((int)lVar4 < (int)*(short *)(param_2 + 0x46));\n      lVar4 = (long)(iVar1 + 1);\n      pcVar5 = __s + lVar4;\n      pcVar6 = pcVar5 + -lVar4;\n      do {\n        *pcVar5 = '\0';\n        if (pcVar5 == pcVar6) break;\n        pcVar5 = pcVar5 + -1;\n      } while (*pcVar5 == 'A');\n    }\n    *(char **)(param_2 + 0x28) = __s;\n  }\n  sVar3 = strlen(__s);\n  uVar7 = (uint)sVar3 & 0x3fffffff;\n  if ((sVar3 & 0x3fffffff) == 0) {\n    return;\n  }\n  if (param_3 == 0) {\n    uVar2 = 0xffffffff;\n  }\n  else {\n    uVar2 = FUN_0013b690(param_1,0x5b,param_3,uVar7,0);\n  }\n  FUN_00128780(param_1,uVar2,__s,uVar7);\n  return;\n}\n\n" (function_definition "void FUN_0013b9d0(long *param_1,long param_2,int param_3)\n\n{\n  int iVar1;\n  undefined4 uVar2;\n  size_t sVar3;\n  char *__s;\n  long lVar4;\n  char *pcVar5;\n  char *pcVar6;\n  uint uVar7;\n  \n  __s = *(char **)(param_2 + 0x28);\n  if (__s == (char *)0x0) {\n    lVar4 = *param_1;\n    __s = (char *)FUN_00119a00((long)(*(short *)(param_2 + 0x46) + 1));\n    if (__s == (char *)0x0) {\n      if ((*(uint *)(lVar4 + 0x60) & 0xffff00) != 0) {\n        return;\n      }\n      FUN_0011b860(lVar4);\n      return;\n    }\n    lVar4 = 0;\n    if (*(short *)(param_2 + 0x46) < 1) {\n      *__s = '\0';\n    }\n    else {\n      do {\n        iVar1 = (int)lVar4;\n        __s[lVar4] = *(char *)(lVar4 * 0x20 + *(long *)(param_2 + 8) + 0x19);\n        lVar4 = lVar4 + 1;\n      } while ((int)lVar4 < (int)*(short *)(param_2 + 0x46));\n      lVar4 = (long)(iVar1 + 1);\n      pcVar5 = __s + lVar4;\n      pcVar6 = pcVar5 + -lVar4;\n      do {\n        *pcVar5 = '\0';\n        if (pcVar5 == pcVar6) break;\n        pcVar5 = pcVar5 + -1;\n      } while (*pcVar5 == 'A');\n    }\n    *(char **)(param_2 + 0x28) = __s;\n  }\n  sVar3 = strlen(__s);\n  uVar7 = (uint)sVar3 & 0x3fffffff;\n  if ((sVar3 & 0x3fffffff) == 0) {\n    return;\n  }\n  if (param_3 == 0) {\n    uVar2 = 0xffffffff;\n  }\n  else {\n    uVar2 = FUN_0013b690(param_1,0x5b,param_3,uVar7,0);\n  }\n  FUN_00128780(param_1,uVar2,__s,uVar7);\n  return;\n}" primitive_type (function_declarator "FUN_0013b9d0(long *param_1,long param_2,int param_3)" identifier (parameter_list "(long *param_1,long param_2,int param_3)" ( (parameter_declaration "long *param_1" (sized_type_specifier "long" long) (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "long param_2" (sized_type_specifier "long" long) identifier) , (parameter_declaration "int param_3" primitive_type identifier) ))) (compound_statement "{\n  int iVar1;\n  undefined4 uVar2;\n  size_t sVar3;\n  char *__s;\n  long lVar4;\n  char *pcVar5;\n  char *pcVar6;\n  uint uVar7;\n  \n  __s = *(char **)(param_2 + 0x28);\n  if (__s == (char *)0x0) {\n    lVar4 = *param_1;\n    __s = (char *)FUN_00119a00((long)(*(short *)(param_2 + 0x46) + 1));\n    if (__s == (char *)0x0) {\n      if ((*(uint *)(lVar4 + 0x60) & 0xffff00) != 0) {\n        return;\n      }\n      FUN_0011b860(lVar4);\n      return;\n    }\n    lVar4 = 0;\n    if (*(short *)(param_2 + 0x46) < 1) {\n      *__s = '\0';\n    }\n    else {\n      do {\n        iVar1 = (int)lVar4;\n        __s[lVar4] = *(char *)(lVar4 * 0x20 + *(long *)(param_2 + 8) + 0x19);\n        lVar4 = lVar4 + 1;\n      } while ((int)lVar4 < (int)*(short *)(param_2 + 0x46));\n      lVar4 = (long)(iVar1 + 1);\n      pcVar5 = __s + lVar4;\n      pcVar6 = pcVar5 + -lVar4;\n      do {\n        *pcVar5 = '\0';\n        if (pcVar5 == pcVar6) break;\n        pcVar5 = pcVar5 + -1;\n      } while (*pcVar5 == 'A');\n    }\n    *(char **)(param_2 + 0x28) = __s;\n  }\n  sVar3 = strlen(__s);\n  uVar7 = (uint)sVar3 & 0x3fffffff;\n  if ((sVar3 & 0x3fffffff) == 0) {\n    return;\n  }\n  if (param_3 == 0) {\n    uVar2 = 0xffffffff;\n  }\n  else {\n    uVar2 = FUN_0013b690(param_1,0x5b,param_3,uVar7,0);\n  }\n  FUN_00128780(param_1,uVar2,__s,uVar7);\n  return;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "undefined4 uVar2;" type_identifier identifier ;) (declaration "size_t sVar3;" primitive_type identifier ;) (declaration "char *__s;" primitive_type (pointer_declarator "*__s" * identifier) ;) (declaration "long lVar4;" (sized_type_specifier "long" long) identifier ;) (declaration "char *pcVar5;" primitive_type (pointer_declarator "*pcVar5" * identifier) ;) (declaration "char *pcVar6;" primitive_type (pointer_declarator "*pcVar6" * identifier) ;) (declaration "uint uVar7;" type_identifier identifier ;) (expression_statement "__s = *(char **)(param_2 + 0x28);" (assignment_expression "__s = *(char **)(param_2 + 0x28)" identifier = (pointer_expression "*(char **)(param_2 + 0x28)" * (cast_expression "(char **)(param_2 + 0x28)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_2 + 0x28)" ( (binary_expression "param_2 + 0x28" identifier + number_literal) ))))) ;) (if_statement "if (__s == (char *)0x0) {\n    lVar4 = *param_1;\n    __s = (char *)FUN_00119a00((long)(*(short *)(param_2 + 0x46) + 1));\n    if (__s == (char *)0x0) {\n      if ((*(uint *)(lVar4 + 0x60) & 0xffff00) != 0) {\n        return;\n      }\n      FUN_0011b860(lVar4);\n      return;\n    }\n    lVar4 = 0;\n    if (*(short *)(param_2 + 0x46) < 1) {\n      *__s = '\0';\n    }\n    else {\n      do {\n        iVar1 = (int)lVar4;\n        __s[lVar4] = *(char *)(lVar4 * 0x20 + *(long *)(param_2 + 8) + 0x19);\n        lVar4 = lVar4 + 1;\n      } while ((int)lVar4 < (int)*(short *)(param_2 + 0x46));\n      lVar4 = (long)(iVar1 + 1);\n      pcVar5 = __s + lVar4;\n      pcVar6 = pcVar5 + -lVar4;\n      do {\n        *pcVar5 = '\0';\n        if (pcVar5 == pcVar6) break;\n        pcVar5 = pcVar5 + -1;\n      } while (*pcVar5 == 'A');\n    }\n    *(char **)(param_2 + 0x28) = __s;\n  }" if (parenthesized_expression "(__s == (char *)0x0)" ( (binary_expression "__s == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    lVar4 = *param_1;\n    __s = (char *)FUN_00119a00((long)(*(short *)(param_2 + 0x46) + 1));\n    if (__s == (char *)0x0) {\n      if ((*(uint *)(lVar4 + 0x60) & 0xffff00) != 0) {\n        return;\n      }\n      FUN_0011b860(lVar4);\n      return;\n    }\n    lVar4 = 0;\n    if (*(short *)(param_2 + 0x46) < 1) {\n      *__s = '\0';\n    }\n    else {\n      do {\n        iVar1 = (int)lVar4;\n        __s[lVar4] = *(char *)(lVar4 * 0x20 + *(long *)(param_2 + 8) + 0x19);\n        lVar4 = lVar4 + 1;\n      } while ((int)lVar4 < (int)*(short *)(param_2 + 0x46));\n      lVar4 = (long)(iVar1 + 1);\n      pcVar5 = __s + lVar4;\n      pcVar6 = pcVar5 + -lVar4;\n      do {\n        *pcVar5 = '\0';\n        if (pcVar5 == pcVar6) break;\n        pcVar5 = pcVar5 + -1;\n      } while (*pcVar5 == 'A');\n    }\n    *(char **)(param_2 + 0x28) = __s;\n  }" { (expression_statement "lVar4 = *param_1;" (assignment_expression "lVar4 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (expression_statement "__s = (char *)FUN_00119a00((long)(*(short *)(param_2 + 0x46) + 1));" (assignment_expression "__s = (char *)FUN_00119a00((long)(*(short *)(param_2 + 0x46) + 1))" identifier = (cast_expression "(char *)FUN_00119a00((long)(*(short *)(param_2 + 0x46) + 1))" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00119a00((long)(*(short *)(param_2 + 0x46) + 1))" identifier (argument_list "((long)(*(short *)(param_2 + 0x46) + 1))" ( (cast_expression "(long)(*(short *)(param_2 + 0x46) + 1)" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (parenthesized_expression "(*(short *)(param_2 + 0x46) + 1)" ( (binary_expression "*(short *)(param_2 + 0x46) + 1" (pointer_expression "*(short *)(param_2 + 0x46)" * (cast_expression "(short *)(param_2 + 0x46)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x46)" ( (binary_expression "param_2 + 0x46" identifier + number_literal) )))) + number_literal) ))) ))))) ;) (if_statement "if (__s == (char *)0x0) {\n      if ((*(uint *)(lVar4 + 0x60) & 0xffff00) != 0) {\n        return;\n      }\n      FUN_0011b860(lVar4);\n      return;\n    }" if (parenthesized_expression "(__s == (char *)0x0)" ( (binary_expression "__s == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      if ((*(uint *)(lVar4 + 0x60) & 0xffff00) != 0) {\n        return;\n      }\n      FUN_0011b860(lVar4);\n      return;\n    }" { (if_statement "if ((*(uint *)(lVar4 + 0x60) & 0xffff00) != 0) {\n        return;\n      }" if (parenthesized_expression "((*(uint *)(lVar4 + 0x60) & 0xffff00) != 0)" ( (binary_expression "(*(uint *)(lVar4 + 0x60) & 0xffff00) != 0" (parenthesized_expression "(*(uint *)(lVar4 + 0x60) & 0xffff00)" ( (binary_expression "*(uint *)(lVar4 + 0x60) & 0xffff00" (pointer_expression "*(uint *)(lVar4 + 0x60)" * (cast_expression "(uint *)(lVar4 + 0x60)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar4 + 0x60)" ( (binary_expression "lVar4 + 0x60" identifier + number_literal) )))) & number_literal) )) != number_literal) )) (compound_statement "{\n        return;\n      }" { (return_statement "return;" return ;) })) (expression_statement "FUN_0011b860(lVar4);" (call_expression "FUN_0011b860(lVar4)" identifier (argument_list "(lVar4)" ( identifier ))) ;) (return_statement "return;" return ;) })) (expression_statement "lVar4 = 0;" (assignment_expression "lVar4 = 0" identifier = number_literal) ;) (if_statement "if (*(short *)(param_2 + 0x46) < 1) {\n      *__s = '\0';\n    }\n    else {\n      do {\n        iVar1 = (int)lVar4;\n        __s[lVar4] = *(char *)(lVar4 * 0x20 + *(long *)(param_2 + 8) + 0x19);\n        lVar4 = lVar4 + 1;\n      } while ((int)lVar4 < (int)*(short *)(param_2 + 0x46));\n      lVar4 = (long)(iVar1 + 1);\n      pcVar5 = __s + lVar4;\n      pcVar6 = pcVar5 + -lVar4;\n      do {\n        *pcVar5 = '\0';\n        if (pcVar5 == pcVar6) break;\n        pcVar5 = pcVar5 + -1;\n      } while (*pcVar5 == 'A');\n    }" if (parenthesized_expression "(*(short *)(param_2 + 0x46) < 1)" ( (binary_expression "*(short *)(param_2 + 0x46) < 1" (pointer_expression "*(short *)(param_2 + 0x46)" * (cast_expression "(short *)(param_2 + 0x46)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x46)" ( (binary_expression "param_2 + 0x46" identifier + number_literal) )))) < number_literal) )) (compound_statement "{\n      *__s = '\0';\n    }" { (expression_statement "*__s = '\0';" (assignment_expression "*__s = '\0'" (pointer_expression "*__s" * identifier) = (char_literal "'\0'" ' escape_sequence ')) ;) }) (else_clause "else {\n      do {\n        iVar1 = (int)lVar4;\n        __s[lVar4] = *(char *)(lVar4 * 0x20 + *(long *)(param_2 + 8) + 0x19);\n        lVar4 = lVar4 + 1;\n      } while ((int)lVar4 < (int)*(short *)(param_2 + 0x46));\n      lVar4 = (long)(iVar1 + 1);\n      pcVar5 = __s + lVar4;\n      pcVar6 = pcVar5 + -lVar4;\n      do {\n        *pcVar5 = '\0';\n        if (pcVar5 == pcVar6) break;\n        pcVar5 = pcVar5 + -1;\n      } while (*pcVar5 == 'A');\n    }" else (compound_statement "{\n      do {\n        iVar1 = (int)lVar4;\n        __s[lVar4] = *(char *)(lVar4 * 0x20 + *(long *)(param_2 + 8) + 0x19);\n        lVar4 = lVar4 + 1;\n      } while ((int)lVar4 < (int)*(short *)(param_2 + 0x46));\n      lVar4 = (long)(iVar1 + 1);\n      pcVar5 = __s + lVar4;\n      pcVar6 = pcVar5 + -lVar4;\n      do {\n        *pcVar5 = '\0';\n        if (pcVar5 == pcVar6) break;\n        pcVar5 = pcVar5 + -1;\n      } while (*pcVar5 == 'A');\n    }" { (do_statement "do {\n        iVar1 = (int)lVar4;\n        __s[lVar4] = *(char *)(lVar4 * 0x20 + *(long *)(param_2 + 8) + 0x19);\n        lVar4 = lVar4 + 1;\n      } while ((int)lVar4 < (int)*(short *)(param_2 + 0x46));" do (compound_statement "{\n        iVar1 = (int)lVar4;\n        __s[lVar4] = *(char *)(lVar4 * 0x20 + *(long *)(param_2 + 8) + 0x19);\n        lVar4 = lVar4 + 1;\n      }" { (expression_statement "iVar1 = (int)lVar4;" (assignment_expression "iVar1 = (int)lVar4" identifier = (cast_expression "(int)lVar4" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "__s[lVar4] = *(char *)(lVar4 * 0x20 + *(long *)(param_2 + 8) + 0x19);" (assignment_expression "__s[lVar4] = *(char *)(lVar4 * 0x20 + *(long *)(param_2 + 8) + 0x19)" (subscript_expression "__s[lVar4]" identifier [ identifier ]) = (pointer_expression "*(char *)(lVar4 * 0x20 + *(long *)(param_2 + 8) + 0x19)" * (cast_expression "(char *)(lVar4 * 0x20 + *(long *)(param_2 + 8) + 0x19)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar4 * 0x20 + *(long *)(param_2 + 8) + 0x19)" ( (binary_expression "lVar4 * 0x20 + *(long *)(param_2 + 8) + 0x19" (binary_expression "lVar4 * 0x20 + *(long *)(param_2 + 8)" (binary_expression "lVar4 * 0x20" identifier * number_literal) + (pointer_expression "*(long *)(param_2 + 8)" * (cast_expression "(long *)(param_2 + 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 8)" ( (binary_expression "param_2 + 8" identifier + number_literal) ))))) + number_literal) ))))) ;) (expression_statement "lVar4 = lVar4 + 1;" (assignment_expression "lVar4 = lVar4 + 1" identifier = (binary_expression "lVar4 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "((int)lVar4 < (int)*(short *)(param_2 + 0x46))" ( (binary_expression "(int)lVar4 < (int)*(short *)(param_2 + 0x46)" (cast_expression "(int)lVar4" ( (type_descriptor "int" primitive_type) ) identifier) < (cast_expression "(int)*(short *)(param_2 + 0x46)" ( (type_descriptor "int" primitive_type) ) (pointer_expression "*(short *)(param_2 + 0x46)" * (cast_expression "(short *)(param_2 + 0x46)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x46)" ( (binary_expression "param_2 + 0x46" identifier + number_literal) )))))) )) ;) (expression_statement "lVar4 = (long)(iVar1 + 1);" (assignment_expression "lVar4 = (long)(iVar1 + 1)" identifier = (cast_expression "(long)(iVar1 + 1)" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (parenthesized_expression "(iVar1 + 1)" ( (binary_expression "iVar1 + 1" identifier + number_literal) )))) ;) (expression_statement "pcVar5 = __s + lVar4;" (assignment_expression "pcVar5 = __s + lVar4" identifier = (binary_expression "__s + lVar4" identifier + identifier)) ;) (expression_statement "pcVar6 = pcVar5 + -lVar4;" (assignment_expression "pcVar6 = pcVar5 + -lVar4" identifier = (binary_expression "pcVar5 + -lVar4" identifier + (unary_expression "-lVar4" - identifier))) ;) (do_statement "do {\n        *pcVar5 = '\0';\n        if (pcVar5 == pcVar6) break;\n        pcVar5 = pcVar5 + -1;\n      } while (*pcVar5 == 'A');" do (compound_statement "{\n        *pcVar5 = '\0';\n        if (pcVar5 == pcVar6) break;\n        pcVar5 = pcVar5 + -1;\n      }" { (expression_statement "*pcVar5 = '\0';" (assignment_expression "*pcVar5 = '\0'" (pointer_expression "*pcVar5" * identifier) = (char_literal "'\0'" ' escape_sequence ')) ;) (if_statement "if (pcVar5 == pcVar6) break;" if (parenthesized_expression "(pcVar5 == pcVar6)" ( (binary_expression "pcVar5 == pcVar6" identifier == identifier) )) (break_statement "break;" break ;)) (expression_statement "pcVar5 = pcVar5 + -1;" (assignment_expression "pcVar5 = pcVar5 + -1" identifier = (binary_expression "pcVar5 + -1" identifier + number_literal)) ;) }) while (parenthesized_expression "(*pcVar5 == 'A')" ( (binary_expression "*pcVar5 == 'A'" (pointer_expression "*pcVar5" * identifier) == (char_literal "'A'" ' character ')) )) ;) }))) (expression_statement "*(char **)(param_2 + 0x28) = __s;" (assignment_expression "*(char **)(param_2 + 0x28) = __s" (pointer_expression "*(char **)(param_2 + 0x28)" * (cast_expression "(char **)(param_2 + 0x28)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_2 + 0x28)" ( (binary_expression "param_2 + 0x28" identifier + number_literal) )))) = identifier) ;) })) (expression_statement "sVar3 = strlen(__s);" (assignment_expression "sVar3 = strlen(__s)" identifier = (call_expression "strlen(__s)" identifier (argument_list "(__s)" ( identifier )))) ;) (expression_statement "uVar7 = (uint)sVar3 & 0x3fffffff;" (assignment_expression "uVar7 = (uint)sVar3 & 0x3fffffff" identifier = (binary_expression "(uint)sVar3 & 0x3fffffff" (cast_expression "(uint)sVar3" ( (type_descriptor "uint" type_identifier) ) identifier) & number_literal)) ;) (if_statement "if ((sVar3 & 0x3fffffff) == 0) {\n    return;\n  }" if (parenthesized_expression "((sVar3 & 0x3fffffff) == 0)" ( (binary_expression "(sVar3 & 0x3fffffff) == 0" (parenthesized_expression "(sVar3 & 0x3fffffff)" ( (binary_expression "sVar3 & 0x3fffffff" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n    return;\n  }" { (return_statement "return;" return ;) })) (if_statement "if (param_3 == 0) {\n    uVar2 = 0xffffffff;\n  }\n  else {\n    uVar2 = FUN_0013b690(param_1,0x5b,param_3,uVar7,0);\n  }" if (parenthesized_expression "(param_3 == 0)" ( (binary_expression "param_3 == 0" identifier == number_literal) )) (compound_statement "{\n    uVar2 = 0xffffffff;\n  }" { (expression_statement "uVar2 = 0xffffffff;" (assignment_expression "uVar2 = 0xffffffff" identifier = number_literal) ;) }) (else_clause "else {\n    uVar2 = FUN_0013b690(param_1,0x5b,param_3,uVar7,0);\n  }" else (compound_statement "{\n    uVar2 = FUN_0013b690(param_1,0x5b,param_3,uVar7,0);\n  }" { (expression_statement "uVar2 = FUN_0013b690(param_1,0x5b,param_3,uVar7,0);" (assignment_expression "uVar2 = FUN_0013b690(param_1,0x5b,param_3,uVar7,0)" identifier = (call_expression "FUN_0013b690(param_1,0x5b,param_3,uVar7,0)" identifier (argument_list "(param_1,0x5b,param_3,uVar7,0)" ( identifier , number_literal , identifier , identifier , number_literal )))) ;) }))) (expression_statement "FUN_00128780(param_1,uVar2,__s,uVar7);" (call_expression "FUN_00128780(param_1,uVar2,__s,uVar7)" identifier (argument_list "(param_1,uVar2,__s,uVar7)" ( identifier , identifier , identifier , identifier ))) ;) (return_statement "return;" return ;) })))
(translation_unit "void sqlite3TableAffinity(Vdbe *v,Table *pTab,int iReg)\n\n{\n  sqlite3 *db;\n  int iVar1;\n  size_t sVar2;\n  char *__s;\n  long lVar3;\n  char *pcVar4;\n  char *pcVar5;\n  uint uVar6;\n  \n  __s = pTab->zColAff;\n  if (__s == (char *)0x0) {\n    db = v->db;\n    __s = (char *)sqlite3Malloc((long)(pTab->nCol + 1));\n    if (__s == (char *)0x0) {\n      uVar6._0_1_ = db->temp_store;\n      uVar6._1_1_ = db->mallocFailed;\n      uVar6._2_1_ = db->bBenignMalloc;\n      uVar6._3_1_ = db->dfltLockMode;\n      if ((uVar6 & 0xffff00) != 0) {\n        return;\n      }\n      sqlite3OomFault(db);\n      return;\n    }\n    lVar3 = 0;\n    if (pTab->nCol < 1) {\n      *__s = '\0';\n    }\n    else {\n      do {\n        iVar1 = (int)lVar3;\n        __s[lVar3] = pTab->aCol[lVar3].affinity;\n        lVar3 = lVar3 + 1;\n      } while ((int)lVar3 < (int)pTab->nCol);\n      lVar3 = (long)(iVar1 + 1);\n      pcVar4 = __s + lVar3;\n      pcVar5 = pcVar4 + -lVar3;\n      do {\n        *pcVar4 = '\0';\n        if (pcVar4 == pcVar5) break;\n        pcVar4 = pcVar4 + -1;\n      } while (*pcVar4 == 'A');\n    }\n    pTab->zColAff = __s;\n  }\n  sVar2 = strlen(__s);\n  uVar6 = (uint)sVar2 & 0x3fffffff;\n  if ((sVar2 & 0x3fffffff) == 0) {\n    return;\n  }\n  if (iReg == 0) {\n    iVar1 = -1;\n  }\n  else {\n    iVar1 = sqlite3VdbeAddOp3(v,0x5b,iReg,uVar6,0);\n  }\n  sqlite3VdbeChangeP4(v,iVar1,__s,uVar6);\n  return;\n}\n\n" (function_definition "void sqlite3TableAffinity(Vdbe *v,Table *pTab,int iReg)\n\n{\n  sqlite3 *db;\n  int iVar1;\n  size_t sVar2;\n  char *__s;\n  long lVar3;\n  char *pcVar4;\n  char *pcVar5;\n  uint uVar6;\n  \n  __s = pTab->zColAff;\n  if (__s == (char *)0x0) {\n    db = v->db;\n    __s = (char *)sqlite3Malloc((long)(pTab->nCol + 1));\n    if (__s == (char *)0x0) {\n      uVar6._0_1_ = db->temp_store;\n      uVar6._1_1_ = db->mallocFailed;\n      uVar6._2_1_ = db->bBenignMalloc;\n      uVar6._3_1_ = db->dfltLockMode;\n      if ((uVar6 & 0xffff00) != 0) {\n        return;\n      }\n      sqlite3OomFault(db);\n      return;\n    }\n    lVar3 = 0;\n    if (pTab->nCol < 1) {\n      *__s = '\0';\n    }\n    else {\n      do {\n        iVar1 = (int)lVar3;\n        __s[lVar3] = pTab->aCol[lVar3].affinity;\n        lVar3 = lVar3 + 1;\n      } while ((int)lVar3 < (int)pTab->nCol);\n      lVar3 = (long)(iVar1 + 1);\n      pcVar4 = __s + lVar3;\n      pcVar5 = pcVar4 + -lVar3;\n      do {\n        *pcVar4 = '\0';\n        if (pcVar4 == pcVar5) break;\n        pcVar4 = pcVar4 + -1;\n      } while (*pcVar4 == 'A');\n    }\n    pTab->zColAff = __s;\n  }\n  sVar2 = strlen(__s);\n  uVar6 = (uint)sVar2 & 0x3fffffff;\n  if ((sVar2 & 0x3fffffff) == 0) {\n    return;\n  }\n  if (iReg == 0) {\n    iVar1 = -1;\n  }\n  else {\n    iVar1 = sqlite3VdbeAddOp3(v,0x5b,iReg,uVar6,0);\n  }\n  sqlite3VdbeChangeP4(v,iVar1,__s,uVar6);\n  return;\n}" primitive_type (function_declarator "sqlite3TableAffinity(Vdbe *v,Table *pTab,int iReg)" identifier (parameter_list "(Vdbe *v,Table *pTab,int iReg)" ( (parameter_declaration "Vdbe *v" type_identifier (pointer_declarator "*v" * identifier)) , (parameter_declaration "Table *pTab" type_identifier (pointer_declarator "*pTab" * identifier)) , (parameter_declaration "int iReg" primitive_type identifier) ))) (compound_statement "{\n  sqlite3 *db;\n  int iVar1;\n  size_t sVar2;\n  char *__s;\n  long lVar3;\n  char *pcVar4;\n  char *pcVar5;\n  uint uVar6;\n  \n  __s = pTab->zColAff;\n  if (__s == (char *)0x0) {\n    db = v->db;\n    __s = (char *)sqlite3Malloc((long)(pTab->nCol + 1));\n    if (__s == (char *)0x0) {\n      uVar6._0_1_ = db->temp_store;\n      uVar6._1_1_ = db->mallocFailed;\n      uVar6._2_1_ = db->bBenignMalloc;\n      uVar6._3_1_ = db->dfltLockMode;\n      if ((uVar6 & 0xffff00) != 0) {\n        return;\n      }\n      sqlite3OomFault(db);\n      return;\n    }\n    lVar3 = 0;\n    if (pTab->nCol < 1) {\n      *__s = '\0';\n    }\n    else {\n      do {\n        iVar1 = (int)lVar3;\n        __s[lVar3] = pTab->aCol[lVar3].affinity;\n        lVar3 = lVar3 + 1;\n      } while ((int)lVar3 < (int)pTab->nCol);\n      lVar3 = (long)(iVar1 + 1);\n      pcVar4 = __s + lVar3;\n      pcVar5 = pcVar4 + -lVar3;\n      do {\n        *pcVar4 = '\0';\n        if (pcVar4 == pcVar5) break;\n        pcVar4 = pcVar4 + -1;\n      } while (*pcVar4 == 'A');\n    }\n    pTab->zColAff = __s;\n  }\n  sVar2 = strlen(__s);\n  uVar6 = (uint)sVar2 & 0x3fffffff;\n  if ((sVar2 & 0x3fffffff) == 0) {\n    return;\n  }\n  if (iReg == 0) {\n    iVar1 = -1;\n  }\n  else {\n    iVar1 = sqlite3VdbeAddOp3(v,0x5b,iReg,uVar6,0);\n  }\n  sqlite3VdbeChangeP4(v,iVar1,__s,uVar6);\n  return;\n}" { (declaration "sqlite3 *db;" type_identifier (pointer_declarator "*db" * identifier) ;) (declaration "int iVar1;" primitive_type identifier ;) (declaration "size_t sVar2;" primitive_type identifier ;) (declaration "char *__s;" primitive_type (pointer_declarator "*__s" * identifier) ;) (declaration "long lVar3;" (sized_type_specifier "long" long) identifier ;) (declaration "char *pcVar4;" primitive_type (pointer_declarator "*pcVar4" * identifier) ;) (declaration "char *pcVar5;" primitive_type (pointer_declarator "*pcVar5" * identifier) ;) (declaration "uint uVar6;" type_identifier identifier ;) (expression_statement "__s = pTab->zColAff;" (assignment_expression "__s = pTab->zColAff" identifier = (field_expression "pTab->zColAff" identifier -> field_identifier)) ;) (if_statement "if (__s == (char *)0x0) {\n    db = v->db;\n    __s = (char *)sqlite3Malloc((long)(pTab->nCol + 1));\n    if (__s == (char *)0x0) {\n      uVar6._0_1_ = db->temp_store;\n      uVar6._1_1_ = db->mallocFailed;\n      uVar6._2_1_ = db->bBenignMalloc;\n      uVar6._3_1_ = db->dfltLockMode;\n      if ((uVar6 & 0xffff00) != 0) {\n        return;\n      }\n      sqlite3OomFault(db);\n      return;\n    }\n    lVar3 = 0;\n    if (pTab->nCol < 1) {\n      *__s = '\0';\n    }\n    else {\n      do {\n        iVar1 = (int)lVar3;\n        __s[lVar3] = pTab->aCol[lVar3].affinity;\n        lVar3 = lVar3 + 1;\n      } while ((int)lVar3 < (int)pTab->nCol);\n      lVar3 = (long)(iVar1 + 1);\n      pcVar4 = __s + lVar3;\n      pcVar5 = pcVar4 + -lVar3;\n      do {\n        *pcVar4 = '\0';\n        if (pcVar4 == pcVar5) break;\n        pcVar4 = pcVar4 + -1;\n      } while (*pcVar4 == 'A');\n    }\n    pTab->zColAff = __s;\n  }" if (parenthesized_expression "(__s == (char *)0x0)" ( (binary_expression "__s == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    db = v->db;\n    __s = (char *)sqlite3Malloc((long)(pTab->nCol + 1));\n    if (__s == (char *)0x0) {\n      uVar6._0_1_ = db->temp_store;\n      uVar6._1_1_ = db->mallocFailed;\n      uVar6._2_1_ = db->bBenignMalloc;\n      uVar6._3_1_ = db->dfltLockMode;\n      if ((uVar6 & 0xffff00) != 0) {\n        return;\n      }\n      sqlite3OomFault(db);\n      return;\n    }\n    lVar3 = 0;\n    if (pTab->nCol < 1) {\n      *__s = '\0';\n    }\n    else {\n      do {\n        iVar1 = (int)lVar3;\n        __s[lVar3] = pTab->aCol[lVar3].affinity;\n        lVar3 = lVar3 + 1;\n      } while ((int)lVar3 < (int)pTab->nCol);\n      lVar3 = (long)(iVar1 + 1);\n      pcVar4 = __s + lVar3;\n      pcVar5 = pcVar4 + -lVar3;\n      do {\n        *pcVar4 = '\0';\n        if (pcVar4 == pcVar5) break;\n        pcVar4 = pcVar4 + -1;\n      } while (*pcVar4 == 'A');\n    }\n    pTab->zColAff = __s;\n  }" { (expression_statement "db = v->db;" (assignment_expression "db = v->db" identifier = (field_expression "v->db" identifier -> field_identifier)) ;) (expression_statement "__s = (char *)sqlite3Malloc((long)(pTab->nCol + 1));" (assignment_expression "__s = (char *)sqlite3Malloc((long)(pTab->nCol + 1))" identifier = (cast_expression "(char *)sqlite3Malloc((long)(pTab->nCol + 1))" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "sqlite3Malloc((long)(pTab->nCol + 1))" identifier (argument_list "((long)(pTab->nCol + 1))" ( (cast_expression "(long)(pTab->nCol + 1)" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (parenthesized_expression "(pTab->nCol + 1)" ( (binary_expression "pTab->nCol + 1" (field_expression "pTab->nCol" identifier -> field_identifier) + number_literal) ))) ))))) ;) (if_statement "if (__s == (char *)0x0) {\n      uVar6._0_1_ = db->temp_store;\n      uVar6._1_1_ = db->mallocFailed;\n      uVar6._2_1_ = db->bBenignMalloc;\n      uVar6._3_1_ = db->dfltLockMode;\n      if ((uVar6 & 0xffff00) != 0) {\n        return;\n      }\n      sqlite3OomFault(db);\n      return;\n    }" if (parenthesized_expression "(__s == (char *)0x0)" ( (binary_expression "__s == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      uVar6._0_1_ = db->temp_store;\n      uVar6._1_1_ = db->mallocFailed;\n      uVar6._2_1_ = db->bBenignMalloc;\n      uVar6._3_1_ = db->dfltLockMode;\n      if ((uVar6 & 0xffff00) != 0) {\n        return;\n      }\n      sqlite3OomFault(db);\n      return;\n    }" { (expression_statement "uVar6._0_1_ = db->temp_store;" (assignment_expression "uVar6._0_1_ = db->temp_store" (field_expression "uVar6._0_1_" identifier . field_identifier) = (field_expression "db->temp_store" identifier -> field_identifier)) ;) (expression_statement "uVar6._1_1_ = db->mallocFailed;" (assignment_expression "uVar6._1_1_ = db->mallocFailed" (field_expression "uVar6._1_1_" identifier . field_identifier) = (field_expression "db->mallocFailed" identifier -> field_identifier)) ;) (expression_statement "uVar6._2_1_ = db->bBenignMalloc;" (assignment_expression "uVar6._2_1_ = db->bBenignMalloc" (field_expression "uVar6._2_1_" identifier . field_identifier) = (field_expression "db->bBenignMalloc" identifier -> field_identifier)) ;) (expression_statement "uVar6._3_1_ = db->dfltLockMode;" (assignment_expression "uVar6._3_1_ = db->dfltLockMode" (field_expression "uVar6._3_1_" identifier . field_identifier) = (field_expression "db->dfltLockMode" identifier -> field_identifier)) ;) (if_statement "if ((uVar6 & 0xffff00) != 0) {\n        return;\n      }" if (parenthesized_expression "((uVar6 & 0xffff00) != 0)" ( (binary_expression "(uVar6 & 0xffff00) != 0" (parenthesized_expression "(uVar6 & 0xffff00)" ( (binary_expression "uVar6 & 0xffff00" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n        return;\n      }" { (return_statement "return;" return ;) })) (expression_statement "sqlite3OomFault(db);" (call_expression "sqlite3OomFault(db)" identifier (argument_list "(db)" ( identifier ))) ;) (return_statement "return;" return ;) })) (expression_statement "lVar3 = 0;" (assignment_expression "lVar3 = 0" identifier = number_literal) ;) (if_statement "if (pTab->nCol < 1) {\n      *__s = '\0';\n    }\n    else {\n      do {\n        iVar1 = (int)lVar3;\n        __s[lVar3] = pTab->aCol[lVar3].affinity;\n        lVar3 = lVar3 + 1;\n      } while ((int)lVar3 < (int)pTab->nCol);\n      lVar3 = (long)(iVar1 + 1);\n      pcVar4 = __s + lVar3;\n      pcVar5 = pcVar4 + -lVar3;\n      do {\n        *pcVar4 = '\0';\n        if (pcVar4 == pcVar5) break;\n        pcVar4 = pcVar4 + -1;\n      } while (*pcVar4 == 'A');\n    }" if (parenthesized_expression "(pTab->nCol < 1)" ( (binary_expression "pTab->nCol < 1" (field_expression "pTab->nCol" identifier -> field_identifier) < number_literal) )) (compound_statement "{\n      *__s = '\0';\n    }" { (expression_statement "*__s = '\0';" (assignment_expression "*__s = '\0'" (pointer_expression "*__s" * identifier) = (char_literal "'\0'" ' escape_sequence ')) ;) }) (else_clause "else {\n      do {\n        iVar1 = (int)lVar3;\n        __s[lVar3] = pTab->aCol[lVar3].affinity;\n        lVar3 = lVar3 + 1;\n      } while ((int)lVar3 < (int)pTab->nCol);\n      lVar3 = (long)(iVar1 + 1);\n      pcVar4 = __s + lVar3;\n      pcVar5 = pcVar4 + -lVar3;\n      do {\n        *pcVar4 = '\0';\n        if (pcVar4 == pcVar5) break;\n        pcVar4 = pcVar4 + -1;\n      } while (*pcVar4 == 'A');\n    }" else (compound_statement "{\n      do {\n        iVar1 = (int)lVar3;\n        __s[lVar3] = pTab->aCol[lVar3].affinity;\n        lVar3 = lVar3 + 1;\n      } while ((int)lVar3 < (int)pTab->nCol);\n      lVar3 = (long)(iVar1 + 1);\n      pcVar4 = __s + lVar3;\n      pcVar5 = pcVar4 + -lVar3;\n      do {\n        *pcVar4 = '\0';\n        if (pcVar4 == pcVar5) break;\n        pcVar4 = pcVar4 + -1;\n      } while (*pcVar4 == 'A');\n    }" { (do_statement "do {\n        iVar1 = (int)lVar3;\n        __s[lVar3] = pTab->aCol[lVar3].affinity;\n        lVar3 = lVar3 + 1;\n      } while ((int)lVar3 < (int)pTab->nCol);" do (compound_statement "{\n        iVar1 = (int)lVar3;\n        __s[lVar3] = pTab->aCol[lVar3].affinity;\n        lVar3 = lVar3 + 1;\n      }" { (expression_statement "iVar1 = (int)lVar3;" (assignment_expression "iVar1 = (int)lVar3" identifier = (cast_expression "(int)lVar3" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "__s[lVar3] = pTab->aCol[lVar3].affinity;" (assignment_expression "__s[lVar3] = pTab->aCol[lVar3].affinity" (subscript_expression "__s[lVar3]" identifier [ identifier ]) = (field_expression "pTab->aCol[lVar3].affinity" (subscript_expression "pTab->aCol[lVar3]" (field_expression "pTab->aCol" identifier -> field_identifier) [ identifier ]) . field_identifier)) ;) (expression_statement "lVar3 = lVar3 + 1;" (assignment_expression "lVar3 = lVar3 + 1" identifier = (binary_expression "lVar3 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "((int)lVar3 < (int)pTab->nCol)" ( (binary_expression "(int)lVar3 < (int)pTab->nCol" (cast_expression "(int)lVar3" ( (type_descriptor "int" primitive_type) ) identifier) < (cast_expression "(int)pTab->nCol" ( (type_descriptor "int" primitive_type) ) (field_expression "pTab->nCol" identifier -> field_identifier))) )) ;) (expression_statement "lVar3 = (long)(iVar1 + 1);" (assignment_expression "lVar3 = (long)(iVar1 + 1)" identifier = (cast_expression "(long)(iVar1 + 1)" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (parenthesized_expression "(iVar1 + 1)" ( (binary_expression "iVar1 + 1" identifier + number_literal) )))) ;) (expression_statement "pcVar4 = __s + lVar3;" (assignment_expression "pcVar4 = __s + lVar3" identifier = (binary_expression "__s + lVar3" identifier + identifier)) ;) (expression_statement "pcVar5 = pcVar4 + -lVar3;" (assignment_expression "pcVar5 = pcVar4 + -lVar3" identifier = (binary_expression "pcVar4 + -lVar3" identifier + (unary_expression "-lVar3" - identifier))) ;) (do_statement "do {\n        *pcVar4 = '\0';\n        if (pcVar4 == pcVar5) break;\n        pcVar4 = pcVar4 + -1;\n      } while (*pcVar4 == 'A');" do (compound_statement "{\n        *pcVar4 = '\0';\n        if (pcVar4 == pcVar5) break;\n        pcVar4 = pcVar4 + -1;\n      }" { (expression_statement "*pcVar4 = '\0';" (assignment_expression "*pcVar4 = '\0'" (pointer_expression "*pcVar4" * identifier) = (char_literal "'\0'" ' escape_sequence ')) ;) (if_statement "if (pcVar4 == pcVar5) break;" if (parenthesized_expression "(pcVar4 == pcVar5)" ( (binary_expression "pcVar4 == pcVar5" identifier == identifier) )) (break_statement "break;" break ;)) (expression_statement "pcVar4 = pcVar4 + -1;" (assignment_expression "pcVar4 = pcVar4 + -1" identifier = (binary_expression "pcVar4 + -1" identifier + number_literal)) ;) }) while (parenthesized_expression "(*pcVar4 == 'A')" ( (binary_expression "*pcVar4 == 'A'" (pointer_expression "*pcVar4" * identifier) == (char_literal "'A'" ' character ')) )) ;) }))) (expression_statement "pTab->zColAff = __s;" (assignment_expression "pTab->zColAff = __s" (field_expression "pTab->zColAff" identifier -> field_identifier) = identifier) ;) })) (expression_statement "sVar2 = strlen(__s);" (assignment_expression "sVar2 = strlen(__s)" identifier = (call_expression "strlen(__s)" identifier (argument_list "(__s)" ( identifier )))) ;) (expression_statement "uVar6 = (uint)sVar2 & 0x3fffffff;" (assignment_expression "uVar6 = (uint)sVar2 & 0x3fffffff" identifier = (binary_expression "(uint)sVar2 & 0x3fffffff" (cast_expression "(uint)sVar2" ( (type_descriptor "uint" type_identifier) ) identifier) & number_literal)) ;) (if_statement "if ((sVar2 & 0x3fffffff) == 0) {\n    return;\n  }" if (parenthesized_expression "((sVar2 & 0x3fffffff) == 0)" ( (binary_expression "(sVar2 & 0x3fffffff) == 0" (parenthesized_expression "(sVar2 & 0x3fffffff)" ( (binary_expression "sVar2 & 0x3fffffff" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n    return;\n  }" { (return_statement "return;" return ;) })) (if_statement "if (iReg == 0) {\n    iVar1 = -1;\n  }\n  else {\n    iVar1 = sqlite3VdbeAddOp3(v,0x5b,iReg,uVar6,0);\n  }" if (parenthesized_expression "(iReg == 0)" ( (binary_expression "iReg == 0" identifier == number_literal) )) (compound_statement "{\n    iVar1 = -1;\n  }" { (expression_statement "iVar1 = -1;" (assignment_expression "iVar1 = -1" identifier = number_literal) ;) }) (else_clause "else {\n    iVar1 = sqlite3VdbeAddOp3(v,0x5b,iReg,uVar6,0);\n  }" else (compound_statement "{\n    iVar1 = sqlite3VdbeAddOp3(v,0x5b,iReg,uVar6,0);\n  }" { (expression_statement "iVar1 = sqlite3VdbeAddOp3(v,0x5b,iReg,uVar6,0);" (assignment_expression "iVar1 = sqlite3VdbeAddOp3(v,0x5b,iReg,uVar6,0)" identifier = (call_expression "sqlite3VdbeAddOp3(v,0x5b,iReg,uVar6,0)" identifier (argument_list "(v,0x5b,iReg,uVar6,0)" ( identifier , number_literal , identifier , identifier , number_literal )))) ;) }))) (expression_statement "sqlite3VdbeChangeP4(v,iVar1,__s,uVar6);" (call_expression "sqlite3VdbeChangeP4(v,iVar1,__s,uVar6)" identifier (argument_list "(v,iVar1,__s,uVar6)" ( identifier , identifier , identifier , identifier ))) ;) (return_statement "return;" return ;) })))
(translation_unit "void FUN_0013b9d0(long *param_1,long param_2,int param_3)\n\n{\n  int iVar1;\n  undefined4 uVar2;\n  size_t sVar3;\n  char *__s;\n  long lVar4;\n  char *pcVar5;\n  char *pcVar6;\n  uint uVar7;\n  \n  __s = *(char **)(param_2 + 0x28);\n  if (__s == (char *)0x0) {\n    lVar4 = *param_1;\n    __s = (char *)FUN_00119a00((long)(*(short *)(param_2 + 0x46) + 1));\n    if (__s == (char *)0x0) {\n      if ((*(uint *)(lVar4 + 0x60) & 0xffff00) != 0) {\n        return;\n      }\n      FUN_0011b860(lVar4);\n      return;\n    }\n    lVar4 = 0;\n    if (*(short *)(param_2 + 0x46) < 1) {\n      *__s = '\0';\n    }\n    else {\n      do {\n        iVar1 = (int)lVar4;\n        __s[lVar4] = *(char *)(lVar4 * 0x20 + *(long *)(param_2 + 8) + 0x19);\n        lVar4 = lVar4 + 1;\n      } while ((int)lVar4 < (int)*(short *)(param_2 + 0x46));\n      lVar4 = (long)(iVar1 + 1);\n      pcVar5 = __s + lVar4;\n      pcVar6 = pcVar5 + -lVar4;\n      do {\n        *pcVar5 = '\0';\n        if (pcVar5 == pcVar6) break;\n        pcVar5 = pcVar5 + -1;\n      } while (*pcVar5 == 'A');\n    }\n    *(char **)(param_2 + 0x28) = __s;\n  }\n  sVar3 = strlen(__s);\n  uVar7 = (uint)sVar3 & 0x3fffffff;\n  if ((sVar3 & 0x3fffffff) == 0) {\n    return;\n  }\n  if (param_3 == 0) {\n    uVar2 = 0xffffffff;\n  }\n  else {\n    uVar2 = FUN_0013b690(param_1,0x5b,param_3,uVar7,0);\n  }\n  FUN_00128780(param_1,uVar2,__s,uVar7);\n  return;\n}\n\n" (function_definition "void FUN_0013b9d0(long *param_1,long param_2,int param_3)\n\n{\n  int iVar1;\n  undefined4 uVar2;\n  size_t sVar3;\n  char *__s;\n  long lVar4;\n  char *pcVar5;\n  char *pcVar6;\n  uint uVar7;\n  \n  __s = *(char **)(param_2 + 0x28);\n  if (__s == (char *)0x0) {\n    lVar4 = *param_1;\n    __s = (char *)FUN_00119a00((long)(*(short *)(param_2 + 0x46) + 1));\n    if (__s == (char *)0x0) {\n      if ((*(uint *)(lVar4 + 0x60) & 0xffff00) != 0) {\n        return;\n      }\n      FUN_0011b860(lVar4);\n      return;\n    }\n    lVar4 = 0;\n    if (*(short *)(param_2 + 0x46) < 1) {\n      *__s = '\0';\n    }\n    else {\n      do {\n        iVar1 = (int)lVar4;\n        __s[lVar4] = *(char *)(lVar4 * 0x20 + *(long *)(param_2 + 8) + 0x19);\n        lVar4 = lVar4 + 1;\n      } while ((int)lVar4 < (int)*(short *)(param_2 + 0x46));\n      lVar4 = (long)(iVar1 + 1);\n      pcVar5 = __s + lVar4;\n      pcVar6 = pcVar5 + -lVar4;\n      do {\n        *pcVar5 = '\0';\n        if (pcVar5 == pcVar6) break;\n        pcVar5 = pcVar5 + -1;\n      } while (*pcVar5 == 'A');\n    }\n    *(char **)(param_2 + 0x28) = __s;\n  }\n  sVar3 = strlen(__s);\n  uVar7 = (uint)sVar3 & 0x3fffffff;\n  if ((sVar3 & 0x3fffffff) == 0) {\n    return;\n  }\n  if (param_3 == 0) {\n    uVar2 = 0xffffffff;\n  }\n  else {\n    uVar2 = FUN_0013b690(param_1,0x5b,param_3,uVar7,0);\n  }\n  FUN_00128780(param_1,uVar2,__s,uVar7);\n  return;\n}" primitive_type (function_declarator "FUN_0013b9d0(long *param_1,long param_2,int param_3)" identifier (parameter_list "(long *param_1,long param_2,int param_3)" ( (parameter_declaration "long *param_1" (sized_type_specifier "long" long) (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "long param_2" (sized_type_specifier "long" long) identifier) , (parameter_declaration "int param_3" primitive_type identifier) ))) (compound_statement "{\n  int iVar1;\n  undefined4 uVar2;\n  size_t sVar3;\n  char *__s;\n  long lVar4;\n  char *pcVar5;\n  char *pcVar6;\n  uint uVar7;\n  \n  __s = *(char **)(param_2 + 0x28);\n  if (__s == (char *)0x0) {\n    lVar4 = *param_1;\n    __s = (char *)FUN_00119a00((long)(*(short *)(param_2 + 0x46) + 1));\n    if (__s == (char *)0x0) {\n      if ((*(uint *)(lVar4 + 0x60) & 0xffff00) != 0) {\n        return;\n      }\n      FUN_0011b860(lVar4);\n      return;\n    }\n    lVar4 = 0;\n    if (*(short *)(param_2 + 0x46) < 1) {\n      *__s = '\0';\n    }\n    else {\n      do {\n        iVar1 = (int)lVar4;\n        __s[lVar4] = *(char *)(lVar4 * 0x20 + *(long *)(param_2 + 8) + 0x19);\n        lVar4 = lVar4 + 1;\n      } while ((int)lVar4 < (int)*(short *)(param_2 + 0x46));\n      lVar4 = (long)(iVar1 + 1);\n      pcVar5 = __s + lVar4;\n      pcVar6 = pcVar5 + -lVar4;\n      do {\n        *pcVar5 = '\0';\n        if (pcVar5 == pcVar6) break;\n        pcVar5 = pcVar5 + -1;\n      } while (*pcVar5 == 'A');\n    }\n    *(char **)(param_2 + 0x28) = __s;\n  }\n  sVar3 = strlen(__s);\n  uVar7 = (uint)sVar3 & 0x3fffffff;\n  if ((sVar3 & 0x3fffffff) == 0) {\n    return;\n  }\n  if (param_3 == 0) {\n    uVar2 = 0xffffffff;\n  }\n  else {\n    uVar2 = FUN_0013b690(param_1,0x5b,param_3,uVar7,0);\n  }\n  FUN_00128780(param_1,uVar2,__s,uVar7);\n  return;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "undefined4 uVar2;" type_identifier identifier ;) (declaration "size_t sVar3;" primitive_type identifier ;) (declaration "char *__s;" primitive_type (pointer_declarator "*__s" * identifier) ;) (declaration "long lVar4;" (sized_type_specifier "long" long) identifier ;) (declaration "char *pcVar5;" primitive_type (pointer_declarator "*pcVar5" * identifier) ;) (declaration "char *pcVar6;" primitive_type (pointer_declarator "*pcVar6" * identifier) ;) (declaration "uint uVar7;" type_identifier identifier ;) (expression_statement "__s = *(char **)(param_2 + 0x28);" (assignment_expression "__s = *(char **)(param_2 + 0x28)" identifier = (pointer_expression "*(char **)(param_2 + 0x28)" * (cast_expression "(char **)(param_2 + 0x28)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_2 + 0x28)" ( (binary_expression "param_2 + 0x28" identifier + number_literal) ))))) ;) (if_statement "if (__s == (char *)0x0) {\n    lVar4 = *param_1;\n    __s = (char *)FUN_00119a00((long)(*(short *)(param_2 + 0x46) + 1));\n    if (__s == (char *)0x0) {\n      if ((*(uint *)(lVar4 + 0x60) & 0xffff00) != 0) {\n        return;\n      }\n      FUN_0011b860(lVar4);\n      return;\n    }\n    lVar4 = 0;\n    if (*(short *)(param_2 + 0x46) < 1) {\n      *__s = '\0';\n    }\n    else {\n      do {\n        iVar1 = (int)lVar4;\n        __s[lVar4] = *(char *)(lVar4 * 0x20 + *(long *)(param_2 + 8) + 0x19);\n        lVar4 = lVar4 + 1;\n      } while ((int)lVar4 < (int)*(short *)(param_2 + 0x46));\n      lVar4 = (long)(iVar1 + 1);\n      pcVar5 = __s + lVar4;\n      pcVar6 = pcVar5 + -lVar4;\n      do {\n        *pcVar5 = '\0';\n        if (pcVar5 == pcVar6) break;\n        pcVar5 = pcVar5 + -1;\n      } while (*pcVar5 == 'A');\n    }\n    *(char **)(param_2 + 0x28) = __s;\n  }" if (parenthesized_expression "(__s == (char *)0x0)" ( (binary_expression "__s == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    lVar4 = *param_1;\n    __s = (char *)FUN_00119a00((long)(*(short *)(param_2 + 0x46) + 1));\n    if (__s == (char *)0x0) {\n      if ((*(uint *)(lVar4 + 0x60) & 0xffff00) != 0) {\n        return;\n      }\n      FUN_0011b860(lVar4);\n      return;\n    }\n    lVar4 = 0;\n    if (*(short *)(param_2 + 0x46) < 1) {\n      *__s = '\0';\n    }\n    else {\n      do {\n        iVar1 = (int)lVar4;\n        __s[lVar4] = *(char *)(lVar4 * 0x20 + *(long *)(param_2 + 8) + 0x19);\n        lVar4 = lVar4 + 1;\n      } while ((int)lVar4 < (int)*(short *)(param_2 + 0x46));\n      lVar4 = (long)(iVar1 + 1);\n      pcVar5 = __s + lVar4;\n      pcVar6 = pcVar5 + -lVar4;\n      do {\n        *pcVar5 = '\0';\n        if (pcVar5 == pcVar6) break;\n        pcVar5 = pcVar5 + -1;\n      } while (*pcVar5 == 'A');\n    }\n    *(char **)(param_2 + 0x28) = __s;\n  }" { (expression_statement "lVar4 = *param_1;" (assignment_expression "lVar4 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (expression_statement "__s = (char *)FUN_00119a00((long)(*(short *)(param_2 + 0x46) + 1));" (assignment_expression "__s = (char *)FUN_00119a00((long)(*(short *)(param_2 + 0x46) + 1))" identifier = (cast_expression "(char *)FUN_00119a00((long)(*(short *)(param_2 + 0x46) + 1))" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00119a00((long)(*(short *)(param_2 + 0x46) + 1))" identifier (argument_list "((long)(*(short *)(param_2 + 0x46) + 1))" ( (cast_expression "(long)(*(short *)(param_2 + 0x46) + 1)" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (parenthesized_expression "(*(short *)(param_2 + 0x46) + 1)" ( (binary_expression "*(short *)(param_2 + 0x46) + 1" (pointer_expression "*(short *)(param_2 + 0x46)" * (cast_expression "(short *)(param_2 + 0x46)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x46)" ( (binary_expression "param_2 + 0x46" identifier + number_literal) )))) + number_literal) ))) ))))) ;) (if_statement "if (__s == (char *)0x0) {\n      if ((*(uint *)(lVar4 + 0x60) & 0xffff00) != 0) {\n        return;\n      }\n      FUN_0011b860(lVar4);\n      return;\n    }" if (parenthesized_expression "(__s == (char *)0x0)" ( (binary_expression "__s == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      if ((*(uint *)(lVar4 + 0x60) & 0xffff00) != 0) {\n        return;\n      }\n      FUN_0011b860(lVar4);\n      return;\n    }" { (if_statement "if ((*(uint *)(lVar4 + 0x60) & 0xffff00) != 0) {\n        return;\n      }" if (parenthesized_expression "((*(uint *)(lVar4 + 0x60) & 0xffff00) != 0)" ( (binary_expression "(*(uint *)(lVar4 + 0x60) & 0xffff00) != 0" (parenthesized_expression "(*(uint *)(lVar4 + 0x60) & 0xffff00)" ( (binary_expression "*(uint *)(lVar4 + 0x60) & 0xffff00" (pointer_expression "*(uint *)(lVar4 + 0x60)" * (cast_expression "(uint *)(lVar4 + 0x60)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar4 + 0x60)" ( (binary_expression "lVar4 + 0x60" identifier + number_literal) )))) & number_literal) )) != number_literal) )) (compound_statement "{\n        return;\n      }" { (return_statement "return;" return ;) })) (expression_statement "FUN_0011b860(lVar4);" (call_expression "FUN_0011b860(lVar4)" identifier (argument_list "(lVar4)" ( identifier ))) ;) (return_statement "return;" return ;) })) (expression_statement "lVar4 = 0;" (assignment_expression "lVar4 = 0" identifier = number_literal) ;) (if_statement "if (*(short *)(param_2 + 0x46) < 1) {\n      *__s = '\0';\n    }\n    else {\n      do {\n        iVar1 = (int)lVar4;\n        __s[lVar4] = *(char *)(lVar4 * 0x20 + *(long *)(param_2 + 8) + 0x19);\n        lVar4 = lVar4 + 1;\n      } while ((int)lVar4 < (int)*(short *)(param_2 + 0x46));\n      lVar4 = (long)(iVar1 + 1);\n      pcVar5 = __s + lVar4;\n      pcVar6 = pcVar5 + -lVar4;\n      do {\n        *pcVar5 = '\0';\n        if (pcVar5 == pcVar6) break;\n        pcVar5 = pcVar5 + -1;\n      } while (*pcVar5 == 'A');\n    }" if (parenthesized_expression "(*(short *)(param_2 + 0x46) < 1)" ( (binary_expression "*(short *)(param_2 + 0x46) < 1" (pointer_expression "*(short *)(param_2 + 0x46)" * (cast_expression "(short *)(param_2 + 0x46)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x46)" ( (binary_expression "param_2 + 0x46" identifier + number_literal) )))) < number_literal) )) (compound_statement "{\n      *__s = '\0';\n    }" { (expression_statement "*__s = '\0';" (assignment_expression "*__s = '\0'" (pointer_expression "*__s" * identifier) = (char_literal "'\0'" ' escape_sequence ')) ;) }) (else_clause "else {\n      do {\n        iVar1 = (int)lVar4;\n        __s[lVar4] = *(char *)(lVar4 * 0x20 + *(long *)(param_2 + 8) + 0x19);\n        lVar4 = lVar4 + 1;\n      } while ((int)lVar4 < (int)*(short *)(param_2 + 0x46));\n      lVar4 = (long)(iVar1 + 1);\n      pcVar5 = __s + lVar4;\n      pcVar6 = pcVar5 + -lVar4;\n      do {\n        *pcVar5 = '\0';\n        if (pcVar5 == pcVar6) break;\n        pcVar5 = pcVar5 + -1;\n      } while (*pcVar5 == 'A');\n    }" else (compound_statement "{\n      do {\n        iVar1 = (int)lVar4;\n        __s[lVar4] = *(char *)(lVar4 * 0x20 + *(long *)(param_2 + 8) + 0x19);\n        lVar4 = lVar4 + 1;\n      } while ((int)lVar4 < (int)*(short *)(param_2 + 0x46));\n      lVar4 = (long)(iVar1 + 1);\n      pcVar5 = __s + lVar4;\n      pcVar6 = pcVar5 + -lVar4;\n      do {\n        *pcVar5 = '\0';\n        if (pcVar5 == pcVar6) break;\n        pcVar5 = pcVar5 + -1;\n      } while (*pcVar5 == 'A');\n    }" { (do_statement "do {\n        iVar1 = (int)lVar4;\n        __s[lVar4] = *(char *)(lVar4 * 0x20 + *(long *)(param_2 + 8) + 0x19);\n        lVar4 = lVar4 + 1;\n      } while ((int)lVar4 < (int)*(short *)(param_2 + 0x46));" do (compound_statement "{\n        iVar1 = (int)lVar4;\n        __s[lVar4] = *(char *)(lVar4 * 0x20 + *(long *)(param_2 + 8) + 0x19);\n        lVar4 = lVar4 + 1;\n      }" { (expression_statement "iVar1 = (int)lVar4;" (assignment_expression "iVar1 = (int)lVar4" identifier = (cast_expression "(int)lVar4" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "__s[lVar4] = *(char *)(lVar4 * 0x20 + *(long *)(param_2 + 8) + 0x19);" (assignment_expression "__s[lVar4] = *(char *)(lVar4 * 0x20 + *(long *)(param_2 + 8) + 0x19)" (subscript_expression "__s[lVar4]" identifier [ identifier ]) = (pointer_expression "*(char *)(lVar4 * 0x20 + *(long *)(param_2 + 8) + 0x19)" * (cast_expression "(char *)(lVar4 * 0x20 + *(long *)(param_2 + 8) + 0x19)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar4 * 0x20 + *(long *)(param_2 + 8) + 0x19)" ( (binary_expression "lVar4 * 0x20 + *(long *)(param_2 + 8) + 0x19" (binary_expression "lVar4 * 0x20 + *(long *)(param_2 + 8)" (binary_expression "lVar4 * 0x20" identifier * number_literal) + (pointer_expression "*(long *)(param_2 + 8)" * (cast_expression "(long *)(param_2 + 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 8)" ( (binary_expression "param_2 + 8" identifier + number_literal) ))))) + number_literal) ))))) ;) (expression_statement "lVar4 = lVar4 + 1;" (assignment_expression "lVar4 = lVar4 + 1" identifier = (binary_expression "lVar4 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "((int)lVar4 < (int)*(short *)(param_2 + 0x46))" ( (binary_expression "(int)lVar4 < (int)*(short *)(param_2 + 0x46)" (cast_expression "(int)lVar4" ( (type_descriptor "int" primitive_type) ) identifier) < (cast_expression "(int)*(short *)(param_2 + 0x46)" ( (type_descriptor "int" primitive_type) ) (pointer_expression "*(short *)(param_2 + 0x46)" * (cast_expression "(short *)(param_2 + 0x46)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x46)" ( (binary_expression "param_2 + 0x46" identifier + number_literal) )))))) )) ;) (expression_statement "lVar4 = (long)(iVar1 + 1);" (assignment_expression "lVar4 = (long)(iVar1 + 1)" identifier = (cast_expression "(long)(iVar1 + 1)" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (parenthesized_expression "(iVar1 + 1)" ( (binary_expression "iVar1 + 1" identifier + number_literal) )))) ;) (expression_statement "pcVar5 = __s + lVar4;" (assignment_expression "pcVar5 = __s + lVar4" identifier = (binary_expression "__s + lVar4" identifier + identifier)) ;) (expression_statement "pcVar6 = pcVar5 + -lVar4;" (assignment_expression "pcVar6 = pcVar5 + -lVar4" identifier = (binary_expression "pcVar5 + -lVar4" identifier + (unary_expression "-lVar4" - identifier))) ;) (do_statement "do {\n        *pcVar5 = '\0';\n        if (pcVar5 == pcVar6) break;\n        pcVar5 = pcVar5 + -1;\n      } while (*pcVar5 == 'A');" do (compound_statement "{\n        *pcVar5 = '\0';\n        if (pcVar5 == pcVar6) break;\n        pcVar5 = pcVar5 + -1;\n      }" { (expression_statement "*pcVar5 = '\0';" (assignment_expression "*pcVar5 = '\0'" (pointer_expression "*pcVar5" * identifier) = (char_literal "'\0'" ' escape_sequence ')) ;) (if_statement "if (pcVar5 == pcVar6) break;" if (parenthesized_expression "(pcVar5 == pcVar6)" ( (binary_expression "pcVar5 == pcVar6" identifier == identifier) )) (break_statement "break;" break ;)) (expression_statement "pcVar5 = pcVar5 + -1;" (assignment_expression "pcVar5 = pcVar5 + -1" identifier = (binary_expression "pcVar5 + -1" identifier + number_literal)) ;) }) while (parenthesized_expression "(*pcVar5 == 'A')" ( (binary_expression "*pcVar5 == 'A'" (pointer_expression "*pcVar5" * identifier) == (char_literal "'A'" ' character ')) )) ;) }))) (expression_statement "*(char **)(param_2 + 0x28) = __s;" (assignment_expression "*(char **)(param_2 + 0x28) = __s" (pointer_expression "*(char **)(param_2 + 0x28)" * (cast_expression "(char **)(param_2 + 0x28)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_2 + 0x28)" ( (binary_expression "param_2 + 0x28" identifier + number_literal) )))) = identifier) ;) })) (expression_statement "sVar3 = strlen(__s);" (assignment_expression "sVar3 = strlen(__s)" identifier = (call_expression "strlen(__s)" identifier (argument_list "(__s)" ( identifier )))) ;) (expression_statement "uVar7 = (uint)sVar3 & 0x3fffffff;" (assignment_expression "uVar7 = (uint)sVar3 & 0x3fffffff" identifier = (binary_expression "(uint)sVar3 & 0x3fffffff" (cast_expression "(uint)sVar3" ( (type_descriptor "uint" type_identifier) ) identifier) & number_literal)) ;) (if_statement "if ((sVar3 & 0x3fffffff) == 0) {\n    return;\n  }" if (parenthesized_expression "((sVar3 & 0x3fffffff) == 0)" ( (binary_expression "(sVar3 & 0x3fffffff) == 0" (parenthesized_expression "(sVar3 & 0x3fffffff)" ( (binary_expression "sVar3 & 0x3fffffff" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n    return;\n  }" { (return_statement "return;" return ;) })) (if_statement "if (param_3 == 0) {\n    uVar2 = 0xffffffff;\n  }\n  else {\n    uVar2 = FUN_0013b690(param_1,0x5b,param_3,uVar7,0);\n  }" if (parenthesized_expression "(param_3 == 0)" ( (binary_expression "param_3 == 0" identifier == number_literal) )) (compound_statement "{\n    uVar2 = 0xffffffff;\n  }" { (expression_statement "uVar2 = 0xffffffff;" (assignment_expression "uVar2 = 0xffffffff" identifier = number_literal) ;) }) (else_clause "else {\n    uVar2 = FUN_0013b690(param_1,0x5b,param_3,uVar7,0);\n  }" else (compound_statement "{\n    uVar2 = FUN_0013b690(param_1,0x5b,param_3,uVar7,0);\n  }" { (expression_statement "uVar2 = FUN_0013b690(param_1,0x5b,param_3,uVar7,0);" (assignment_expression "uVar2 = FUN_0013b690(param_1,0x5b,param_3,uVar7,0)" identifier = (call_expression "FUN_0013b690(param_1,0x5b,param_3,uVar7,0)" identifier (argument_list "(param_1,0x5b,param_3,uVar7,0)" ( identifier , number_literal , identifier , identifier , number_literal )))) ;) }))) (expression_statement "FUN_00128780(param_1,uVar2,__s,uVar7);" (call_expression "FUN_00128780(param_1,uVar2,__s,uVar7)" identifier (argument_list "(param_1,uVar2,__s,uVar7)" ( identifier , identifier , identifier , identifier ))) ;) (return_statement "return;" return ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration (sized_type_specifier long) (pointer_declarator * IDENT)) , (parameter_declaration (sized_type_specifier long) IDENT) , (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration (sized_type_specifier long) IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( (cast_expression ( (type_descriptor (sized_type_specifier long)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier short) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) ))) ))))) ;) (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 (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT) )) != LIT) )) (compound_statement { (return_statement return ;) })) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (return_statement return ;) })) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier short) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) < LIT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = (char_literal ' escape_sequence ')) ;) }) (else_clause else (compound_statement { (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ IDENT ]) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression (binary_expression IDENT * LIT) + (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < (cast_expression ( (type_descriptor TYPE) ) (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier short) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))))) )) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor (sized_type_specifier long)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (unary_expression - IDENT))) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = (char_literal ' escape_sequence ')) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) == (char_literal ' character ')) )) ;) }))) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) & LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) == LIT) )) (compound_statement { (return_statement return ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , LIT , IDENT , IDENT , LIT )))) ;) }))) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT , IDENT ))) ;) (return_statement return ;) })))
(function_definition "void FUN_0013b9d0(long *param_1,long param_2,int param_3)\n\n{\n  int iVar1;\n  undefined4 uVar2;\n  size_t sVar3;\n  char *__s;\n  long lVar4;\n  char *pcVar5;\n  char *pcVar6;\n  uint uVar7;\n  \n  __s = *(char **)(param_2 + 0x28);\n  if (__s == (char *)0x0) {\n    lVar4 = *param_1;\n    __s = (char *)FUN_00119a00((long)(*(short *)(param_2 + 0x46) + 1));\n    if (__s == (char *)0x0) {\n      if ((*(uint *)(lVar4 + 0x60) & 0xffff00) != 0) {\n        return;\n      }\n      FUN_0011b860(lVar4);\n      return;\n    }\n    lVar4 = 0;\n    if (*(short *)(param_2 + 0x46) < 1) {\n      *__s = '\0';\n    }\n    else {\n      do {\n        iVar1 = (int)lVar4;\n        __s[lVar4] = *(char *)(lVar4 * 0x20 + *(long *)(param_2 + 8) + 0x19);\n        lVar4 = lVar4 + 1;\n      } while ((int)lVar4 < (int)*(short *)(param_2 + 0x46));\n      lVar4 = (long)(iVar1 + 1);\n      pcVar5 = __s + lVar4;\n      pcVar6 = pcVar5 + -lVar4;\n      do {\n        *pcVar5 = '\0';\n        if (pcVar5 == pcVar6) break;\n        pcVar5 = pcVar5 + -1;\n      } while (*pcVar5 == 'A');\n    }\n    *(char **)(param_2 + 0x28) = __s;\n  }\n  sVar3 = strlen(__s);\n  uVar7 = (uint)sVar3 & 0x3fffffff;\n  if ((sVar3 & 0x3fffffff) == 0) {\n    return;\n  }\n  if (param_3 == 0) {\n    uVar2 = 0xffffffff;\n  }\n  else {\n    uVar2 = FUN_0013b690(param_1,0x5b,param_3,uVar7,0);\n  }\n  FUN_00128780(param_1,uVar2,__s,uVar7);\n  return;\n}" (primitive_type "void") (function_declarator "FUN_0013b9d0(long *param_1,long param_2,int param_3)" (identifier "FUN_0013b9d0") (parameter_list "(long *param_1,long param_2,int param_3)" (( "(") (parameter_declaration "long *param_1" (sized_type_specifier "long" (long "long")) (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) (, ",") (parameter_declaration "long param_2" (sized_type_specifier "long" (long "long")) (identifier "param_2")) (, ",") (parameter_declaration "int param_3" (primitive_type "int") (identifier "param_3")) () ")"))) (compound_statement "{\n  int iVar1;\n  undefined4 uVar2;\n  size_t sVar3;\n  char *__s;\n  long lVar4;\n  char *pcVar5;\n  char *pcVar6;\n  uint uVar7;\n  \n  __s = *(char **)(param_2 + 0x28);\n  if (__s == (char *)0x0) {\n    lVar4 = *param_1;\n    __s = (char *)FUN_00119a00((long)(*(short *)(param_2 + 0x46) + 1));\n    if (__s == (char *)0x0) {\n      if ((*(uint *)(lVar4 + 0x60) & 0xffff00) != 0) {\n        return;\n      }\n      FUN_0011b860(lVar4);\n      return;\n    }\n    lVar4 = 0;\n    if (*(short *)(param_2 + 0x46) < 1) {\n      *__s = '\0';\n    }\n    else {\n      do {\n        iVar1 = (int)lVar4;\n        __s[lVar4] = *(char *)(lVar4 * 0x20 + *(long *)(param_2 + 8) + 0x19);\n        lVar4 = lVar4 + 1;\n      } while ((int)lVar4 < (int)*(short *)(param_2 + 0x46));\n      lVar4 = (long)(iVar1 + 1);\n      pcVar5 = __s + lVar4;\n      pcVar6 = pcVar5 + -lVar4;\n      do {\n        *pcVar5 = '\0';\n        if (pcVar5 == pcVar6) break;\n        pcVar5 = pcVar5 + -1;\n      } while (*pcVar5 == 'A');\n    }\n    *(char **)(param_2 + 0x28) = __s;\n  }\n  sVar3 = strlen(__s);\n  uVar7 = (uint)sVar3 & 0x3fffffff;\n  if ((sVar3 & 0x3fffffff) == 0) {\n    return;\n  }\n  if (param_3 == 0) {\n    uVar2 = 0xffffffff;\n  }\n  else {\n    uVar2 = FUN_0013b690(param_1,0x5b,param_3,uVar7,0);\n  }\n  FUN_00128780(param_1,uVar2,__s,uVar7);\n  return;\n}" ({ "{") (declaration "int iVar1;" (primitive_type "int") (identifier "iVar1") (; ";")) (declaration "undefined4 uVar2;" (type_identifier "undefined4") (identifier "uVar2") (; ";")) (declaration "size_t sVar3;" (primitive_type "size_t") (identifier "sVar3") (; ";")) (declaration "char *__s;" (primitive_type "char") (pointer_declarator "*__s" (* "*") (identifier "__s")) (; ";")) (declaration "long lVar4;" (sized_type_specifier "long" (long "long")) (identifier "lVar4") (; ";")) (declaration "char *pcVar5;" (primitive_type "char") (pointer_declarator "*pcVar5" (* "*") (identifier "pcVar5")) (; ";")) (declaration "char *pcVar6;" (primitive_type "char") (pointer_declarator "*pcVar6" (* "*") (identifier "pcVar6")) (; ";")) (declaration "uint uVar7;" (type_identifier "uint") (identifier "uVar7") (; ";")) (expression_statement "__s = *(char **)(param_2 + 0x28);" (assignment_expression "__s = *(char **)(param_2 + 0x28)" (identifier "__s") (= "=") (pointer_expression "*(char **)(param_2 + 0x28)" (* "*") (cast_expression "(char **)(param_2 + 0x28)" (( "(") (type_descriptor "char **" (primitive_type "char") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_2 + 0x28)" (( "(") (binary_expression "param_2 + 0x28" (identifier "param_2") (+ "+") (number_literal "0x28")) () ")"))))) (; ";")) (if_statement "if (__s == (char *)0x0) {\n    lVar4 = *param_1;\n    __s = (char *)FUN_00119a00((long)(*(short *)(param_2 + 0x46) + 1));\n    if (__s == (char *)0x0) {\n      if ((*(uint *)(lVar4 + 0x60) & 0xffff00) != 0) {\n        return;\n      }\n      FUN_0011b860(lVar4);\n      return;\n    }\n    lVar4 = 0;\n    if (*(short *)(param_2 + 0x46) < 1) {\n      *__s = '\0';\n    }\n    else {\n      do {\n        iVar1 = (int)lVar4;\n        __s[lVar4] = *(char *)(lVar4 * 0x20 + *(long *)(param_2 + 8) + 0x19);\n        lVar4 = lVar4 + 1;\n      } while ((int)lVar4 < (int)*(short *)(param_2 + 0x46));\n      lVar4 = (long)(iVar1 + 1);\n      pcVar5 = __s + lVar4;\n      pcVar6 = pcVar5 + -lVar4;\n      do {\n        *pcVar5 = '\0';\n        if (pcVar5 == pcVar6) break;\n        pcVar5 = pcVar5 + -1;\n      } while (*pcVar5 == 'A');\n    }\n    *(char **)(param_2 + 0x28) = __s;\n  }" (if "if") (parenthesized_expression "(__s == (char *)0x0)" (( "(") (binary_expression "__s == (char *)0x0" (identifier "__s") (== "==") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n    lVar4 = *param_1;\n    __s = (char *)FUN_00119a00((long)(*(short *)(param_2 + 0x46) + 1));\n    if (__s == (char *)0x0) {\n      if ((*(uint *)(lVar4 + 0x60) & 0xffff00) != 0) {\n        return;\n      }\n      FUN_0011b860(lVar4);\n      return;\n    }\n    lVar4 = 0;\n    if (*(short *)(param_2 + 0x46) < 1) {\n      *__s = '\0';\n    }\n    else {\n      do {\n        iVar1 = (int)lVar4;\n        __s[lVar4] = *(char *)(lVar4 * 0x20 + *(long *)(param_2 + 8) + 0x19);\n        lVar4 = lVar4 + 1;\n      } while ((int)lVar4 < (int)*(short *)(param_2 + 0x46));\n      lVar4 = (long)(iVar1 + 1);\n      pcVar5 = __s + lVar4;\n      pcVar6 = pcVar5 + -lVar4;\n      do {\n        *pcVar5 = '\0';\n        if (pcVar5 == pcVar6) break;\n        pcVar5 = pcVar5 + -1;\n      } while (*pcVar5 == 'A');\n    }\n    *(char **)(param_2 + 0x28) = __s;\n  }" ({ "{") (expression_statement "lVar4 = *param_1;" (assignment_expression "lVar4 = *param_1" (identifier "lVar4") (= "=") (pointer_expression "*param_1" (* "*") (identifier "param_1"))) (; ";")) (expression_statement "__s = (char *)FUN_00119a00((long)(*(short *)(param_2 + 0x46) + 1));" (assignment_expression "__s = (char *)FUN_00119a00((long)(*(short *)(param_2 + 0x46) + 1))" (identifier "__s") (= "=") (cast_expression "(char *)FUN_00119a00((long)(*(short *)(param_2 + 0x46) + 1))" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_00119a00((long)(*(short *)(param_2 + 0x46) + 1))" (identifier "FUN_00119a00") (argument_list "((long)(*(short *)(param_2 + 0x46) + 1))" (( "(") (cast_expression "(long)(*(short *)(param_2 + 0x46) + 1)" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (parenthesized_expression "(*(short *)(param_2 + 0x46) + 1)" (( "(") (binary_expression "*(short *)(param_2 + 0x46) + 1" (pointer_expression "*(short *)(param_2 + 0x46)" (* "*") (cast_expression "(short *)(param_2 + 0x46)" (( "(") (type_descriptor "short *" (sized_type_specifier "short" (short "short")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x46)" (( "(") (binary_expression "param_2 + 0x46" (identifier "param_2") (+ "+") (number_literal "0x46")) () ")")))) (+ "+") (number_literal "1")) () ")"))) () ")"))))) (; ";")) (if_statement "if (__s == (char *)0x0) {\n      if ((*(uint *)(lVar4 + 0x60) & 0xffff00) != 0) {\n        return;\n      }\n      FUN_0011b860(lVar4);\n      return;\n    }" (if "if") (parenthesized_expression "(__s == (char *)0x0)" (( "(") (binary_expression "__s == (char *)0x0" (identifier "__s") (== "==") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n      if ((*(uint *)(lVar4 + 0x60) & 0xffff00) != 0) {\n        return;\n      }\n      FUN_0011b860(lVar4);\n      return;\n    }" ({ "{") (if_statement "if ((*(uint *)(lVar4 + 0x60) & 0xffff00) != 0) {\n        return;\n      }" (if "if") (parenthesized_expression "((*(uint *)(lVar4 + 0x60) & 0xffff00) != 0)" (( "(") (binary_expression "(*(uint *)(lVar4 + 0x60) & 0xffff00) != 0" (parenthesized_expression "(*(uint *)(lVar4 + 0x60) & 0xffff00)" (( "(") (binary_expression "*(uint *)(lVar4 + 0x60) & 0xffff00" (pointer_expression "*(uint *)(lVar4 + 0x60)" (* "*") (cast_expression "(uint *)(lVar4 + 0x60)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar4 + 0x60)" (( "(") (binary_expression "lVar4 + 0x60" (identifier "lVar4") (+ "+") (number_literal "0x60")) () ")")))) (& "&") (number_literal "0xffff00")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n        return;\n      }" ({ "{") (return_statement "return;" (return "return") (; ";")) (} "}"))) (expression_statement "FUN_0011b860(lVar4);" (call_expression "FUN_0011b860(lVar4)" (identifier "FUN_0011b860") (argument_list "(lVar4)" (( "(") (identifier "lVar4") () ")"))) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}"))) (expression_statement "lVar4 = 0;" (assignment_expression "lVar4 = 0" (identifier "lVar4") (= "=") (number_literal "0")) (; ";")) (if_statement "if (*(short *)(param_2 + 0x46) < 1) {\n      *__s = '\0';\n    }\n    else {\n      do {\n        iVar1 = (int)lVar4;\n        __s[lVar4] = *(char *)(lVar4 * 0x20 + *(long *)(param_2 + 8) + 0x19);\n        lVar4 = lVar4 + 1;\n      } while ((int)lVar4 < (int)*(short *)(param_2 + 0x46));\n      lVar4 = (long)(iVar1 + 1);\n      pcVar5 = __s + lVar4;\n      pcVar6 = pcVar5 + -lVar4;\n      do {\n        *pcVar5 = '\0';\n        if (pcVar5 == pcVar6) break;\n        pcVar5 = pcVar5 + -1;\n      } while (*pcVar5 == 'A');\n    }" (if "if") (parenthesized_expression "(*(short *)(param_2 + 0x46) < 1)" (( "(") (binary_expression "*(short *)(param_2 + 0x46) < 1" (pointer_expression "*(short *)(param_2 + 0x46)" (* "*") (cast_expression "(short *)(param_2 + 0x46)" (( "(") (type_descriptor "short *" (sized_type_specifier "short" (short "short")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x46)" (( "(") (binary_expression "param_2 + 0x46" (identifier "param_2") (+ "+") (number_literal "0x46")) () ")")))) (< "<") (number_literal "1")) () ")")) (compound_statement "{\n      *__s = '\0';\n    }" ({ "{") (expression_statement "*__s = '\0';" (assignment_expression "*__s = '\0'" (pointer_expression "*__s" (* "*") (identifier "__s")) (= "=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) (; ";")) (} "}")) (else_clause "else {\n      do {\n        iVar1 = (int)lVar4;\n        __s[lVar4] = *(char *)(lVar4 * 0x20 + *(long *)(param_2 + 8) + 0x19);\n        lVar4 = lVar4 + 1;\n      } while ((int)lVar4 < (int)*(short *)(param_2 + 0x46));\n      lVar4 = (long)(iVar1 + 1);\n      pcVar5 = __s + lVar4;\n      pcVar6 = pcVar5 + -lVar4;\n      do {\n        *pcVar5 = '\0';\n        if (pcVar5 == pcVar6) break;\n        pcVar5 = pcVar5 + -1;\n      } while (*pcVar5 == 'A');\n    }" (else "else") (compound_statement "{\n      do {\n        iVar1 = (int)lVar4;\n        __s[lVar4] = *(char *)(lVar4 * 0x20 + *(long *)(param_2 + 8) + 0x19);\n        lVar4 = lVar4 + 1;\n      } while ((int)lVar4 < (int)*(short *)(param_2 + 0x46));\n      lVar4 = (long)(iVar1 + 1);\n      pcVar5 = __s + lVar4;\n      pcVar6 = pcVar5 + -lVar4;\n      do {\n        *pcVar5 = '\0';\n        if (pcVar5 == pcVar6) break;\n        pcVar5 = pcVar5 + -1;\n      } while (*pcVar5 == 'A');\n    }" ({ "{") (do_statement "do {\n        iVar1 = (int)lVar4;\n        __s[lVar4] = *(char *)(lVar4 * 0x20 + *(long *)(param_2 + 8) + 0x19);\n        lVar4 = lVar4 + 1;\n      } while ((int)lVar4 < (int)*(short *)(param_2 + 0x46));" (do "do") (compound_statement "{\n        iVar1 = (int)lVar4;\n        __s[lVar4] = *(char *)(lVar4 * 0x20 + *(long *)(param_2 + 8) + 0x19);\n        lVar4 = lVar4 + 1;\n      }" ({ "{") (expression_statement "iVar1 = (int)lVar4;" (assignment_expression "iVar1 = (int)lVar4" (identifier "iVar1") (= "=") (cast_expression "(int)lVar4" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "lVar4"))) (; ";")) (expression_statement "__s[lVar4] = *(char *)(lVar4 * 0x20 + *(long *)(param_2 + 8) + 0x19);" (assignment_expression "__s[lVar4] = *(char *)(lVar4 * 0x20 + *(long *)(param_2 + 8) + 0x19)" (subscript_expression "__s[lVar4]" (identifier "__s") ([ "[") (identifier "lVar4") (] "]")) (= "=") (pointer_expression "*(char *)(lVar4 * 0x20 + *(long *)(param_2 + 8) + 0x19)" (* "*") (cast_expression "(char *)(lVar4 * 0x20 + *(long *)(param_2 + 8) + 0x19)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar4 * 0x20 + *(long *)(param_2 + 8) + 0x19)" (( "(") (binary_expression "lVar4 * 0x20 + *(long *)(param_2 + 8) + 0x19" (binary_expression "lVar4 * 0x20 + *(long *)(param_2 + 8)" (binary_expression "lVar4 * 0x20" (identifier "lVar4") (* "*") (number_literal "0x20")) (+ "+") (pointer_expression "*(long *)(param_2 + 8)" (* "*") (cast_expression "(long *)(param_2 + 8)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 8)" (( "(") (binary_expression "param_2 + 8" (identifier "param_2") (+ "+") (number_literal "8")) () ")"))))) (+ "+") (number_literal "0x19")) () ")"))))) (; ";")) (expression_statement "lVar4 = lVar4 + 1;" (assignment_expression "lVar4 = lVar4 + 1" (identifier "lVar4") (= "=") (binary_expression "lVar4 + 1" (identifier "lVar4") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "((int)lVar4 < (int)*(short *)(param_2 + 0x46))" (( "(") (binary_expression "(int)lVar4 < (int)*(short *)(param_2 + 0x46)" (cast_expression "(int)lVar4" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "lVar4")) (< "<") (cast_expression "(int)*(short *)(param_2 + 0x46)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (pointer_expression "*(short *)(param_2 + 0x46)" (* "*") (cast_expression "(short *)(param_2 + 0x46)" (( "(") (type_descriptor "short *" (sized_type_specifier "short" (short "short")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x46)" (( "(") (binary_expression "param_2 + 0x46" (identifier "param_2") (+ "+") (number_literal "0x46")) () ")")))))) () ")")) (; ";")) (expression_statement "lVar4 = (long)(iVar1 + 1);" (assignment_expression "lVar4 = (long)(iVar1 + 1)" (identifier "lVar4") (= "=") (cast_expression "(long)(iVar1 + 1)" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (parenthesized_expression "(iVar1 + 1)" (( "(") (binary_expression "iVar1 + 1" (identifier "iVar1") (+ "+") (number_literal "1")) () ")")))) (; ";")) (expression_statement "pcVar5 = __s + lVar4;" (assignment_expression "pcVar5 = __s + lVar4" (identifier "pcVar5") (= "=") (binary_expression "__s + lVar4" (identifier "__s") (+ "+") (identifier "lVar4"))) (; ";")) (expression_statement "pcVar6 = pcVar5 + -lVar4;" (assignment_expression "pcVar6 = pcVar5 + -lVar4" (identifier "pcVar6") (= "=") (binary_expression "pcVar5 + -lVar4" (identifier "pcVar5") (+ "+") (unary_expression "-lVar4" (- "-") (identifier "lVar4")))) (; ";")) (do_statement "do {\n        *pcVar5 = '\0';\n        if (pcVar5 == pcVar6) break;\n        pcVar5 = pcVar5 + -1;\n      } while (*pcVar5 == 'A');" (do "do") (compound_statement "{\n        *pcVar5 = '\0';\n        if (pcVar5 == pcVar6) break;\n        pcVar5 = pcVar5 + -1;\n      }" ({ "{") (expression_statement "*pcVar5 = '\0';" (assignment_expression "*pcVar5 = '\0'" (pointer_expression "*pcVar5" (* "*") (identifier "pcVar5")) (= "=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) (; ";")) (if_statement "if (pcVar5 == pcVar6) break;" (if "if") (parenthesized_expression "(pcVar5 == pcVar6)" (( "(") (binary_expression "pcVar5 == pcVar6" (identifier "pcVar5") (== "==") (identifier "pcVar6")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "pcVar5 = pcVar5 + -1;" (assignment_expression "pcVar5 = pcVar5 + -1" (identifier "pcVar5") (= "=") (binary_expression "pcVar5 + -1" (identifier "pcVar5") (+ "+") (number_literal "-1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(*pcVar5 == 'A')" (( "(") (binary_expression "*pcVar5 == 'A'" (pointer_expression "*pcVar5" (* "*") (identifier "pcVar5")) (== "==") (char_literal "'A'" (' "'") (character "A") (' "'"))) () ")")) (; ";")) (} "}")))) (expression_statement "*(char **)(param_2 + 0x28) = __s;" (assignment_expression "*(char **)(param_2 + 0x28) = __s" (pointer_expression "*(char **)(param_2 + 0x28)" (* "*") (cast_expression "(char **)(param_2 + 0x28)" (( "(") (type_descriptor "char **" (primitive_type "char") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_2 + 0x28)" (( "(") (binary_expression "param_2 + 0x28" (identifier "param_2") (+ "+") (number_literal "0x28")) () ")")))) (= "=") (identifier "__s")) (; ";")) (} "}"))) (expression_statement "sVar3 = strlen(__s);" (assignment_expression "sVar3 = strlen(__s)" (identifier "sVar3") (= "=") (call_expression "strlen(__s)" (identifier "strlen") (argument_list "(__s)" (( "(") (identifier "__s") () ")")))) (; ";")) (expression_statement "uVar7 = (uint)sVar3 & 0x3fffffff;" (assignment_expression "uVar7 = (uint)sVar3 & 0x3fffffff" (identifier "uVar7") (= "=") (binary_expression "(uint)sVar3 & 0x3fffffff" (cast_expression "(uint)sVar3" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "sVar3")) (& "&") (number_literal "0x3fffffff"))) (; ";")) (if_statement "if ((sVar3 & 0x3fffffff) == 0) {\n    return;\n  }" (if "if") (parenthesized_expression "((sVar3 & 0x3fffffff) == 0)" (( "(") (binary_expression "(sVar3 & 0x3fffffff) == 0" (parenthesized_expression "(sVar3 & 0x3fffffff)" (( "(") (binary_expression "sVar3 & 0x3fffffff" (identifier "sVar3") (& "&") (number_literal "0x3fffffff")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    return;\n  }" ({ "{") (return_statement "return;" (return "return") (; ";")) (} "}"))) (if_statement "if (param_3 == 0) {\n    uVar2 = 0xffffffff;\n  }\n  else {\n    uVar2 = FUN_0013b690(param_1,0x5b,param_3,uVar7,0);\n  }" (if "if") (parenthesized_expression "(param_3 == 0)" (( "(") (binary_expression "param_3 == 0" (identifier "param_3") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    uVar2 = 0xffffffff;\n  }" ({ "{") (expression_statement "uVar2 = 0xffffffff;" (assignment_expression "uVar2 = 0xffffffff" (identifier "uVar2") (= "=") (number_literal "0xffffffff")) (; ";")) (} "}")) (else_clause "else {\n    uVar2 = FUN_0013b690(param_1,0x5b,param_3,uVar7,0);\n  }" (else "else") (compound_statement "{\n    uVar2 = FUN_0013b690(param_1,0x5b,param_3,uVar7,0);\n  }" ({ "{") (expression_statement "uVar2 = FUN_0013b690(param_1,0x5b,param_3,uVar7,0);" (assignment_expression "uVar2 = FUN_0013b690(param_1,0x5b,param_3,uVar7,0)" (identifier "uVar2") (= "=") (call_expression "FUN_0013b690(param_1,0x5b,param_3,uVar7,0)" (identifier "FUN_0013b690") (argument_list "(param_1,0x5b,param_3,uVar7,0)" (( "(") (identifier "param_1") (, ",") (number_literal "0x5b") (, ",") (identifier "param_3") (, ",") (identifier "uVar7") (, ",") (number_literal "0") () ")")))) (; ";")) (} "}")))) (expression_statement "FUN_00128780(param_1,uVar2,__s,uVar7);" (call_expression "FUN_00128780(param_1,uVar2,__s,uVar7)" (identifier "FUN_00128780") (argument_list "(param_1,uVar2,__s,uVar7)" (( "(") (identifier "param_1") (, ",") (identifier "uVar2") (, ",") (identifier "__s") (, ",") (identifier "uVar7") () ")"))) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}")))

void function_1(type_1 *v,type_2 *pTab,int var_11)

{
  type_3 *db;
  int var_6;
  size_t var_10;
  char *var_1;
  long var_5;
  char *var_7;
  char *var_8;
  type_4 var_3;
  
  var_1 = pTab->zColAff;
  if (var_1 == (char *)0x0) {
    db = v->db;
    var_1 = (char *)var_2((long)(pTab->nCol + 1));
    if (var_1 == (char *)0x0) {
      var_3._0_1_ = db->temp_store;
      var_3._1_1_ = db->mallocFailed;
      var_3._2_1_ = db->bBenignMalloc;
      var_3._3_1_ = db->dfltLockMode;
      if ((var_3 & 0xffff00) != 0) {
        return;
      }
      var_4(db);
      return;
    }
    var_5 = 0;
    if (pTab->nCol < 1) {
      *var_1 = '\0';
    }
    else {
      do {
        var_6 = (int)var_5;
        var_1[var_5] = pTab->aCol[var_5].affinity;
        var_5 = var_5 + 1;
      } while ((int)var_5 < (int)pTab->nCol);
      var_5 = (long)(var_6 + 1);
      var_7 = var_1 + var_5;
      var_8 = var_7 + -var_5;
      do {
        *var_7 = '\0';
        if (var_7 == var_8) break;
        var_7 = var_7 + -1;
      } while (*var_7 == 'A');
    }
    pTab->zColAff = var_1;
  }
  var_10 = var_9(var_1);
  var_3 = (type_4)var_10 & 0x3fffffff;
  if ((var_10 & 0x3fffffff) == 0) {
    return;
  }
  if (var_11 == 0) {
    var_6 = -1;
  }
  else {
    var_6 = var_12(v,0x5b,var_11,var_3,0);
  }
  var_13(v,var_6,var_1,var_3);
  return;
}


(translation_unit (function_definition type: (primitive_type) declarator: (function_declarator declarator: (identifier) parameters: (parameter_list (parameter_declaration type: (sized_type_specifier) declarator: (pointer_declarator declarator: (identifier))) (parameter_declaration type: (sized_type_specifier) declarator: (identifier)) (parameter_declaration type: (primitive_type) declarator: (identifier)))) body: (compound_statement (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (sized_type_specifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (identifier)) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (call_expression function: (identifier) arguments: (argument_list (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) right: (number_literal))) consequence: (compound_statement (return_statement))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier)))) (return_statement))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (char_literal (escape_sequence))))) alternative: (else_clause (compound_statement (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (identifier)) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) condition: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (pointer_expression argument: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (unary_expression argument: (identifier))))) (do_statement body: (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (char_literal (escape_sequence)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (break_statement)) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (char_literal (character)))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal))) consequence: (compound_statement (return_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)))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (number_literal) (identifier) (identifier) (number_literal)))))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier) (identifier) (identifier)))) (return_statement))))

void MASKED(long *param_1,long param_2,int param_3)

{
  int iVar1;
  undefined4 uVar2;
  size_t sVar3;
  char *__s;
  long lVar4;
  char *pcVar5;
  char *pcVar6;
  uint uVar7;
  
  __s = *(char **)(param_2 + 0x28);
  if (__s == (char *)0x0) {
    lVar4 = *param_1;
    __s = (char *)FUN_00119a00((long)(*(short *)(param_2 + 0x46) + 1));
    if (__s == (char *)0x0) {
      if ((*(uint *)(lVar4 + 0x60) & 0xffff00) != 0) {
        return;
      }
      FUN_0011b860(lVar4);
      return;
    }
    lVar4 = 0;
    if (*(short *)(param_2 + 0x46) < 1) {
      *__s = '\0';
    }
    else {
      do {
        iVar1 = (int)lVar4;
        __s[lVar4] = *(char *)(lVar4 * 0x20 + *(long *)(param_2 + 8) + 0x19);
        lVar4 = lVar4 + 1;
      } while ((int)lVar4 < (int)*(short *)(param_2 + 0x46));
      lVar4 = (long)(iVar1 + 1);
      pcVar5 = __s + lVar4;
      pcVar6 = pcVar5 + -lVar4;
      do {
        *pcVar5 = '\0';
        if (pcVar5 == pcVar6) break;
        pcVar5 = pcVar5 + -1;
      } while (*pcVar5 == 'A');
    }
    *(char **)(param_2 + 0x28) = __s;
  }
  sVar3 = strlen(__s);
  uVar7 = (uint)sVar3 & 0x3fffffff;
  if ((sVar3 & 0x3fffffff) == 0) {
    return;
  }
  if (param_3 == 0) {
    uVar2 = 0xffffffff;
  }
  else {
    uVar2 = FUN_0013b690(param_1,0x5b,param_3,uVar7,0);
  }
  FUN_00128780(param_1,uVar2,__s,uVar7);
  return;
}

