
void sha256_conclude_ctx(sha256_ctx *ctx)

{
  bool bVar1;
  undefined *puVar2;
  undefined *puVar3;
  int iVar4;
  int iVar5;
  int iVar6;
  uint uVar7;
  sha256_ctx *ctx_00;
  uint uVar8;
  undefined *puVar9;
  uint32_t uVar10;
  int iVar11;
  size_t len;
  
  puVar2 = PTR___stack_chk_guard_0002e2f0;
  uVar7 = ctx->buflen;
  iVar4 = *(int *)PTR___stack_chk_guard_0002e2f0;
  bVar1 = 0x37 < uVar7;
  len = 0x40;
  iVar5 = 0x68;
  uVar8 = uVar7 + ctx->total[0];
  if (bVar1) {
    iVar5 = 0xa8;
  }
  iVar6 = 100;
  if (bVar1) {
    iVar6 = 0xa4;
    len = 0x80;
  }
  iVar11 = 0x78;
  if (!bVar1) {
    iVar11 = 0x38;
  }
  ctx->total[0] = uVar8;
  uVar10 = ctx->total[1];
  if (uVar8 < uVar7) {
    uVar10 = uVar10 + 1;
    ctx->total[1] = uVar10;
  }
  puVar3 = PTR_memcpy_0002e2f4;
  puVar9 = PTR_DAT_0002e108;
  *(uint32_t *)((int)ctx->state + iVar6) = uVar10 << 3 | uVar8 >> 0x1d;
  puVar9 = puVar9 + -0x2fd0;
  ctx_00 = (sha256_ctx *)((int)ctx->buffer + uVar7);
  *(uint32_t *)((int)ctx->state + iVar5) = ctx->total[0] << 3;
  (*(code *)puVar3)(ctx_00,puVar9,iVar11 - uVar7);
  if (iVar4 != *(int *)puVar2) {
    (*(code *)PTR___stack_chk_fail_0002e2dc)();
    sha256_conclude_ctx(ctx_00);
    sha256_read_ctx(ctx_00,puVar9);
    return;
  }
  sha256_process_block(ctx->buffer,len,ctx);
  return;
}



void FUN_000168c0(int param_1)

{
  bool bVar1;
  undefined *puVar2;
  undefined *puVar3;
  int iVar4;
  int iVar5;
  int iVar6;
  uint uVar7;
  uint uVar8;
  undefined *puVar9;
  int iVar10;
  int iVar11;
  undefined4 uVar12;
  
  puVar2 = PTR___stack_chk_guard_0002e2f0;
  uVar7 = *(uint *)(param_1 + 0x28);
  iVar4 = *(int *)PTR___stack_chk_guard_0002e2f0;
  bVar1 = 0x37 < uVar7;
  uVar12 = 0x40;
  iVar5 = 0x68;
  uVar8 = uVar7 + *(int *)(param_1 + 0x20);
  if (bVar1) {
    iVar5 = 0xa8;
  }
  iVar6 = 100;
  if (bVar1) {
    iVar6 = 0xa4;
    uVar12 = 0x80;
  }
  iVar11 = 0x78;
  if (!bVar1) {
    iVar11 = 0x38;
  }
  *(uint *)(param_1 + 0x20) = uVar8;
  iVar10 = *(int *)(param_1 + 0x24);
  if (uVar8 < uVar7) {
    iVar10 = iVar10 + 1;
    *(int *)(param_1 + 0x24) = iVar10;
  }
  puVar3 = PTR_memcpy_0002e2f4;
  puVar9 = PTR_DAT_0002e108;
  *(uint *)(param_1 + iVar6) = iVar10 << 3 | uVar8 >> 0x1d;
  puVar9 = puVar9 + -0x2fd0;
  iVar6 = param_1 + 0x2c + uVar7;
  *(int *)(param_1 + iVar5) = *(int *)(param_1 + 0x20) << 3;
  (*(code *)puVar3)(iVar6,puVar9,iVar11 - uVar7);
  if (iVar4 != *(int *)puVar2) {
    (*(code *)PTR___stack_chk_fail_0002e2dc)();
    FUN_000168c0();
    sha256_read_ctx(iVar6,puVar9);
    return;
  }
  sha256_process_block(param_1 + 0x2c,uVar12,param_1);
  return;
}


