
void __regparm3 updateRangeAffinityStr(Expr *pRight,int n,char *zAff)

{
  char cVar1;
  Expr *pExpr;
  int iVar2;
  int i;
  
  if (n != 0) {
    i = 0;
    do {
      pExpr = sqlite3VectorFieldSubexpr(pRight,i);
      cVar1 = sqlite3CompareAffinity(pExpr,zAff[i]);
      if ((cVar1 == 'A') || (zAff[i] == 'A')) {
LAB_0004b494:
        zAff[i] = 'A';
      }
      else {
        iVar2 = sqlite3ExprNeedsNoAffinityChange(pExpr,zAff[i]);
        if (iVar2 != 0) goto LAB_0004b494;
      }
      i = i + 1;
    } while (n != i);
  }
  return;
}



void __regparm3 FUN_0004b450(undefined4 param_1,int param_2,int param_3)

{
  char cVar1;
  int iVar2;
  int iVar3;
  
  if (param_2 != 0) {
    iVar3 = 0;
    do {
      FUN_000394d0();
      cVar1 = FUN_0003eaa0();
      if ((cVar1 == 'A') || (*(char *)(param_3 + iVar3) == 'A')) {
LAB_0004b494:
        *(undefined1 *)(param_3 + iVar3) = 0x41;
      }
      else {
        iVar2 = FUN_0004b3c0();
        if (iVar2 != 0) goto LAB_0004b494;
      }
      iVar3 = iVar3 + 1;
    } while (param_2 != iVar3);
  }
  return;
}


