
int poly_verresult(void *handle,uchar *blk)

{
  undefined *puVar1;
  chacha20 *ctx;
  int iVar2;
  uchar *iv;
  undefined4 in_a3;
  int *piVar3;
  undefined *puVar4;
  code *pcVar5;
  uchar auStack_64 [5];
  undefined1 uStack_5f;
  undefined1 uStack_5e;
  undefined1 uStack_5d;
  int iStack_5c;
  undefined *puStack_54;
  uchar *puStack_50;
  uchar *puStack_4c;
  uchar mac [16];
  
  puVar1 = PTR___stack_chk_guard_00122654;
  ctx = *(chacha20 **)PTR___stack_chk_guard_00122654;
  poly1305_finalise((poly1305 *)((int)handle + 0x114),mac);
  iVar2 = (*(code *)PTR_smemeq_00121970)(blk,mac,0x10);
  if (ctx == *(chacha20 **)puVar1) {
    return iVar2;
  }
  puVar4 = PTR___stack_chk_fail_001222ec;
  (*(code *)PTR___stack_chk_fail_001222ec)();
  puStack_54 = puVar1;
  piVar3 = *(int **)(puVar4 + 0xaf968);
  iStack_5c = *piVar3;
  auStack_64[0] = '\0';
  auStack_64[1] = 0;
  auStack_64[2] = 0;
  auStack_64[3] = 0;
  auStack_64[4] = (uchar)in_a3;
  uStack_5f = (undefined1)((uint)in_a3 >> 8);
  uStack_5e = (undefined1)((uint)in_a3 >> 0x10);
  uStack_5d = (undefined1)((uint)in_a3 >> 0x18);
  iv = auStack_64;
  puStack_50 = mac;
  puStack_4c = blk;
  chacha20_iv(ctx,iv);
  chacha20_iv(ctx + 1,iv);
  ctx[1].state[0xc] = ctx[1].state[0xc] + 1;
  (**(code **)(puVar4 + 0xae66c))(iv,8);
  iVar2 = *piVar3;
  if (iStack_5c == iVar2) {
    return iVar2;
  }
  pcVar5 = *(code **)(puVar4 + 0xaf600);
  (*pcVar5)();
  (**(code **)(pcVar5 + 0xae578))();
  (**(code **)(pcVar5 + 0xae578))(iv + 0x84,0x84);
  (**(code **)(pcVar5 + 0xae578))(iv + 0x114,0x4c);
  iVar2 = (**(code **)(pcVar5 + 0xae524))(iv);
  return iVar2;
}



void FUN_00072c4c(int param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4)

{
  undefined *puVar1;
  int iVar2;
  undefined1 *puVar3;
  int *piVar4;
  undefined *puVar5;
  code *pcVar6;
  undefined1 uStack_64;
  undefined1 uStack_63;
  undefined1 uStack_62;
  undefined1 uStack_61;
  undefined1 uStack_60;
  undefined1 uStack_5f;
  undefined1 uStack_5e;
  undefined1 uStack_5d;
  int iStack_5c;
  undefined *puStack_54;
  undefined1 *puStack_50;
  undefined4 uStack_4c;
  undefined1 auStack_24 [16];
  int local_14;
  
  puVar1 = PTR___stack_chk_guard_00122654;
  local_14 = *(int *)PTR___stack_chk_guard_00122654;
  FUN_0007297c(param_1 + 0x114,auStack_24);
  (*(code *)PTR_smemeq_00121970)(param_2,auStack_24,0x10);
  if (local_14 == *(int *)puVar1) {
    return;
  }
  iVar2 = local_14;
  puVar5 = PTR___stack_chk_fail_001222ec;
  (*(code *)PTR___stack_chk_fail_001222ec)();
  puStack_54 = puVar1;
  piVar4 = *(int **)(puVar5 + 0xaf968);
  iStack_5c = *piVar4;
  uStack_64 = 0;
  uStack_63 = 0;
  uStack_62 = 0;
  uStack_61 = 0;
  uStack_60 = (undefined1)param_4;
  uStack_5f = (undefined1)((uint)param_4 >> 8);
  uStack_5e = (undefined1)((uint)param_4 >> 0x10);
  uStack_5d = (undefined1)((uint)param_4 >> 0x18);
  puVar3 = &uStack_64;
  puStack_50 = auStack_24;
  uStack_4c = param_2;
  FUN_0007224c();
  FUN_0007224c(iVar2 + 0x84,puVar3);
  *(int *)(iVar2 + 0xb4) = *(int *)(iVar2 + 0xb4) + 1;
  (**(code **)(puVar5 + 0xae66c))(puVar3,8);
  if (iStack_5c == *piVar4) {
    return;
  }
  pcVar6 = *(code **)(puVar5 + 0xaf600);
  (*pcVar6)();
  (**(code **)(pcVar6 + 0xae578))();
  (**(code **)(pcVar6 + 0xae578))(puVar3 + 0x84,0x84);
  (**(code **)(pcVar6 + 0xae578))(puVar3 + 0x114,0x4c);
  (**(code **)(pcVar6 + 0xae524))(puVar3);
  return;
}