lui gp,0x2
addiu gp,gp,-0x7f0
addu gp,gp,t9
addiu sp,sp,-0x38
li v1,0xa8
li t1,0xa4
sw s2,0x2c(sp)
li t2,0x38
lw s2,-0x7de0(gp)
sw s0,0x24(sp)
or s0,a0,zero
lw a0,0x28(a0)
lw a1,0x20(s0)
lw v0,0x0(s2)
sltiu a2,a0,0x38
sw s1,0x28(sp)
li s1,0x40
sw gp,0x10(sp)
sw v0,0x1c(sp)
li v0,0x68
addu a1,a0,a1
sw ra,0x34(sp)
movz v0,v1,a2
li v1,0x64
sltu t0,a1,a0
movz v1,t1,a2
li t1,0x80
movz s1,t1,a2
li t1,0x78
movn t1,t2,a2
sw s3,0x30(sp)
sw a1,0x20(s0)
lw a3,0x24(s0)
beq t0,zero,0x00016954
_or a2,t1,zero
addiu a3,a3,0x1
sw a3,0x24(s0)
addu v1,s0,v1
lw t9,-0x7ddc(gp)
srl a1,a1,0x1d
sll a3,a3,0x3
addu v0,s0,v0
or a3,a3,a1
lw a1,-0x7fc8(gp)
swl a3,0x0(v1)
addiu s3,s0,0x2c
swr a3,0x3(v1)
subu a2,a2,a0
lw v1,0x20(s0)
addiu a1,a1,-0x2fd0
addu a0,s3,a0
sll v1,v1,0x3
swl v1,0x0(v0)
swr v1,0x3(v0)
jalr t9
_sw v1,0x18(sp)
lw v1,0x1c(sp)
lw v0,0x0(s2)
bne v1,v0,0x000169dc
_lw gp,0x10(sp)
lw ra,0x34(sp)
or a2,s0,zero
lw s2,0x2c(sp)
or a1,s1,zero
lw s0,0x24(sp)
or a0,s3,zero
lw s1,0x28(sp)
lw s3,0x30(sp)
lw t9,-0x7f7c(gp)
b 0x00013f00
_addiu sp,sp,0x38
lw t9,-0x7df4(gp)
jalr t9
_nop
(translation_unit "void FUN_000168c0(int param_1)\n\n{\n  bool bVar1;\n  undefined *puVar2;\n  undefined *puVar3;\n  int iVar4;\n  int iVar5;\n  int iVar6;\n  uint uVar7;\n  uint uVar8;\n  undefined *puVar9;\n  int iVar10;\n  int iVar11;\n  undefined4 uVar12;\n  \n  puVar2 = PTR___stack_chk_guard_0002e2f0;\n  uVar7 = *(uint *)(param_1 + 0x28);\n  iVar4 = *(int *)PTR___stack_chk_guard_0002e2f0;\n  bVar1 = 0x37 < uVar7;\n  uVar12 = 0x40;\n  iVar5 = 0x68;\n  uVar8 = uVar7 + *(int *)(param_1 + 0x20);\n  if (bVar1) {\n    iVar5 = 0xa8;\n  }\n  iVar6 = 100;\n  if (bVar1) {\n    iVar6 = 0xa4;\n    uVar12 = 0x80;\n  }\n  iVar11 = 0x78;\n  if (!bVar1) {\n    iVar11 = 0x38;\n  }\n  *(uint *)(param_1 + 0x20) = uVar8;\n  iVar10 = *(int *)(param_1 + 0x24);\n  if (uVar8 < uVar7) {\n    iVar10 = iVar10 + 1;\n    *(int *)(param_1 + 0x24) = iVar10;\n  }\n  puVar3 = PTR_memcpy_0002e2f4;\n  puVar9 = PTR_DAT_0002e108;\n  *(uint *)(param_1 + iVar6) = iVar10 << 3 | uVar8 >> 0x1d;\n  puVar9 = puVar9 + -0x2fd0;\n  iVar6 = param_1 + 0x2c + uVar7;\n  *(int *)(param_1 + iVar5) = *(int *)(param_1 + 0x20) << 3;\n  (*(code *)puVar3)(iVar6,puVar9,iVar11 - uVar7);\n  if (iVar4 != *(int *)puVar2) {\n    (*(code *)PTR___stack_chk_fail_0002e2dc)();\n    FUN_000168c0();\n    sha256_read_ctx(iVar6,puVar9);\n    return;\n  }\n  sha256_process_block(param_1 + 0x2c,uVar12,param_1);\n  return;\n}\n\n" (function_definition "void FUN_000168c0(int param_1)\n\n{\n  bool bVar1;\n  undefined *puVar2;\n  undefined *puVar3;\n  int iVar4;\n  int iVar5;\n  int iVar6;\n  uint uVar7;\n  uint uVar8;\n  undefined *puVar9;\n  int iVar10;\n  int iVar11;\n  undefined4 uVar12;\n  \n  puVar2 = PTR___stack_chk_guard_0002e2f0;\n  uVar7 = *(uint *)(param_1 + 0x28);\n  iVar4 = *(int *)PTR___stack_chk_guard_0002e2f0;\n  bVar1 = 0x37 < uVar7;\n  uVar12 = 0x40;\n  iVar5 = 0x68;\n  uVar8 = uVar7 + *(int *)(param_1 + 0x20);\n  if (bVar1) {\n    iVar5 = 0xa8;\n  }\n  iVar6 = 100;\n  if (bVar1) {\n    iVar6 = 0xa4;\n    uVar12 = 0x80;\n  }\n  iVar11 = 0x78;\n  if (!bVar1) {\n    iVar11 = 0x38;\n  }\n  *(uint *)(param_1 + 0x20) = uVar8;\n  iVar10 = *(int *)(param_1 + 0x24);\n  if (uVar8 < uVar7) {\n    iVar10 = iVar10 + 1;\n    *(int *)(param_1 + 0x24) = iVar10;\n  }\n  puVar3 = PTR_memcpy_0002e2f4;\n  puVar9 = PTR_DAT_0002e108;\n  *(uint *)(param_1 + iVar6) = iVar10 << 3 | uVar8 >> 0x1d;\n  puVar9 = puVar9 + -0x2fd0;\n  iVar6 = param_1 + 0x2c + uVar7;\n  *(int *)(param_1 + iVar5) = *(int *)(param_1 + 0x20) << 3;\n  (*(code *)puVar3)(iVar6,puVar9,iVar11 - uVar7);\n  if (iVar4 != *(int *)puVar2) {\n    (*(code *)PTR___stack_chk_fail_0002e2dc)();\n    FUN_000168c0();\n    sha256_read_ctx(iVar6,puVar9);\n    return;\n  }\n  sha256_process_block(param_1 + 0x2c,uVar12,param_1);\n  return;\n}" primitive_type (function_declarator "FUN_000168c0(int param_1)" identifier (parameter_list "(int param_1)" ( (parameter_declaration "int param_1" primitive_type identifier) ))) (compound_statement "{\n  bool bVar1;\n  undefined *puVar2;\n  undefined *puVar3;\n  int iVar4;\n  int iVar5;\n  int iVar6;\n  uint uVar7;\n  uint uVar8;\n  undefined *puVar9;\n  int iVar10;\n  int iVar11;\n  undefined4 uVar12;\n  \n  puVar2 = PTR___stack_chk_guard_0002e2f0;\n  uVar7 = *(uint *)(param_1 + 0x28);\n  iVar4 = *(int *)PTR___stack_chk_guard_0002e2f0;\n  bVar1 = 0x37 < uVar7;\n  uVar12 = 0x40;\n  iVar5 = 0x68;\n  uVar8 = uVar7 + *(int *)(param_1 + 0x20);\n  if (bVar1) {\n    iVar5 = 0xa8;\n  }\n  iVar6 = 100;\n  if (bVar1) {\n    iVar6 = 0xa4;\n    uVar12 = 0x80;\n  }\n  iVar11 = 0x78;\n  if (!bVar1) {\n    iVar11 = 0x38;\n  }\n  *(uint *)(param_1 + 0x20) = uVar8;\n  iVar10 = *(int *)(param_1 + 0x24);\n  if (uVar8 < uVar7) {\n    iVar10 = iVar10 + 1;\n    *(int *)(param_1 + 0x24) = iVar10;\n  }\n  puVar3 = PTR_memcpy_0002e2f4;\n  puVar9 = PTR_DAT_0002e108;\n  *(uint *)(param_1 + iVar6) = iVar10 << 3 | uVar8 >> 0x1d;\n  puVar9 = puVar9 + -0x2fd0;\n  iVar6 = param_1 + 0x2c + uVar7;\n  *(int *)(param_1 + iVar5) = *(int *)(param_1 + 0x20) << 3;\n  (*(code *)puVar3)(iVar6,puVar9,iVar11 - uVar7);\n  if (iVar4 != *(int *)puVar2) {\n    (*(code *)PTR___stack_chk_fail_0002e2dc)();\n    FUN_000168c0();\n    sha256_read_ctx(iVar6,puVar9);\n    return;\n  }\n  sha256_process_block(param_1 + 0x2c,uVar12,param_1);\n  return;\n}" { (declaration "bool bVar1;" primitive_type identifier ;) (declaration "undefined *puVar2;" type_identifier (pointer_declarator "*puVar2" * identifier) ;) (declaration "undefined *puVar3;" type_identifier (pointer_declarator "*puVar3" * identifier) ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "int iVar6;" primitive_type identifier ;) (declaration "uint uVar7;" type_identifier identifier ;) (declaration "uint uVar8;" type_identifier identifier ;) (declaration "undefined *puVar9;" type_identifier (pointer_declarator "*puVar9" * identifier) ;) (declaration "int iVar10;" primitive_type identifier ;) (declaration "int iVar11;" primitive_type identifier ;) (declaration "undefined4 uVar12;" type_identifier identifier ;) (expression_statement "puVar2 = PTR___stack_chk_guard_0002e2f0;" (assignment_expression "puVar2 = PTR___stack_chk_guard_0002e2f0" identifier = identifier) ;) (expression_statement "uVar7 = *(uint *)(param_1 + 0x28);" (assignment_expression "uVar7 = *(uint *)(param_1 + 0x28)" identifier = (pointer_expression "*(uint *)(param_1 + 0x28)" * (cast_expression "(uint *)(param_1 + 0x28)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x28)" ( (binary_expression "param_1 + 0x28" identifier + number_literal) ))))) ;) (expression_statement "iVar4 = *(int *)PTR___stack_chk_guard_0002e2f0;" (assignment_expression "iVar4 = *(int *)PTR___stack_chk_guard_0002e2f0" identifier = (pointer_expression "*(int *)PTR___stack_chk_guard_0002e2f0" * (cast_expression "(int *)PTR___stack_chk_guard_0002e2f0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "bVar1 = 0x37 < uVar7;" (assignment_expression "bVar1 = 0x37 < uVar7" identifier = (binary_expression "0x37 < uVar7" number_literal < identifier)) ;) (expression_statement "uVar12 = 0x40;" (assignment_expression "uVar12 = 0x40" identifier = number_literal) ;) (expression_statement "iVar5 = 0x68;" (assignment_expression "iVar5 = 0x68" identifier = number_literal) ;) (expression_statement "uVar8 = uVar7 + *(int *)(param_1 + 0x20);" (assignment_expression "uVar8 = uVar7 + *(int *)(param_1 + 0x20)" identifier = (binary_expression "uVar7 + *(int *)(param_1 + 0x20)" identifier + (pointer_expression "*(int *)(param_1 + 0x20)" * (cast_expression "(int *)(param_1 + 0x20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x20)" ( (binary_expression "param_1 + 0x20" identifier + number_literal) )))))) ;) (if_statement "if (bVar1) {\n    iVar5 = 0xa8;\n  }" if (parenthesized_expression "(bVar1)" ( identifier )) (compound_statement "{\n    iVar5 = 0xa8;\n  }" { (expression_statement "iVar5 = 0xa8;" (assignment_expression "iVar5 = 0xa8" identifier = number_literal) ;) })) (expression_statement "iVar6 = 100;" (assignment_expression "iVar6 = 100" identifier = number_literal) ;) (if_statement "if (bVar1) {\n    iVar6 = 0xa4;\n    uVar12 = 0x80;\n  }" if (parenthesized_expression "(bVar1)" ( identifier )) (compound_statement "{\n    iVar6 = 0xa4;\n    uVar12 = 0x80;\n  }" { (expression_statement "iVar6 = 0xa4;" (assignment_expression "iVar6 = 0xa4" identifier = number_literal) ;) (expression_statement "uVar12 = 0x80;" (assignment_expression "uVar12 = 0x80" identifier = number_literal) ;) })) (expression_statement "iVar11 = 0x78;" (assignment_expression "iVar11 = 0x78" identifier = number_literal) ;) (if_statement "if (!bVar1) {\n    iVar11 = 0x38;\n  }" if (parenthesized_expression "(!bVar1)" ( (unary_expression "!bVar1" ! identifier) )) (compound_statement "{\n    iVar11 = 0x38;\n  }" { (expression_statement "iVar11 = 0x38;" (assignment_expression "iVar11 = 0x38" identifier = number_literal) ;) })) (expression_statement "*(uint *)(param_1 + 0x20) = uVar8;" (assignment_expression "*(uint *)(param_1 + 0x20) = uVar8" (pointer_expression "*(uint *)(param_1 + 0x20)" * (cast_expression "(uint *)(param_1 + 0x20)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x20)" ( (binary_expression "param_1 + 0x20" identifier + number_literal) )))) = identifier) ;) (expression_statement "iVar10 = *(int *)(param_1 + 0x24);" (assignment_expression "iVar10 = *(int *)(param_1 + 0x24)" identifier = (pointer_expression "*(int *)(param_1 + 0x24)" * (cast_expression "(int *)(param_1 + 0x24)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x24)" ( (binary_expression "param_1 + 0x24" identifier + number_literal) ))))) ;) (if_statement "if (uVar8 < uVar7) {\n    iVar10 = iVar10 + 1;\n    *(int *)(param_1 + 0x24) = iVar10;\n  }" if (parenthesized_expression "(uVar8 < uVar7)" ( (binary_expression "uVar8 < uVar7" identifier < identifier) )) (compound_statement "{\n    iVar10 = iVar10 + 1;\n    *(int *)(param_1 + 0x24) = iVar10;\n  }" { (expression_statement "iVar10 = iVar10 + 1;" (assignment_expression "iVar10 = iVar10 + 1" identifier = (binary_expression "iVar10 + 1" identifier + number_literal)) ;) (expression_statement "*(int *)(param_1 + 0x24) = iVar10;" (assignment_expression "*(int *)(param_1 + 0x24) = iVar10" (pointer_expression "*(int *)(param_1 + 0x24)" * (cast_expression "(int *)(param_1 + 0x24)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x24)" ( (binary_expression "param_1 + 0x24" identifier + number_literal) )))) = identifier) ;) })) (expression_statement "puVar3 = PTR_memcpy_0002e2f4;" (assignment_expression "puVar3 = PTR_memcpy_0002e2f4" identifier = identifier) ;) (expression_statement "puVar9 = PTR_DAT_0002e108;" (assignment_expression "puVar9 = PTR_DAT_0002e108" identifier = identifier) ;) (expression_statement "*(uint *)(param_1 + iVar6) = iVar10 << 3 | uVar8 >> 0x1d;" (assignment_expression "*(uint *)(param_1 + iVar6) = iVar10 << 3 | uVar8 >> 0x1d" (pointer_expression "*(uint *)(param_1 + iVar6)" * (cast_expression "(uint *)(param_1 + iVar6)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + iVar6)" ( (binary_expression "param_1 + iVar6" identifier + identifier) )))) = (binary_expression "iVar10 << 3 | uVar8 >> 0x1d" (binary_expression "iVar10 << 3" identifier << number_literal) | (binary_expression "uVar8 >> 0x1d" identifier >> number_literal))) ;) (expression_statement "puVar9 = puVar9 + -0x2fd0;" (assignment_expression "puVar9 = puVar9 + -0x2fd0" identifier = (binary_expression "puVar9 + -0x2fd0" identifier + number_literal)) ;) (expression_statement "iVar6 = param_1 + 0x2c + uVar7;" (assignment_expression "iVar6 = param_1 + 0x2c + uVar7" identifier = (binary_expression "param_1 + 0x2c + uVar7" (binary_expression "param_1 + 0x2c" identifier + number_literal) + identifier)) ;) (expression_statement "*(int *)(param_1 + iVar5) = *(int *)(param_1 + 0x20) << 3;" (assignment_expression "*(int *)(param_1 + iVar5) = *(int *)(param_1 + 0x20) << 3" (pointer_expression "*(int *)(param_1 + iVar5)" * (cast_expression "(int *)(param_1 + iVar5)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + iVar5)" ( (binary_expression "param_1 + iVar5" identifier + identifier) )))) = (binary_expression "*(int *)(param_1 + 0x20) << 3" (pointer_expression "*(int *)(param_1 + 0x20)" * (cast_expression "(int *)(param_1 + 0x20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x20)" ( (binary_expression "param_1 + 0x20" identifier + number_literal) )))) << number_literal)) ;) (expression_statement "(*(code *)puVar3)(iVar6,puVar9,iVar11 - uVar7);" (call_expression "(*(code *)puVar3)(iVar6,puVar9,iVar11 - uVar7)" (parenthesized_expression "(*(code *)puVar3)" ( (pointer_expression "*(code *)puVar3" * (cast_expression "(code *)puVar3" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(iVar6,puVar9,iVar11 - uVar7)" ( identifier , identifier , (binary_expression "iVar11 - uVar7" identifier - identifier) ))) ;) (if_statement "if (iVar4 != *(int *)puVar2) {\n    (*(code *)PTR___stack_chk_fail_0002e2dc)();\n    FUN_000168c0();\n    sha256_read_ctx(iVar6,puVar9);\n    return;\n  }" if (parenthesized_expression "(iVar4 != *(int *)puVar2)" ( (binary_expression "iVar4 != *(int *)puVar2" identifier != (pointer_expression "*(int *)puVar2" * (cast_expression "(int *)puVar2" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) )) (compound_statement "{\n    (*(code *)PTR___stack_chk_fail_0002e2dc)();\n    FUN_000168c0();\n    sha256_read_ctx(iVar6,puVar9);\n    return;\n  }" { (expression_statement "(*(code *)PTR___stack_chk_fail_0002e2dc)();" (call_expression "(*(code *)PTR___stack_chk_fail_0002e2dc)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_0002e2dc)" ( (pointer_expression "*(code *)PTR___stack_chk_fail_0002e2dc" * (cast_expression "(code *)PTR___stack_chk_fail_0002e2dc" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) (expression_statement "FUN_000168c0();" (call_expression "FUN_000168c0()" identifier (argument_list "()" ( ))) ;) (expression_statement "sha256_read_ctx(iVar6,puVar9);" (call_expression "sha256_read_ctx(iVar6,puVar9)" identifier (argument_list "(iVar6,puVar9)" ( identifier , identifier ))) ;) (return_statement "return;" return ;) })) (expression_statement "sha256_process_block(param_1 + 0x2c,uVar12,param_1);" (call_expression "sha256_process_block(param_1 + 0x2c,uVar12,param_1)" identifier (argument_list "(param_1 + 0x2c,uVar12,param_1)" ( (binary_expression "param_1 + 0x2c" identifier + number_literal) , identifier , identifier ))) ;) (return_statement "return;" return ;) })))
(translation_unit "void sha256_conclude_ctx(sha256_ctx *ctx)\n\n{\n  bool bVar1;\n  undefined *puVar2;\n  undefined *puVar3;\n  int iVar4;\n  int iVar5;\n  int iVar6;\n  uint uVar7;\n  sha256_ctx *ctx_00;\n  uint uVar8;\n  undefined *puVar9;\n  uint32_t uVar10;\n  int iVar11;\n  size_t len;\n  \n  puVar2 = PTR___stack_chk_guard_0002e2f0;\n  uVar7 = ctx->buflen;\n  iVar4 = *(int *)PTR___stack_chk_guard_0002e2f0;\n  bVar1 = 0x37 < uVar7;\n  len = 0x40;\n  iVar5 = 0x68;\n  uVar8 = uVar7 + ctx->total[0];\n  if (bVar1) {\n    iVar5 = 0xa8;\n  }\n  iVar6 = 100;\n  if (bVar1) {\n    iVar6 = 0xa4;\n    len = 0x80;\n  }\n  iVar11 = 0x78;\n  if (!bVar1) {\n    iVar11 = 0x38;\n  }\n  ctx->total[0] = uVar8;\n  uVar10 = ctx->total[1];\n  if (uVar8 < uVar7) {\n    uVar10 = uVar10 + 1;\n    ctx->total[1] = uVar10;\n  }\n  puVar3 = PTR_memcpy_0002e2f4;\n  puVar9 = PTR_DAT_0002e108;\n  *(uint32_t *)((int)ctx->state + iVar6) = uVar10 << 3 | uVar8 >> 0x1d;\n  puVar9 = puVar9 + -0x2fd0;\n  ctx_00 = (sha256_ctx *)((int)ctx->buffer + uVar7);\n  *(uint32_t *)((int)ctx->state + iVar5) = ctx->total[0] << 3;\n  (*(code *)puVar3)(ctx_00,puVar9,iVar11 - uVar7);\n  if (iVar4 != *(int *)puVar2) {\n    (*(code *)PTR___stack_chk_fail_0002e2dc)();\n    sha256_conclude_ctx(ctx_00);\n    sha256_read_ctx(ctx_00,puVar9);\n    return;\n  }\n  sha256_process_block(ctx->buffer,len,ctx);\n  return;\n}\n\n" (function_definition "void sha256_conclude_ctx(sha256_ctx *ctx)\n\n{\n  bool bVar1;\n  undefined *puVar2;\n  undefined *puVar3;\n  int iVar4;\n  int iVar5;\n  int iVar6;\n  uint uVar7;\n  sha256_ctx *ctx_00;\n  uint uVar8;\n  undefined *puVar9;\n  uint32_t uVar10;\n  int iVar11;\n  size_t len;\n  \n  puVar2 = PTR___stack_chk_guard_0002e2f0;\n  uVar7 = ctx->buflen;\n  iVar4 = *(int *)PTR___stack_chk_guard_0002e2f0;\n  bVar1 = 0x37 < uVar7;\n  len = 0x40;\n  iVar5 = 0x68;\n  uVar8 = uVar7 + ctx->total[0];\n  if (bVar1) {\n    iVar5 = 0xa8;\n  }\n  iVar6 = 100;\n  if (bVar1) {\n    iVar6 = 0xa4;\n    len = 0x80;\n  }\n  iVar11 = 0x78;\n  if (!bVar1) {\n    iVar11 = 0x38;\n  }\n  ctx->total[0] = uVar8;\n  uVar10 = ctx->total[1];\n  if (uVar8 < uVar7) {\n    uVar10 = uVar10 + 1;\n    ctx->total[1] = uVar10;\n  }\n  puVar3 = PTR_memcpy_0002e2f4;\n  puVar9 = PTR_DAT_0002e108;\n  *(uint32_t *)((int)ctx->state + iVar6) = uVar10 << 3 | uVar8 >> 0x1d;\n  puVar9 = puVar9 + -0x2fd0;\n  ctx_00 = (sha256_ctx *)((int)ctx->buffer + uVar7);\n  *(uint32_t *)((int)ctx->state + iVar5) = ctx->total[0] << 3;\n  (*(code *)puVar3)(ctx_00,puVar9,iVar11 - uVar7);\n  if (iVar4 != *(int *)puVar2) {\n    (*(code *)PTR___stack_chk_fail_0002e2dc)();\n    sha256_conclude_ctx(ctx_00);\n    sha256_read_ctx(ctx_00,puVar9);\n    return;\n  }\n  sha256_process_block(ctx->buffer,len,ctx);\n  return;\n}" primitive_type (function_declarator "sha256_conclude_ctx(sha256_ctx *ctx)" identifier (parameter_list "(sha256_ctx *ctx)" ( (parameter_declaration "sha256_ctx *ctx" type_identifier (pointer_declarator "*ctx" * identifier)) ))) (compound_statement "{\n  bool bVar1;\n  undefined *puVar2;\n  undefined *puVar3;\n  int iVar4;\n  int iVar5;\n  int iVar6;\n  uint uVar7;\n  sha256_ctx *ctx_00;\n  uint uVar8;\n  undefined *puVar9;\n  uint32_t uVar10;\n  int iVar11;\n  size_t len;\n  \n  puVar2 = PTR___stack_chk_guard_0002e2f0;\n  uVar7 = ctx->buflen;\n  iVar4 = *(int *)PTR___stack_chk_guard_0002e2f0;\n  bVar1 = 0x37 < uVar7;\n  len = 0x40;\n  iVar5 = 0x68;\n  uVar8 = uVar7 + ctx->total[0];\n  if (bVar1) {\n    iVar5 = 0xa8;\n  }\n  iVar6 = 100;\n  if (bVar1) {\n    iVar6 = 0xa4;\n    len = 0x80;\n  }\n  iVar11 = 0x78;\n  if (!bVar1) {\n    iVar11 = 0x38;\n  }\n  ctx->total[0] = uVar8;\n  uVar10 = ctx->total[1];\n  if (uVar8 < uVar7) {\n    uVar10 = uVar10 + 1;\n    ctx->total[1] = uVar10;\n  }\n  puVar3 = PTR_memcpy_0002e2f4;\n  puVar9 = PTR_DAT_0002e108;\n  *(uint32_t *)((int)ctx->state + iVar6) = uVar10 << 3 | uVar8 >> 0x1d;\n  puVar9 = puVar9 + -0x2fd0;\n  ctx_00 = (sha256_ctx *)((int)ctx->buffer + uVar7);\n  *(uint32_t *)((int)ctx->state + iVar5) = ctx->total[0] << 3;\n  (*(code *)puVar3)(ctx_00,puVar9,iVar11 - uVar7);\n  if (iVar4 != *(int *)puVar2) {\n    (*(code *)PTR___stack_chk_fail_0002e2dc)();\n    sha256_conclude_ctx(ctx_00);\n    sha256_read_ctx(ctx_00,puVar9);\n    return;\n  }\n  sha256_process_block(ctx->buffer,len,ctx);\n  return;\n}" { (declaration "bool bVar1;" primitive_type identifier ;) (declaration "undefined *puVar2;" type_identifier (pointer_declarator "*puVar2" * identifier) ;) (declaration "undefined *puVar3;" type_identifier (pointer_declarator "*puVar3" * identifier) ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "int iVar6;" primitive_type identifier ;) (declaration "uint uVar7;" type_identifier identifier ;) (declaration "sha256_ctx *ctx_00;" type_identifier (pointer_declarator "*ctx_00" * identifier) ;) (declaration "uint uVar8;" type_identifier identifier ;) (declaration "undefined *puVar9;" type_identifier (pointer_declarator "*puVar9" * identifier) ;) (declaration "uint32_t uVar10;" primitive_type identifier ;) (declaration "int iVar11;" primitive_type identifier ;) (declaration "size_t len;" primitive_type identifier ;) (expression_statement "puVar2 = PTR___stack_chk_guard_0002e2f0;" (assignment_expression "puVar2 = PTR___stack_chk_guard_0002e2f0" identifier = identifier) ;) (expression_statement "uVar7 = ctx->buflen;" (assignment_expression "uVar7 = ctx->buflen" identifier = (field_expression "ctx->buflen" identifier -> field_identifier)) ;) (expression_statement "iVar4 = *(int *)PTR___stack_chk_guard_0002e2f0;" (assignment_expression "iVar4 = *(int *)PTR___stack_chk_guard_0002e2f0" identifier = (pointer_expression "*(int *)PTR___stack_chk_guard_0002e2f0" * (cast_expression "(int *)PTR___stack_chk_guard_0002e2f0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "bVar1 = 0x37 < uVar7;" (assignment_expression "bVar1 = 0x37 < uVar7" identifier = (binary_expression "0x37 < uVar7" number_literal < identifier)) ;) (expression_statement "len = 0x40;" (assignment_expression "len = 0x40" identifier = number_literal) ;) (expression_statement "iVar5 = 0x68;" (assignment_expression "iVar5 = 0x68" identifier = number_literal) ;) (expression_statement "uVar8 = uVar7 + ctx->total[0];" (assignment_expression "uVar8 = uVar7 + ctx->total[0]" identifier = (binary_expression "uVar7 + ctx->total[0]" identifier + (subscript_expression "ctx->total[0]" (field_expression "ctx->total" identifier -> field_identifier) [ number_literal ]))) ;) (if_statement "if (bVar1) {\n    iVar5 = 0xa8;\n  }" if (parenthesized_expression "(bVar1)" ( identifier )) (compound_statement "{\n    iVar5 = 0xa8;\n  }" { (expression_statement "iVar5 = 0xa8;" (assignment_expression "iVar5 = 0xa8" identifier = number_literal) ;) })) (expression_statement "iVar6 = 100;" (assignment_expression "iVar6 = 100" identifier = number_literal) ;) (if_statement "if (bVar1) {\n    iVar6 = 0xa4;\n    len = 0x80;\n  }" if (parenthesized_expression "(bVar1)" ( identifier )) (compound_statement "{\n    iVar6 = 0xa4;\n    len = 0x80;\n  }" { (expression_statement "iVar6 = 0xa4;" (assignment_expression "iVar6 = 0xa4" identifier = number_literal) ;) (expression_statement "len = 0x80;" (assignment_expression "len = 0x80" identifier = number_literal) ;) })) (expression_statement "iVar11 = 0x78;" (assignment_expression "iVar11 = 0x78" identifier = number_literal) ;) (if_statement "if (!bVar1) {\n    iVar11 = 0x38;\n  }" if (parenthesized_expression "(!bVar1)" ( (unary_expression "!bVar1" ! identifier) )) (compound_statement "{\n    iVar11 = 0x38;\n  }" { (expression_statement "iVar11 = 0x38;" (assignment_expression "iVar11 = 0x38" identifier = number_literal) ;) })) (expression_statement "ctx->total[0] = uVar8;" (assignment_expression "ctx->total[0] = uVar8" (subscript_expression "ctx->total[0]" (field_expression "ctx->total" identifier -> field_identifier) [ number_literal ]) = identifier) ;) (expression_statement "uVar10 = ctx->total[1];" (assignment_expression "uVar10 = ctx->total[1]" identifier = (subscript_expression "ctx->total[1]" (field_expression "ctx->total" identifier -> field_identifier) [ number_literal ])) ;) (if_statement "if (uVar8 < uVar7) {\n    uVar10 = uVar10 + 1;\n    ctx->total[1] = uVar10;\n  }" if (parenthesized_expression "(uVar8 < uVar7)" ( (binary_expression "uVar8 < uVar7" identifier < identifier) )) (compound_statement "{\n    uVar10 = uVar10 + 1;\n    ctx->total[1] = uVar10;\n  }" { (expression_statement "uVar10 = uVar10 + 1;" (assignment_expression "uVar10 = uVar10 + 1" identifier = (binary_expression "uVar10 + 1" identifier + number_literal)) ;) (expression_statement "ctx->total[1] = uVar10;" (assignment_expression "ctx->total[1] = uVar10" (subscript_expression "ctx->total[1]" (field_expression "ctx->total" identifier -> field_identifier) [ number_literal ]) = identifier) ;) })) (expression_statement "puVar3 = PTR_memcpy_0002e2f4;" (assignment_expression "puVar3 = PTR_memcpy_0002e2f4" identifier = identifier) ;) (expression_statement "puVar9 = PTR_DAT_0002e108;" (assignment_expression "puVar9 = PTR_DAT_0002e108" identifier = identifier) ;) (expression_statement "*(uint32_t *)((int)ctx->state + iVar6) = uVar10 << 3 | uVar8 >> 0x1d;" (assignment_expression "*(uint32_t *)((int)ctx->state + iVar6) = uVar10 << 3 | uVar8 >> 0x1d" (pointer_expression "*(uint32_t *)((int)ctx->state + iVar6)" * (cast_expression "(uint32_t *)((int)ctx->state + iVar6)" ( (type_descriptor "uint32_t *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)ctx->state + iVar6)" ( (binary_expression "(int)ctx->state + iVar6" (cast_expression "(int)ctx->state" ( (type_descriptor "int" primitive_type) ) (field_expression "ctx->state" identifier -> field_identifier)) + identifier) )))) = (binary_expression "uVar10 << 3 | uVar8 >> 0x1d" (binary_expression "uVar10 << 3" identifier << number_literal) | (binary_expression "uVar8 >> 0x1d" identifier >> number_literal))) ;) (expression_statement "puVar9 = puVar9 + -0x2fd0;" (assignment_expression "puVar9 = puVar9 + -0x2fd0" identifier = (binary_expression "puVar9 + -0x2fd0" identifier + number_literal)) ;) (expression_statement "ctx_00 = (sha256_ctx *)((int)ctx->buffer + uVar7);" (assignment_expression "ctx_00 = (sha256_ctx *)((int)ctx->buffer + uVar7)" identifier = (cast_expression "(sha256_ctx *)((int)ctx->buffer + uVar7)" ( (type_descriptor "sha256_ctx *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)ctx->buffer + uVar7)" ( (binary_expression "(int)ctx->buffer + uVar7" (cast_expression "(int)ctx->buffer" ( (type_descriptor "int" primitive_type) ) (field_expression "ctx->buffer" identifier -> field_identifier)) + identifier) )))) ;) (expression_statement "*(uint32_t *)((int)ctx->state + iVar5) = ctx->total[0] << 3;" (assignment_expression "*(uint32_t *)((int)ctx->state + iVar5) = ctx->total[0] << 3" (pointer_expression "*(uint32_t *)((int)ctx->state + iVar5)" * (cast_expression "(uint32_t *)((int)ctx->state + iVar5)" ( (type_descriptor "uint32_t *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)ctx->state + iVar5)" ( (binary_expression "(int)ctx->state + iVar5" (cast_expression "(int)ctx->state" ( (type_descriptor "int" primitive_type) ) (field_expression "ctx->state" identifier -> field_identifier)) + identifier) )))) = (binary_expression "ctx->total[0] << 3" (subscript_expression "ctx->total[0]" (field_expression "ctx->total" identifier -> field_identifier) [ number_literal ]) << number_literal)) ;) (expression_statement "(*(code *)puVar3)(ctx_00,puVar9,iVar11 - uVar7);" (call_expression "(*(code *)puVar3)(ctx_00,puVar9,iVar11 - uVar7)" (parenthesized_expression "(*(code *)puVar3)" ( (pointer_expression "*(code *)puVar3" * (cast_expression "(code *)puVar3" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(ctx_00,puVar9,iVar11 - uVar7)" ( identifier , identifier , (binary_expression "iVar11 - uVar7" identifier - identifier) ))) ;) (if_statement "if (iVar4 != *(int *)puVar2) {\n    (*(code *)PTR___stack_chk_fail_0002e2dc)();\n    sha256_conclude_ctx(ctx_00);\n    sha256_read_ctx(ctx_00,puVar9);\n    return;\n  }" if (parenthesized_expression "(iVar4 != *(int *)puVar2)" ( (binary_expression "iVar4 != *(int *)puVar2" identifier != (pointer_expression "*(int *)puVar2" * (cast_expression "(int *)puVar2" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) )) (compound_statement "{\n    (*(code *)PTR___stack_chk_fail_0002e2dc)();\n    sha256_conclude_ctx(ctx_00);\n    sha256_read_ctx(ctx_00,puVar9);\n    return;\n  }" { (expression_statement "(*(code *)PTR___stack_chk_fail_0002e2dc)();" (call_expression "(*(code *)PTR___stack_chk_fail_0002e2dc)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_0002e2dc)" ( (pointer_expression "*(code *)PTR___stack_chk_fail_0002e2dc" * (cast_expression "(code *)PTR___stack_chk_fail_0002e2dc" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) (expression_statement "sha256_conclude_ctx(ctx_00);" (call_expression "sha256_conclude_ctx(ctx_00)" identifier (argument_list "(ctx_00)" ( identifier ))) ;) (expression_statement "sha256_read_ctx(ctx_00,puVar9);" (call_expression "sha256_read_ctx(ctx_00,puVar9)" identifier (argument_list "(ctx_00,puVar9)" ( identifier , identifier ))) ;) (return_statement "return;" return ;) })) (expression_statement "sha256_process_block(ctx->buffer,len,ctx);" (call_expression "sha256_process_block(ctx->buffer,len,ctx)" identifier (argument_list "(ctx->buffer,len,ctx)" ( (field_expression "ctx->buffer" identifier -> field_identifier) , identifier , identifier ))) ;) (return_statement "return;" return ;) })))
(translation_unit "void FUN_000168c0(int param_1)\n\n{\n  bool bVar1;\n  undefined *puVar2;\n  undefined *puVar3;\n  int iVar4;\n  int iVar5;\n  int iVar6;\n  uint uVar7;\n  uint uVar8;\n  undefined *puVar9;\n  int iVar10;\n  int iVar11;\n  undefined4 uVar12;\n  \n  puVar2 = PTR___stack_chk_guard_0002e2f0;\n  uVar7 = *(uint *)(param_1 + 0x28);\n  iVar4 = *(int *)PTR___stack_chk_guard_0002e2f0;\n  bVar1 = 0x37 < uVar7;\n  uVar12 = 0x40;\n  iVar5 = 0x68;\n  uVar8 = uVar7 + *(int *)(param_1 + 0x20);\n  if (bVar1) {\n    iVar5 = 0xa8;\n  }\n  iVar6 = 100;\n  if (bVar1) {\n    iVar6 = 0xa4;\n    uVar12 = 0x80;\n  }\n  iVar11 = 0x78;\n  if (!bVar1) {\n    iVar11 = 0x38;\n  }\n  *(uint *)(param_1 + 0x20) = uVar8;\n  iVar10 = *(int *)(param_1 + 0x24);\n  if (uVar8 < uVar7) {\n    iVar10 = iVar10 + 1;\n    *(int *)(param_1 + 0x24) = iVar10;\n  }\n  puVar3 = PTR_memcpy_0002e2f4;\n  puVar9 = PTR_DAT_0002e108;\n  *(uint *)(param_1 + iVar6) = iVar10 << 3 | uVar8 >> 0x1d;\n  puVar9 = puVar9 + -0x2fd0;\n  iVar6 = param_1 + 0x2c + uVar7;\n  *(int *)(param_1 + iVar5) = *(int *)(param_1 + 0x20) << 3;\n  (*(code *)puVar3)(iVar6,puVar9,iVar11 - uVar7);\n  if (iVar4 != *(int *)puVar2) {\n    (*(code *)PTR___stack_chk_fail_0002e2dc)();\n    FUN_000168c0();\n    sha256_read_ctx(iVar6,puVar9);\n    return;\n  }\n  sha256_process_block(param_1 + 0x2c,uVar12,param_1);\n  return;\n}\n\n" (function_definition "void FUN_000168c0(int param_1)\n\n{\n  bool bVar1;\n  undefined *puVar2;\n  undefined *puVar3;\n  int iVar4;\n  int iVar5;\n  int iVar6;\n  uint uVar7;\n  uint uVar8;\n  undefined *puVar9;\n  int iVar10;\n  int iVar11;\n  undefined4 uVar12;\n  \n  puVar2 = PTR___stack_chk_guard_0002e2f0;\n  uVar7 = *(uint *)(param_1 + 0x28);\n  iVar4 = *(int *)PTR___stack_chk_guard_0002e2f0;\n  bVar1 = 0x37 < uVar7;\n  uVar12 = 0x40;\n  iVar5 = 0x68;\n  uVar8 = uVar7 + *(int *)(param_1 + 0x20);\n  if (bVar1) {\n    iVar5 = 0xa8;\n  }\n  iVar6 = 100;\n  if (bVar1) {\n    iVar6 = 0xa4;\n    uVar12 = 0x80;\n  }\n  iVar11 = 0x78;\n  if (!bVar1) {\n    iVar11 = 0x38;\n  }\n  *(uint *)(param_1 + 0x20) = uVar8;\n  iVar10 = *(int *)(param_1 + 0x24);\n  if (uVar8 < uVar7) {\n    iVar10 = iVar10 + 1;\n    *(int *)(param_1 + 0x24) = iVar10;\n  }\n  puVar3 = PTR_memcpy_0002e2f4;\n  puVar9 = PTR_DAT_0002e108;\n  *(uint *)(param_1 + iVar6) = iVar10 << 3 | uVar8 >> 0x1d;\n  puVar9 = puVar9 + -0x2fd0;\n  iVar6 = param_1 + 0x2c + uVar7;\n  *(int *)(param_1 + iVar5) = *(int *)(param_1 + 0x20) << 3;\n  (*(code *)puVar3)(iVar6,puVar9,iVar11 - uVar7);\n  if (iVar4 != *(int *)puVar2) {\n    (*(code *)PTR___stack_chk_fail_0002e2dc)();\n    FUN_000168c0();\n    sha256_read_ctx(iVar6,puVar9);\n    return;\n  }\n  sha256_process_block(param_1 + 0x2c,uVar12,param_1);\n  return;\n}" primitive_type (function_declarator "FUN_000168c0(int param_1)" identifier (parameter_list "(int param_1)" ( (parameter_declaration "int param_1" primitive_type identifier) ))) (compound_statement "{\n  bool bVar1;\n  undefined *puVar2;\n  undefined *puVar3;\n  int iVar4;\n  int iVar5;\n  int iVar6;\n  uint uVar7;\n  uint uVar8;\n  undefined *puVar9;\n  int iVar10;\n  int iVar11;\n  undefined4 uVar12;\n  \n  puVar2 = PTR___stack_chk_guard_0002e2f0;\n  uVar7 = *(uint *)(param_1 + 0x28);\n  iVar4 = *(int *)PTR___stack_chk_guard_0002e2f0;\n  bVar1 = 0x37 < uVar7;\n  uVar12 = 0x40;\n  iVar5 = 0x68;\n  uVar8 = uVar7 + *(int *)(param_1 + 0x20);\n  if (bVar1) {\n    iVar5 = 0xa8;\n  }\n  iVar6 = 100;\n  if (bVar1) {\n    iVar6 = 0xa4;\n    uVar12 = 0x80;\n  }\n  iVar11 = 0x78;\n  if (!bVar1) {\n    iVar11 = 0x38;\n  }\n  *(uint *)(param_1 + 0x20) = uVar8;\n  iVar10 = *(int *)(param_1 + 0x24);\n  if (uVar8 < uVar7) {\n    iVar10 = iVar10 + 1;\n    *(int *)(param_1 + 0x24) = iVar10;\n  }\n  puVar3 = PTR_memcpy_0002e2f4;\n  puVar9 = PTR_DAT_0002e108;\n  *(uint *)(param_1 + iVar6) = iVar10 << 3 | uVar8 >> 0x1d;\n  puVar9 = puVar9 + -0x2fd0;\n  iVar6 = param_1 + 0x2c + uVar7;\n  *(int *)(param_1 + iVar5) = *(int *)(param_1 + 0x20) << 3;\n  (*(code *)puVar3)(iVar6,puVar9,iVar11 - uVar7);\n  if (iVar4 != *(int *)puVar2) {\n    (*(code *)PTR___stack_chk_fail_0002e2dc)();\n    FUN_000168c0();\n    sha256_read_ctx(iVar6,puVar9);\n    return;\n  }\n  sha256_process_block(param_1 + 0x2c,uVar12,param_1);\n  return;\n}" { (declaration "bool bVar1;" primitive_type identifier ;) (declaration "undefined *puVar2;" type_identifier (pointer_declarator "*puVar2" * identifier) ;) (declaration "undefined *puVar3;" type_identifier (pointer_declarator "*puVar3" * identifier) ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "int iVar6;" primitive_type identifier ;) (declaration "uint uVar7;" type_identifier identifier ;) (declaration "uint uVar8;" type_identifier identifier ;) (declaration "undefined *puVar9;" type_identifier (pointer_declarator "*puVar9" * identifier) ;) (declaration "int iVar10;" primitive_type identifier ;) (declaration "int iVar11;" primitive_type identifier ;) (declaration "undefined4 uVar12;" type_identifier identifier ;) (expression_statement "puVar2 = PTR___stack_chk_guard_0002e2f0;" (assignment_expression "puVar2 = PTR___stack_chk_guard_0002e2f0" identifier = identifier) ;) (expression_statement "uVar7 = *(uint *)(param_1 + 0x28);" (assignment_expression "uVar7 = *(uint *)(param_1 + 0x28)" identifier = (pointer_expression "*(uint *)(param_1 + 0x28)" * (cast_expression "(uint *)(param_1 + 0x28)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x28)" ( (binary_expression "param_1 + 0x28" identifier + number_literal) ))))) ;) (expression_statement "iVar4 = *(int *)PTR___stack_chk_guard_0002e2f0;" (assignment_expression "iVar4 = *(int *)PTR___stack_chk_guard_0002e2f0" identifier = (pointer_expression "*(int *)PTR___stack_chk_guard_0002e2f0" * (cast_expression "(int *)PTR___stack_chk_guard_0002e2f0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "bVar1 = 0x37 < uVar7;" (assignment_expression "bVar1 = 0x37 < uVar7" identifier = (binary_expression "0x37 < uVar7" number_literal < identifier)) ;) (expression_statement "uVar12 = 0x40;" (assignment_expression "uVar12 = 0x40" identifier = number_literal) ;) (expression_statement "iVar5 = 0x68;" (assignment_expression "iVar5 = 0x68" identifier = number_literal) ;) (expression_statement "uVar8 = uVar7 + *(int *)(param_1 + 0x20);" (assignment_expression "uVar8 = uVar7 + *(int *)(param_1 + 0x20)" identifier = (binary_expression "uVar7 + *(int *)(param_1 + 0x20)" identifier + (pointer_expression "*(int *)(param_1 + 0x20)" * (cast_expression "(int *)(param_1 + 0x20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x20)" ( (binary_expression "param_1 + 0x20" identifier + number_literal) )))))) ;) (if_statement "if (bVar1) {\n    iVar5 = 0xa8;\n  }" if (parenthesized_expression "(bVar1)" ( identifier )) (compound_statement "{\n    iVar5 = 0xa8;\n  }" { (expression_statement "iVar5 = 0xa8;" (assignment_expression "iVar5 = 0xa8" identifier = number_literal) ;) })) (expression_statement "iVar6 = 100;" (assignment_expression "iVar6 = 100" identifier = number_literal) ;) (if_statement "if (bVar1) {\n    iVar6 = 0xa4;\n    uVar12 = 0x80;\n  }" if (parenthesized_expression "(bVar1)" ( identifier )) (compound_statement "{\n    iVar6 = 0xa4;\n    uVar12 = 0x80;\n  }" { (expression_statement "iVar6 = 0xa4;" (assignment_expression "iVar6 = 0xa4" identifier = number_literal) ;) (expression_statement "uVar12 = 0x80;" (assignment_expression "uVar12 = 0x80" identifier = number_literal) ;) })) (expression_statement "iVar11 = 0x78;" (assignment_expression "iVar11 = 0x78" identifier = number_literal) ;) (if_statement "if (!bVar1) {\n    iVar11 = 0x38;\n  }" if (parenthesized_expression "(!bVar1)" ( (unary_expression "!bVar1" ! identifier) )) (compound_statement "{\n    iVar11 = 0x38;\n  }" { (expression_statement "iVar11 = 0x38;" (assignment_expression "iVar11 = 0x38" identifier = number_literal) ;) })) (expression_statement "*(uint *)(param_1 + 0x20) = uVar8;" (assignment_expression "*(uint *)(param_1 + 0x20) = uVar8" (pointer_expression "*(uint *)(param_1 + 0x20)" * (cast_expression "(uint *)(param_1 + 0x20)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x20)" ( (binary_expression "param_1 + 0x20" identifier + number_literal) )))) = identifier) ;) (expression_statement "iVar10 = *(int *)(param_1 + 0x24);" (assignment_expression "iVar10 = *(int *)(param_1 + 0x24)" identifier = (pointer_expression "*(int *)(param_1 + 0x24)" * (cast_expression "(int *)(param_1 + 0x24)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x24)" ( (binary_expression "param_1 + 0x24" identifier + number_literal) ))))) ;) (if_statement "if (uVar8 < uVar7) {\n    iVar10 = iVar10 + 1;\n    *(int *)(param_1 + 0x24) = iVar10;\n  }" if (parenthesized_expression "(uVar8 < uVar7)" ( (binary_expression "uVar8 < uVar7" identifier < identifier) )) (compound_statement "{\n    iVar10 = iVar10 + 1;\n    *(int *)(param_1 + 0x24) = iVar10;\n  }" { (expression_statement "iVar10 = iVar10 + 1;" (assignment_expression "iVar10 = iVar10 + 1" identifier = (binary_expression "iVar10 + 1" identifier + number_literal)) ;) (expression_statement "*(int *)(param_1 + 0x24) = iVar10;" (assignment_expression "*(int *)(param_1 + 0x24) = iVar10" (pointer_expression "*(int *)(param_1 + 0x24)" * (cast_expression "(int *)(param_1 + 0x24)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x24)" ( (binary_expression "param_1 + 0x24" identifier + number_literal) )))) = identifier) ;) })) (expression_statement "puVar3 = PTR_memcpy_0002e2f4;" (assignment_expression "puVar3 = PTR_memcpy_0002e2f4" identifier = identifier) ;) (expression_statement "puVar9 = PTR_DAT_0002e108;" (assignment_expression "puVar9 = PTR_DAT_0002e108" identifier = identifier) ;) (expression_statement "*(uint *)(param_1 + iVar6) = iVar10 << 3 | uVar8 >> 0x1d;" (assignment_expression "*(uint *)(param_1 + iVar6) = iVar10 << 3 | uVar8 >> 0x1d" (pointer_expression "*(uint *)(param_1 + iVar6)" * (cast_expression "(uint *)(param_1 + iVar6)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + iVar6)" ( (binary_expression "param_1 + iVar6" identifier + identifier) )))) = (binary_expression "iVar10 << 3 | uVar8 >> 0x1d" (binary_expression "iVar10 << 3" identifier << number_literal) | (binary_expression "uVar8 >> 0x1d" identifier >> number_literal))) ;) (expression_statement "puVar9 = puVar9 + -0x2fd0;" (assignment_expression "puVar9 = puVar9 + -0x2fd0" identifier = (binary_expression "puVar9 + -0x2fd0" identifier + number_literal)) ;) (expression_statement "iVar6 = param_1 + 0x2c + uVar7;" (assignment_expression "iVar6 = param_1 + 0x2c + uVar7" identifier = (binary_expression "param_1 + 0x2c + uVar7" (binary_expression "param_1 + 0x2c" identifier + number_literal) + identifier)) ;) (expression_statement "*(int *)(param_1 + iVar5) = *(int *)(param_1 + 0x20) << 3;" (assignment_expression "*(int *)(param_1 + iVar5) = *(int *)(param_1 + 0x20) << 3" (pointer_expression "*(int *)(param_1 + iVar5)" * (cast_expression "(int *)(param_1 + iVar5)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + iVar5)" ( (binary_expression "param_1 + iVar5" identifier + identifier) )))) = (binary_expression "*(int *)(param_1 + 0x20) << 3" (pointer_expression "*(int *)(param_1 + 0x20)" * (cast_expression "(int *)(param_1 + 0x20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x20)" ( (binary_expression "param_1 + 0x20" identifier + number_literal) )))) << number_literal)) ;) (expression_statement "(*(code *)puVar3)(iVar6,puVar9,iVar11 - uVar7);" (call_expression "(*(code *)puVar3)(iVar6,puVar9,iVar11 - uVar7)" (parenthesized_expression "(*(code *)puVar3)" ( (pointer_expression "*(code *)puVar3" * (cast_expression "(code *)puVar3" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(iVar6,puVar9,iVar11 - uVar7)" ( identifier , identifier , (binary_expression "iVar11 - uVar7" identifier - identifier) ))) ;) (if_statement "if (iVar4 != *(int *)puVar2) {\n    (*(code *)PTR___stack_chk_fail_0002e2dc)();\n    FUN_000168c0();\n    sha256_read_ctx(iVar6,puVar9);\n    return;\n  }" if (parenthesized_expression "(iVar4 != *(int *)puVar2)" ( (binary_expression "iVar4 != *(int *)puVar2" identifier != (pointer_expression "*(int *)puVar2" * (cast_expression "(int *)puVar2" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) )) (compound_statement "{\n    (*(code *)PTR___stack_chk_fail_0002e2dc)();\n    FUN_000168c0();\n    sha256_read_ctx(iVar6,puVar9);\n    return;\n  }" { (expression_statement "(*(code *)PTR___stack_chk_fail_0002e2dc)();" (call_expression "(*(code *)PTR___stack_chk_fail_0002e2dc)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_0002e2dc)" ( (pointer_expression "*(code *)PTR___stack_chk_fail_0002e2dc" * (cast_expression "(code *)PTR___stack_chk_fail_0002e2dc" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) (expression_statement "FUN_000168c0();" (call_expression "FUN_000168c0()" identifier (argument_list "()" ( ))) ;) (expression_statement "sha256_read_ctx(iVar6,puVar9);" (call_expression "sha256_read_ctx(iVar6,puVar9)" identifier (argument_list "(iVar6,puVar9)" ( identifier , identifier ))) ;) (return_statement "return;" return ;) })) (expression_statement "sha256_process_block(param_1 + 0x2c,uVar12,param_1);" (call_expression "sha256_process_block(param_1 + 0x2c,uVar12,param_1)" identifier (argument_list "(param_1 + 0x2c,uVar12,param_1)" ( (binary_expression "param_1 + 0x2c" identifier + number_literal) , identifier , identifier ))) ;) (return_statement "return;" return ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration TYPE 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 (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression LIT < IDENT)) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))))) ;) (if_statement if (parenthesized_expression ( IDENT )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) })) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( IDENT )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) })) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (unary_expression ! IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) })) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) })) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + IDENT) )))) = (binary_expression (binary_expression IDENT << LIT) | (binary_expression IDENT >> LIT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + LIT) + IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + IDENT) )))) = (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 * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT , IDENT , (binary_expression IDENT - IDENT) ))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT))) )) (compound_statement { (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( ))) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT ))) ;) (return_statement return ;) })) (expression_statement (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) , IDENT , IDENT ))) ;) (return_statement return ;) })))
(function_definition "void FUN_000168c0(int param_1)\n\n{\n  bool bVar1;\n  undefined *puVar2;\n  undefined *puVar3;\n  int iVar4;\n  int iVar5;\n  int iVar6;\n  uint uVar7;\n  uint uVar8;\n  undefined *puVar9;\n  int iVar10;\n  int iVar11;\n  undefined4 uVar12;\n  \n  puVar2 = PTR___stack_chk_guard_0002e2f0;\n  uVar7 = *(uint *)(param_1 + 0x28);\n  iVar4 = *(int *)PTR___stack_chk_guard_0002e2f0;\n  bVar1 = 0x37 < uVar7;\n  uVar12 = 0x40;\n  iVar5 = 0x68;\n  uVar8 = uVar7 + *(int *)(param_1 + 0x20);\n  if (bVar1) {\n    iVar5 = 0xa8;\n  }\n  iVar6 = 100;\n  if (bVar1) {\n    iVar6 = 0xa4;\n    uVar12 = 0x80;\n  }\n  iVar11 = 0x78;\n  if (!bVar1) {\n    iVar11 = 0x38;\n  }\n  *(uint *)(param_1 + 0x20) = uVar8;\n  iVar10 = *(int *)(param_1 + 0x24);\n  if (uVar8 < uVar7) {\n    iVar10 = iVar10 + 1;\n    *(int *)(param_1 + 0x24) = iVar10;\n  }\n  puVar3 = PTR_memcpy_0002e2f4;\n  puVar9 = PTR_DAT_0002e108;\n  *(uint *)(param_1 + iVar6) = iVar10 << 3 | uVar8 >> 0x1d;\n  puVar9 = puVar9 + -0x2fd0;\n  iVar6 = param_1 + 0x2c + uVar7;\n  *(int *)(param_1 + iVar5) = *(int *)(param_1 + 0x20) << 3;\n  (*(code *)puVar3)(iVar6,puVar9,iVar11 - uVar7);\n  if (iVar4 != *(int *)puVar2) {\n    (*(code *)PTR___stack_chk_fail_0002e2dc)();\n    FUN_000168c0();\n    sha256_read_ctx(iVar6,puVar9);\n    return;\n  }\n  sha256_process_block(param_1 + 0x2c,uVar12,param_1);\n  return;\n}" (primitive_type "void") (function_declarator "FUN_000168c0(int param_1)" (identifier "FUN_000168c0") (parameter_list "(int param_1)" (( "(") (parameter_declaration "int param_1" (primitive_type "int") (identifier "param_1")) () ")"))) (compound_statement "{\n  bool bVar1;\n  undefined *puVar2;\n  undefined *puVar3;\n  int iVar4;\n  int iVar5;\n  int iVar6;\n  uint uVar7;\n  uint uVar8;\n  undefined *puVar9;\n  int iVar10;\n  int iVar11;\n  undefined4 uVar12;\n  \n  puVar2 = PTR___stack_chk_guard_0002e2f0;\n  uVar7 = *(uint *)(param_1 + 0x28);\n  iVar4 = *(int *)PTR___stack_chk_guard_0002e2f0;\n  bVar1 = 0x37 < uVar7;\n  uVar12 = 0x40;\n  iVar5 = 0x68;\n  uVar8 = uVar7 + *(int *)(param_1 + 0x20);\n  if (bVar1) {\n    iVar5 = 0xa8;\n  }\n  iVar6 = 100;\n  if (bVar1) {\n    iVar6 = 0xa4;\n    uVar12 = 0x80;\n  }\n  iVar11 = 0x78;\n  if (!bVar1) {\n    iVar11 = 0x38;\n  }\n  *(uint *)(param_1 + 0x20) = uVar8;\n  iVar10 = *(int *)(param_1 + 0x24);\n  if (uVar8 < uVar7) {\n    iVar10 = iVar10 + 1;\n    *(int *)(param_1 + 0x24) = iVar10;\n  }\n  puVar3 = PTR_memcpy_0002e2f4;\n  puVar9 = PTR_DAT_0002e108;\n  *(uint *)(param_1 + iVar6) = iVar10 << 3 | uVar8 >> 0x1d;\n  puVar9 = puVar9 + -0x2fd0;\n  iVar6 = param_1 + 0x2c + uVar7;\n  *(int *)(param_1 + iVar5) = *(int *)(param_1 + 0x20) << 3;\n  (*(code *)puVar3)(iVar6,puVar9,iVar11 - uVar7);\n  if (iVar4 != *(int *)puVar2) {\n    (*(code *)PTR___stack_chk_fail_0002e2dc)();\n    FUN_000168c0();\n    sha256_read_ctx(iVar6,puVar9);\n    return;\n  }\n  sha256_process_block(param_1 + 0x2c,uVar12,param_1);\n  return;\n}" ({ "{") (declaration "bool bVar1;" (primitive_type "bool") (identifier "bVar1") (; ";")) (declaration "undefined *puVar2;" (type_identifier "undefined") (pointer_declarator "*puVar2" (* "*") (identifier "puVar2")) (; ";")) (declaration "undefined *puVar3;" (type_identifier "undefined") (pointer_declarator "*puVar3" (* "*") (identifier "puVar3")) (; ";")) (declaration "int iVar4;" (primitive_type "int") (identifier "iVar4") (; ";")) (declaration "int iVar5;" (primitive_type "int") (identifier "iVar5") (; ";")) (declaration "int iVar6;" (primitive_type "int") (identifier "iVar6") (; ";")) (declaration "uint uVar7;" (type_identifier "uint") (identifier "uVar7") (; ";")) (declaration "uint uVar8;" (type_identifier "uint") (identifier "uVar8") (; ";")) (declaration "undefined *puVar9;" (type_identifier "undefined") (pointer_declarator "*puVar9" (* "*") (identifier "puVar9")) (; ";")) (declaration "int iVar10;" (primitive_type "int") (identifier "iVar10") (; ";")) (declaration "int iVar11;" (primitive_type "int") (identifier "iVar11") (; ";")) (declaration "undefined4 uVar12;" (type_identifier "undefined4") (identifier "uVar12") (; ";")) (expression_statement "puVar2 = PTR___stack_chk_guard_0002e2f0;" (assignment_expression "puVar2 = PTR___stack_chk_guard_0002e2f0" (identifier "puVar2") (= "=") (identifier "PTR___stack_chk_guard_0002e2f0")) (; ";")) (expression_statement "uVar7 = *(uint *)(param_1 + 0x28);" (assignment_expression "uVar7 = *(uint *)(param_1 + 0x28)" (identifier "uVar7") (= "=") (pointer_expression "*(uint *)(param_1 + 0x28)" (* "*") (cast_expression "(uint *)(param_1 + 0x28)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x28)" (( "(") (binary_expression "param_1 + 0x28" (identifier "param_1") (+ "+") (number_literal "0x28")) () ")"))))) (; ";")) (expression_statement "iVar4 = *(int *)PTR___stack_chk_guard_0002e2f0;" (assignment_expression "iVar4 = *(int *)PTR___stack_chk_guard_0002e2f0" (identifier "iVar4") (= "=") (pointer_expression "*(int *)PTR___stack_chk_guard_0002e2f0" (* "*") (cast_expression "(int *)PTR___stack_chk_guard_0002e2f0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___stack_chk_guard_0002e2f0")))) (; ";")) (expression_statement "bVar1 = 0x37 < uVar7;" (assignment_expression "bVar1 = 0x37 < uVar7" (identifier "bVar1") (= "=") (binary_expression "0x37 < uVar7" (number_literal "0x37") (< "<") (identifier "uVar7"))) (; ";")) (expression_statement "uVar12 = 0x40;" (assignment_expression "uVar12 = 0x40" (identifier "uVar12") (= "=") (number_literal "0x40")) (; ";")) (expression_statement "iVar5 = 0x68;" (assignment_expression "iVar5 = 0x68" (identifier "iVar5") (= "=") (number_literal "0x68")) (; ";")) (expression_statement "uVar8 = uVar7 + *(int *)(param_1 + 0x20);" (assignment_expression "uVar8 = uVar7 + *(int *)(param_1 + 0x20)" (identifier "uVar8") (= "=") (binary_expression "uVar7 + *(int *)(param_1 + 0x20)" (identifier "uVar7") (+ "+") (pointer_expression "*(int *)(param_1 + 0x20)" (* "*") (cast_expression "(int *)(param_1 + 0x20)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x20)" (( "(") (binary_expression "param_1 + 0x20" (identifier "param_1") (+ "+") (number_literal "0x20")) () ")")))))) (; ";")) (if_statement "if (bVar1) {\n    iVar5 = 0xa8;\n  }" (if "if") (parenthesized_expression "(bVar1)" (( "(") (identifier "bVar1") () ")")) (compound_statement "{\n    iVar5 = 0xa8;\n  }" ({ "{") (expression_statement "iVar5 = 0xa8;" (assignment_expression "iVar5 = 0xa8" (identifier "iVar5") (= "=") (number_literal "0xa8")) (; ";")) (} "}"))) (expression_statement "iVar6 = 100;" (assignment_expression "iVar6 = 100" (identifier "iVar6") (= "=") (number_literal "100")) (; ";")) (if_statement "if (bVar1) {\n    iVar6 = 0xa4;\n    uVar12 = 0x80;\n  }" (if "if") (parenthesized_expression "(bVar1)" (( "(") (identifier "bVar1") () ")")) (compound_statement "{\n    iVar6 = 0xa4;\n    uVar12 = 0x80;\n  }" ({ "{") (expression_statement "iVar6 = 0xa4;" (assignment_expression "iVar6 = 0xa4" (identifier "iVar6") (= "=") (number_literal "0xa4")) (; ";")) (expression_statement "uVar12 = 0x80;" (assignment_expression "uVar12 = 0x80" (identifier "uVar12") (= "=") (number_literal "0x80")) (; ";")) (} "}"))) (expression_statement "iVar11 = 0x78;" (assignment_expression "iVar11 = 0x78" (identifier "iVar11") (= "=") (number_literal "0x78")) (; ";")) (if_statement "if (!bVar1) {\n    iVar11 = 0x38;\n  }" (if "if") (parenthesized_expression "(!bVar1)" (( "(") (unary_expression "!bVar1" (! "!") (identifier "bVar1")) () ")")) (compound_statement "{\n    iVar11 = 0x38;\n  }" ({ "{") (expression_statement "iVar11 = 0x38;" (assignment_expression "iVar11 = 0x38" (identifier "iVar11") (= "=") (number_literal "0x38")) (; ";")) (} "}"))) (expression_statement "*(uint *)(param_1 + 0x20) = uVar8;" (assignment_expression "*(uint *)(param_1 + 0x20) = uVar8" (pointer_expression "*(uint *)(param_1 + 0x20)" (* "*") (cast_expression "(uint *)(param_1 + 0x20)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x20)" (( "(") (binary_expression "param_1 + 0x20" (identifier "param_1") (+ "+") (number_literal "0x20")) () ")")))) (= "=") (identifier "uVar8")) (; ";")) (expression_statement "iVar10 = *(int *)(param_1 + 0x24);" (assignment_expression "iVar10 = *(int *)(param_1 + 0x24)" (identifier "iVar10") (= "=") (pointer_expression "*(int *)(param_1 + 0x24)" (* "*") (cast_expression "(int *)(param_1 + 0x24)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x24)" (( "(") (binary_expression "param_1 + 0x24" (identifier "param_1") (+ "+") (number_literal "0x24")) () ")"))))) (; ";")) (if_statement "if (uVar8 < uVar7) {\n    iVar10 = iVar10 + 1;\n    *(int *)(param_1 + 0x24) = iVar10;\n  }" (if "if") (parenthesized_expression "(uVar8 < uVar7)" (( "(") (binary_expression "uVar8 < uVar7" (identifier "uVar8") (< "<") (identifier "uVar7")) () ")")) (compound_statement "{\n    iVar10 = iVar10 + 1;\n    *(int *)(param_1 + 0x24) = iVar10;\n  }" ({ "{") (expression_statement "iVar10 = iVar10 + 1;" (assignment_expression "iVar10 = iVar10 + 1" (identifier "iVar10") (= "=") (binary_expression "iVar10 + 1" (identifier "iVar10") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "*(int *)(param_1 + 0x24) = iVar10;" (assignment_expression "*(int *)(param_1 + 0x24) = iVar10" (pointer_expression "*(int *)(param_1 + 0x24)" (* "*") (cast_expression "(int *)(param_1 + 0x24)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x24)" (( "(") (binary_expression "param_1 + 0x24" (identifier "param_1") (+ "+") (number_literal "0x24")) () ")")))) (= "=") (identifier "iVar10")) (; ";")) (} "}"))) (expression_statement "puVar3 = PTR_memcpy_0002e2f4;" (assignment_expression "puVar3 = PTR_memcpy_0002e2f4" (identifier "puVar3") (= "=") (identifier "PTR_memcpy_0002e2f4")) (; ";")) (expression_statement "puVar9 = PTR_DAT_0002e108;" (assignment_expression "puVar9 = PTR_DAT_0002e108" (identifier "puVar9") (= "=") (identifier "PTR_DAT_0002e108")) (; ";")) (expression_statement "*(uint *)(param_1 + iVar6) = iVar10 << 3 | uVar8 >> 0x1d;" (assignment_expression "*(uint *)(param_1 + iVar6) = iVar10 << 3 | uVar8 >> 0x1d" (pointer_expression "*(uint *)(param_1 + iVar6)" (* "*") (cast_expression "(uint *)(param_1 + iVar6)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + iVar6)" (( "(") (binary_expression "param_1 + iVar6" (identifier "param_1") (+ "+") (identifier "iVar6")) () ")")))) (= "=") (binary_expression "iVar10 << 3 | uVar8 >> 0x1d" (binary_expression "iVar10 << 3" (identifier "iVar10") (<< "<<") (number_literal "3")) (| "|") (binary_expression "uVar8 >> 0x1d" (identifier "uVar8") (>> ">>") (number_literal "0x1d")))) (; ";")) (expression_statement "puVar9 = puVar9 + -0x2fd0;" (assignment_expression "puVar9 = puVar9 + -0x2fd0" (identifier "puVar9") (= "=") (binary_expression "puVar9 + -0x2fd0" (identifier "puVar9") (+ "+") (number_literal "-0x2fd0"))) (; ";")) (expression_statement "iVar6 = param_1 + 0x2c + uVar7;" (assignment_expression "iVar6 = param_1 + 0x2c + uVar7" (identifier "iVar6") (= "=") (binary_expression "param_1 + 0x2c + uVar7" (binary_expression "param_1 + 0x2c" (identifier "param_1") (+ "+") (number_literal "0x2c")) (+ "+") (identifier "uVar7"))) (; ";")) (expression_statement "*(int *)(param_1 + iVar5) = *(int *)(param_1 + 0x20) << 3;" (assignment_expression "*(int *)(param_1 + iVar5) = *(int *)(param_1 + 0x20) << 3" (pointer_expression "*(int *)(param_1 + iVar5)" (* "*") (cast_expression "(int *)(param_1 + iVar5)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + iVar5)" (( "(") (binary_expression "param_1 + iVar5" (identifier "param_1") (+ "+") (identifier "iVar5")) () ")")))) (= "=") (binary_expression "*(int *)(param_1 + 0x20) << 3" (pointer_expression "*(int *)(param_1 + 0x20)" (* "*") (cast_expression "(int *)(param_1 + 0x20)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x20)" (( "(") (binary_expression "param_1 + 0x20" (identifier "param_1") (+ "+") (number_literal "0x20")) () ")")))) (<< "<<") (number_literal "3"))) (; ";")) (expression_statement "(*(code *)puVar3)(iVar6,puVar9,iVar11 - uVar7);" (call_expression "(*(code *)puVar3)(iVar6,puVar9,iVar11 - uVar7)" (parenthesized_expression "(*(code *)puVar3)" (( "(") (pointer_expression "*(code *)puVar3" (* "*") (cast_expression "(code *)puVar3" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "puVar3"))) () ")")) (argument_list "(iVar6,puVar9,iVar11 - uVar7)" (( "(") (identifier "iVar6") (, ",") (identifier "puVar9") (, ",") (binary_expression "iVar11 - uVar7" (identifier "iVar11") (- "-") (identifier "uVar7")) () ")"))) (; ";")) (if_statement "if (iVar4 != *(int *)puVar2) {\n    (*(code *)PTR___stack_chk_fail_0002e2dc)();\n    FUN_000168c0();\n    sha256_read_ctx(iVar6,puVar9);\n    return;\n  }" (if "if") (parenthesized_expression "(iVar4 != *(int *)puVar2)" (( "(") (binary_expression "iVar4 != *(int *)puVar2" (identifier "iVar4") (!= "!=") (pointer_expression "*(int *)puVar2" (* "*") (cast_expression "(int *)puVar2" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "puVar2")))) () ")")) (compound_statement "{\n    (*(code *)PTR___stack_chk_fail_0002e2dc)();\n    FUN_000168c0();\n    sha256_read_ctx(iVar6,puVar9);\n    return;\n  }" ({ "{") (expression_statement "(*(code *)PTR___stack_chk_fail_0002e2dc)();" (call_expression "(*(code *)PTR___stack_chk_fail_0002e2dc)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_0002e2dc)" (( "(") (pointer_expression "*(code *)PTR___stack_chk_fail_0002e2dc" (* "*") (cast_expression "(code *)PTR___stack_chk_fail_0002e2dc" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___stack_chk_fail_0002e2dc"))) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "FUN_000168c0();" (call_expression "FUN_000168c0()" (identifier "FUN_000168c0") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "sha256_read_ctx(iVar6,puVar9);" (call_expression "sha256_read_ctx(iVar6,puVar9)" (identifier "sha256_read_ctx") (argument_list "(iVar6,puVar9)" (( "(") (identifier "iVar6") (, ",") (identifier "puVar9") () ")"))) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}"))) (expression_statement "sha256_process_block(param_1 + 0x2c,uVar12,param_1);" (call_expression "sha256_process_block(param_1 + 0x2c,uVar12,param_1)" (identifier "sha256_process_block") (argument_list "(param_1 + 0x2c,uVar12,param_1)" (( "(") (binary_expression "param_1 + 0x2c" (identifier "param_1") (+ "+") (number_literal "0x2c")) (, ",") (identifier "uVar12") (, ",") (identifier "param_1") () ")"))) (; ";")) (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)))) body: (compound_statement (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: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) 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: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (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 (assignment_expression left: (identifier) right: (binary_expression left: (number_literal) right: (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: (binary_expression left: (identifier) right: (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)))))))) (if_statement condition: (parenthesized_expression (identifier)) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (if_statement condition: (parenthesized_expression (identifier)) consequence: (compound_statement (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))) (if_statement condition: (parenthesized_expression (unary_expression argument: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (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))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (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: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))))) right: (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (binary_expression left: (identifier) right: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (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: (identifier))))) 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: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list (identifier) (identifier) (binary_expression left: (identifier) right: (identifier))))) (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 (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 (call_expression function: (identifier) arguments: (argument_list))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier)))) (return_statement))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (binary_expression left: (identifier) right: (number_literal)) (identifier) (identifier)))) (return_statement))))

