
TriggerStep * triggerStepAllocate(Parse *pParse,u8 op,Token *pName,char *zStart,char *zEnd)

{
  TriggerStep *pTVar1;
  char *pcVar2;
  char *z;
  TriggerStep *z_00;
  sqlite3 *db;
  undefined1 *puVar3;
  undefined4 in_stack_ffffffdc;
  
  puVar3 = &_gp;
  db = pParse->db;
  pTVar1 = (TriggerStep *)sqlite3DbMallocZero(db,CONCAT44(&_gp,in_stack_ffffffdc));
  if (pTVar1 != (TriggerStep *)0x0) {
    z_00 = pTVar1 + 1;
    (**(code **)(puVar3 + -0x7af4))(z_00,pName->z,pName->n);
    sqlite3Dequote((char *)z_00);
    pTVar1->zTarget = (char *)z_00;
    pTVar1->op = op;
    pcVar2 = triggerSpanDup(db,zStart,zEnd);
    pTVar1->zSpan = pcVar2;
    if (1 < pParse->eParseMode) {
      sqlite3RenameTokenMap
                ((Parse *)pParse->db,&pParse->pRename,(Token *)pTVar1->zTarget,(Parse *)pName);
      return pTVar1;
    }
  }
  return pTVar1;
}



undefined1 *
FUN_0005b910(undefined4 *param_1,undefined4 param_2,undefined4 *param_3,undefined4 param_4,
            undefined4 param_5)

{
  undefined1 *puVar1;
  undefined1 *puVar2;
  undefined4 uVar3;
  
  uVar3 = *param_1;
  puVar1 = (undefined1 *)FUN_00050924(uVar3,param_2,0,param_3[1] + 0x2d);
  if (puVar1 != (undefined1 *)0x0) {
    puVar2 = puVar1 + 0x2c;
    (*(code *)PTR_memcpy_00190e2c)(puVar2,*param_3,param_3[1]);
    FUN_0003f250(puVar2);
    *(undefined1 **)(puVar1 + 0xc) = puVar2;
    *puVar1 = (char)param_2;
    uVar3 = FUN_00051210(uVar3,param_4,param_5);
    *(undefined4 *)(puVar1 + 0x20) = uVar3;
    if (1 < *(byte *)((int)param_1 + 0xc6)) {
      FUN_0005b888(*param_1,param_1 + 0x43,*(undefined4 *)(puVar1 + 0xc),param_3);
      return puVar1;
    }
  }
  return puVar1;
}


