
uint sha1_end(sha1_ctx_t *ctx,void *resbuf)

{
  md5_ctx_t *ctx_00;
  uint uVar1;
  int iVar2;
  uint uVar3;
  md5_ctx_t *pmVar4;
  uint32_t *puVar5;
  int unaff_EDI;
  undefined1 *puVar6;
  byte bVar7;
  undefined8 uVar8;
  
  bVar7 = 0;
  uVar8 = __x86_get_pc_thunk_di();
  ctx_00 = (md5_ctx_t *)uVar8;
  common64_end(ctx_00,1);
  if (ctx_00->process_block == (_func_void_md5_ctx_t_ptr *)(unaff_EDI + -0x617)) {
    uVar1 = 0x14;
    iVar2 = 5;
  }
  else {
    uVar1 = 0x20;
    iVar2 = 8;
  }
  pmVar4 = ctx_00;
  do {
    uVar3 = pmVar4->hash[0];
    pmVar4->hash[0] =
         uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 | uVar3 << 0x18;
    pmVar4 = (md5_ctx_t *)(pmVar4->wbuffer + 4);
  } while (pmVar4 != (md5_ctx_t *)(ctx_00->wbuffer + iVar2 * 4));
  puVar5 = ctx_00->hash;
  puVar6 = (undefined1 *)((ulonglong)uVar8 >> 0x20);
  for (uVar3 = uVar1; uVar3 != 0; uVar3 = uVar3 - 1) {
    *puVar6 = (char)*puVar5;
    puVar5 = (uint32_t *)((int)puVar5 + (uint)bVar7 * -2 + 1);
    puVar6 = puVar6 + (uint)bVar7 * -2 + 1;
  }
  return uVar1;
}



void FUN_000a9d02(void)

{
  uint uVar1;
  int iVar2;
  int iVar3;
  int iVar4;
  int iVar5;
  undefined1 *puVar6;
  int unaff_EDI;
  undefined1 *puVar7;
  byte bVar8;
  undefined8 uVar9;
  
  bVar8 = 0;
  uVar9 = FUN_00026ff3();
  iVar2 = (int)uVar9;
  FUN_000a968a();
  if (*(int *)(iVar2 + 0x40) == unaff_EDI + -0x617) {
    iVar3 = 0x14;
    iVar4 = 5;
  }
  else {
    iVar3 = 0x20;
    iVar4 = 8;
  }
  iVar5 = iVar2;
  do {
    uVar1 = *(uint *)(iVar5 + 0x4c);
    *(uint *)(iVar5 + 0x4c) =
         uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8 | (uVar1 & 0xff00) << 8 | uVar1 << 0x18;
    iVar5 = iVar5 + 4;
  } while (iVar5 != iVar2 + iVar4 * 4);
  puVar6 = (undefined1 *)(iVar2 + 0x4c);
  puVar7 = (undefined1 *)((ulonglong)uVar9 >> 0x20);
  for (; iVar3 != 0; iVar3 = iVar3 + -1) {
    *puVar7 = *puVar6;
    puVar6 = puVar6 + (uint)bVar8 * -2 + 1;
    puVar7 = puVar7 + (uint)bVar8 * -2 + 1;
  }
  return;
}


