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

{
  TriggerStep *z;
  sqlite3 *db;
  uint uVar1;
  undefined4 uVar2;
  TriggerStep *pTVar3;
  char *pcVar4;
  RenameToken *pRVar5;
  
  db = pParse->db;
  pTVar3 = (TriggerStep *)sqlite3DbMallocZero(db,(ulong)pName->n + 0x59);
  if (pTVar3 != (TriggerStep *)0x0) {
    z = pTVar3 + 1;
    memcpy(z,pName->z,(ulong)pName->n);
    sqlite3Dequote((char *)z);
    pTVar3->zTarget = (char *)z;
    pTVar3->op = op;
    pcVar4 = triggerSpanDup(db,zStart,zEnd);
    pTVar3->zSpan = pcVar4;
    if (1 < pParse->eParseMode) {
      pcVar4 = pTVar3->zTarget;
      pRVar5 = (RenameToken *)sqlite3DbMallocZero(pParse->db,0x20);
      if (pRVar5 != (RenameToken *)0x0) {
        pRVar5->p = pcVar4;
        uVar1 = pName->n;
        uVar2 = *(undefined4 *)&pName->field_0xc;
        (pRVar5->t).z = pName->z;
        (pRVar5->t).n = uVar1;
        *(undefined4 *)&(pRVar5->t).field_0xc = uVar2;
        pRVar5->pNext = pParse->pRename;
        pParse->pRename = pRVar5;
      }
    }
  }
  return pTVar3;
}



undefined1 *
FUN_0011bed0(undefined8 *param_1,undefined1 param_2,undefined8 *param_3,undefined8 param_4,
            undefined8 param_5)

{
  undefined1 *__dest;
  undefined1 *puVar1;
  undefined8 uVar2;
  undefined8 *puVar3;
  
  uVar2 = *param_1;
  puVar1 = (undefined1 *)FUN_0011b8f0(uVar2,(ulong)*(uint *)(param_3 + 1) + 0x59);
  if (puVar1 != (undefined1 *)0x0) {
    __dest = puVar1 + 0x58;
    memcpy(__dest,(void *)*param_3,(ulong)*(uint *)(param_3 + 1));
    FUN_0010f690(__dest);
    *(undefined1 **)(puVar1 + 0x18) = __dest;
    *puVar1 = param_2;
    uVar2 = FUN_0011be90(uVar2,param_4,param_5);
    *(undefined8 *)(puVar1 + 0x40) = uVar2;
    if (1 < *(byte *)((long)param_1 + 0x10e)) {
      uVar2 = *(undefined8 *)(puVar1 + 0x18);
      puVar3 = (undefined8 *)FUN_0011b8f0(*param_1,0x20);
      if (puVar3 != (undefined8 *)0x0) {
        *puVar3 = uVar2;
        uVar2 = param_3[1];
        puVar3[1] = *param_3;
        puVar3[2] = uVar2;
        puVar3[3] = param_1[0x32];
        param_1[0x32] = puVar3;
      }
    }
  }
  return puVar1;
}