lui gp,0x14
addiu gp,gp,-0x2ff0
addu gp,gp,t9
addiu sp,sp,-0x38
lw t9,-0x7d78(gp)
sw gp,0x10(sp)
addiu t9,t9,0x924
sw s6,0x30(sp)
or s6,a3,zero
sw s5,0x2c(sp)
or s5,a1,zero
sw s3,0x24(sp)
or s3,a0,zero
sw s1,0x1c(sp)
or s1,a2,zero
sw s0,0x18(sp)
sw ra,0x34(sp)
sw s4,0x28(sp)
sw s2,0x20(sp)
lw v0,0x4(a2)
or a2,zero,zero
lw s4,0x0(a0)
addiu a3,v0,0x2d
bal 0x00050924
_or a0,s4,zero
lw gp,0x10(sp)
beq v0,zero,0x0005b9e8
_or s0,v0,zero
addiu s2,v0,0x2c
lw t9,-0x7af4(gp)
lw a2,0x4(s1)
lw a1,0x0(s1)
jalr t9
_or a0,s2,zero
lw gp,0x10(sp)
lw t9,-0x7de0(gp)
addiu t9,t9,-0xdb0
bal 0x0003f250
_or a0,s2,zero
or a1,s6,zero
lw gp,0x10(sp)
or a0,s4,zero
lw a2,0x48(sp)
sw s2,0xc(s0)
lw t9,-0x7d78(gp)
addiu t9,t9,0x1210
bal 0x00051210
_sb s5,0x0(s0)
lw gp,0x10(sp)
sw v0,0x20(s0)
lbu v0,0xc6(s3)
sltiu v0,v0,0x2
beq v0,zero,0x0005ba14
_lw t9,-0x7d7c(gp)
lw ra,0x34(sp)
or v0,s0,zero
lw s6,0x30(sp)
lw s5,0x2c(sp)
lw s4,0x28(sp)
lw s3,0x24(sp)
lw s2,0x20(sp)
lw s1,0x1c(sp)
lw s0,0x18(sp)
jr ra
_addiu sp,sp,0x38
addiu a1,s3,0x10c
lw a2,0xc(s0)
or a3,s1,zero
addiu t9,t9,-0x4778
bal 0x0005b888
_lw a0,0x0(s3)
or v0,s0,zero
lw ra,0x34(sp)
lw s6,0x30(sp)
lw s5,0x2c(sp)
lw s4,0x28(sp)
lw s3,0x24(sp)
lw s2,0x20(sp)
lw s1,0x1c(sp)
lw s0,0x18(sp)
jr ra
_addiu sp,sp,0x38
(translation_unit "undefined1 *\nFUN_0005b910(undefined4 *param_1,undefined4 param_2,undefined4 *param_3,undefined4 param_4,\n            undefined4 param_5)\n\n{\n  undefined1 *puVar1;\n  undefined1 *puVar2;\n  undefined4 uVar3;\n  \n  uVar3 = *param_1;\n  puVar1 = (undefined1 *)FUN_00050924(uVar3,param_2,0,param_3[1] + 0x2d);\n  if (puVar1 != (undefined1 *)0x0) {\n    puVar2 = puVar1 + 0x2c;\n    (*(code *)PTR_memcpy_00190e2c)(puVar2,*param_3,param_3[1]);\n    FUN_0003f250(puVar2);\n    *(undefined1 **)(puVar1 + 0xc) = puVar2;\n    *puVar1 = (char)param_2;\n    uVar3 = FUN_00051210(uVar3,param_4,param_5);\n    *(undefined4 *)(puVar1 + 0x20) = uVar3;\n    if (1 < *(byte *)((int)param_1 + 0xc6)) {\n      FUN_0005b888(*param_1,param_1 + 0x43,*(undefined4 *)(puVar1 + 0xc),param_3);\n      return puVar1;\n    }\n  }\n  return puVar1;\n}\n\n" (function_definition "undefined1 *\nFUN_0005b910(undefined4 *param_1,undefined4 param_2,undefined4 *param_3,undefined4 param_4,\n            undefined4 param_5)\n\n{\n  undefined1 *puVar1;\n  undefined1 *puVar2;\n  undefined4 uVar3;\n  \n  uVar3 = *param_1;\n  puVar1 = (undefined1 *)FUN_00050924(uVar3,param_2,0,param_3[1] + 0x2d);\n  if (puVar1 != (undefined1 *)0x0) {\n    puVar2 = puVar1 + 0x2c;\n    (*(code *)PTR_memcpy_00190e2c)(puVar2,*param_3,param_3[1]);\n    FUN_0003f250(puVar2);\n    *(undefined1 **)(puVar1 + 0xc) = puVar2;\n    *puVar1 = (char)param_2;\n    uVar3 = FUN_00051210(uVar3,param_4,param_5);\n    *(undefined4 *)(puVar1 + 0x20) = uVar3;\n    if (1 < *(byte *)((int)param_1 + 0xc6)) {\n      FUN_0005b888(*param_1,param_1 + 0x43,*(undefined4 *)(puVar1 + 0xc),param_3);\n      return puVar1;\n    }\n  }\n  return puVar1;\n}" type_identifier (pointer_declarator "*\nFUN_0005b910(undefined4 *param_1,undefined4 param_2,undefined4 *param_3,undefined4 param_4,\n            undefined4 param_5)" * (function_declarator "FUN_0005b910(undefined4 *param_1,undefined4 param_2,undefined4 *param_3,undefined4 param_4,\n            undefined4 param_5)" identifier (parameter_list "(undefined4 *param_1,undefined4 param_2,undefined4 *param_3,undefined4 param_4,\n            undefined4 param_5)" ( (parameter_declaration "undefined4 *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "undefined4 param_2" type_identifier identifier) , (parameter_declaration "undefined4 *param_3" type_identifier (pointer_declarator "*param_3" * identifier)) , (parameter_declaration "undefined4 param_4" type_identifier identifier) , (parameter_declaration "undefined4 param_5" type_identifier identifier) )))) (compound_statement "{\n  undefined1 *puVar1;\n  undefined1 *puVar2;\n  undefined4 uVar3;\n  \n  uVar3 = *param_1;\n  puVar1 = (undefined1 *)FUN_00050924(uVar3,param_2,0,param_3[1] + 0x2d);\n  if (puVar1 != (undefined1 *)0x0) {\n    puVar2 = puVar1 + 0x2c;\n    (*(code *)PTR_memcpy_00190e2c)(puVar2,*param_3,param_3[1]);\n    FUN_0003f250(puVar2);\n    *(undefined1 **)(puVar1 + 0xc) = puVar2;\n    *puVar1 = (char)param_2;\n    uVar3 = FUN_00051210(uVar3,param_4,param_5);\n    *(undefined4 *)(puVar1 + 0x20) = uVar3;\n    if (1 < *(byte *)((int)param_1 + 0xc6)) {\n      FUN_0005b888(*param_1,param_1 + 0x43,*(undefined4 *)(puVar1 + 0xc),param_3);\n      return puVar1;\n    }\n  }\n  return puVar1;\n}" { (declaration "undefined1 *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "undefined1 *puVar2;" type_identifier (pointer_declarator "*puVar2" * identifier) ;) (declaration "undefined4 uVar3;" type_identifier identifier ;) (expression_statement "uVar3 = *param_1;" (assignment_expression "uVar3 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (expression_statement "puVar1 = (undefined1 *)FUN_00050924(uVar3,param_2,0,param_3[1] + 0x2d);" (assignment_expression "puVar1 = (undefined1 *)FUN_00050924(uVar3,param_2,0,param_3[1] + 0x2d)" identifier = (cast_expression "(undefined1 *)FUN_00050924(uVar3,param_2,0,param_3[1] + 0x2d)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00050924(uVar3,param_2,0,param_3[1] + 0x2d)" identifier (argument_list "(uVar3,param_2,0,param_3[1] + 0x2d)" ( identifier , identifier , number_literal , (binary_expression "param_3[1] + 0x2d" (subscript_expression "param_3[1]" identifier [ number_literal ]) + number_literal) ))))) ;) (if_statement "if (puVar1 != (undefined1 *)0x0) {\n    puVar2 = puVar1 + 0x2c;\n    (*(code *)PTR_memcpy_00190e2c)(puVar2,*param_3,param_3[1]);\n    FUN_0003f250(puVar2);\n    *(undefined1 **)(puVar1 + 0xc) = puVar2;\n    *puVar1 = (char)param_2;\n    uVar3 = FUN_00051210(uVar3,param_4,param_5);\n    *(undefined4 *)(puVar1 + 0x20) = uVar3;\n    if (1 < *(byte *)((int)param_1 + 0xc6)) {\n      FUN_0005b888(*param_1,param_1 + 0x43,*(undefined4 *)(puVar1 + 0xc),param_3);\n      return puVar1;\n    }\n  }" if (parenthesized_expression "(puVar1 != (undefined1 *)0x0)" ( (binary_expression "puVar1 != (undefined1 *)0x0" identifier != (cast_expression "(undefined1 *)0x0" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    puVar2 = puVar1 + 0x2c;\n    (*(code *)PTR_memcpy_00190e2c)(puVar2,*param_3,param_3[1]);\n    FUN_0003f250(puVar2);\n    *(undefined1 **)(puVar1 + 0xc) = puVar2;\n    *puVar1 = (char)param_2;\n    uVar3 = FUN_00051210(uVar3,param_4,param_5);\n    *(undefined4 *)(puVar1 + 0x20) = uVar3;\n    if (1 < *(byte *)((int)param_1 + 0xc6)) {\n      FUN_0005b888(*param_1,param_1 + 0x43,*(undefined4 *)(puVar1 + 0xc),param_3);\n      return puVar1;\n    }\n  }" { (expression_statement "puVar2 = puVar1 + 0x2c;" (assignment_expression "puVar2 = puVar1 + 0x2c" identifier = (binary_expression "puVar1 + 0x2c" identifier + number_literal)) ;) (expression_statement "(*(code *)PTR_memcpy_00190e2c)(puVar2,*param_3,param_3[1]);" (call_expression "(*(code *)PTR_memcpy_00190e2c)(puVar2,*param_3,param_3[1])" (parenthesized_expression "(*(code *)PTR_memcpy_00190e2c)" ( (pointer_expression "*(code *)PTR_memcpy_00190e2c" * (cast_expression "(code *)PTR_memcpy_00190e2c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(puVar2,*param_3,param_3[1])" ( identifier , (pointer_expression "*param_3" * identifier) , (subscript_expression "param_3[1]" identifier [ number_literal ]) ))) ;) (expression_statement "FUN_0003f250(puVar2);" (call_expression "FUN_0003f250(puVar2)" identifier (argument_list "(puVar2)" ( identifier ))) ;) (expression_statement "*(undefined1 **)(puVar1 + 0xc) = puVar2;" (assignment_expression "*(undefined1 **)(puVar1 + 0xc) = puVar2" (pointer_expression "*(undefined1 **)(puVar1 + 0xc)" * (cast_expression "(undefined1 **)(puVar1 + 0xc)" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar1 + 0xc)" ( (binary_expression "puVar1 + 0xc" identifier + number_literal) )))) = identifier) ;) (expression_statement "*puVar1 = (char)param_2;" (assignment_expression "*puVar1 = (char)param_2" (pointer_expression "*puVar1" * identifier) = (cast_expression "(char)param_2" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (expression_statement "uVar3 = FUN_00051210(uVar3,param_4,param_5);" (assignment_expression "uVar3 = FUN_00051210(uVar3,param_4,param_5)" identifier = (call_expression "FUN_00051210(uVar3,param_4,param_5)" identifier (argument_list "(uVar3,param_4,param_5)" ( identifier , identifier , identifier )))) ;) (expression_statement "*(undefined4 *)(puVar1 + 0x20) = uVar3;" (assignment_expression "*(undefined4 *)(puVar1 + 0x20) = uVar3" (pointer_expression "*(undefined4 *)(puVar1 + 0x20)" * (cast_expression "(undefined4 *)(puVar1 + 0x20)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar1 + 0x20)" ( (binary_expression "puVar1 + 0x20" identifier + number_literal) )))) = identifier) ;) (if_statement "if (1 < *(byte *)((int)param_1 + 0xc6)) {\n      FUN_0005b888(*param_1,param_1 + 0x43,*(undefined4 *)(puVar1 + 0xc),param_3);\n      return puVar1;\n    }" if (parenthesized_expression "(1 < *(byte *)((int)param_1 + 0xc6))" ( (binary_expression "1 < *(byte *)((int)param_1 + 0xc6)" number_literal < (pointer_expression "*(byte *)((int)param_1 + 0xc6)" * (cast_expression "(byte *)((int)param_1 + 0xc6)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_1 + 0xc6)" ( (binary_expression "(int)param_1 + 0xc6" (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) )) (compound_statement "{\n      FUN_0005b888(*param_1,param_1 + 0x43,*(undefined4 *)(puVar1 + 0xc),param_3);\n      return puVar1;\n    }" { (expression_statement "FUN_0005b888(*param_1,param_1 + 0x43,*(undefined4 *)(puVar1 + 0xc),param_3);" (call_expression "FUN_0005b888(*param_1,param_1 + 0x43,*(undefined4 *)(puVar1 + 0xc),param_3)" identifier (argument_list "(*param_1,param_1 + 0x43,*(undefined4 *)(puVar1 + 0xc),param_3)" ( (pointer_expression "*param_1" * identifier) , (binary_expression "param_1 + 0x43" identifier + number_literal) , (pointer_expression "*(undefined4 *)(puVar1 + 0xc)" * (cast_expression "(undefined4 *)(puVar1 + 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar1 + 0xc)" ( (binary_expression "puVar1 + 0xc" identifier + number_literal) )))) , identifier ))) ;) (return_statement "return puVar1;" return identifier ;) })) })) (return_statement "return puVar1;" return identifier ;) })))
(translation_unit "TriggerStep * triggerStepAllocate(Parse *pParse,u8 op,Token *pName,char *zStart,char *zEnd)\n\n{\n  TriggerStep *pTVar1;\n  char *pcVar2;\n  char *z;\n  TriggerStep *z_00;\n  sqlite3 *db;\n  undefined1 *puVar3;\n  undefined4 in_stack_ffffffdc;\n  \n  puVar3 = &_gp;\n  db = pParse->db;\n  pTVar1 = (TriggerStep *)sqlite3DbMallocZero(db,CONCAT44(&_gp,in_stack_ffffffdc));\n  if (pTVar1 != (TriggerStep *)0x0) {\n    z_00 = pTVar1 + 1;\n    (**(code **)(puVar3 + -0x7af4))(z_00,pName->z,pName->n);\n    sqlite3Dequote((char *)z_00);\n    pTVar1->zTarget = (char *)z_00;\n    pTVar1->op = op;\n    pcVar2 = triggerSpanDup(db,zStart,zEnd);\n    pTVar1->zSpan = pcVar2;\n    if (1 < pParse->eParseMode) {\n      sqlite3RenameTokenMap\n                ((Parse *)pParse->db,&pParse->pRename,(Token *)pTVar1->zTarget,(Parse *)pName);\n      return pTVar1;\n    }\n  }\n  return pTVar1;\n}\n\n" (function_definition "TriggerStep * triggerStepAllocate(Parse *pParse,u8 op,Token *pName,char *zStart,char *zEnd)\n\n{\n  TriggerStep *pTVar1;\n  char *pcVar2;\n  char *z;\n  TriggerStep *z_00;\n  sqlite3 *db;\n  undefined1 *puVar3;\n  undefined4 in_stack_ffffffdc;\n  \n  puVar3 = &_gp;\n  db = pParse->db;\n  pTVar1 = (TriggerStep *)sqlite3DbMallocZero(db,CONCAT44(&_gp,in_stack_ffffffdc));\n  if (pTVar1 != (TriggerStep *)0x0) {\n    z_00 = pTVar1 + 1;\n    (**(code **)(puVar3 + -0x7af4))(z_00,pName->z,pName->n);\n    sqlite3Dequote((char *)z_00);\n    pTVar1->zTarget = (char *)z_00;\n    pTVar1->op = op;\n    pcVar2 = triggerSpanDup(db,zStart,zEnd);\n    pTVar1->zSpan = pcVar2;\n    if (1 < pParse->eParseMode) {\n      sqlite3RenameTokenMap\n                ((Parse *)pParse->db,&pParse->pRename,(Token *)pTVar1->zTarget,(Parse *)pName);\n      return pTVar1;\n    }\n  }\n  return pTVar1;\n}" type_identifier (pointer_declarator "* triggerStepAllocate(Parse *pParse,u8 op,Token *pName,char *zStart,char *zEnd)" * (function_declarator "triggerStepAllocate(Parse *pParse,u8 op,Token *pName,char *zStart,char *zEnd)" identifier (parameter_list "(Parse *pParse,u8 op,Token *pName,char *zStart,char *zEnd)" ( (parameter_declaration "Parse *pParse" type_identifier (pointer_declarator "*pParse" * identifier)) , (parameter_declaration "u8 op" type_identifier identifier) , (parameter_declaration "Token *pName" type_identifier (pointer_declarator "*pName" * identifier)) , (parameter_declaration "char *zStart" primitive_type (pointer_declarator "*zStart" * identifier)) , (parameter_declaration "char *zEnd" primitive_type (pointer_declarator "*zEnd" * identifier)) )))) (compound_statement "{\n  TriggerStep *pTVar1;\n  char *pcVar2;\n  char *z;\n  TriggerStep *z_00;\n  sqlite3 *db;\n  undefined1 *puVar3;\n  undefined4 in_stack_ffffffdc;\n  \n  puVar3 = &_gp;\n  db = pParse->db;\n  pTVar1 = (TriggerStep *)sqlite3DbMallocZero(db,CONCAT44(&_gp,in_stack_ffffffdc));\n  if (pTVar1 != (TriggerStep *)0x0) {\n    z_00 = pTVar1 + 1;\n    (**(code **)(puVar3 + -0x7af4))(z_00,pName->z,pName->n);\n    sqlite3Dequote((char *)z_00);\n    pTVar1->zTarget = (char *)z_00;\n    pTVar1->op = op;\n    pcVar2 = triggerSpanDup(db,zStart,zEnd);\n    pTVar1->zSpan = pcVar2;\n    if (1 < pParse->eParseMode) {\n      sqlite3RenameTokenMap\n                ((Parse *)pParse->db,&pParse->pRename,(Token *)pTVar1->zTarget,(Parse *)pName);\n      return pTVar1;\n    }\n  }\n  return pTVar1;\n}" { (declaration "TriggerStep *pTVar1;" type_identifier (pointer_declarator "*pTVar1" * identifier) ;) (declaration "char *pcVar2;" primitive_type (pointer_declarator "*pcVar2" * identifier) ;) (declaration "char *z;" primitive_type (pointer_declarator "*z" * identifier) ;) (declaration "TriggerStep *z_00;" type_identifier (pointer_declarator "*z_00" * identifier) ;) (declaration "sqlite3 *db;" type_identifier (pointer_declarator "*db" * identifier) ;) (declaration "undefined1 *puVar3;" type_identifier (pointer_declarator "*puVar3" * identifier) ;) (declaration "undefined4 in_stack_ffffffdc;" type_identifier identifier ;) (expression_statement "puVar3 = &_gp;" (assignment_expression "puVar3 = &_gp" identifier = (pointer_expression "&_gp" & identifier)) ;) (expression_statement "db = pParse->db;" (assignment_expression "db = pParse->db" identifier = (field_expression "pParse->db" identifier -> field_identifier)) ;) (expression_statement "pTVar1 = (TriggerStep *)sqlite3DbMallocZero(db,CONCAT44(&_gp,in_stack_ffffffdc));" (assignment_expression "pTVar1 = (TriggerStep *)sqlite3DbMallocZero(db,CONCAT44(&_gp,in_stack_ffffffdc))" identifier = (cast_expression "(TriggerStep *)sqlite3DbMallocZero(db,CONCAT44(&_gp,in_stack_ffffffdc))" ( (type_descriptor "TriggerStep *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "sqlite3DbMallocZero(db,CONCAT44(&_gp,in_stack_ffffffdc))" identifier (argument_list "(db,CONCAT44(&_gp,in_stack_ffffffdc))" ( identifier , (call_expression "CONCAT44(&_gp,in_stack_ffffffdc)" identifier (argument_list "(&_gp,in_stack_ffffffdc)" ( (pointer_expression "&_gp" & identifier) , identifier ))) ))))) ;) (if_statement "if (pTVar1 != (TriggerStep *)0x0) {\n    z_00 = pTVar1 + 1;\n    (**(code **)(puVar3 + -0x7af4))(z_00,pName->z,pName->n);\n    sqlite3Dequote((char *)z_00);\n    pTVar1->zTarget = (char *)z_00;\n    pTVar1->op = op;\n    pcVar2 = triggerSpanDup(db,zStart,zEnd);\n    pTVar1->zSpan = pcVar2;\n    if (1 < pParse->eParseMode) {\n      sqlite3RenameTokenMap\n                ((Parse *)pParse->db,&pParse->pRename,(Token *)pTVar1->zTarget,(Parse *)pName);\n      return pTVar1;\n    }\n  }" if (parenthesized_expression "(pTVar1 != (TriggerStep *)0x0)" ( (binary_expression "pTVar1 != (TriggerStep *)0x0" identifier != (cast_expression "(TriggerStep *)0x0" ( (type_descriptor "TriggerStep *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    z_00 = pTVar1 + 1;\n    (**(code **)(puVar3 + -0x7af4))(z_00,pName->z,pName->n);\n    sqlite3Dequote((char *)z_00);\n    pTVar1->zTarget = (char *)z_00;\n    pTVar1->op = op;\n    pcVar2 = triggerSpanDup(db,zStart,zEnd);\n    pTVar1->zSpan = pcVar2;\n    if (1 < pParse->eParseMode) {\n      sqlite3RenameTokenMap\n                ((Parse *)pParse->db,&pParse->pRename,(Token *)pTVar1->zTarget,(Parse *)pName);\n      return pTVar1;\n    }\n  }" { (expression_statement "z_00 = pTVar1 + 1;" (assignment_expression "z_00 = pTVar1 + 1" identifier = (binary_expression "pTVar1 + 1" identifier + number_literal)) ;) (expression_statement "(**(code **)(puVar3 + -0x7af4))(z_00,pName->z,pName->n);" (call_expression "(**(code **)(puVar3 + -0x7af4))(z_00,pName->z,pName->n)" (parenthesized_expression "(**(code **)(puVar3 + -0x7af4))" ( (pointer_expression "**(code **)(puVar3 + -0x7af4)" * (pointer_expression "*(code **)(puVar3 + -0x7af4)" * (cast_expression "(code **)(puVar3 + -0x7af4)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar3 + -0x7af4)" ( (binary_expression "puVar3 + -0x7af4" identifier + number_literal) ))))) )) (argument_list "(z_00,pName->z,pName->n)" ( identifier , (field_expression "pName->z" identifier -> field_identifier) , (field_expression "pName->n" identifier -> field_identifier) ))) ;) (expression_statement "sqlite3Dequote((char *)z_00);" (call_expression "sqlite3Dequote((char *)z_00)" identifier (argument_list "((char *)z_00)" ( (cast_expression "(char *)z_00" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) ))) ;) (expression_statement "pTVar1->zTarget = (char *)z_00;" (assignment_expression "pTVar1->zTarget = (char *)z_00" (field_expression "pTVar1->zTarget" identifier -> field_identifier) = (cast_expression "(char *)z_00" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "pTVar1->op = op;" (assignment_expression "pTVar1->op = op" (field_expression "pTVar1->op" identifier -> field_identifier) = identifier) ;) (expression_statement "pcVar2 = triggerSpanDup(db,zStart,zEnd);" (assignment_expression "pcVar2 = triggerSpanDup(db,zStart,zEnd)" identifier = (call_expression "triggerSpanDup(db,zStart,zEnd)" identifier (argument_list "(db,zStart,zEnd)" ( identifier , identifier , identifier )))) ;) (expression_statement "pTVar1->zSpan = pcVar2;" (assignment_expression "pTVar1->zSpan = pcVar2" (field_expression "pTVar1->zSpan" identifier -> field_identifier) = identifier) ;) (if_statement "if (1 < pParse->eParseMode) {\n      sqlite3RenameTokenMap\n                ((Parse *)pParse->db,&pParse->pRename,(Token *)pTVar1->zTarget,(Parse *)pName);\n      return pTVar1;\n    }" if (parenthesized_expression "(1 < pParse->eParseMode)" ( (binary_expression "1 < pParse->eParseMode" number_literal < (field_expression "pParse->eParseMode" identifier -> field_identifier)) )) (compound_statement "{\n      sqlite3RenameTokenMap\n                ((Parse *)pParse->db,&pParse->pRename,(Token *)pTVar1->zTarget,(Parse *)pName);\n      return pTVar1;\n    }" { (expression_statement "sqlite3RenameTokenMap\n                ((Parse *)pParse->db,&pParse->pRename,(Token *)pTVar1->zTarget,(Parse *)pName);" (call_expression "sqlite3RenameTokenMap\n                ((Parse *)pParse->db,&pParse->pRename,(Token *)pTVar1->zTarget,(Parse *)pName)" identifier (argument_list "((Parse *)pParse->db,&pParse->pRename,(Token *)pTVar1->zTarget,(Parse *)pName)" ( (cast_expression "(Parse *)pParse->db" ( (type_descriptor "Parse *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "pParse->db" identifier -> field_identifier)) , (pointer_expression "&pParse->pRename" & (field_expression "pParse->pRename" identifier -> field_identifier)) , (cast_expression "(Token *)pTVar1->zTarget" ( (type_descriptor "Token *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "pTVar1->zTarget" identifier -> field_identifier)) , (cast_expression "(Parse *)pName" ( (type_descriptor "Parse *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) ))) ;) (return_statement "return pTVar1;" return identifier ;) })) })) (return_statement "return pTVar1;" return identifier ;) })))
(translation_unit "undefined1 *\nFUN_0005b910(undefined4 *param_1,undefined4 param_2,undefined4 *param_3,undefined4 param_4,\n            undefined4 param_5)\n\n{\n  undefined1 *puVar1;\n  undefined1 *puVar2;\n  undefined4 uVar3;\n  \n  uVar3 = *param_1;\n  puVar1 = (undefined1 *)FUN_00050924(uVar3,param_2,0,param_3[1] + 0x2d);\n  if (puVar1 != (undefined1 *)0x0) {\n    puVar2 = puVar1 + 0x2c;\n    (*(code *)PTR_memcpy_00190e2c)(puVar2,*param_3,param_3[1]);\n    FUN_0003f250(puVar2);\n    *(undefined1 **)(puVar1 + 0xc) = puVar2;\n    *puVar1 = (char)param_2;\n    uVar3 = FUN_00051210(uVar3,param_4,param_5);\n    *(undefined4 *)(puVar1 + 0x20) = uVar3;\n    if (1 < *(byte *)((int)param_1 + 0xc6)) {\n      FUN_0005b888(*param_1,param_1 + 0x43,*(undefined4 *)(puVar1 + 0xc),param_3);\n      return puVar1;\n    }\n  }\n  return puVar1;\n}\n\n" (function_definition "undefined1 *\nFUN_0005b910(undefined4 *param_1,undefined4 param_2,undefined4 *param_3,undefined4 param_4,\n            undefined4 param_5)\n\n{\n  undefined1 *puVar1;\n  undefined1 *puVar2;\n  undefined4 uVar3;\n  \n  uVar3 = *param_1;\n  puVar1 = (undefined1 *)FUN_00050924(uVar3,param_2,0,param_3[1] + 0x2d);\n  if (puVar1 != (undefined1 *)0x0) {\n    puVar2 = puVar1 + 0x2c;\n    (*(code *)PTR_memcpy_00190e2c)(puVar2,*param_3,param_3[1]);\n    FUN_0003f250(puVar2);\n    *(undefined1 **)(puVar1 + 0xc) = puVar2;\n    *puVar1 = (char)param_2;\n    uVar3 = FUN_00051210(uVar3,param_4,param_5);\n    *(undefined4 *)(puVar1 + 0x20) = uVar3;\n    if (1 < *(byte *)((int)param_1 + 0xc6)) {\n      FUN_0005b888(*param_1,param_1 + 0x43,*(undefined4 *)(puVar1 + 0xc),param_3);\n      return puVar1;\n    }\n  }\n  return puVar1;\n}" type_identifier (pointer_declarator "*\nFUN_0005b910(undefined4 *param_1,undefined4 param_2,undefined4 *param_3,undefined4 param_4,\n            undefined4 param_5)" * (function_declarator "FUN_0005b910(undefined4 *param_1,undefined4 param_2,undefined4 *param_3,undefined4 param_4,\n            undefined4 param_5)" identifier (parameter_list "(undefined4 *param_1,undefined4 param_2,undefined4 *param_3,undefined4 param_4,\n            undefined4 param_5)" ( (parameter_declaration "undefined4 *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "undefined4 param_2" type_identifier identifier) , (parameter_declaration "undefined4 *param_3" type_identifier (pointer_declarator "*param_3" * identifier)) , (parameter_declaration "undefined4 param_4" type_identifier identifier) , (parameter_declaration "undefined4 param_5" type_identifier identifier) )))) (compound_statement "{\n  undefined1 *puVar1;\n  undefined1 *puVar2;\n  undefined4 uVar3;\n  \n  uVar3 = *param_1;\n  puVar1 = (undefined1 *)FUN_00050924(uVar3,param_2,0,param_3[1] + 0x2d);\n  if (puVar1 != (undefined1 *)0x0) {\n    puVar2 = puVar1 + 0x2c;\n    (*(code *)PTR_memcpy_00190e2c)(puVar2,*param_3,param_3[1]);\n    FUN_0003f250(puVar2);\n    *(undefined1 **)(puVar1 + 0xc) = puVar2;\n    *puVar1 = (char)param_2;\n    uVar3 = FUN_00051210(uVar3,param_4,param_5);\n    *(undefined4 *)(puVar1 + 0x20) = uVar3;\n    if (1 < *(byte *)((int)param_1 + 0xc6)) {\n      FUN_0005b888(*param_1,param_1 + 0x43,*(undefined4 *)(puVar1 + 0xc),param_3);\n      return puVar1;\n    }\n  }\n  return puVar1;\n}" { (declaration "undefined1 *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "undefined1 *puVar2;" type_identifier (pointer_declarator "*puVar2" * identifier) ;) (declaration "undefined4 uVar3;" type_identifier identifier ;) (expression_statement "uVar3 = *param_1;" (assignment_expression "uVar3 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (expression_statement "puVar1 = (undefined1 *)FUN_00050924(uVar3,param_2,0,param_3[1] + 0x2d);" (assignment_expression "puVar1 = (undefined1 *)FUN_00050924(uVar3,param_2,0,param_3[1] + 0x2d)" identifier = (cast_expression "(undefined1 *)FUN_00050924(uVar3,param_2,0,param_3[1] + 0x2d)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00050924(uVar3,param_2,0,param_3[1] + 0x2d)" identifier (argument_list "(uVar3,param_2,0,param_3[1] + 0x2d)" ( identifier , identifier , number_literal , (binary_expression "param_3[1] + 0x2d" (subscript_expression "param_3[1]" identifier [ number_literal ]) + number_literal) ))))) ;) (if_statement "if (puVar1 != (undefined1 *)0x0) {\n    puVar2 = puVar1 + 0x2c;\n    (*(code *)PTR_memcpy_00190e2c)(puVar2,*param_3,param_3[1]);\n    FUN_0003f250(puVar2);\n    *(undefined1 **)(puVar1 + 0xc) = puVar2;\n    *puVar1 = (char)param_2;\n    uVar3 = FUN_00051210(uVar3,param_4,param_5);\n    *(undefined4 *)(puVar1 + 0x20) = uVar3;\n    if (1 < *(byte *)((int)param_1 + 0xc6)) {\n      FUN_0005b888(*param_1,param_1 + 0x43,*(undefined4 *)(puVar1 + 0xc),param_3);\n      return puVar1;\n    }\n  }" if (parenthesized_expression "(puVar1 != (undefined1 *)0x0)" ( (binary_expression "puVar1 != (undefined1 *)0x0" identifier != (cast_expression "(undefined1 *)0x0" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    puVar2 = puVar1 + 0x2c;\n    (*(code *)PTR_memcpy_00190e2c)(puVar2,*param_3,param_3[1]);\n    FUN_0003f250(puVar2);\n    *(undefined1 **)(puVar1 + 0xc) = puVar2;\n    *puVar1 = (char)param_2;\n    uVar3 = FUN_00051210(uVar3,param_4,param_5);\n    *(undefined4 *)(puVar1 + 0x20) = uVar3;\n    if (1 < *(byte *)((int)param_1 + 0xc6)) {\n      FUN_0005b888(*param_1,param_1 + 0x43,*(undefined4 *)(puVar1 + 0xc),param_3);\n      return puVar1;\n    }\n  }" { (expression_statement "puVar2 = puVar1 + 0x2c;" (assignment_expression "puVar2 = puVar1 + 0x2c" identifier = (binary_expression "puVar1 + 0x2c" identifier + number_literal)) ;) (expression_statement "(*(code *)PTR_memcpy_00190e2c)(puVar2,*param_3,param_3[1]);" (call_expression "(*(code *)PTR_memcpy_00190e2c)(puVar2,*param_3,param_3[1])" (parenthesized_expression "(*(code *)PTR_memcpy_00190e2c)" ( (pointer_expression "*(code *)PTR_memcpy_00190e2c" * (cast_expression "(code *)PTR_memcpy_00190e2c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(puVar2,*param_3,param_3[1])" ( identifier , (pointer_expression "*param_3" * identifier) , (subscript_expression "param_3[1]" identifier [ number_literal ]) ))) ;) (expression_statement "FUN_0003f250(puVar2);" (call_expression "FUN_0003f250(puVar2)" identifier (argument_list "(puVar2)" ( identifier ))) ;) (expression_statement "*(undefined1 **)(puVar1 + 0xc) = puVar2;" (assignment_expression "*(undefined1 **)(puVar1 + 0xc) = puVar2" (pointer_expression "*(undefined1 **)(puVar1 + 0xc)" * (cast_expression "(undefined1 **)(puVar1 + 0xc)" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar1 + 0xc)" ( (binary_expression "puVar1 + 0xc" identifier + number_literal) )))) = identifier) ;) (expression_statement "*puVar1 = (char)param_2;" (assignment_expression "*puVar1 = (char)param_2" (pointer_expression "*puVar1" * identifier) = (cast_expression "(char)param_2" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (expression_statement "uVar3 = FUN_00051210(uVar3,param_4,param_5);" (assignment_expression "uVar3 = FUN_00051210(uVar3,param_4,param_5)" identifier = (call_expression "FUN_00051210(uVar3,param_4,param_5)" identifier (argument_list "(uVar3,param_4,param_5)" ( identifier , identifier , identifier )))) ;) (expression_statement "*(undefined4 *)(puVar1 + 0x20) = uVar3;" (assignment_expression "*(undefined4 *)(puVar1 + 0x20) = uVar3" (pointer_expression "*(undefined4 *)(puVar1 + 0x20)" * (cast_expression "(undefined4 *)(puVar1 + 0x20)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar1 + 0x20)" ( (binary_expression "puVar1 + 0x20" identifier + number_literal) )))) = identifier) ;) (if_statement "if (1 < *(byte *)((int)param_1 + 0xc6)) {\n      FUN_0005b888(*param_1,param_1 + 0x43,*(undefined4 *)(puVar1 + 0xc),param_3);\n      return puVar1;\n    }" if (parenthesized_expression "(1 < *(byte *)((int)param_1 + 0xc6))" ( (binary_expression "1 < *(byte *)((int)param_1 + 0xc6)" number_literal < (pointer_expression "*(byte *)((int)param_1 + 0xc6)" * (cast_expression "(byte *)((int)param_1 + 0xc6)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_1 + 0xc6)" ( (binary_expression "(int)param_1 + 0xc6" (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) )) (compound_statement "{\n      FUN_0005b888(*param_1,param_1 + 0x43,*(undefined4 *)(puVar1 + 0xc),param_3);\n      return puVar1;\n    }" { (expression_statement "FUN_0005b888(*param_1,param_1 + 0x43,*(undefined4 *)(puVar1 + 0xc),param_3);" (call_expression "FUN_0005b888(*param_1,param_1 + 0x43,*(undefined4 *)(puVar1 + 0xc),param_3)" identifier (argument_list "(*param_1,param_1 + 0x43,*(undefined4 *)(puVar1 + 0xc),param_3)" ( (pointer_expression "*param_1" * identifier) , (binary_expression "param_1 + 0x43" identifier + number_literal) , (pointer_expression "*(undefined4 *)(puVar1 + 0xc)" * (cast_expression "(undefined4 *)(puVar1 + 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar1 + 0xc)" ( (binary_expression "puVar1 + 0xc" identifier + number_literal) )))) , identifier ))) ;) (return_statement "return puVar1;" return identifier ;) })) })) (return_statement "return puVar1;" return identifier ;) })))
(translation_unit (function_definition TYPE (pointer_declarator * (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) )))) (compound_statement { (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (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 ( IDENT , IDENT , LIT , (binary_expression (subscript_expression IDENT [ LIT ]) + 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 = (binary_expression IDENT + LIT)) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT , (pointer_expression * IDENT) , (subscript_expression IDENT [ LIT ]) ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (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 (pointer_expression * IDENT) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT )))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) ))))) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (pointer_expression * IDENT) , (binary_expression IDENT + LIT) , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , IDENT ))) ;) (return_statement return IDENT ;) })) })) (return_statement return IDENT ;) })))
(function_definition "undefined1 *\nFUN_0005b910(undefined4 *param_1,undefined4 param_2,undefined4 *param_3,undefined4 param_4,\n            undefined4 param_5)\n\n{\n  undefined1 *puVar1;\n  undefined1 *puVar2;\n  undefined4 uVar3;\n  \n  uVar3 = *param_1;\n  puVar1 = (undefined1 *)FUN_00050924(uVar3,param_2,0,param_3[1] + 0x2d);\n  if (puVar1 != (undefined1 *)0x0) {\n    puVar2 = puVar1 + 0x2c;\n    (*(code *)PTR_memcpy_00190e2c)(puVar2,*param_3,param_3[1]);\n    FUN_0003f250(puVar2);\n    *(undefined1 **)(puVar1 + 0xc) = puVar2;\n    *puVar1 = (char)param_2;\n    uVar3 = FUN_00051210(uVar3,param_4,param_5);\n    *(undefined4 *)(puVar1 + 0x20) = uVar3;\n    if (1 < *(byte *)((int)param_1 + 0xc6)) {\n      FUN_0005b888(*param_1,param_1 + 0x43,*(undefined4 *)(puVar1 + 0xc),param_3);\n      return puVar1;\n    }\n  }\n  return puVar1;\n}" (type_identifier "undefined1") (pointer_declarator "*\nFUN_0005b910(undefined4 *param_1,undefined4 param_2,undefined4 *param_3,undefined4 param_4,\n            undefined4 param_5)" (* "*") (function_declarator "FUN_0005b910(undefined4 *param_1,undefined4 param_2,undefined4 *param_3,undefined4 param_4,\n            undefined4 param_5)" (identifier "FUN_0005b910") (parameter_list "(undefined4 *param_1,undefined4 param_2,undefined4 *param_3,undefined4 param_4,\n            undefined4 param_5)" (( "(") (parameter_declaration "undefined4 *param_1" (type_identifier "undefined4") (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) (, ",") (parameter_declaration "undefined4 param_2" (type_identifier "undefined4") (identifier "param_2")) (, ",") (parameter_declaration "undefined4 *param_3" (type_identifier "undefined4") (pointer_declarator "*param_3" (* "*") (identifier "param_3"))) (, ",") (parameter_declaration "undefined4 param_4" (type_identifier "undefined4") (identifier "param_4")) (, ",") (parameter_declaration "undefined4 param_5" (type_identifier "undefined4") (identifier "param_5")) () ")")))) (compound_statement "{\n  undefined1 *puVar1;\n  undefined1 *puVar2;\n  undefined4 uVar3;\n  \n  uVar3 = *param_1;\n  puVar1 = (undefined1 *)FUN_00050924(uVar3,param_2,0,param_3[1] + 0x2d);\n  if (puVar1 != (undefined1 *)0x0) {\n    puVar2 = puVar1 + 0x2c;\n    (*(code *)PTR_memcpy_00190e2c)(puVar2,*param_3,param_3[1]);\n    FUN_0003f250(puVar2);\n    *(undefined1 **)(puVar1 + 0xc) = puVar2;\n    *puVar1 = (char)param_2;\n    uVar3 = FUN_00051210(uVar3,param_4,param_5);\n    *(undefined4 *)(puVar1 + 0x20) = uVar3;\n    if (1 < *(byte *)((int)param_1 + 0xc6)) {\n      FUN_0005b888(*param_1,param_1 + 0x43,*(undefined4 *)(puVar1 + 0xc),param_3);\n      return puVar1;\n    }\n  }\n  return puVar1;\n}" ({ "{") (declaration "undefined1 *puVar1;" (type_identifier "undefined1") (pointer_declarator "*puVar1" (* "*") (identifier "puVar1")) (; ";")) (declaration "undefined1 *puVar2;" (type_identifier "undefined1") (pointer_declarator "*puVar2" (* "*") (identifier "puVar2")) (; ";")) (declaration "undefined4 uVar3;" (type_identifier "undefined4") (identifier "uVar3") (; ";")) (expression_statement "uVar3 = *param_1;" (assignment_expression "uVar3 = *param_1" (identifier "uVar3") (= "=") (pointer_expression "*param_1" (* "*") (identifier "param_1"))) (; ";")) (expression_statement "puVar1 = (undefined1 *)FUN_00050924(uVar3,param_2,0,param_3[1] + 0x2d);" (assignment_expression "puVar1 = (undefined1 *)FUN_00050924(uVar3,param_2,0,param_3[1] + 0x2d)" (identifier "puVar1") (= "=") (cast_expression "(undefined1 *)FUN_00050924(uVar3,param_2,0,param_3[1] + 0x2d)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_00050924(uVar3,param_2,0,param_3[1] + 0x2d)" (identifier "FUN_00050924") (argument_list "(uVar3,param_2,0,param_3[1] + 0x2d)" (( "(") (identifier "uVar3") (, ",") (identifier "param_2") (, ",") (number_literal "0") (, ",") (binary_expression "param_3[1] + 0x2d" (subscript_expression "param_3[1]" (identifier "param_3") ([ "[") (number_literal "1") (] "]")) (+ "+") (number_literal "0x2d")) () ")"))))) (; ";")) (if_statement "if (puVar1 != (undefined1 *)0x0) {\n    puVar2 = puVar1 + 0x2c;\n    (*(code *)PTR_memcpy_00190e2c)(puVar2,*param_3,param_3[1]);\n    FUN_0003f250(puVar2);\n    *(undefined1 **)(puVar1 + 0xc) = puVar2;\n    *puVar1 = (char)param_2;\n    uVar3 = FUN_00051210(uVar3,param_4,param_5);\n    *(undefined4 *)(puVar1 + 0x20) = uVar3;\n    if (1 < *(byte *)((int)param_1 + 0xc6)) {\n      FUN_0005b888(*param_1,param_1 + 0x43,*(undefined4 *)(puVar1 + 0xc),param_3);\n      return puVar1;\n    }\n  }" (if "if") (parenthesized_expression "(puVar1 != (undefined1 *)0x0)" (( "(") (binary_expression "puVar1 != (undefined1 *)0x0" (identifier "puVar1") (!= "!=") (cast_expression "(undefined1 *)0x0" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n    puVar2 = puVar1 + 0x2c;\n    (*(code *)PTR_memcpy_00190e2c)(puVar2,*param_3,param_3[1]);\n    FUN_0003f250(puVar2);\n    *(undefined1 **)(puVar1 + 0xc) = puVar2;\n    *puVar1 = (char)param_2;\n    uVar3 = FUN_00051210(uVar3,param_4,param_5);\n    *(undefined4 *)(puVar1 + 0x20) = uVar3;\n    if (1 < *(byte *)((int)param_1 + 0xc6)) {\n      FUN_0005b888(*param_1,param_1 + 0x43,*(undefined4 *)(puVar1 + 0xc),param_3);\n      return puVar1;\n    }\n  }" ({ "{") (expression_statement "puVar2 = puVar1 + 0x2c;" (assignment_expression "puVar2 = puVar1 + 0x2c" (identifier "puVar2") (= "=") (binary_expression "puVar1 + 0x2c" (identifier "puVar1") (+ "+") (number_literal "0x2c"))) (; ";")) (expression_statement "(*(code *)PTR_memcpy_00190e2c)(puVar2,*param_3,param_3[1]);" (call_expression "(*(code *)PTR_memcpy_00190e2c)(puVar2,*param_3,param_3[1])" (parenthesized_expression "(*(code *)PTR_memcpy_00190e2c)" (( "(") (pointer_expression "*(code *)PTR_memcpy_00190e2c" (* "*") (cast_expression "(code *)PTR_memcpy_00190e2c" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_memcpy_00190e2c"))) () ")")) (argument_list "(puVar2,*param_3,param_3[1])" (( "(") (identifier "puVar2") (, ",") (pointer_expression "*param_3" (* "*") (identifier "param_3")) (, ",") (subscript_expression "param_3[1]" (identifier "param_3") ([ "[") (number_literal "1") (] "]")) () ")"))) (; ";")) (expression_statement "FUN_0003f250(puVar2);" (call_expression "FUN_0003f250(puVar2)" (identifier "FUN_0003f250") (argument_list "(puVar2)" (( "(") (identifier "puVar2") () ")"))) (; ";")) (expression_statement "*(undefined1 **)(puVar1 + 0xc) = puVar2;" (assignment_expression "*(undefined1 **)(puVar1 + 0xc) = puVar2" (pointer_expression "*(undefined1 **)(puVar1 + 0xc)" (* "*") (cast_expression "(undefined1 **)(puVar1 + 0xc)" (( "(") (type_descriptor "undefined1 **" (type_identifier "undefined1") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar1 + 0xc)" (( "(") (binary_expression "puVar1 + 0xc" (identifier "puVar1") (+ "+") (number_literal "0xc")) () ")")))) (= "=") (identifier "puVar2")) (; ";")) (expression_statement "*puVar1 = (char)param_2;" (assignment_expression "*puVar1 = (char)param_2" (pointer_expression "*puVar1" (* "*") (identifier "puVar1")) (= "=") (cast_expression "(char)param_2" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (identifier "param_2"))) (; ";")) (expression_statement "uVar3 = FUN_00051210(uVar3,param_4,param_5);" (assignment_expression "uVar3 = FUN_00051210(uVar3,param_4,param_5)" (identifier "uVar3") (= "=") (call_expression "FUN_00051210(uVar3,param_4,param_5)" (identifier "FUN_00051210") (argument_list "(uVar3,param_4,param_5)" (( "(") (identifier "uVar3") (, ",") (identifier "param_4") (, ",") (identifier "param_5") () ")")))) (; ";")) (expression_statement "*(undefined4 *)(puVar1 + 0x20) = uVar3;" (assignment_expression "*(undefined4 *)(puVar1 + 0x20) = uVar3" (pointer_expression "*(undefined4 *)(puVar1 + 0x20)" (* "*") (cast_expression "(undefined4 *)(puVar1 + 0x20)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar1 + 0x20)" (( "(") (binary_expression "puVar1 + 0x20" (identifier "puVar1") (+ "+") (number_literal "0x20")) () ")")))) (= "=") (identifier "uVar3")) (; ";")) (if_statement "if (1 < *(byte *)((int)param_1 + 0xc6)) {\n      FUN_0005b888(*param_1,param_1 + 0x43,*(undefined4 *)(puVar1 + 0xc),param_3);\n      return puVar1;\n    }" (if "if") (parenthesized_expression "(1 < *(byte *)((int)param_1 + 0xc6))" (( "(") (binary_expression "1 < *(byte *)((int)param_1 + 0xc6)" (number_literal "1") (< "<") (pointer_expression "*(byte *)((int)param_1 + 0xc6)" (* "*") (cast_expression "(byte *)((int)param_1 + 0xc6)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)param_1 + 0xc6)" (( "(") (binary_expression "(int)param_1 + 0xc6" (cast_expression "(int)param_1" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_1")) (+ "+") (number_literal "0xc6")) () ")"))))) () ")")) (compound_statement "{\n      FUN_0005b888(*param_1,param_1 + 0x43,*(undefined4 *)(puVar1 + 0xc),param_3);\n      return puVar1;\n    }" ({ "{") (expression_statement "FUN_0005b888(*param_1,param_1 + 0x43,*(undefined4 *)(puVar1 + 0xc),param_3);" (call_expression "FUN_0005b888(*param_1,param_1 + 0x43,*(undefined4 *)(puVar1 + 0xc),param_3)" (identifier "FUN_0005b888") (argument_list "(*param_1,param_1 + 0x43,*(undefined4 *)(puVar1 + 0xc),param_3)" (( "(") (pointer_expression "*param_1" (* "*") (identifier "param_1")) (, ",") (binary_expression "param_1 + 0x43" (identifier "param_1") (+ "+") (number_literal "0x43")) (, ",") (pointer_expression "*(undefined4 *)(puVar1 + 0xc)" (* "*") (cast_expression "(undefined4 *)(puVar1 + 0xc)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar1 + 0xc)" (( "(") (binary_expression "puVar1 + 0xc" (identifier "puVar1") (+ "+") (number_literal "0xc")) () ")")))) (, ",") (identifier "param_3") () ")"))) (; ";")) (return_statement "return puVar1;" (return "return") (identifier "puVar1") (; ";")) (} "}"))) (} "}"))) (return_statement "return puVar1;" (return "return") (identifier "puVar1") (; ";")) (} "}")))
(translation_unit (function_definition type: (type_identifier) declarator: (pointer_declarator declarator: (function_declarator declarator: (identifier) parameters: (parameter_list (parameter_declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (parameter_declaration type: (type_identifier) declarator: (identifier)) (parameter_declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (parameter_declaration type: (type_identifier) declarator: (identifier)) (parameter_declaration type: (type_identifier) declarator: (identifier))))) body: (compound_statement (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (identifier)) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier) (number_literal) (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list (identifier) (pointer_expression argument: (identifier)) (subscript_expression argument: (identifier) index: (number_literal))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier)))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) 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: (pointer_expression argument: (identifier)) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier) (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: (number_literal))))) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (number_literal) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))))))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (pointer_expression argument: (identifier)) (binary_expression left: (identifier) right: (number_literal)) (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))))) (identifier)))) (return_statement (identifier)))))) (return_statement (identifier)))))

undefined1 *
MASKED(undefined4 *param_1,undefined4 param_2,undefined4 *param_3,undefined4 param_4,
            undefined4 param_5)

{
  undefined1 *puVar1;
  undefined1 *puVar2;
  undefined4 uVar3;
  
  uVar3 = *param_1;
  puVar1 = (undefined1 *)FUN_00050924(uVar3,param_2,0,param_3[1] + 0x2d);
  if (puVar1 != (undefined1 *)0x0) {
    puVar2 = puVar1 + 0x2c;
    (*(code *)PTR_memcpy_00190e2c)(puVar2,*param_3,param_3[1]);
    FUN_0003f250(puVar2);
    *(undefined1 **)(puVar1 + 0xc) = puVar2;
    *puVar1 = (char)param_2;
    uVar3 = FUN_00051210(uVar3,param_4,param_5);
    *(undefined4 *)(puVar1 + 0x20) = uVar3;
    if (1 < *(byte *)((int)param_1 + 0xc6)) {
      FUN_0005b888(*param_1,param_1 + 0x43,*(undefined4 *)(puVar1 + 0xc),param_3);
      return puVar1;
    }
  }
  return puVar1;
}