lui gp,0xb
addiu gp,gp,0x6664
addu gp,gp,t9
addiu sp,sp,-0x40
sw ra,0x3c(sp)
sw s2,0x38(sp)
sw s1,0x34(sp)
sw s0,0x30(sp)
sw gp,0x10(sp)
or s2,a1,zero
lw s0,-0x6c5c(gp)
lw v0,0x0(s0)
sw v0,0x2c(sp)
addiu s1,sp,0x1c
or a1,s1,zero
addiu a0,a0,0x114
lw t9,-0x7988(gp)
addiu t9,t9,0x297c
bal 0x0007297c
_nop
lw gp,0x10(sp)
li a2,0x10
or a1,s1,zero
or a0,s2,zero
lw t9,-0x7940(gp)
jalr t9
_nop
lw gp,0x10(sp)
lw a0,0x2c(sp)
lw v1,0x0(s0)
bne a0,v1,0x00072ce0
_lw ra,0x3c(sp)
lw s2,0x38(sp)
lw s1,0x34(sp)
lw s0,0x30(sp)
jr ra
_addiu sp,sp,0x40
lw t9,-0x6fc4(gp)
jalr t9
_nop
(translation_unit "void FUN_00072c4c(int param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4)\n\n{\n  undefined *puVar1;\n  int iVar2;\n  undefined1 *puVar3;\n  int *piVar4;\n  undefined *puVar5;\n  code *pcVar6;\n  undefined1 uStack_64;\n  undefined1 uStack_63;\n  undefined1 uStack_62;\n  undefined1 uStack_61;\n  undefined1 uStack_60;\n  undefined1 uStack_5f;\n  undefined1 uStack_5e;\n  undefined1 uStack_5d;\n  int iStack_5c;\n  undefined *puStack_54;\n  undefined1 *puStack_50;\n  undefined4 uStack_4c;\n  undefined1 auStack_24 [16];\n  int local_14;\n  \n  puVar1 = PTR___stack_chk_guard_00122654;\n  local_14 = *(int *)PTR___stack_chk_guard_00122654;\n  FUN_0007297c(param_1 + 0x114,auStack_24);\n  (*(code *)PTR_smemeq_00121970)(param_2,auStack_24,0x10);\n  if (local_14 == *(int *)puVar1) {\n    return;\n  }\n  iVar2 = local_14;\n  puVar5 = PTR___stack_chk_fail_001222ec;\n  (*(code *)PTR___stack_chk_fail_001222ec)();\n  puStack_54 = puVar1;\n  piVar4 = *(int **)(puVar5 + 0xaf968);\n  iStack_5c = *piVar4;\n  uStack_64 = 0;\n  uStack_63 = 0;\n  uStack_62 = 0;\n  uStack_61 = 0;\n  uStack_60 = (undefined1)param_4;\n  uStack_5f = (undefined1)((uint)param_4 >> 8);\n  uStack_5e = (undefined1)((uint)param_4 >> 0x10);\n  uStack_5d = (undefined1)((uint)param_4 >> 0x18);\n  puVar3 = &uStack_64;\n  puStack_50 = auStack_24;\n  uStack_4c = param_2;\n  FUN_0007224c();\n  FUN_0007224c(iVar2 + 0x84,puVar3);\n  *(int *)(iVar2 + 0xb4) = *(int *)(iVar2 + 0xb4) + 1;\n  (**(code **)(puVar5 + 0xae66c))(puVar3,8);\n  if (iStack_5c == *piVar4) {\n    return;\n  }\n  pcVar6 = *(code **)(puVar5 + 0xaf600);\n  (*pcVar6)();\n  (**(code **)(pcVar6 + 0xae578))();\n  (**(code **)(pcVar6 + 0xae578))(puVar3 + 0x84,0x84);\n  (**(code **)(pcVar6 + 0xae578))(puVar3 + 0x114,0x4c);\n  (**(code **)(pcVar6 + 0xae524))(puVar3);\n  return;\n}\n\n" (function_definition "void FUN_00072c4c(int param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4)\n\n{\n  undefined *puVar1;\n  int iVar2;\n  undefined1 *puVar3;\n  int *piVar4;\n  undefined *puVar5;\n  code *pcVar6;\n  undefined1 uStack_64;\n  undefined1 uStack_63;\n  undefined1 uStack_62;\n  undefined1 uStack_61;\n  undefined1 uStack_60;\n  undefined1 uStack_5f;\n  undefined1 uStack_5e;\n  undefined1 uStack_5d;\n  int iStack_5c;\n  undefined *puStack_54;\n  undefined1 *puStack_50;\n  undefined4 uStack_4c;\n  undefined1 auStack_24 [16];\n  int local_14;\n  \n  puVar1 = PTR___stack_chk_guard_00122654;\n  local_14 = *(int *)PTR___stack_chk_guard_00122654;\n  FUN_0007297c(param_1 + 0x114,auStack_24);\n  (*(code *)PTR_smemeq_00121970)(param_2,auStack_24,0x10);\n  if (local_14 == *(int *)puVar1) {\n    return;\n  }\n  iVar2 = local_14;\n  puVar5 = PTR___stack_chk_fail_001222ec;\n  (*(code *)PTR___stack_chk_fail_001222ec)();\n  puStack_54 = puVar1;\n  piVar4 = *(int **)(puVar5 + 0xaf968);\n  iStack_5c = *piVar4;\n  uStack_64 = 0;\n  uStack_63 = 0;\n  uStack_62 = 0;\n  uStack_61 = 0;\n  uStack_60 = (undefined1)param_4;\n  uStack_5f = (undefined1)((uint)param_4 >> 8);\n  uStack_5e = (undefined1)((uint)param_4 >> 0x10);\n  uStack_5d = (undefined1)((uint)param_4 >> 0x18);\n  puVar3 = &uStack_64;\n  puStack_50 = auStack_24;\n  uStack_4c = param_2;\n  FUN_0007224c();\n  FUN_0007224c(iVar2 + 0x84,puVar3);\n  *(int *)(iVar2 + 0xb4) = *(int *)(iVar2 + 0xb4) + 1;\n  (**(code **)(puVar5 + 0xae66c))(puVar3,8);\n  if (iStack_5c == *piVar4) {\n    return;\n  }\n  pcVar6 = *(code **)(puVar5 + 0xaf600);\n  (*pcVar6)();\n  (**(code **)(pcVar6 + 0xae578))();\n  (**(code **)(pcVar6 + 0xae578))(puVar3 + 0x84,0x84);\n  (**(code **)(pcVar6 + 0xae578))(puVar3 + 0x114,0x4c);\n  (**(code **)(pcVar6 + 0xae524))(puVar3);\n  return;\n}" primitive_type (function_declarator "FUN_00072c4c(int param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4)" identifier (parameter_list "(int param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "undefined4 param_2" type_identifier identifier) , (parameter_declaration "undefined4 param_3" type_identifier identifier) , (parameter_declaration "undefined4 param_4" type_identifier identifier) ))) (compound_statement "{\n  undefined *puVar1;\n  int iVar2;\n  undefined1 *puVar3;\n  int *piVar4;\n  undefined *puVar5;\n  code *pcVar6;\n  undefined1 uStack_64;\n  undefined1 uStack_63;\n  undefined1 uStack_62;\n  undefined1 uStack_61;\n  undefined1 uStack_60;\n  undefined1 uStack_5f;\n  undefined1 uStack_5e;\n  undefined1 uStack_5d;\n  int iStack_5c;\n  undefined *puStack_54;\n  undefined1 *puStack_50;\n  undefined4 uStack_4c;\n  undefined1 auStack_24 [16];\n  int local_14;\n  \n  puVar1 = PTR___stack_chk_guard_00122654;\n  local_14 = *(int *)PTR___stack_chk_guard_00122654;\n  FUN_0007297c(param_1 + 0x114,auStack_24);\n  (*(code *)PTR_smemeq_00121970)(param_2,auStack_24,0x10);\n  if (local_14 == *(int *)puVar1) {\n    return;\n  }\n  iVar2 = local_14;\n  puVar5 = PTR___stack_chk_fail_001222ec;\n  (*(code *)PTR___stack_chk_fail_001222ec)();\n  puStack_54 = puVar1;\n  piVar4 = *(int **)(puVar5 + 0xaf968);\n  iStack_5c = *piVar4;\n  uStack_64 = 0;\n  uStack_63 = 0;\n  uStack_62 = 0;\n  uStack_61 = 0;\n  uStack_60 = (undefined1)param_4;\n  uStack_5f = (undefined1)((uint)param_4 >> 8);\n  uStack_5e = (undefined1)((uint)param_4 >> 0x10);\n  uStack_5d = (undefined1)((uint)param_4 >> 0x18);\n  puVar3 = &uStack_64;\n  puStack_50 = auStack_24;\n  uStack_4c = param_2;\n  FUN_0007224c();\n  FUN_0007224c(iVar2 + 0x84,puVar3);\n  *(int *)(iVar2 + 0xb4) = *(int *)(iVar2 + 0xb4) + 1;\n  (**(code **)(puVar5 + 0xae66c))(puVar3,8);\n  if (iStack_5c == *piVar4) {\n    return;\n  }\n  pcVar6 = *(code **)(puVar5 + 0xaf600);\n  (*pcVar6)();\n  (**(code **)(pcVar6 + 0xae578))();\n  (**(code **)(pcVar6 + 0xae578))(puVar3 + 0x84,0x84);\n  (**(code **)(pcVar6 + 0xae578))(puVar3 + 0x114,0x4c);\n  (**(code **)(pcVar6 + 0xae524))(puVar3);\n  return;\n}" { (declaration "undefined *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "undefined1 *puVar3;" type_identifier (pointer_declarator "*puVar3" * identifier) ;) (declaration "int *piVar4;" primitive_type (pointer_declarator "*piVar4" * identifier) ;) (declaration "undefined *puVar5;" type_identifier (pointer_declarator "*puVar5" * identifier) ;) (declaration "code *pcVar6;" type_identifier (pointer_declarator "*pcVar6" * identifier) ;) (declaration "undefined1 uStack_64;" type_identifier identifier ;) (declaration "undefined1 uStack_63;" type_identifier identifier ;) (declaration "undefined1 uStack_62;" type_identifier identifier ;) (declaration "undefined1 uStack_61;" type_identifier identifier ;) (declaration "undefined1 uStack_60;" type_identifier identifier ;) (declaration "undefined1 uStack_5f;" type_identifier identifier ;) (declaration "undefined1 uStack_5e;" type_identifier identifier ;) (declaration "undefined1 uStack_5d;" type_identifier identifier ;) (declaration "int iStack_5c;" primitive_type identifier ;) (declaration "undefined *puStack_54;" type_identifier (pointer_declarator "*puStack_54" * identifier) ;) (declaration "undefined1 *puStack_50;" type_identifier (pointer_declarator "*puStack_50" * identifier) ;) (declaration "undefined4 uStack_4c;" type_identifier identifier ;) (declaration "undefined1 auStack_24 [16];" type_identifier (array_declarator "auStack_24 [16]" identifier [ number_literal ]) ;) (declaration "int local_14;" primitive_type identifier ;) (expression_statement "puVar1 = PTR___stack_chk_guard_00122654;" (assignment_expression "puVar1 = PTR___stack_chk_guard_00122654" identifier = identifier) ;) (expression_statement "local_14 = *(int *)PTR___stack_chk_guard_00122654;" (assignment_expression "local_14 = *(int *)PTR___stack_chk_guard_00122654" identifier = (pointer_expression "*(int *)PTR___stack_chk_guard_00122654" * (cast_expression "(int *)PTR___stack_chk_guard_00122654" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "FUN_0007297c(param_1 + 0x114,auStack_24);" (call_expression "FUN_0007297c(param_1 + 0x114,auStack_24)" identifier (argument_list "(param_1 + 0x114,auStack_24)" ( (binary_expression "param_1 + 0x114" identifier + number_literal) , identifier ))) ;) (expression_statement "(*(code *)PTR_smemeq_00121970)(param_2,auStack_24,0x10);" (call_expression "(*(code *)PTR_smemeq_00121970)(param_2,auStack_24,0x10)" (parenthesized_expression "(*(code *)PTR_smemeq_00121970)" ( (pointer_expression "*(code *)PTR_smemeq_00121970" * (cast_expression "(code *)PTR_smemeq_00121970" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(param_2,auStack_24,0x10)" ( identifier , identifier , number_literal ))) ;) (if_statement "if (local_14 == *(int *)puVar1) {\n    return;\n  }" if (parenthesized_expression "(local_14 == *(int *)puVar1)" ( (binary_expression "local_14 == *(int *)puVar1" identifier == (pointer_expression "*(int *)puVar1" * (cast_expression "(int *)puVar1" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) )) (compound_statement "{\n    return;\n  }" { (return_statement "return;" return ;) })) (expression_statement "iVar2 = local_14;" (assignment_expression "iVar2 = local_14" identifier = identifier) ;) (expression_statement "puVar5 = PTR___stack_chk_fail_001222ec;" (assignment_expression "puVar5 = PTR___stack_chk_fail_001222ec" identifier = identifier) ;) (expression_statement "(*(code *)PTR___stack_chk_fail_001222ec)();" (call_expression "(*(code *)PTR___stack_chk_fail_001222ec)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_001222ec)" ( (pointer_expression "*(code *)PTR___stack_chk_fail_001222ec" * (cast_expression "(code *)PTR___stack_chk_fail_001222ec" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) (expression_statement "puStack_54 = puVar1;" (assignment_expression "puStack_54 = puVar1" identifier = identifier) ;) (expression_statement "piVar4 = *(int **)(puVar5 + 0xaf968);" (assignment_expression "piVar4 = *(int **)(puVar5 + 0xaf968)" identifier = (pointer_expression "*(int **)(puVar5 + 0xaf968)" * (cast_expression "(int **)(puVar5 + 0xaf968)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar5 + 0xaf968)" ( (binary_expression "puVar5 + 0xaf968" identifier + number_literal) ))))) ;) (expression_statement "iStack_5c = *piVar4;" (assignment_expression "iStack_5c = *piVar4" identifier = (pointer_expression "*piVar4" * identifier)) ;) (expression_statement "uStack_64 = 0;" (assignment_expression "uStack_64 = 0" identifier = number_literal) ;) (expression_statement "uStack_63 = 0;" (assignment_expression "uStack_63 = 0" identifier = number_literal) ;) (expression_statement "uStack_62 = 0;" (assignment_expression "uStack_62 = 0" identifier = number_literal) ;) (expression_statement "uStack_61 = 0;" (assignment_expression "uStack_61 = 0" identifier = number_literal) ;) (expression_statement "uStack_60 = (undefined1)param_4;" (assignment_expression "uStack_60 = (undefined1)param_4" identifier = (cast_expression "(undefined1)param_4" ( (type_descriptor "undefined1" type_identifier) ) identifier)) ;) (expression_statement "uStack_5f = (undefined1)((uint)param_4 >> 8);" (assignment_expression "uStack_5f = (undefined1)((uint)param_4 >> 8)" identifier = (call_expression "(undefined1)((uint)param_4 >> 8)" (parenthesized_expression "(undefined1)" ( identifier )) (argument_list "((uint)param_4 >> 8)" ( (binary_expression "(uint)param_4 >> 8" (cast_expression "(uint)param_4" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "uStack_5e = (undefined1)((uint)param_4 >> 0x10);" (assignment_expression "uStack_5e = (undefined1)((uint)param_4 >> 0x10)" identifier = (call_expression "(undefined1)((uint)param_4 >> 0x10)" (parenthesized_expression "(undefined1)" ( identifier )) (argument_list "((uint)param_4 >> 0x10)" ( (binary_expression "(uint)param_4 >> 0x10" (cast_expression "(uint)param_4" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "uStack_5d = (undefined1)((uint)param_4 >> 0x18);" (assignment_expression "uStack_5d = (undefined1)((uint)param_4 >> 0x18)" identifier = (call_expression "(undefined1)((uint)param_4 >> 0x18)" (parenthesized_expression "(undefined1)" ( identifier )) (argument_list "((uint)param_4 >> 0x18)" ( (binary_expression "(uint)param_4 >> 0x18" (cast_expression "(uint)param_4" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "puVar3 = &uStack_64;" (assignment_expression "puVar3 = &uStack_64" identifier = (pointer_expression "&uStack_64" & identifier)) ;) (expression_statement "puStack_50 = auStack_24;" (assignment_expression "puStack_50 = auStack_24" identifier = identifier) ;) (expression_statement "uStack_4c = param_2;" (assignment_expression "uStack_4c = param_2" identifier = identifier) ;) (expression_statement "FUN_0007224c();" (call_expression "FUN_0007224c()" identifier (argument_list "()" ( ))) ;) (expression_statement "FUN_0007224c(iVar2 + 0x84,puVar3);" (call_expression "FUN_0007224c(iVar2 + 0x84,puVar3)" identifier (argument_list "(iVar2 + 0x84,puVar3)" ( (binary_expression "iVar2 + 0x84" identifier + number_literal) , identifier ))) ;) (expression_statement "*(int *)(iVar2 + 0xb4) = *(int *)(iVar2 + 0xb4) + 1;" (assignment_expression "*(int *)(iVar2 + 0xb4) = *(int *)(iVar2 + 0xb4) + 1" (pointer_expression "*(int *)(iVar2 + 0xb4)" * (cast_expression "(int *)(iVar2 + 0xb4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0xb4)" ( (binary_expression "iVar2 + 0xb4" identifier + number_literal) )))) = (binary_expression "*(int *)(iVar2 + 0xb4) + 1" (pointer_expression "*(int *)(iVar2 + 0xb4)" * (cast_expression "(int *)(iVar2 + 0xb4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0xb4)" ( (binary_expression "iVar2 + 0xb4" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "(**(code **)(puVar5 + 0xae66c))(puVar3,8);" (call_expression "(**(code **)(puVar5 + 0xae66c))(puVar3,8)" (parenthesized_expression "(**(code **)(puVar5 + 0xae66c))" ( (pointer_expression "**(code **)(puVar5 + 0xae66c)" * (pointer_expression "*(code **)(puVar5 + 0xae66c)" * (cast_expression "(code **)(puVar5 + 0xae66c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar5 + 0xae66c)" ( (binary_expression "puVar5 + 0xae66c" identifier + number_literal) ))))) )) (argument_list "(puVar3,8)" ( identifier , number_literal ))) ;) (if_statement "if (iStack_5c == *piVar4) {\n    return;\n  }" if (parenthesized_expression "(iStack_5c == *piVar4)" ( (binary_expression "iStack_5c == *piVar4" identifier == (pointer_expression "*piVar4" * identifier)) )) (compound_statement "{\n    return;\n  }" { (return_statement "return;" return ;) })) (expression_statement "pcVar6 = *(code **)(puVar5 + 0xaf600);" (assignment_expression "pcVar6 = *(code **)(puVar5 + 0xaf600)" identifier = (pointer_expression "*(code **)(puVar5 + 0xaf600)" * (cast_expression "(code **)(puVar5 + 0xaf600)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar5 + 0xaf600)" ( (binary_expression "puVar5 + 0xaf600" identifier + number_literal) ))))) ;) (expression_statement "(*pcVar6)();" (call_expression "(*pcVar6)()" (parenthesized_expression "(*pcVar6)" ( (pointer_expression "*pcVar6" * identifier) )) (argument_list "()" ( ))) ;) (expression_statement "(**(code **)(pcVar6 + 0xae578))();" (call_expression "(**(code **)(pcVar6 + 0xae578))()" (parenthesized_expression "(**(code **)(pcVar6 + 0xae578))" ( (pointer_expression "**(code **)(pcVar6 + 0xae578)" * (pointer_expression "*(code **)(pcVar6 + 0xae578)" * (cast_expression "(code **)(pcVar6 + 0xae578)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar6 + 0xae578)" ( (binary_expression "pcVar6 + 0xae578" identifier + number_literal) ))))) )) (argument_list "()" ( ))) ;) (expression_statement "(**(code **)(pcVar6 + 0xae578))(puVar3 + 0x84,0x84);" (call_expression "(**(code **)(pcVar6 + 0xae578))(puVar3 + 0x84,0x84)" (parenthesized_expression "(**(code **)(pcVar6 + 0xae578))" ( (pointer_expression "**(code **)(pcVar6 + 0xae578)" * (pointer_expression "*(code **)(pcVar6 + 0xae578)" * (cast_expression "(code **)(pcVar6 + 0xae578)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar6 + 0xae578)" ( (binary_expression "pcVar6 + 0xae578" identifier + number_literal) ))))) )) (argument_list "(puVar3 + 0x84,0x84)" ( (binary_expression "puVar3 + 0x84" identifier + number_literal) , number_literal ))) ;) (expression_statement "(**(code **)(pcVar6 + 0xae578))(puVar3 + 0x114,0x4c);" (call_expression "(**(code **)(pcVar6 + 0xae578))(puVar3 + 0x114,0x4c)" (parenthesized_expression "(**(code **)(pcVar6 + 0xae578))" ( (pointer_expression "**(code **)(pcVar6 + 0xae578)" * (pointer_expression "*(code **)(pcVar6 + 0xae578)" * (cast_expression "(code **)(pcVar6 + 0xae578)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar6 + 0xae578)" ( (binary_expression "pcVar6 + 0xae578" identifier + number_literal) ))))) )) (argument_list "(puVar3 + 0x114,0x4c)" ( (binary_expression "puVar3 + 0x114" identifier + number_literal) , number_literal ))) ;) (expression_statement "(**(code **)(pcVar6 + 0xae524))(puVar3);" (call_expression "(**(code **)(pcVar6 + 0xae524))(puVar3)" (parenthesized_expression "(**(code **)(pcVar6 + 0xae524))" ( (pointer_expression "**(code **)(pcVar6 + 0xae524)" * (pointer_expression "*(code **)(pcVar6 + 0xae524)" * (cast_expression "(code **)(pcVar6 + 0xae524)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar6 + 0xae524)" ( (binary_expression "pcVar6 + 0xae524" identifier + number_literal) ))))) )) (argument_list "(puVar3)" ( identifier ))) ;) (return_statement "return;" return ;) })))
(translation_unit "int poly_verresult(void *handle,uchar *blk)\n\n{\n  undefined *puVar1;\n  chacha20 *ctx;\n  int iVar2;\n  uchar *iv;\n  undefined4 in_a3;\n  int *piVar3;\n  undefined *puVar4;\n  code *pcVar5;\n  uchar auStack_64 [5];\n  undefined1 uStack_5f;\n  undefined1 uStack_5e;\n  undefined1 uStack_5d;\n  int iStack_5c;\n  undefined *puStack_54;\n  uchar *puStack_50;\n  uchar *puStack_4c;\n  uchar mac [16];\n  \n  puVar1 = PTR___stack_chk_guard_00122654;\n  ctx = *(chacha20 **)PTR___stack_chk_guard_00122654;\n  poly1305_finalise((poly1305 *)((int)handle + 0x114),mac);\n  iVar2 = (*(code *)PTR_smemeq_00121970)(blk,mac,0x10);\n  if (ctx == *(chacha20 **)puVar1) {\n    return iVar2;\n  }\n  puVar4 = PTR___stack_chk_fail_001222ec;\n  (*(code *)PTR___stack_chk_fail_001222ec)();\n  puStack_54 = puVar1;\n  piVar3 = *(int **)(puVar4 + 0xaf968);\n  iStack_5c = *piVar3;\n  auStack_64[0] = '\0';\n  auStack_64[1] = 0;\n  auStack_64[2] = 0;\n  auStack_64[3] = 0;\n  auStack_64[4] = (uchar)in_a3;\n  uStack_5f = (undefined1)((uint)in_a3 >> 8);\n  uStack_5e = (undefined1)((uint)in_a3 >> 0x10);\n  uStack_5d = (undefined1)((uint)in_a3 >> 0x18);\n  iv = auStack_64;\n  puStack_50 = mac;\n  puStack_4c = blk;\n  chacha20_iv(ctx,iv);\n  chacha20_iv(ctx + 1,iv);\n  ctx[1].state[0xc] = ctx[1].state[0xc] + 1;\n  (**(code **)(puVar4 + 0xae66c))(iv,8);\n  iVar2 = *piVar3;\n  if (iStack_5c == iVar2) {\n    return iVar2;\n  }\n  pcVar5 = *(code **)(puVar4 + 0xaf600);\n  (*pcVar5)();\n  (**(code **)(pcVar5 + 0xae578))();\n  (**(code **)(pcVar5 + 0xae578))(iv + 0x84,0x84);\n  (**(code **)(pcVar5 + 0xae578))(iv + 0x114,0x4c);\n  iVar2 = (**(code **)(pcVar5 + 0xae524))(iv);\n  return iVar2;\n}\n\n" (function_definition "int poly_verresult(void *handle,uchar *blk)\n\n{\n  undefined *puVar1;\n  chacha20 *ctx;\n  int iVar2;\n  uchar *iv;\n  undefined4 in_a3;\n  int *piVar3;\n  undefined *puVar4;\n  code *pcVar5;\n  uchar auStack_64 [5];\n  undefined1 uStack_5f;\n  undefined1 uStack_5e;\n  undefined1 uStack_5d;\n  int iStack_5c;\n  undefined *puStack_54;\n  uchar *puStack_50;\n  uchar *puStack_4c;\n  uchar mac [16];\n  \n  puVar1 = PTR___stack_chk_guard_00122654;\n  ctx = *(chacha20 **)PTR___stack_chk_guard_00122654;\n  poly1305_finalise((poly1305 *)((int)handle + 0x114),mac);\n  iVar2 = (*(code *)PTR_smemeq_00121970)(blk,mac,0x10);\n  if (ctx == *(chacha20 **)puVar1) {\n    return iVar2;\n  }\n  puVar4 = PTR___stack_chk_fail_001222ec;\n  (*(code *)PTR___stack_chk_fail_001222ec)();\n  puStack_54 = puVar1;\n  piVar3 = *(int **)(puVar4 + 0xaf968);\n  iStack_5c = *piVar3;\n  auStack_64[0] = '\0';\n  auStack_64[1] = 0;\n  auStack_64[2] = 0;\n  auStack_64[3] = 0;\n  auStack_64[4] = (uchar)in_a3;\n  uStack_5f = (undefined1)((uint)in_a3 >> 8);\n  uStack_5e = (undefined1)((uint)in_a3 >> 0x10);\n  uStack_5d = (undefined1)((uint)in_a3 >> 0x18);\n  iv = auStack_64;\n  puStack_50 = mac;\n  puStack_4c = blk;\n  chacha20_iv(ctx,iv);\n  chacha20_iv(ctx + 1,iv);\n  ctx[1].state[0xc] = ctx[1].state[0xc] + 1;\n  (**(code **)(puVar4 + 0xae66c))(iv,8);\n  iVar2 = *piVar3;\n  if (iStack_5c == iVar2) {\n    return iVar2;\n  }\n  pcVar5 = *(code **)(puVar4 + 0xaf600);\n  (*pcVar5)();\n  (**(code **)(pcVar5 + 0xae578))();\n  (**(code **)(pcVar5 + 0xae578))(iv + 0x84,0x84);\n  (**(code **)(pcVar5 + 0xae578))(iv + 0x114,0x4c);\n  iVar2 = (**(code **)(pcVar5 + 0xae524))(iv);\n  return iVar2;\n}" primitive_type (function_declarator "poly_verresult(void *handle,uchar *blk)" identifier (parameter_list "(void *handle,uchar *blk)" ( (parameter_declaration "void *handle" primitive_type (pointer_declarator "*handle" * identifier)) , (parameter_declaration "uchar *blk" type_identifier (pointer_declarator "*blk" * identifier)) ))) (compound_statement "{\n  undefined *puVar1;\n  chacha20 *ctx;\n  int iVar2;\n  uchar *iv;\n  undefined4 in_a3;\n  int *piVar3;\n  undefined *puVar4;\n  code *pcVar5;\n  uchar auStack_64 [5];\n  undefined1 uStack_5f;\n  undefined1 uStack_5e;\n  undefined1 uStack_5d;\n  int iStack_5c;\n  undefined *puStack_54;\n  uchar *puStack_50;\n  uchar *puStack_4c;\n  uchar mac [16];\n  \n  puVar1 = PTR___stack_chk_guard_00122654;\n  ctx = *(chacha20 **)PTR___stack_chk_guard_00122654;\n  poly1305_finalise((poly1305 *)((int)handle + 0x114),mac);\n  iVar2 = (*(code *)PTR_smemeq_00121970)(blk,mac,0x10);\n  if (ctx == *(chacha20 **)puVar1) {\n    return iVar2;\n  }\n  puVar4 = PTR___stack_chk_fail_001222ec;\n  (*(code *)PTR___stack_chk_fail_001222ec)();\n  puStack_54 = puVar1;\n  piVar3 = *(int **)(puVar4 + 0xaf968);\n  iStack_5c = *piVar3;\n  auStack_64[0] = '\0';\n  auStack_64[1] = 0;\n  auStack_64[2] = 0;\n  auStack_64[3] = 0;\n  auStack_64[4] = (uchar)in_a3;\n  uStack_5f = (undefined1)((uint)in_a3 >> 8);\n  uStack_5e = (undefined1)((uint)in_a3 >> 0x10);\n  uStack_5d = (undefined1)((uint)in_a3 >> 0x18);\n  iv = auStack_64;\n  puStack_50 = mac;\n  puStack_4c = blk;\n  chacha20_iv(ctx,iv);\n  chacha20_iv(ctx + 1,iv);\n  ctx[1].state[0xc] = ctx[1].state[0xc] + 1;\n  (**(code **)(puVar4 + 0xae66c))(iv,8);\n  iVar2 = *piVar3;\n  if (iStack_5c == iVar2) {\n    return iVar2;\n  }\n  pcVar5 = *(code **)(puVar4 + 0xaf600);\n  (*pcVar5)();\n  (**(code **)(pcVar5 + 0xae578))();\n  (**(code **)(pcVar5 + 0xae578))(iv + 0x84,0x84);\n  (**(code **)(pcVar5 + 0xae578))(iv + 0x114,0x4c);\n  iVar2 = (**(code **)(pcVar5 + 0xae524))(iv);\n  return iVar2;\n}" { (declaration "undefined *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "chacha20 *ctx;" type_identifier (pointer_declarator "*ctx" * identifier) ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "uchar *iv;" type_identifier (pointer_declarator "*iv" * identifier) ;) (declaration "undefined4 in_a3;" type_identifier identifier ;) (declaration "int *piVar3;" primitive_type (pointer_declarator "*piVar3" * identifier) ;) (declaration "undefined *puVar4;" type_identifier (pointer_declarator "*puVar4" * identifier) ;) (declaration "code *pcVar5;" type_identifier (pointer_declarator "*pcVar5" * identifier) ;) (declaration "uchar auStack_64 [5];" type_identifier (array_declarator "auStack_64 [5]" identifier [ number_literal ]) ;) (declaration "undefined1 uStack_5f;" type_identifier identifier ;) (declaration "undefined1 uStack_5e;" type_identifier identifier ;) (declaration "undefined1 uStack_5d;" type_identifier identifier ;) (declaration "int iStack_5c;" primitive_type identifier ;) (declaration "undefined *puStack_54;" type_identifier (pointer_declarator "*puStack_54" * identifier) ;) (declaration "uchar *puStack_50;" type_identifier (pointer_declarator "*puStack_50" * identifier) ;) (declaration "uchar *puStack_4c;" type_identifier (pointer_declarator "*puStack_4c" * identifier) ;) (declaration "uchar mac [16];" type_identifier (array_declarator "mac [16]" identifier [ number_literal ]) ;) (expression_statement "puVar1 = PTR___stack_chk_guard_00122654;" (assignment_expression "puVar1 = PTR___stack_chk_guard_00122654" identifier = identifier) ;) (expression_statement "ctx = *(chacha20 **)PTR___stack_chk_guard_00122654;" (assignment_expression "ctx = *(chacha20 **)PTR___stack_chk_guard_00122654" identifier = (pointer_expression "*(chacha20 **)PTR___stack_chk_guard_00122654" * (cast_expression "(chacha20 **)PTR___stack_chk_guard_00122654" ( (type_descriptor "chacha20 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier))) ;) (expression_statement "poly1305_finalise((poly1305 *)((int)handle + 0x114),mac);" (call_expression "poly1305_finalise((poly1305 *)((int)handle + 0x114),mac)" identifier (argument_list "((poly1305 *)((int)handle + 0x114),mac)" ( (cast_expression "(poly1305 *)((int)handle + 0x114)" ( (type_descriptor "poly1305 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)handle + 0x114)" ( (binary_expression "(int)handle + 0x114" (cast_expression "(int)handle" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))) , identifier ))) ;) (expression_statement "iVar2 = (*(code *)PTR_smemeq_00121970)(blk,mac,0x10);" (assignment_expression "iVar2 = (*(code *)PTR_smemeq_00121970)(blk,mac,0x10)" identifier = (call_expression "(*(code *)PTR_smemeq_00121970)(blk,mac,0x10)" (parenthesized_expression "(*(code *)PTR_smemeq_00121970)" ( (pointer_expression "*(code *)PTR_smemeq_00121970" * (cast_expression "(code *)PTR_smemeq_00121970" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(blk,mac,0x10)" ( identifier , identifier , number_literal )))) ;) (if_statement "if (ctx == *(chacha20 **)puVar1) {\n    return iVar2;\n  }" if (parenthesized_expression "(ctx == *(chacha20 **)puVar1)" ( (binary_expression "ctx == *(chacha20 **)puVar1" identifier == (pointer_expression "*(chacha20 **)puVar1" * (cast_expression "(chacha20 **)puVar1" ( (type_descriptor "chacha20 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier))) )) (compound_statement "{\n    return iVar2;\n  }" { (return_statement "return iVar2;" return identifier ;) })) (expression_statement "puVar4 = PTR___stack_chk_fail_001222ec;" (assignment_expression "puVar4 = PTR___stack_chk_fail_001222ec" identifier = identifier) ;) (expression_statement "(*(code *)PTR___stack_chk_fail_001222ec)();" (call_expression "(*(code *)PTR___stack_chk_fail_001222ec)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_001222ec)" ( (pointer_expression "*(code *)PTR___stack_chk_fail_001222ec" * (cast_expression "(code *)PTR___stack_chk_fail_001222ec" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) (expression_statement "puStack_54 = puVar1;" (assignment_expression "puStack_54 = puVar1" identifier = identifier) ;) (expression_statement "piVar3 = *(int **)(puVar4 + 0xaf968);" (assignment_expression "piVar3 = *(int **)(puVar4 + 0xaf968)" identifier = (pointer_expression "*(int **)(puVar4 + 0xaf968)" * (cast_expression "(int **)(puVar4 + 0xaf968)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar4 + 0xaf968)" ( (binary_expression "puVar4 + 0xaf968" identifier + number_literal) ))))) ;) (expression_statement "iStack_5c = *piVar3;" (assignment_expression "iStack_5c = *piVar3" identifier = (pointer_expression "*piVar3" * identifier)) ;) (expression_statement "auStack_64[0] = '\0';" (assignment_expression "auStack_64[0] = '\0'" (subscript_expression "auStack_64[0]" identifier [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "auStack_64[1] = 0;" (assignment_expression "auStack_64[1] = 0" (subscript_expression "auStack_64[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "auStack_64[2] = 0;" (assignment_expression "auStack_64[2] = 0" (subscript_expression "auStack_64[2]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "auStack_64[3] = 0;" (assignment_expression "auStack_64[3] = 0" (subscript_expression "auStack_64[3]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "auStack_64[4] = (uchar)in_a3;" (assignment_expression "auStack_64[4] = (uchar)in_a3" (subscript_expression "auStack_64[4]" identifier [ number_literal ]) = (cast_expression "(uchar)in_a3" ( (type_descriptor "uchar" type_identifier) ) identifier)) ;) (expression_statement "uStack_5f = (undefined1)((uint)in_a3 >> 8);" (assignment_expression "uStack_5f = (undefined1)((uint)in_a3 >> 8)" identifier = (call_expression "(undefined1)((uint)in_a3 >> 8)" (parenthesized_expression "(undefined1)" ( identifier )) (argument_list "((uint)in_a3 >> 8)" ( (binary_expression "(uint)in_a3 >> 8" (cast_expression "(uint)in_a3" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "uStack_5e = (undefined1)((uint)in_a3 >> 0x10);" (assignment_expression "uStack_5e = (undefined1)((uint)in_a3 >> 0x10)" identifier = (call_expression "(undefined1)((uint)in_a3 >> 0x10)" (parenthesized_expression "(undefined1)" ( identifier )) (argument_list "((uint)in_a3 >> 0x10)" ( (binary_expression "(uint)in_a3 >> 0x10" (cast_expression "(uint)in_a3" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "uStack_5d = (undefined1)((uint)in_a3 >> 0x18);" (assignment_expression "uStack_5d = (undefined1)((uint)in_a3 >> 0x18)" identifier = (call_expression "(undefined1)((uint)in_a3 >> 0x18)" (parenthesized_expression "(undefined1)" ( identifier )) (argument_list "((uint)in_a3 >> 0x18)" ( (binary_expression "(uint)in_a3 >> 0x18" (cast_expression "(uint)in_a3" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "iv = auStack_64;" (assignment_expression "iv = auStack_64" identifier = identifier) ;) (expression_statement "puStack_50 = mac;" (assignment_expression "puStack_50 = mac" identifier = identifier) ;) (expression_statement "puStack_4c = blk;" (assignment_expression "puStack_4c = blk" identifier = identifier) ;) (expression_statement "chacha20_iv(ctx,iv);" (call_expression "chacha20_iv(ctx,iv)" identifier (argument_list "(ctx,iv)" ( identifier , identifier ))) ;) (expression_statement "chacha20_iv(ctx + 1,iv);" (call_expression "chacha20_iv(ctx + 1,iv)" identifier (argument_list "(ctx + 1,iv)" ( (binary_expression "ctx + 1" identifier + number_literal) , identifier ))) ;) (expression_statement "ctx[1].state[0xc] = ctx[1].state[0xc] + 1;" (assignment_expression "ctx[1].state[0xc] = ctx[1].state[0xc] + 1" (subscript_expression "ctx[1].state[0xc]" (field_expression "ctx[1].state" (subscript_expression "ctx[1]" identifier [ number_literal ]) . field_identifier) [ number_literal ]) = (binary_expression "ctx[1].state[0xc] + 1" (subscript_expression "ctx[1].state[0xc]" (field_expression "ctx[1].state" (subscript_expression "ctx[1]" identifier [ number_literal ]) . field_identifier) [ number_literal ]) + number_literal)) ;) (expression_statement "(**(code **)(puVar4 + 0xae66c))(iv,8);" (call_expression "(**(code **)(puVar4 + 0xae66c))(iv,8)" (parenthesized_expression "(**(code **)(puVar4 + 0xae66c))" ( (pointer_expression "**(code **)(puVar4 + 0xae66c)" * (pointer_expression "*(code **)(puVar4 + 0xae66c)" * (cast_expression "(code **)(puVar4 + 0xae66c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar4 + 0xae66c)" ( (binary_expression "puVar4 + 0xae66c" identifier + number_literal) ))))) )) (argument_list "(iv,8)" ( identifier , number_literal ))) ;) (expression_statement "iVar2 = *piVar3;" (assignment_expression "iVar2 = *piVar3" identifier = (pointer_expression "*piVar3" * identifier)) ;) (if_statement "if (iStack_5c == iVar2) {\n    return iVar2;\n  }" if (parenthesized_expression "(iStack_5c == iVar2)" ( (binary_expression "iStack_5c == iVar2" identifier == identifier) )) (compound_statement "{\n    return iVar2;\n  }" { (return_statement "return iVar2;" return identifier ;) })) (expression_statement "pcVar5 = *(code **)(puVar4 + 0xaf600);" (assignment_expression "pcVar5 = *(code **)(puVar4 + 0xaf600)" identifier = (pointer_expression "*(code **)(puVar4 + 0xaf600)" * (cast_expression "(code **)(puVar4 + 0xaf600)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar4 + 0xaf600)" ( (binary_expression "puVar4 + 0xaf600" identifier + number_literal) ))))) ;) (expression_statement "(*pcVar5)();" (call_expression "(*pcVar5)()" (parenthesized_expression "(*pcVar5)" ( (pointer_expression "*pcVar5" * identifier) )) (argument_list "()" ( ))) ;) (expression_statement "(**(code **)(pcVar5 + 0xae578))();" (call_expression "(**(code **)(pcVar5 + 0xae578))()" (parenthesized_expression "(**(code **)(pcVar5 + 0xae578))" ( (pointer_expression "**(code **)(pcVar5 + 0xae578)" * (pointer_expression "*(code **)(pcVar5 + 0xae578)" * (cast_expression "(code **)(pcVar5 + 0xae578)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar5 + 0xae578)" ( (binary_expression "pcVar5 + 0xae578" identifier + number_literal) ))))) )) (argument_list "()" ( ))) ;) (expression_statement "(**(code **)(pcVar5 + 0xae578))(iv + 0x84,0x84);" (call_expression "(**(code **)(pcVar5 + 0xae578))(iv + 0x84,0x84)" (parenthesized_expression "(**(code **)(pcVar5 + 0xae578))" ( (pointer_expression "**(code **)(pcVar5 + 0xae578)" * (pointer_expression "*(code **)(pcVar5 + 0xae578)" * (cast_expression "(code **)(pcVar5 + 0xae578)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar5 + 0xae578)" ( (binary_expression "pcVar5 + 0xae578" identifier + number_literal) ))))) )) (argument_list "(iv + 0x84,0x84)" ( (binary_expression "iv + 0x84" identifier + number_literal) , number_literal ))) ;) (expression_statement "(**(code **)(pcVar5 + 0xae578))(iv + 0x114,0x4c);" (call_expression "(**(code **)(pcVar5 + 0xae578))(iv + 0x114,0x4c)" (parenthesized_expression "(**(code **)(pcVar5 + 0xae578))" ( (pointer_expression "**(code **)(pcVar5 + 0xae578)" * (pointer_expression "*(code **)(pcVar5 + 0xae578)" * (cast_expression "(code **)(pcVar5 + 0xae578)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar5 + 0xae578)" ( (binary_expression "pcVar5 + 0xae578" identifier + number_literal) ))))) )) (argument_list "(iv + 0x114,0x4c)" ( (binary_expression "iv + 0x114" identifier + number_literal) , number_literal ))) ;) (expression_statement "iVar2 = (**(code **)(pcVar5 + 0xae524))(iv);" (assignment_expression "iVar2 = (**(code **)(pcVar5 + 0xae524))(iv)" identifier = (call_expression "(**(code **)(pcVar5 + 0xae524))(iv)" (parenthesized_expression "(**(code **)(pcVar5 + 0xae524))" ( (pointer_expression "**(code **)(pcVar5 + 0xae524)" * (pointer_expression "*(code **)(pcVar5 + 0xae524)" * (cast_expression "(code **)(pcVar5 + 0xae524)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar5 + 0xae524)" ( (binary_expression "pcVar5 + 0xae524" identifier + number_literal) ))))) )) (argument_list "(iv)" ( identifier )))) ;) (return_statement "return iVar2;" return identifier ;) })))
(translation_unit "void FUN_00072c4c(int param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4)\n\n{\n  undefined *puVar1;\n  int iVar2;\n  undefined1 *puVar3;\n  int *piVar4;\n  undefined *puVar5;\n  code *pcVar6;\n  undefined1 uStack_64;\n  undefined1 uStack_63;\n  undefined1 uStack_62;\n  undefined1 uStack_61;\n  undefined1 uStack_60;\n  undefined1 uStack_5f;\n  undefined1 uStack_5e;\n  undefined1 uStack_5d;\n  int iStack_5c;\n  undefined *puStack_54;\n  undefined1 *puStack_50;\n  undefined4 uStack_4c;\n  undefined1 auStack_24 [16];\n  int local_14;\n  \n  puVar1 = PTR___stack_chk_guard_00122654;\n  local_14 = *(int *)PTR___stack_chk_guard_00122654;\n  FUN_0007297c(param_1 + 0x114,auStack_24);\n  (*(code *)PTR_smemeq_00121970)(param_2,auStack_24,0x10);\n  if (local_14 == *(int *)puVar1) {\n    return;\n  }\n  iVar2 = local_14;\n  puVar5 = PTR___stack_chk_fail_001222ec;\n  (*(code *)PTR___stack_chk_fail_001222ec)();\n  puStack_54 = puVar1;\n  piVar4 = *(int **)(puVar5 + 0xaf968);\n  iStack_5c = *piVar4;\n  uStack_64 = 0;\n  uStack_63 = 0;\n  uStack_62 = 0;\n  uStack_61 = 0;\n  uStack_60 = (undefined1)param_4;\n  uStack_5f = (undefined1)((uint)param_4 >> 8);\n  uStack_5e = (undefined1)((uint)param_4 >> 0x10);\n  uStack_5d = (undefined1)((uint)param_4 >> 0x18);\n  puVar3 = &uStack_64;\n  puStack_50 = auStack_24;\n  uStack_4c = param_2;\n  FUN_0007224c();\n  FUN_0007224c(iVar2 + 0x84,puVar3);\n  *(int *)(iVar2 + 0xb4) = *(int *)(iVar2 + 0xb4) + 1;\n  (**(code **)(puVar5 + 0xae66c))(puVar3,8);\n  if (iStack_5c == *piVar4) {\n    return;\n  }\n  pcVar6 = *(code **)(puVar5 + 0xaf600);\n  (*pcVar6)();\n  (**(code **)(pcVar6 + 0xae578))();\n  (**(code **)(pcVar6 + 0xae578))(puVar3 + 0x84,0x84);\n  (**(code **)(pcVar6 + 0xae578))(puVar3 + 0x114,0x4c);\n  (**(code **)(pcVar6 + 0xae524))(puVar3);\n  return;\n}\n\n" (function_definition "void FUN_00072c4c(int param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4)\n\n{\n  undefined *puVar1;\n  int iVar2;\n  undefined1 *puVar3;\n  int *piVar4;\n  undefined *puVar5;\n  code *pcVar6;\n  undefined1 uStack_64;\n  undefined1 uStack_63;\n  undefined1 uStack_62;\n  undefined1 uStack_61;\n  undefined1 uStack_60;\n  undefined1 uStack_5f;\n  undefined1 uStack_5e;\n  undefined1 uStack_5d;\n  int iStack_5c;\n  undefined *puStack_54;\n  undefined1 *puStack_50;\n  undefined4 uStack_4c;\n  undefined1 auStack_24 [16];\n  int local_14;\n  \n  puVar1 = PTR___stack_chk_guard_00122654;\n  local_14 = *(int *)PTR___stack_chk_guard_00122654;\n  FUN_0007297c(param_1 + 0x114,auStack_24);\n  (*(code *)PTR_smemeq_00121970)(param_2,auStack_24,0x10);\n  if (local_14 == *(int *)puVar1) {\n    return;\n  }\n  iVar2 = local_14;\n  puVar5 = PTR___stack_chk_fail_001222ec;\n  (*(code *)PTR___stack_chk_fail_001222ec)();\n  puStack_54 = puVar1;\n  piVar4 = *(int **)(puVar5 + 0xaf968);\n  iStack_5c = *piVar4;\n  uStack_64 = 0;\n  uStack_63 = 0;\n  uStack_62 = 0;\n  uStack_61 = 0;\n  uStack_60 = (undefined1)param_4;\n  uStack_5f = (undefined1)((uint)param_4 >> 8);\n  uStack_5e = (undefined1)((uint)param_4 >> 0x10);\n  uStack_5d = (undefined1)((uint)param_4 >> 0x18);\n  puVar3 = &uStack_64;\n  puStack_50 = auStack_24;\n  uStack_4c = param_2;\n  FUN_0007224c();\n  FUN_0007224c(iVar2 + 0x84,puVar3);\n  *(int *)(iVar2 + 0xb4) = *(int *)(iVar2 + 0xb4) + 1;\n  (**(code **)(puVar5 + 0xae66c))(puVar3,8);\n  if (iStack_5c == *piVar4) {\n    return;\n  }\n  pcVar6 = *(code **)(puVar5 + 0xaf600);\n  (*pcVar6)();\n  (**(code **)(pcVar6 + 0xae578))();\n  (**(code **)(pcVar6 + 0xae578))(puVar3 + 0x84,0x84);\n  (**(code **)(pcVar6 + 0xae578))(puVar3 + 0x114,0x4c);\n  (**(code **)(pcVar6 + 0xae524))(puVar3);\n  return;\n}" primitive_type (function_declarator "FUN_00072c4c(int param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4)" identifier (parameter_list "(int param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "undefined4 param_2" type_identifier identifier) , (parameter_declaration "undefined4 param_3" type_identifier identifier) , (parameter_declaration "undefined4 param_4" type_identifier identifier) ))) (compound_statement "{\n  undefined *puVar1;\n  int iVar2;\n  undefined1 *puVar3;\n  int *piVar4;\n  undefined *puVar5;\n  code *pcVar6;\n  undefined1 uStack_64;\n  undefined1 uStack_63;\n  undefined1 uStack_62;\n  undefined1 uStack_61;\n  undefined1 uStack_60;\n  undefined1 uStack_5f;\n  undefined1 uStack_5e;\n  undefined1 uStack_5d;\n  int iStack_5c;\n  undefined *puStack_54;\n  undefined1 *puStack_50;\n  undefined4 uStack_4c;\n  undefined1 auStack_24 [16];\n  int local_14;\n  \n  puVar1 = PTR___stack_chk_guard_00122654;\n  local_14 = *(int *)PTR___stack_chk_guard_00122654;\n  FUN_0007297c(param_1 + 0x114,auStack_24);\n  (*(code *)PTR_smemeq_00121970)(param_2,auStack_24,0x10);\n  if (local_14 == *(int *)puVar1) {\n    return;\n  }\n  iVar2 = local_14;\n  puVar5 = PTR___stack_chk_fail_001222ec;\n  (*(code *)PTR___stack_chk_fail_001222ec)();\n  puStack_54 = puVar1;\n  piVar4 = *(int **)(puVar5 + 0xaf968);\n  iStack_5c = *piVar4;\n  uStack_64 = 0;\n  uStack_63 = 0;\n  uStack_62 = 0;\n  uStack_61 = 0;\n  uStack_60 = (undefined1)param_4;\n  uStack_5f = (undefined1)((uint)param_4 >> 8);\n  uStack_5e = (undefined1)((uint)param_4 >> 0x10);\n  uStack_5d = (undefined1)((uint)param_4 >> 0x18);\n  puVar3 = &uStack_64;\n  puStack_50 = auStack_24;\n  uStack_4c = param_2;\n  FUN_0007224c();\n  FUN_0007224c(iVar2 + 0x84,puVar3);\n  *(int *)(iVar2 + 0xb4) = *(int *)(iVar2 + 0xb4) + 1;\n  (**(code **)(puVar5 + 0xae66c))(puVar3,8);\n  if (iStack_5c == *piVar4) {\n    return;\n  }\n  pcVar6 = *(code **)(puVar5 + 0xaf600);\n  (*pcVar6)();\n  (**(code **)(pcVar6 + 0xae578))();\n  (**(code **)(pcVar6 + 0xae578))(puVar3 + 0x84,0x84);\n  (**(code **)(pcVar6 + 0xae578))(puVar3 + 0x114,0x4c);\n  (**(code **)(pcVar6 + 0xae524))(puVar3);\n  return;\n}" { (declaration "undefined *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "undefined1 *puVar3;" type_identifier (pointer_declarator "*puVar3" * identifier) ;) (declaration "int *piVar4;" primitive_type (pointer_declarator "*piVar4" * identifier) ;) (declaration "undefined *puVar5;" type_identifier (pointer_declarator "*puVar5" * identifier) ;) (declaration "code *pcVar6;" type_identifier (pointer_declarator "*pcVar6" * identifier) ;) (declaration "undefined1 uStack_64;" type_identifier identifier ;) (declaration "undefined1 uStack_63;" type_identifier identifier ;) (declaration "undefined1 uStack_62;" type_identifier identifier ;) (declaration "undefined1 uStack_61;" type_identifier identifier ;) (declaration "undefined1 uStack_60;" type_identifier identifier ;) (declaration "undefined1 uStack_5f;" type_identifier identifier ;) (declaration "undefined1 uStack_5e;" type_identifier identifier ;) (declaration "undefined1 uStack_5d;" type_identifier identifier ;) (declaration "int iStack_5c;" primitive_type identifier ;) (declaration "undefined *puStack_54;" type_identifier (pointer_declarator "*puStack_54" * identifier) ;) (declaration "undefined1 *puStack_50;" type_identifier (pointer_declarator "*puStack_50" * identifier) ;) (declaration "undefined4 uStack_4c;" type_identifier identifier ;) (declaration "undefined1 auStack_24 [16];" type_identifier (array_declarator "auStack_24 [16]" identifier [ number_literal ]) ;) (declaration "int local_14;" primitive_type identifier ;) (expression_statement "puVar1 = PTR___stack_chk_guard_00122654;" (assignment_expression "puVar1 = PTR___stack_chk_guard_00122654" identifier = identifier) ;) (expression_statement "local_14 = *(int *)PTR___stack_chk_guard_00122654;" (assignment_expression "local_14 = *(int *)PTR___stack_chk_guard_00122654" identifier = (pointer_expression "*(int *)PTR___stack_chk_guard_00122654" * (cast_expression "(int *)PTR___stack_chk_guard_00122654" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "FUN_0007297c(param_1 + 0x114,auStack_24);" (call_expression "FUN_0007297c(param_1 + 0x114,auStack_24)" identifier (argument_list "(param_1 + 0x114,auStack_24)" ( (binary_expression "param_1 + 0x114" identifier + number_literal) , identifier ))) ;) (expression_statement "(*(code *)PTR_smemeq_00121970)(param_2,auStack_24,0x10);" (call_expression "(*(code *)PTR_smemeq_00121970)(param_2,auStack_24,0x10)" (parenthesized_expression "(*(code *)PTR_smemeq_00121970)" ( (pointer_expression "*(code *)PTR_smemeq_00121970" * (cast_expression "(code *)PTR_smemeq_00121970" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(param_2,auStack_24,0x10)" ( identifier , identifier , number_literal ))) ;) (if_statement "if (local_14 == *(int *)puVar1) {\n    return;\n  }" if (parenthesized_expression "(local_14 == *(int *)puVar1)" ( (binary_expression "local_14 == *(int *)puVar1" identifier == (pointer_expression "*(int *)puVar1" * (cast_expression "(int *)puVar1" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) )) (compound_statement "{\n    return;\n  }" { (return_statement "return;" return ;) })) (expression_statement "iVar2 = local_14;" (assignment_expression "iVar2 = local_14" identifier = identifier) ;) (expression_statement "puVar5 = PTR___stack_chk_fail_001222ec;" (assignment_expression "puVar5 = PTR___stack_chk_fail_001222ec" identifier = identifier) ;) (expression_statement "(*(code *)PTR___stack_chk_fail_001222ec)();" (call_expression "(*(code *)PTR___stack_chk_fail_001222ec)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_001222ec)" ( (pointer_expression "*(code *)PTR___stack_chk_fail_001222ec" * (cast_expression "(code *)PTR___stack_chk_fail_001222ec" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) (expression_statement "puStack_54 = puVar1;" (assignment_expression "puStack_54 = puVar1" identifier = identifier) ;) (expression_statement "piVar4 = *(int **)(puVar5 + 0xaf968);" (assignment_expression "piVar4 = *(int **)(puVar5 + 0xaf968)" identifier = (pointer_expression "*(int **)(puVar5 + 0xaf968)" * (cast_expression "(int **)(puVar5 + 0xaf968)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar5 + 0xaf968)" ( (binary_expression "puVar5 + 0xaf968" identifier + number_literal) ))))) ;) (expression_statement "iStack_5c = *piVar4;" (assignment_expression "iStack_5c = *piVar4" identifier = (pointer_expression "*piVar4" * identifier)) ;) (expression_statement "uStack_64 = 0;" (assignment_expression "uStack_64 = 0" identifier = number_literal) ;) (expression_statement "uStack_63 = 0;" (assignment_expression "uStack_63 = 0" identifier = number_literal) ;) (expression_statement "uStack_62 = 0;" (assignment_expression "uStack_62 = 0" identifier = number_literal) ;) (expression_statement "uStack_61 = 0;" (assignment_expression "uStack_61 = 0" identifier = number_literal) ;) (expression_statement "uStack_60 = (undefined1)param_4;" (assignment_expression "uStack_60 = (undefined1)param_4" identifier = (cast_expression "(undefined1)param_4" ( (type_descriptor "undefined1" type_identifier) ) identifier)) ;) (expression_statement "uStack_5f = (undefined1)((uint)param_4 >> 8);" (assignment_expression "uStack_5f = (undefined1)((uint)param_4 >> 8)" identifier = (call_expression "(undefined1)((uint)param_4 >> 8)" (parenthesized_expression "(undefined1)" ( identifier )) (argument_list "((uint)param_4 >> 8)" ( (binary_expression "(uint)param_4 >> 8" (cast_expression "(uint)param_4" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "uStack_5e = (undefined1)((uint)param_4 >> 0x10);" (assignment_expression "uStack_5e = (undefined1)((uint)param_4 >> 0x10)" identifier = (call_expression "(undefined1)((uint)param_4 >> 0x10)" (parenthesized_expression "(undefined1)" ( identifier )) (argument_list "((uint)param_4 >> 0x10)" ( (binary_expression "(uint)param_4 >> 0x10" (cast_expression "(uint)param_4" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "uStack_5d = (undefined1)((uint)param_4 >> 0x18);" (assignment_expression "uStack_5d = (undefined1)((uint)param_4 >> 0x18)" identifier = (call_expression "(undefined1)((uint)param_4 >> 0x18)" (parenthesized_expression "(undefined1)" ( identifier )) (argument_list "((uint)param_4 >> 0x18)" ( (binary_expression "(uint)param_4 >> 0x18" (cast_expression "(uint)param_4" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "puVar3 = &uStack_64;" (assignment_expression "puVar3 = &uStack_64" identifier = (pointer_expression "&uStack_64" & identifier)) ;) (expression_statement "puStack_50 = auStack_24;" (assignment_expression "puStack_50 = auStack_24" identifier = identifier) ;) (expression_statement "uStack_4c = param_2;" (assignment_expression "uStack_4c = param_2" identifier = identifier) ;) (expression_statement "FUN_0007224c();" (call_expression "FUN_0007224c()" identifier (argument_list "()" ( ))) ;) (expression_statement "FUN_0007224c(iVar2 + 0x84,puVar3);" (call_expression "FUN_0007224c(iVar2 + 0x84,puVar3)" identifier (argument_list "(iVar2 + 0x84,puVar3)" ( (binary_expression "iVar2 + 0x84" identifier + number_literal) , identifier ))) ;) (expression_statement "*(int *)(iVar2 + 0xb4) = *(int *)(iVar2 + 0xb4) + 1;" (assignment_expression "*(int *)(iVar2 + 0xb4) = *(int *)(iVar2 + 0xb4) + 1" (pointer_expression "*(int *)(iVar2 + 0xb4)" * (cast_expression "(int *)(iVar2 + 0xb4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0xb4)" ( (binary_expression "iVar2 + 0xb4" identifier + number_literal) )))) = (binary_expression "*(int *)(iVar2 + 0xb4) + 1" (pointer_expression "*(int *)(iVar2 + 0xb4)" * (cast_expression "(int *)(iVar2 + 0xb4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0xb4)" ( (binary_expression "iVar2 + 0xb4" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "(**(code **)(puVar5 + 0xae66c))(puVar3,8);" (call_expression "(**(code **)(puVar5 + 0xae66c))(puVar3,8)" (parenthesized_expression "(**(code **)(puVar5 + 0xae66c))" ( (pointer_expression "**(code **)(puVar5 + 0xae66c)" * (pointer_expression "*(code **)(puVar5 + 0xae66c)" * (cast_expression "(code **)(puVar5 + 0xae66c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar5 + 0xae66c)" ( (binary_expression "puVar5 + 0xae66c" identifier + number_literal) ))))) )) (argument_list "(puVar3,8)" ( identifier , number_literal ))) ;) (if_statement "if (iStack_5c == *piVar4) {\n    return;\n  }" if (parenthesized_expression "(iStack_5c == *piVar4)" ( (binary_expression "iStack_5c == *piVar4" identifier == (pointer_expression "*piVar4" * identifier)) )) (compound_statement "{\n    return;\n  }" { (return_statement "return;" return ;) })) (expression_statement "pcVar6 = *(code **)(puVar5 + 0xaf600);" (assignment_expression "pcVar6 = *(code **)(puVar5 + 0xaf600)" identifier = (pointer_expression "*(code **)(puVar5 + 0xaf600)" * (cast_expression "(code **)(puVar5 + 0xaf600)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar5 + 0xaf600)" ( (binary_expression "puVar5 + 0xaf600" identifier + number_literal) ))))) ;) (expression_statement "(*pcVar6)();" (call_expression "(*pcVar6)()" (parenthesized_expression "(*pcVar6)" ( (pointer_expression "*pcVar6" * identifier) )) (argument_list "()" ( ))) ;) (expression_statement "(**(code **)(pcVar6 + 0xae578))();" (call_expression "(**(code **)(pcVar6 + 0xae578))()" (parenthesized_expression "(**(code **)(pcVar6 + 0xae578))" ( (pointer_expression "**(code **)(pcVar6 + 0xae578)" * (pointer_expression "*(code **)(pcVar6 + 0xae578)" * (cast_expression "(code **)(pcVar6 + 0xae578)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar6 + 0xae578)" ( (binary_expression "pcVar6 + 0xae578" identifier + number_literal) ))))) )) (argument_list "()" ( ))) ;) (expression_statement "(**(code **)(pcVar6 + 0xae578))(puVar3 + 0x84,0x84);" (call_expression "(**(code **)(pcVar6 + 0xae578))(puVar3 + 0x84,0x84)" (parenthesized_expression "(**(code **)(pcVar6 + 0xae578))" ( (pointer_expression "**(code **)(pcVar6 + 0xae578)" * (pointer_expression "*(code **)(pcVar6 + 0xae578)" * (cast_expression "(code **)(pcVar6 + 0xae578)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar6 + 0xae578)" ( (binary_expression "pcVar6 + 0xae578" identifier + number_literal) ))))) )) (argument_list "(puVar3 + 0x84,0x84)" ( (binary_expression "puVar3 + 0x84" identifier + number_literal) , number_literal ))) ;) (expression_statement "(**(code **)(pcVar6 + 0xae578))(puVar3 + 0x114,0x4c);" (call_expression "(**(code **)(pcVar6 + 0xae578))(puVar3 + 0x114,0x4c)" (parenthesized_expression "(**(code **)(pcVar6 + 0xae578))" ( (pointer_expression "**(code **)(pcVar6 + 0xae578)" * (pointer_expression "*(code **)(pcVar6 + 0xae578)" * (cast_expression "(code **)(pcVar6 + 0xae578)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar6 + 0xae578)" ( (binary_expression "pcVar6 + 0xae578" identifier + number_literal) ))))) )) (argument_list "(puVar3 + 0x114,0x4c)" ( (binary_expression "puVar3 + 0x114" identifier + number_literal) , number_literal ))) ;) (expression_statement "(**(code **)(pcVar6 + 0xae524))(puVar3);" (call_expression "(**(code **)(pcVar6 + 0xae524))(puVar3)" (parenthesized_expression "(**(code **)(pcVar6 + 0xae524))" ( (pointer_expression "**(code **)(pcVar6 + 0xae524)" * (pointer_expression "*(code **)(pcVar6 + 0xae524)" * (cast_expression "(code **)(pcVar6 + 0xae524)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar6 + 0xae524)" ( (binary_expression "pcVar6 + 0xae524" identifier + number_literal) ))))) )) (argument_list "(puVar3)" ( identifier ))) ;) (return_statement "return;" return ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT))) ;) (expression_statement (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) , IDENT ))) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT , IDENT , LIT ))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT))) )) (compound_statement { (return_statement return ;) })) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) )))) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) )))) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) )))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression & IDENT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) , IDENT ))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT)) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( IDENT , LIT ))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (pointer_expression * IDENT)) )) (compound_statement { (return_statement return ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( ))) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( ))) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( (binary_expression IDENT + LIT) , LIT ))) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( (binary_expression IDENT + LIT) , LIT ))) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( IDENT ))) ;) (return_statement return ;) })))
(function_definition "void FUN_00072c4c(int param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4)\n\n{\n  undefined *puVar1;\n  int iVar2;\n  undefined1 *puVar3;\n  int *piVar4;\n  undefined *puVar5;\n  code *pcVar6;\n  undefined1 uStack_64;\n  undefined1 uStack_63;\n  undefined1 uStack_62;\n  undefined1 uStack_61;\n  undefined1 uStack_60;\n  undefined1 uStack_5f;\n  undefined1 uStack_5e;\n  undefined1 uStack_5d;\n  int iStack_5c;\n  undefined *puStack_54;\n  undefined1 *puStack_50;\n  undefined4 uStack_4c;\n  undefined1 auStack_24 [16];\n  int local_14;\n  \n  puVar1 = PTR___stack_chk_guard_00122654;\n  local_14 = *(int *)PTR___stack_chk_guard_00122654;\n  FUN_0007297c(param_1 + 0x114,auStack_24);\n  (*(code *)PTR_smemeq_00121970)(param_2,auStack_24,0x10);\n  if (local_14 == *(int *)puVar1) {\n    return;\n  }\n  iVar2 = local_14;\n  puVar5 = PTR___stack_chk_fail_001222ec;\n  (*(code *)PTR___stack_chk_fail_001222ec)();\n  puStack_54 = puVar1;\n  piVar4 = *(int **)(puVar5 + 0xaf968);\n  iStack_5c = *piVar4;\n  uStack_64 = 0;\n  uStack_63 = 0;\n  uStack_62 = 0;\n  uStack_61 = 0;\n  uStack_60 = (undefined1)param_4;\n  uStack_5f = (undefined1)((uint)param_4 >> 8);\n  uStack_5e = (undefined1)((uint)param_4 >> 0x10);\n  uStack_5d = (undefined1)((uint)param_4 >> 0x18);\n  puVar3 = &uStack_64;\n  puStack_50 = auStack_24;\n  uStack_4c = param_2;\n  FUN_0007224c();\n  FUN_0007224c(iVar2 + 0x84,puVar3);\n  *(int *)(iVar2 + 0xb4) = *(int *)(iVar2 + 0xb4) + 1;\n  (**(code **)(puVar5 + 0xae66c))(puVar3,8);\n  if (iStack_5c == *piVar4) {\n    return;\n  }\n  pcVar6 = *(code **)(puVar5 + 0xaf600);\n  (*pcVar6)();\n  (**(code **)(pcVar6 + 0xae578))();\n  (**(code **)(pcVar6 + 0xae578))(puVar3 + 0x84,0x84);\n  (**(code **)(pcVar6 + 0xae578))(puVar3 + 0x114,0x4c);\n  (**(code **)(pcVar6 + 0xae524))(puVar3);\n  return;\n}" (primitive_type "void") (function_declarator "FUN_00072c4c(int param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4)" (identifier "FUN_00072c4c") (parameter_list "(int param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4)" (( "(") (parameter_declaration "int param_1" (primitive_type "int") (identifier "param_1")) (, ",") (parameter_declaration "undefined4 param_2" (type_identifier "undefined4") (identifier "param_2")) (, ",") (parameter_declaration "undefined4 param_3" (type_identifier "undefined4") (identifier "param_3")) (, ",") (parameter_declaration "undefined4 param_4" (type_identifier "undefined4") (identifier "param_4")) () ")"))) (compound_statement "{\n  undefined *puVar1;\n  int iVar2;\n  undefined1 *puVar3;\n  int *piVar4;\n  undefined *puVar5;\n  code *pcVar6;\n  undefined1 uStack_64;\n  undefined1 uStack_63;\n  undefined1 uStack_62;\n  undefined1 uStack_61;\n  undefined1 uStack_60;\n  undefined1 uStack_5f;\n  undefined1 uStack_5e;\n  undefined1 uStack_5d;\n  int iStack_5c;\n  undefined *puStack_54;\n  undefined1 *puStack_50;\n  undefined4 uStack_4c;\n  undefined1 auStack_24 [16];\n  int local_14;\n  \n  puVar1 = PTR___stack_chk_guard_00122654;\n  local_14 = *(int *)PTR___stack_chk_guard_00122654;\n  FUN_0007297c(param_1 + 0x114,auStack_24);\n  (*(code *)PTR_smemeq_00121970)(param_2,auStack_24,0x10);\n  if (local_14 == *(int *)puVar1) {\n    return;\n  }\n  iVar2 = local_14;\n  puVar5 = PTR___stack_chk_fail_001222ec;\n  (*(code *)PTR___stack_chk_fail_001222ec)();\n  puStack_54 = puVar1;\n  piVar4 = *(int **)(puVar5 + 0xaf968);\n  iStack_5c = *piVar4;\n  uStack_64 = 0;\n  uStack_63 = 0;\n  uStack_62 = 0;\n  uStack_61 = 0;\n  uStack_60 = (undefined1)param_4;\n  uStack_5f = (undefined1)((uint)param_4 >> 8);\n  uStack_5e = (undefined1)((uint)param_4 >> 0x10);\n  uStack_5d = (undefined1)((uint)param_4 >> 0x18);\n  puVar3 = &uStack_64;\n  puStack_50 = auStack_24;\n  uStack_4c = param_2;\n  FUN_0007224c();\n  FUN_0007224c(iVar2 + 0x84,puVar3);\n  *(int *)(iVar2 + 0xb4) = *(int *)(iVar2 + 0xb4) + 1;\n  (**(code **)(puVar5 + 0xae66c))(puVar3,8);\n  if (iStack_5c == *piVar4) {\n    return;\n  }\n  pcVar6 = *(code **)(puVar5 + 0xaf600);\n  (*pcVar6)();\n  (**(code **)(pcVar6 + 0xae578))();\n  (**(code **)(pcVar6 + 0xae578))(puVar3 + 0x84,0x84);\n  (**(code **)(pcVar6 + 0xae578))(puVar3 + 0x114,0x4c);\n  (**(code **)(pcVar6 + 0xae524))(puVar3);\n  return;\n}" ({ "{") (declaration "undefined *puVar1;" (type_identifier "undefined") (pointer_declarator "*puVar1" (* "*") (identifier "puVar1")) (; ";")) (declaration "int iVar2;" (primitive_type "int") (identifier "iVar2") (; ";")) (declaration "undefined1 *puVar3;" (type_identifier "undefined1") (pointer_declarator "*puVar3" (* "*") (identifier "puVar3")) (; ";")) (declaration "int *piVar4;" (primitive_type "int") (pointer_declarator "*piVar4" (* "*") (identifier "piVar4")) (; ";")) (declaration "undefined *puVar5;" (type_identifier "undefined") (pointer_declarator "*puVar5" (* "*") (identifier "puVar5")) (; ";")) (declaration "code *pcVar6;" (type_identifier "code") (pointer_declarator "*pcVar6" (* "*") (identifier "pcVar6")) (; ";")) (declaration "undefined1 uStack_64;" (type_identifier "undefined1") (identifier "uStack_64") (; ";")) (declaration "undefined1 uStack_63;" (type_identifier "undefined1") (identifier "uStack_63") (; ";")) (declaration "undefined1 uStack_62;" (type_identifier "undefined1") (identifier "uStack_62") (; ";")) (declaration "undefined1 uStack_61;" (type_identifier "undefined1") (identifier "uStack_61") (; ";")) (declaration "undefined1 uStack_60;" (type_identifier "undefined1") (identifier "uStack_60") (; ";")) (declaration "undefined1 uStack_5f;" (type_identifier "undefined1") (identifier "uStack_5f") (; ";")) (declaration "undefined1 uStack_5e;" (type_identifier "undefined1") (identifier "uStack_5e") (; ";")) (declaration "undefined1 uStack_5d;" (type_identifier "undefined1") (identifier "uStack_5d") (; ";")) (declaration "int iStack_5c;" (primitive_type "int") (identifier "iStack_5c") (; ";")) (declaration "undefined *puStack_54;" (type_identifier "undefined") (pointer_declarator "*puStack_54" (* "*") (identifier "puStack_54")) (; ";")) (declaration "undefined1 *puStack_50;" (type_identifier "undefined1") (pointer_declarator "*puStack_50" (* "*") (identifier "puStack_50")) (; ";")) (declaration "undefined4 uStack_4c;" (type_identifier "undefined4") (identifier "uStack_4c") (; ";")) (declaration "undefined1 auStack_24 [16];" (type_identifier "undefined1") (array_declarator "auStack_24 [16]" (identifier "auStack_24") ([ "[") (number_literal "16") (] "]")) (; ";")) (declaration "int local_14;" (primitive_type "int") (identifier "local_14") (; ";")) (expression_statement "puVar1 = PTR___stack_chk_guard_00122654;" (assignment_expression "puVar1 = PTR___stack_chk_guard_00122654" (identifier "puVar1") (= "=") (identifier "PTR___stack_chk_guard_00122654")) (; ";")) (expression_statement "local_14 = *(int *)PTR___stack_chk_guard_00122654;" (assignment_expression "local_14 = *(int *)PTR___stack_chk_guard_00122654" (identifier "local_14") (= "=") (pointer_expression "*(int *)PTR___stack_chk_guard_00122654" (* "*") (cast_expression "(int *)PTR___stack_chk_guard_00122654" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___stack_chk_guard_00122654")))) (; ";")) (expression_statement "FUN_0007297c(param_1 + 0x114,auStack_24);" (call_expression "FUN_0007297c(param_1 + 0x114,auStack_24)" (identifier "FUN_0007297c") (argument_list "(param_1 + 0x114,auStack_24)" (( "(") (binary_expression "param_1 + 0x114" (identifier "param_1") (+ "+") (number_literal "0x114")) (, ",") (identifier "auStack_24") () ")"))) (; ";")) (expression_statement "(*(code *)PTR_smemeq_00121970)(param_2,auStack_24,0x10);" (call_expression "(*(code *)PTR_smemeq_00121970)(param_2,auStack_24,0x10)" (parenthesized_expression "(*(code *)PTR_smemeq_00121970)" (( "(") (pointer_expression "*(code *)PTR_smemeq_00121970" (* "*") (cast_expression "(code *)PTR_smemeq_00121970" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_smemeq_00121970"))) () ")")) (argument_list "(param_2,auStack_24,0x10)" (( "(") (identifier "param_2") (, ",") (identifier "auStack_24") (, ",") (number_literal "0x10") () ")"))) (; ";")) (if_statement "if (local_14 == *(int *)puVar1) {\n    return;\n  }" (if "if") (parenthesized_expression "(local_14 == *(int *)puVar1)" (( "(") (binary_expression "local_14 == *(int *)puVar1" (identifier "local_14") (== "==") (pointer_expression "*(int *)puVar1" (* "*") (cast_expression "(int *)puVar1" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "puVar1")))) () ")")) (compound_statement "{\n    return;\n  }" ({ "{") (return_statement "return;" (return "return") (; ";")) (} "}"))) (expression_statement "iVar2 = local_14;" (assignment_expression "iVar2 = local_14" (identifier "iVar2") (= "=") (identifier "local_14")) (; ";")) (expression_statement "puVar5 = PTR___stack_chk_fail_001222ec;" (assignment_expression "puVar5 = PTR___stack_chk_fail_001222ec" (identifier "puVar5") (= "=") (identifier "PTR___stack_chk_fail_001222ec")) (; ";")) (expression_statement "(*(code *)PTR___stack_chk_fail_001222ec)();" (call_expression "(*(code *)PTR___stack_chk_fail_001222ec)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_001222ec)" (( "(") (pointer_expression "*(code *)PTR___stack_chk_fail_001222ec" (* "*") (cast_expression "(code *)PTR___stack_chk_fail_001222ec" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___stack_chk_fail_001222ec"))) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "puStack_54 = puVar1;" (assignment_expression "puStack_54 = puVar1" (identifier "puStack_54") (= "=") (identifier "puVar1")) (; ";")) (expression_statement "piVar4 = *(int **)(puVar5 + 0xaf968);" (assignment_expression "piVar4 = *(int **)(puVar5 + 0xaf968)" (identifier "piVar4") (= "=") (pointer_expression "*(int **)(puVar5 + 0xaf968)" (* "*") (cast_expression "(int **)(puVar5 + 0xaf968)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar5 + 0xaf968)" (( "(") (binary_expression "puVar5 + 0xaf968" (identifier "puVar5") (+ "+") (number_literal "0xaf968")) () ")"))))) (; ";")) (expression_statement "iStack_5c = *piVar4;" (assignment_expression "iStack_5c = *piVar4" (identifier "iStack_5c") (= "=") (pointer_expression "*piVar4" (* "*") (identifier "piVar4"))) (; ";")) (expression_statement "uStack_64 = 0;" (assignment_expression "uStack_64 = 0" (identifier "uStack_64") (= "=") (number_literal "0")) (; ";")) (expression_statement "uStack_63 = 0;" (assignment_expression "uStack_63 = 0" (identifier "uStack_63") (= "=") (number_literal "0")) (; ";")) (expression_statement "uStack_62 = 0;" (assignment_expression "uStack_62 = 0" (identifier "uStack_62") (= "=") (number_literal "0")) (; ";")) (expression_statement "uStack_61 = 0;" (assignment_expression "uStack_61 = 0" (identifier "uStack_61") (= "=") (number_literal "0")) (; ";")) (expression_statement "uStack_60 = (undefined1)param_4;" (assignment_expression "uStack_60 = (undefined1)param_4" (identifier "uStack_60") (= "=") (cast_expression "(undefined1)param_4" (( "(") (type_descriptor "undefined1" (type_identifier "undefined1")) () ")") (identifier "param_4"))) (; ";")) (expression_statement "uStack_5f = (undefined1)((uint)param_4 >> 8);" (assignment_expression "uStack_5f = (undefined1)((uint)param_4 >> 8)" (identifier "uStack_5f") (= "=") (call_expression "(undefined1)((uint)param_4 >> 8)" (parenthesized_expression "(undefined1)" (( "(") (identifier "undefined1") () ")")) (argument_list "((uint)param_4 >> 8)" (( "(") (binary_expression "(uint)param_4 >> 8" (cast_expression "(uint)param_4" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "param_4")) (>> ">>") (number_literal "8")) () ")")))) (; ";")) (expression_statement "uStack_5e = (undefined1)((uint)param_4 >> 0x10);" (assignment_expression "uStack_5e = (undefined1)((uint)param_4 >> 0x10)" (identifier "uStack_5e") (= "=") (call_expression "(undefined1)((uint)param_4 >> 0x10)" (parenthesized_expression "(undefined1)" (( "(") (identifier "undefined1") () ")")) (argument_list "((uint)param_4 >> 0x10)" (( "(") (binary_expression "(uint)param_4 >> 0x10" (cast_expression "(uint)param_4" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "param_4")) (>> ">>") (number_literal "0x10")) () ")")))) (; ";")) (expression_statement "uStack_5d = (undefined1)((uint)param_4 >> 0x18);" (assignment_expression "uStack_5d = (undefined1)((uint)param_4 >> 0x18)" (identifier "uStack_5d") (= "=") (call_expression "(undefined1)((uint)param_4 >> 0x18)" (parenthesized_expression "(undefined1)" (( "(") (identifier "undefined1") () ")")) (argument_list "((uint)param_4 >> 0x18)" (( "(") (binary_expression "(uint)param_4 >> 0x18" (cast_expression "(uint)param_4" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "param_4")) (>> ">>") (number_literal "0x18")) () ")")))) (; ";")) (expression_statement "puVar3 = &uStack_64;" (assignment_expression "puVar3 = &uStack_64" (identifier "puVar3") (= "=") (pointer_expression "&uStack_64" (& "&") (identifier "uStack_64"))) (; ";")) (expression_statement "puStack_50 = auStack_24;" (assignment_expression "puStack_50 = auStack_24" (identifier "puStack_50") (= "=") (identifier "auStack_24")) (; ";")) (expression_statement "uStack_4c = param_2;" (assignment_expression "uStack_4c = param_2" (identifier "uStack_4c") (= "=") (identifier "param_2")) (; ";")) (expression_statement "FUN_0007224c();" (call_expression "FUN_0007224c()" (identifier "FUN_0007224c") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "FUN_0007224c(iVar2 + 0x84,puVar3);" (call_expression "FUN_0007224c(iVar2 + 0x84,puVar3)" (identifier "FUN_0007224c") (argument_list "(iVar2 + 0x84,puVar3)" (( "(") (binary_expression "iVar2 + 0x84" (identifier "iVar2") (+ "+") (number_literal "0x84")) (, ",") (identifier "puVar3") () ")"))) (; ";")) (expression_statement "*(int *)(iVar2 + 0xb4) = *(int *)(iVar2 + 0xb4) + 1;" (assignment_expression "*(int *)(iVar2 + 0xb4) = *(int *)(iVar2 + 0xb4) + 1" (pointer_expression "*(int *)(iVar2 + 0xb4)" (* "*") (cast_expression "(int *)(iVar2 + 0xb4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar2 + 0xb4)" (( "(") (binary_expression "iVar2 + 0xb4" (identifier "iVar2") (+ "+") (number_literal "0xb4")) () ")")))) (= "=") (binary_expression "*(int *)(iVar2 + 0xb4) + 1" (pointer_expression "*(int *)(iVar2 + 0xb4)" (* "*") (cast_expression "(int *)(iVar2 + 0xb4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar2 + 0xb4)" (( "(") (binary_expression "iVar2 + 0xb4" (identifier "iVar2") (+ "+") (number_literal "0xb4")) () ")")))) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "(**(code **)(puVar5 + 0xae66c))(puVar3,8);" (call_expression "(**(code **)(puVar5 + 0xae66c))(puVar3,8)" (parenthesized_expression "(**(code **)(puVar5 + 0xae66c))" (( "(") (pointer_expression "**(code **)(puVar5 + 0xae66c)" (* "*") (pointer_expression "*(code **)(puVar5 + 0xae66c)" (* "*") (cast_expression "(code **)(puVar5 + 0xae66c)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar5 + 0xae66c)" (( "(") (binary_expression "puVar5 + 0xae66c" (identifier "puVar5") (+ "+") (number_literal "0xae66c")) () ")"))))) () ")")) (argument_list "(puVar3,8)" (( "(") (identifier "puVar3") (, ",") (number_literal "8") () ")"))) (; ";")) (if_statement "if (iStack_5c == *piVar4) {\n    return;\n  }" (if "if") (parenthesized_expression "(iStack_5c == *piVar4)" (( "(") (binary_expression "iStack_5c == *piVar4" (identifier "iStack_5c") (== "==") (pointer_expression "*piVar4" (* "*") (identifier "piVar4"))) () ")")) (compound_statement "{\n    return;\n  }" ({ "{") (return_statement "return;" (return "return") (; ";")) (} "}"))) (expression_statement "pcVar6 = *(code **)(puVar5 + 0xaf600);" (assignment_expression "pcVar6 = *(code **)(puVar5 + 0xaf600)" (identifier "pcVar6") (= "=") (pointer_expression "*(code **)(puVar5 + 0xaf600)" (* "*") (cast_expression "(code **)(puVar5 + 0xaf600)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar5 + 0xaf600)" (( "(") (binary_expression "puVar5 + 0xaf600" (identifier "puVar5") (+ "+") (number_literal "0xaf600")) () ")"))))) (; ";")) (expression_statement "(*pcVar6)();" (call_expression "(*pcVar6)()" (parenthesized_expression "(*pcVar6)" (( "(") (pointer_expression "*pcVar6" (* "*") (identifier "pcVar6")) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "(**(code **)(pcVar6 + 0xae578))();" (call_expression "(**(code **)(pcVar6 + 0xae578))()" (parenthesized_expression "(**(code **)(pcVar6 + 0xae578))" (( "(") (pointer_expression "**(code **)(pcVar6 + 0xae578)" (* "*") (pointer_expression "*(code **)(pcVar6 + 0xae578)" (* "*") (cast_expression "(code **)(pcVar6 + 0xae578)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(pcVar6 + 0xae578)" (( "(") (binary_expression "pcVar6 + 0xae578" (identifier "pcVar6") (+ "+") (number_literal "0xae578")) () ")"))))) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "(**(code **)(pcVar6 + 0xae578))(puVar3 + 0x84,0x84);" (call_expression "(**(code **)(pcVar6 + 0xae578))(puVar3 + 0x84,0x84)" (parenthesized_expression "(**(code **)(pcVar6 + 0xae578))" (( "(") (pointer_expression "**(code **)(pcVar6 + 0xae578)" (* "*") (pointer_expression "*(code **)(pcVar6 + 0xae578)" (* "*") (cast_expression "(code **)(pcVar6 + 0xae578)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(pcVar6 + 0xae578)" (( "(") (binary_expression "pcVar6 + 0xae578" (identifier "pcVar6") (+ "+") (number_literal "0xae578")) () ")"))))) () ")")) (argument_list "(puVar3 + 0x84,0x84)" (( "(") (binary_expression "puVar3 + 0x84" (identifier "puVar3") (+ "+") (number_literal "0x84")) (, ",") (number_literal "0x84") () ")"))) (; ";")) (expression_statement "(**(code **)(pcVar6 + 0xae578))(puVar3 + 0x114,0x4c);" (call_expression "(**(code **)(pcVar6 + 0xae578))(puVar3 + 0x114,0x4c)" (parenthesized_expression "(**(code **)(pcVar6 + 0xae578))" (( "(") (pointer_expression "**(code **)(pcVar6 + 0xae578)" (* "*") (pointer_expression "*(code **)(pcVar6 + 0xae578)" (* "*") (cast_expression "(code **)(pcVar6 + 0xae578)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(pcVar6 + 0xae578)" (( "(") (binary_expression "pcVar6 + 0xae578" (identifier "pcVar6") (+ "+") (number_literal "0xae578")) () ")"))))) () ")")) (argument_list "(puVar3 + 0x114,0x4c)" (( "(") (binary_expression "puVar3 + 0x114" (identifier "puVar3") (+ "+") (number_literal "0x114")) (, ",") (number_literal "0x4c") () ")"))) (; ";")) (expression_statement "(**(code **)(pcVar6 + 0xae524))(puVar3);" (call_expression "(**(code **)(pcVar6 + 0xae524))(puVar3)" (parenthesized_expression "(**(code **)(pcVar6 + 0xae524))" (( "(") (pointer_expression "**(code **)(pcVar6 + 0xae524)" (* "*") (pointer_expression "*(code **)(pcVar6 + 0xae524)" (* "*") (cast_expression "(code **)(pcVar6 + 0xae524)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(pcVar6 + 0xae524)" (( "(") (binary_expression "pcVar6 + 0xae524" (identifier "pcVar6") (+ "+") (number_literal "0xae524")) () ")"))))) () ")")) (argument_list "(puVar3)" (( "(") (identifier "puVar3") () ")"))) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}")))
(translation_unit (function_definition type: (primitive_type) declarator: (function_declarator declarator: (identifier) parameters: (parameter_list (parameter_declaration type: (primitive_type) declarator: (identifier)) (parameter_declaration type: (type_identifier) 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: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (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: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (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: (array_declarator declarator: (identifier) size: (number_literal))) (declaration type: (primitive_type) declarator: (identifier)) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (identifier))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (binary_expression left: (identifier) right: (number_literal)) (identifier)))) (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) (identifier) (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (identifier))))) consequence: (compound_statement (return_statement))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (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))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (call_expression function: (identifier) arguments: (argument_list))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (binary_expression left: (identifier) right: (number_literal)) (identifier)))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal)))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (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))))))) arguments: (argument_list (identifier) (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (pointer_expression argument: (identifier)))) consequence: (compound_statement (return_statement))) (expression_statement (assignment_expression left: (identifier) right: (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))))))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (identifier))) arguments: (argument_list))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (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))))))) arguments: (argument_list))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (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))))))) arguments: (argument_list (binary_expression left: (identifier) right: (number_literal)) (number_literal)))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (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))))))) arguments: (argument_list (binary_expression left: (identifier) right: (number_literal)) (number_literal)))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (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))))))) arguments: (argument_list (identifier)))) (return_statement))))

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