PUSH EDI
PUSH ESI
PUSH EBX
CALL 0x00026ff3
ADD EDI,0x26d16
MOV ESI,EAX
MOV EBX,EDX
MOV EDX,0x1
CALL 0x000a968a
LEA EAX,[EDI + 0xfffd8cd3]
CMP dword ptr [ESI + 0x40],EAX
JZ 0x000a9d54
MOV EAX,0x20
MOV ECX,0x8
MOV EDX,ESI
LEA EDI,[ESI + ECX*0x4]
MOV ECX,dword ptr [EDX + 0x4c]
BSWAP ECX
MOV dword ptr [EDX + 0x4c],ECX
ADD EDX,0x4
CMP EDX,EDI
JNZ 0x000a9d38
ADD ESI,0x4c
MOV EDI,EBX
MOV ECX,EAX
MOVSB.REP ES:EDI,ESI
POP EBX
POP ESI
POP EDI
RET
MOV EAX,0x14
MOV ECX,0x5
JMP 0x000a9d33
(translation_unit "void FUN_000a9d02(void)\n\n{\n  uint uVar1;\n  int iVar2;\n  int iVar3;\n  int iVar4;\n  int iVar5;\n  undefined1 *puVar6;\n  int unaff_EDI;\n  undefined1 *puVar7;\n  byte bVar8;\n  undefined8 uVar9;\n  \n  bVar8 = 0;\n  uVar9 = FUN_00026ff3();\n  iVar2 = (int)uVar9;\n  FUN_000a968a();\n  if (*(int *)(iVar2 + 0x40) == unaff_EDI + -0x617) {\n    iVar3 = 0x14;\n    iVar4 = 5;\n  }\n  else {\n    iVar3 = 0x20;\n    iVar4 = 8;\n  }\n  iVar5 = iVar2;\n  do {\n    uVar1 = *(uint *)(iVar5 + 0x4c);\n    *(uint *)(iVar5 + 0x4c) =\n         uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8 | (uVar1 & 0xff00) << 8 | uVar1 << 0x18;\n    iVar5 = iVar5 + 4;\n  } while (iVar5 != iVar2 + iVar4 * 4);\n  puVar6 = (undefined1 *)(iVar2 + 0x4c);\n  puVar7 = (undefined1 *)((ulonglong)uVar9 >> 0x20);\n  for (; iVar3 != 0; iVar3 = iVar3 + -1) {\n    *puVar7 = *puVar6;\n    puVar6 = puVar6 + (uint)bVar8 * -2 + 1;\n    puVar7 = puVar7 + (uint)bVar8 * -2 + 1;\n  }\n  return;\n}\n\n" (function_definition "void FUN_000a9d02(void)\n\n{\n  uint uVar1;\n  int iVar2;\n  int iVar3;\n  int iVar4;\n  int iVar5;\n  undefined1 *puVar6;\n  int unaff_EDI;\n  undefined1 *puVar7;\n  byte bVar8;\n  undefined8 uVar9;\n  \n  bVar8 = 0;\n  uVar9 = FUN_00026ff3();\n  iVar2 = (int)uVar9;\n  FUN_000a968a();\n  if (*(int *)(iVar2 + 0x40) == unaff_EDI + -0x617) {\n    iVar3 = 0x14;\n    iVar4 = 5;\n  }\n  else {\n    iVar3 = 0x20;\n    iVar4 = 8;\n  }\n  iVar5 = iVar2;\n  do {\n    uVar1 = *(uint *)(iVar5 + 0x4c);\n    *(uint *)(iVar5 + 0x4c) =\n         uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8 | (uVar1 & 0xff00) << 8 | uVar1 << 0x18;\n    iVar5 = iVar5 + 4;\n  } while (iVar5 != iVar2 + iVar4 * 4);\n  puVar6 = (undefined1 *)(iVar2 + 0x4c);\n  puVar7 = (undefined1 *)((ulonglong)uVar9 >> 0x20);\n  for (; iVar3 != 0; iVar3 = iVar3 + -1) {\n    *puVar7 = *puVar6;\n    puVar6 = puVar6 + (uint)bVar8 * -2 + 1;\n    puVar7 = puVar7 + (uint)bVar8 * -2 + 1;\n  }\n  return;\n}" primitive_type (function_declarator "FUN_000a9d02(void)" identifier (parameter_list "(void)" ( (parameter_declaration "void" primitive_type) ))) (compound_statement "{\n  uint uVar1;\n  int iVar2;\n  int iVar3;\n  int iVar4;\n  int iVar5;\n  undefined1 *puVar6;\n  int unaff_EDI;\n  undefined1 *puVar7;\n  byte bVar8;\n  undefined8 uVar9;\n  \n  bVar8 = 0;\n  uVar9 = FUN_00026ff3();\n  iVar2 = (int)uVar9;\n  FUN_000a968a();\n  if (*(int *)(iVar2 + 0x40) == unaff_EDI + -0x617) {\n    iVar3 = 0x14;\n    iVar4 = 5;\n  }\n  else {\n    iVar3 = 0x20;\n    iVar4 = 8;\n  }\n  iVar5 = iVar2;\n  do {\n    uVar1 = *(uint *)(iVar5 + 0x4c);\n    *(uint *)(iVar5 + 0x4c) =\n         uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8 | (uVar1 & 0xff00) << 8 | uVar1 << 0x18;\n    iVar5 = iVar5 + 4;\n  } while (iVar5 != iVar2 + iVar4 * 4);\n  puVar6 = (undefined1 *)(iVar2 + 0x4c);\n  puVar7 = (undefined1 *)((ulonglong)uVar9 >> 0x20);\n  for (; iVar3 != 0; iVar3 = iVar3 + -1) {\n    *puVar7 = *puVar6;\n    puVar6 = puVar6 + (uint)bVar8 * -2 + 1;\n    puVar7 = puVar7 + (uint)bVar8 * -2 + 1;\n  }\n  return;\n}" { (declaration "uint uVar1;" type_identifier identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "undefined1 *puVar6;" type_identifier (pointer_declarator "*puVar6" * identifier) ;) (declaration "int unaff_EDI;" primitive_type identifier ;) (declaration "undefined1 *puVar7;" type_identifier (pointer_declarator "*puVar7" * identifier) ;) (declaration "byte bVar8;" type_identifier identifier ;) (declaration "undefined8 uVar9;" type_identifier identifier ;) (expression_statement "bVar8 = 0;" (assignment_expression "bVar8 = 0" identifier = number_literal) ;) (expression_statement "uVar9 = FUN_00026ff3();" (assignment_expression "uVar9 = FUN_00026ff3()" identifier = (call_expression "FUN_00026ff3()" identifier (argument_list "()" ( )))) ;) (expression_statement "iVar2 = (int)uVar9;" (assignment_expression "iVar2 = (int)uVar9" identifier = (cast_expression "(int)uVar9" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "FUN_000a968a();" (call_expression "FUN_000a968a()" identifier (argument_list "()" ( ))) ;) (if_statement "if (*(int *)(iVar2 + 0x40) == unaff_EDI + -0x617) {\n    iVar3 = 0x14;\n    iVar4 = 5;\n  }\n  else {\n    iVar3 = 0x20;\n    iVar4 = 8;\n  }" if (parenthesized_expression "(*(int *)(iVar2 + 0x40) == unaff_EDI + -0x617)" ( (binary_expression "*(int *)(iVar2 + 0x40) == unaff_EDI + -0x617" (pointer_expression "*(int *)(iVar2 + 0x40)" * (cast_expression "(int *)(iVar2 + 0x40)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x40)" ( (binary_expression "iVar2 + 0x40" identifier + number_literal) )))) == (binary_expression "unaff_EDI + -0x617" identifier + number_literal)) )) (compound_statement "{\n    iVar3 = 0x14;\n    iVar4 = 5;\n  }" { (expression_statement "iVar3 = 0x14;" (assignment_expression "iVar3 = 0x14" identifier = number_literal) ;) (expression_statement "iVar4 = 5;" (assignment_expression "iVar4 = 5" identifier = number_literal) ;) }) (else_clause "else {\n    iVar3 = 0x20;\n    iVar4 = 8;\n  }" else (compound_statement "{\n    iVar3 = 0x20;\n    iVar4 = 8;\n  }" { (expression_statement "iVar3 = 0x20;" (assignment_expression "iVar3 = 0x20" identifier = number_literal) ;) (expression_statement "iVar4 = 8;" (assignment_expression "iVar4 = 8" identifier = number_literal) ;) }))) (expression_statement "iVar5 = iVar2;" (assignment_expression "iVar5 = iVar2" identifier = identifier) ;) (do_statement "do {\n    uVar1 = *(uint *)(iVar5 + 0x4c);\n    *(uint *)(iVar5 + 0x4c) =\n         uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8 | (uVar1 & 0xff00) << 8 | uVar1 << 0x18;\n    iVar5 = iVar5 + 4;\n  } while (iVar5 != iVar2 + iVar4 * 4);" do (compound_statement "{\n    uVar1 = *(uint *)(iVar5 + 0x4c);\n    *(uint *)(iVar5 + 0x4c) =\n         uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8 | (uVar1 & 0xff00) << 8 | uVar1 << 0x18;\n    iVar5 = iVar5 + 4;\n  }" { (expression_statement "uVar1 = *(uint *)(iVar5 + 0x4c);" (assignment_expression "uVar1 = *(uint *)(iVar5 + 0x4c)" identifier = (pointer_expression "*(uint *)(iVar5 + 0x4c)" * (cast_expression "(uint *)(iVar5 + 0x4c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 0x4c)" ( (binary_expression "iVar5 + 0x4c" identifier + number_literal) ))))) ;) (expression_statement "*(uint *)(iVar5 + 0x4c) =\n         uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8 | (uVar1 & 0xff00) << 8 | uVar1 << 0x18;" (assignment_expression "*(uint *)(iVar5 + 0x4c) =\n         uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8 | (uVar1 & 0xff00) << 8 | uVar1 << 0x18" (pointer_expression "*(uint *)(iVar5 + 0x4c)" * (cast_expression "(uint *)(iVar5 + 0x4c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 0x4c)" ( (binary_expression "iVar5 + 0x4c" identifier + number_literal) )))) = (binary_expression "uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8 | (uVar1 & 0xff00) << 8 | uVar1 << 0x18" (binary_expression "uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8 | (uVar1 & 0xff00) << 8" (binary_expression "uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8" (binary_expression "uVar1 >> 0x18" identifier >> number_literal) | (binary_expression "(uVar1 & 0xff0000) >> 8" (parenthesized_expression "(uVar1 & 0xff0000)" ( (binary_expression "uVar1 & 0xff0000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar1 & 0xff00) << 8" (parenthesized_expression "(uVar1 & 0xff00)" ( (binary_expression "uVar1 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "uVar1 << 0x18" identifier << number_literal))) ;) (expression_statement "iVar5 = iVar5 + 4;" (assignment_expression "iVar5 = iVar5 + 4" identifier = (binary_expression "iVar5 + 4" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar5 != iVar2 + iVar4 * 4)" ( (binary_expression "iVar5 != iVar2 + iVar4 * 4" identifier != (binary_expression "iVar2 + iVar4 * 4" identifier + (binary_expression "iVar4 * 4" identifier * number_literal))) )) ;) (expression_statement "puVar6 = (undefined1 *)(iVar2 + 0x4c);" (assignment_expression "puVar6 = (undefined1 *)(iVar2 + 0x4c)" identifier = (cast_expression "(undefined1 *)(iVar2 + 0x4c)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x4c)" ( (binary_expression "iVar2 + 0x4c" identifier + number_literal) )))) ;) (expression_statement "puVar7 = (undefined1 *)((ulonglong)uVar9 >> 0x20);" (assignment_expression "puVar7 = (undefined1 *)((ulonglong)uVar9 >> 0x20)" identifier = (cast_expression "(undefined1 *)((ulonglong)uVar9 >> 0x20)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((ulonglong)uVar9 >> 0x20)" ( (binary_expression "(ulonglong)uVar9 >> 0x20" (cast_expression "(ulonglong)uVar9" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (for_statement "for (; iVar3 != 0; iVar3 = iVar3 + -1) {\n    *puVar7 = *puVar6;\n    puVar6 = puVar6 + (uint)bVar8 * -2 + 1;\n    puVar7 = puVar7 + (uint)bVar8 * -2 + 1;\n  }" for ( ; (binary_expression "iVar3 != 0" identifier != number_literal) ; (assignment_expression "iVar3 = iVar3 + -1" identifier = (binary_expression "iVar3 + -1" identifier + number_literal)) ) (compound_statement "{\n    *puVar7 = *puVar6;\n    puVar6 = puVar6 + (uint)bVar8 * -2 + 1;\n    puVar7 = puVar7 + (uint)bVar8 * -2 + 1;\n  }" { (expression_statement "*puVar7 = *puVar6;" (assignment_expression "*puVar7 = *puVar6" (pointer_expression "*puVar7" * identifier) = (pointer_expression "*puVar6" * identifier)) ;) (expression_statement "puVar6 = puVar6 + (uint)bVar8 * -2 + 1;" (assignment_expression "puVar6 = puVar6 + (uint)bVar8 * -2 + 1" identifier = (binary_expression "puVar6 + (uint)bVar8 * -2 + 1" (binary_expression "puVar6 + (uint)bVar8 * -2" identifier + (binary_expression "(uint)bVar8 * -2" (cast_expression "(uint)bVar8" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "puVar7 = puVar7 + (uint)bVar8 * -2 + 1;" (assignment_expression "puVar7 = puVar7 + (uint)bVar8 * -2 + 1" identifier = (binary_expression "puVar7 + (uint)bVar8 * -2 + 1" (binary_expression "puVar7 + (uint)bVar8 * -2" identifier + (binary_expression "(uint)bVar8 * -2" (cast_expression "(uint)bVar8" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) })) (return_statement "return;" return ;) })))
(translation_unit "uint sha1_end(sha1_ctx_t *ctx,void *resbuf)\n\n{\n  md5_ctx_t *ctx_00;\n  uint uVar1;\n  int iVar2;\n  uint uVar3;\n  md5_ctx_t *pmVar4;\n  uint32_t *puVar5;\n  int unaff_EDI;\n  undefined1 *puVar6;\n  byte bVar7;\n  undefined8 uVar8;\n  \n  bVar7 = 0;\n  uVar8 = __x86_get_pc_thunk_di();\n  ctx_00 = (md5_ctx_t *)uVar8;\n  common64_end(ctx_00,1);\n  if (ctx_00->process_block == (_func_void_md5_ctx_t_ptr *)(unaff_EDI + -0x617)) {\n    uVar1 = 0x14;\n    iVar2 = 5;\n  }\n  else {\n    uVar1 = 0x20;\n    iVar2 = 8;\n  }\n  pmVar4 = ctx_00;\n  do {\n    uVar3 = pmVar4->hash[0];\n    pmVar4->hash[0] =\n         uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 | uVar3 << 0x18;\n    pmVar4 = (md5_ctx_t *)(pmVar4->wbuffer + 4);\n  } while (pmVar4 != (md5_ctx_t *)(ctx_00->wbuffer + iVar2 * 4));\n  puVar5 = ctx_00->hash;\n  puVar6 = (undefined1 *)((ulonglong)uVar8 >> 0x20);\n  for (uVar3 = uVar1; uVar3 != 0; uVar3 = uVar3 - 1) {\n    *puVar6 = (char)*puVar5;\n    puVar5 = (uint32_t *)((int)puVar5 + (uint)bVar7 * -2 + 1);\n    puVar6 = puVar6 + (uint)bVar7 * -2 + 1;\n  }\n  return uVar1;\n}\n\n" (function_definition "uint sha1_end(sha1_ctx_t *ctx,void *resbuf)\n\n{\n  md5_ctx_t *ctx_00;\n  uint uVar1;\n  int iVar2;\n  uint uVar3;\n  md5_ctx_t *pmVar4;\n  uint32_t *puVar5;\n  int unaff_EDI;\n  undefined1 *puVar6;\n  byte bVar7;\n  undefined8 uVar8;\n  \n  bVar7 = 0;\n  uVar8 = __x86_get_pc_thunk_di();\n  ctx_00 = (md5_ctx_t *)uVar8;\n  common64_end(ctx_00,1);\n  if (ctx_00->process_block == (_func_void_md5_ctx_t_ptr *)(unaff_EDI + -0x617)) {\n    uVar1 = 0x14;\n    iVar2 = 5;\n  }\n  else {\n    uVar1 = 0x20;\n    iVar2 = 8;\n  }\n  pmVar4 = ctx_00;\n  do {\n    uVar3 = pmVar4->hash[0];\n    pmVar4->hash[0] =\n         uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 | uVar3 << 0x18;\n    pmVar4 = (md5_ctx_t *)(pmVar4->wbuffer + 4);\n  } while (pmVar4 != (md5_ctx_t *)(ctx_00->wbuffer + iVar2 * 4));\n  puVar5 = ctx_00->hash;\n  puVar6 = (undefined1 *)((ulonglong)uVar8 >> 0x20);\n  for (uVar3 = uVar1; uVar3 != 0; uVar3 = uVar3 - 1) {\n    *puVar6 = (char)*puVar5;\n    puVar5 = (uint32_t *)((int)puVar5 + (uint)bVar7 * -2 + 1);\n    puVar6 = puVar6 + (uint)bVar7 * -2 + 1;\n  }\n  return uVar1;\n}" type_identifier (function_declarator "sha1_end(sha1_ctx_t *ctx,void *resbuf)" identifier (parameter_list "(sha1_ctx_t *ctx,void *resbuf)" ( (parameter_declaration "sha1_ctx_t *ctx" type_identifier (pointer_declarator "*ctx" * identifier)) , (parameter_declaration "void *resbuf" primitive_type (pointer_declarator "*resbuf" * identifier)) ))) (compound_statement "{\n  md5_ctx_t *ctx_00;\n  uint uVar1;\n  int iVar2;\n  uint uVar3;\n  md5_ctx_t *pmVar4;\n  uint32_t *puVar5;\n  int unaff_EDI;\n  undefined1 *puVar6;\n  byte bVar7;\n  undefined8 uVar8;\n  \n  bVar7 = 0;\n  uVar8 = __x86_get_pc_thunk_di();\n  ctx_00 = (md5_ctx_t *)uVar8;\n  common64_end(ctx_00,1);\n  if (ctx_00->process_block == (_func_void_md5_ctx_t_ptr *)(unaff_EDI + -0x617)) {\n    uVar1 = 0x14;\n    iVar2 = 5;\n  }\n  else {\n    uVar1 = 0x20;\n    iVar2 = 8;\n  }\n  pmVar4 = ctx_00;\n  do {\n    uVar3 = pmVar4->hash[0];\n    pmVar4->hash[0] =\n         uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 | uVar3 << 0x18;\n    pmVar4 = (md5_ctx_t *)(pmVar4->wbuffer + 4);\n  } while (pmVar4 != (md5_ctx_t *)(ctx_00->wbuffer + iVar2 * 4));\n  puVar5 = ctx_00->hash;\n  puVar6 = (undefined1 *)((ulonglong)uVar8 >> 0x20);\n  for (uVar3 = uVar1; uVar3 != 0; uVar3 = uVar3 - 1) {\n    *puVar6 = (char)*puVar5;\n    puVar5 = (uint32_t *)((int)puVar5 + (uint)bVar7 * -2 + 1);\n    puVar6 = puVar6 + (uint)bVar7 * -2 + 1;\n  }\n  return uVar1;\n}" { (declaration "md5_ctx_t *ctx_00;" type_identifier (pointer_declarator "*ctx_00" * identifier) ;) (declaration "uint uVar1;" type_identifier identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "md5_ctx_t *pmVar4;" type_identifier (pointer_declarator "*pmVar4" * identifier) ;) (declaration "uint32_t *puVar5;" primitive_type (pointer_declarator "*puVar5" * identifier) ;) (declaration "int unaff_EDI;" primitive_type identifier ;) (declaration "undefined1 *puVar6;" type_identifier (pointer_declarator "*puVar6" * identifier) ;) (declaration "byte bVar7;" type_identifier identifier ;) (declaration "undefined8 uVar8;" type_identifier identifier ;) (expression_statement "bVar7 = 0;" (assignment_expression "bVar7 = 0" identifier = number_literal) ;) (expression_statement "uVar8 = __x86_get_pc_thunk_di();" (assignment_expression "uVar8 = __x86_get_pc_thunk_di()" identifier = (call_expression "__x86_get_pc_thunk_di()" identifier (argument_list "()" ( )))) ;) (expression_statement "ctx_00 = (md5_ctx_t *)uVar8;" (assignment_expression "ctx_00 = (md5_ctx_t *)uVar8" identifier = (cast_expression "(md5_ctx_t *)uVar8" ( (type_descriptor "md5_ctx_t *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "common64_end(ctx_00,1);" (call_expression "common64_end(ctx_00,1)" identifier (argument_list "(ctx_00,1)" ( identifier , number_literal ))) ;) (if_statement "if (ctx_00->process_block == (_func_void_md5_ctx_t_ptr *)(unaff_EDI + -0x617)) {\n    uVar1 = 0x14;\n    iVar2 = 5;\n  }\n  else {\n    uVar1 = 0x20;\n    iVar2 = 8;\n  }" if (parenthesized_expression "(ctx_00->process_block == (_func_void_md5_ctx_t_ptr *)(unaff_EDI + -0x617))" ( (binary_expression "ctx_00->process_block == (_func_void_md5_ctx_t_ptr *)(unaff_EDI + -0x617)" (field_expression "ctx_00->process_block" identifier -> field_identifier) == (cast_expression "(_func_void_md5_ctx_t_ptr *)(unaff_EDI + -0x617)" ( (type_descriptor "_func_void_md5_ctx_t_ptr *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + -0x617)" ( (binary_expression "unaff_EDI + -0x617" identifier + number_literal) )))) )) (compound_statement "{\n    uVar1 = 0x14;\n    iVar2 = 5;\n  }" { (expression_statement "uVar1 = 0x14;" (assignment_expression "uVar1 = 0x14" identifier = number_literal) ;) (expression_statement "iVar2 = 5;" (assignment_expression "iVar2 = 5" identifier = number_literal) ;) }) (else_clause "else {\n    uVar1 = 0x20;\n    iVar2 = 8;\n  }" else (compound_statement "{\n    uVar1 = 0x20;\n    iVar2 = 8;\n  }" { (expression_statement "uVar1 = 0x20;" (assignment_expression "uVar1 = 0x20" identifier = number_literal) ;) (expression_statement "iVar2 = 8;" (assignment_expression "iVar2 = 8" identifier = number_literal) ;) }))) (expression_statement "pmVar4 = ctx_00;" (assignment_expression "pmVar4 = ctx_00" identifier = identifier) ;) (do_statement "do {\n    uVar3 = pmVar4->hash[0];\n    pmVar4->hash[0] =\n         uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 | uVar3 << 0x18;\n    pmVar4 = (md5_ctx_t *)(pmVar4->wbuffer + 4);\n  } while (pmVar4 != (md5_ctx_t *)(ctx_00->wbuffer + iVar2 * 4));" do (compound_statement "{\n    uVar3 = pmVar4->hash[0];\n    pmVar4->hash[0] =\n         uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 | uVar3 << 0x18;\n    pmVar4 = (md5_ctx_t *)(pmVar4->wbuffer + 4);\n  }" { (expression_statement "uVar3 = pmVar4->hash[0];" (assignment_expression "uVar3 = pmVar4->hash[0]" identifier = (subscript_expression "pmVar4->hash[0]" (field_expression "pmVar4->hash" identifier -> field_identifier) [ number_literal ])) ;) (expression_statement "pmVar4->hash[0] =\n         uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 | uVar3 << 0x18;" (assignment_expression "pmVar4->hash[0] =\n         uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 | uVar3 << 0x18" (subscript_expression "pmVar4->hash[0]" (field_expression "pmVar4->hash" identifier -> field_identifier) [ number_literal ]) = (binary_expression "uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 | uVar3 << 0x18" (binary_expression "uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8" (binary_expression "uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8" (binary_expression "uVar3 >> 0x18" identifier >> number_literal) | (binary_expression "(uVar3 & 0xff0000) >> 8" (parenthesized_expression "(uVar3 & 0xff0000)" ( (binary_expression "uVar3 & 0xff0000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar3 & 0xff00) << 8" (parenthesized_expression "(uVar3 & 0xff00)" ( (binary_expression "uVar3 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "uVar3 << 0x18" identifier << number_literal))) ;) (expression_statement "pmVar4 = (md5_ctx_t *)(pmVar4->wbuffer + 4);" (assignment_expression "pmVar4 = (md5_ctx_t *)(pmVar4->wbuffer + 4)" identifier = (cast_expression "(md5_ctx_t *)(pmVar4->wbuffer + 4)" ( (type_descriptor "md5_ctx_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pmVar4->wbuffer + 4)" ( (binary_expression "pmVar4->wbuffer + 4" (field_expression "pmVar4->wbuffer" identifier -> field_identifier) + number_literal) )))) ;) }) while (parenthesized_expression "(pmVar4 != (md5_ctx_t *)(ctx_00->wbuffer + iVar2 * 4))" ( (binary_expression "pmVar4 != (md5_ctx_t *)(ctx_00->wbuffer + iVar2 * 4)" identifier != (cast_expression "(md5_ctx_t *)(ctx_00->wbuffer + iVar2 * 4)" ( (type_descriptor "md5_ctx_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(ctx_00->wbuffer + iVar2 * 4)" ( (binary_expression "ctx_00->wbuffer + iVar2 * 4" (field_expression "ctx_00->wbuffer" identifier -> field_identifier) + (binary_expression "iVar2 * 4" identifier * number_literal)) )))) )) ;) (expression_statement "puVar5 = ctx_00->hash;" (assignment_expression "puVar5 = ctx_00->hash" identifier = (field_expression "ctx_00->hash" identifier -> field_identifier)) ;) (expression_statement "puVar6 = (undefined1 *)((ulonglong)uVar8 >> 0x20);" (assignment_expression "puVar6 = (undefined1 *)((ulonglong)uVar8 >> 0x20)" identifier = (cast_expression "(undefined1 *)((ulonglong)uVar8 >> 0x20)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((ulonglong)uVar8 >> 0x20)" ( (binary_expression "(ulonglong)uVar8 >> 0x20" (cast_expression "(ulonglong)uVar8" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (for_statement "for (uVar3 = uVar1; uVar3 != 0; uVar3 = uVar3 - 1) {\n    *puVar6 = (char)*puVar5;\n    puVar5 = (uint32_t *)((int)puVar5 + (uint)bVar7 * -2 + 1);\n    puVar6 = puVar6 + (uint)bVar7 * -2 + 1;\n  }" for ( (assignment_expression "uVar3 = uVar1" identifier = identifier) ; (binary_expression "uVar3 != 0" identifier != number_literal) ; (assignment_expression "uVar3 = uVar3 - 1" identifier = (binary_expression "uVar3 - 1" identifier - number_literal)) ) (compound_statement "{\n    *puVar6 = (char)*puVar5;\n    puVar5 = (uint32_t *)((int)puVar5 + (uint)bVar7 * -2 + 1);\n    puVar6 = puVar6 + (uint)bVar7 * -2 + 1;\n  }" { (expression_statement "*puVar6 = (char)*puVar5;" (assignment_expression "*puVar6 = (char)*puVar5" (pointer_expression "*puVar6" * identifier) = (cast_expression "(char)*puVar5" ( (type_descriptor "char" primitive_type) ) (pointer_expression "*puVar5" * identifier))) ;) (expression_statement "puVar5 = (uint32_t *)((int)puVar5 + (uint)bVar7 * -2 + 1);" (assignment_expression "puVar5 = (uint32_t *)((int)puVar5 + (uint)bVar7 * -2 + 1)" identifier = (cast_expression "(uint32_t *)((int)puVar5 + (uint)bVar7 * -2 + 1)" ( (type_descriptor "uint32_t *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar5 + (uint)bVar7 * -2 + 1)" ( (binary_expression "(int)puVar5 + (uint)bVar7 * -2 + 1" (binary_expression "(int)puVar5 + (uint)bVar7 * -2" (cast_expression "(int)puVar5" ( (type_descriptor "int" primitive_type) ) identifier) + (binary_expression "(uint)bVar7 * -2" (cast_expression "(uint)bVar7" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal) )))) ;) (expression_statement "puVar6 = puVar6 + (uint)bVar7 * -2 + 1;" (assignment_expression "puVar6 = puVar6 + (uint)bVar7 * -2 + 1" identifier = (binary_expression "puVar6 + (uint)bVar7 * -2 + 1" (binary_expression "puVar6 + (uint)bVar7 * -2" identifier + (binary_expression "(uint)bVar7 * -2" (cast_expression "(uint)bVar7" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) })) (return_statement "return uVar1;" return identifier ;) })))
(translation_unit "void FUN_000a9d02(void)\n\n{\n  uint uVar1;\n  int iVar2;\n  int iVar3;\n  int iVar4;\n  int iVar5;\n  undefined1 *puVar6;\n  int unaff_EDI;\n  undefined1 *puVar7;\n  byte bVar8;\n  undefined8 uVar9;\n  \n  bVar8 = 0;\n  uVar9 = FUN_00026ff3();\n  iVar2 = (int)uVar9;\n  FUN_000a968a();\n  if (*(int *)(iVar2 + 0x40) == unaff_EDI + -0x617) {\n    iVar3 = 0x14;\n    iVar4 = 5;\n  }\n  else {\n    iVar3 = 0x20;\n    iVar4 = 8;\n  }\n  iVar5 = iVar2;\n  do {\n    uVar1 = *(uint *)(iVar5 + 0x4c);\n    *(uint *)(iVar5 + 0x4c) =\n         uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8 | (uVar1 & 0xff00) << 8 | uVar1 << 0x18;\n    iVar5 = iVar5 + 4;\n  } while (iVar5 != iVar2 + iVar4 * 4);\n  puVar6 = (undefined1 *)(iVar2 + 0x4c);\n  puVar7 = (undefined1 *)((ulonglong)uVar9 >> 0x20);\n  for (; iVar3 != 0; iVar3 = iVar3 + -1) {\n    *puVar7 = *puVar6;\n    puVar6 = puVar6 + (uint)bVar8 * -2 + 1;\n    puVar7 = puVar7 + (uint)bVar8 * -2 + 1;\n  }\n  return;\n}\n\n" (function_definition "void FUN_000a9d02(void)\n\n{\n  uint uVar1;\n  int iVar2;\n  int iVar3;\n  int iVar4;\n  int iVar5;\n  undefined1 *puVar6;\n  int unaff_EDI;\n  undefined1 *puVar7;\n  byte bVar8;\n  undefined8 uVar9;\n  \n  bVar8 = 0;\n  uVar9 = FUN_00026ff3();\n  iVar2 = (int)uVar9;\n  FUN_000a968a();\n  if (*(int *)(iVar2 + 0x40) == unaff_EDI + -0x617) {\n    iVar3 = 0x14;\n    iVar4 = 5;\n  }\n  else {\n    iVar3 = 0x20;\n    iVar4 = 8;\n  }\n  iVar5 = iVar2;\n  do {\n    uVar1 = *(uint *)(iVar5 + 0x4c);\n    *(uint *)(iVar5 + 0x4c) =\n         uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8 | (uVar1 & 0xff00) << 8 | uVar1 << 0x18;\n    iVar5 = iVar5 + 4;\n  } while (iVar5 != iVar2 + iVar4 * 4);\n  puVar6 = (undefined1 *)(iVar2 + 0x4c);\n  puVar7 = (undefined1 *)((ulonglong)uVar9 >> 0x20);\n  for (; iVar3 != 0; iVar3 = iVar3 + -1) {\n    *puVar7 = *puVar6;\n    puVar6 = puVar6 + (uint)bVar8 * -2 + 1;\n    puVar7 = puVar7 + (uint)bVar8 * -2 + 1;\n  }\n  return;\n}" primitive_type (function_declarator "FUN_000a9d02(void)" identifier (parameter_list "(void)" ( (parameter_declaration "void" primitive_type) ))) (compound_statement "{\n  uint uVar1;\n  int iVar2;\n  int iVar3;\n  int iVar4;\n  int iVar5;\n  undefined1 *puVar6;\n  int unaff_EDI;\n  undefined1 *puVar7;\n  byte bVar8;\n  undefined8 uVar9;\n  \n  bVar8 = 0;\n  uVar9 = FUN_00026ff3();\n  iVar2 = (int)uVar9;\n  FUN_000a968a();\n  if (*(int *)(iVar2 + 0x40) == unaff_EDI + -0x617) {\n    iVar3 = 0x14;\n    iVar4 = 5;\n  }\n  else {\n    iVar3 = 0x20;\n    iVar4 = 8;\n  }\n  iVar5 = iVar2;\n  do {\n    uVar1 = *(uint *)(iVar5 + 0x4c);\n    *(uint *)(iVar5 + 0x4c) =\n         uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8 | (uVar1 & 0xff00) << 8 | uVar1 << 0x18;\n    iVar5 = iVar5 + 4;\n  } while (iVar5 != iVar2 + iVar4 * 4);\n  puVar6 = (undefined1 *)(iVar2 + 0x4c);\n  puVar7 = (undefined1 *)((ulonglong)uVar9 >> 0x20);\n  for (; iVar3 != 0; iVar3 = iVar3 + -1) {\n    *puVar7 = *puVar6;\n    puVar6 = puVar6 + (uint)bVar8 * -2 + 1;\n    puVar7 = puVar7 + (uint)bVar8 * -2 + 1;\n  }\n  return;\n}" { (declaration "uint uVar1;" type_identifier identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "undefined1 *puVar6;" type_identifier (pointer_declarator "*puVar6" * identifier) ;) (declaration "int unaff_EDI;" primitive_type identifier ;) (declaration "undefined1 *puVar7;" type_identifier (pointer_declarator "*puVar7" * identifier) ;) (declaration "byte bVar8;" type_identifier identifier ;) (declaration "undefined8 uVar9;" type_identifier identifier ;) (expression_statement "bVar8 = 0;" (assignment_expression "bVar8 = 0" identifier = number_literal) ;) (expression_statement "uVar9 = FUN_00026ff3();" (assignment_expression "uVar9 = FUN_00026ff3()" identifier = (call_expression "FUN_00026ff3()" identifier (argument_list "()" ( )))) ;) (expression_statement "iVar2 = (int)uVar9;" (assignment_expression "iVar2 = (int)uVar9" identifier = (cast_expression "(int)uVar9" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "FUN_000a968a();" (call_expression "FUN_000a968a()" identifier (argument_list "()" ( ))) ;) (if_statement "if (*(int *)(iVar2 + 0x40) == unaff_EDI + -0x617) {\n    iVar3 = 0x14;\n    iVar4 = 5;\n  }\n  else {\n    iVar3 = 0x20;\n    iVar4 = 8;\n  }" if (parenthesized_expression "(*(int *)(iVar2 + 0x40) == unaff_EDI + -0x617)" ( (binary_expression "*(int *)(iVar2 + 0x40) == unaff_EDI + -0x617" (pointer_expression "*(int *)(iVar2 + 0x40)" * (cast_expression "(int *)(iVar2 + 0x40)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x40)" ( (binary_expression "iVar2 + 0x40" identifier + number_literal) )))) == (binary_expression "unaff_EDI + -0x617" identifier + number_literal)) )) (compound_statement "{\n    iVar3 = 0x14;\n    iVar4 = 5;\n  }" { (expression_statement "iVar3 = 0x14;" (assignment_expression "iVar3 = 0x14" identifier = number_literal) ;) (expression_statement "iVar4 = 5;" (assignment_expression "iVar4 = 5" identifier = number_literal) ;) }) (else_clause "else {\n    iVar3 = 0x20;\n    iVar4 = 8;\n  }" else (compound_statement "{\n    iVar3 = 0x20;\n    iVar4 = 8;\n  }" { (expression_statement "iVar3 = 0x20;" (assignment_expression "iVar3 = 0x20" identifier = number_literal) ;) (expression_statement "iVar4 = 8;" (assignment_expression "iVar4 = 8" identifier = number_literal) ;) }))) (expression_statement "iVar5 = iVar2;" (assignment_expression "iVar5 = iVar2" identifier = identifier) ;) (do_statement "do {\n    uVar1 = *(uint *)(iVar5 + 0x4c);\n    *(uint *)(iVar5 + 0x4c) =\n         uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8 | (uVar1 & 0xff00) << 8 | uVar1 << 0x18;\n    iVar5 = iVar5 + 4;\n  } while (iVar5 != iVar2 + iVar4 * 4);" do (compound_statement "{\n    uVar1 = *(uint *)(iVar5 + 0x4c);\n    *(uint *)(iVar5 + 0x4c) =\n         uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8 | (uVar1 & 0xff00) << 8 | uVar1 << 0x18;\n    iVar5 = iVar5 + 4;\n  }" { (expression_statement "uVar1 = *(uint *)(iVar5 + 0x4c);" (assignment_expression "uVar1 = *(uint *)(iVar5 + 0x4c)" identifier = (pointer_expression "*(uint *)(iVar5 + 0x4c)" * (cast_expression "(uint *)(iVar5 + 0x4c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 0x4c)" ( (binary_expression "iVar5 + 0x4c" identifier + number_literal) ))))) ;) (expression_statement "*(uint *)(iVar5 + 0x4c) =\n         uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8 | (uVar1 & 0xff00) << 8 | uVar1 << 0x18;" (assignment_expression "*(uint *)(iVar5 + 0x4c) =\n         uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8 | (uVar1 & 0xff00) << 8 | uVar1 << 0x18" (pointer_expression "*(uint *)(iVar5 + 0x4c)" * (cast_expression "(uint *)(iVar5 + 0x4c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 0x4c)" ( (binary_expression "iVar5 + 0x4c" identifier + number_literal) )))) = (binary_expression "uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8 | (uVar1 & 0xff00) << 8 | uVar1 << 0x18" (binary_expression "uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8 | (uVar1 & 0xff00) << 8" (binary_expression "uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8" (binary_expression "uVar1 >> 0x18" identifier >> number_literal) | (binary_expression "(uVar1 & 0xff0000) >> 8" (parenthesized_expression "(uVar1 & 0xff0000)" ( (binary_expression "uVar1 & 0xff0000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar1 & 0xff00) << 8" (parenthesized_expression "(uVar1 & 0xff00)" ( (binary_expression "uVar1 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "uVar1 << 0x18" identifier << number_literal))) ;) (expression_statement "iVar5 = iVar5 + 4;" (assignment_expression "iVar5 = iVar5 + 4" identifier = (binary_expression "iVar5 + 4" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar5 != iVar2 + iVar4 * 4)" ( (binary_expression "iVar5 != iVar2 + iVar4 * 4" identifier != (binary_expression "iVar2 + iVar4 * 4" identifier + (binary_expression "iVar4 * 4" identifier * number_literal))) )) ;) (expression_statement "puVar6 = (undefined1 *)(iVar2 + 0x4c);" (assignment_expression "puVar6 = (undefined1 *)(iVar2 + 0x4c)" identifier = (cast_expression "(undefined1 *)(iVar2 + 0x4c)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x4c)" ( (binary_expression "iVar2 + 0x4c" identifier + number_literal) )))) ;) (expression_statement "puVar7 = (undefined1 *)((ulonglong)uVar9 >> 0x20);" (assignment_expression "puVar7 = (undefined1 *)((ulonglong)uVar9 >> 0x20)" identifier = (cast_expression "(undefined1 *)((ulonglong)uVar9 >> 0x20)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((ulonglong)uVar9 >> 0x20)" ( (binary_expression "(ulonglong)uVar9 >> 0x20" (cast_expression "(ulonglong)uVar9" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (for_statement "for (; iVar3 != 0; iVar3 = iVar3 + -1) {\n    *puVar7 = *puVar6;\n    puVar6 = puVar6 + (uint)bVar8 * -2 + 1;\n    puVar7 = puVar7 + (uint)bVar8 * -2 + 1;\n  }" for ( ; (binary_expression "iVar3 != 0" identifier != number_literal) ; (assignment_expression "iVar3 = iVar3 + -1" identifier = (binary_expression "iVar3 + -1" identifier + number_literal)) ) (compound_statement "{\n    *puVar7 = *puVar6;\n    puVar6 = puVar6 + (uint)bVar8 * -2 + 1;\n    puVar7 = puVar7 + (uint)bVar8 * -2 + 1;\n  }" { (expression_statement "*puVar7 = *puVar6;" (assignment_expression "*puVar7 = *puVar6" (pointer_expression "*puVar7" * identifier) = (pointer_expression "*puVar6" * identifier)) ;) (expression_statement "puVar6 = puVar6 + (uint)bVar8 * -2 + 1;" (assignment_expression "puVar6 = puVar6 + (uint)bVar8 * -2 + 1" identifier = (binary_expression "puVar6 + (uint)bVar8 * -2 + 1" (binary_expression "puVar6 + (uint)bVar8 * -2" identifier + (binary_expression "(uint)bVar8 * -2" (cast_expression "(uint)bVar8" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "puVar7 = puVar7 + (uint)bVar8 * -2 + 1;" (assignment_expression "puVar7 = puVar7 + (uint)bVar8 * -2 + 1" identifier = (binary_expression "puVar7 + (uint)bVar8 * -2 + 1" (binary_expression "puVar7 + (uint)bVar8 * -2" identifier + (binary_expression "(uint)bVar8 * -2" (cast_expression "(uint)bVar8" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) })) (return_statement "return;" return ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE) ))) (compound_statement { (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 (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == (binary_expression IDENT + LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) }))) (expression_statement (assignment_expression IDENT = IDENT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression (binary_expression (binary_expression (binary_expression IDENT >> LIT) | (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) >> LIT)) | (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) << LIT)) | (binary_expression IDENT << LIT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT != (binary_expression IDENT + (binary_expression IDENT * LIT))) )) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) )))) ;) (for_statement for ( ; (binary_expression IDENT != LIT) ; (assignment_expression IDENT = (binary_expression IDENT + LIT)) ) (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) + LIT)) ;) })) (return_statement return ;) })))
(function_definition "void FUN_000a9d02(void)\n\n{\n  uint uVar1;\n  int iVar2;\n  int iVar3;\n  int iVar4;\n  int iVar5;\n  undefined1 *puVar6;\n  int unaff_EDI;\n  undefined1 *puVar7;\n  byte bVar8;\n  undefined8 uVar9;\n  \n  bVar8 = 0;\n  uVar9 = FUN_00026ff3();\n  iVar2 = (int)uVar9;\n  FUN_000a968a();\n  if (*(int *)(iVar2 + 0x40) == unaff_EDI + -0x617) {\n    iVar3 = 0x14;\n    iVar4 = 5;\n  }\n  else {\n    iVar3 = 0x20;\n    iVar4 = 8;\n  }\n  iVar5 = iVar2;\n  do {\n    uVar1 = *(uint *)(iVar5 + 0x4c);\n    *(uint *)(iVar5 + 0x4c) =\n         uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8 | (uVar1 & 0xff00) << 8 | uVar1 << 0x18;\n    iVar5 = iVar5 + 4;\n  } while (iVar5 != iVar2 + iVar4 * 4);\n  puVar6 = (undefined1 *)(iVar2 + 0x4c);\n  puVar7 = (undefined1 *)((ulonglong)uVar9 >> 0x20);\n  for (; iVar3 != 0; iVar3 = iVar3 + -1) {\n    *puVar7 = *puVar6;\n    puVar6 = puVar6 + (uint)bVar8 * -2 + 1;\n    puVar7 = puVar7 + (uint)bVar8 * -2 + 1;\n  }\n  return;\n}" (primitive_type "void") (function_declarator "FUN_000a9d02(void)" (identifier "FUN_000a9d02") (parameter_list "(void)" (( "(") (parameter_declaration "void" (primitive_type "void")) () ")"))) (compound_statement "{\n  uint uVar1;\n  int iVar2;\n  int iVar3;\n  int iVar4;\n  int iVar5;\n  undefined1 *puVar6;\n  int unaff_EDI;\n  undefined1 *puVar7;\n  byte bVar8;\n  undefined8 uVar9;\n  \n  bVar8 = 0;\n  uVar9 = FUN_00026ff3();\n  iVar2 = (int)uVar9;\n  FUN_000a968a();\n  if (*(int *)(iVar2 + 0x40) == unaff_EDI + -0x617) {\n    iVar3 = 0x14;\n    iVar4 = 5;\n  }\n  else {\n    iVar3 = 0x20;\n    iVar4 = 8;\n  }\n  iVar5 = iVar2;\n  do {\n    uVar1 = *(uint *)(iVar5 + 0x4c);\n    *(uint *)(iVar5 + 0x4c) =\n         uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8 | (uVar1 & 0xff00) << 8 | uVar1 << 0x18;\n    iVar5 = iVar5 + 4;\n  } while (iVar5 != iVar2 + iVar4 * 4);\n  puVar6 = (undefined1 *)(iVar2 + 0x4c);\n  puVar7 = (undefined1 *)((ulonglong)uVar9 >> 0x20);\n  for (; iVar3 != 0; iVar3 = iVar3 + -1) {\n    *puVar7 = *puVar6;\n    puVar6 = puVar6 + (uint)bVar8 * -2 + 1;\n    puVar7 = puVar7 + (uint)bVar8 * -2 + 1;\n  }\n  return;\n}" ({ "{") (declaration "uint uVar1;" (type_identifier "uint") (identifier "uVar1") (; ";")) (declaration "int iVar2;" (primitive_type "int") (identifier "iVar2") (; ";")) (declaration "int iVar3;" (primitive_type "int") (identifier "iVar3") (; ";")) (declaration "int iVar4;" (primitive_type "int") (identifier "iVar4") (; ";")) (declaration "int iVar5;" (primitive_type "int") (identifier "iVar5") (; ";")) (declaration "undefined1 *puVar6;" (type_identifier "undefined1") (pointer_declarator "*puVar6" (* "*") (identifier "puVar6")) (; ";")) (declaration "int unaff_EDI;" (primitive_type "int") (identifier "unaff_EDI") (; ";")) (declaration "undefined1 *puVar7;" (type_identifier "undefined1") (pointer_declarator "*puVar7" (* "*") (identifier "puVar7")) (; ";")) (declaration "byte bVar8;" (type_identifier "byte") (identifier "bVar8") (; ";")) (declaration "undefined8 uVar9;" (type_identifier "undefined8") (identifier "uVar9") (; ";")) (expression_statement "bVar8 = 0;" (assignment_expression "bVar8 = 0" (identifier "bVar8") (= "=") (number_literal "0")) (; ";")) (expression_statement "uVar9 = FUN_00026ff3();" (assignment_expression "uVar9 = FUN_00026ff3()" (identifier "uVar9") (= "=") (call_expression "FUN_00026ff3()" (identifier "FUN_00026ff3") (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "iVar2 = (int)uVar9;" (assignment_expression "iVar2 = (int)uVar9" (identifier "iVar2") (= "=") (cast_expression "(int)uVar9" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar9"))) (; ";")) (expression_statement "FUN_000a968a();" (call_expression "FUN_000a968a()" (identifier "FUN_000a968a") (argument_list "()" (( "(") () ")"))) (; ";")) (if_statement "if (*(int *)(iVar2 + 0x40) == unaff_EDI + -0x617) {\n    iVar3 = 0x14;\n    iVar4 = 5;\n  }\n  else {\n    iVar3 = 0x20;\n    iVar4 = 8;\n  }" (if "if") (parenthesized_expression "(*(int *)(iVar2 + 0x40) == unaff_EDI + -0x617)" (( "(") (binary_expression "*(int *)(iVar2 + 0x40) == unaff_EDI + -0x617" (pointer_expression "*(int *)(iVar2 + 0x40)" (* "*") (cast_expression "(int *)(iVar2 + 0x40)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar2 + 0x40)" (( "(") (binary_expression "iVar2 + 0x40" (identifier "iVar2") (+ "+") (number_literal "0x40")) () ")")))) (== "==") (binary_expression "unaff_EDI + -0x617" (identifier "unaff_EDI") (+ "+") (number_literal "-0x617"))) () ")")) (compound_statement "{\n    iVar3 = 0x14;\n    iVar4 = 5;\n  }" ({ "{") (expression_statement "iVar3 = 0x14;" (assignment_expression "iVar3 = 0x14" (identifier "iVar3") (= "=") (number_literal "0x14")) (; ";")) (expression_statement "iVar4 = 5;" (assignment_expression "iVar4 = 5" (identifier "iVar4") (= "=") (number_literal "5")) (; ";")) (} "}")) (else_clause "else {\n    iVar3 = 0x20;\n    iVar4 = 8;\n  }" (else "else") (compound_statement "{\n    iVar3 = 0x20;\n    iVar4 = 8;\n  }" ({ "{") (expression_statement "iVar3 = 0x20;" (assignment_expression "iVar3 = 0x20" (identifier "iVar3") (= "=") (number_literal "0x20")) (; ";")) (expression_statement "iVar4 = 8;" (assignment_expression "iVar4 = 8" (identifier "iVar4") (= "=") (number_literal "8")) (; ";")) (} "}")))) (expression_statement "iVar5 = iVar2;" (assignment_expression "iVar5 = iVar2" (identifier "iVar5") (= "=") (identifier "iVar2")) (; ";")) (do_statement "do {\n    uVar1 = *(uint *)(iVar5 + 0x4c);\n    *(uint *)(iVar5 + 0x4c) =\n         uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8 | (uVar1 & 0xff00) << 8 | uVar1 << 0x18;\n    iVar5 = iVar5 + 4;\n  } while (iVar5 != iVar2 + iVar4 * 4);" (do "do") (compound_statement "{\n    uVar1 = *(uint *)(iVar5 + 0x4c);\n    *(uint *)(iVar5 + 0x4c) =\n         uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8 | (uVar1 & 0xff00) << 8 | uVar1 << 0x18;\n    iVar5 = iVar5 + 4;\n  }" ({ "{") (expression_statement "uVar1 = *(uint *)(iVar5 + 0x4c);" (assignment_expression "uVar1 = *(uint *)(iVar5 + 0x4c)" (identifier "uVar1") (= "=") (pointer_expression "*(uint *)(iVar5 + 0x4c)" (* "*") (cast_expression "(uint *)(iVar5 + 0x4c)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar5 + 0x4c)" (( "(") (binary_expression "iVar5 + 0x4c" (identifier "iVar5") (+ "+") (number_literal "0x4c")) () ")"))))) (; ";")) (expression_statement "*(uint *)(iVar5 + 0x4c) =\n         uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8 | (uVar1 & 0xff00) << 8 | uVar1 << 0x18;" (assignment_expression "*(uint *)(iVar5 + 0x4c) =\n         uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8 | (uVar1 & 0xff00) << 8 | uVar1 << 0x18" (pointer_expression "*(uint *)(iVar5 + 0x4c)" (* "*") (cast_expression "(uint *)(iVar5 + 0x4c)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar5 + 0x4c)" (( "(") (binary_expression "iVar5 + 0x4c" (identifier "iVar5") (+ "+") (number_literal "0x4c")) () ")")))) (= "=") (binary_expression "uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8 | (uVar1 & 0xff00) << 8 | uVar1 << 0x18" (binary_expression "uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8 | (uVar1 & 0xff00) << 8" (binary_expression "uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8" (binary_expression "uVar1 >> 0x18" (identifier "uVar1") (>> ">>") (number_literal "0x18")) (| "|") (binary_expression "(uVar1 & 0xff0000) >> 8" (parenthesized_expression "(uVar1 & 0xff0000)" (( "(") (binary_expression "uVar1 & 0xff0000" (identifier "uVar1") (& "&") (number_literal "0xff0000")) () ")")) (>> ">>") (number_literal "8"))) (| "|") (binary_expression "(uVar1 & 0xff00) << 8" (parenthesized_expression "(uVar1 & 0xff00)" (( "(") (binary_expression "uVar1 & 0xff00" (identifier "uVar1") (& "&") (number_literal "0xff00")) () ")")) (<< "<<") (number_literal "8"))) (| "|") (binary_expression "uVar1 << 0x18" (identifier "uVar1") (<< "<<") (number_literal "0x18")))) (; ";")) (expression_statement "iVar5 = iVar5 + 4;" (assignment_expression "iVar5 = iVar5 + 4" (identifier "iVar5") (= "=") (binary_expression "iVar5 + 4" (identifier "iVar5") (+ "+") (number_literal "4"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(iVar5 != iVar2 + iVar4 * 4)" (( "(") (binary_expression "iVar5 != iVar2 + iVar4 * 4" (identifier "iVar5") (!= "!=") (binary_expression "iVar2 + iVar4 * 4" (identifier "iVar2") (+ "+") (binary_expression "iVar4 * 4" (identifier "iVar4") (* "*") (number_literal "4")))) () ")")) (; ";")) (expression_statement "puVar6 = (undefined1 *)(iVar2 + 0x4c);" (assignment_expression "puVar6 = (undefined1 *)(iVar2 + 0x4c)" (identifier "puVar6") (= "=") (cast_expression "(undefined1 *)(iVar2 + 0x4c)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar2 + 0x4c)" (( "(") (binary_expression "iVar2 + 0x4c" (identifier "iVar2") (+ "+") (number_literal "0x4c")) () ")")))) (; ";")) (expression_statement "puVar7 = (undefined1 *)((ulonglong)uVar9 >> 0x20);" (assignment_expression "puVar7 = (undefined1 *)((ulonglong)uVar9 >> 0x20)" (identifier "puVar7") (= "=") (cast_expression "(undefined1 *)((ulonglong)uVar9 >> 0x20)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((ulonglong)uVar9 >> 0x20)" (( "(") (binary_expression "(ulonglong)uVar9 >> 0x20" (cast_expression "(ulonglong)uVar9" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (identifier "uVar9")) (>> ">>") (number_literal "0x20")) () ")")))) (; ";")) (for_statement "for (; iVar3 != 0; iVar3 = iVar3 + -1) {\n    *puVar7 = *puVar6;\n    puVar6 = puVar6 + (uint)bVar8 * -2 + 1;\n    puVar7 = puVar7 + (uint)bVar8 * -2 + 1;\n  }" (for "for") (( "(") (; ";") (binary_expression "iVar3 != 0" (identifier "iVar3") (!= "!=") (number_literal "0")) (; ";") (assignment_expression "iVar3 = iVar3 + -1" (identifier "iVar3") (= "=") (binary_expression "iVar3 + -1" (identifier "iVar3") (+ "+") (number_literal "-1"))) () ")") (compound_statement "{\n    *puVar7 = *puVar6;\n    puVar6 = puVar6 + (uint)bVar8 * -2 + 1;\n    puVar7 = puVar7 + (uint)bVar8 * -2 + 1;\n  }" ({ "{") (expression_statement "*puVar7 = *puVar6;" (assignment_expression "*puVar7 = *puVar6" (pointer_expression "*puVar7" (* "*") (identifier "puVar7")) (= "=") (pointer_expression "*puVar6" (* "*") (identifier "puVar6"))) (; ";")) (expression_statement "puVar6 = puVar6 + (uint)bVar8 * -2 + 1;" (assignment_expression "puVar6 = puVar6 + (uint)bVar8 * -2 + 1" (identifier "puVar6") (= "=") (binary_expression "puVar6 + (uint)bVar8 * -2 + 1" (binary_expression "puVar6 + (uint)bVar8 * -2" (identifier "puVar6") (+ "+") (binary_expression "(uint)bVar8 * -2" (cast_expression "(uint)bVar8" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar8")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "puVar7 = puVar7 + (uint)bVar8 * -2 + 1;" (assignment_expression "puVar7 = puVar7 + (uint)bVar8 * -2 + 1" (identifier "puVar7") (= "=") (binary_expression "puVar7 + (uint)bVar8 * -2 + 1" (binary_expression "puVar7 + (uint)bVar8 * -2" (identifier "puVar7") (+ "+") (binary_expression "(uint)bVar8 * -2" (cast_expression "(uint)bVar8" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar8")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (} "}"))) (return_statement "return;" (return "return") (; ";")) (} "}")))

type_1 function_1(type_2 *ctx,void *resbuf)

{
  type_3 *ctx_00;
  type_1 uVar1;
  int var_6;
  type_1 var_4;
  type_3 *var_5;
  uint32_t *puVar5;
  int var_3;
  type_4 *var_7;
  type_5 bVar7;
  type_6 uVar8;
  
  bVar7 = 0;
  uVar8 = var_1();
  ctx_00 = (type_3 *)uVar8;
  var_2(ctx_00,1);
  if (ctx_00->process_block == (type_7 *)(var_3 + -0x617)) {
    uVar1 = 0x14;
    var_6 = 5;
  }
  else {
    uVar1 = 0x20;
    var_6 = 8;
  }
  var_5 = ctx_00;
  do {
    var_4 = var_5->hash[0];
    var_5->hash[0] =
         var_4 >> 0x18 | (var_4 & 0xff0000) >> 8 | (var_4 & 0xff00) << 8 | var_4 << 0x18;
    var_5 = (type_3 *)(var_5->wbuffer + 4);
  } while (var_5 != (type_3 *)(ctx_00->wbuffer + var_6 * 4));
  puVar5 = ctx_00->hash;
  var_7 = (type_4 *)((type_8)uVar8 >> 0x20);
  for (var_4 = uVar1; var_4 != 0; var_4 = var_4 - 1) {
    *var_7 = (char)*puVar5;
    puVar5 = (uint32_t *)((int)puVar5 + (type_1)bVar7 * -2 + 1);
    var_7 = var_7 + (type_1)bVar7 * -2 + 1;
  }
  return uVar1;
}


(translation_unit (function_definition type: (primitive_type) declarator: (function_declarator declarator: (identifier) parameters: (parameter_list (parameter_declaration type: (primitive_type)))) body: (compound_statement (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) 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: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (binary_expression left: (identifier) right: (number_literal)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (number_literal)))) alternative: (else_clause (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: (identifier))) (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (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: (binary_expression left: (binary_expression left: (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal))) right: (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) 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))))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (binary_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (number_literal)))))) (for_statement condition: (binary_expression left: (identifier) right: (number_literal)) update: (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))) body: (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (identifier) right: (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (number_literal))) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (identifier) right: (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (number_literal))) right: (number_literal)))))) (return_statement))))

void MASKED(void)

{
  uint uVar1;
  int iVar2;
  int iVar3;
  int iVar4;
  int iVar5;
  undefined1 *puVar6;
  int unaff_EDI;
  undefined1 *puVar7;
  byte bVar8;
  undefined8 uVar9;
  
  bVar8 = 0;
  uVar9 = FUN_00026ff3();
  iVar2 = (int)uVar9;
  FUN_000a968a();
  if (*(int *)(iVar2 + 0x40) == unaff_EDI + -0x617) {
    iVar3 = 0x14;
    iVar4 = 5;
  }
  else {
    iVar3 = 0x20;
    iVar4 = 8;
  }
  iVar5 = iVar2;
  do {
    uVar1 = *(uint *)(iVar5 + 0x4c);
    *(uint *)(iVar5 + 0x4c) =
         uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8 | (uVar1 & 0xff00) << 8 | uVar1 << 0x18;
    iVar5 = iVar5 + 4;
  } while (iVar5 != iVar2 + iVar4 * 4);
  puVar6 = (undefined1 *)(iVar2 + 0x4c);
  puVar7 = (undefined1 *)((ulonglong)uVar9 >> 0x20);
  for (; iVar3 != 0; iVar3 = iVar3 + -1) {
    *puVar7 = *puVar6;
    puVar6 = puVar6 + (uint)bVar8 * -2 + 1;
    puVar7 = puVar7 + (uint)bVar8 * -2 + 1;
  }
  return;
}