PUSH R15
MOV R15D,ESI
PUSH R14
MOV R14,RDX
PUSH R13
PUSH R12
PUSH RBP
PUSH RBX
MOV RBX,RDI
SUB RSP,0x18
MOV RBP,qword ptr [RDI]
MOV ESI,dword ptr [RDX + 0x8]
MOV qword ptr [RSP],RCX
ADD RSI,0x59
MOV RDI,RBP
MOV qword ptr [RSP + 0x8],R8
CALL 0x0011b8f0
MOV R13,RAX
TEST RAX,RAX
JZ 0x0011bf4b
LEA R12,[RAX + 0x58]
MOV EDX,dword ptr [R14 + 0x8]
MOV RSI,qword ptr [R14]
MOV RDI,R12
CALL 0x0010a240
MOV RDI,R12
CALL 0x0010f690
MOV qword ptr [R13 + 0x18],R12
MOV RSI,qword ptr [RSP]
MOV RDI,RBP
MOV byte ptr [R13],R15B
MOV RDX,qword ptr [RSP + 0x8]
CALL 0x0011be90
MOV qword ptr [R13 + 0x40],RAX
CMP byte ptr [RBX + 0x10e],0x1
JA 0x0011bf60
ADD RSP,0x18
MOV RAX,R13
POP RBX
POP RBP
POP R12
POP R13
POP R14
POP R15
RET
MOV RDI,qword ptr [RBX]
MOV ESI,0x20
MOV RBP,qword ptr [R13 + 0x18]
CALL 0x0011b8f0
TEST RAX,RAX
JZ 0x0011bf4b
MOV qword ptr [RAX],RBP
MOVDQU XMM0,xmmword ptr [R14]
MOVUPS xmmword ptr [RAX + 0x8],XMM0
MOV RDX,qword ptr [RBX + 0x190]
MOV qword ptr [RAX + 0x18],RDX
MOV qword ptr [RBX + 0x190],RAX
JMP 0x0011bf4b
(translation_unit "undefined1 *\nFUN_0011bed0(undefined8 *param_1,undefined1 param_2,undefined8 *param_3,undefined8 param_4,\n            undefined8 param_5)\n\n{\n  undefined1 *__dest;\n  undefined1 *puVar1;\n  undefined8 uVar2;\n  undefined8 *puVar3;\n  \n  uVar2 = *param_1;\n  puVar1 = (undefined1 *)FUN_0011b8f0(uVar2,(ulong)*(uint *)(param_3 + 1) + 0x59);\n  if (puVar1 != (undefined1 *)0x0) {\n    __dest = puVar1 + 0x58;\n    memcpy(__dest,(void *)*param_3,(ulong)*(uint *)(param_3 + 1));\n    FUN_0010f690(__dest);\n    *(undefined1 **)(puVar1 + 0x18) = __dest;\n    *puVar1 = param_2;\n    uVar2 = FUN_0011be90(uVar2,param_4,param_5);\n    *(undefined8 *)(puVar1 + 0x40) = uVar2;\n    if (1 < *(byte *)((long)param_1 + 0x10e)) {\n      uVar2 = *(undefined8 *)(puVar1 + 0x18);\n      puVar3 = (undefined8 *)FUN_0011b8f0(*param_1,0x20);\n      if (puVar3 != (undefined8 *)0x0) {\n        *puVar3 = uVar2;\n        uVar2 = param_3[1];\n        puVar3[1] = *param_3;\n        puVar3[2] = uVar2;\n        puVar3[3] = param_1[0x32];\n        param_1[0x32] = puVar3;\n      }\n    }\n  }\n  return puVar1;\n}\n\n" (function_definition "undefined1 *\nFUN_0011bed0(undefined8 *param_1,undefined1 param_2,undefined8 *param_3,undefined8 param_4,\n            undefined8 param_5)\n\n{\n  undefined1 *__dest;\n  undefined1 *puVar1;\n  undefined8 uVar2;\n  undefined8 *puVar3;\n  \n  uVar2 = *param_1;\n  puVar1 = (undefined1 *)FUN_0011b8f0(uVar2,(ulong)*(uint *)(param_3 + 1) + 0x59);\n  if (puVar1 != (undefined1 *)0x0) {\n    __dest = puVar1 + 0x58;\n    memcpy(__dest,(void *)*param_3,(ulong)*(uint *)(param_3 + 1));\n    FUN_0010f690(__dest);\n    *(undefined1 **)(puVar1 + 0x18) = __dest;\n    *puVar1 = param_2;\n    uVar2 = FUN_0011be90(uVar2,param_4,param_5);\n    *(undefined8 *)(puVar1 + 0x40) = uVar2;\n    if (1 < *(byte *)((long)param_1 + 0x10e)) {\n      uVar2 = *(undefined8 *)(puVar1 + 0x18);\n      puVar3 = (undefined8 *)FUN_0011b8f0(*param_1,0x20);\n      if (puVar3 != (undefined8 *)0x0) {\n        *puVar3 = uVar2;\n        uVar2 = param_3[1];\n        puVar3[1] = *param_3;\n        puVar3[2] = uVar2;\n        puVar3[3] = param_1[0x32];\n        param_1[0x32] = puVar3;\n      }\n    }\n  }\n  return puVar1;\n}" type_identifier (pointer_declarator "*\nFUN_0011bed0(undefined8 *param_1,undefined1 param_2,undefined8 *param_3,undefined8 param_4,\n            undefined8 param_5)" * (function_declarator "FUN_0011bed0(undefined8 *param_1,undefined1 param_2,undefined8 *param_3,undefined8 param_4,\n            undefined8 param_5)" identifier (parameter_list "(undefined8 *param_1,undefined1 param_2,undefined8 *param_3,undefined8 param_4,\n            undefined8 param_5)" ( (parameter_declaration "undefined8 *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "undefined1 param_2" type_identifier identifier) , (parameter_declaration "undefined8 *param_3" type_identifier (pointer_declarator "*param_3" * identifier)) , (parameter_declaration "undefined8 param_4" type_identifier identifier) , (parameter_declaration "undefined8 param_5" type_identifier identifier) )))) (compound_statement "{\n  undefined1 *__dest;\n  undefined1 *puVar1;\n  undefined8 uVar2;\n  undefined8 *puVar3;\n  \n  uVar2 = *param_1;\n  puVar1 = (undefined1 *)FUN_0011b8f0(uVar2,(ulong)*(uint *)(param_3 + 1) + 0x59);\n  if (puVar1 != (undefined1 *)0x0) {\n    __dest = puVar1 + 0x58;\n    memcpy(__dest,(void *)*param_3,(ulong)*(uint *)(param_3 + 1));\n    FUN_0010f690(__dest);\n    *(undefined1 **)(puVar1 + 0x18) = __dest;\n    *puVar1 = param_2;\n    uVar2 = FUN_0011be90(uVar2,param_4,param_5);\n    *(undefined8 *)(puVar1 + 0x40) = uVar2;\n    if (1 < *(byte *)((long)param_1 + 0x10e)) {\n      uVar2 = *(undefined8 *)(puVar1 + 0x18);\n      puVar3 = (undefined8 *)FUN_0011b8f0(*param_1,0x20);\n      if (puVar3 != (undefined8 *)0x0) {\n        *puVar3 = uVar2;\n        uVar2 = param_3[1];\n        puVar3[1] = *param_3;\n        puVar3[2] = uVar2;\n        puVar3[3] = param_1[0x32];\n        param_1[0x32] = puVar3;\n      }\n    }\n  }\n  return puVar1;\n}" { (declaration "undefined1 *__dest;" type_identifier (pointer_declarator "*__dest" * identifier) ;) (declaration "undefined1 *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "undefined8 uVar2;" type_identifier identifier ;) (declaration "undefined8 *puVar3;" type_identifier (pointer_declarator "*puVar3" * identifier) ;) (expression_statement "uVar2 = *param_1;" (assignment_expression "uVar2 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (expression_statement "puVar1 = (undefined1 *)FUN_0011b8f0(uVar2,(ulong)*(uint *)(param_3 + 1) + 0x59);" (assignment_expression "puVar1 = (undefined1 *)FUN_0011b8f0(uVar2,(ulong)*(uint *)(param_3 + 1) + 0x59)" identifier = (cast_expression "(undefined1 *)FUN_0011b8f0(uVar2,(ulong)*(uint *)(param_3 + 1) + 0x59)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_0011b8f0(uVar2,(ulong)*(uint *)(param_3 + 1) + 0x59)" identifier (argument_list "(uVar2,(ulong)*(uint *)(param_3 + 1) + 0x59)" ( identifier , (binary_expression "(ulong)*(uint *)(param_3 + 1) + 0x59" (binary_expression "(ulong)*(uint *)(param_3 + 1)" (parenthesized_expression "(ulong)" ( identifier )) * (cast_expression "(uint *)(param_3 + 1)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 1)" ( (binary_expression "param_3 + 1" identifier + number_literal) )))) + number_literal) ))))) ;) (if_statement "if (puVar1 != (undefined1 *)0x0) {\n    __dest = puVar1 + 0x58;\n    memcpy(__dest,(void *)*param_3,(ulong)*(uint *)(param_3 + 1));\n    FUN_0010f690(__dest);\n    *(undefined1 **)(puVar1 + 0x18) = __dest;\n    *puVar1 = param_2;\n    uVar2 = FUN_0011be90(uVar2,param_4,param_5);\n    *(undefined8 *)(puVar1 + 0x40) = uVar2;\n    if (1 < *(byte *)((long)param_1 + 0x10e)) {\n      uVar2 = *(undefined8 *)(puVar1 + 0x18);\n      puVar3 = (undefined8 *)FUN_0011b8f0(*param_1,0x20);\n      if (puVar3 != (undefined8 *)0x0) {\n        *puVar3 = uVar2;\n        uVar2 = param_3[1];\n        puVar3[1] = *param_3;\n        puVar3[2] = uVar2;\n        puVar3[3] = param_1[0x32];\n        param_1[0x32] = puVar3;\n      }\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    __dest = puVar1 + 0x58;\n    memcpy(__dest,(void *)*param_3,(ulong)*(uint *)(param_3 + 1));\n    FUN_0010f690(__dest);\n    *(undefined1 **)(puVar1 + 0x18) = __dest;\n    *puVar1 = param_2;\n    uVar2 = FUN_0011be90(uVar2,param_4,param_5);\n    *(undefined8 *)(puVar1 + 0x40) = uVar2;\n    if (1 < *(byte *)((long)param_1 + 0x10e)) {\n      uVar2 = *(undefined8 *)(puVar1 + 0x18);\n      puVar3 = (undefined8 *)FUN_0011b8f0(*param_1,0x20);\n      if (puVar3 != (undefined8 *)0x0) {\n        *puVar3 = uVar2;\n        uVar2 = param_3[1];\n        puVar3[1] = *param_3;\n        puVar3[2] = uVar2;\n        puVar3[3] = param_1[0x32];\n        param_1[0x32] = puVar3;\n      }\n    }\n  }" { (expression_statement "__dest = puVar1 + 0x58;" (assignment_expression "__dest = puVar1 + 0x58" identifier = (binary_expression "puVar1 + 0x58" identifier + number_literal)) ;) (expression_statement "memcpy(__dest,(void *)*param_3,(ulong)*(uint *)(param_3 + 1));" (call_expression "memcpy(__dest,(void *)*param_3,(ulong)*(uint *)(param_3 + 1))" identifier (argument_list "(__dest,(void *)*param_3,(ulong)*(uint *)(param_3 + 1))" ( identifier , (cast_expression "(void *)*param_3" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_3" * identifier)) , (binary_expression "(ulong)*(uint *)(param_3 + 1)" (parenthesized_expression "(ulong)" ( identifier )) * (cast_expression "(uint *)(param_3 + 1)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 1)" ( (binary_expression "param_3 + 1" identifier + number_literal) )))) ))) ;) (expression_statement "FUN_0010f690(__dest);" (call_expression "FUN_0010f690(__dest)" identifier (argument_list "(__dest)" ( identifier ))) ;) (expression_statement "*(undefined1 **)(puVar1 + 0x18) = __dest;" (assignment_expression "*(undefined1 **)(puVar1 + 0x18) = __dest" (pointer_expression "*(undefined1 **)(puVar1 + 0x18)" * (cast_expression "(undefined1 **)(puVar1 + 0x18)" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar1 + 0x18)" ( (binary_expression "puVar1 + 0x18" identifier + number_literal) )))) = identifier) ;) (expression_statement "*puVar1 = param_2;" (assignment_expression "*puVar1 = param_2" (pointer_expression "*puVar1" * identifier) = identifier) ;) (expression_statement "uVar2 = FUN_0011be90(uVar2,param_4,param_5);" (assignment_expression "uVar2 = FUN_0011be90(uVar2,param_4,param_5)" identifier = (call_expression "FUN_0011be90(uVar2,param_4,param_5)" identifier (argument_list "(uVar2,param_4,param_5)" ( identifier , identifier , identifier )))) ;) (expression_statement "*(undefined8 *)(puVar1 + 0x40) = uVar2;" (assignment_expression "*(undefined8 *)(puVar1 + 0x40) = uVar2" (pointer_expression "*(undefined8 *)(puVar1 + 0x40)" * (cast_expression "(undefined8 *)(puVar1 + 0x40)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar1 + 0x40)" ( (binary_expression "puVar1 + 0x40" identifier + number_literal) )))) = identifier) ;) (if_statement "if (1 < *(byte *)((long)param_1 + 0x10e)) {\n      uVar2 = *(undefined8 *)(puVar1 + 0x18);\n      puVar3 = (undefined8 *)FUN_0011b8f0(*param_1,0x20);\n      if (puVar3 != (undefined8 *)0x0) {\n        *puVar3 = uVar2;\n        uVar2 = param_3[1];\n        puVar3[1] = *param_3;\n        puVar3[2] = uVar2;\n        puVar3[3] = param_1[0x32];\n        param_1[0x32] = puVar3;\n      }\n    }" if (parenthesized_expression "(1 < *(byte *)((long)param_1 + 0x10e))" ( (binary_expression "1 < *(byte *)((long)param_1 + 0x10e)" number_literal < (pointer_expression "*(byte *)((long)param_1 + 0x10e)" * (cast_expression "(byte *)((long)param_1 + 0x10e)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_1 + 0x10e)" ( (binary_expression "(long)param_1 + 0x10e" (cast_expression "(long)param_1" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) ))))) )) (compound_statement "{\n      uVar2 = *(undefined8 *)(puVar1 + 0x18);\n      puVar3 = (undefined8 *)FUN_0011b8f0(*param_1,0x20);\n      if (puVar3 != (undefined8 *)0x0) {\n        *puVar3 = uVar2;\n        uVar2 = param_3[1];\n        puVar3[1] = *param_3;\n        puVar3[2] = uVar2;\n        puVar3[3] = param_1[0x32];\n        param_1[0x32] = puVar3;\n      }\n    }" { (expression_statement "uVar2 = *(undefined8 *)(puVar1 + 0x18);" (assignment_expression "uVar2 = *(undefined8 *)(puVar1 + 0x18)" identifier = (pointer_expression "*(undefined8 *)(puVar1 + 0x18)" * (cast_expression "(undefined8 *)(puVar1 + 0x18)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar1 + 0x18)" ( (binary_expression "puVar1 + 0x18" identifier + number_literal) ))))) ;) (expression_statement "puVar3 = (undefined8 *)FUN_0011b8f0(*param_1,0x20);" (assignment_expression "puVar3 = (undefined8 *)FUN_0011b8f0(*param_1,0x20)" identifier = (cast_expression "(undefined8 *)FUN_0011b8f0(*param_1,0x20)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_0011b8f0(*param_1,0x20)" identifier (argument_list "(*param_1,0x20)" ( (pointer_expression "*param_1" * identifier) , number_literal ))))) ;) (if_statement "if (puVar3 != (undefined8 *)0x0) {\n        *puVar3 = uVar2;\n        uVar2 = param_3[1];\n        puVar3[1] = *param_3;\n        puVar3[2] = uVar2;\n        puVar3[3] = param_1[0x32];\n        param_1[0x32] = puVar3;\n      }" if (parenthesized_expression "(puVar3 != (undefined8 *)0x0)" ( (binary_expression "puVar3 != (undefined8 *)0x0" identifier != (cast_expression "(undefined8 *)0x0" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        *puVar3 = uVar2;\n        uVar2 = param_3[1];\n        puVar3[1] = *param_3;\n        puVar3[2] = uVar2;\n        puVar3[3] = param_1[0x32];\n        param_1[0x32] = puVar3;\n      }" { (expression_statement "*puVar3 = uVar2;" (assignment_expression "*puVar3 = uVar2" (pointer_expression "*puVar3" * identifier) = identifier) ;) (expression_statement "uVar2 = param_3[1];" (assignment_expression "uVar2 = param_3[1]" identifier = (subscript_expression "param_3[1]" identifier [ number_literal ])) ;) (expression_statement "puVar3[1] = *param_3;" (assignment_expression "puVar3[1] = *param_3" (subscript_expression "puVar3[1]" identifier [ number_literal ]) = (pointer_expression "*param_3" * identifier)) ;) (expression_statement "puVar3[2] = uVar2;" (assignment_expression "puVar3[2] = uVar2" (subscript_expression "puVar3[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar3[3] = param_1[0x32];" (assignment_expression "puVar3[3] = param_1[0x32]" (subscript_expression "puVar3[3]" identifier [ number_literal ]) = (subscript_expression "param_1[0x32]" identifier [ number_literal ])) ;) (expression_statement "param_1[0x32] = puVar3;" (assignment_expression "param_1[0x32] = puVar3" (subscript_expression "param_1[0x32]" identifier [ number_literal ]) = 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 *z;\n  sqlite3 *db;\n  uint uVar1;\n  undefined4 uVar2;\n  TriggerStep *pTVar3;\n  char *pcVar4;\n  RenameToken *pRVar5;\n  \n  db = pParse->db;\n  pTVar3 = (TriggerStep *)sqlite3DbMallocZero(db,(ulong)pName->n + 0x59);\n  if (pTVar3 != (TriggerStep *)0x0) {\n    z = pTVar3 + 1;\n    memcpy(z,pName->z,(ulong)pName->n);\n    sqlite3Dequote((char *)z);\n    pTVar3->zTarget = (char *)z;\n    pTVar3->op = op;\n    pcVar4 = triggerSpanDup(db,zStart,zEnd);\n    pTVar3->zSpan = pcVar4;\n    if (1 < pParse->eParseMode) {\n      pcVar4 = pTVar3->zTarget;\n      pRVar5 = (RenameToken *)sqlite3DbMallocZero(pParse->db,0x20);\n      if (pRVar5 != (RenameToken *)0x0) {\n        pRVar5->p = pcVar4;\n        uVar1 = pName->n;\n        uVar2 = *(undefined4 *)&pName->field_0xc;\n        (pRVar5->t).z = pName->z;\n        (pRVar5->t).n = uVar1;\n        *(undefined4 *)&(pRVar5->t).field_0xc = uVar2;\n        pRVar5->pNext = pParse->pRename;\n        pParse->pRename = pRVar5;\n      }\n    }\n  }\n  return pTVar3;\n}\n\n" (function_definition "TriggerStep * triggerStepAllocate(Parse *pParse,u8 op,Token *pName,char *zStart,char *zEnd)\n\n{\n  TriggerStep *z;\n  sqlite3 *db;\n  uint uVar1;\n  undefined4 uVar2;\n  TriggerStep *pTVar3;\n  char *pcVar4;\n  RenameToken *pRVar5;\n  \n  db = pParse->db;\n  pTVar3 = (TriggerStep *)sqlite3DbMallocZero(db,(ulong)pName->n + 0x59);\n  if (pTVar3 != (TriggerStep *)0x0) {\n    z = pTVar3 + 1;\n    memcpy(z,pName->z,(ulong)pName->n);\n    sqlite3Dequote((char *)z);\n    pTVar3->zTarget = (char *)z;\n    pTVar3->op = op;\n    pcVar4 = triggerSpanDup(db,zStart,zEnd);\n    pTVar3->zSpan = pcVar4;\n    if (1 < pParse->eParseMode) {\n      pcVar4 = pTVar3->zTarget;\n      pRVar5 = (RenameToken *)sqlite3DbMallocZero(pParse->db,0x20);\n      if (pRVar5 != (RenameToken *)0x0) {\n        pRVar5->p = pcVar4;\n        uVar1 = pName->n;\n        uVar2 = *(undefined4 *)&pName->field_0xc;\n        (pRVar5->t).z = pName->z;\n        (pRVar5->t).n = uVar1;\n        *(undefined4 *)&(pRVar5->t).field_0xc = uVar2;\n        pRVar5->pNext = pParse->pRename;\n        pParse->pRename = pRVar5;\n      }\n    }\n  }\n  return pTVar3;\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 *z;\n  sqlite3 *db;\n  uint uVar1;\n  undefined4 uVar2;\n  TriggerStep *pTVar3;\n  char *pcVar4;\n  RenameToken *pRVar5;\n  \n  db = pParse->db;\n  pTVar3 = (TriggerStep *)sqlite3DbMallocZero(db,(ulong)pName->n + 0x59);\n  if (pTVar3 != (TriggerStep *)0x0) {\n    z = pTVar3 + 1;\n    memcpy(z,pName->z,(ulong)pName->n);\n    sqlite3Dequote((char *)z);\n    pTVar3->zTarget = (char *)z;\n    pTVar3->op = op;\n    pcVar4 = triggerSpanDup(db,zStart,zEnd);\n    pTVar3->zSpan = pcVar4;\n    if (1 < pParse->eParseMode) {\n      pcVar4 = pTVar3->zTarget;\n      pRVar5 = (RenameToken *)sqlite3DbMallocZero(pParse->db,0x20);\n      if (pRVar5 != (RenameToken *)0x0) {\n        pRVar5->p = pcVar4;\n        uVar1 = pName->n;\n        uVar2 = *(undefined4 *)&pName->field_0xc;\n        (pRVar5->t).z = pName->z;\n        (pRVar5->t).n = uVar1;\n        *(undefined4 *)&(pRVar5->t).field_0xc = uVar2;\n        pRVar5->pNext = pParse->pRename;\n        pParse->pRename = pRVar5;\n      }\n    }\n  }\n  return pTVar3;\n}" { (declaration "TriggerStep *z;" type_identifier (pointer_declarator "*z" * identifier) ;) (declaration "sqlite3 *db;" type_identifier (pointer_declarator "*db" * identifier) ;) (declaration "uint uVar1;" type_identifier identifier ;) (declaration "undefined4 uVar2;" type_identifier identifier ;) (declaration "TriggerStep *pTVar3;" type_identifier (pointer_declarator "*pTVar3" * identifier) ;) (declaration "char *pcVar4;" primitive_type (pointer_declarator "*pcVar4" * identifier) ;) (declaration "RenameToken *pRVar5;" type_identifier (pointer_declarator "*pRVar5" * identifier) ;) (expression_statement "db = pParse->db;" (assignment_expression "db = pParse->db" identifier = (field_expression "pParse->db" identifier -> field_identifier)) ;) (expression_statement "pTVar3 = (TriggerStep *)sqlite3DbMallocZero(db,(ulong)pName->n + 0x59);" (assignment_expression "pTVar3 = (TriggerStep *)sqlite3DbMallocZero(db,(ulong)pName->n + 0x59)" identifier = (cast_expression "(TriggerStep *)sqlite3DbMallocZero(db,(ulong)pName->n + 0x59)" ( (type_descriptor "TriggerStep *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "sqlite3DbMallocZero(db,(ulong)pName->n + 0x59)" identifier (argument_list "(db,(ulong)pName->n + 0x59)" ( identifier , (binary_expression "(ulong)pName->n + 0x59" (cast_expression "(ulong)pName->n" ( (type_descriptor "ulong" type_identifier) ) (field_expression "pName->n" identifier -> field_identifier)) + number_literal) ))))) ;) (if_statement "if (pTVar3 != (TriggerStep *)0x0) {\n    z = pTVar3 + 1;\n    memcpy(z,pName->z,(ulong)pName->n);\n    sqlite3Dequote((char *)z);\n    pTVar3->zTarget = (char *)z;\n    pTVar3->op = op;\n    pcVar4 = triggerSpanDup(db,zStart,zEnd);\n    pTVar3->zSpan = pcVar4;\n    if (1 < pParse->eParseMode) {\n      pcVar4 = pTVar3->zTarget;\n      pRVar5 = (RenameToken *)sqlite3DbMallocZero(pParse->db,0x20);\n      if (pRVar5 != (RenameToken *)0x0) {\n        pRVar5->p = pcVar4;\n        uVar1 = pName->n;\n        uVar2 = *(undefined4 *)&pName->field_0xc;\n        (pRVar5->t).z = pName->z;\n        (pRVar5->t).n = uVar1;\n        *(undefined4 *)&(pRVar5->t).field_0xc = uVar2;\n        pRVar5->pNext = pParse->pRename;\n        pParse->pRename = pRVar5;\n      }\n    }\n  }" if (parenthesized_expression "(pTVar3 != (TriggerStep *)0x0)" ( (binary_expression "pTVar3 != (TriggerStep *)0x0" identifier != (cast_expression "(TriggerStep *)0x0" ( (type_descriptor "TriggerStep *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    z = pTVar3 + 1;\n    memcpy(z,pName->z,(ulong)pName->n);\n    sqlite3Dequote((char *)z);\n    pTVar3->zTarget = (char *)z;\n    pTVar3->op = op;\n    pcVar4 = triggerSpanDup(db,zStart,zEnd);\n    pTVar3->zSpan = pcVar4;\n    if (1 < pParse->eParseMode) {\n      pcVar4 = pTVar3->zTarget;\n      pRVar5 = (RenameToken *)sqlite3DbMallocZero(pParse->db,0x20);\n      if (pRVar5 != (RenameToken *)0x0) {\n        pRVar5->p = pcVar4;\n        uVar1 = pName->n;\n        uVar2 = *(undefined4 *)&pName->field_0xc;\n        (pRVar5->t).z = pName->z;\n        (pRVar5->t).n = uVar1;\n        *(undefined4 *)&(pRVar5->t).field_0xc = uVar2;\n        pRVar5->pNext = pParse->pRename;\n        pParse->pRename = pRVar5;\n      }\n    }\n  }" { (expression_statement "z = pTVar3 + 1;" (assignment_expression "z = pTVar3 + 1" identifier = (binary_expression "pTVar3 + 1" identifier + number_literal)) ;) (expression_statement "memcpy(z,pName->z,(ulong)pName->n);" (call_expression "memcpy(z,pName->z,(ulong)pName->n)" identifier (argument_list "(z,pName->z,(ulong)pName->n)" ( identifier , (field_expression "pName->z" identifier -> field_identifier) , (cast_expression "(ulong)pName->n" ( (type_descriptor "ulong" type_identifier) ) (field_expression "pName->n" identifier -> field_identifier)) ))) ;) (expression_statement "sqlite3Dequote((char *)z);" (call_expression "sqlite3Dequote((char *)z)" identifier (argument_list "((char *)z)" ( (cast_expression "(char *)z" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) ))) ;) (expression_statement "pTVar3->zTarget = (char *)z;" (assignment_expression "pTVar3->zTarget = (char *)z" (field_expression "pTVar3->zTarget" identifier -> field_identifier) = (cast_expression "(char *)z" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "pTVar3->op = op;" (assignment_expression "pTVar3->op = op" (field_expression "pTVar3->op" identifier -> field_identifier) = identifier) ;) (expression_statement "pcVar4 = triggerSpanDup(db,zStart,zEnd);" (assignment_expression "pcVar4 = triggerSpanDup(db,zStart,zEnd)" identifier = (call_expression "triggerSpanDup(db,zStart,zEnd)" identifier (argument_list "(db,zStart,zEnd)" ( identifier , identifier , identifier )))) ;) (expression_statement "pTVar3->zSpan = pcVar4;" (assignment_expression "pTVar3->zSpan = pcVar4" (field_expression "pTVar3->zSpan" identifier -> field_identifier) = identifier) ;) (if_statement "if (1 < pParse->eParseMode) {\n      pcVar4 = pTVar3->zTarget;\n      pRVar5 = (RenameToken *)sqlite3DbMallocZero(pParse->db,0x20);\n      if (pRVar5 != (RenameToken *)0x0) {\n        pRVar5->p = pcVar4;\n        uVar1 = pName->n;\n        uVar2 = *(undefined4 *)&pName->field_0xc;\n        (pRVar5->t).z = pName->z;\n        (pRVar5->t).n = uVar1;\n        *(undefined4 *)&(pRVar5->t).field_0xc = uVar2;\n        pRVar5->pNext = pParse->pRename;\n        pParse->pRename = pRVar5;\n      }\n    }" if (parenthesized_expression "(1 < pParse->eParseMode)" ( (binary_expression "1 < pParse->eParseMode" number_literal < (field_expression "pParse->eParseMode" identifier -> field_identifier)) )) (compound_statement "{\n      pcVar4 = pTVar3->zTarget;\n      pRVar5 = (RenameToken *)sqlite3DbMallocZero(pParse->db,0x20);\n      if (pRVar5 != (RenameToken *)0x0) {\n        pRVar5->p = pcVar4;\n        uVar1 = pName->n;\n        uVar2 = *(undefined4 *)&pName->field_0xc;\n        (pRVar5->t).z = pName->z;\n        (pRVar5->t).n = uVar1;\n        *(undefined4 *)&(pRVar5->t).field_0xc = uVar2;\n        pRVar5->pNext = pParse->pRename;\n        pParse->pRename = pRVar5;\n      }\n    }" { (expression_statement "pcVar4 = pTVar3->zTarget;" (assignment_expression "pcVar4 = pTVar3->zTarget" identifier = (field_expression "pTVar3->zTarget" identifier -> field_identifier)) ;) (expression_statement "pRVar5 = (RenameToken *)sqlite3DbMallocZero(pParse->db,0x20);" (assignment_expression "pRVar5 = (RenameToken *)sqlite3DbMallocZero(pParse->db,0x20)" identifier = (cast_expression "(RenameToken *)sqlite3DbMallocZero(pParse->db,0x20)" ( (type_descriptor "RenameToken *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "sqlite3DbMallocZero(pParse->db,0x20)" identifier (argument_list "(pParse->db,0x20)" ( (field_expression "pParse->db" identifier -> field_identifier) , number_literal ))))) ;) (if_statement "if (pRVar5 != (RenameToken *)0x0) {\n        pRVar5->p = pcVar4;\n        uVar1 = pName->n;\n        uVar2 = *(undefined4 *)&pName->field_0xc;\n        (pRVar5->t).z = pName->z;\n        (pRVar5->t).n = uVar1;\n        *(undefined4 *)&(pRVar5->t).field_0xc = uVar2;\n        pRVar5->pNext = pParse->pRename;\n        pParse->pRename = pRVar5;\n      }" if (parenthesized_expression "(pRVar5 != (RenameToken *)0x0)" ( (binary_expression "pRVar5 != (RenameToken *)0x0" identifier != (cast_expression "(RenameToken *)0x0" ( (type_descriptor "RenameToken *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        pRVar5->p = pcVar4;\n        uVar1 = pName->n;\n        uVar2 = *(undefined4 *)&pName->field_0xc;\n        (pRVar5->t).z = pName->z;\n        (pRVar5->t).n = uVar1;\n        *(undefined4 *)&(pRVar5->t).field_0xc = uVar2;\n        pRVar5->pNext = pParse->pRename;\n        pParse->pRename = pRVar5;\n      }" { (expression_statement "pRVar5->p = pcVar4;" (assignment_expression "pRVar5->p = pcVar4" (field_expression "pRVar5->p" identifier -> field_identifier) = identifier) ;) (expression_statement "uVar1 = pName->n;" (assignment_expression "uVar1 = pName->n" identifier = (field_expression "pName->n" identifier -> field_identifier)) ;) (expression_statement "uVar2 = *(undefined4 *)&pName->field_0xc;" (assignment_expression "uVar2 = *(undefined4 *)&pName->field_0xc" identifier = (pointer_expression "*(undefined4 *)&pName->field_0xc" * (cast_expression "(undefined4 *)&pName->field_0xc" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&pName->field_0xc" & (field_expression "pName->field_0xc" identifier -> field_identifier))))) ;) (expression_statement "(pRVar5->t).z = pName->z;" (assignment_expression "(pRVar5->t).z = pName->z" (field_expression "(pRVar5->t).z" (parenthesized_expression "(pRVar5->t)" ( (field_expression "pRVar5->t" identifier -> field_identifier) )) . field_identifier) = (field_expression "pName->z" identifier -> field_identifier)) ;) (expression_statement "(pRVar5->t).n = uVar1;" (assignment_expression "(pRVar5->t).n = uVar1" (field_expression "(pRVar5->t).n" (parenthesized_expression "(pRVar5->t)" ( (field_expression "pRVar5->t" identifier -> field_identifier) )) . field_identifier) = identifier) ;) (expression_statement "*(undefined4 *)&(pRVar5->t).field_0xc = uVar2;" (assignment_expression "*(undefined4 *)&(pRVar5->t).field_0xc = uVar2" (pointer_expression "*(undefined4 *)&(pRVar5->t).field_0xc" * (cast_expression "(undefined4 *)&(pRVar5->t).field_0xc" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&(pRVar5->t).field_0xc" & (field_expression "(pRVar5->t).field_0xc" (parenthesized_expression "(pRVar5->t)" ( (field_expression "pRVar5->t" identifier -> field_identifier) )) . field_identifier)))) = identifier) ;) (expression_statement "pRVar5->pNext = pParse->pRename;" (assignment_expression "pRVar5->pNext = pParse->pRename" (field_expression "pRVar5->pNext" identifier -> field_identifier) = (field_expression "pParse->pRename" identifier -> field_identifier)) ;) (expression_statement "pParse->pRename = pRVar5;" (assignment_expression "pParse->pRename = pRVar5" (field_expression "pParse->pRename" identifier -> field_identifier) = identifier) ;) })) })) })) (return_statement "return pTVar3;" return identifier ;) })))
(translation_unit "undefined1 *\nFUN_0011bed0(undefined8 *param_1,undefined1 param_2,undefined8 *param_3,undefined8 param_4,\n            undefined8 param_5)\n\n{\n  undefined1 *__dest;\n  undefined1 *puVar1;\n  undefined8 uVar2;\n  undefined8 *puVar3;\n  \n  uVar2 = *param_1;\n  puVar1 = (undefined1 *)FUN_0011b8f0(uVar2,(ulong)*(uint *)(param_3 + 1) + 0x59);\n  if (puVar1 != (undefined1 *)0x0) {\n    __dest = puVar1 + 0x58;\n    memcpy(__dest,(void *)*param_3,(ulong)*(uint *)(param_3 + 1));\n    FUN_0010f690(__dest);\n    *(undefined1 **)(puVar1 + 0x18) = __dest;\n    *puVar1 = param_2;\n    uVar2 = FUN_0011be90(uVar2,param_4,param_5);\n    *(undefined8 *)(puVar1 + 0x40) = uVar2;\n    if (1 < *(byte *)((long)param_1 + 0x10e)) {\n      uVar2 = *(undefined8 *)(puVar1 + 0x18);\n      puVar3 = (undefined8 *)FUN_0011b8f0(*param_1,0x20);\n      if (puVar3 != (undefined8 *)0x0) {\n        *puVar3 = uVar2;\n        uVar2 = param_3[1];\n        puVar3[1] = *param_3;\n        puVar3[2] = uVar2;\n        puVar3[3] = param_1[0x32];\n        param_1[0x32] = puVar3;\n      }\n    }\n  }\n  return puVar1;\n}\n\n" (function_definition "undefined1 *\nFUN_0011bed0(undefined8 *param_1,undefined1 param_2,undefined8 *param_3,undefined8 param_4,\n            undefined8 param_5)\n\n{\n  undefined1 *__dest;\n  undefined1 *puVar1;\n  undefined8 uVar2;\n  undefined8 *puVar3;\n  \n  uVar2 = *param_1;\n  puVar1 = (undefined1 *)FUN_0011b8f0(uVar2,(ulong)*(uint *)(param_3 + 1) + 0x59);\n  if (puVar1 != (undefined1 *)0x0) {\n    __dest = puVar1 + 0x58;\n    memcpy(__dest,(void *)*param_3,(ulong)*(uint *)(param_3 + 1));\n    FUN_0010f690(__dest);\n    *(undefined1 **)(puVar1 + 0x18) = __dest;\n    *puVar1 = param_2;\n    uVar2 = FUN_0011be90(uVar2,param_4,param_5);\n    *(undefined8 *)(puVar1 + 0x40) = uVar2;\n    if (1 < *(byte *)((long)param_1 + 0x10e)) {\n      uVar2 = *(undefined8 *)(puVar1 + 0x18);\n      puVar3 = (undefined8 *)FUN_0011b8f0(*param_1,0x20);\n      if (puVar3 != (undefined8 *)0x0) {\n        *puVar3 = uVar2;\n        uVar2 = param_3[1];\n        puVar3[1] = *param_3;\n        puVar3[2] = uVar2;\n        puVar3[3] = param_1[0x32];\n        param_1[0x32] = puVar3;\n      }\n    }\n  }\n  return puVar1;\n}" type_identifier (pointer_declarator "*\nFUN_0011bed0(undefined8 *param_1,undefined1 param_2,undefined8 *param_3,undefined8 param_4,\n            undefined8 param_5)" * (function_declarator "FUN_0011bed0(undefined8 *param_1,undefined1 param_2,undefined8 *param_3,undefined8 param_4,\n            undefined8 param_5)" identifier (parameter_list "(undefined8 *param_1,undefined1 param_2,undefined8 *param_3,undefined8 param_4,\n            undefined8 param_5)" ( (parameter_declaration "undefined8 *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "undefined1 param_2" type_identifier identifier) , (parameter_declaration "undefined8 *param_3" type_identifier (pointer_declarator "*param_3" * identifier)) , (parameter_declaration "undefined8 param_4" type_identifier identifier) , (parameter_declaration "undefined8 param_5" type_identifier identifier) )))) (compound_statement "{\n  undefined1 *__dest;\n  undefined1 *puVar1;\n  undefined8 uVar2;\n  undefined8 *puVar3;\n  \n  uVar2 = *param_1;\n  puVar1 = (undefined1 *)FUN_0011b8f0(uVar2,(ulong)*(uint *)(param_3 + 1) + 0x59);\n  if (puVar1 != (undefined1 *)0x0) {\n    __dest = puVar1 + 0x58;\n    memcpy(__dest,(void *)*param_3,(ulong)*(uint *)(param_3 + 1));\n    FUN_0010f690(__dest);\n    *(undefined1 **)(puVar1 + 0x18) = __dest;\n    *puVar1 = param_2;\n    uVar2 = FUN_0011be90(uVar2,param_4,param_5);\n    *(undefined8 *)(puVar1 + 0x40) = uVar2;\n    if (1 < *(byte *)((long)param_1 + 0x10e)) {\n      uVar2 = *(undefined8 *)(puVar1 + 0x18);\n      puVar3 = (undefined8 *)FUN_0011b8f0(*param_1,0x20);\n      if (puVar3 != (undefined8 *)0x0) {\n        *puVar3 = uVar2;\n        uVar2 = param_3[1];\n        puVar3[1] = *param_3;\n        puVar3[2] = uVar2;\n        puVar3[3] = param_1[0x32];\n        param_1[0x32] = puVar3;\n      }\n    }\n  }\n  return puVar1;\n}" { (declaration "undefined1 *__dest;" type_identifier (pointer_declarator "*__dest" * identifier) ;) (declaration "undefined1 *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "undefined8 uVar2;" type_identifier identifier ;) (declaration "undefined8 *puVar3;" type_identifier (pointer_declarator "*puVar3" * identifier) ;) (expression_statement "uVar2 = *param_1;" (assignment_expression "uVar2 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (expression_statement "puVar1 = (undefined1 *)FUN_0011b8f0(uVar2,(ulong)*(uint *)(param_3 + 1) + 0x59);" (assignment_expression "puVar1 = (undefined1 *)FUN_0011b8f0(uVar2,(ulong)*(uint *)(param_3 + 1) + 0x59)" identifier = (cast_expression "(undefined1 *)FUN_0011b8f0(uVar2,(ulong)*(uint *)(param_3 + 1) + 0x59)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_0011b8f0(uVar2,(ulong)*(uint *)(param_3 + 1) + 0x59)" identifier (argument_list "(uVar2,(ulong)*(uint *)(param_3 + 1) + 0x59)" ( identifier , (binary_expression "(ulong)*(uint *)(param_3 + 1) + 0x59" (binary_expression "(ulong)*(uint *)(param_3 + 1)" (parenthesized_expression "(ulong)" ( identifier )) * (cast_expression "(uint *)(param_3 + 1)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 1)" ( (binary_expression "param_3 + 1" identifier + number_literal) )))) + number_literal) ))))) ;) (if_statement "if (puVar1 != (undefined1 *)0x0) {\n    __dest = puVar1 + 0x58;\n    memcpy(__dest,(void *)*param_3,(ulong)*(uint *)(param_3 + 1));\n    FUN_0010f690(__dest);\n    *(undefined1 **)(puVar1 + 0x18) = __dest;\n    *puVar1 = param_2;\n    uVar2 = FUN_0011be90(uVar2,param_4,param_5);\n    *(undefined8 *)(puVar1 + 0x40) = uVar2;\n    if (1 < *(byte *)((long)param_1 + 0x10e)) {\n      uVar2 = *(undefined8 *)(puVar1 + 0x18);\n      puVar3 = (undefined8 *)FUN_0011b8f0(*param_1,0x20);\n      if (puVar3 != (undefined8 *)0x0) {\n        *puVar3 = uVar2;\n        uVar2 = param_3[1];\n        puVar3[1] = *param_3;\n        puVar3[2] = uVar2;\n        puVar3[3] = param_1[0x32];\n        param_1[0x32] = puVar3;\n      }\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    __dest = puVar1 + 0x58;\n    memcpy(__dest,(void *)*param_3,(ulong)*(uint *)(param_3 + 1));\n    FUN_0010f690(__dest);\n    *(undefined1 **)(puVar1 + 0x18) = __dest;\n    *puVar1 = param_2;\n    uVar2 = FUN_0011be90(uVar2,param_4,param_5);\n    *(undefined8 *)(puVar1 + 0x40) = uVar2;\n    if (1 < *(byte *)((long)param_1 + 0x10e)) {\n      uVar2 = *(undefined8 *)(puVar1 + 0x18);\n      puVar3 = (undefined8 *)FUN_0011b8f0(*param_1,0x20);\n      if (puVar3 != (undefined8 *)0x0) {\n        *puVar3 = uVar2;\n        uVar2 = param_3[1];\n        puVar3[1] = *param_3;\n        puVar3[2] = uVar2;\n        puVar3[3] = param_1[0x32];\n        param_1[0x32] = puVar3;\n      }\n    }\n  }" { (expression_statement "__dest = puVar1 + 0x58;" (assignment_expression "__dest = puVar1 + 0x58" identifier = (binary_expression "puVar1 + 0x58" identifier + number_literal)) ;) (expression_statement "memcpy(__dest,(void *)*param_3,(ulong)*(uint *)(param_3 + 1));" (call_expression "memcpy(__dest,(void *)*param_3,(ulong)*(uint *)(param_3 + 1))" identifier (argument_list "(__dest,(void *)*param_3,(ulong)*(uint *)(param_3 + 1))" ( identifier , (cast_expression "(void *)*param_3" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_3" * identifier)) , (binary_expression "(ulong)*(uint *)(param_3 + 1)" (parenthesized_expression "(ulong)" ( identifier )) * (cast_expression "(uint *)(param_3 + 1)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 1)" ( (binary_expression "param_3 + 1" identifier + number_literal) )))) ))) ;) (expression_statement "FUN_0010f690(__dest);" (call_expression "FUN_0010f690(__dest)" identifier (argument_list "(__dest)" ( identifier ))) ;) (expression_statement "*(undefined1 **)(puVar1 + 0x18) = __dest;" (assignment_expression "*(undefined1 **)(puVar1 + 0x18) = __dest" (pointer_expression "*(undefined1 **)(puVar1 + 0x18)" * (cast_expression "(undefined1 **)(puVar1 + 0x18)" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar1 + 0x18)" ( (binary_expression "puVar1 + 0x18" identifier + number_literal) )))) = identifier) ;) (expression_statement "*puVar1 = param_2;" (assignment_expression "*puVar1 = param_2" (pointer_expression "*puVar1" * identifier) = identifier) ;) (expression_statement "uVar2 = FUN_0011be90(uVar2,param_4,param_5);" (assignment_expression "uVar2 = FUN_0011be90(uVar2,param_4,param_5)" identifier = (call_expression "FUN_0011be90(uVar2,param_4,param_5)" identifier (argument_list "(uVar2,param_4,param_5)" ( identifier , identifier , identifier )))) ;) (expression_statement "*(undefined8 *)(puVar1 + 0x40) = uVar2;" (assignment_expression "*(undefined8 *)(puVar1 + 0x40) = uVar2" (pointer_expression "*(undefined8 *)(puVar1 + 0x40)" * (cast_expression "(undefined8 *)(puVar1 + 0x40)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar1 + 0x40)" ( (binary_expression "puVar1 + 0x40" identifier + number_literal) )))) = identifier) ;) (if_statement "if (1 < *(byte *)((long)param_1 + 0x10e)) {\n      uVar2 = *(undefined8 *)(puVar1 + 0x18);\n      puVar3 = (undefined8 *)FUN_0011b8f0(*param_1,0x20);\n      if (puVar3 != (undefined8 *)0x0) {\n        *puVar3 = uVar2;\n        uVar2 = param_3[1];\n        puVar3[1] = *param_3;\n        puVar3[2] = uVar2;\n        puVar3[3] = param_1[0x32];\n        param_1[0x32] = puVar3;\n      }\n    }" if (parenthesized_expression "(1 < *(byte *)((long)param_1 + 0x10e))" ( (binary_expression "1 < *(byte *)((long)param_1 + 0x10e)" number_literal < (pointer_expression "*(byte *)((long)param_1 + 0x10e)" * (cast_expression "(byte *)((long)param_1 + 0x10e)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_1 + 0x10e)" ( (binary_expression "(long)param_1 + 0x10e" (cast_expression "(long)param_1" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) ))))) )) (compound_statement "{\n      uVar2 = *(undefined8 *)(puVar1 + 0x18);\n      puVar3 = (undefined8 *)FUN_0011b8f0(*param_1,0x20);\n      if (puVar3 != (undefined8 *)0x0) {\n        *puVar3 = uVar2;\n        uVar2 = param_3[1];\n        puVar3[1] = *param_3;\n        puVar3[2] = uVar2;\n        puVar3[3] = param_1[0x32];\n        param_1[0x32] = puVar3;\n      }\n    }" { (expression_statement "uVar2 = *(undefined8 *)(puVar1 + 0x18);" (assignment_expression "uVar2 = *(undefined8 *)(puVar1 + 0x18)" identifier = (pointer_expression "*(undefined8 *)(puVar1 + 0x18)" * (cast_expression "(undefined8 *)(puVar1 + 0x18)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar1 + 0x18)" ( (binary_expression "puVar1 + 0x18" identifier + number_literal) ))))) ;) (expression_statement "puVar3 = (undefined8 *)FUN_0011b8f0(*param_1,0x20);" (assignment_expression "puVar3 = (undefined8 *)FUN_0011b8f0(*param_1,0x20)" identifier = (cast_expression "(undefined8 *)FUN_0011b8f0(*param_1,0x20)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_0011b8f0(*param_1,0x20)" identifier (argument_list "(*param_1,0x20)" ( (pointer_expression "*param_1" * identifier) , number_literal ))))) ;) (if_statement "if (puVar3 != (undefined8 *)0x0) {\n        *puVar3 = uVar2;\n        uVar2 = param_3[1];\n        puVar3[1] = *param_3;\n        puVar3[2] = uVar2;\n        puVar3[3] = param_1[0x32];\n        param_1[0x32] = puVar3;\n      }" if (parenthesized_expression "(puVar3 != (undefined8 *)0x0)" ( (binary_expression "puVar3 != (undefined8 *)0x0" identifier != (cast_expression "(undefined8 *)0x0" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        *puVar3 = uVar2;\n        uVar2 = param_3[1];\n        puVar3[1] = *param_3;\n        puVar3[2] = uVar2;\n        puVar3[3] = param_1[0x32];\n        param_1[0x32] = puVar3;\n      }" { (expression_statement "*puVar3 = uVar2;" (assignment_expression "*puVar3 = uVar2" (pointer_expression "*puVar3" * identifier) = identifier) ;) (expression_statement "uVar2 = param_3[1];" (assignment_expression "uVar2 = param_3[1]" identifier = (subscript_expression "param_3[1]" identifier [ number_literal ])) ;) (expression_statement "puVar3[1] = *param_3;" (assignment_expression "puVar3[1] = *param_3" (subscript_expression "puVar3[1]" identifier [ number_literal ]) = (pointer_expression "*param_3" * identifier)) ;) (expression_statement "puVar3[2] = uVar2;" (assignment_expression "puVar3[2] = uVar2" (subscript_expression "puVar3[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar3[3] = param_1[0x32];" (assignment_expression "puVar3[3] = param_1[0x32]" (subscript_expression "puVar3[3]" identifier [ number_literal ]) = (subscript_expression "param_1[0x32]" identifier [ number_literal ])) ;) (expression_statement "param_1[0x32] = puVar3;" (assignment_expression "param_1[0x32] = puVar3" (subscript_expression "param_1[0x32]" identifier [ number_literal ]) = 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 ;) (declaration TYPE (pointer_declarator * 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 , (binary_expression (binary_expression (parenthesized_expression ( IDENT )) * (cast_expression ( (type_descriptor TYPE (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 { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT)) , (binary_expression (parenthesized_expression ( IDENT )) * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_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) = 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 (sized_type_specifier long)) ) IDENT) + LIT) ))))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( (pointer_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 (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) })) })) })) (return_statement return IDENT ;) })))
(function_definition "undefined1 *\nFUN_0011bed0(undefined8 *param_1,undefined1 param_2,undefined8 *param_3,undefined8 param_4,\n            undefined8 param_5)\n\n{\n  undefined1 *__dest;\n  undefined1 *puVar1;\n  undefined8 uVar2;\n  undefined8 *puVar3;\n  \n  uVar2 = *param_1;\n  puVar1 = (undefined1 *)FUN_0011b8f0(uVar2,(ulong)*(uint *)(param_3 + 1) + 0x59);\n  if (puVar1 != (undefined1 *)0x0) {\n    __dest = puVar1 + 0x58;\n    memcpy(__dest,(void *)*param_3,(ulong)*(uint *)(param_3 + 1));\n    FUN_0010f690(__dest);\n    *(undefined1 **)(puVar1 + 0x18) = __dest;\n    *puVar1 = param_2;\n    uVar2 = FUN_0011be90(uVar2,param_4,param_5);\n    *(undefined8 *)(puVar1 + 0x40) = uVar2;\n    if (1 < *(byte *)((long)param_1 + 0x10e)) {\n      uVar2 = *(undefined8 *)(puVar1 + 0x18);\n      puVar3 = (undefined8 *)FUN_0011b8f0(*param_1,0x20);\n      if (puVar3 != (undefined8 *)0x0) {\n        *puVar3 = uVar2;\n        uVar2 = param_3[1];\n        puVar3[1] = *param_3;\n        puVar3[2] = uVar2;\n        puVar3[3] = param_1[0x32];\n        param_1[0x32] = puVar3;\n      }\n    }\n  }\n  return puVar1;\n}" (type_identifier "undefined1") (pointer_declarator "*\nFUN_0011bed0(undefined8 *param_1,undefined1 param_2,undefined8 *param_3,undefined8 param_4,\n            undefined8 param_5)" (* "*") (function_declarator "FUN_0011bed0(undefined8 *param_1,undefined1 param_2,undefined8 *param_3,undefined8 param_4,\n            undefined8 param_5)" (identifier "FUN_0011bed0") (parameter_list "(undefined8 *param_1,undefined1 param_2,undefined8 *param_3,undefined8 param_4,\n            undefined8 param_5)" (( "(") (parameter_declaration "undefined8 *param_1" (type_identifier "undefined8") (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) (, ",") (parameter_declaration "undefined1 param_2" (type_identifier "undefined1") (identifier "param_2")) (, ",") (parameter_declaration "undefined8 *param_3" (type_identifier "undefined8") (pointer_declarator "*param_3" (* "*") (identifier "param_3"))) (, ",") (parameter_declaration "undefined8 param_4" (type_identifier "undefined8") (identifier "param_4")) (, ",") (parameter_declaration "undefined8 param_5" (type_identifier "undefined8") (identifier "param_5")) () ")")))) (compound_statement "{\n  undefined1 *__dest;\n  undefined1 *puVar1;\n  undefined8 uVar2;\n  undefined8 *puVar3;\n  \n  uVar2 = *param_1;\n  puVar1 = (undefined1 *)FUN_0011b8f0(uVar2,(ulong)*(uint *)(param_3 + 1) + 0x59);\n  if (puVar1 != (undefined1 *)0x0) {\n    __dest = puVar1 + 0x58;\n    memcpy(__dest,(void *)*param_3,(ulong)*(uint *)(param_3 + 1));\n    FUN_0010f690(__dest);\n    *(undefined1 **)(puVar1 + 0x18) = __dest;\n    *puVar1 = param_2;\n    uVar2 = FUN_0011be90(uVar2,param_4,param_5);\n    *(undefined8 *)(puVar1 + 0x40) = uVar2;\n    if (1 < *(byte *)((long)param_1 + 0x10e)) {\n      uVar2 = *(undefined8 *)(puVar1 + 0x18);\n      puVar3 = (undefined8 *)FUN_0011b8f0(*param_1,0x20);\n      if (puVar3 != (undefined8 *)0x0) {\n        *puVar3 = uVar2;\n        uVar2 = param_3[1];\n        puVar3[1] = *param_3;\n        puVar3[2] = uVar2;\n        puVar3[3] = param_1[0x32];\n        param_1[0x32] = puVar3;\n      }\n    }\n  }\n  return puVar1;\n}" ({ "{") (declaration "undefined1 *__dest;" (type_identifier "undefined1") (pointer_declarator "*__dest" (* "*") (identifier "__dest")) (; ";")) (declaration "undefined1 *puVar1;" (type_identifier "undefined1") (pointer_declarator "*puVar1" (* "*") (identifier "puVar1")) (; ";")) (declaration "undefined8 uVar2;" (type_identifier "undefined8") (identifier "uVar2") (; ";")) (declaration "undefined8 *puVar3;" (type_identifier "undefined8") (pointer_declarator "*puVar3" (* "*") (identifier "puVar3")) (; ";")) (expression_statement "uVar2 = *param_1;" (assignment_expression "uVar2 = *param_1" (identifier "uVar2") (= "=") (pointer_expression "*param_1" (* "*") (identifier "param_1"))) (; ";")) (expression_statement "puVar1 = (undefined1 *)FUN_0011b8f0(uVar2,(ulong)*(uint *)(param_3 + 1) + 0x59);" (assignment_expression "puVar1 = (undefined1 *)FUN_0011b8f0(uVar2,(ulong)*(uint *)(param_3 + 1) + 0x59)" (identifier "puVar1") (= "=") (cast_expression "(undefined1 *)FUN_0011b8f0(uVar2,(ulong)*(uint *)(param_3 + 1) + 0x59)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_0011b8f0(uVar2,(ulong)*(uint *)(param_3 + 1) + 0x59)" (identifier "FUN_0011b8f0") (argument_list "(uVar2,(ulong)*(uint *)(param_3 + 1) + 0x59)" (( "(") (identifier "uVar2") (, ",") (binary_expression "(ulong)*(uint *)(param_3 + 1) + 0x59" (binary_expression "(ulong)*(uint *)(param_3 + 1)" (parenthesized_expression "(ulong)" (( "(") (identifier "ulong") () ")")) (* "*") (cast_expression "(uint *)(param_3 + 1)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + 1)" (( "(") (binary_expression "param_3 + 1" (identifier "param_3") (+ "+") (number_literal "1")) () ")")))) (+ "+") (number_literal "0x59")) () ")"))))) (; ";")) (if_statement "if (puVar1 != (undefined1 *)0x0) {\n    __dest = puVar1 + 0x58;\n    memcpy(__dest,(void *)*param_3,(ulong)*(uint *)(param_3 + 1));\n    FUN_0010f690(__dest);\n    *(undefined1 **)(puVar1 + 0x18) = __dest;\n    *puVar1 = param_2;\n    uVar2 = FUN_0011be90(uVar2,param_4,param_5);\n    *(undefined8 *)(puVar1 + 0x40) = uVar2;\n    if (1 < *(byte *)((long)param_1 + 0x10e)) {\n      uVar2 = *(undefined8 *)(puVar1 + 0x18);\n      puVar3 = (undefined8 *)FUN_0011b8f0(*param_1,0x20);\n      if (puVar3 != (undefined8 *)0x0) {\n        *puVar3 = uVar2;\n        uVar2 = param_3[1];\n        puVar3[1] = *param_3;\n        puVar3[2] = uVar2;\n        puVar3[3] = param_1[0x32];\n        param_1[0x32] = puVar3;\n      }\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    __dest = puVar1 + 0x58;\n    memcpy(__dest,(void *)*param_3,(ulong)*(uint *)(param_3 + 1));\n    FUN_0010f690(__dest);\n    *(undefined1 **)(puVar1 + 0x18) = __dest;\n    *puVar1 = param_2;\n    uVar2 = FUN_0011be90(uVar2,param_4,param_5);\n    *(undefined8 *)(puVar1 + 0x40) = uVar2;\n    if (1 < *(byte *)((long)param_1 + 0x10e)) {\n      uVar2 = *(undefined8 *)(puVar1 + 0x18);\n      puVar3 = (undefined8 *)FUN_0011b8f0(*param_1,0x20);\n      if (puVar3 != (undefined8 *)0x0) {\n        *puVar3 = uVar2;\n        uVar2 = param_3[1];\n        puVar3[1] = *param_3;\n        puVar3[2] = uVar2;\n        puVar3[3] = param_1[0x32];\n        param_1[0x32] = puVar3;\n      }\n    }\n  }" ({ "{") (expression_statement "__dest = puVar1 + 0x58;" (assignment_expression "__dest = puVar1 + 0x58" (identifier "__dest") (= "=") (binary_expression "puVar1 + 0x58" (identifier "puVar1") (+ "+") (number_literal "0x58"))) (; ";")) (expression_statement "memcpy(__dest,(void *)*param_3,(ulong)*(uint *)(param_3 + 1));" (call_expression "memcpy(__dest,(void *)*param_3,(ulong)*(uint *)(param_3 + 1))" (identifier "memcpy") (argument_list "(__dest,(void *)*param_3,(ulong)*(uint *)(param_3 + 1))" (( "(") (identifier "__dest") (, ",") (cast_expression "(void *)*param_3" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*param_3" (* "*") (identifier "param_3"))) (, ",") (binary_expression "(ulong)*(uint *)(param_3 + 1)" (parenthesized_expression "(ulong)" (( "(") (identifier "ulong") () ")")) (* "*") (cast_expression "(uint *)(param_3 + 1)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + 1)" (( "(") (binary_expression "param_3 + 1" (identifier "param_3") (+ "+") (number_literal "1")) () ")")))) () ")"))) (; ";")) (expression_statement "FUN_0010f690(__dest);" (call_expression "FUN_0010f690(__dest)" (identifier "FUN_0010f690") (argument_list "(__dest)" (( "(") (identifier "__dest") () ")"))) (; ";")) (expression_statement "*(undefined1 **)(puVar1 + 0x18) = __dest;" (assignment_expression "*(undefined1 **)(puVar1 + 0x18) = __dest" (pointer_expression "*(undefined1 **)(puVar1 + 0x18)" (* "*") (cast_expression "(undefined1 **)(puVar1 + 0x18)" (( "(") (type_descriptor "undefined1 **" (type_identifier "undefined1") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar1 + 0x18)" (( "(") (binary_expression "puVar1 + 0x18" (identifier "puVar1") (+ "+") (number_literal "0x18")) () ")")))) (= "=") (identifier "__dest")) (; ";")) (expression_statement "*puVar1 = param_2;" (assignment_expression "*puVar1 = param_2" (pointer_expression "*puVar1" (* "*") (identifier "puVar1")) (= "=") (identifier "param_2")) (; ";")) (expression_statement "uVar2 = FUN_0011be90(uVar2,param_4,param_5);" (assignment_expression "uVar2 = FUN_0011be90(uVar2,param_4,param_5)" (identifier "uVar2") (= "=") (call_expression "FUN_0011be90(uVar2,param_4,param_5)" (identifier "FUN_0011be90") (argument_list "(uVar2,param_4,param_5)" (( "(") (identifier "uVar2") (, ",") (identifier "param_4") (, ",") (identifier "param_5") () ")")))) (; ";")) (expression_statement "*(undefined8 *)(puVar1 + 0x40) = uVar2;" (assignment_expression "*(undefined8 *)(puVar1 + 0x40) = uVar2" (pointer_expression "*(undefined8 *)(puVar1 + 0x40)" (* "*") (cast_expression "(undefined8 *)(puVar1 + 0x40)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar1 + 0x40)" (( "(") (binary_expression "puVar1 + 0x40" (identifier "puVar1") (+ "+") (number_literal "0x40")) () ")")))) (= "=") (identifier "uVar2")) (; ";")) (if_statement "if (1 < *(byte *)((long)param_1 + 0x10e)) {\n      uVar2 = *(undefined8 *)(puVar1 + 0x18);\n      puVar3 = (undefined8 *)FUN_0011b8f0(*param_1,0x20);\n      if (puVar3 != (undefined8 *)0x0) {\n        *puVar3 = uVar2;\n        uVar2 = param_3[1];\n        puVar3[1] = *param_3;\n        puVar3[2] = uVar2;\n        puVar3[3] = param_1[0x32];\n        param_1[0x32] = puVar3;\n      }\n    }" (if "if") (parenthesized_expression "(1 < *(byte *)((long)param_1 + 0x10e))" (( "(") (binary_expression "1 < *(byte *)((long)param_1 + 0x10e)" (number_literal "1") (< "<") (pointer_expression "*(byte *)((long)param_1 + 0x10e)" (* "*") (cast_expression "(byte *)((long)param_1 + 0x10e)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)param_1 + 0x10e)" (( "(") (binary_expression "(long)param_1 + 0x10e" (cast_expression "(long)param_1" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "param_1")) (+ "+") (number_literal "0x10e")) () ")"))))) () ")")) (compound_statement "{\n      uVar2 = *(undefined8 *)(puVar1 + 0x18);\n      puVar3 = (undefined8 *)FUN_0011b8f0(*param_1,0x20);\n      if (puVar3 != (undefined8 *)0x0) {\n        *puVar3 = uVar2;\n        uVar2 = param_3[1];\n        puVar3[1] = *param_3;\n        puVar3[2] = uVar2;\n        puVar3[3] = param_1[0x32];\n        param_1[0x32] = puVar3;\n      }\n    }" ({ "{") (expression_statement "uVar2 = *(undefined8 *)(puVar1 + 0x18);" (assignment_expression "uVar2 = *(undefined8 *)(puVar1 + 0x18)" (identifier "uVar2") (= "=") (pointer_expression "*(undefined8 *)(puVar1 + 0x18)" (* "*") (cast_expression "(undefined8 *)(puVar1 + 0x18)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar1 + 0x18)" (( "(") (binary_expression "puVar1 + 0x18" (identifier "puVar1") (+ "+") (number_literal "0x18")) () ")"))))) (; ";")) (expression_statement "puVar3 = (undefined8 *)FUN_0011b8f0(*param_1,0x20);" (assignment_expression "puVar3 = (undefined8 *)FUN_0011b8f0(*param_1,0x20)" (identifier "puVar3") (= "=") (cast_expression "(undefined8 *)FUN_0011b8f0(*param_1,0x20)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_0011b8f0(*param_1,0x20)" (identifier "FUN_0011b8f0") (argument_list "(*param_1,0x20)" (( "(") (pointer_expression "*param_1" (* "*") (identifier "param_1")) (, ",") (number_literal "0x20") () ")"))))) (; ";")) (if_statement "if (puVar3 != (undefined8 *)0x0) {\n        *puVar3 = uVar2;\n        uVar2 = param_3[1];\n        puVar3[1] = *param_3;\n        puVar3[2] = uVar2;\n        puVar3[3] = param_1[0x32];\n        param_1[0x32] = puVar3;\n      }" (if "if") (parenthesized_expression "(puVar3 != (undefined8 *)0x0)" (( "(") (binary_expression "puVar3 != (undefined8 *)0x0" (identifier "puVar3") (!= "!=") (cast_expression "(undefined8 *)0x0" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n        *puVar3 = uVar2;\n        uVar2 = param_3[1];\n        puVar3[1] = *param_3;\n        puVar3[2] = uVar2;\n        puVar3[3] = param_1[0x32];\n        param_1[0x32] = puVar3;\n      }" ({ "{") (expression_statement "*puVar3 = uVar2;" (assignment_expression "*puVar3 = uVar2" (pointer_expression "*puVar3" (* "*") (identifier "puVar3")) (= "=") (identifier "uVar2")) (; ";")) (expression_statement "uVar2 = param_3[1];" (assignment_expression "uVar2 = param_3[1]" (identifier "uVar2") (= "=") (subscript_expression "param_3[1]" (identifier "param_3") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "puVar3[1] = *param_3;" (assignment_expression "puVar3[1] = *param_3" (subscript_expression "puVar3[1]" (identifier "puVar3") ([ "[") (number_literal "1") (] "]")) (= "=") (pointer_expression "*param_3" (* "*") (identifier "param_3"))) (; ";")) (expression_statement "puVar3[2] = uVar2;" (assignment_expression "puVar3[2] = uVar2" (subscript_expression "puVar3[2]" (identifier "puVar3") ([ "[") (number_literal "2") (] "]")) (= "=") (identifier "uVar2")) (; ";")) (expression_statement "puVar3[3] = param_1[0x32];" (assignment_expression "puVar3[3] = param_1[0x32]" (subscript_expression "puVar3[3]" (identifier "puVar3") ([ "[") (number_literal "3") (] "]")) (= "=") (subscript_expression "param_1[0x32]" (identifier "param_1") ([ "[") (number_literal "0x32") (] "]"))) (; ";")) (expression_statement "param_1[0x32] = puVar3;" (assignment_expression "param_1[0x32] = puVar3" (subscript_expression "param_1[0x32]" (identifier "param_1") ([ "[") (number_literal "0x32") (] "]")) (= "=") (identifier "puVar3")) (; ";")) (} "}"))) (} "}"))) (} "}"))) (return_statement "return puVar1;" (return "return") (identifier "puVar1") (; ";")) (} "}")))

type_1 * function_1(type_2 *pParse,type_3 op,type_4 *pName,char *zStart,char *zEnd)

{
  type_1 *z;
  type_5 *db;
  type_6 uVar1;
  type_7 uVar2;
  type_1 *var_2;
  char *pcVar4;
  type_8 *var_6;
  
  db = pParse->db;
  var_2 = (type_1 *)var_1(db,(type_9)pName->n + 0x59);
  if (var_2 != (type_1 *)0x0) {
    z = var_2 + 1;
    var_3(z,pName->z,(type_9)pName->n);
    var_4((char *)z);
    var_2->zTarget = (char *)z;
    var_2->op = op;
    pcVar4 = var_5(db,zStart,zEnd);
    var_2->zSpan = pcVar4;
    if (1 < pParse->eParseMode) {
      pcVar4 = var_2->zTarget;
      var_6 = (type_8 *)var_1(pParse->db,0x20);
      if (var_6 != (type_8 *)0x0) {
        var_6->p = pcVar4;
        uVar1 = pName->n;
        uVar2 = *(type_7 *)&pName->field_0xc;
        (var_6->t).z = pName->z;
        (var_6->t).n = uVar1;
        *(type_7 *)&(var_6->t).field_0xc = uVar2;
        var_6->pNext = pParse->pRename;
        pParse->pRename = var_6;
      }
    }
  }
  return var_2;
}


(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)) (declaration type: (type_identifier) declarator: (pointer_declarator 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) (binary_expression left: (binary_expression left: (parenthesized_expression (identifier)) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) 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: (identifier) arguments: (argument_list (identifier) (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (pointer_expression argument: (identifier))) (binary_expression left: (parenthesized_expression (identifier)) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))))) (expression_statement (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: (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: (sized_type_specifier)) value: (identifier)) right: (number_literal))))))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (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 (pointer_expression argument: (identifier)) (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: (pointer_expression argument: (identifier)) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))))))))) (return_statement (identifier)))))

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