void MASKED(int param_1)

{
  bool bVar1;
  undefined *puVar2;
  undefined *puVar3;
  int iVar4;
  int iVar5;
  int iVar6;
  uint uVar7;
  uint uVar8;
  undefined *puVar9;
  int iVar10;
  int iVar11;
  undefined4 uVar12;
  
  puVar2 = PTR___stack_chk_guard_0002e2f0;
  uVar7 = *(uint *)(param_1 + 0x28);
  iVar4 = *(int *)PTR___stack_chk_guard_0002e2f0;
  bVar1 = 0x37 < uVar7;
  uVar12 = 0x40;
  iVar5 = 0x68;
  uVar8 = uVar7 + *(int *)(param_1 + 0x20);
  if (bVar1) {
    iVar5 = 0xa8;
  }
  iVar6 = 100;
  if (bVar1) {
    iVar6 = 0xa4;
    uVar12 = 0x80;
  }
  iVar11 = 0x78;
  if (!bVar1) {
    iVar11 = 0x38;
  }
  *(uint *)(param_1 + 0x20) = uVar8;
  iVar10 = *(int *)(param_1 + 0x24);
  if (uVar8 < uVar7) {
    iVar10 = iVar10 + 1;
    *(int *)(param_1 + 0x24) = iVar10;
  }
  puVar3 = PTR_memcpy_0002e2f4;
  puVar9 = PTR_DAT_0002e108;
  *(uint *)(param_1 + iVar6) = iVar10 << 3 | uVar8 >> 0x1d;
  puVar9 = puVar9 + -0x2fd0;
  iVar6 = param_1 + 0x2c + uVar7;
  *(int *)(param_1 + iVar5) = *(int *)(param_1 + 0x20) << 3;
  (*(code *)puVar3)(iVar6,puVar9,iVar11 - uVar7);
  if (iVar4 != *(int *)puVar2) {
    (*(code *)PTR___stack_chk_fail_0002e2dc)();
    MASKED();
    sha256_read_ctx(iVar6,puVar9);
    return;
  }
  sha256_process_block(param_1 + 0x2c,uVar12,param_1);
  return;
}