PUSH EBP
PUSH EDI
PUSH ESI
PUSH EBX
SUB ESP,0x1c
TEST EDX,EDX
JZ 0x0004b4a1
MOV dword ptr [ESP + 0xc],EDX
MOV ESI,ECX
MOV EBP,EAX
XOR EBX,EBX
LEA ESI,[ESI]
MOV EDX,EBX
MOV EAX,EBP
CALL 0x000394d0
MOVSX EDX,byte ptr [ESI + EBX*0x1]
MOV EDI,EAX
CALL 0x0003eaa0
CMP AL,0x41
JZ 0x0004b494
MOVSX EDX,byte ptr [ESI + EBX*0x1]
CMP DL,0x41
JZ 0x0004b494
MOV EAX,EDI
CALL 0x0004b3c0
TEST EAX,EAX
JZ 0x0004b498
MOV byte ptr [ESI + EBX*0x1],0x41
ADD EBX,0x1
CMP dword ptr [ESP + 0xc],EBX
JNZ 0x0004b468
ADD ESP,0x1c
POP EBX
POP ESI
POP EDI
POP EBP
RET
(translation_unit "void __regparm3 FUN_0004b450(undefined4 param_1,int param_2,int param_3)\n\n{\n  char cVar1;\n  int iVar2;\n  int iVar3;\n  \n  if (param_2 != 0) {\n    iVar3 = 0;\n    do {\n      FUN_000394d0();\n      cVar1 = FUN_0003eaa0();\n      if ((cVar1 == 'A') || (*(char *)(param_3 + iVar3) == 'A')) {\nLAB_0004b494:\n        *(undefined1 *)(param_3 + iVar3) = 0x41;\n      }\n      else {\n        iVar2 = FUN_0004b3c0();\n        if (iVar2 != 0) goto LAB_0004b494;\n      }\n      iVar3 = iVar3 + 1;\n    } while (param_2 != iVar3);\n  }\n  return;\n}\n\n" (function_definition "void __regparm3 FUN_0004b450(undefined4 param_1,int param_2,int param_3)\n\n{\n  char cVar1;\n  int iVar2;\n  int iVar3;\n  \n  if (param_2 != 0) {\n    iVar3 = 0;\n    do {\n      FUN_000394d0();\n      cVar1 = FUN_0003eaa0();\n      if ((cVar1 == 'A') || (*(char *)(param_3 + iVar3) == 'A')) {\nLAB_0004b494:\n        *(undefined1 *)(param_3 + iVar3) = 0x41;\n      }\n      else {\n        iVar2 = FUN_0004b3c0();\n        if (iVar2 != 0) goto LAB_0004b494;\n      }\n      iVar3 = iVar3 + 1;\n    } while (param_2 != iVar3);\n  }\n  return;\n}" primitive_type (ERROR "__regparm3" identifier) (function_declarator "FUN_0004b450(undefined4 param_1,int param_2,int param_3)" identifier (parameter_list "(undefined4 param_1,int param_2,int param_3)" ( (parameter_declaration "undefined4 param_1" type_identifier identifier) , (parameter_declaration "int param_2" primitive_type identifier) , (parameter_declaration "int param_3" primitive_type identifier) ))) (compound_statement "{\n  char cVar1;\n  int iVar2;\n  int iVar3;\n  \n  if (param_2 != 0) {\n    iVar3 = 0;\n    do {\n      FUN_000394d0();\n      cVar1 = FUN_0003eaa0();\n      if ((cVar1 == 'A') || (*(char *)(param_3 + iVar3) == 'A')) {\nLAB_0004b494:\n        *(undefined1 *)(param_3 + iVar3) = 0x41;\n      }\n      else {\n        iVar2 = FUN_0004b3c0();\n        if (iVar2 != 0) goto LAB_0004b494;\n      }\n      iVar3 = iVar3 + 1;\n    } while (param_2 != iVar3);\n  }\n  return;\n}" { (declaration "char cVar1;" primitive_type identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (if_statement "if (param_2 != 0) {\n    iVar3 = 0;\n    do {\n      FUN_000394d0();\n      cVar1 = FUN_0003eaa0();\n      if ((cVar1 == 'A') || (*(char *)(param_3 + iVar3) == 'A')) {\nLAB_0004b494:\n        *(undefined1 *)(param_3 + iVar3) = 0x41;\n      }\n      else {\n        iVar2 = FUN_0004b3c0();\n        if (iVar2 != 0) goto LAB_0004b494;\n      }\n      iVar3 = iVar3 + 1;\n    } while (param_2 != iVar3);\n  }" if (parenthesized_expression "(param_2 != 0)" ( (binary_expression "param_2 != 0" identifier != number_literal) )) (compound_statement "{\n    iVar3 = 0;\n    do {\n      FUN_000394d0();\n      cVar1 = FUN_0003eaa0();\n      if ((cVar1 == 'A') || (*(char *)(param_3 + iVar3) == 'A')) {\nLAB_0004b494:\n        *(undefined1 *)(param_3 + iVar3) = 0x41;\n      }\n      else {\n        iVar2 = FUN_0004b3c0();\n        if (iVar2 != 0) goto LAB_0004b494;\n      }\n      iVar3 = iVar3 + 1;\n    } while (param_2 != iVar3);\n  }" { (expression_statement "iVar3 = 0;" (assignment_expression "iVar3 = 0" identifier = number_literal) ;) (do_statement "do {\n      FUN_000394d0();\n      cVar1 = FUN_0003eaa0();\n      if ((cVar1 == 'A') || (*(char *)(param_3 + iVar3) == 'A')) {\nLAB_0004b494:\n        *(undefined1 *)(param_3 + iVar3) = 0x41;\n      }\n      else {\n        iVar2 = FUN_0004b3c0();\n        if (iVar2 != 0) goto LAB_0004b494;\n      }\n      iVar3 = iVar3 + 1;\n    } while (param_2 != iVar3);" do (compound_statement "{\n      FUN_000394d0();\n      cVar1 = FUN_0003eaa0();\n      if ((cVar1 == 'A') || (*(char *)(param_3 + iVar3) == 'A')) {\nLAB_0004b494:\n        *(undefined1 *)(param_3 + iVar3) = 0x41;\n      }\n      else {\n        iVar2 = FUN_0004b3c0();\n        if (iVar2 != 0) goto LAB_0004b494;\n      }\n      iVar3 = iVar3 + 1;\n    }" { (expression_statement "FUN_000394d0();" (call_expression "FUN_000394d0()" identifier (argument_list "()" ( ))) ;) (expression_statement "cVar1 = FUN_0003eaa0();" (assignment_expression "cVar1 = FUN_0003eaa0()" identifier = (call_expression "FUN_0003eaa0()" identifier (argument_list "()" ( )))) ;) (if_statement "if ((cVar1 == 'A') || (*(char *)(param_3 + iVar3) == 'A')) {\nLAB_0004b494:\n        *(undefined1 *)(param_3 + iVar3) = 0x41;\n      }\n      else {\n        iVar2 = FUN_0004b3c0();\n        if (iVar2 != 0) goto LAB_0004b494;\n      }" if (parenthesized_expression "((cVar1 == 'A') || (*(char *)(param_3 + iVar3) == 'A'))" ( (binary_expression "(cVar1 == 'A') || (*(char *)(param_3 + iVar3) == 'A')" (parenthesized_expression "(cVar1 == 'A')" ( (binary_expression "cVar1 == 'A'" identifier == (char_literal "'A'" ' character ')) )) || (parenthesized_expression "(*(char *)(param_3 + iVar3) == 'A')" ( (binary_expression "*(char *)(param_3 + iVar3) == 'A'" (pointer_expression "*(char *)(param_3 + iVar3)" * (cast_expression "(char *)(param_3 + iVar3)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + iVar3)" ( (binary_expression "param_3 + iVar3" identifier + identifier) )))) == (char_literal "'A'" ' character ')) ))) )) (compound_statement "{\nLAB_0004b494:\n        *(undefined1 *)(param_3 + iVar3) = 0x41;\n      }" { (labeled_statement "LAB_0004b494:\n        *(undefined1 *)(param_3 + iVar3) = 0x41;" statement_identifier : (expression_statement "*(undefined1 *)(param_3 + iVar3) = 0x41;" (assignment_expression "*(undefined1 *)(param_3 + iVar3) = 0x41" (pointer_expression "*(undefined1 *)(param_3 + iVar3)" * (cast_expression "(undefined1 *)(param_3 + iVar3)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + iVar3)" ( (binary_expression "param_3 + iVar3" identifier + identifier) )))) = number_literal) ;)) }) (else_clause "else {\n        iVar2 = FUN_0004b3c0();\n        if (iVar2 != 0) goto LAB_0004b494;\n      }" else (compound_statement "{\n        iVar2 = FUN_0004b3c0();\n        if (iVar2 != 0) goto LAB_0004b494;\n      }" { (expression_statement "iVar2 = FUN_0004b3c0();" (assignment_expression "iVar2 = FUN_0004b3c0()" identifier = (call_expression "FUN_0004b3c0()" identifier (argument_list "()" ( )))) ;) (if_statement "if (iVar2 != 0) goto LAB_0004b494;" if (parenthesized_expression "(iVar2 != 0)" ( (binary_expression "iVar2 != 0" identifier != number_literal) )) (goto_statement "goto LAB_0004b494;" goto statement_identifier ;)) }))) (expression_statement "iVar3 = iVar3 + 1;" (assignment_expression "iVar3 = iVar3 + 1" identifier = (binary_expression "iVar3 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(param_2 != iVar3)" ( (binary_expression "param_2 != iVar3" identifier != identifier) )) ;) })) (return_statement "return;" return ;) })))
(translation_unit "void __regparm3 updateRangeAffinityStr(Expr *pRight,int n,char *zAff)\n\n{\n  char cVar1;\n  Expr *pExpr;\n  int iVar2;\n  int i;\n  \n  if (n != 0) {\n    i = 0;\n    do {\n      pExpr = sqlite3VectorFieldSubexpr(pRight,i);\n      cVar1 = sqlite3CompareAffinity(pExpr,zAff[i]);\n      if ((cVar1 == 'A') || (zAff[i] == 'A')) {\nLAB_0004b494:\n        zAff[i] = 'A';\n      }\n      else {\n        iVar2 = sqlite3ExprNeedsNoAffinityChange(pExpr,zAff[i]);\n        if (iVar2 != 0) goto LAB_0004b494;\n      }\n      i = i + 1;\n    } while (n != i);\n  }\n  return;\n}\n\n" (function_definition "void __regparm3 updateRangeAffinityStr(Expr *pRight,int n,char *zAff)\n\n{\n  char cVar1;\n  Expr *pExpr;\n  int iVar2;\n  int i;\n  \n  if (n != 0) {\n    i = 0;\n    do {\n      pExpr = sqlite3VectorFieldSubexpr(pRight,i);\n      cVar1 = sqlite3CompareAffinity(pExpr,zAff[i]);\n      if ((cVar1 == 'A') || (zAff[i] == 'A')) {\nLAB_0004b494:\n        zAff[i] = 'A';\n      }\n      else {\n        iVar2 = sqlite3ExprNeedsNoAffinityChange(pExpr,zAff[i]);\n        if (iVar2 != 0) goto LAB_0004b494;\n      }\n      i = i + 1;\n    } while (n != i);\n  }\n  return;\n}" primitive_type (ERROR "__regparm3" identifier) (function_declarator "updateRangeAffinityStr(Expr *pRight,int n,char *zAff)" identifier (parameter_list "(Expr *pRight,int n,char *zAff)" ( (parameter_declaration "Expr *pRight" type_identifier (pointer_declarator "*pRight" * identifier)) , (parameter_declaration "int n" primitive_type identifier) , (parameter_declaration "char *zAff" primitive_type (pointer_declarator "*zAff" * identifier)) ))) (compound_statement "{\n  char cVar1;\n  Expr *pExpr;\n  int iVar2;\n  int i;\n  \n  if (n != 0) {\n    i = 0;\n    do {\n      pExpr = sqlite3VectorFieldSubexpr(pRight,i);\n      cVar1 = sqlite3CompareAffinity(pExpr,zAff[i]);\n      if ((cVar1 == 'A') || (zAff[i] == 'A')) {\nLAB_0004b494:\n        zAff[i] = 'A';\n      }\n      else {\n        iVar2 = sqlite3ExprNeedsNoAffinityChange(pExpr,zAff[i]);\n        if (iVar2 != 0) goto LAB_0004b494;\n      }\n      i = i + 1;\n    } while (n != i);\n  }\n  return;\n}" { (declaration "char cVar1;" primitive_type identifier ;) (declaration "Expr *pExpr;" type_identifier (pointer_declarator "*pExpr" * identifier) ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "int i;" primitive_type identifier ;) (if_statement "if (n != 0) {\n    i = 0;\n    do {\n      pExpr = sqlite3VectorFieldSubexpr(pRight,i);\n      cVar1 = sqlite3CompareAffinity(pExpr,zAff[i]);\n      if ((cVar1 == 'A') || (zAff[i] == 'A')) {\nLAB_0004b494:\n        zAff[i] = 'A';\n      }\n      else {\n        iVar2 = sqlite3ExprNeedsNoAffinityChange(pExpr,zAff[i]);\n        if (iVar2 != 0) goto LAB_0004b494;\n      }\n      i = i + 1;\n    } while (n != i);\n  }" if (parenthesized_expression "(n != 0)" ( (binary_expression "n != 0" identifier != number_literal) )) (compound_statement "{\n    i = 0;\n    do {\n      pExpr = sqlite3VectorFieldSubexpr(pRight,i);\n      cVar1 = sqlite3CompareAffinity(pExpr,zAff[i]);\n      if ((cVar1 == 'A') || (zAff[i] == 'A')) {\nLAB_0004b494:\n        zAff[i] = 'A';\n      }\n      else {\n        iVar2 = sqlite3ExprNeedsNoAffinityChange(pExpr,zAff[i]);\n        if (iVar2 != 0) goto LAB_0004b494;\n      }\n      i = i + 1;\n    } while (n != i);\n  }" { (expression_statement "i = 0;" (assignment_expression "i = 0" identifier = number_literal) ;) (do_statement "do {\n      pExpr = sqlite3VectorFieldSubexpr(pRight,i);\n      cVar1 = sqlite3CompareAffinity(pExpr,zAff[i]);\n      if ((cVar1 == 'A') || (zAff[i] == 'A')) {\nLAB_0004b494:\n        zAff[i] = 'A';\n      }\n      else {\n        iVar2 = sqlite3ExprNeedsNoAffinityChange(pExpr,zAff[i]);\n        if (iVar2 != 0) goto LAB_0004b494;\n      }\n      i = i + 1;\n    } while (n != i);" do (compound_statement "{\n      pExpr = sqlite3VectorFieldSubexpr(pRight,i);\n      cVar1 = sqlite3CompareAffinity(pExpr,zAff[i]);\n      if ((cVar1 == 'A') || (zAff[i] == 'A')) {\nLAB_0004b494:\n        zAff[i] = 'A';\n      }\n      else {\n        iVar2 = sqlite3ExprNeedsNoAffinityChange(pExpr,zAff[i]);\n        if (iVar2 != 0) goto LAB_0004b494;\n      }\n      i = i + 1;\n    }" { (expression_statement "pExpr = sqlite3VectorFieldSubexpr(pRight,i);" (assignment_expression "pExpr = sqlite3VectorFieldSubexpr(pRight,i)" identifier = (call_expression "sqlite3VectorFieldSubexpr(pRight,i)" identifier (argument_list "(pRight,i)" ( identifier , identifier )))) ;) (expression_statement "cVar1 = sqlite3CompareAffinity(pExpr,zAff[i]);" (assignment_expression "cVar1 = sqlite3CompareAffinity(pExpr,zAff[i])" identifier = (call_expression "sqlite3CompareAffinity(pExpr,zAff[i])" identifier (argument_list "(pExpr,zAff[i])" ( identifier , (subscript_expression "zAff[i]" identifier [ identifier ]) )))) ;) (if_statement "if ((cVar1 == 'A') || (zAff[i] == 'A')) {\nLAB_0004b494:\n        zAff[i] = 'A';\n      }\n      else {\n        iVar2 = sqlite3ExprNeedsNoAffinityChange(pExpr,zAff[i]);\n        if (iVar2 != 0) goto LAB_0004b494;\n      }" if (parenthesized_expression "((cVar1 == 'A') || (zAff[i] == 'A'))" ( (binary_expression "(cVar1 == 'A') || (zAff[i] == 'A')" (parenthesized_expression "(cVar1 == 'A')" ( (binary_expression "cVar1 == 'A'" identifier == (char_literal "'A'" ' character ')) )) || (parenthesized_expression "(zAff[i] == 'A')" ( (binary_expression "zAff[i] == 'A'" (subscript_expression "zAff[i]" identifier [ identifier ]) == (char_literal "'A'" ' character ')) ))) )) (compound_statement "{\nLAB_0004b494:\n        zAff[i] = 'A';\n      }" { (labeled_statement "LAB_0004b494:\n        zAff[i] = 'A';" statement_identifier : (expression_statement "zAff[i] = 'A';" (assignment_expression "zAff[i] = 'A'" (subscript_expression "zAff[i]" identifier [ identifier ]) = (char_literal "'A'" ' character ')) ;)) }) (else_clause "else {\n        iVar2 = sqlite3ExprNeedsNoAffinityChange(pExpr,zAff[i]);\n        if (iVar2 != 0) goto LAB_0004b494;\n      }" else (compound_statement "{\n        iVar2 = sqlite3ExprNeedsNoAffinityChange(pExpr,zAff[i]);\n        if (iVar2 != 0) goto LAB_0004b494;\n      }" { (expression_statement "iVar2 = sqlite3ExprNeedsNoAffinityChange(pExpr,zAff[i]);" (assignment_expression "iVar2 = sqlite3ExprNeedsNoAffinityChange(pExpr,zAff[i])" identifier = (call_expression "sqlite3ExprNeedsNoAffinityChange(pExpr,zAff[i])" identifier (argument_list "(pExpr,zAff[i])" ( identifier , (subscript_expression "zAff[i]" identifier [ identifier ]) )))) ;) (if_statement "if (iVar2 != 0) goto LAB_0004b494;" if (parenthesized_expression "(iVar2 != 0)" ( (binary_expression "iVar2 != 0" identifier != number_literal) )) (goto_statement "goto LAB_0004b494;" goto statement_identifier ;)) }))) (expression_statement "i = i + 1;" (assignment_expression "i = i + 1" identifier = (binary_expression "i + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(n != i)" ( (binary_expression "n != i" identifier != identifier) )) ;) })) (return_statement "return;" return ;) })))
(translation_unit "void __regparm3 FUN_0004b450(undefined4 param_1,int param_2,int param_3)\n\n{\n  char cVar1;\n  int iVar2;\n  int iVar3;\n  \n  if (param_2 != 0) {\n    iVar3 = 0;\n    do {\n      FUN_000394d0();\n      cVar1 = FUN_0003eaa0();\n      if ((cVar1 == 'A') || (*(char *)(param_3 + iVar3) == 'A')) {\nLAB_0004b494:\n        *(undefined1 *)(param_3 + iVar3) = 0x41;\n      }\n      else {\n        iVar2 = FUN_0004b3c0();\n        if (iVar2 != 0) goto LAB_0004b494;\n      }\n      iVar3 = iVar3 + 1;\n    } while (param_2 != iVar3);\n  }\n  return;\n}\n\n" (function_definition "void __regparm3 FUN_0004b450(undefined4 param_1,int param_2,int param_3)\n\n{\n  char cVar1;\n  int iVar2;\n  int iVar3;\n  \n  if (param_2 != 0) {\n    iVar3 = 0;\n    do {\n      FUN_000394d0();\n      cVar1 = FUN_0003eaa0();\n      if ((cVar1 == 'A') || (*(char *)(param_3 + iVar3) == 'A')) {\nLAB_0004b494:\n        *(undefined1 *)(param_3 + iVar3) = 0x41;\n      }\n      else {\n        iVar2 = FUN_0004b3c0();\n        if (iVar2 != 0) goto LAB_0004b494;\n      }\n      iVar3 = iVar3 + 1;\n    } while (param_2 != iVar3);\n  }\n  return;\n}" primitive_type (ERROR "__regparm3" identifier) (function_declarator "FUN_0004b450(undefined4 param_1,int param_2,int param_3)" identifier (parameter_list "(undefined4 param_1,int param_2,int param_3)" ( (parameter_declaration "undefined4 param_1" type_identifier identifier) , (parameter_declaration "int param_2" primitive_type identifier) , (parameter_declaration "int param_3" primitive_type identifier) ))) (compound_statement "{\n  char cVar1;\n  int iVar2;\n  int iVar3;\n  \n  if (param_2 != 0) {\n    iVar3 = 0;\n    do {\n      FUN_000394d0();\n      cVar1 = FUN_0003eaa0();\n      if ((cVar1 == 'A') || (*(char *)(param_3 + iVar3) == 'A')) {\nLAB_0004b494:\n        *(undefined1 *)(param_3 + iVar3) = 0x41;\n      }\n      else {\n        iVar2 = FUN_0004b3c0();\n        if (iVar2 != 0) goto LAB_0004b494;\n      }\n      iVar3 = iVar3 + 1;\n    } while (param_2 != iVar3);\n  }\n  return;\n}" { (declaration "char cVar1;" primitive_type identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (if_statement "if (param_2 != 0) {\n    iVar3 = 0;\n    do {\n      FUN_000394d0();\n      cVar1 = FUN_0003eaa0();\n      if ((cVar1 == 'A') || (*(char *)(param_3 + iVar3) == 'A')) {\nLAB_0004b494:\n        *(undefined1 *)(param_3 + iVar3) = 0x41;\n      }\n      else {\n        iVar2 = FUN_0004b3c0();\n        if (iVar2 != 0) goto LAB_0004b494;\n      }\n      iVar3 = iVar3 + 1;\n    } while (param_2 != iVar3);\n  }" if (parenthesized_expression "(param_2 != 0)" ( (binary_expression "param_2 != 0" identifier != number_literal) )) (compound_statement "{\n    iVar3 = 0;\n    do {\n      FUN_000394d0();\n      cVar1 = FUN_0003eaa0();\n      if ((cVar1 == 'A') || (*(char *)(param_3 + iVar3) == 'A')) {\nLAB_0004b494:\n        *(undefined1 *)(param_3 + iVar3) = 0x41;\n      }\n      else {\n        iVar2 = FUN_0004b3c0();\n        if (iVar2 != 0) goto LAB_0004b494;\n      }\n      iVar3 = iVar3 + 1;\n    } while (param_2 != iVar3);\n  }" { (expression_statement "iVar3 = 0;" (assignment_expression "iVar3 = 0" identifier = number_literal) ;) (do_statement "do {\n      FUN_000394d0();\n      cVar1 = FUN_0003eaa0();\n      if ((cVar1 == 'A') || (*(char *)(param_3 + iVar3) == 'A')) {\nLAB_0004b494:\n        *(undefined1 *)(param_3 + iVar3) = 0x41;\n      }\n      else {\n        iVar2 = FUN_0004b3c0();\n        if (iVar2 != 0) goto LAB_0004b494;\n      }\n      iVar3 = iVar3 + 1;\n    } while (param_2 != iVar3);" do (compound_statement "{\n      FUN_000394d0();\n      cVar1 = FUN_0003eaa0();\n      if ((cVar1 == 'A') || (*(char *)(param_3 + iVar3) == 'A')) {\nLAB_0004b494:\n        *(undefined1 *)(param_3 + iVar3) = 0x41;\n      }\n      else {\n        iVar2 = FUN_0004b3c0();\n        if (iVar2 != 0) goto LAB_0004b494;\n      }\n      iVar3 = iVar3 + 1;\n    }" { (expression_statement "FUN_000394d0();" (call_expression "FUN_000394d0()" identifier (argument_list "()" ( ))) ;) (expression_statement "cVar1 = FUN_0003eaa0();" (assignment_expression "cVar1 = FUN_0003eaa0()" identifier = (call_expression "FUN_0003eaa0()" identifier (argument_list "()" ( )))) ;) (if_statement "if ((cVar1 == 'A') || (*(char *)(param_3 + iVar3) == 'A')) {\nLAB_0004b494:\n        *(undefined1 *)(param_3 + iVar3) = 0x41;\n      }\n      else {\n        iVar2 = FUN_0004b3c0();\n        if (iVar2 != 0) goto LAB_0004b494;\n      }" if (parenthesized_expression "((cVar1 == 'A') || (*(char *)(param_3 + iVar3) == 'A'))" ( (binary_expression "(cVar1 == 'A') || (*(char *)(param_3 + iVar3) == 'A')" (parenthesized_expression "(cVar1 == 'A')" ( (binary_expression "cVar1 == 'A'" identifier == (char_literal "'A'" ' character ')) )) || (parenthesized_expression "(*(char *)(param_3 + iVar3) == 'A')" ( (binary_expression "*(char *)(param_3 + iVar3) == 'A'" (pointer_expression "*(char *)(param_3 + iVar3)" * (cast_expression "(char *)(param_3 + iVar3)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + iVar3)" ( (binary_expression "param_3 + iVar3" identifier + identifier) )))) == (char_literal "'A'" ' character ')) ))) )) (compound_statement "{\nLAB_0004b494:\n        *(undefined1 *)(param_3 + iVar3) = 0x41;\n      }" { (labeled_statement "LAB_0004b494:\n        *(undefined1 *)(param_3 + iVar3) = 0x41;" statement_identifier : (expression_statement "*(undefined1 *)(param_3 + iVar3) = 0x41;" (assignment_expression "*(undefined1 *)(param_3 + iVar3) = 0x41" (pointer_expression "*(undefined1 *)(param_3 + iVar3)" * (cast_expression "(undefined1 *)(param_3 + iVar3)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + iVar3)" ( (binary_expression "param_3 + iVar3" identifier + identifier) )))) = number_literal) ;)) }) (else_clause "else {\n        iVar2 = FUN_0004b3c0();\n        if (iVar2 != 0) goto LAB_0004b494;\n      }" else (compound_statement "{\n        iVar2 = FUN_0004b3c0();\n        if (iVar2 != 0) goto LAB_0004b494;\n      }" { (expression_statement "iVar2 = FUN_0004b3c0();" (assignment_expression "iVar2 = FUN_0004b3c0()" identifier = (call_expression "FUN_0004b3c0()" identifier (argument_list "()" ( )))) ;) (if_statement "if (iVar2 != 0) goto LAB_0004b494;" if (parenthesized_expression "(iVar2 != 0)" ( (binary_expression "iVar2 != 0" identifier != number_literal) )) (goto_statement "goto LAB_0004b494;" goto statement_identifier ;)) }))) (expression_statement "iVar3 = iVar3 + 1;" (assignment_expression "iVar3 = iVar3 + 1" identifier = (binary_expression "iVar3 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(param_2 != iVar3)" ( (binary_expression "param_2 != iVar3" identifier != identifier) )) ;) })) (return_statement "return;" return ;) })))
(translation_unit (function_definition TYPE (ERROR IDENT) (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (do_statement do (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == (char_literal ' character ')) )) || (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + IDENT) )))) == (char_literal ' character ')) ))) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + IDENT) )))) = LIT) ;)) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (goto_statement goto statement_identifier ;)) }))) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT != IDENT) )) ;) })) (return_statement return ;) })))
(function_definition "void __regparm3 FUN_0004b450(undefined4 param_1,int param_2,int param_3)\n\n{\n  char cVar1;\n  int iVar2;\n  int iVar3;\n  \n  if (param_2 != 0) {\n    iVar3 = 0;\n    do {\n      FUN_000394d0();\n      cVar1 = FUN_0003eaa0();\n      if ((cVar1 == 'A') || (*(char *)(param_3 + iVar3) == 'A')) {\nLAB_0004b494:\n        *(undefined1 *)(param_3 + iVar3) = 0x41;\n      }\n      else {\n        iVar2 = FUN_0004b3c0();\n        if (iVar2 != 0) goto LAB_0004b494;\n      }\n      iVar3 = iVar3 + 1;\n    } while (param_2 != iVar3);\n  }\n  return;\n}" (primitive_type "void") (ERROR "__regparm3" (identifier "__regparm3")) (function_declarator "FUN_0004b450(undefined4 param_1,int param_2,int param_3)" (identifier "FUN_0004b450") (parameter_list "(undefined4 param_1,int param_2,int param_3)" (( "(") (parameter_declaration "undefined4 param_1" (type_identifier "undefined4") (identifier "param_1")) (, ",") (parameter_declaration "int param_2" (primitive_type "int") (identifier "param_2")) (, ",") (parameter_declaration "int param_3" (primitive_type "int") (identifier "param_3")) () ")"))) (compound_statement "{\n  char cVar1;\n  int iVar2;\n  int iVar3;\n  \n  if (param_2 != 0) {\n    iVar3 = 0;\n    do {\n      FUN_000394d0();\n      cVar1 = FUN_0003eaa0();\n      if ((cVar1 == 'A') || (*(char *)(param_3 + iVar3) == 'A')) {\nLAB_0004b494:\n        *(undefined1 *)(param_3 + iVar3) = 0x41;\n      }\n      else {\n        iVar2 = FUN_0004b3c0();\n        if (iVar2 != 0) goto LAB_0004b494;\n      }\n      iVar3 = iVar3 + 1;\n    } while (param_2 != iVar3);\n  }\n  return;\n}" ({ "{") (declaration "char cVar1;" (primitive_type "char") (identifier "cVar1") (; ";")) (declaration "int iVar2;" (primitive_type "int") (identifier "iVar2") (; ";")) (declaration "int iVar3;" (primitive_type "int") (identifier "iVar3") (; ";")) (if_statement "if (param_2 != 0) {\n    iVar3 = 0;\n    do {\n      FUN_000394d0();\n      cVar1 = FUN_0003eaa0();\n      if ((cVar1 == 'A') || (*(char *)(param_3 + iVar3) == 'A')) {\nLAB_0004b494:\n        *(undefined1 *)(param_3 + iVar3) = 0x41;\n      }\n      else {\n        iVar2 = FUN_0004b3c0();\n        if (iVar2 != 0) goto LAB_0004b494;\n      }\n      iVar3 = iVar3 + 1;\n    } while (param_2 != iVar3);\n  }" (if "if") (parenthesized_expression "(param_2 != 0)" (( "(") (binary_expression "param_2 != 0" (identifier "param_2") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    iVar3 = 0;\n    do {\n      FUN_000394d0();\n      cVar1 = FUN_0003eaa0();\n      if ((cVar1 == 'A') || (*(char *)(param_3 + iVar3) == 'A')) {\nLAB_0004b494:\n        *(undefined1 *)(param_3 + iVar3) = 0x41;\n      }\n      else {\n        iVar2 = FUN_0004b3c0();\n        if (iVar2 != 0) goto LAB_0004b494;\n      }\n      iVar3 = iVar3 + 1;\n    } while (param_2 != iVar3);\n  }" ({ "{") (expression_statement "iVar3 = 0;" (assignment_expression "iVar3 = 0" (identifier "iVar3") (= "=") (number_literal "0")) (; ";")) (do_statement "do {\n      FUN_000394d0();\n      cVar1 = FUN_0003eaa0();\n      if ((cVar1 == 'A') || (*(char *)(param_3 + iVar3) == 'A')) {\nLAB_0004b494:\n        *(undefined1 *)(param_3 + iVar3) = 0x41;\n      }\n      else {\n        iVar2 = FUN_0004b3c0();\n        if (iVar2 != 0) goto LAB_0004b494;\n      }\n      iVar3 = iVar3 + 1;\n    } while (param_2 != iVar3);" (do "do") (compound_statement "{\n      FUN_000394d0();\n      cVar1 = FUN_0003eaa0();\n      if ((cVar1 == 'A') || (*(char *)(param_3 + iVar3) == 'A')) {\nLAB_0004b494:\n        *(undefined1 *)(param_3 + iVar3) = 0x41;\n      }\n      else {\n        iVar2 = FUN_0004b3c0();\n        if (iVar2 != 0) goto LAB_0004b494;\n      }\n      iVar3 = iVar3 + 1;\n    }" ({ "{") (expression_statement "FUN_000394d0();" (call_expression "FUN_000394d0()" (identifier "FUN_000394d0") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "cVar1 = FUN_0003eaa0();" (assignment_expression "cVar1 = FUN_0003eaa0()" (identifier "cVar1") (= "=") (call_expression "FUN_0003eaa0()" (identifier "FUN_0003eaa0") (argument_list "()" (( "(") () ")")))) (; ";")) (if_statement "if ((cVar1 == 'A') || (*(char *)(param_3 + iVar3) == 'A')) {\nLAB_0004b494:\n        *(undefined1 *)(param_3 + iVar3) = 0x41;\n      }\n      else {\n        iVar2 = FUN_0004b3c0();\n        if (iVar2 != 0) goto LAB_0004b494;\n      }" (if "if") (parenthesized_expression "((cVar1 == 'A') || (*(char *)(param_3 + iVar3) == 'A'))" (( "(") (binary_expression "(cVar1 == 'A') || (*(char *)(param_3 + iVar3) == 'A')" (parenthesized_expression "(cVar1 == 'A')" (( "(") (binary_expression "cVar1 == 'A'" (identifier "cVar1") (== "==") (char_literal "'A'" (' "'") (character "A") (' "'"))) () ")")) (|| "||") (parenthesized_expression "(*(char *)(param_3 + iVar3) == 'A')" (( "(") (binary_expression "*(char *)(param_3 + iVar3) == 'A'" (pointer_expression "*(char *)(param_3 + iVar3)" (* "*") (cast_expression "(char *)(param_3 + iVar3)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + iVar3)" (( "(") (binary_expression "param_3 + iVar3" (identifier "param_3") (+ "+") (identifier "iVar3")) () ")")))) (== "==") (char_literal "'A'" (' "'") (character "A") (' "'"))) () ")"))) () ")")) (compound_statement "{\nLAB_0004b494:\n        *(undefined1 *)(param_3 + iVar3) = 0x41;\n      }" ({ "{") (labeled_statement "LAB_0004b494:\n        *(undefined1 *)(param_3 + iVar3) = 0x41;" (statement_identifier "LAB_0004b494") (: ":") (expression_statement "*(undefined1 *)(param_3 + iVar3) = 0x41;" (assignment_expression "*(undefined1 *)(param_3 + iVar3) = 0x41" (pointer_expression "*(undefined1 *)(param_3 + iVar3)" (* "*") (cast_expression "(undefined1 *)(param_3 + iVar3)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + iVar3)" (( "(") (binary_expression "param_3 + iVar3" (identifier "param_3") (+ "+") (identifier "iVar3")) () ")")))) (= "=") (number_literal "0x41")) (; ";"))) (} "}")) (else_clause "else {\n        iVar2 = FUN_0004b3c0();\n        if (iVar2 != 0) goto LAB_0004b494;\n      }" (else "else") (compound_statement "{\n        iVar2 = FUN_0004b3c0();\n        if (iVar2 != 0) goto LAB_0004b494;\n      }" ({ "{") (expression_statement "iVar2 = FUN_0004b3c0();" (assignment_expression "iVar2 = FUN_0004b3c0()" (identifier "iVar2") (= "=") (call_expression "FUN_0004b3c0()" (identifier "FUN_0004b3c0") (argument_list "()" (( "(") () ")")))) (; ";")) (if_statement "if (iVar2 != 0) goto LAB_0004b494;" (if "if") (parenthesized_expression "(iVar2 != 0)" (( "(") (binary_expression "iVar2 != 0" (identifier "iVar2") (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_0004b494;" (goto "goto") (statement_identifier "LAB_0004b494") (; ";"))) (} "}")))) (expression_statement "iVar3 = iVar3 + 1;" (assignment_expression "iVar3 = iVar3 + 1" (identifier "iVar3") (= "=") (binary_expression "iVar3 + 1" (identifier "iVar3") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(param_2 != iVar3)" (( "(") (binary_expression "param_2 != iVar3" (identifier "param_2") (!= "!=") (identifier "iVar3")) () ")")) (; ";")) (} "}"))) (return_statement "return;" (return "return") (; ";")) (} "}")))

void __regparm3 function_1(type_1 *pRight,int var_1,char *zAff)

{
  char var_4;
  type_1 *pExpr;
  int var_6;
  int var_7;
  
  if (var_1 != 0) {
    var_7 = 0;
    do {
      pExpr = var_2(pRight,var_7);
      var_4 = var_3(pExpr,zAff[var_7]);
      if ((var_4 == 'A') || (zAff[var_7] == 'A')) {
LAB_0004b494:
        zAff[var_7] = 'A';
      }
      else {
        var_6 = var_5(pExpr,zAff[var_7]);
        if (var_6 != 0) goto LAB_0004b494;
      }
      var_7 = var_7 + 1;
    } while (var_1 != var_7);
  }
  return;
}


(translation_unit (function_definition type: (primitive_type) (ERROR (identifier)) declarator: (function_declarator declarator: (identifier) parameters: (parameter_list (parameter_declaration type: (type_identifier) declarator: (identifier)) (parameter_declaration type: (primitive_type) declarator: (identifier)) (parameter_declaration type: (primitive_type) declarator: (identifier)))) body: (compound_statement (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (do_statement body: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list)))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (char_literal (character)))) right: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))))) right: (char_literal (character)))))) consequence: (compound_statement (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))))) right: (number_literal))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (goto_statement label: (statement_identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier)))))) (return_statement))))

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

{
  char cVar1;
  int iVar2;
  int iVar3;
  
  if (param_2 != 0) {
    iVar3 = 0;
    do {
      FUN_000394d0();
      cVar1 = FUN_0003eaa0();
      if ((cVar1 == 'A') || (*(char *)(param_3 + iVar3) == 'A')) {
LAB_0004b494:
        *(undefined1 *)(param_3 + iVar3) = 0x41;
      }
      else {
        iVar2 = FUN_0004b3c0();
        if (iVar2 != 0) goto LAB_0004b494;
      }
      iVar3 = iVar3 + 1;
    } while (param_2 != iVar3);
  }
  return;
}