{
  undefined1 *__dest;
  undefined1 *puVar1;
  undefined8 uVar2;
  undefined8 *puVar3;
  
  uVar2 = *param_1;
  puVar1 = (undefined1 *)FUN_0011b8f0(uVar2,(ulong)*(uint *)(param_3 + 1) + 0x59);
  if (puVar1 != (undefined1 *)0x0) {
    __dest = puVar1 + 0x58;
    memcpy(__dest,(void *)*param_3,(ulong)*(uint *)(param_3 + 1));
    FUN_0010f690(__dest);
    *(undefined1 **)(puVar1 + 0x18) = __dest;
    *puVar1 = param_2;
    uVar2 = FUN_0011be90(uVar2,param_4,param_5);
    *(undefined8 *)(puVar1 + 0x40) = uVar2;
    if (1 < *(byte *)((long)param_1 + 0x10e)) {
      uVar2 = *(undefined8 *)(puVar1 + 0x18);
      puVar3 = (undefined8 *)FUN_0011b8f0(*param_1,0x20);
      if (puVar3 != (undefined8 *)0x0) {
        *puVar3 = uVar2;
        uVar2 = param_3[1];
        puVar3[1] = *param_3;
        puVar3[2] = uVar2;
        puVar3[3] = param_1[0x32];
        param_1[0x32] = puVar3;
      }
    }
  }
  return puVar1;
}