{
  undefined *puVar1;
  int iVar2;
  undefined1 *puVar3;
  int *piVar4;
  undefined *puVar5;
  code *pcVar6;
  undefined1 uStack_64;
  undefined1 uStack_63;
  undefined1 uStack_62;
  undefined1 uStack_61;
  undefined1 uStack_60;
  undefined1 uStack_5f;
  undefined1 uStack_5e;
  undefined1 uStack_5d;
  int iStack_5c;
  undefined *puStack_54;
  undefined1 *puStack_50;
  undefined4 uStack_4c;
  undefined1 auStack_24 [16];
  int local_14;
  
  puVar1 = PTR___stack_chk_guard_00122654;
  local_14 = *(int *)PTR___stack_chk_guard_00122654;
  FUN_0007297c(param_1 + 0x114,auStack_24);
  (*(code *)PTR_smemeq_00121970)(param_2,auStack_24,0x10);
  if (local_14 == *(int *)puVar1) {
    return;
  }
  iVar2 = local_14;
  puVar5 = PTR___stack_chk_fail_001222ec;
  (*(code *)PTR___stack_chk_fail_001222ec)();
  puStack_54 = puVar1;
  piVar4 = *(int **)(puVar5 + 0xaf968);
  iStack_5c = *piVar4;
  uStack_64 = 0;
  uStack_63 = 0;
  uStack_62 = 0;
  uStack_61 = 0;
  uStack_60 = (undefined1)param_4;
  uStack_5f = (undefined1)((uint)param_4 >> 8);
  uStack_5e = (undefined1)((uint)param_4 >> 0x10);
  uStack_5d = (undefined1)((uint)param_4 >> 0x18);
  puVar3 = &uStack_64;
  puStack_50 = auStack_24;
  uStack_4c = param_2;
  FUN_0007224c();
  FUN_0007224c(iVar2 + 0x84,puVar3);
  *(int *)(iVar2 + 0xb4) = *(int *)(iVar2 + 0xb4) + 1;
  (**(code **)(puVar5 + 0xae66c))(puVar3,8);
  if (iStack_5c == *piVar4) {
    return;
  }
  pcVar6 = *(code **)(puVar5 + 0xaf600);
  (*pcVar6)();
  (**(code **)(pcVar6 + 0xae578))();
  (**(code **)(pcVar6 + 0xae578))(puVar3 + 0x84,0x84);
  (**(code **)(pcVar6 + 0xae578))(puVar3 + 0x114,0x4c);
  (**(code **)(pcVar6 + 0xae524))(puVar3);
  return;
}

